From bef91b170006e3553c53d48aec4fd3c535b3d61a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 23 Oct 2013 20:58:39 -0700 Subject: [PATCH 001/402] Added tag release-2.0.1 for changeset b9663c77f5c9 --- .hgtags | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.hgtags b/.hgtags index c7410efd7f..28d0efdfdd 100644 --- a/.hgtags +++ b/.hgtags @@ -22,3 +22,5 @@ a8bd63b33636715f2cf6e7d36ab7201acbd478fe release-2.0.1 9ec71e56071cc80eda6691a3f8719ed5395dfcfb release-2.0.1 9ec71e56071cc80eda6691a3f8719ed5395dfcfb release-2.0.1 0000000000000000000000000000000000000000 release-2.0.1 +0000000000000000000000000000000000000000 release-2.0.1 +b9663c77f5c95ebf05f3c18e80619caae8ae1460 release-2.0.1 From 1fbbc11cb9994c11dacb70bb95003edc7f2a0048 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 28 Oct 2013 22:43:39 -0400 Subject: [PATCH 002/402] Updated GL version tests for Mac OS X 10.9 ("Mavericks"). They changed the name of their GL 3.2 enum, added the GL 4.1 core profile. --- src/video/cocoa/SDL_cocoaopengl.m | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 13c7777b12..497084f048 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -54,8 +54,11 @@ - (NSRect)convertRectFromBacking:(NSRect)aRect; #ifndef kCGLOGLPVersion_Legacy #define kCGLOGLPVersion_Legacy 0x1000 #endif -#ifndef kCGLOGLPVersion_3_2_Core -#define kCGLOGLPVersion_3_2_Core 0x3200 +#ifndef kCGLOGLPVersion_GL3_Core +#define kCGLOGLPVersion_GL3_Core 0x3200 +#endif +#ifndef kCGLOGLPVersion_GL4_Core +#define kCGLOGLPVersion_GL4_Core 0x4100 #endif @implementation SDLOpenGLContext : NSOpenGLContext @@ -179,14 +182,14 @@ - (void)setWindow:(SDL_Window *)newWindow int i = 0; if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) { - SDL_SetError ("OpenGL ES not supported on this platform"); + SDL_SetError ("OpenGL ES is not supported on this platform"); return NULL; } /* Sadly, we'll have to update this as life progresses, since we need to set an enum for context profiles, not a context version number */ - if (wantver > 0x0302) { - SDL_SetError ("OpenGL > 3.2 is not supported on this platform"); + if (wantver > 0x0401) { + SDL_SetError ("OpenGL > 4.1 is not supported on this platform"); return NULL; } @@ -197,7 +200,13 @@ - (void)setWindow:(SDL_Window *)newWindow NSOpenGLPixelFormatAttribute profile = kCGLOGLPVersion_Legacy; if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_CORE) { if (wantver == 0x0302) { - profile = kCGLOGLPVersion_3_2_Core; + profile = kCGLOGLPVersion_GL3_Core; + } else if ((wantver == 0x0401) && (data->osversion >= 0x1090)) { + profile = kCGLOGLPVersion_GL4_Core; + } else { + SDL_SetError("Requested GL version is not supported on this platform"); + [pool release]; + return NULL; } } attr[i++] = kCGLPFAOpenGLProfile; From 3fdd8fb0db208530d9873bfd6014a38493c50cf3 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 30 Oct 2013 16:39:35 -0400 Subject: [PATCH 003/402] Fixed common test usage string (was "hidpi", should be "highdpi"). --- src/test/SDL_test_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index c117a93a91..c4d72db32f 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -27,7 +27,7 @@ #include #define VIDEO_USAGE \ -"[--video driver] [--renderer driver] [--gldebug] [--info all|video|modes|render|event] [--log all|error|system|audio|video|render|input] [--display N] [--fullscreen | --fullscreen-desktop | --windows N] [--title title] [--icon icon.bmp] [--center | --position X,Y] [--geometry WxH] [--min-geometry WxH] [--max-geometry WxH] [--logical WxH] [--scale N] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab] [--allow-hidpi]" +"[--video driver] [--renderer driver] [--gldebug] [--info all|video|modes|render|event] [--log all|error|system|audio|video|render|input] [--display N] [--fullscreen | --fullscreen-desktop | --windows N] [--title title] [--icon icon.bmp] [--center | --position X,Y] [--geometry WxH] [--min-geometry WxH] [--max-geometry WxH] [--logical WxH] [--scale N] [--depth N] [--refresh R] [--vsync] [--noframe] [--resize] [--minimize] [--maximize] [--grab] [--allow-highdpi]" #define AUDIO_USAGE \ "[--rate N] [--format U8|S8|U16|U16LE|U16BE|S16|S16LE|S16BE] [--channels N] [--samples N]" From 39e2e73b06f3864fc61c89640016d7e3e1e272f7 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 31 Oct 2013 10:02:21 -0300 Subject: [PATCH 004/402] Fixes Bug #2191,incorrect test for egl_context validity Thanks David Binderman! --- src/video/SDL_egl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index ccfb92e180..70a1cee50b 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -394,7 +394,7 @@ SDL_EGL_DeleteContext(_THIS, SDL_GLContext context) return; } - if (!egl_context && egl_context != EGL_NO_CONTEXT) { + if (egl_context != NULL && egl_context != EGL_NO_CONTEXT) { SDL_EGL_MakeCurrent(_this, NULL, NULL); _this->egl_data->eglDestroyContext(_this->egl_data->egl_display, egl_context); } From c97f68fb95c0de7132d4bf6382e8ff2f3b702081 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 2 Nov 2013 11:42:00 +0100 Subject: [PATCH 005/402] Corrected typo in source comment. --- src/video/cocoa/SDL_cocoaopengl.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 497084f048..803b92f538 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -37,7 +37,7 @@ #if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 /* New methods for converting to and from backing store pixels, taken from - * AppKite/NSView.h in 10.8 SDK. */ + * AppKit/NSView.h in 10.8 SDK. */ @interface NSView (Backing) - (NSPoint)convertPointToBacking:(NSPoint)aPoint; - (NSPoint)convertPointFromBacking:(NSPoint)aPoint; From 526f65e223cb0c026d6bcb3bd997c91ea740a300 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 2 Nov 2013 11:46:43 +0100 Subject: [PATCH 006/402] Changed function to return -1 through SDL_Error() instead of plain -1. --- src/render/SDL_render.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 5546d4a61c..5bf4775b52 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -348,8 +348,7 @@ SDL_GetRendererOutputSize(SDL_Renderer * renderer, int *w, int *h) return 0; } else { /* This should never happen */ - SDL_SetError("Renderer doesn't support querying output size"); - return -1; + return SDL_SetError("Renderer doesn't support querying output size"); } } From 9962baad769cb3c7d0a850e16b52f069f3da4840 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 2 Nov 2013 11:51:23 +0100 Subject: [PATCH 007/402] Removed unreachable return statement in gesture source. --- src/events/SDL_gesture.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/events/SDL_gesture.c b/src/events/SDL_gesture.c index 20ce57b573..d59fde2756 100644 --- a/src/events/SDL_gesture.c +++ b/src/events/SDL_gesture.c @@ -198,10 +198,8 @@ static int SDL_AddDollarGesture(SDL_GestureTouch* inTouch, SDL_FloatPoint* path) } /* Use the index of the last one added. */ return index; - } else { - return SDL_AddDollarGesture_one(inTouch, path); } - return -1; + return SDL_AddDollarGesture_one(inTouch, path); } int SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src) From 0df3bcf21fc32fbdf631409504491fdfeb0faa98 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 2 Nov 2013 12:07:21 +0100 Subject: [PATCH 008/402] Changed parameter name for gesture template save functions from "src" to "dst". --- README-gesture.txt | 4 ++-- include/SDL_gesture.h | 4 ++-- src/events/SDL_gesture.c | 17 ++++++++--------- test/testgesture.c | 14 +++++++------- 4 files changed, 19 insertions(+), 20 deletions(-) diff --git a/README-gesture.txt b/README-gesture.txt index 4d0a8d681b..c2cad7be5b 100644 --- a/README-gesture.txt +++ b/README-gesture.txt @@ -34,9 +34,9 @@ Most programs will want to define an appropriate error threshold and check to be Saving: ------- -To save a template, call SDL_SaveDollarTemplate(gestureId, src) where gestureId is the id of the gesture you want to save, and src is an SDL_RWops pointer to the file where the gesture will be stored. +To save a template, call SDL_SaveDollarTemplate(gestureId, dst) where gestureId is the id of the gesture you want to save, and dst is an SDL_RWops pointer to the file where the gesture will be stored. -To save all currently loaded templates, call SDL_SaveAllDollarTemplates(src) where source is an SDL_RWops pointer to the file where the gesture will be stored. +To save all currently loaded templates, call SDL_SaveAllDollarTemplates(dst) where dst is an SDL_RWops pointer to the file where the gesture will be stored. Both functions return the number of gestures successfully saved. diff --git a/include/SDL_gesture.h b/include/SDL_gesture.h index 21f10ead73..015fe02090 100644 --- a/include/SDL_gesture.h +++ b/include/SDL_gesture.h @@ -58,14 +58,14 @@ extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); * * */ -extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *src); +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); /** * \brief Save a currently loaded Dollar Gesture template * * */ -extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *src); +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); /** diff --git a/src/events/SDL_gesture.c b/src/events/SDL_gesture.c index d59fde2756..c50092c744 100644 --- a/src/events/SDL_gesture.c +++ b/src/events/SDL_gesture.c @@ -116,15 +116,14 @@ static unsigned long SDL_HashDollar(SDL_FloatPoint* points) } -static int SaveTemplate(SDL_DollarTemplate *templ, SDL_RWops * src) +static int SaveTemplate(SDL_DollarTemplate *templ, SDL_RWops *dst) { - if (src == NULL) return 0; - + if (dst == NULL) return 0; /* No Longer storing the Hash, rehash on load */ - /* if(SDL_RWops.write(src,&(templ->hash),sizeof(templ->hash),1) != 1) return 0; */ + /* if (SDL_RWops.write(dst, &(templ->hash), sizeof(templ->hash), 1) != 1) return 0; */ - if (SDL_RWwrite(src,templ->path, + if (SDL_RWwrite(dst, templ->path, sizeof(templ->path[0]),DOLLARNPOINTS) != DOLLARNPOINTS) return 0; @@ -132,26 +131,26 @@ static int SaveTemplate(SDL_DollarTemplate *templ, SDL_RWops * src) } -int SDL_SaveAllDollarTemplates(SDL_RWops *src) +int SDL_SaveAllDollarTemplates(SDL_RWops *dst) { int i,j,rtrn = 0; for (i = 0; i < SDL_numGestureTouches; i++) { SDL_GestureTouch* touch = &SDL_gestureTouch[i]; for (j = 0; j < touch->numDollarTemplates; j++) { - rtrn += SaveTemplate(&touch->dollarTemplate[i],src); + rtrn += SaveTemplate(&touch->dollarTemplate[i], dst); } } return rtrn; } -int SDL_SaveDollarTemplate(SDL_GestureID gestureId, SDL_RWops *src) +int SDL_SaveDollarTemplate(SDL_GestureID gestureId, SDL_RWops *dst) { int i,j; for (i = 0; i < SDL_numGestureTouches; i++) { SDL_GestureTouch* touch = &SDL_gestureTouch[i]; for (j = 0; j < touch->numDollarTemplates; j++) { if (touch->dollarTemplate[i].hash == gestureId) { - return SaveTemplate(&touch->dollarTemplate[i],src); + return SaveTemplate(&touch->dollarTemplate[i], dst); } } } diff --git a/test/testgesture.c b/test/testgesture.c index 016506e11e..89008fb3c9 100644 --- a/test/testgesture.c +++ b/test/testgesture.c @@ -205,7 +205,7 @@ int main(int argc, char* argv[]) SDL_Surface *screen; SDL_Event event; SDL_bool quitting = SDL_FALSE; - SDL_RWops *src; + SDL_RWops *stream; /* Enable standard application logging */ SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); @@ -241,14 +241,14 @@ int main(int argc, char* argv[]) SDL_RecordGesture(-1); break; case SDLK_s: - src = SDL_RWFromFile("gestureSave","w"); - SDL_Log("Wrote %i templates",SDL_SaveAllDollarTemplates(src)); - SDL_RWclose(src); + stream = SDL_RWFromFile("gestureSave", "w"); + SDL_Log("Wrote %i templates", SDL_SaveAllDollarTemplates(stream)); + SDL_RWclose(stream); break; case SDLK_l: - src = SDL_RWFromFile("gestureSave","r"); - SDL_Log("Loaded: %i",SDL_LoadDollarTemplates(-1,src)); - SDL_RWclose(src); + stream = SDL_RWFromFile("gestureSave", "r"); + SDL_Log("Loaded: %i", SDL_LoadDollarTemplates(-1, stream)); + SDL_RWclose(stream); break; case SDLK_ESCAPE: quitting = SDL_TRUE; From 680f6a58d6f37dc9b193cfd4cbe65cb009ee7e23 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 3 Nov 2013 09:42:23 -0800 Subject: [PATCH 009/402] Clarified that SDL_memset4 is a 32-bit assignment and fixed a compiler warning --- include/SDL_stdinc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index 8f17d5519a..f0780a2179 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -255,7 +255,7 @@ extern DECLSPEC void *SDLCALL SDL_memset(void *dst, int c, size_t len); #define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) /* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ -SDL_FORCE_INLINE void SDL_memset4(void *dst, int val, size_t dwords) +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) { #if defined(__GNUC__) && defined(i386) int u0, u1, u2; From b846f6397f8dbd26ce337998bb751455db450385 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 3 Nov 2013 09:55:27 -0800 Subject: [PATCH 010/402] Fixed bug 1990 - focus/keyboard events not generated correctly for multiple windows Mai Lavelle I've recently tried to create multiple windows and process key events for them, and found that key events weren't being generated for most of the windows. After some investigating I've observed the following effects. All but the most recently created window experience these effects... - a focus lost event is generated immediately after the focus gained event, even tho window still has focus - key events report window id 0 rather than the id of the window which has focus, SDL thinks no window has focus? - giving focus to a non SDL window and then selecting an SDL window causes events to be generated as expected, but only until focus changes again Focus change events are queued and delayed (200 ticks) before they are dispatched. The problem occurs when a focus out and focus in event are received on the same tick. When these delayed events are dispatched they will be sent in the order determined by the window list rather than the order in which they are received. The focus out dispatch is implemented by calling SDL_SetKeyboardFocus(NULL). This will remove focus from any window, regardless of whether it is the one originally targeted by the X11 event. Since SDL_SetKeyboardFocus() will always dispatch a focus lost event as needed, the easiest solution is simply to only call SDL_SetKeyboardFocus(NULL) when SDL_GetKeyboardFocus() matches the target window. --- src/video/x11/SDL_x11events.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index d9dcc2dd9b..afee2345fc 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -245,7 +245,13 @@ X11_DispatchFocusOut(SDL_WindowData *data) #ifdef DEBUG_XEVENTS printf("window %p: Dispatching FocusOut\n", data); #endif - SDL_SetKeyboardFocus(NULL); + /* If another window has already processed a focus in, then don't try to + * remove focus here. Doing so will incorrectly remove focus from that + * window, and the focus lost event for this window will have already + * been dispatched anyway. */ + if (data->window == SDL_GetKeyboardFocus()) { + SDL_SetKeyboardFocus(NULL); + } #ifdef X_HAVE_UTF8_STRING if (data->ic) { X11_XUnsetICFocus(data->ic); From d797f7b2a00d2f6c0579128564bea415c7bf032a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 3 Nov 2013 11:00:28 -0800 Subject: [PATCH 011/402] Fixed bug 2187 - CMake is not adding src/core/linux/*.c to the build, linking to SDL results in errors. Daniel Ribeiro Maciel CMake is not adding src/core/linux/*.c to the build, linking to SDL results in errors: (...)/libSDL2-2.0.so.1.0.1: undefined reference to `SDL_UDEV_AddCallback' (...)/libSDL2-2.0.so.1.0.1: undefined reference to `SDL_UDEV_Poll' (...)/libSDL2-2.0.so.1.0.1: undefined reference to `SDL_UDEV_Init' (...)/libSDL2-2.0.so.1.0.1: undefined reference to `SDL_UDEV_Quit' (...)/libSDL2-2.0.so.1.0.1: undefined reference to `SDL_UDEV_DelCallback' (...)/libSDL2-2.0.so.1.0.1: undefined reference to `SDL_UDEV_Scan' collect2: error: ld returned 1 exit status --- CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1a1607fac3..489421f273 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -648,6 +648,10 @@ if(UNIX AND NOT APPLE) #error EVIOCGNAME() ioctl not available #endif int main(int argc, char** argv) {}" HAVE_INPUT_EVENTS) + + file(GLOB CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/linux/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) + if(HAVE_INPUT_EVENTS) set(SDL_INPUT_LINUXEV 1) endif(HAVE_INPUT_EVENTS) @@ -746,8 +750,8 @@ elseif(WINDOWS) #include int main(int argc, char **argv) { }" HAVE_WIN32_CC) - file(GLOB WIN_SOURCES ${SDL2_SOURCE_DIR}/src/core/windows/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${WIN_SOURCES}) + file(GLOB CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/windows/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) # Check for DirectX if(DIRECTX) From cd6a3a740053b2f387a671dd7c52dfcfd90b406d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 3 Nov 2013 11:13:06 -0800 Subject: [PATCH 012/402] Fixed bug 2205 - SDL_GetAudioDeviceName returns default-device name on invalid index for default-device only drivers norfanin The audio_enumerateAndNameAudioDevicesNegativeTests test in testautomation_audio.c reports a failure for SDL_GetAudioDeviceName when called on a driver that has only the default device. SDL_GetNumAudioDevices reports 1, but SDL_GetAudioDeviceName does not check if the index passed by the caller is in that range in this case. For positive numbers anyway. This can be reproduced with the dummy driver on Windows and Linux. --- src/audio/SDL_audio.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 5631bb2fdb..d6d8353514 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -722,10 +722,16 @@ SDL_GetAudioDeviceName(int index, int iscapture) } if ((iscapture) && (current_audio.impl.OnlyHasDefaultInputDevice)) { + if (index > 0) { + goto no_such_device; + } return DEFAULT_INPUT_DEVNAME; } if ((!iscapture) && (current_audio.impl.OnlyHasDefaultOutputDevice)) { + if (index > 0) { + goto no_such_device; + } return DEFAULT_OUTPUT_DEVNAME; } From 50e60cfde73500ed04307f62431417fef433132c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 3 Nov 2013 11:27:06 -0800 Subject: [PATCH 013/402] Fixed bug 2190 - test/testdrawchessboard.c line endings Joseph Carter test/testdrawchessboard.c checks out of hg with DOS line endings on non-dos systems. Fixed via: perl -pi -e 's/\r//g' test/testdrawchessboard.c --- test/testdrawchessboard.c | 218 +++++++++++++++++++------------------- 1 file changed, 109 insertions(+), 109 deletions(-) diff --git a/test/testdrawchessboard.c b/test/testdrawchessboard.c index 567d3fb85d..f203f581ee 100644 --- a/test/testdrawchessboard.c +++ b/test/testdrawchessboard.c @@ -1,110 +1,110 @@ -/* - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely. - - This file is created by : Nitin Jain (nitin.j4@samsung.com) -*/ - -/* Sample program: Draw a Chess Board by using SDL_CreateSoftwareRenderer API */ - -#include -#include - -#include "SDL.h" - -void -DrawChessBoard(SDL_Renderer * renderer) -{ - int row = 0,coloum = 0,x = 0; - SDL_Rect rect, darea; - - /* Get the Size of drawing surface */ - SDL_RenderGetViewport(renderer, &darea); - - for(row; row < 8; row++) - { - coloum = row%2; - x = x + coloum; - for(coloum; coloum < 4+(row%2); coloum++) - { - SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); - - rect.w = darea.w/8; - rect.h = darea.h/8; - rect.x = x * rect.w; - rect.y = row * rect.h; - x = x + 2; - SDL_RenderFillRect(renderer, &rect); - } - x=0; - } -} - -int -main(int argc, char *argv[]) -{ - SDL_Window *window; - SDL_Surface *surface; - SDL_Renderer *renderer; - +/* + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. + + This file is created by : Nitin Jain (nitin.j4@samsung.com) +*/ + +/* Sample program: Draw a Chess Board by using SDL_CreateSoftwareRenderer API */ + +#include +#include + +#include "SDL.h" + +void +DrawChessBoard(SDL_Renderer * renderer) +{ + int row = 0,coloum = 0,x = 0; + SDL_Rect rect, darea; + + /* Get the Size of drawing surface */ + SDL_RenderGetViewport(renderer, &darea); + + for(row; row < 8; row++) + { + coloum = row%2; + x = x + coloum; + for(coloum; coloum < 4+(row%2); coloum++) + { + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); + + rect.w = darea.w/8; + rect.h = darea.h/8; + rect.x = x * rect.w; + rect.y = row * rect.h; + x = x + 2; + SDL_RenderFillRect(renderer, &rect); + } + x=0; + } +} + +int +main(int argc, char *argv[]) +{ + SDL_Window *window; + SDL_Surface *surface; + SDL_Renderer *renderer; + /* Enable standard application logging */ - SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); - - /* Initialize SDL */ - if(SDL_Init(SDL_INIT_VIDEO) != 0) - { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_Init fail : %s\n", SDL_GetError()); - return 1; - } - - - /* Create window and renderer for given surface */ - window = SDL_CreateWindow("Chess Board", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); - if(!window) - { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window creation fail : %s\n",SDL_GetError()); - return 1; - } - surface = SDL_GetWindowSurface(window); - renderer = SDL_CreateSoftwareRenderer(surface); - if(!renderer) - { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Render creation for surface fail : %s\n",SDL_GetError()); - return 1; - } - - /* Clear the rendering surface with the specified color */ - SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0); - SDL_RenderClear(renderer); - - - /* Draw the Image on rendering surface */ - while(1) - { - SDL_Event e; - if (SDL_PollEvent(&e)) { - if (e.type == SDL_QUIT) - break; - - if(e.key.keysym.sym == SDLK_ESCAPE) - break; - } - - DrawChessBoard(renderer); - - /* Got everything on rendering surface, - now Update the drawing image on window screen */ - SDL_UpdateWindowSurface(window); - - } - - return 0; -} - + SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); + + /* Initialize SDL */ + if(SDL_Init(SDL_INIT_VIDEO) != 0) + { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_Init fail : %s\n", SDL_GetError()); + return 1; + } + + + /* Create window and renderer for given surface */ + window = SDL_CreateWindow("Chess Board", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN); + if(!window) + { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window creation fail : %s\n",SDL_GetError()); + return 1; + } + surface = SDL_GetWindowSurface(window); + renderer = SDL_CreateSoftwareRenderer(surface); + if(!renderer) + { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Render creation for surface fail : %s\n",SDL_GetError()); + return 1; + } + + /* Clear the rendering surface with the specified color */ + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0); + SDL_RenderClear(renderer); + + + /* Draw the Image on rendering surface */ + while(1) + { + SDL_Event e; + if (SDL_PollEvent(&e)) { + if (e.type == SDL_QUIT) + break; + + if(e.key.keysym.sym == SDLK_ESCAPE) + break; + } + + DrawChessBoard(renderer); + + /* Got everything on rendering surface, + now Update the drawing image on window screen */ + SDL_UpdateWindowSurface(window); + + } + + return 0; +} + From 55a3ba2038277ea9d98e93b3c0340f086d2cbc86 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 3 Nov 2013 11:34:03 -0800 Subject: [PATCH 014/402] Fixed bug 2180 - debian/rules: Makefiles should use tabs Joseph Carter Whitespace in a makefile is consequential. In fact, it's part of the syntax. And at least a few versions of make puke on Makefiles with lines indented with spaces, not tabs. Obviously GNU make used on Debianish systems is not strictly among them, or this would fail. Even so, I cannot resist the urge to pedantically fix this, if only to get rid of the bright syntax error red coloration in vim. :) --- debian/rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/rules b/debian/rules index 3f4d8e629b..4bde8f325e 100755 --- a/debian/rules +++ b/debian/rules @@ -33,8 +33,8 @@ override_dh_installexamples: dh_installexamples --remaining-packages override_dh_link: - # to address lintian warning - # W: libsdl2-2.0-0: dev-pkg-without-shlib-symlink usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.0.0 usr/lib/x86_64-linux-gnu/libSDL2-2.0.so + # to address lintian warning + # W: libsdl2-2.0-0: dev-pkg-without-shlib-symlink usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.0.0 usr/lib/x86_64-linux-gnu/libSDL2-2.0.so dh_link -plibsdl2-dev usr/lib/$(DEB_HOST_MULTIARCH)/libSDL2-2.0.so.0.0.0 usr/lib/$(DEB_HOST_MULTIARCH)/libSDL2-2.0.so override_dh_strip: From c4a32adc1da751d52996efa30dac70a52926a8f5 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 5 Nov 2013 20:07:39 -0300 Subject: [PATCH 015/402] Adds Joystick support for Android This bumps the build SDK level to 12 (up from 10). Runtime requirements remain the same (at API level < 12 joystick support is disabled). Also enables building SDL for armv7 and x86. --- README-android.txt | 10 +- WhatsNew.txt | 10 ++ android-project/AndroidManifest.xml | 2 +- android-project/default.properties | 2 +- android-project/jni/Application.mk | 2 + android-project/project.properties | 2 +- .../src/org/libsdl/app/SDLActivity.java | 164 ++++++++++++++++-- build-scripts/androidbuild.sh | 13 +- include/SDL_hints.h | 10 ++ src/core/android/SDL_android.c | 80 +++++++++ src/core/android/SDL_android.h | 5 + src/joystick/android/SDL_sysjoystick.c | 130 +++++++++++++- src/joystick/android/SDL_sysjoystick.h | 28 +++ 13 files changed, 428 insertions(+), 30 deletions(-) create mode 100644 src/joystick/android/SDL_sysjoystick.h diff --git a/README-android.txt b/README-android.txt index a161c8407a..4a1cfc29fc 100644 --- a/README-android.txt +++ b/README-android.txt @@ -4,13 +4,14 @@ Simple DirectMedia Layer for Android Requirements: -Android SDK (version 10 or later) +Android SDK (version 12 or later) http://developer.android.com/sdk/index.html Android NDK r7 or later http://developer.android.com/sdk/ndk/index.html Minimum API level supported by SDL: 10 (Android 2.3.3) +Joystick support is available for API level >=12 devices. ================================================================================ How the port works @@ -396,8 +397,11 @@ When you're done instrumenting with valgrind, you can disable the wrapper: Why is API level 10 the minimum required? ================================================================================ -API level 10 is required because SDL requires some functionality for running not -available on older devices and some for building which is not in older NDK/SDKs. +API level 10 is the minimum required level at runtime (that is, on the device) +because SDL requires some functionality for running not +available on older devices. Since the incorporation of joystick support into SDL, +the minimum SDK required to *build* SDL is version 12. Devices running API levels +10-11 are still supported, only with the joystick functionality disabled. Support for native OpenGL ES and ES2 applications was introduced in the NDK for API level 4 and 8. EGL was made a stable API in the NDK for API level 9, which diff --git a/WhatsNew.txt b/WhatsNew.txt index 5ac78c5137..36afc564c9 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -1,6 +1,16 @@ This is a list of major changes in SDL's version history. +--------------------------------------------------------------------------- +2.0.2: +--------------------------------------------------------------------------- + +Android: +* Joystick support (minimum SDK version required to build SDL is now 12, + the required runtime version remains at 10, but on such devices joystick + support won't be available). + + --------------------------------------------------------------------------- 2.0.1: --------------------------------------------------------------------------- diff --git a/android-project/AndroidManifest.xml b/android-project/AndroidManifest.xml index 27db41843a..0e4ad41628 100644 --- a/android-project/AndroidManifest.xml +++ b/android-project/AndroidManifest.xml @@ -31,7 +31,7 @@ - + diff --git a/android-project/default.properties b/android-project/default.properties index 9d135cb85f..0cdab9561b 100644 --- a/android-project/default.properties +++ b/android-project/default.properties @@ -8,4 +8,4 @@ # project structure. # Project target. -target=android-7 +target=android-12 diff --git a/android-project/jni/Application.mk b/android-project/jni/Application.mk index 05cf0c31cb..e5b50793b9 100644 --- a/android-project/jni/Application.mk +++ b/android-project/jni/Application.mk @@ -2,3 +2,5 @@ # Uncomment this if you're using STL in your project # See CPLUSPLUS-SUPPORT.html in the NDK documentation for more information # APP_STL := stlport_static + +APP_ABI := armeabi armeabi-v7a x86 diff --git a/android-project/project.properties b/android-project/project.properties index b7c2081d56..0f507e5300 100644 --- a/android-project/project.properties +++ b/android-project/project.properties @@ -11,4 +11,4 @@ #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt # Project target. -target=android-10 +target=android-12 diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 49b014ce1e..f7cb9abca2 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -16,6 +16,10 @@ import android.media.*; import android.hardware.*; +import java.lang.*; +import java.util.List; +import java.util.ArrayList; + /** SDL Activity @@ -31,10 +35,11 @@ public class SDLActivity extends Activity { protected static SDLSurface mSurface; protected static View mTextEdit; protected static ViewGroup mLayout; + protected static SDLJoystickHandler mJoystickHandler; // This is what SDL runs in. It invokes SDL_main(), eventually protected static Thread mSDLThread; - + // Audio protected static Thread mAudioThread; protected static AudioTrack mAudioTrack; @@ -60,6 +65,13 @@ protected void onCreate(Bundle savedInstanceState) { // Set up the surface mSurface = new SDLSurface(getApplication()); + + if(Build.VERSION.SDK_INT >= 12) { + mJoystickHandler = new SDLJoystickHandler_API12(); + } + else { + mJoystickHandler = new SDLJoystickHandler(); + } mLayout = new AbsoluteLayout(this); mLayout.addView(mSurface); @@ -236,6 +248,10 @@ boolean sendCommand(int command, Object data) { public static native void nativePause(); public static native void nativeResume(); public static native void onNativeResize(int x, int y, int format); + public static native void onNativePadDown(int padId, int keycode); + public static native void onNativePadUp(int padId, int keycode); + public static native void onNativeJoy(int joyId, int axis, + float value); public static native void onNativeKeyDown(int keycode); public static native void onNativeKeyUp(int keycode); public static native void onNativeKeyboardFocusLost(); @@ -406,6 +422,23 @@ public static int[] inputGetInputDeviceIds(int sources) { } return Arrays.copyOf(filtered, used); } + + // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance + public static int getNumJoysticks() { + return mJoystickHandler.getNumJoysticks(); + } + + public static String getJoystickName(int joy) { + return mJoystickHandler.getJoystickName(joy); + } + + public static int getJoystickAxes(int joy) { + return mJoystickHandler.getJoystickAxes(joy); + } + + public static int getJoyId(int devId) { + return mJoystickHandler.getJoyId(devId); + } } /** @@ -451,6 +484,10 @@ public SDLSurface(Context context) { mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); + + if(Build.VERSION.SDK_INT >= 12) { + setOnGenericMotionListener(new SDLGenericMotionHandler_API12()); + } // Some arbitrary defaults to avoid a potential division by zero mWidth = 1.0f; @@ -557,16 +594,26 @@ public void onDraw(Canvas canvas) {} // Key events @Override public boolean onKey(View v, int keyCode, KeyEvent event) { - - if (event.getAction() == KeyEvent.ACTION_DOWN) { - //Log.v("SDL", "key down: " + keyCode); - SDLActivity.onNativeKeyDown(keyCode); - return true; - } - else if (event.getAction() == KeyEvent.ACTION_UP) { - //Log.v("SDL", "key up: " + keyCode); - SDLActivity.onNativeKeyUp(keyCode); - return true; + // Dispatch the different events depending on where they come from + if(event.getSource() == InputDevice.SOURCE_KEYBOARD) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + //Log.v("SDL", "key down: " + keyCode); + SDLActivity.onNativeKeyDown(keyCode); + return true; + } + else if (event.getAction() == KeyEvent.ACTION_UP) { + //Log.v("SDL", "key up: " + keyCode); + SDLActivity.onNativeKeyUp(keyCode); + return true; + } + } else if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ + (event.getSource() & InputDevice.SOURCE_DPAD) != 0 ) { + int id = SDLActivity.getJoyId( event.getDeviceId() ); + if (event.getAction() == KeyEvent.ACTION_DOWN) { + SDLActivity.onNativePadDown(id, keyCode); + } else if (event.getAction() == KeyEvent.ACTION_UP) { + SDLActivity.onNativePadUp(id, keyCode); + } } return false; @@ -646,8 +693,7 @@ public void onSensorChanged(SensorEvent event) { y / SensorManager.GRAVITY_EARTH, event.values[2] / SensorManager.GRAVITY_EARTH - 1); } - } - + } } /* This is a fake invisible editor view that receives the input and defines the @@ -769,3 +815,95 @@ public boolean setComposingText(CharSequence text, int newCursorPosition) { } +/* A null joystick handler for API level < 12 devices (the accelerometer is handled separately) */ +class SDLJoystickHandler { + public int getNumJoysticks() { + return 0; + } + + public String getJoystickName(int joy) { + return ""; + } + + public int getJoystickAxes(int joy) { + return 0; + } + + public int getJoyId(int devId) { + return 0; + } +} + +/* Actual joystick functionality available for API >= 12 devices */ +class SDLJoystickHandler_API12 extends SDLJoystickHandler { + private List mJoyIdList; + + // Create a list of valid ID's the first time this function is called + private void createJoystickList() { + if(mJoyIdList != null) { + return; + } + + mJoyIdList = new ArrayList(); + int[] deviceIds = InputDevice.getDeviceIds(); + for(int i=0; iGetStaticMethodID(env, mActivityClass, "getNumJoysticks", "()I"); + if (!mid) { + return -1; + } + + return (int)(*env)->CallStaticIntMethod(env, mActivityClass, mid); +} + +/* Return the name of joystick number "i" */ +char* Android_JNI_GetJoystickName(int i) +{ + JNIEnv* env = Android_JNI_GetEnv(); + if (!env) { + return SDL_strdup(""); + } + + jmethodID mid = (*env)->GetStaticMethodID(env, mActivityClass, "getJoystickName", "(I)Ljava/lang/String;"); + if (!mid) { + return SDL_strdup(""); + } + jstring string = (jstring)((*env)->CallStaticObjectMethod(env, mActivityClass, mid, i)); + const char* utf = (*env)->GetStringUTFChars(env, string, 0); + if (!utf) { + return SDL_strdup(""); + } + + char* text = SDL_strdup(utf); + (*env)->ReleaseStringUTFChars(env, string, utf); + return text; +} + +/* return the number of axes in the given joystick */ +int Android_JNI_GetJoystickAxes(int joy) +{ + JNIEnv* env = Android_JNI_GetEnv(); + if (!env) { + return -1; + } + + jmethodID mid = (*env)->GetStaticMethodID(env, mActivityClass, "getJoystickAxes", "(I)I"); + if (!mid) { + return -1; + } + + return (int)(*env)->CallIntMethod(env, mActivityClass, mid, joy); +} + + /* sends message to be handled on the UI event dispatch thread */ int Android_JNI_SendMessage(int command, int param) { diff --git a/src/core/android/SDL_android.h b/src/core/android/SDL_android.h index 6181a15db8..805518a8f6 100644 --- a/src/core/android/SDL_android.h +++ b/src/core/android/SDL_android.h @@ -64,6 +64,11 @@ SDL_bool Android_JNI_HasClipboardText(); /* Power support */ int Android_JNI_GetPowerInfo(int* plugged, int* charged, int* battery, int* seconds, int* percent); + +/* Joystick support */ +int Android_JNI_GetNumJoysticks(); +char* Android_JNI_GetJoystickName(int i); +int Android_JNI_GetJoystickAxes(int joy); /* Touch support */ int Android_JNI_GetTouchDeviceIds(int **ids); diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index adaca528e9..0c7f81001a 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -29,11 +29,48 @@ #include "SDL_error.h" #include "SDL_events.h" #include "SDL_joystick.h" +#include "SDL_hints.h" #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" -static const char *accelerometerName = "Android accelerometer"; +#define ANDROID_ACCELEROMETER_INDEX (SYS_numjoysticks - 1) +#define ANDROID_ACCELEROMETER_NAME "Android Accelerometer" + +static SDL_Joystick **SYS_Joysticks; +static char **SYS_JoystickNames; +static int SYS_numjoysticks; +static SDL_bool SYS_accelAsJoy; + +/* Function to convert Android keyCodes into SDL ones. + * This code manipulation is done to get a sequential list of codes. + */ +int +keycode_to_SDL(int keycode) +{ + int final = 0; + /* D-Pad key codes (API 1): + * KEYCODE_DPAD_UP=19, KEYCODE_DPAD_DOWN + * KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHT, KEYCODE_DPAD_CENTER + */ + if(keycode < 96) + return keycode-19; + /* Some gamepad buttons (API 9): + * KEYCODE_BUTTON_A=96, KEYCODE_BUTTON_B, KEYCODE_BUTTON_C, + * KEYCODE_BUTTON_X, KEYCODE_BUTTON_Y, KEYCODE_BUTTON_Z, + * KEYCODE_BUTTON_L1, KEYCODE_BUTTON_L2, + * KEYCODE_BUTTON_R1, KEYCODE_BUTTON_R2, + * KEYCODE_BUTTON_THUMBL, KEYCODE_BUTTON_THUMBR, + * KEYCODE_BUTTON_START, KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_MODE + */ + else if(keycode < 188) + return keycode-91; + /* More gamepad buttons (API 12): + * KEYCODE_BUTTON_1=188 to KEYCODE_BUTTON_16 + */ + else + return keycode-168; +} /* Function to scan the system for joysticks. * This function should set SDL_numjoysticks to the number of available @@ -43,18 +80,56 @@ static const char *accelerometerName = "Android accelerometer"; int SDL_SYS_JoystickInit(void) { - return (1); + int i = 0; + const char *env; + + env = SDL_GetHint(SDL_HINT_ACCEL_AS_JOY); + if (env && !SDL_atoi(env)) + SYS_accelAsJoy = SDL_FALSE; + else + SYS_accelAsJoy = SDL_TRUE; /* Default behavior */ + + SYS_numjoysticks = Android_JNI_GetNumJoysticks(); + if (SYS_accelAsJoy) { + SYS_numjoysticks++; + } + SYS_Joysticks = (SDL_Joystick **)SDL_malloc(SYS_numjoysticks*sizeof(SDL_Joystick *)); + if (SYS_Joysticks == NULL) + { + return SDL_OutOfMemory(); + } + SYS_JoystickNames = (char **)SDL_malloc(SYS_numjoysticks*sizeof(char *)); + if (SYS_JoystickNames == NULL) + { + SDL_free(SYS_Joysticks); + SYS_Joysticks = NULL; + return SDL_OutOfMemory(); + } + SDL_memset(SYS_JoystickNames, 0, (SYS_numjoysticks*sizeof(char *))); + SDL_memset(SYS_Joysticks, 0, (SYS_numjoysticks*sizeof(SDL_Joystick *))); + + for (i = 0; i < SYS_numjoysticks; i++) + { + if ( SYS_accelAsJoy && i == ANDROID_ACCELEROMETER_INDEX ) { + SYS_JoystickNames[i] = ANDROID_ACCELEROMETER_NAME; + } else { + SYS_JoystickNames[i] = Android_JNI_GetJoystickName(i); + } + } + + return (SYS_numjoysticks); } int SDL_SYS_NumJoysticks() { - return 1; + return SYS_numjoysticks; } void SDL_SYS_JoystickDetect() { } +/* TODO: Hotplugging support */ SDL_bool SDL_SYS_JoystickNeedsPolling() { return SDL_FALSE; @@ -64,7 +139,7 @@ SDL_bool SDL_SYS_JoystickNeedsPolling() const char * SDL_SYS_JoystickNameForDeviceIndex(int device_index) { - return accelerometerName; + return SYS_JoystickNames[device_index]; } /* Function to perform the mapping from device index to the instance id for this index */ @@ -81,11 +156,19 @@ SDL_JoystickID SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index) int SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index) { - if (device_index == 0) { - joystick->nbuttons = 0; + if (device_index < SYS_numjoysticks) { joystick->nhats = 0; joystick->nballs = 0; - joystick->naxes = 3; + if (SYS_accelAsJoy && device_index == ANDROID_ACCELEROMETER_INDEX) { + joystick->nbuttons = 0; + joystick->naxes = 3; + } else { + /* TODO: Get the real number of buttons in the device */ + joystick->nbuttons = 36; + joystick->naxes = Android_JNI_GetJoystickAxes(device_index); + } + + SYS_Joysticks[device_index] = joystick; return 0; } else { SDL_SetError("No joystick available with that index"); @@ -111,7 +194,8 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) Sint16 value; float values[3]; - if (Android_JNI_GetAccelerometerValues(values)) { + if (SYS_accelAsJoy && Android_JNI_GetAccelerometerValues(values) && + joystick->instance_id == ANDROID_ACCELEROMETER_INDEX) { for ( i = 0; i < 3; i++ ) { value = (Sint16)(values[i] * 32767.0f); SDL_PrivateJoystickAxis(joystick, i, value); @@ -129,6 +213,10 @@ SDL_SYS_JoystickClose(SDL_Joystick * joystick) void SDL_SYS_JoystickQuit(void) { + SDL_free(SYS_JoystickNames); + SDL_free(SYS_Joysticks); + SYS_JoystickNames = NULL; + SYS_Joysticks = NULL; } SDL_JoystickGUID SDL_SYS_JoystickGetDeviceGUID( int device_index ) @@ -151,6 +239,32 @@ SDL_JoystickGUID SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick) return guid; } +int +Android_OnPadDown(int padId, int keycode) +{ + SDL_PrivateJoystickButton(SYS_Joysticks[padId], keycode_to_SDL(keycode), SDL_PRESSED); + + return 0; +} + +int +Android_OnPadUp(int padId, int keycode) +{ + SDL_PrivateJoystickButton(SYS_Joysticks[padId], keycode_to_SDL(keycode), SDL_RELEASED); + + return 0; +} + +int +Android_OnJoy(int joyId, int axis, float value) +{ + /* Android gives joy info normalized as [-1.0, 1.0] or [0.0, 1.0] */ + /* TODO: Are the reported values right? */ + SDL_PrivateJoystickAxis(SYS_Joysticks[joyId], axis, (Sint16) (32767.*value) ); + + return 0; +} + #endif /* SDL_JOYSTICK_ANDROID */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/joystick/android/SDL_sysjoystick.h b/src/joystick/android/SDL_sysjoystick.h new file mode 100644 index 0000000000..f98c6a04bd --- /dev/null +++ b/src/joystick/android/SDL_sysjoystick.h @@ -0,0 +1,28 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + */ + +#include "SDL_config.h" + +extern int Android_OnPadDown(int padId, int keycode); +extern int Android_OnPadUp(int padId, int keycode); +extern int Android_OnJoy(int joyId, int axisnum, float value); + +/* vi: set ts=4 sw=4 expandtab: */ From 88521648d413b28da0b97cabdd0ae8f8ee88699c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 5 Nov 2013 21:01:25 -0800 Subject: [PATCH 016/402] Fixed performance regression caused by the fix for bug 2158 --- src/render/opengl/SDL_glfuncs.h | 8 ++-- src/render/opengl/SDL_render_gl.c | 76 ++++++++++++++++++++++--------- 2 files changed, 58 insertions(+), 26 deletions(-) diff --git a/src/render/opengl/SDL_glfuncs.h b/src/render/opengl/SDL_glfuncs.h index 4915c64bc1..7544929fce 100644 --- a/src/render/opengl/SDL_glfuncs.h +++ b/src/render/opengl/SDL_glfuncs.h @@ -89,8 +89,8 @@ SDL_PROC_UNUSED(void, glDepthFunc, (GLenum func)) SDL_PROC_UNUSED(void, glDepthMask, (GLboolean flag)) SDL_PROC_UNUSED(void, glDepthRange, (GLclampd zNear, GLclampd zFar)) SDL_PROC(void, glDisable, (GLenum cap)) -SDL_PROC(void, glDisableClientState, (GLenum array)) -SDL_PROC(void, glDrawArrays, (GLenum mode, GLint first, GLsizei count)) +SDL_PROC_UNUSED(void, glDisableClientState, (GLenum array)) +SDL_PROC_UNUSED(void, glDrawArrays, (GLenum mode, GLint first, GLsizei count)) SDL_PROC_UNUSED(void, glDrawBuffer, (GLenum mode)) SDL_PROC_UNUSED(void, glDrawElements, (GLenum mode, GLsizei count, GLenum type, @@ -103,7 +103,7 @@ SDL_PROC_UNUSED(void, glEdgeFlagPointer, (GLsizei stride, const GLvoid * pointer)) SDL_PROC_UNUSED(void, glEdgeFlagv, (const GLboolean * flag)) SDL_PROC(void, glEnable, (GLenum cap)) -SDL_PROC(void, glEnableClientState, (GLenum array)) +SDL_PROC_UNUSED(void, glEnableClientState, (GLenum array)) SDL_PROC(void, glEnd, (void)) SDL_PROC_UNUSED(void, glEndList, (void)) SDL_PROC_UNUSED(void, glEvalCoord1d, (GLdouble u)) @@ -448,7 +448,7 @@ SDL_PROC_UNUSED(void, glVertex4iv, (const GLint * v)) SDL_PROC_UNUSED(void, glVertex4s, (GLshort x, GLshort y, GLshort z, GLshort w)) SDL_PROC_UNUSED(void, glVertex4sv, (const GLshort * v)) -SDL_PROC(void, glVertexPointer, +SDL_PROC_UNUSED(void, glVertexPointer, (GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)) SDL_PROC(void, glViewport, (GLint x, GLint y, GLsizei width, GLsizei height)) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 51fc9ad73d..94914ead18 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -1048,17 +1048,15 @@ GL_RenderDrawPoints(SDL_Renderer * renderer, const SDL_FPoint * points, int count) { GL_RenderData *data = (GL_RenderData *) renderer->driverdata; + int i; GL_SetDrawingState(renderer); - data->glTranslatef(0.5f, 0.5f, 0.0f); - data->glVertexPointer(2, GL_FLOAT, 0, points); - data->glEnableClientState(GL_VERTEX_ARRAY); - - data->glDrawArrays(GL_POINTS, 0, count); - - data->glDisableClientState(GL_VERTEX_ARRAY); - data->glTranslatef(-0.5f, -0.5f, 0.0f); + data->glBegin(GL_POINTS); + for (i = 0; i < count; ++i) { + data->glVertex2f(0.5f + points[i].x, 0.5f + points[i].y); + } + data->glEnd(); return 0; } @@ -1068,28 +1066,62 @@ GL_RenderDrawLines(SDL_Renderer * renderer, const SDL_FPoint * points, int count) { GL_RenderData *data = (GL_RenderData *) renderer->driverdata; + int i; GL_SetDrawingState(renderer); - data->glTranslatef(0.5f, 0.5f, 0.0f); - data->glVertexPointer(2, GL_FLOAT, 0, points); - data->glEnableClientState(GL_VERTEX_ARRAY); - if (count > 2 && points[0].x == points[count-1].x && points[0].y == points[count-1].y) { + data->glBegin(GL_LINE_LOOP); /* GL_LINE_LOOP takes care of the final segment */ - data->glDrawArrays(GL_LINE_LOOP, 0, count-1); + --count; + for (i = 0; i < count; ++i) { + data->glVertex2f(0.5f + points[i].x, 0.5f + points[i].y); + } + data->glEnd(); } else { - data->glDrawArrays(GL_LINE_STRIP, 0, count); - } - /* Make sure all the line endpoints are closed. - * http://www.opengl.org/documentation/specs/version1.1/glspec1.1/node47.html - * Which points need to be drawn varies by driver, so just draw all of them. - */ - data->glDrawArrays(GL_POINTS, 0, count); - data->glDisableClientState(GL_VERTEX_ARRAY); - data->glTranslatef(-0.5f, -0.5f, 0.0f); +#if defined(__MACOSX__) || defined(__WIN32__) +#else + int x1, y1, x2, y2; +#endif + data->glBegin(GL_LINE_STRIP); + for (i = 0; i < count; ++i) { + data->glVertex2f(0.5f + points[i].x, 0.5f + points[i].y); + } + data->glEnd(); + + /* The line is half open, so we need one more point to complete it. + * http://www.opengl.org/documentation/specs/version1.1/glspec1.1/node47.html + * If we have to, we can use vertical line and horizontal line textures + * for vertical and horizontal lines, and then create custom textures + * for diagonal lines and software render those. It's terrible, but at + * least it would be pixel perfect. + */ + data->glBegin(GL_POINTS); +#if defined(__MACOSX__) || defined(__WIN32__) + /* Mac OS X and Windows seem to always leave the last point open */ + data->glVertex2f(0.5f + points[count-1].x, 0.5f + points[count-1].y); +#else + /* Linux seems to leave the right-most or bottom-most point open */ + x1 = points[0].x; + y1 = points[0].y; + x2 = points[count-1].x; + y2 = points[count-1].y; + + if (x1 > x2) { + data->glVertex2f(0.5f + x1, 0.5f + y1); + } else if (x2 > x1) { + data->glVertex2f(0.5f + x2, 0.5f + y2); + } + if (y1 > y2) { + data->glVertex2f(0.5f + x1, 0.5f + y1); + } else if (y2 > y1) { + data->glVertex2f(0.5f + x2, 0.5f + y2); + } +#endif + data->glEnd(); + } return GL_CheckError("", renderer); } From 4b0fbe9b021443ff5f8f6c29e588d05fb2470a57 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 6 Nov 2013 09:48:45 -0300 Subject: [PATCH 017/402] Fixes Bug 1944 - Linux events, joysticks having only hat are not read --- src/joystick/linux/SDL_sysjoystick.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index 72fa52cad3..84511da022 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -85,11 +85,14 @@ static int instance_counter = 0; static int IsJoystick(int fd, char *namebuf, const size_t namebuflen, SDL_JoystickGUID *guid) { + struct input_id inpid; + Uint16 *guid16 = (Uint16 *) ((char *) &guid->data); + +#if !SDL_USE_LIBUDEV + /* When udev is enabled we only get joystick devices here, so there's no need to test them */ unsigned long evbit[NBITS(EV_MAX)] = { 0 }; unsigned long keybit[NBITS(KEY_MAX)] = { 0 }; unsigned long absbit[NBITS(ABS_MAX)] = { 0 }; - struct input_id inpid; - Uint16 *guid16 = (Uint16 *) ((char *) &guid->data); if ((ioctl(fd, EVIOCGBIT(0, sizeof(evbit)), evbit) < 0) || (ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(keybit)), keybit) < 0) || @@ -101,6 +104,7 @@ IsJoystick(int fd, char *namebuf, const size_t namebuflen, SDL_JoystickGUID *gui test_bit(ABS_X, absbit) && test_bit(ABS_Y, absbit))) { return 0; } +#endif if (ioctl(fd, EVIOCGNAME(namebuflen), namebuf) < 0) { return 0; From c7313413d8aacc8f8af0a6e4e09e984e83071040 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 6 Nov 2013 11:23:24 -0300 Subject: [PATCH 018/402] [Android] Fixes Bug 2041 - can't get SDL_QUIT event... Thanks to Denis Bernard! Also, changed the Android manifest so the app doesn't quit with orientation changes, and made testgles.c exit properly on Android. --- android-project/AndroidManifest.xml | 4 +++- android-project/src/org/libsdl/app/SDLActivity.java | 6 +++--- src/core/android/SDL_android.c | 7 +++++++ src/video/android/SDL_androidevents.c | 4 +++- test/testgles.c | 2 ++ 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/android-project/AndroidManifest.xml b/android-project/AndroidManifest.xml index 0e4ad41628..a05b5660e8 100644 --- a/android-project/AndroidManifest.xml +++ b/android-project/AndroidManifest.xml @@ -22,7 +22,9 @@ android:allowBackup="true" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> + android:label="@string/app_name" + android:configChanges="keyboardHidden|orientation" + > diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index f7cb9abca2..773ec43bc7 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -121,13 +121,13 @@ protected void onDestroy() { SDLActivity.nativeQuit(); // Now wait for the SDL thread to quit - if (mSDLThread != null) { + if (SDLActivity.mSDLThread != null) { try { - mSDLThread.join(); + SDLActivity.mSDLThread.join(); } catch(Exception e) { Log.v("SDL", "Problem stopping thread: " + e); } - mSDLThread = null; + SDLActivity.mSDLThread = null; //Log.v("SDL", "Finished waiting for SDL thread"); } diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 6fc6f0771c..4c47ae558d 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -283,9 +283,16 @@ void Java_org_libsdl_app_SDLActivity_nativeLowMemory( void Java_org_libsdl_app_SDLActivity_nativeQuit( JNIEnv* env, jclass cls) { + /* Discard previous events. The user should have handled state storage + * in SDL_APP_WILLENTERBACKGROUND. After nativeQuit() is called, no + * events other than SDL_QUIT and SDL_APP_TERMINATING should fire */ + SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT); /* Inject a SDL_QUIT event */ SDL_SendQuit(); SDL_SendAppEvent(SDL_APP_TERMINATING); + /* Resume the event loop so that the app can catch SDL_QUIT which + * should now be the top event in the event queue. */ + if (!SDL_SemValue(Android_ResumeSem)) SDL_SemPost(Android_ResumeSem); } /* Pause */ diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c index 9be49cf4f1..7a57ff584a 100644 --- a/src/video/android/SDL_androidevents.c +++ b/src/video/android/SDL_androidevents.c @@ -82,7 +82,9 @@ Android_PumpEvents(_THIS) isPaused = 0; /* Restore the GL Context from here, as this operation is thread dependent */ - android_egl_context_restore(); + if (!SDL_HasEvent(SDL_QUIT)) { + android_egl_context_restore(); + } } } else { diff --git a/test/testgles.c b/test/testgles.c index 4e1bc074c0..314ec7cd89 100644 --- a/test/testgles.c +++ b/test/testgles.c @@ -335,7 +335,9 @@ main(int argc, char *argv[]) SDL_Log("%2.2f frames per second\n", ((double) frames * 1000) / (now - then)); } +#if !defined(__ANDROID__) quit(0); +#endif return 0; } From e74f2cf36b0292b77ee287610276585a2e1eb1e3 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 6 Nov 2013 23:35:08 -0800 Subject: [PATCH 019/402] Horizontal wheel support in windows Lorenzo Pistone this patch adds support for the horizontal wheel in Windows. It is shamelessly copied off the vertical wheel code, but I guess that that is a value added in consistency. --- src/video/windows/SDL_windowsevents.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 1826258c82..0c9fcb94fd 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -67,6 +67,9 @@ #ifndef WM_TOUCH #define WM_TOUCH 0x0240 #endif +#ifndef WM_MOUSEHWHEEL +#define WM_MOUSEHWHEEL 0x020E +#endif static SDL_Scancode WindowsScanCodeToSDLScanCode( LPARAM lParam, WPARAM wParam ) @@ -481,6 +484,25 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) break; } + case WM_MOUSEHWHEEL: + { + static short s_AccumulatedMotion; + + s_AccumulatedMotion += GET_WHEEL_DELTA_WPARAM(wParam); + if (s_AccumulatedMotion > 0) { + while (s_AccumulatedMotion >= WHEEL_DELTA) { + SDL_SendMouseWheel(data->window, 0, 1, 0, timestamp); + s_AccumulatedMotion -= WHEEL_DELTA; + } + } else { + while (s_AccumulatedMotion <= -WHEEL_DELTA) { + SDL_SendMouseWheel(data->window, 0, -1, 0, timestamp); + s_AccumulatedMotion += WHEEL_DELTA; + } + } + break; + } + #ifdef WM_MOUSELEAVE case WM_MOUSELEAVE: if (SDL_GetMouseFocus() == data->window && !SDL_GetMouse()->relative_mode) { From ef99b8fcb69491ab3ef8f1d55a657c26dcb7e57d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 6 Nov 2013 23:59:24 -0800 Subject: [PATCH 020/402] Fixed Windows compile error --- src/video/windows/SDL_windowsevents.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 0c9fcb94fd..ec278d26e5 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -491,12 +491,12 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) s_AccumulatedMotion += GET_WHEEL_DELTA_WPARAM(wParam); if (s_AccumulatedMotion > 0) { while (s_AccumulatedMotion >= WHEEL_DELTA) { - SDL_SendMouseWheel(data->window, 0, 1, 0, timestamp); + SDL_SendMouseWheel(data->window, 0, 1, 0); s_AccumulatedMotion -= WHEEL_DELTA; } } else { while (s_AccumulatedMotion <= -WHEEL_DELTA) { - SDL_SendMouseWheel(data->window, 0, -1, 0, timestamp); + SDL_SendMouseWheel(data->window, 0, -1, 0); s_AccumulatedMotion += WHEEL_DELTA; } } From f4e300d320001f1461a2010d0159efc2176b2994 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 7 Nov 2013 19:15:58 -0800 Subject: [PATCH 021/402] Fixed bug 2219 - BMP loader do not handle big BITMAPINFOHEADER structure Patrice Mandin I encountered a problem trying to load a 8-bit paletted BMP file using SDL. This file was generated using GIMP 2.8. It has a big BITMAPINFOHEADER (0x6c bytes for biSize field), and thus the palette is incorrectly setup. --- src/video/SDL_bmp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c index 9244b28dbb..f471341fbd 100644 --- a/src/video/SDL_bmp.c +++ b/src/video/SDL_bmp.c @@ -150,6 +150,8 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc) biBitCount = SDL_ReadLE16(src); biCompression = BI_RGB; } else { + const int headerSize = 40; + biWidth = SDL_ReadLE32(src); biHeight = SDL_ReadLE32(src); /* biPlanes = */ SDL_ReadLE16(src); @@ -160,6 +162,10 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc) /* biYPelsPerMeter = */ SDL_ReadLE32(src); biClrUsed = SDL_ReadLE32(src); /* biClrImportant = */ SDL_ReadLE32(src); + + if (biSize > headerSize) { + SDL_RWseek(src, (biSize - headerSize), RW_SEEK_CUR); + } } if (biHeight < 0) { topDown = SDL_TRUE; From 8e88a3bcc562c3e8e62134b19d9a776b0658fa54 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:04:35 -0800 Subject: [PATCH 022/402] Fixed spot where SDL was assuming that two displays having the same origin means they're the same display. Changed it to check for the same extents instead. (Sam actually wrote this, I'm just reviewing and checking it in.) --- src/video/x11/SDL_x11modes.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c index a4c242cdc5..ad3b56f34f 100644 --- a/src/video/x11/SDL_x11modes.c +++ b/src/video/x11/SDL_x11modes.c @@ -552,7 +552,8 @@ X11_InitModes(_THIS) in all cases. Anybody want to give this some love? */ crtc = X11_XRRGetCrtcInfo(data->display, res, output_info->crtc); - if (!crtc || crtc->x != displaydata->x || crtc->y != displaydata->y) { + if (!crtc || crtc->x != displaydata->x || crtc->y != displaydata->y || + crtc->width != mode.w || crtc->height != mode.h) { X11_XRRFreeOutputInfo(output_info); X11_XRRFreeCrtcInfo(crtc); continue; From e894ee69d69545f9ed70623721eaab9e706f4b17 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:04:51 -0800 Subject: [PATCH 023/402] Added SDL_HINT_CTRL_CLICK_EMULATE_RIGHT_CLICK hint which controls whether ctrl+click should emulate a right click on OSX. --- include/SDL_hints.h | 8 ++++++++ src/video/cocoa/SDL_cocoawindow.m | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 01399b6d23..8e561fb31f 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -283,6 +283,14 @@ extern "C" { */ #define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + /** * \brief An enumeration of hint priorities diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 5529983069..b73a837a6e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -24,6 +24,7 @@ #include "SDL_syswm.h" #include "SDL_timer.h" /* For SDL_GetTicks() */ +#include "SDL_hints.h" #include "../SDL_sysvideo.h" #include "../../events/SDL_keyboard_c.h" #include "../../events/SDL_mouse_c.h" @@ -59,6 +60,12 @@ static void ScheduleContextUpdates(SDL_WindowData *data) } } +static int GetHintCtrlClickEmulateRightClick() +{ + const char *hint = SDL_GetHint( SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK ); + return hint != NULL && *hint != '0'; +} + @implementation Cocoa_WindowListener - (void)listen:(SDL_WindowData *)data @@ -341,7 +348,8 @@ - (void)mouseDown:(NSEvent *)theEvent switch ([theEvent buttonNumber]) { case 0: - if ([theEvent modifierFlags] & NSControlKeyMask) { + if (([theEvent modifierFlags] & NSControlKeyMask) && + GetHintCtrlClickEmulateRightClick()) { wasCtrlLeft = YES; button = SDL_BUTTON_RIGHT; } else { From dce5aa28ca9bb7cf5fe2e751d364ce127fdb7431 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:04:59 -0800 Subject: [PATCH 024/402] Make sure the joystick count is correct when the added and removed events are dispatched, in case someone is watching for them with an event filter. --- src/joystick/linux/SDL_sysjoystick.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index 84511da022..43990b42f6 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -234,12 +234,15 @@ MaybeAddDevice(const char *path) SDL_joylist_tail = item; } + /* Need to increment the joystick count before we post the event */ + ++numjoysticks; + /* !!! FIXME: Move this to an SDL_PrivateJoyDeviceAdded() function? */ #if !SDL_EVENTS_DISABLED event.type = SDL_JOYDEVICEADDED; if (SDL_GetEventState(event.type) == SDL_ENABLE) { - event.jdevice.which = numjoysticks; + event.jdevice.which = (numjoysticks - 1); if ( (SDL_EventOK == NULL) || (*SDL_EventOK) (SDL_EventOKParam, &event) ) { SDL_PushEvent(&event); @@ -247,7 +250,7 @@ MaybeAddDevice(const char *path) } #endif /* !SDL_EVENTS_DISABLED */ - return numjoysticks++; + return numjoysticks; } #if SDL_USE_LIBUDEV @@ -282,6 +285,9 @@ MaybeRemoveDevice(const char *path) SDL_joylist_tail = prev; } + /* Need to decrement the joystick count before we post the event */ + --numjoysticks; + /* !!! FIXME: Move this to an SDL_PrivateJoyDeviceRemoved() function? */ #if !SDL_EVENTS_DISABLED event.type = SDL_JOYDEVICEREMOVED; @@ -298,7 +304,6 @@ MaybeRemoveDevice(const char *path) SDL_free(item->path); SDL_free(item->name); SDL_free(item); - numjoysticks--; return retval; } prev = item; From 04533351752776ec1611e838b46d2c9353fc42a0 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:05:08 -0800 Subject: [PATCH 025/402] Mac: Fix a crash with SDL_MAC_NO_SANDBOX. When we get a kCGEventTapDisabledByTimeout or kCGEventTapDisabledByUserInput, the event tap would perform an invalid memory access. void pointers are so fun. This code only runs if you explicitly build with SDL_MAC_NO_SANDBOX. --- src/video/cocoa/SDL_cocoamousetap.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamousetap.m b/src/video/cocoa/SDL_cocoamousetap.m index 5879d49bfb..fd79296499 100644 --- a/src/video/cocoa/SDL_cocoamousetap.m +++ b/src/video/cocoa/SDL_cocoamousetap.m @@ -60,7 +60,7 @@ static CGEventRef Cocoa_MouseTapCallback(CGEventTapProxy proxy, CGEventType type, CGEventRef event, void *refcon) { - SDL_MouseData *driverdata = (SDL_MouseData*)refcon; + SDL_MouseEventTapData *tapdata = (SDL_MouseEventTapData*)refcon; SDL_Mouse *mouse = SDL_GetMouse(); SDL_Window *window = SDL_GetKeyboardFocus(); NSRect windowRect; @@ -71,7 +71,7 @@ case kCGEventTapDisabledByTimeout: case kCGEventTapDisabledByUserInput: { - CGEventTapEnable(((SDL_MouseEventTapData*)(driverdata->tapdata))->tap, true); + CGEventTapEnable(tapdata->tap, true); return NULL; } default: From 6ff917512e59ad9ee0e852ac92e29e52a9531f8c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:05:15 -0800 Subject: [PATCH 026/402] Made helper window creation depend on initializing the Haptics or Joystick subsystems. --- src/SDL.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/SDL.c b/src/SDL.c index 0f6de9fe61..a59fe2cc1e 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -115,9 +115,11 @@ SDL_InitSubSystem(Uint32 flags) SDL_ClearError(); #if SDL_VIDEO_DRIVER_WINDOWS - if (SDL_HelperWindowCreate() < 0) { - return -1; - } + if ((flags & (SDL_INIT_HAPTIC|SDL_INIT_JOYSTICK))) { + if (SDL_HelperWindowCreate() < 0) { + return -1; + } + } #endif #if !SDL_TIMERS_DISABLED From af4a41b4f6ffa2be62e8f7462a1ce40e8aca2241 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:05:19 -0800 Subject: [PATCH 027/402] Added a Linux game controller mapping for the Valve Streaming Gamepad --- src/joystick/SDL_gamecontrollerdb.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 7f6c7b29f3..a2f581479e 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -55,6 +55,7 @@ static const char *s_ControllerMappings [] = "030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3," "030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", From 5665bf2a7685c47305c542279b8d8ca72a451675 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 8 Nov 2013 14:05:23 -0800 Subject: [PATCH 028/402] Fixed bug 2172 - Window loses maximized state when activated I still haven't figured out why my application is being minimized when I try to raise, it but my previous workaround is causing issues. For now the correct way to raise and/or restore the window is as follows: if ( !(SDL_GetWindowFlags( window ) & SDL_WINDOW_MINIMIZED) ) { SDL_RaiseWindow( window ); } if ( SDL_GetWindowFlags( window ) & SDL_WINDOW_MINIMIZED ) { SDL_RestoreWindow( window ); } I will investigate the window state change rules more fully in the future. CR: Alfred Reynolds --- src/video/windows/SDL_windowswindow.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index cd53975d18..1a6849d261 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -405,9 +405,6 @@ void WIN_RaiseWindow(_THIS, SDL_Window * window) { WIN_SetWindowPositionInternal(_this, window, SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOSIZE); - - /* Raising the window while alt-tabbed can cause it to be minimized for some reason? */ - WIN_RestoreWindow(_this, window); } void From 1766004fa85c83641ee8e30fc10f3e29fd80a059 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 9 Nov 2013 00:56:05 -0800 Subject: [PATCH 029/402] Fixed signed/unsigned warning --- src/video/SDL_bmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c index f471341fbd..c8f1a1689e 100644 --- a/src/video/SDL_bmp.c +++ b/src/video/SDL_bmp.c @@ -150,7 +150,7 @@ SDL_LoadBMP_RW(SDL_RWops * src, int freesrc) biBitCount = SDL_ReadLE16(src); biCompression = BI_RGB; } else { - const int headerSize = 40; + const unsigned int headerSize = 40; biWidth = SDL_ReadLE32(src); biHeight = SDL_ReadLE32(src); From fd9ab7381905505e97b8560121bab0ee47f03587 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 9 Nov 2013 01:08:21 -0800 Subject: [PATCH 030/402] Fixed signed/unsigned warning --- src/joystick/SDL_joystick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c index 3906ec2b92..f635d4a3ed 100644 --- a/src/joystick/SDL_joystick.c +++ b/src/joystick/SDL_joystick.c @@ -832,7 +832,7 @@ SDL_JoystickGUID SDL_JoystickGetGUIDFromString(const char *pchGUID) int maxoutputbytes= sizeof(guid); size_t len = SDL_strlen( pchGUID ); Uint8 *p; - int i; + size_t i; /* Make sure it's even */ len = ( len ) & ~0x1; From 47b3d24cc1bedadfbe47be4653b56a33803e1719 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 9 Nov 2013 01:15:17 -0800 Subject: [PATCH 031/402] Updated notes about building with the Windows 8 SDK: Get the DirectX SDK. --- src/audio/xaudio2/SDL_xaudio2.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/audio/xaudio2/SDL_xaudio2.c b/src/audio/xaudio2/SDL_xaudio2.c index 557c3bb9a8..504a4204ba 100644 --- a/src/audio/xaudio2/SDL_xaudio2.c +++ b/src/audio/xaudio2/SDL_xaudio2.c @@ -32,7 +32,11 @@ /* The configure script already did any necessary checking */ # define SDL_XAUDIO2_HAS_SDK 1 #else -#include /* XAudio2 exists as of the March 2008 DirectX SDK */ +/* XAudio2 exists as of the March 2008 DirectX SDK + The XAudio2 implementation available in the Windows 8 SDK targets Windows 8 and newer. + If you want to build SDL with XAudio2 support you should install the DirectX SDK. + */ +#include #if (!defined(_DXSDK_BUILD_MAJOR) || (_DXSDK_BUILD_MAJOR < 1284)) # pragma message("Your DirectX SDK is too old. Disabling XAudio2 support.") #else From a0420e303df20225fe751e09771535b04f697d38 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 10 Nov 2013 00:32:23 -0500 Subject: [PATCH 032/402] Added Apoorv Upreti's GSoC2013 work: visual test suite. See visualtest/README.txt for details. --- VisualC/SDL_VS2012.sln | 31 + .../unittest/testquit/testquit_VS2012.vcxproj | 232 + VisualC/visualtest/visualtest_VS2012.vcxproj | 308 + visualtest/COPYING.txt | 18 + visualtest/Makefile.in | 37 + visualtest/README.txt | 214 + visualtest/acinclude.m4 | 359 ++ visualtest/autogen.sh | 12 + visualtest/compile | 1 + visualtest/config.h | 23 + visualtest/config.h.in | 22 + .../testsprite2_blendmodes.actions | 3 + .../testsprite2_blendmodes.config | 5 + .../testsprite2_blendmodes.parameters | 5 + .../testsprite2_crashtest.actions | 1 + .../testsprite2_crashtest.config | 5 + .../testsprite2_crashtest.parameters | 24 + .../testsprite2_fullscreen.actions | 3 + .../testsprite2_fullscreen.config | 5 + .../testsprite2_fullscreen.parameters | 5 + .../testsprite2_geometry.actions | 3 + .../testsprite2_geometry.config | 5 + .../testsprite2_geometry.parameters | 5 + visualtest/configure | 5203 +++++++++++++++++ visualtest/configure.in | 166 + visualtest/depcomp | 1 + visualtest/docs/Doxyfile | 1936 ++++++ ...__visualtest__action__configparser_8h.html | 424 ++ ...ltest__action__configparser_8h_source.html | 169 + ...__visualtest__exhaustive__variator_8h.html | 208 + ...ltest__exhaustive__variator_8h_source.html | 130 + ..._l__visualtest__harness__argparser_8h.html | 231 + ...ualtest__harness__argparser_8h_source.html | 140 + ...d_l__visualtest__mischelper_8h_source.html | 115 + .../_s_d_l__visualtest__parsehelper_8h.html | 172 + ..._l__visualtest__parsehelper_8h_source.html | 117 + .../html/_s_d_l__visualtest__process_8h.html | 328 ++ ..._s_d_l__visualtest__process_8h_source.html | 152 + ..._d_l__visualtest__random__variator_8h.html | 213 + ...isualtest__random__variator_8h_source.html | 130 + ...s_d_l__visualtest__rwhelper_8h_source.html | 137 + .../_s_d_l__visualtest__screenshot_8h.html | 197 + ...d_l__visualtest__screenshot_8h_source.html | 121 + ...d_l__visualtest__sut__configparser_8h.html | 317 + ...sualtest__sut__configparser_8h_source.html | 154 + ..._d_l__visualtest__variator__common_8h.html | 339 ++ ...isualtest__variator__common_8h_source.html | 158 + .../_s_d_l__visualtest__variators_8h.html | 220 + ..._d_l__visualtest__variators_8h_source.html | 135 + .../docs/html/action__configparser_8c.html | 301 + visualtest/docs/html/annotated.html | 114 + visualtest/docs/html/bc_s.png | Bin 0 -> 676 bytes visualtest/docs/html/bdwn.png | Bin 0 -> 147 bytes visualtest/docs/html/classes.html | 105 + visualtest/docs/html/closed.png | Bin 0 -> 132 bytes visualtest/docs/html/config_8h_source.html | 117 + .../dir_244674c763b96fdad0a6ffe8d0250e08.html | 98 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 127 + .../dir_88e6415a3128b404f1102a130772bdb6.html | 98 + .../dir_a18918b93668b435612395bbc2e8b82b.html | 98 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 120 + .../dir_f584182df4c69fab0b14563b4d535158.html | 100 + .../dir_fe549de2418b81853b5f194edb4a7f34.html | 98 + visualtest/docs/html/doxygen.css | 1186 ++++ visualtest/docs/html/doxygen.png | Bin 0 -> 3779 bytes visualtest/docs/html/dynsections.js | 97 + visualtest/docs/html/files.html | 130 + visualtest/docs/html/ftv2blank.png | Bin 0 -> 86 bytes visualtest/docs/html/ftv2cl.png | Bin 0 -> 453 bytes visualtest/docs/html/ftv2doc.png | Bin 0 -> 746 bytes visualtest/docs/html/ftv2folderclosed.png | Bin 0 -> 616 bytes visualtest/docs/html/ftv2folderopen.png | Bin 0 -> 597 bytes visualtest/docs/html/ftv2lastnode.png | Bin 0 -> 86 bytes visualtest/docs/html/ftv2link.png | Bin 0 -> 746 bytes visualtest/docs/html/ftv2mlastnode.png | Bin 0 -> 246 bytes visualtest/docs/html/ftv2mnode.png | Bin 0 -> 246 bytes visualtest/docs/html/ftv2mo.png | Bin 0 -> 403 bytes visualtest/docs/html/ftv2node.png | Bin 0 -> 86 bytes visualtest/docs/html/ftv2ns.png | Bin 0 -> 388 bytes visualtest/docs/html/ftv2plastnode.png | Bin 0 -> 229 bytes visualtest/docs/html/ftv2pnode.png | Bin 0 -> 229 bytes visualtest/docs/html/ftv2splitbar.png | Bin 0 -> 314 bytes visualtest/docs/html/ftv2vertline.png | Bin 0 -> 86 bytes visualtest/docs/html/functions.html | 309 + visualtest/docs/html/functions_vars.html | 309 + visualtest/docs/html/globals.html | 395 ++ visualtest/docs/html/globals_defs.html | 150 + visualtest/docs/html/globals_enum.html | 111 + visualtest/docs/html/globals_eval.html | 117 + visualtest/docs/html/globals_func.html | 261 + visualtest/docs/html/globals_type.html | 147 + .../docs/html/harness__argparser_8c.html | 203 + visualtest/docs/html/index.html | 222 + visualtest/docs/html/jquery.js | 31 + visualtest/docs/html/linux__process_8c.html | 109 + visualtest/docs/html/mischelper_8c.html | 138 + visualtest/docs/html/nav_f.png | Bin 0 -> 153 bytes visualtest/docs/html/nav_g.png | Bin 0 -> 95 bytes visualtest/docs/html/nav_h.png | Bin 0 -> 98 bytes visualtest/docs/html/open.png | Bin 0 -> 123 bytes visualtest/docs/html/parsehelper_8c.html | 172 + visualtest/docs/html/rwhelper_8c.html | 244 + visualtest/docs/html/screenshot_8c.html | 145 + visualtest/docs/html/search/all_61.html | 26 + visualtest/docs/html/search/all_61.js | 8 + visualtest/docs/html/search/all_62.html | 26 + visualtest/docs/html/search/all_62.js | 7 + visualtest/docs/html/search/all_63.html | 26 + visualtest/docs/html/search/all_63.js | 5 + visualtest/docs/html/search/all_64.html | 26 + visualtest/docs/html/search/all_64.js | 5 + visualtest/docs/html/search/all_65.html | 26 + visualtest/docs/html/search/all_65.js | 8 + visualtest/docs/html/search/all_66.html | 26 + visualtest/docs/html/search/all_66.js | 4 + visualtest/docs/html/search/all_68.html | 26 + visualtest/docs/html/search/all_68.js | 4 + visualtest/docs/html/search/all_69.html | 26 + visualtest/docs/html/search/all_69.js | 4 + visualtest/docs/html/search/all_6b.html | 26 + visualtest/docs/html/search/all_6b.js | 4 + visualtest/docs/html/search/all_6c.html | 26 + visualtest/docs/html/search/all_6c.js | 4 + visualtest/docs/html/search/all_6d.html | 26 + visualtest/docs/html/search/all_6d.js | 15 + visualtest/docs/html/search/all_6e.html | 26 + visualtest/docs/html/search/all_6e.js | 9 + visualtest/docs/html/search/all_6f.html | 26 + visualtest/docs/html/search/all_6f.js | 5 + visualtest/docs/html/search/all_70.html | 26 + visualtest/docs/html/search/all_70.js | 5 + visualtest/docs/html/search/all_72.html | 26 + visualtest/docs/html/search/all_72.js | 7 + visualtest/docs/html/search/all_73.html | 26 + visualtest/docs/html/search/all_73.js | 83 + visualtest/docs/html/search/all_74.html | 26 + visualtest/docs/html/search/all_74.js | 10 + visualtest/docs/html/search/all_76.html | 26 + visualtest/docs/html/search/all_76.js | 12 + visualtest/docs/html/search/all_77.html | 26 + visualtest/docs/html/search/all_77.js | 5 + visualtest/docs/html/search/classes_73.html | 26 + visualtest/docs/html/search/classes_73.js | 18 + visualtest/docs/html/search/close.png | Bin 0 -> 273 bytes visualtest/docs/html/search/defines_61.html | 26 + visualtest/docs/html/search/defines_61.js | 5 + visualtest/docs/html/search/defines_64.html | 26 + visualtest/docs/html/search/defines_64.js | 4 + visualtest/docs/html/search/defines_6b.html | 26 + visualtest/docs/html/search/defines_6b.js | 4 + visualtest/docs/html/search/defines_6d.html | 26 + visualtest/docs/html/search/defines_6d.js | 11 + visualtest/docs/html/search/defines_73.html | 26 + visualtest/docs/html/search/defines_73.js | 4 + visualtest/docs/html/search/defines_74.html | 26 + visualtest/docs/html/search/defines_74.js | 6 + visualtest/docs/html/search/enums_73.html | 26 + visualtest/docs/html/search/enums_73.js | 6 + .../docs/html/search/enumvalues_73.html | 26 + visualtest/docs/html/search/enumvalues_73.js | 8 + visualtest/docs/html/search/files_61.html | 26 + visualtest/docs/html/search/files_61.js | 4 + visualtest/docs/html/search/files_68.html | 26 + visualtest/docs/html/search/files_68.js | 4 + visualtest/docs/html/search/files_6c.html | 26 + visualtest/docs/html/search/files_6c.js | 4 + visualtest/docs/html/search/files_6d.html | 26 + visualtest/docs/html/search/files_6d.js | 4 + visualtest/docs/html/search/files_70.html | 26 + visualtest/docs/html/search/files_70.js | 4 + visualtest/docs/html/search/files_72.html | 26 + visualtest/docs/html/search/files_72.js | 4 + visualtest/docs/html/search/files_73.html | 26 + visualtest/docs/html/search/files_73.js | 15 + visualtest/docs/html/search/files_74.html | 26 + visualtest/docs/html/search/files_74.js | 4 + visualtest/docs/html/search/files_76.html | 26 + visualtest/docs/html/search/files_76.js | 7 + visualtest/docs/html/search/files_77.html | 26 + visualtest/docs/html/search/files_77.js | 5 + visualtest/docs/html/search/functions_6d.html | 26 + visualtest/docs/html/search/functions_6d.js | 4 + visualtest/docs/html/search/functions_73.html | 26 + visualtest/docs/html/search/functions_73.js | 42 + visualtest/docs/html/search/mag_sel.png | Bin 0 -> 563 bytes visualtest/docs/html/search/nomatches.html | 12 + visualtest/docs/html/search/pages_76.html | 26 + visualtest/docs/html/search/pages_76.js | 4 + visualtest/docs/html/search/search.css | 271 + visualtest/docs/html/search/search.js | 813 +++ visualtest/docs/html/search/search_l.png | Bin 0 -> 604 bytes visualtest/docs/html/search/search_m.png | Bin 0 -> 158 bytes visualtest/docs/html/search/search_r.png | Bin 0 -> 612 bytes visualtest/docs/html/search/typedefs_73.html | 26 + visualtest/docs/html/search/typedefs_73.js | 18 + visualtest/docs/html/search/variables_61.html | 26 + visualtest/docs/html/search/variables_61.js | 5 + visualtest/docs/html/search/variables_62.html | 26 + visualtest/docs/html/search/variables_62.js | 7 + visualtest/docs/html/search/variables_63.html | 26 + visualtest/docs/html/search/variables_63.js | 5 + visualtest/docs/html/search/variables_64.html | 26 + visualtest/docs/html/search/variables_64.js | 4 + visualtest/docs/html/search/variables_65.html | 26 + visualtest/docs/html/search/variables_65.js | 8 + visualtest/docs/html/search/variables_66.html | 26 + visualtest/docs/html/search/variables_66.js | 4 + visualtest/docs/html/search/variables_69.html | 26 + visualtest/docs/html/search/variables_69.js | 4 + visualtest/docs/html/search/variables_6d.html | 26 + visualtest/docs/html/search/variables_6d.js | 5 + visualtest/docs/html/search/variables_6e.html | 26 + visualtest/docs/html/search/variables_6e.js | 9 + visualtest/docs/html/search/variables_6f.html | 26 + visualtest/docs/html/search/variables_6f.js | 5 + visualtest/docs/html/search/variables_70.html | 26 + visualtest/docs/html/search/variables_70.js | 4 + visualtest/docs/html/search/variables_72.html | 26 + visualtest/docs/html/search/variables_72.js | 6 + visualtest/docs/html/search/variables_73.html | 26 + visualtest/docs/html/search/variables_73.js | 8 + visualtest/docs/html/search/variables_74.html | 26 + visualtest/docs/html/search/variables_74.js | 6 + visualtest/docs/html/search/variables_76.html | 26 + visualtest/docs/html/search/variables_76.js | 7 + .../struct_s_d_l___process_exit_status.html | 139 + .../html/struct_s_d_l___process_info.html | 102 + .../struct_s_d_l_visual_test___action.html | 175 + ...truct_s_d_l_visual_test___action_node.html | 139 + ...ruct_s_d_l_visual_test___action_queue.html | 154 + ...d_l_visual_test___exhaustive_variator.html | 154 + ...uct_s_d_l_visual_test___harness_state.html | 259 + ...s_d_l_visual_test___r_w_helper_buffer.html | 154 + ...t_s_d_l_visual_test___random_variator.html | 154 + ...ruct_s_d_l_visual_test___s_u_t_config.html | 139 + ...t_s_d_l_visual_test___s_u_t_int_range.html | 139 + ...ruct_s_d_l_visual_test___s_u_t_option.html | 217 + .../struct_s_d_l_visual_test___variation.html | 139 + .../struct_s_d_l_visual_test___variator.html | 144 + .../docs/html/sut__configparser_8c.html | 170 + visualtest/docs/html/sync_off.png | Bin 0 -> 853 bytes visualtest/docs/html/sync_on.png | Bin 0 -> 845 bytes visualtest/docs/html/tab_a.png | Bin 0 -> 142 bytes visualtest/docs/html/tab_b.png | Bin 0 -> 169 bytes visualtest/docs/html/tab_h.png | Bin 0 -> 177 bytes visualtest/docs/html/tab_s.png | Bin 0 -> 184 bytes visualtest/docs/html/tabs.css | 60 + visualtest/docs/html/testharness_8c.html | 240 + ..._d_l_visual_test___s_u_t_option_value.html | 184 + visualtest/docs/html/variator__common_8c.html | 233 + .../docs/html/variator__exhaustive_8c.html | 180 + visualtest/docs/html/variator__random_8c.html | 185 + visualtest/docs/html/variators_8c.html | 190 + visualtest/docs/html/windows__process_8c.html | 105 + .../docs/html/windows__screenshot_8c.html | 103 + ...l__visualtest__action__configparser_8h.tex | 193 + ...l__visualtest__exhaustive__variator_8h.tex | 69 + ...d_l__visualtest__harness__argparser_8h.tex | 80 + .../_s_d_l__visualtest__parsehelper_8h.tex | 53 + .../latex/_s_d_l__visualtest__process_8h.tex | 140 + ...s_d_l__visualtest__random__variator_8h.tex | 70 + .../_s_d_l__visualtest__screenshot_8h.tex | 58 + ..._d_l__visualtest__sut__configparser_8h.tex | 117 + ...s_d_l__visualtest__variator__common_8h.tex | 141 + .../_s_d_l__visualtest__variators_8h.tex | 71 + .../docs/latex/action__configparser_8c.tex | 123 + visualtest/docs/latex/annotated.tex | 18 + .../dir_244674c763b96fdad0a6ffe8d0250e08.tex | 8 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.tex | 37 + .../dir_88e6415a3128b404f1102a130772bdb6.tex | 8 + .../dir_a18918b93668b435612395bbc2e8b82b.tex | 8 + .../dir_d44c64559bbebec7f509842c48db8b23.tex | 30 + .../dir_f584182df4c69fab0b14563b4d535158.tex | 10 + .../dir_fe549de2418b81853b5f194edb4a7f34.tex | 8 + visualtest/docs/latex/doxygen.sty | 464 ++ visualtest/docs/latex/files.tex | 31 + .../docs/latex/harness__argparser_8c.tex | 64 + visualtest/docs/latex/index.tex | 80 + visualtest/docs/latex/linux__process_8c.tex | 16 + visualtest/docs/latex/make.bat | 25 + visualtest/docs/latex/mischelper_8c.tex | 26 + visualtest/docs/latex/parsehelper_8c.tex | 55 + visualtest/docs/latex/refman.tex | 189 + visualtest/docs/latex/rwhelper_8c.tex | 76 + visualtest/docs/latex/screenshot_8c.tex | 30 + .../struct_s_d_l___process_exit_status.tex | 31 + .../latex/struct_s_d_l___process_info.tex | 15 + .../struct_s_d_l_visual_test___action.tex | 47 + ...struct_s_d_l_visual_test___action_node.tex | 31 + ...truct_s_d_l_visual_test___action_queue.tex | 36 + ..._d_l_visual_test___exhaustive_variator.tex | 36 + ...ruct_s_d_l_visual_test___harness_state.tex | 71 + ..._s_d_l_visual_test___r_w_helper_buffer.tex | 36 + ...ct_s_d_l_visual_test___random_variator.tex | 36 + ...truct_s_d_l_visual_test___s_u_t_config.tex | 31 + ...ct_s_d_l_visual_test___s_u_t_int_range.tex | 31 + ...truct_s_d_l_visual_test___s_u_t_option.tex | 62 + .../struct_s_d_l_visual_test___variation.tex | 31 + .../struct_s_d_l_visual_test___variator.tex | 37 + .../docs/latex/sut__configparser_8c.tex | 50 + visualtest/docs/latex/testharness_8c.tex | 68 + ...s_d_l_visual_test___s_u_t_option_value.tex | 59 + visualtest/docs/latex/variator__common_8c.tex | 85 + .../docs/latex/variator__exhaustive_8c.tex | 54 + visualtest/docs/latex/variator__random_8c.tex | 54 + visualtest/docs/latex/variators_8c.tex | 54 + visualtest/docs/latex/windows__process_8c.tex | 12 + .../docs/latex/windows__screenshot_8c.tex | 10 + .../SDL_visualtest_action_configparser.h | 147 + .../SDL_visualtest_exhaustive_variator.h | 62 + .../SDL_visualtest_harness_argparser.h | 73 + .../include/SDL_visualtest_mischelper.h | 26 + .../include/SDL_visualtest_parsehelper.h | 44 + visualtest/include/SDL_visualtest_process.h | 111 + .../include/SDL_visualtest_random_variator.h | 59 + visualtest/include/SDL_visualtest_rwhelper.h | 85 + .../include/SDL_visualtest_screenshot.h | 50 + .../include/SDL_visualtest_sut_configparser.h | 103 + .../include/SDL_visualtest_variator_common.h | 120 + visualtest/include/SDL_visualtest_variators.h | 64 + visualtest/install-sh | 1 + visualtest/launch_harness.cmd | 2 + visualtest/launch_harness.sh | 6 + visualtest/missing | 1 + visualtest/src/action_configparser.c | 396 ++ visualtest/src/harness_argparser.c | 358 ++ visualtest/src/linux/linux_process.c | 199 + visualtest/src/mischelper.c | 28 + visualtest/src/parsehelper.c | 231 + visualtest/src/rwhelper.c | 131 + visualtest/src/screenshot.c | 136 + visualtest/src/sut_configparser.c | 232 + visualtest/src/testharness.c | 533 ++ visualtest/src/variator_common.c | 225 + visualtest/src/variator_exhaustive.c | 132 + visualtest/src/variator_random.c | 111 + visualtest/src/variators.c | 93 + visualtest/src/windows/windows_process.c | 284 + visualtest/src/windows/windows_screenshot.c | 349 ++ visualtest/stamp-h1 | 1 + visualtest/testsprite2_sample.actions | 3 + visualtest/testsprite2_sample.config | 6 + visualtest/testsprite2_sample.parameters | 29 + visualtest/unittest/testquit.actions | 1 + visualtest/unittest/testquit.c | 101 + visualtest/unittest/testquit.config | 5 + visualtest/unittest/testquit.parameters | 3 + 347 files changed, 33523 insertions(+) create mode 100755 VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj create mode 100755 VisualC/visualtest/visualtest_VS2012.vcxproj create mode 100755 visualtest/COPYING.txt create mode 100755 visualtest/Makefile.in create mode 100755 visualtest/README.txt create mode 100755 visualtest/acinclude.m4 create mode 100755 visualtest/autogen.sh create mode 100755 visualtest/compile create mode 100755 visualtest/config.h create mode 100755 visualtest/config.h.in create mode 100755 visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions create mode 100755 visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config create mode 100755 visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters create mode 100755 visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions create mode 100755 visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config create mode 100755 visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters create mode 100755 visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions create mode 100755 visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config create mode 100755 visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters create mode 100755 visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions create mode 100755 visualtest/configs/testsprite2_geometry/testsprite2_geometry.config create mode 100755 visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters create mode 100755 visualtest/configure create mode 100755 visualtest/configure.in create mode 100755 visualtest/depcomp create mode 100755 visualtest/docs/Doxyfile create mode 100755 visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__mischelper_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__process_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__process_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__random__variator_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__random__variator_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__rwhelper_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__screenshot_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__screenshot_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__variator__common_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__variator__common_8h_source.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__variators_8h.html create mode 100755 visualtest/docs/html/_s_d_l__visualtest__variators_8h_source.html create mode 100755 visualtest/docs/html/action__configparser_8c.html create mode 100755 visualtest/docs/html/annotated.html create mode 100755 visualtest/docs/html/bc_s.png create mode 100755 visualtest/docs/html/bdwn.png create mode 100755 visualtest/docs/html/classes.html create mode 100755 visualtest/docs/html/closed.png create mode 100755 visualtest/docs/html/config_8h_source.html create mode 100755 visualtest/docs/html/dir_244674c763b96fdad0a6ffe8d0250e08.html create mode 100755 visualtest/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100755 visualtest/docs/html/dir_88e6415a3128b404f1102a130772bdb6.html create mode 100755 visualtest/docs/html/dir_a18918b93668b435612395bbc2e8b82b.html create mode 100755 visualtest/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100755 visualtest/docs/html/dir_f584182df4c69fab0b14563b4d535158.html create mode 100755 visualtest/docs/html/dir_fe549de2418b81853b5f194edb4a7f34.html create mode 100755 visualtest/docs/html/doxygen.css create mode 100755 visualtest/docs/html/doxygen.png create mode 100755 visualtest/docs/html/dynsections.js create mode 100755 visualtest/docs/html/files.html create mode 100755 visualtest/docs/html/ftv2blank.png create mode 100755 visualtest/docs/html/ftv2cl.png create mode 100755 visualtest/docs/html/ftv2doc.png create mode 100755 visualtest/docs/html/ftv2folderclosed.png create mode 100755 visualtest/docs/html/ftv2folderopen.png create mode 100755 visualtest/docs/html/ftv2lastnode.png create mode 100755 visualtest/docs/html/ftv2link.png create mode 100755 visualtest/docs/html/ftv2mlastnode.png create mode 100755 visualtest/docs/html/ftv2mnode.png create mode 100755 visualtest/docs/html/ftv2mo.png create mode 100755 visualtest/docs/html/ftv2node.png create mode 100755 visualtest/docs/html/ftv2ns.png create mode 100755 visualtest/docs/html/ftv2plastnode.png create mode 100755 visualtest/docs/html/ftv2pnode.png create mode 100755 visualtest/docs/html/ftv2splitbar.png create mode 100755 visualtest/docs/html/ftv2vertline.png create mode 100755 visualtest/docs/html/functions.html create mode 100755 visualtest/docs/html/functions_vars.html create mode 100755 visualtest/docs/html/globals.html create mode 100755 visualtest/docs/html/globals_defs.html create mode 100755 visualtest/docs/html/globals_enum.html create mode 100755 visualtest/docs/html/globals_eval.html create mode 100755 visualtest/docs/html/globals_func.html create mode 100755 visualtest/docs/html/globals_type.html create mode 100755 visualtest/docs/html/harness__argparser_8c.html create mode 100755 visualtest/docs/html/index.html create mode 100755 visualtest/docs/html/jquery.js create mode 100755 visualtest/docs/html/linux__process_8c.html create mode 100755 visualtest/docs/html/mischelper_8c.html create mode 100755 visualtest/docs/html/nav_f.png create mode 100755 visualtest/docs/html/nav_g.png create mode 100755 visualtest/docs/html/nav_h.png create mode 100755 visualtest/docs/html/open.png create mode 100755 visualtest/docs/html/parsehelper_8c.html create mode 100755 visualtest/docs/html/rwhelper_8c.html create mode 100755 visualtest/docs/html/screenshot_8c.html create mode 100755 visualtest/docs/html/search/all_61.html create mode 100755 visualtest/docs/html/search/all_61.js create mode 100755 visualtest/docs/html/search/all_62.html create mode 100755 visualtest/docs/html/search/all_62.js create mode 100755 visualtest/docs/html/search/all_63.html create mode 100755 visualtest/docs/html/search/all_63.js create mode 100755 visualtest/docs/html/search/all_64.html create mode 100755 visualtest/docs/html/search/all_64.js create mode 100755 visualtest/docs/html/search/all_65.html create mode 100755 visualtest/docs/html/search/all_65.js create mode 100755 visualtest/docs/html/search/all_66.html create mode 100755 visualtest/docs/html/search/all_66.js create mode 100755 visualtest/docs/html/search/all_68.html create mode 100755 visualtest/docs/html/search/all_68.js create mode 100755 visualtest/docs/html/search/all_69.html create mode 100755 visualtest/docs/html/search/all_69.js create mode 100755 visualtest/docs/html/search/all_6b.html create mode 100755 visualtest/docs/html/search/all_6b.js create mode 100755 visualtest/docs/html/search/all_6c.html create mode 100755 visualtest/docs/html/search/all_6c.js create mode 100755 visualtest/docs/html/search/all_6d.html create mode 100755 visualtest/docs/html/search/all_6d.js create mode 100755 visualtest/docs/html/search/all_6e.html create mode 100755 visualtest/docs/html/search/all_6e.js create mode 100755 visualtest/docs/html/search/all_6f.html create mode 100755 visualtest/docs/html/search/all_6f.js create mode 100755 visualtest/docs/html/search/all_70.html create mode 100755 visualtest/docs/html/search/all_70.js create mode 100755 visualtest/docs/html/search/all_72.html create mode 100755 visualtest/docs/html/search/all_72.js create mode 100755 visualtest/docs/html/search/all_73.html create mode 100755 visualtest/docs/html/search/all_73.js create mode 100755 visualtest/docs/html/search/all_74.html create mode 100755 visualtest/docs/html/search/all_74.js create mode 100755 visualtest/docs/html/search/all_76.html create mode 100755 visualtest/docs/html/search/all_76.js create mode 100755 visualtest/docs/html/search/all_77.html create mode 100755 visualtest/docs/html/search/all_77.js create mode 100755 visualtest/docs/html/search/classes_73.html create mode 100755 visualtest/docs/html/search/classes_73.js create mode 100755 visualtest/docs/html/search/close.png create mode 100755 visualtest/docs/html/search/defines_61.html create mode 100755 visualtest/docs/html/search/defines_61.js create mode 100755 visualtest/docs/html/search/defines_64.html create mode 100755 visualtest/docs/html/search/defines_64.js create mode 100755 visualtest/docs/html/search/defines_6b.html create mode 100755 visualtest/docs/html/search/defines_6b.js create mode 100755 visualtest/docs/html/search/defines_6d.html create mode 100755 visualtest/docs/html/search/defines_6d.js create mode 100755 visualtest/docs/html/search/defines_73.html create mode 100755 visualtest/docs/html/search/defines_73.js create mode 100755 visualtest/docs/html/search/defines_74.html create mode 100755 visualtest/docs/html/search/defines_74.js create mode 100755 visualtest/docs/html/search/enums_73.html create mode 100755 visualtest/docs/html/search/enums_73.js create mode 100755 visualtest/docs/html/search/enumvalues_73.html create mode 100755 visualtest/docs/html/search/enumvalues_73.js create mode 100755 visualtest/docs/html/search/files_61.html create mode 100755 visualtest/docs/html/search/files_61.js create mode 100755 visualtest/docs/html/search/files_68.html create mode 100755 visualtest/docs/html/search/files_68.js create mode 100755 visualtest/docs/html/search/files_6c.html create mode 100755 visualtest/docs/html/search/files_6c.js create mode 100755 visualtest/docs/html/search/files_6d.html create mode 100755 visualtest/docs/html/search/files_6d.js create mode 100755 visualtest/docs/html/search/files_70.html create mode 100755 visualtest/docs/html/search/files_70.js create mode 100755 visualtest/docs/html/search/files_72.html create mode 100755 visualtest/docs/html/search/files_72.js create mode 100755 visualtest/docs/html/search/files_73.html create mode 100755 visualtest/docs/html/search/files_73.js create mode 100755 visualtest/docs/html/search/files_74.html create mode 100755 visualtest/docs/html/search/files_74.js create mode 100755 visualtest/docs/html/search/files_76.html create mode 100755 visualtest/docs/html/search/files_76.js create mode 100755 visualtest/docs/html/search/files_77.html create mode 100755 visualtest/docs/html/search/files_77.js create mode 100755 visualtest/docs/html/search/functions_6d.html create mode 100755 visualtest/docs/html/search/functions_6d.js create mode 100755 visualtest/docs/html/search/functions_73.html create mode 100755 visualtest/docs/html/search/functions_73.js create mode 100755 visualtest/docs/html/search/mag_sel.png create mode 100755 visualtest/docs/html/search/nomatches.html create mode 100755 visualtest/docs/html/search/pages_76.html create mode 100755 visualtest/docs/html/search/pages_76.js create mode 100755 visualtest/docs/html/search/search.css create mode 100755 visualtest/docs/html/search/search.js create mode 100755 visualtest/docs/html/search/search_l.png create mode 100755 visualtest/docs/html/search/search_m.png create mode 100755 visualtest/docs/html/search/search_r.png create mode 100755 visualtest/docs/html/search/typedefs_73.html create mode 100755 visualtest/docs/html/search/typedefs_73.js create mode 100755 visualtest/docs/html/search/variables_61.html create mode 100755 visualtest/docs/html/search/variables_61.js create mode 100755 visualtest/docs/html/search/variables_62.html create mode 100755 visualtest/docs/html/search/variables_62.js create mode 100755 visualtest/docs/html/search/variables_63.html create mode 100755 visualtest/docs/html/search/variables_63.js create mode 100755 visualtest/docs/html/search/variables_64.html create mode 100755 visualtest/docs/html/search/variables_64.js create mode 100755 visualtest/docs/html/search/variables_65.html create mode 100755 visualtest/docs/html/search/variables_65.js create mode 100755 visualtest/docs/html/search/variables_66.html create mode 100755 visualtest/docs/html/search/variables_66.js create mode 100755 visualtest/docs/html/search/variables_69.html create mode 100755 visualtest/docs/html/search/variables_69.js create mode 100755 visualtest/docs/html/search/variables_6d.html create mode 100755 visualtest/docs/html/search/variables_6d.js create mode 100755 visualtest/docs/html/search/variables_6e.html create mode 100755 visualtest/docs/html/search/variables_6e.js create mode 100755 visualtest/docs/html/search/variables_6f.html create mode 100755 visualtest/docs/html/search/variables_6f.js create mode 100755 visualtest/docs/html/search/variables_70.html create mode 100755 visualtest/docs/html/search/variables_70.js create mode 100755 visualtest/docs/html/search/variables_72.html create mode 100755 visualtest/docs/html/search/variables_72.js create mode 100755 visualtest/docs/html/search/variables_73.html create mode 100755 visualtest/docs/html/search/variables_73.js create mode 100755 visualtest/docs/html/search/variables_74.html create mode 100755 visualtest/docs/html/search/variables_74.js create mode 100755 visualtest/docs/html/search/variables_76.html create mode 100755 visualtest/docs/html/search/variables_76.js create mode 100755 visualtest/docs/html/struct_s_d_l___process_exit_status.html create mode 100755 visualtest/docs/html/struct_s_d_l___process_info.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___action.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___action_node.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___action_queue.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___exhaustive_variator.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___harness_state.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___r_w_helper_buffer.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___random_variator.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_config.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_int_range.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_option.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___variation.html create mode 100755 visualtest/docs/html/struct_s_d_l_visual_test___variator.html create mode 100755 visualtest/docs/html/sut__configparser_8c.html create mode 100755 visualtest/docs/html/sync_off.png create mode 100755 visualtest/docs/html/sync_on.png create mode 100755 visualtest/docs/html/tab_a.png create mode 100755 visualtest/docs/html/tab_b.png create mode 100755 visualtest/docs/html/tab_h.png create mode 100755 visualtest/docs/html/tab_s.png create mode 100755 visualtest/docs/html/tabs.css create mode 100755 visualtest/docs/html/testharness_8c.html create mode 100755 visualtest/docs/html/union_s_d_l_visual_test___s_u_t_option_value.html create mode 100755 visualtest/docs/html/variator__common_8c.html create mode 100755 visualtest/docs/html/variator__exhaustive_8c.html create mode 100755 visualtest/docs/html/variator__random_8c.html create mode 100755 visualtest/docs/html/variators_8c.html create mode 100755 visualtest/docs/html/windows__process_8c.html create mode 100755 visualtest/docs/html/windows__screenshot_8c.html create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__action__configparser_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__exhaustive__variator_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__harness__argparser_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__parsehelper_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__process_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__random__variator_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__screenshot_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__sut__configparser_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__variator__common_8h.tex create mode 100755 visualtest/docs/latex/_s_d_l__visualtest__variators_8h.tex create mode 100755 visualtest/docs/latex/action__configparser_8c.tex create mode 100755 visualtest/docs/latex/annotated.tex create mode 100755 visualtest/docs/latex/dir_244674c763b96fdad0a6ffe8d0250e08.tex create mode 100755 visualtest/docs/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex create mode 100755 visualtest/docs/latex/dir_88e6415a3128b404f1102a130772bdb6.tex create mode 100755 visualtest/docs/latex/dir_a18918b93668b435612395bbc2e8b82b.tex create mode 100755 visualtest/docs/latex/dir_d44c64559bbebec7f509842c48db8b23.tex create mode 100755 visualtest/docs/latex/dir_f584182df4c69fab0b14563b4d535158.tex create mode 100755 visualtest/docs/latex/dir_fe549de2418b81853b5f194edb4a7f34.tex create mode 100755 visualtest/docs/latex/doxygen.sty create mode 100755 visualtest/docs/latex/files.tex create mode 100755 visualtest/docs/latex/harness__argparser_8c.tex create mode 100755 visualtest/docs/latex/index.tex create mode 100755 visualtest/docs/latex/linux__process_8c.tex create mode 100755 visualtest/docs/latex/make.bat create mode 100755 visualtest/docs/latex/mischelper_8c.tex create mode 100755 visualtest/docs/latex/parsehelper_8c.tex create mode 100755 visualtest/docs/latex/refman.tex create mode 100755 visualtest/docs/latex/rwhelper_8c.tex create mode 100755 visualtest/docs/latex/screenshot_8c.tex create mode 100755 visualtest/docs/latex/struct_s_d_l___process_exit_status.tex create mode 100755 visualtest/docs/latex/struct_s_d_l___process_info.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___action.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___action_node.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___action_queue.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___exhaustive_variator.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___harness_state.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___r_w_helper_buffer.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___random_variator.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_config.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_int_range.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_option.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___variation.tex create mode 100755 visualtest/docs/latex/struct_s_d_l_visual_test___variator.tex create mode 100755 visualtest/docs/latex/sut__configparser_8c.tex create mode 100755 visualtest/docs/latex/testharness_8c.tex create mode 100755 visualtest/docs/latex/union_s_d_l_visual_test___s_u_t_option_value.tex create mode 100755 visualtest/docs/latex/variator__common_8c.tex create mode 100755 visualtest/docs/latex/variator__exhaustive_8c.tex create mode 100755 visualtest/docs/latex/variator__random_8c.tex create mode 100755 visualtest/docs/latex/variators_8c.tex create mode 100755 visualtest/docs/latex/windows__process_8c.tex create mode 100755 visualtest/docs/latex/windows__screenshot_8c.tex create mode 100755 visualtest/include/SDL_visualtest_action_configparser.h create mode 100755 visualtest/include/SDL_visualtest_exhaustive_variator.h create mode 100755 visualtest/include/SDL_visualtest_harness_argparser.h create mode 100755 visualtest/include/SDL_visualtest_mischelper.h create mode 100755 visualtest/include/SDL_visualtest_parsehelper.h create mode 100755 visualtest/include/SDL_visualtest_process.h create mode 100755 visualtest/include/SDL_visualtest_random_variator.h create mode 100755 visualtest/include/SDL_visualtest_rwhelper.h create mode 100755 visualtest/include/SDL_visualtest_screenshot.h create mode 100755 visualtest/include/SDL_visualtest_sut_configparser.h create mode 100755 visualtest/include/SDL_visualtest_variator_common.h create mode 100755 visualtest/include/SDL_visualtest_variators.h create mode 100755 visualtest/install-sh create mode 100755 visualtest/launch_harness.cmd create mode 100755 visualtest/launch_harness.sh create mode 100755 visualtest/missing create mode 100755 visualtest/src/action_configparser.c create mode 100755 visualtest/src/harness_argparser.c create mode 100755 visualtest/src/linux/linux_process.c create mode 100755 visualtest/src/mischelper.c create mode 100755 visualtest/src/parsehelper.c create mode 100755 visualtest/src/rwhelper.c create mode 100755 visualtest/src/screenshot.c create mode 100755 visualtest/src/sut_configparser.c create mode 100755 visualtest/src/testharness.c create mode 100755 visualtest/src/variator_common.c create mode 100755 visualtest/src/variator_exhaustive.c create mode 100755 visualtest/src/variator_random.c create mode 100755 visualtest/src/variators.c create mode 100755 visualtest/src/windows/windows_process.c create mode 100755 visualtest/src/windows/windows_screenshot.c create mode 100755 visualtest/stamp-h1 create mode 100755 visualtest/testsprite2_sample.actions create mode 100755 visualtest/testsprite2_sample.config create mode 100755 visualtest/testsprite2_sample.parameters create mode 100755 visualtest/unittest/testquit.actions create mode 100755 visualtest/unittest/testquit.c create mode 100755 visualtest/unittest/testquit.config create mode 100755 visualtest/unittest/testquit.parameters diff --git a/VisualC/SDL_VS2012.sln b/VisualC/SDL_VS2012.sln index 3ac7b68f29..6edc416dff 100644 --- a/VisualC/SDL_VS2012.sln +++ b/VisualC/SDL_VS2012.sln @@ -103,6 +103,19 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testj {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "visualtest", "visualtest\visualtest_VS2012.vcxproj", "{13DDF23A-4A8F-4AF9-9734-CC09D9157924}" + ProjectSection(ProjectDependencies) = postProject + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8} = {1D12C737-7C71-45CE-AE2C-AAB47B690BC8} + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} = {40FB7794-D3C3-4CFE-BCF4-A80C96635682} + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "visualtest", "visualtest", "{68C17E4D-1073-48DB-A96C-C36FE8705F1B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testquit", "visualtest\unittest\testquit\testquit_VS2012.vcxproj", "{1D12C737-7C71-45CE-AE2C-AAB47B690BC8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -253,6 +266,22 @@ Global {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|Win32.Build.0 = Release|Win32 {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|x64.ActiveCfg = Release|x64 {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|x64.Build.0 = Release|x64 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Debug|Win32.ActiveCfg = Debug|Win32 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Debug|Win32.Build.0 = Debug|Win32 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Debug|x64.ActiveCfg = Debug|x64 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Debug|x64.Build.0 = Debug|x64 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Release|Win32.ActiveCfg = Release|Win32 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Release|Win32.Build.0 = Release|Win32 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Release|x64.ActiveCfg = Release|x64 + {13DDF23A-4A8F-4AF9-9734-CC09D9157924}.Release|x64.Build.0 = Release|x64 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Debug|Win32.ActiveCfg = Debug|Win32 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Debug|Win32.Build.0 = Debug|Win32 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Debug|x64.ActiveCfg = Debug|x64 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Debug|x64.Build.0 = Debug|x64 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Release|Win32.ActiveCfg = Release|Win32 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Release|Win32.Build.0 = Release|Win32 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Release|x64.ActiveCfg = Release|x64 + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -274,5 +303,7 @@ Global {55812185-D13C-4022-9C81-32E0F4A08336} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} {55812185-D13C-4022-9C81-32E0F4A08996} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} {55812185-D13C-4022-9C81-32E0F4A08BCC} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {13DDF23A-4A8F-4AF9-9734-CC09D9157924} = {68C17E4D-1073-48DB-A96C-C36FE8705F1B} + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8} = {68C17E4D-1073-48DB-A96C-C36FE8705F1B} EndGlobalSection EndGlobal diff --git a/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj b/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj new file mode 100755 index 0000000000..08a2684de4 --- /dev/null +++ b/VisualC/visualtest/unittest/testquit/testquit_VS2012.vcxproj @@ -0,0 +1,232 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testquit + testquit + {1D12C737-7C71-45CE-AE2C-AAB47B690BC8} + + + + Application + false + v110 + + + Application + false + MultiByte + v110 + + + Application + false + v110 + + + Application + false + v110 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL and data files + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/visualtest/visualtest_VS2012.vcxproj b/VisualC/visualtest/visualtest_VS2012.vcxproj new file mode 100755 index 0000000000..b7596b87cf --- /dev/null +++ b/VisualC/visualtest/visualtest_VS2012.vcxproj @@ -0,0 +1,308 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + visualtest + visualtest + {13DDF23A-4A8F-4AF9-9734-CC09D9157924} + + + + Application + false + v110 + + + Application + false + MultiByte + v110 + + + Application + false + v110 + + + Application + false + v110 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + testharness + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\include;..\..\visualtest\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + copy "$(SolutionDir)SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)SDL2.dll" + copy "$(SolutionDir)..\test\icon.bmp" "$(TargetDir)icon.bmp" + copy "$(SolutionDir)tests\testsprite2\$(Platform)\$(Configuration)\testsprite2.exe" "$(TargetDir)testsprite2.exe" + copy "$(SolutionDir)visualtest\unittest\testquit\$(Platform)\$(Configuration)\testquit.exe" "$(TargetDir)testquit.exe" + copy /y "$(SolutionDir)..\visualtest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.actions" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.actions" "$(TargetDir)" + + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\include;..\..\visualtest\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + copy "$(SolutionDir)SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)SDL2.dll" + copy "$(SolutionDir)..\test\icon.bmp" "$(TargetDir)icon.bmp" + copy "$(SolutionDir)tests\testsprite2\$(Platform)\$(Configuration)\testsprite2.exe" "$(TargetDir)testsprite2.exe" + copy "$(SolutionDir)visualtest\unittest\testquit\$(Platform)\$(Configuration)\testquit.exe" "$(TargetDir)testquit.exe" + copy /y "$(SolutionDir)..\visualtest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.actions" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.actions" "$(TargetDir)" + + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\include;..\..\visualtest\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;Shlwapi.lib;%(AdditionalDependencies) + + + + copy "$(SolutionDir)SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)SDL2.dll" + copy "$(SolutionDir)..\test\icon.bmp" "$(TargetDir)icon.bmp" + copy "$(SolutionDir)tests\testsprite2\$(Platform)\$(Configuration)\testsprite2.exe" "$(TargetDir)testsprite2.exe" + copy "$(SolutionDir)visualtest\unittest\testquit\$(Platform)\$(Configuration)\testquit.exe" "$(TargetDir)testquit.exe" + copy /y "$(SolutionDir)..\visualtest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.actions" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.actions" "$(TargetDir)" + + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\include;..\..\visualtest\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + + copy "$(SolutionDir)SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)SDL2.dll" + copy "$(SolutionDir)..\test\icon.bmp" "$(TargetDir)icon.bmp" + copy "$(SolutionDir)tests\testsprite2\$(Platform)\$(Configuration)\testsprite2.exe" "$(TargetDir)testsprite2.exe" + copy "$(SolutionDir)visualtest\unittest\testquit\$(Platform)\$(Configuration)\testquit.exe" "$(TargetDir)testquit.exe" + copy /y "$(SolutionDir)..\visualtest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\*.actions" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.config" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.parameters" "$(TargetDir)" + copy /y "$(SolutionDir)..\visualtest\unittest\*.actions" "$(TargetDir)" + + + + Copy SDL and data files + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/visualtest/COPYING.txt b/visualtest/COPYING.txt new file mode 100755 index 0000000000..05460c3de7 --- /dev/null +++ b/visualtest/COPYING.txt @@ -0,0 +1,18 @@ +Visual and Interactive Test Automation for SDL 2.0 +Copyright (C) 2013 Apoorv Upreti + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. \ No newline at end of file diff --git a/visualtest/Makefile.in b/visualtest/Makefile.in new file mode 100755 index 0000000000..2efcdb1c89 --- /dev/null +++ b/visualtest/Makefile.in @@ -0,0 +1,37 @@ +# Makefile to build the SDL tests +srcdir = @srcdir@ +CC = @CC@ +EXE = @EXE@ +CFLAGS = @CFLAGS@ -I../include -I./include +LIBS = @LIBS@ +TARGETS = \ + testharness$(EXE) \ + testquit$(EXE) +all: Makefile $(TARGETS) +Makefile: $(srcdir)/Makefile.in + $(SHELL) config.status $@ +testharness$(EXE): $(srcdir)/src/action_configparser.c \ + $(srcdir)/src/harness_argparser.c \ + $(srcdir)/src/rwhelper.c \ + $(srcdir)/src/testharness.c \ + $(srcdir)/src/variator_exhaustive.c \ + $(srcdir)/src/variators.c \ + $(srcdir)/src/screenshot.c \ + $(srcdir)/src/harness_argparser.c \ + $(srcdir)/src/sut_configparser.c \ + $(srcdir)/src/variator_common.c \ + $(srcdir)/src/variator_random.c \ + $(srcdir)/src/parsehelper.c \ + $(srcdir)/src/mischelper.c \ + $(srcdir)/src/linux/linux_process.c \ + $(srcdir)/src/windows/windows_process.c \ + $(srcdir)/src/windows/windows_screenshot.c + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) +testquit$(EXE): $(srcdir)/unittest/testquit.c + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) +clean: + rm -f $(TARGETS) +distclean: clean + rm -f Makefile + rm -f config.status config.cache config.log + rm -rf $(srcdir)/autom4te* diff --git a/visualtest/README.txt b/visualtest/README.txt new file mode 100755 index 0000000000..f7718ad78a --- /dev/null +++ b/visualtest/README.txt @@ -0,0 +1,214 @@ +/*! + +\mainpage Visual and Interactive Test Automation for SDL 2.0 + +\section license_sec License +Check the file \c COPYING.txt for licensing information. + +\section intro_sec Introduction +The goal of this GSoC project is to automate the testing of testsprite2. +testsprite2 takes 26 parameters which have thousands of valid combinations and is +used to validate SDL's window, mouse and rendering behaviour. By having a test +harness that runs testsprite2 with various command line argument strings and +validates the output for each run, we can make testing an easier task for +maintainers, contributors and testers. The test harness can be used by a continuous +integration system (like buildbot or jenkins) to validate SDL after checkins. + +SDL Homepage: http://libsdl.org/ + +\section build_sec Building + +\subsection build_linux Building on Linux/Cygwin +./autogen.sh; ./configure; make; + +\subsection build_windows Building on Windows +Use the Visual Studio solution under \c SDL/VisualC/visualtest. + +\section docs_sec Documentation +Documentation is available via Doxygen. To build the documentation, cd to the +SDL/visualtest/docs directory and run \c doxygen. A good starting point for +exploring the documentation is \c SDL/visualtest/docs/html/index.html + +\section usage_sec Usage +To see all the options supported by the test harness, just run \c testharness +with no arguments. + +At the moment the following options are supported: +\li \c sutapp - Path to the system under test (SUT) application +\li \c sutargs - Launch the SUT with the specified arguments string +\li \c timeout - The maximum time after which the SUT process will be killed; + passed as hh:mm:ss; default 00:01:00 +\li \c variator - Which variator to use; see \ref variators_sec +\li \c num-variations - The number of variations to run for; taken to be + 1 for the random variator and ALL for the exhaustive variator by default +\li \c no-launch - Just print the arguments string for each variation without + launching the SUT or performing any actions +\li \c parameter-config - A config file that describes the command line parameters + supported by the SUT; see \ref paramconfig_sec or the sample *.parameters files + for more details +\li \c action-config - A config file with a list of actions to be performed while + the SUT is running; see \ref actionconfig_sec or the sample *.actions files +\li \c output-dir - Path to the directory where screenshots should be saved; is + created if it doesn't exist; taken to be "./output" by default +\li \c verify-dir - Path to the directory with the verification images; taken to + be "./verify" by default + +Paths can be relative or absolute. + +Alternatively, the options can be passed as a config file for convenience: + +testharness \-\-config testsprite2_sample.config + +For a sample, take a look at the *.config files in this repository. + +We can also pass a config file and override certain options as necessary: +testharness \-\-config testsprite2_sample.config \-\-num-variations 10 + +Note: You may find it convenient to copy the SUT executable along with any +resources to the test harness directory. Also note that testsprite2 and its +resources (icon.bmp) are automatically copied when using the Visual Studio +solution. + +\subsection usageexamples_subsec Usage examples: + +Passing a custom arguments string: +testharness \-\-sutapp testsprite2 \-\-sutargs "\-\-cyclecolor \-\-blend mod +\-\-iterations 2" \-\-action-config xyz.actions + +Using the random variator: +testharness \-\-sutapp testsprite2 \-\-variator random \-\-num-variations 5 +\-\-parameter-config xyz.parameters \-\-action-config xyz.actions + +\subsection config_subsec Config Files +Config files are an alternate way to pass parameters to the test harness. We +describe the paramters in a config file and pass that to the test harness using +the \-\-config option. The config file consists of lines of the form "x=y" where +x is an option and y is it's value. For boolean options, we simply give the name +of the option to indicate that it is to be passed to the testharness. + +The hash '#' character can be used to start a comment from that point to the end +of the line. + +\section paramconfig_sec The SUT Parameters File +To generate variations we need to describe the parameters the will be passed to +the SUT. This description is given in a parameters file. Each line of the parameters +file (except the blank lines) represents one command line option with five +comma separated fields: +name, type, values, required, categories + +\li \c name is the name of the option, e.g., \c \-\-cyclecolor. +\li \c type can have one of three values - integer, boolean and enum. +\li \c values - for integer options this is the valid range of values the option + can take, i.e., [min max]. For enum options this is a list of strings that + the option can take, e.g., [val1 val2 val3]. For boolean options this field + is ignored. +\li \c required - true if the option is required, false otherwise. +\li \c categories - a list of categories that the option belongs to. For example, + [video mouse audio] + +Just like with config files, hash characters can be used to start comments. + +\subsection additionalnotes_subsec Additional Notes + +\li If you want to have an option that always takes a certain value, use an enum + with only one value. +\li Currently there isn't any way to turn an option off, i.e., all options will + be included in the command line options string that is generated using the + config. If you don't want an option to be passed to the SUT, remove it from + the config file or comment it out. + +\section variators_sec Variators +Variators are the mechanism by which we generate strings of command line arguments +to test the SUT with. A variator is quite simply an iterator that iterates through +different variations of command line options. There are two variators supported at +the moment: +\li \b Exhaustive - Generate all possible combinations of command line arguments + that are valid. +\li \b Random - Generate a random variation each time the variator is called. + +As an example, let's try a simple .parameters file:\n + +\-\-blend, enum, [add mod], false, [] \n +\-\-fullscreen, boolean, [], false, [] + + +The exhaustive variator would generate the following four variations:\n + +\-\-blend add \n +\-\-blend mod \n +\-\-blend add \-\-fullscreen \n +\-\-blend mod \-\-fullscreen \n + + +The random variator would simply generate a random variation like the following:\n +\-\-blend mod + +\section actionconfig_sec The Actions File +Once the SUT process has been launched, automated testing happens using a mechanism +called actions. A list of actions is read from a file and each action is performed +on the SUT process sequentially. Each line in the actions file describes an action. +The format for an action is hh:mm:ss ACTION_NAME additional parameters. +There are five actions supported at the moment: +\li \b SCREENSHOT - Takes a screenshot of each window owned by the SUT process. The + images are saved as \c [hash]_[i].bmp where \c [hash] is the 32 character long + hexadecimal MD5 hash of the arguments string that was passed to the SUT while + launching it and \c i is the window number. i = 1 is an exceptional case + where the \c _[i] is dropped and the filename is simply \c [hash].bmp\n + Note: The screenshots are only of the window's client area. +\li \b VERIFY - Verifies the screenshots taken by the last SCREENSHOT action by + comparing them against a verification image. Each \c [hash]_i.bmp image output + by the SCREENSHOT action is compared against a \c [hash].bmp image in the + verify-dir. +\li \b QUIT - Gracefully quits the SUT process. On Windows this means sending a + WM_CLOSE message to each window owned by the SUT process. On Linux it means + sending a SIGQUIT signal to the SUT process. +\li \b KILL - Forcefully kills the SUT process. This is useful when the SUT process + doesn't respond to the QUIT action. +\li LAUNCH [/path/to/executable] [args] - Runs an executable with \c [args] + as the arguments string. + +Just like with config files, hash characters can be used to start comments. + +\section contint_sec Continuous Integration (CI) +One of the goals of the project was to create a test harness that integrates +with CI systems to provide automated visual and interactive testing to SDL. + +At the moment the test harness can be run in two modes that are useful for CI: +\li Crash testing mode - launch the SUT with every variation and all parameters, + report to the CI if there's a crash +\li Visual testing mode - launch and visually verify the SUT for a smaller subset + of the parameters + +Look at the launch_harness.sh/launch_harness.cmd for an example scripts that run the +test harness for all variations with all parameters and report an error on a crash. +The script uses the testsprite2_crashtest config, so remember to copy those files +over to the test harness executable directory along with the script. + +\section todo_sec TODOs +\li Allow specifying a clipping box along with the VERIFY action, i.e., hh:mm:ss + VERIFY x, y, w, h +\li Add support for spaces between the equals sign in test harness config files +\li Implement the SCREENSHOT action on Linux +\li Add a pairwise variator +\li Add actions to inject keyboard/mouse events +\li Add actions to manipulate the SUT window, e.g., minimize, restore, resize +\li Add support to load and save screenshots as .pngs instead of .bmps + +\section issues_sec Known Issues +\li The QUIT action does not work on a testsprite2 process with multiple windows. + This appears to be an issue with testsprite2. +\li The SCREENSHOT action doesn't capture the testsprite2 window correctly if the + --fullscreen option is supplied. It works with --fullscreen-desktop, however. + +\section moreinfo_sec More Information + +Author Contact Info:\n +Apoorv Upreti \c \ + +Other useful links: +- Project Repository: https://bitbucket.org/nerdap/sdlvisualtest +- Project Wiki: https://github.com/nerdap/autotestsprite2/wiki +- Project Blog: http://nerdap.github.io +- Verification images for testsprite2_blendmodes: https://www.dropbox.com/s/nm02aem76m812ng/testsprite2_blendmodes.zip +- Verification images for testsprite2_geometry: https://www.dropbox.com/s/csypwryopaslpaf/testsprite2_geometry.zip +*/ diff --git a/visualtest/acinclude.m4 b/visualtest/acinclude.m4 new file mode 100755 index 0000000000..ead69e5149 --- /dev/null +++ b/visualtest/acinclude.m4 @@ -0,0 +1,359 @@ +# Configure paths for SDL +# Sam Lantinga 9/21/99 +# stolen from Manish Singh +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +# serial 1 + +dnl AM_PATH_SDL([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for SDL, and define SDL_CFLAGS and SDL_LIBS +dnl +AC_DEFUN([AM_PATH_SDL2], +[dnl +dnl Get the cflags and libraries from the sdl2-config script +dnl +AC_ARG_WITH(sdl-prefix,[ --with-sdl-prefix=PFX Prefix where SDL is installed (optional)], + sdl_prefix="$withval", sdl_prefix="") +AC_ARG_WITH(sdl-exec-prefix,[ --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional)], + sdl_exec_prefix="$withval", sdl_exec_prefix="") +AC_ARG_ENABLE(sdltest, [ --disable-sdltest Do not try to compile and run a test SDL program], + , enable_sdltest=yes) + + min_sdl_version=ifelse([$1], ,0.9.0,$1) + + if test "x$sdl_prefix$sdl_exec_prefix" = x ; then + PKG_CHECK_MODULES([SDL], [sdl2 >= $min_sdl_version], + [sdl_pc=yes], + [sdl_pc=no]) + else + sdl_pc=no + if test x$sdl_exec_prefix != x ; then + sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl2-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl2-config + fi + fi + fi + + if test "x$sdl_pc" = xyes ; then + no_sdl="" + SDL_CONFIG="pkg-config sdl2" + else + as_save_PATH="$PATH" + if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then + PATH="$prefix/bin:$prefix/usr/bin:$PATH" + fi + AC_PATH_PROG(SDL_CONFIG, sdl2-config, no, [$PATH]) + PATH="$as_save_PATH" + AC_MSG_CHECKING(for SDL - version >= $min_sdl_version) + no_sdl="" + + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_sdltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" +dnl +dnl Now check if the installed SDL is sufficiently new. (Also sanity +dnl checks the results of sdl2-config to some extent +dnl + rm -f conf.sdltest + AC_TRY_RUN([ +#include +#include +#include +#include "SDL.h" + +char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (int argc, char *argv[]) +{ + int major, minor, micro; + char *tmp_version; + + /* This hangs on some systems (?) + system ("touch conf.sdltest"); + */ + { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_sdl_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_sdl_version"); + exit(1); + } + + if (($sdl_major_version > major) || + (($sdl_major_version == major) && ($sdl_minor_version > minor)) || + (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); + printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If sdl2-config was wrong, set the environment variable SDL_CONFIG\n"); + printf("*** to point to the correct copy of sdl2-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} + +],, no_sdl=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then + AC_MSG_RESULT(yes) + else + AC_MSG_RESULT(no) + fi + fi + if test "x$no_sdl" = x ; then + ifelse([$2], , :, [$2]) + else + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl2-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl2-config." + else + if test -f conf.sdltest ; then + : + else + echo "*** Could not run SDL test program, checking why..." + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + AC_TRY_LINK([ +#include +#include "SDL.h" + +int main(int argc, char *argv[]) +{ return 0; } +#undef main +#define main K_and_R_C_main +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl2-config script: $SDL_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + SDL_CFLAGS="" + SDL_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(SDL_CFLAGS) + AC_SUBST(SDL_LIBS) + rm -f conf.sdltest +]) +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES diff --git a/visualtest/autogen.sh b/visualtest/autogen.sh new file mode 100755 index 0000000000..939f34c0f3 --- /dev/null +++ b/visualtest/autogen.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# +# Regenerate configuration files +cp acinclude.m4 aclocal.m4 +found=false +for autoconf in autoconf autoconf259 autoconf-2.59 +do if which $autoconf >/dev/null 2>&1; then $autoconf && found=true; break; fi +done +if test x$found = xfalse; then + echo "Couldn't find autoconf, aborting" + exit 1 +fi diff --git a/visualtest/compile b/visualtest/compile new file mode 100755 index 0000000000..cf0edba287 --- /dev/null +++ b/visualtest/compile @@ -0,0 +1 @@ +/usr/share/automake-1.11/compile \ No newline at end of file diff --git a/visualtest/config.h b/visualtest/config.h new file mode 100755 index 0000000000..2d6d5cfbc6 --- /dev/null +++ b/visualtest/config.h @@ -0,0 +1,23 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "apoorvupreti@gmail.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "sdlvisualtest" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "sdlvisualtest 0.01" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "sdlvisualtest" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.01" + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ diff --git a/visualtest/config.h.in b/visualtest/config.h.in new file mode 100755 index 0000000000..40b5b8a29c --- /dev/null +++ b/visualtest/config.h.in @@ -0,0 +1,22 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const diff --git a/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions b/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions new file mode 100755 index 0000000000..ef54e86b48 --- /dev/null +++ b/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.actions @@ -0,0 +1,3 @@ +00:00:03 SCREENSHOT +00:00:06 VERIFY +00:00:09 QUIT \ No newline at end of file diff --git a/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config b/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config new file mode 100755 index 0000000000..0d707bcbc1 --- /dev/null +++ b/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.config @@ -0,0 +1,5 @@ +parameter-config=testsprite2_blendmodes.parameters +variator=exhaustive +sutapp=testsprite2 +timeout=00:00:15 +action-config=testsprite2_blendmodes.actions \ No newline at end of file diff --git a/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters b/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters new file mode 100755 index 0000000000..a5df29c8cc --- /dev/null +++ b/visualtest/configs/testsprite2_blendmodes/testsprite2_blendmodes.parameters @@ -0,0 +1,5 @@ +# parameter name, type, value range, required, categories +--blend, enum, [none blend add mod], false, [] +--cyclecolor, boolean, [], false, [] +--cyclealpha, boolean, [], false, [] +--iterations, integer, [1000 1000], true, [] \ No newline at end of file diff --git a/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions b/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions new file mode 100755 index 0000000000..75af9d75de --- /dev/null +++ b/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.actions @@ -0,0 +1 @@ +00:00:02 QUIT \ No newline at end of file diff --git a/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config b/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config new file mode 100755 index 0000000000..c8f07ca9f5 --- /dev/null +++ b/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.config @@ -0,0 +1,5 @@ +parameter-config=testsprite2_crashtest.parameters +variator=exhaustive +sutapp=testsprite2 +timeout=00:00:10 +action-config=testsprite2_crashtest.actions \ No newline at end of file diff --git a/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters b/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters new file mode 100755 index 0000000000..e89ce60abe --- /dev/null +++ b/visualtest/configs/testsprite2_crashtest/testsprite2_crashtest.parameters @@ -0,0 +1,24 @@ +# parameter name, type, value range, required, categories +--display, integer, [1 5], false, [] +--fullscreen, boolean, [], false, [] +--fullscreen-desktop, boolean, [], false, [] +--title, enum, [vartest bartest footest], false, [] +--icon, enum, [icon.bmp], false, [] +--center, boolean, [], false, [] +--position, enum, [300,300], false, [] +--geometry, enum, [500x500], false, [] +--min-geometry, enum, [100x100 200x200], false, [] +--max-geometry, enum, [600x600 700x700], false, [] +--logical, enum, [500x500 550x450], false, [] +--scale, integer, [1 5], false, [] +--depth, integer, [1 5], false, [] +--refresh, integer, [1 5], false, [] +--vsync, boolean, [], false, [] +--noframe, boolean, [], false, [] +--resize, boolean, [], false, [] +--minimize, boolean, [], false, [] +--maximize, boolean, [], false, [] +--grab, boolean, [], false, [mouse] +--blend, enum, [none blend add mod], false, [] +--cyclecolor, boolean, [], false, [] +--cyclealpha, boolean, [], false, [] \ No newline at end of file diff --git a/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions b/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions new file mode 100755 index 0000000000..ef54e86b48 --- /dev/null +++ b/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.actions @@ -0,0 +1,3 @@ +00:00:03 SCREENSHOT +00:00:06 VERIFY +00:00:09 QUIT \ No newline at end of file diff --git a/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config b/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config new file mode 100755 index 0000000000..361020ac08 --- /dev/null +++ b/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.config @@ -0,0 +1,5 @@ +parameter-config=testsprite2_fullscreen.parameters +variator=exhaustive +sutapp=testsprite2 +timeout=00:00:15 +action-config=testsprite2_fullscreen.actions \ No newline at end of file diff --git a/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters b/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters new file mode 100755 index 0000000000..8da19673ea --- /dev/null +++ b/visualtest/configs/testsprite2_fullscreen/testsprite2_fullscreen.parameters @@ -0,0 +1,5 @@ +# parameter name, type, value range, required, categories +--blend, enum, [none blend add mod], false, [] +--fullscreen, boolean, [], false, [] +--fullscreen-desktop, boolean, [], false, [] +--iterations, integer, [1000 1000], true, [] \ No newline at end of file diff --git a/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions b/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions new file mode 100755 index 0000000000..ef54e86b48 --- /dev/null +++ b/visualtest/configs/testsprite2_geometry/testsprite2_geometry.actions @@ -0,0 +1,3 @@ +00:00:03 SCREENSHOT +00:00:06 VERIFY +00:00:09 QUIT \ No newline at end of file diff --git a/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config b/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config new file mode 100755 index 0000000000..f3cda9ac11 --- /dev/null +++ b/visualtest/configs/testsprite2_geometry/testsprite2_geometry.config @@ -0,0 +1,5 @@ +parameter-config=testsprite2_geometry.parameters +variator=exhaustive +sutapp=testsprite2 +timeout=00:00:15 +action-config=testsprite2_geometry.actions \ No newline at end of file diff --git a/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters b/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters new file mode 100755 index 0000000000..c1ac8ef372 --- /dev/null +++ b/visualtest/configs/testsprite2_geometry/testsprite2_geometry.parameters @@ -0,0 +1,5 @@ +# parameter name, type, value range, required, categories +--geometry, enum, [500x500 600x600], false, [] +--logical, enum, [300x500 550x450], false, [] +--scale, integer, [1 5], false, [] +--iterations, integer, [1000 1000], true, [] \ No newline at end of file diff --git a/visualtest/configure b/visualtest/configure new file mode 100755 index 0000000000..4e9f2902fd --- /dev/null +++ b/visualtest/configure @@ -0,0 +1,5203 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for sdlvisualtest 0.01. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: apoorvupreti@gmail.com about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='sdlvisualtest' +PACKAGE_TARNAME='sdlvisualtest' +PACKAGE_VERSION='0.01' +PACKAGE_STRING='sdlvisualtest 0.01' +PACKAGE_BUGREPORT='apoorvupreti@gmail.com' +PACKAGE_URL='' + +ac_subst_vars='LTLIBOBJS +LIBOBJS +SDL_TTF_LIB +GLLIB +CPP +XMKMF +SDL_CONFIG +SDL_LIBS +SDL_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +ISUNIX +ISWINDOWS +ISMACOSX +EXTRALIB +MATHLIB +EXE +OSMESA_CONFIG +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_sdl_prefix +with_sdl_exec_prefix +enable_sdltest +with_x +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +SDL_CFLAGS +SDL_LIBS +XMKMF +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures sdlvisualtest 0.01 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/sdlvisualtest] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of sdlvisualtest 0.01:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-sdltest Do not try to compile and run a test SDL program + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-sdl-prefix=PFX Prefix where SDL is installed (optional) + --with-sdl-exec-prefix=PFX Exec prefix where SDL is installed (optional) + --with-x use the X Window System + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + SDL_CFLAGS C compiler flags for SDL, overriding pkg-config + SDL_LIBS linker flags for SDL, overriding pkg-config + XMKMF Path to xmkmf, Makefile generator for X Window System + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +sdlvisualtest configure 0.01 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by sdlvisualtest $as_me 0.01, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_aux_dir= +for ac_dir in $srcdir/../build-scripts; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in $srcdir/../build-scripts" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + + +ISUNIX="false" +ISWINDOWS="false" +ISMACOSX="false" + +case "$host" in + *-*-cygwin* | *-*-mingw32*) + ISWINDOWS="true" + EXE=".exe" + MATHLIB="" + EXTRALIB="-lshlwapi" + SYS_GL_LIBS="-lopengl32" + ;; + *-*-beos* | *-*-haiku*) + EXE="" + MATHLIB="" + EXTRALIB="" + SYS_GL_LIBS="-lGL" + ;; + *-*-darwin* ) + ISMACOSX="true" + EXE="" + MATHLIB="" + EXTRALIB="" + + ;; + *-*-aix*) + ISUNIX="true" + EXE="" + if test x$ac_cv_c_compiler_gnu = xyes; then + CFLAGS="-mthreads" + fi + MATHLIB="" + EXTRALIB="" + SYS_GL_LIBS="" + ;; + *-*-mint*) + EXE="" + MATHLIB="" + EXTRALIB="" + # Extract the first word of "osmesa-config", so it can be a program name with args. +set dummy osmesa-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_OSMESA_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $OSMESA_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_OSMESA_CONFIG="$OSMESA_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_OSMESA_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_OSMESA_CONFIG" && ac_cv_path_OSMESA_CONFIG="no" + ;; +esac +fi +OSMESA_CONFIG=$ac_cv_path_OSMESA_CONFIG +if test -n "$OSMESA_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OSMESA_CONFIG" >&5 +$as_echo "$OSMESA_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test "x$OSMESA_CONFIG" = "xyes"; then + OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags` + OSMESA_LIBS=`$OSMESA_CONFIG --libs` + CFLAGS="$CFLAGS $OSMESA_CFLAGS" + SYS_GL_LIBS="$OSMESA_LIBS" + else + SYS_GL_LIBS="-lOSMesa" + fi + ;; + *-*-qnx*) + EXE="" + MATHLIB="" + EXTRALIB="" + SYS_GL_LIBS="-lGLES_CM" + ;; + *) + ISUNIX="true" + EXE="" + MATHLIB="-lm" + EXTRALIB="" + SYS_GL_LIBS="-lGL" + ;; +esac + + + + + + + +SDL_VERSION=2.0.0 + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +# Check whether --with-sdl-prefix was given. +if test "${with_sdl_prefix+set}" = set; then : + withval=$with_sdl_prefix; sdl_prefix="$withval" +else + sdl_prefix="" +fi + + +# Check whether --with-sdl-exec-prefix was given. +if test "${with_sdl_exec_prefix+set}" = set; then : + withval=$with_sdl_exec_prefix; sdl_exec_prefix="$withval" +else + sdl_exec_prefix="" +fi + +# Check whether --enable-sdltest was given. +if test "${enable_sdltest+set}" = set; then : + enableval=$enable_sdltest; +else + enable_sdltest=yes +fi + + + min_sdl_version=$SDL_VERSION + + if test "x$sdl_prefix$sdl_exec_prefix" = x ; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL" >&5 +$as_echo_n "checking for SDL... " >&6; } + +if test -n "$SDL_CFLAGS"; then + pkg_cv_SDL_CFLAGS="$SDL_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2 >= \$min_sdl_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sdl2 >= $min_sdl_version") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SDL_CFLAGS=`$PKG_CONFIG --cflags "sdl2 >= $min_sdl_version" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$SDL_LIBS"; then + pkg_cv_SDL_LIBS="$SDL_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"sdl2 >= \$min_sdl_version\""; } >&5 + ($PKG_CONFIG --exists --print-errors "sdl2 >= $min_sdl_version") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_SDL_LIBS=`$PKG_CONFIG --libs "sdl2 >= $min_sdl_version" 2>/dev/null` +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + SDL_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "sdl2 >= $min_sdl_version" 2>&1` + else + SDL_PKG_ERRORS=`$PKG_CONFIG --print-errors "sdl2 >= $min_sdl_version" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$SDL_PKG_ERRORS" >&5 + + sdl_pc=no +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + sdl_pc=no +else + SDL_CFLAGS=$pkg_cv_SDL_CFLAGS + SDL_LIBS=$pkg_cv_SDL_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + sdl_pc=yes +fi + else + sdl_pc=no + if test x$sdl_exec_prefix != x ; then + sdl_config_args="$sdl_config_args --exec-prefix=$sdl_exec_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_exec_prefix/bin/sdl2-config + fi + fi + if test x$sdl_prefix != x ; then + sdl_config_args="$sdl_config_args --prefix=$sdl_prefix" + if test x${SDL_CONFIG+set} != xset ; then + SDL_CONFIG=$sdl_prefix/bin/sdl2-config + fi + fi + fi + + if test "x$sdl_pc" = xyes ; then + no_sdl="" + SDL_CONFIG="pkg-config sdl2" + else + as_save_PATH="$PATH" + if test "x$prefix" != xNONE && test "$cross_compiling" != yes; then + PATH="$prefix/bin:$prefix/usr/bin:$PATH" + fi + # Extract the first word of "sdl2-config", so it can be a program name with args. +set dummy sdl2-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_SDL_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $SDL_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_SDL_CONFIG="$SDL_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_SDL_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SDL_CONFIG" && ac_cv_path_SDL_CONFIG="no" + ;; +esac +fi +SDL_CONFIG=$ac_cv_path_SDL_CONFIG +if test -n "$SDL_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SDL_CONFIG" >&5 +$as_echo "$SDL_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + PATH="$as_save_PATH" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SDL - version >= $min_sdl_version" >&5 +$as_echo_n "checking for SDL - version >= $min_sdl_version... " >&6; } + no_sdl="" + + if test "$SDL_CONFIG" = "no" ; then + no_sdl=yes + else + SDL_CFLAGS=`$SDL_CONFIG $sdl_config_args --cflags` + SDL_LIBS=`$SDL_CONFIG $sdl_config_args --libs` + + sdl_major_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + sdl_minor_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + sdl_micro_version=`$SDL_CONFIG $sdl_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_sdltest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_CXXFLAGS="$CXXFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + rm -f conf.sdltest + if test "$cross_compiling" = yes; then : + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include +#include +#include "SDL.h" + +char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = (char *)malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main (int argc, char *argv[]) +{ + int major, minor, micro; + char *tmp_version; + + /* This hangs on some systems (?) + system ("touch conf.sdltest"); + */ + { FILE *fp = fopen("conf.sdltest", "a"); if ( fp ) fclose(fp); } + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_sdl_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_sdl_version"); + exit(1); + } + + if (($sdl_major_version > major) || + (($sdl_major_version == major) && ($sdl_minor_version > minor)) || + (($sdl_major_version == major) && ($sdl_minor_version == minor) && ($sdl_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'sdl2-config --version' returned %d.%d.%d, but the minimum version\n", $sdl_major_version, $sdl_minor_version, $sdl_micro_version); + printf("*** of SDL required is %d.%d.%d. If sdl2-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If sdl2-config was wrong, set the environment variable SDL_CONFIG\n"); + printf("*** to point to the correct copy of sdl2-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +} + + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + no_sdl=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_sdl" = x ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + if test "x$no_sdl" = x ; then + : + else + if test "$SDL_CONFIG" = "no" ; then + echo "*** The sdl2-config script installed by SDL could not be found" + echo "*** If SDL was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the SDL_CONFIG environment variable to the" + echo "*** full path to sdl2-config." + else + if test -f conf.sdltest ; then + : + else + echo "*** Could not run SDL test program, checking why..." + CFLAGS="$CFLAGS $SDL_CFLAGS" + CXXFLAGS="$CXXFLAGS $SDL_CFLAGS" + LIBS="$LIBS $SDL_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include "SDL.h" + +int main(int argc, char *argv[]) +{ return 0; } +#undef main +#define main K_and_R_C_main + +int +main () +{ + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding SDL or finding the wrong" + echo "*** version of SDL. If it is not finding SDL, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" +else + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means SDL was incorrectly installed" + echo "*** or that you have moved SDL since it was installed. In the latter case, you" + echo "*** may want to edit the sdl2-config script: $SDL_CONFIG" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + SDL_CFLAGS="" + SDL_LIBS="" + as_fn_error $? "*** SDL version $SDL_VERSION not found!" "$LINENO" 5 + + fi + + + rm -f conf.sdltest + +CFLAGS="$CFLAGS $SDL_CFLAGS" +LIBS="$LIBS -lSDL2_test $SDL_LIBS $EXTRALIB" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then : + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( + *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib la dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /usr/lib64 | /lib | /lib64) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # We can compile using X headers with no special include directory. +ac_x_includes= +else + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lX11 $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + LIBS=$ac_save_LIBS +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib la dll; do + if test -r "$ac_dir/libX11.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +$as_echo "$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } +fi + +if test x$have_x = xyes; then + if test x$ac_x_includes = xno || test x$ac_x_includes = x; then + : + else + CFLAGS="$CFLAGS -I$ac_x_includes" + fi + if test x$ac_x_libraries = xno || test x$ac_x_libraries = x; then + : + else + XPATH="-L$ac_x_libraries" + fi +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL support" >&5 +$as_echo_n "checking for OpenGL support... " >&6; } +have_opengl=no +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include "SDL_opengl.h" + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +have_opengl=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengl" >&5 +$as_echo "$have_opengl" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL ES support" >&5 +$as_echo_n "checking for OpenGL ES support... " >&6; } +have_opengles=no +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined (__IPHONEOS__) + #include + #else + #include + #endif /* __QNXNTO__ */ + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +have_opengles=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengles" >&5 +$as_echo "$have_opengles" >&6; } + +GLLIB="" +if test x$have_opengles = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGLES" + GLLIB="$XPATH -lGLESv1_CM" +elif test x$have_opengl = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGL" + GLLIB="$XPATH $SYS_GL_LIBS" +else + GLLIB="" +fi + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for TTF_Init in -lSDL2_ttf" >&5 +$as_echo_n "checking for TTF_Init in -lSDL2_ttf... " >&6; } +if ${ac_cv_lib_SDL2_ttf_TTF_Init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lSDL2_ttf $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char TTF_Init (); +int +main () +{ +return TTF_Init (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_SDL2_ttf_TTF_Init=yes +else + ac_cv_lib_SDL2_ttf_TTF_Init=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_SDL2_ttf_TTF_Init" >&5 +$as_echo "$ac_cv_lib_SDL2_ttf_TTF_Init" >&6; } +if test "x$ac_cv_lib_SDL2_ttf_TTF_Init" = xyes; then : + have_SDL_ttf=yes +fi + +if test x$have_SDL_ttf = xyes; then + CFLAGS="$CFLAGS -DHAVE_SDL_TTF" + SDL_TTF_LIB="-lSDL2_ttf" +fi + + +ac_config_headers="$ac_config_headers config.h" + +ac_config_files="$ac_config_files Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by sdlvisualtest $as_me 0.01, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +sdlvisualtest config.status 0.01 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + + esac + +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/visualtest/configure.in b/visualtest/configure.in new file mode 100755 index 0000000000..8815869172 --- /dev/null +++ b/visualtest/configure.in @@ -0,0 +1,166 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT([sdlvisualtest], [0.01], [apoorvupreti@gmail.com]) + +dnl Detect the canonical build and host environments +AC_CONFIG_AUX_DIRS($srcdir/../build-scripts) +AC_CANONICAL_HOST + +dnl Check for tools + +AC_PROG_CC + +dnl Check for compiler environment + +AC_C_CONST + +dnl We only care about this for building testnative at the moment, so these +dnl values shouldn't be considered absolute truth. +dnl (BeOS, for example, sets none of these.) +ISUNIX="false" +ISWINDOWS="false" +ISMACOSX="false" + +dnl Figure out which math or extra library to use +case "$host" in + *-*-cygwin* | *-*-mingw32*) + ISWINDOWS="true" + EXE=".exe" + MATHLIB="" + EXTRALIB="-lshlwapi" + SYS_GL_LIBS="-lopengl32" + ;; + *-*-beos* | *-*-haiku*) + EXE="" + MATHLIB="" + EXTRALIB="" + SYS_GL_LIBS="-lGL" + ;; + *-*-darwin* ) + ISMACOSX="true" + EXE="" + MATHLIB="" + EXTRALIB="" + + ;; + *-*-aix*) + ISUNIX="true" + EXE="" + if test x$ac_cv_prog_gcc = xyes; then + CFLAGS="-mthreads" + fi + MATHLIB="" + EXTRALIB="" + SYS_GL_LIBS="" + ;; + *-*-mint*) + EXE="" + MATHLIB="" + EXTRALIB="" + AC_PATH_PROG(OSMESA_CONFIG, osmesa-config, no) + if test "x$OSMESA_CONFIG" = "xyes"; then + OSMESA_CFLAGS=`$OSMESA_CONFIG --cflags` + OSMESA_LIBS=`$OSMESA_CONFIG --libs` + CFLAGS="$CFLAGS $OSMESA_CFLAGS" + SYS_GL_LIBS="$OSMESA_LIBS" + else + SYS_GL_LIBS="-lOSMesa" + fi + ;; + *-*-qnx*) + EXE="" + MATHLIB="" + EXTRALIB="" + SYS_GL_LIBS="-lGLES_CM" + ;; + *) + dnl Oh well, call it Unix... + ISUNIX="true" + EXE="" + MATHLIB="-lm" + EXTRALIB="" + SYS_GL_LIBS="-lGL" + ;; +esac +AC_SUBST(EXE) +AC_SUBST(MATHLIB) +AC_SUBST(EXTRALIB) +AC_SUBST(ISMACOSX) +AC_SUBST(ISWINDOWS) +AC_SUBST(ISUNIX) + +dnl Check for SDL +SDL_VERSION=2.0.0 +AM_PATH_SDL2($SDL_VERSION, + :, + AC_MSG_ERROR([*** SDL version $SDL_VERSION not found!]) +) +CFLAGS="$CFLAGS $SDL_CFLAGS" +LIBS="$LIBS -lSDL2_test $SDL_LIBS $EXTRALIB" + +dnl Check for X11 path, needed for OpenGL on some systems +AC_PATH_X +if test x$have_x = xyes; then + if test x$ac_x_includes = xno || test x$ac_x_includes = x; then + : + else + CFLAGS="$CFLAGS -I$ac_x_includes" + fi + if test x$ac_x_libraries = xno || test x$ac_x_libraries = x; then + : + else + XPATH="-L$ac_x_libraries" + fi +fi + +dnl Check for OpenGL +AC_MSG_CHECKING(for OpenGL support) +have_opengl=no +AC_TRY_COMPILE([ + #include "SDL_opengl.h" +],[ +],[ +have_opengl=yes +]) +AC_MSG_RESULT($have_opengl) + +dnl Check for OpenGL ES +AC_MSG_CHECKING(for OpenGL ES support) +have_opengles=no +AC_TRY_COMPILE([ + #if defined (__IPHONEOS__) + #include + #else + #include + #endif /* __QNXNTO__ */ +],[ +],[ +have_opengles=yes +]) +AC_MSG_RESULT($have_opengles) + +GLLIB="" +if test x$have_opengles = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGLES" + GLLIB="$XPATH -lGLESv1_CM" +elif test x$have_opengl = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGL" + GLLIB="$XPATH $SYS_GL_LIBS" +else + GLLIB="" +fi + +AC_SUBST(GLLIB) + +dnl Check for SDL_ttf +AC_CHECK_LIB(SDL2_ttf, TTF_Init, have_SDL_ttf=yes) +if test x$have_SDL_ttf = xyes; then + CFLAGS="$CFLAGS -DHAVE_SDL_TTF" + SDL_TTF_LIB="-lSDL2_ttf" +fi +AC_SUBST(SDL_TTF_LIB) + +dnl Finally create all the generated files +dnl AC_OUTPUT([Makefile]) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT() diff --git a/visualtest/depcomp b/visualtest/depcomp new file mode 100755 index 0000000000..b0ad20c05e --- /dev/null +++ b/visualtest/depcomp @@ -0,0 +1 @@ +/usr/share/automake-1.11/depcomp \ No newline at end of file diff --git a/visualtest/docs/Doxyfile b/visualtest/docs/Doxyfile new file mode 100755 index 0000000000..08caeb491e --- /dev/null +++ b/visualtest/docs/Doxyfile @@ -0,0 +1,1936 @@ +# Doxyfile 1.8.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = "SDL Visual Test" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = . + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Latvian, Lithuanian, Norwegian, Macedonian, +# Persian, Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, +# Slovak, Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. Note that you specify absolute paths here, but also +# relative paths, which will be relative from the directory where doxygen is +# started. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, +# and language is one of the parsers supported by doxygen: IDL, Java, +# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, +# C++. For instance to make doxygen treat .inc files as Fortran files (default +# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note +# that for custom extensions you also need to set FILE_PATTERNS otherwise the +# files are not read by doxygen. + +EXTENSION_MAPPING = + +# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all +# comments according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you +# can mix doxygen, HTML, and XML commands with Markdown formatting. +# Disable only in case of backward compatibilities issues. + +MARKDOWN_SUPPORT = YES + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by by putting a % sign in front of the word +# or globally by setting AUTOLINK_SUPPORT to NO. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES (the +# default) will make doxygen replace the get and set methods by a property in +# the documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields or simple typedef fields will be shown +# inline in the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO (the default), structs, classes, and unions are shown on a separate +# page (for HTML and Man pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can +# be an expensive process and often the same symbol appear multiple times in +# the code, doxygen keeps a cache of pre-resolved symbols. If the cache is too +# small doxygen will become slower. If the cache is too large, memory is wasted. +# The cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid +# range is 0..9, the default is 0, corresponding to a cache size of 2^16 = 65536 +# symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal +# scope will be included in the documentation. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if section-label ... \endif +# and \cond section-label ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. Do not use +# file names with spaces, bibtex cannot handle them. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../ + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + README.txt + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be ignored. +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C, C++ and Fortran comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +# If CLANG_ASSISTED_PARSING is set to YES, then doxygen will use the clang parser +# for more acurate parsing at the cost of reduced performance. This can be +# particularly helpful with template rich C++ code for which doxygen's built-in +# parser lacks the necessairy type information. + +CLANG_ASSISTED_PARSING = NO + +# If clang assisted parsing is enabled you can provide the compiler with command +# line options that you would normally use when invoking the compiler. Note that +# the include paths will already be set by doxygen for the files and directories +# specified at INPUT and INCLUDE_PATH. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If left blank doxygen will +# generate a default style sheet. Note that it is recommended to use +# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this +# tag will in the future become obsolete. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional +# user-defined cascading style sheet that is included after the standard +# style sheets created by doxygen. Using this option one can overrule +# certain style aspects. This is preferred over using HTML_STYLESHEET +# since it does not replace the standard style sheet and is therefor more +# robust against future updates. Doxygen will copy the style sheet file to +# the output directory. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of +# entries shown in the various tree structured indices initially; the user +# can expand and collapse entries dynamically later on. Doxygen will expand +# the tree to such a level that at most the specified number of entries are +# visible (unless a fully collapsed tree already exceeds this amount). +# So setting the number of entries 1 will produce a full collapsed tree by +# default. 0 is a special value representing an infinite number of entries +# and will result in a full expanded tree by default. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely +# identify the documentation publisher. This should be a reverse domain-name +# style string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you may also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and +# SVG. The default value is HTML-CSS, which is slower, but has the best +# compatibility. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to +# the MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. However, it is strongly recommended to install a local +# copy of MathJax from http://www.mathjax.org before deployment. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript +# pieces of code that will be used on startup of the MathJax code. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a web server instead of a web client using Javascript. +# There are two flavours of web server based search depending on the +# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for +# searching and an index file used by the script. When EXTERNAL_SEARCH is +# enabled the indexing and searching needs to be provided by external tools. +# See the manual for details. + +SERVER_BASED_SEARCH = NO + +# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP +# script for searching. Instead the search results are written to an XML file +# which needs to be processed by an external indexer. Doxygen will invoke an +# external search engine pointed to by the SEARCHENGINE_URL option to obtain +# the search results. Doxygen ships with an example indexer (doxyindexer) and +# search engine (doxysearch.cgi) which are based on the open source search +# engine library Xapian. See the manual for configuration details. + +EXTERNAL_SEARCH = NO + +# The SEARCHENGINE_URL should point to a search engine hosted by a web server +# which will returned the search results when EXTERNAL_SEARCH is enabled. +# Doxygen ships with an example search engine (doxysearch) which is based on +# the open source search engine library Xapian. See the manual for configuration +# details. + +SEARCHENGINE_URL = + +# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed +# search data is written to a file for indexing by an external tool. With the +# SEARCHDATA_FILE tag the name of this file can be specified. + +SEARCHDATA_FILE = searchdata.xml + +# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the +# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is +# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple +# projects and redirect the results back to the right project. + +EXTERNAL_SEARCH_ID = + +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# projects other than the one defined by this configuration file, but that are +# all added to the same external search index. Each project needs to have a +# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id +# of to a relative location where the documentation can be found. +# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... + +EXTRA_SEARCH_MAPPINGS = + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4 will be used. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images +# or other source files which should be copied to the LaTeX output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. + +LATEX_EXTRA_FILES = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- + +# If the GENERATE_DOCBOOK tag is set to YES Doxygen will generate DOCBOOK files +# that can be used to generate PDF. + +GENERATE_DOCBOOK = NO + +# The DOCBOOK_OUTPUT tag is used to specify where the DOCBOOK pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in +# front of it. If left blank docbook will be used as the default path. + +DOCBOOK_OUTPUT = docbook + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. For each +# tag file the location of the external documentation should be added. The +# format of a tag file without this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths +# or URLs. Note that each tag file must have a unique name (where the name does +# NOT include the path). If a tag file is not located in the directory in which +# doxygen is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# If the EXTERNAL_PAGES tag is set to YES all external pages will be listed +# in the related pages index. If set to NO, only the current project's +# pages will be listed. + +EXTERNAL_PAGES = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If the UML_LOOK tag is enabled, the fields and methods are shown inside +# the class node. If there are many fields or methods and many nodes the +# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS +# threshold limits the number of items for each type to make the size more +# manageable. Set this to 0 for no limit. Note that the threshold may be +# exceeded by 50% before the limit is enforced. + +UML_LIMIT_NUM_FIELDS = 10 + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h.html b/visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h.html new file mode 100755 index 0000000000..c6a5898bd0 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h.html @@ -0,0 +1,424 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_action_configparser.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_action_configparser.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Data Structures

struct  SDLVisualTest_Action
 
struct  SDLVisualTest_ActionNode
 
struct  SDLVisualTest_ActionQueue
 
+ + + +

+Macros

#define MAX_ACTION_LINE_LENGTH   300
 
+ + + + + + + +

+Typedefs

typedef struct SDLVisualTest_Action SDLVisualTest_Action
 
typedef struct
+SDLVisualTest_ActionNode 
SDLVisualTest_ActionNode
 
typedef struct
+SDLVisualTest_ActionQueue 
SDLVisualTest_ActionQueue
 
+ + + +

+Enumerations

enum  SDLVisualTest_ActionType {
+  SDL_ACTION_LAUNCH = 0, +SDL_ACTION_KILL, +SDL_ACTION_QUIT, +SDL_ACTION_SCREENSHOT, +
+  SDL_ACTION_VERIFY +
+ }
 
+ + + + + + + + + + + + + + + + + +

+Functions

int SDLVisualTest_EnqueueAction (SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action)
 
int SDLVisualTest_DequeueAction (SDLVisualTest_ActionQueue *queue)
 
void SDLVisualTest_InitActionQueue (SDLVisualTest_ActionQueue *queue)
 
SDLVisualTest_ActionSDLVisualTest_GetQueueFront (SDLVisualTest_ActionQueue *queue)
 
int SDLVisualTest_IsActionQueueEmpty (SDLVisualTest_ActionQueue *queue)
 
void SDLVisualTest_EmptyActionQueue (SDLVisualTest_ActionQueue *queue)
 
int SDLVisualTest_InsertIntoActionQueue (SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action)
 
int SDLVisualTest_ParseActionConfig (char *file, SDLVisualTest_ActionQueue *queue)
 
+

Detailed Description

+

Header file for the parser for action config files.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define MAX_ACTION_LINE_LENGTH   300
+
+

The maximum length of one line in the actions file

+ +
+
+

Typedef Documentation

+ +
+
+ + + + +
typedef struct SDLVisualTest_Action SDLVisualTest_Action
+
+

Struct that defines an action that will be performed on the SUT process at a specific time.

+ +
+
+ +
+
+

Struct for a node in the action queue.

+ +
+
+ +
+
+

Queue structure for actions loaded from the actions config file.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum SDLVisualTest_ActionType
+
+

Type of the action.

+ + + + + + +
Enumerator
SDL_ACTION_LAUNCH  +

Launch an application with some given arguments

+
SDL_ACTION_KILL  +

Kill the SUT process

+
SDL_ACTION_QUIT  +

Quit (Gracefully exit) the SUT process

+
SDL_ACTION_SCREENSHOT  +

Take a screenshot of the SUT window

+
SDL_ACTION_VERIFY  +

Verify a previously taken screenshot

+
+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
int SDLVisualTest_DequeueAction (SDLVisualTest_ActionQueuequeue)
+
+

Remove an action from the front of the action queue pointed to by queue.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
void SDLVisualTest_EmptyActionQueue (SDLVisualTest_ActionQueuequeue)
+
+

Dequeues all the elements in the queque pointed to by queue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_EnqueueAction (SDLVisualTest_ActionQueuequeue,
SDLVisualTest_Action action 
)
+
+

Add an action pointed to by action to the rear of the action queue pointed to by queue.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
SDLVisualTest_Action* SDLVisualTest_GetQueueFront (SDLVisualTest_ActionQueuequeue)
+
+

Get the action at the front of the action queue pointed to by queue. The returned action pointer may become invalid after subsequent dequeues.

+
Returns
pointer to the action on success, NULL on failure.
+ +
+
+ +
+
+ + + + + + + + +
void SDLVisualTest_InitActionQueue (SDLVisualTest_ActionQueuequeue)
+
+

Initialize the action queue pointed to by queue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InsertIntoActionQueue (SDLVisualTest_ActionQueuequeue,
SDLVisualTest_Action action 
)
+
+

Inserts an action action into the queue pointed to by queue such that the times of actions in the queue increase as we move from the front to the rear.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
int SDLVisualTest_IsActionQueueEmpty (SDLVisualTest_ActionQueuequeue)
+
+

Check if the queue pointed to by queue is empty or not.

+
Returns
1 if the queue is empty, 0 otherwise.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ParseActionConfig (char * file,
SDLVisualTest_ActionQueuequeue 
)
+
+

Parses an action config file with path file and populates an action queue pointed to by queue with actions.

+
Returns
1 on success, 0 on failure.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h_source.html new file mode 100755 index 0000000000..ae0b21c932 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__action__configparser_8h_source.html @@ -0,0 +1,169 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_action_configparser.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_action_configparser.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+
8 #ifndef _SDL_visualtest_action_configparser_h
+
9 #define _SDL_visualtest_action_configparser_h
+
10 
+
12 #define MAX_ACTION_LINE_LENGTH 300
+
13 
+
14 /* Set up for C function definitions, even when using C++ */
+
15 #ifdef __cplusplus
+
16 extern "C" {
+
17 #endif
+
18 
+
22 typedef enum
+
23 {
+ + + + + + +
35 
+
40 typedef struct SDLVisualTest_Action
+
41 {
+ +
46  int time;
+
48  union
+
49  {
+
51  struct
+
52  {
+
53  char* path;
+
54  char* args;
+
55  } process;
+
56  } extra;
+ +
58 
+ +
63 {
+ + + +
69 
+ +
74 {
+ + +
80  int size;
+ +
82 
+ +
90  SDLVisualTest_Action action);
+
91 
+ +
98 
+ +
103 
+ +
111 
+ +
118 
+ +
123 
+ +
132  SDLVisualTest_Action action);
+
133 
+ +
141 
+
142 /* Ends C function definitions when using C++ */
+
143 #ifdef __cplusplus
+
144 }
+
145 #endif
+
146 
+
147 #endif /* _SDL_visualtest_action_configparser_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h.html b/visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h.html new file mode 100755 index 0000000000..7263ed8869 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h.html @@ -0,0 +1,208 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_exhaustive_variator.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_exhaustive_variator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

struct  SDLVisualTest_ExhaustiveVariator
 
+ + + +

+Typedefs

typedef struct
+SDLVisualTest_ExhaustiveVariator 
SDLVisualTest_ExhaustiveVariator
 
+ + + + + + + +

+Functions

int SDLVisualTest_InitExhaustiveVariator (SDLVisualTest_ExhaustiveVariator *variator, SDLVisualTest_SUTConfig *config)
 
char * SDLVisualTest_GetNextExhaustiveVariation (SDLVisualTest_ExhaustiveVariator *variator)
 
void SDLVisualTest_FreeExhaustiveVariator (SDLVisualTest_ExhaustiveVariator *variator)
 
+

Detailed Description

+

Header for the exhaustive variator.

+

Typedef Documentation

+ +
+
+

Struct for the variator that exhaustively iterates through all variations of command line arguments to the SUT.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeExhaustiveVariator (SDLVisualTest_ExhaustiveVariatorvariator)
+
+

Frees any resources associated with the variator.

+ +
+
+ +
+
+ + + + + + + + +
char* SDLVisualTest_GetNextExhaustiveVariation (SDLVisualTest_ExhaustiveVariatorvariator)
+
+

Gets the arguments string for the next variation using the variator and updates the variator's current variation object to the next variation.

+
Returns
The arguments string representing the next variation on success, and NULL on failure or if we have iterated through all possible variations. In the latter case subsequent calls will start the variations again from the very beginning. The pointer returned should not be freed.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitExhaustiveVariator (SDLVisualTest_ExhaustiveVariatorvariator,
SDLVisualTest_SUTConfigconfig 
)
+
+

Initializes the variator.

+
Returns
1 on success, 0 on failure
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h_source.html new file mode 100755 index 0000000000..99d91a5dd2 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__exhaustive__variator_8h_source.html @@ -0,0 +1,130 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_exhaustive_variator.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_exhaustive_variator.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+ + +
10 
+
11 #ifndef _SDL_visualtest_exhaustive_variator_h
+
12 #define _SDL_visualtest_exhaustive_variator_h
+
13 
+
14 /* Set up for C function definitions, even when using C++ */
+
15 #ifdef __cplusplus
+
16 extern "C" {
+
17 #endif
+
18 
+ +
24 {
+ + + + +
32 
+ +
39  SDLVisualTest_SUTConfig* config);
+
40 
+ +
51 
+ +
56 
+
57 /* Ends C function definitions when using C++ */
+
58 #ifdef __cplusplus
+
59 }
+
60 #endif
+
61 
+
62 #endif /* _SDL_visualtest_exhaustive_variator_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h.html b/visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h.html new file mode 100755 index 0000000000..dc8e9c6940 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h.html @@ -0,0 +1,231 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_harness_argparser.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_harness_argparser.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

struct  SDLVisualTest_HarnessState
 
+ + + + + +

+Macros

#define MAX_PATH_LEN   300
 
#define MAX_SUT_ARGS_LEN   600
 
+ + + +

+Typedefs

typedef struct
+SDLVisualTest_HarnessState 
SDLVisualTest_HarnessState
 
+ + + + + +

+Functions

int SDLVisualTest_ParseHarnessArgs (char **argv, SDLVisualTest_HarnessState *state)
 
void SDLVisualTest_FreeHarnessState (SDLVisualTest_HarnessState *state)
 
+

Detailed Description

+

Provides functionality to parse command line arguments to the test harness.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define MAX_PATH_LEN   300
+
+

Maximum length of a path string

+ +
+
+ +
+
+ + + + +
#define MAX_SUT_ARGS_LEN   600
+
+

Maximum length of a string of SUT arguments

+ +
+
+

Typedef Documentation

+ +
+
+

Stores the state of the test harness.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeHarnessState (SDLVisualTest_HarnessStatestate)
+
+

Frees any resources associated with the state object pointed to by state.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ParseHarnessArgs (char ** argv,
SDLVisualTest_HarnessStatestate 
)
+
+

Parse command line paramters to the test harness and populate a state object.

+
Parameters
+ + + +
argvThe array of command line parameters.
statePointer to the state object to be populated.
+
+
+
Returns
Non-zero on success, zero on failure.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h_source.html new file mode 100755 index 0000000000..4a6c066327 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__harness__argparser_8h_source.html @@ -0,0 +1,140 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_harness_argparser.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_harness_argparser.h
+
+
+Go to the documentation of this file.
1 
+
7 #include <SDL.h>
+ + + +
11 
+
12 #ifndef _SDL_visualtest_harness_argparser_h
+
13 #define _SDL_visualtest_harness_argparser_h
+
14 
+
16 #define MAX_PATH_LEN 300
+
17 
+
18 #define MAX_SUT_ARGS_LEN 600
+
19 
+
20 /* Set up for C function definitions, even when using C++ */
+
21 #ifdef __cplusplus
+
22 extern "C" {
+
23 #endif
+
24 
+ +
29 {
+ + +
35  int timeout;
+ + + +
44  SDL_bool no_launch;
+ + + + +
52 
+ +
62 
+ +
67 
+
68 /* Ends C function definitions when using C++ */
+
69 #ifdef __cplusplus
+
70 }
+
71 #endif
+
72 
+
73 #endif /* _SDL_visualtest_harness_argparser_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__mischelper_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__mischelper_8h_source.html new file mode 100755 index 0000000000..507cad7b15 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__mischelper_8h_source.html @@ -0,0 +1,115 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_mischelper.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_mischelper.h
+
+
+
1 
+
7 #ifndef _SDL_visualtest_mischelper_h
+
8 #define _SDL_visualtest_mischelper_h
+
9 
+
10 /* Set up for C function definitions, even when using C++ */
+
11 #ifdef __cplusplus
+
12 extern "C" {
+
13 #endif
+
14 
+
19 void SDLVisualTest_HashString(char* str, char hash[33]);
+
20 
+
21 /* Ends C function definitions when using C++ */
+
22 #ifdef __cplusplus
+
23 }
+
24 #endif
+
25 
+
26 #endif /* _SDL_visualtest_mischelper_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h.html b/visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h.html new file mode 100755 index 0000000000..3e83551d08 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h.html @@ -0,0 +1,172 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_parsehelper.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_parsehelper.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + +

+Functions

char ** SDLVisualTest_ParseArgsToArgv (char *args)
 
char ** SDLVisualTest_Tokenize (char *str, int max_token_len)
 
+

Detailed Description

+

Header with some helper functions for parsing strings.

+

Function Documentation

+ +
+
+ + + + + + + + +
char** SDLVisualTest_ParseArgsToArgv (char * args)
+
+

Takes an string of command line arguments and breaks them up into an array based on whitespace.

+
Parameters
+ + +
argsThe string of arguments.
+
+
+
Returns
NULL on failure, an array of strings on success. The last element of the array is NULL. The first element of the array is NULL and should be set to the path of the executable by the caller.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char** SDLVisualTest_Tokenize (char * str,
int max_token_len 
)
+
+

Takes a string and breaks it into tokens by splitting on whitespace.

+
Parameters
+ + + +
strThe string to be split.
max_token_lenLength of each element in the array to be returned.
+
+
+
Returns
NULL on failure; an array of strings with the tokens on success. The last element of the array is NULL.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h_source.html new file mode 100755 index 0000000000..49a330d2d4 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__parsehelper_8h_source.html @@ -0,0 +1,117 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_parsehelper.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_parsehelper.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+
8 #ifndef _SDL_visualtest_parsehelper_h
+
9 #define _SDL_visualtest_parsehelper_h
+
10 
+
11 /* Set up for C function definitions, even when using C++ */
+
12 #ifdef __cplusplus
+
13 extern "C" {
+
14 #endif
+
15 
+
26 char** SDLVisualTest_ParseArgsToArgv(char* args);
+
27 
+
37 char** SDLVisualTest_Tokenize(char* str, int max_token_len);
+
38 
+
39 /* Ends C function definitions when using C++ */
+
40 #ifdef __cplusplus
+
41 }
+
42 #endif
+
43 
+
44 #endif /* _SDL_visualtest_parsehelper_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__process_8h.html b/visualtest/docs/html/_s_d_l__visualtest__process_8h.html new file mode 100755 index 0000000000..c666d19cba --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__process_8h.html @@ -0,0 +1,328 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_process.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_process.h File Reference
+
+
+
#include <SDL_platform.h>
+
+

Go to the source code of this file.

+ + + + + + +

+Data Structures

struct  SDL_ProcessInfo
 
struct  SDL_ProcessExitStatus
 
+ + + + + +

+Typedefs

typedef struct SDL_ProcessInfo SDL_ProcessInfo
 
typedef struct
+SDL_ProcessExitStatus 
SDL_ProcessExitStatus
 
+ + + + + + + + + + + +

+Functions

int SDL_LaunchProcess (char *file, char *args, SDL_ProcessInfo *pinfo)
 
int SDL_IsProcessRunning (SDL_ProcessInfo *pinfo)
 
int SDL_KillProcess (SDL_ProcessInfo *pinfo, SDL_ProcessExitStatus *ps)
 
int SDL_QuitProcess (SDL_ProcessInfo *pinfo, SDL_ProcessExitStatus *ps)
 
int SDL_GetProcessExitStatus (SDL_ProcessInfo *pinfo, SDL_ProcessExitStatus *ps)
 
+

Detailed Description

+

Provides cross-platfrom process launching and termination functionality.

+

Typedef Documentation

+ +
+
+ + + + +
typedef struct SDL_ProcessExitStatus SDL_ProcessExitStatus
+
+

This structure stores the exit status (value returned by main()) and whether the process exited sucessfully or not.

+ +
+
+ +
+
+ + + + +
typedef struct SDL_ProcessInfo SDL_ProcessInfo
+
+

Struct to store a platform specific handle to a process.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDL_GetProcessExitStatus (SDL_ProcessInfopinfo,
SDL_ProcessExitStatusps 
)
+
+

Gets the exit status of a process. If the exit status is -1, the process is still running.

+
Parameters
+ + + +
pinfoPointer to a SDL_ProcessInfo object of the process to be checked.
psPointer to a SDL_ProcessExitStatus object which will be populated with the exit status.
+
+
+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
int SDL_IsProcessRunning (SDL_ProcessInfopinfo)
+
+

Checks if a process is running or not.

+
Parameters
+ + +
pinfoPointer to SDL_ProcessInfo object of the process that needs to be checked.
+
+
+
Returns
1 if the process is still running; zero if it is not and -1 if the status could not be retrieved.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDL_KillProcess (SDL_ProcessInfopinfo,
SDL_ProcessExitStatusps 
)
+
+

Kills a currently running process.

+
Parameters
+ + + +
pinfoPointer to a SDL_ProcessInfo object of the process to be terminated.
psPointer to a SDL_ProcessExitStatus object which will be populated with the exit status.
+
+
+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int SDL_LaunchProcess (char * file,
char * args,
SDL_ProcessInfopinfo 
)
+
+

Launches a process with the given commandline arguments.

+
Parameters
+ + + + +
fileThe path to the executable to be launched.
argsThe command line arguments to be passed to the process.
pinfoPointer to an SDL_ProcessInfo object to be populated with platform specific information about the launched process.
+
+
+
Returns
Non-zero on success, zero on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDL_QuitProcess (SDL_ProcessInfopinfo,
SDL_ProcessExitStatusps 
)
+
+

Cleanly exits the process represented by pinfo and stores the exit status in the exit status object pointed to by ps.

+
Returns
1 on success, 0 on failure.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__process_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__process_8h_source.html new file mode 100755 index 0000000000..701c6429ee --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__process_8h_source.html @@ -0,0 +1,152 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_process.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_process.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+
8 #include <SDL_platform.h>
+
9 
+
10 #if defined(__WIN32__)
+
11 #include <Windows.h>
+
12 #include <Shlwapi.h>
+
13 #elif defined(__LINUX__)
+
14 #include <unistd.h>
+
15 #else
+
16 #error "Unsupported platform."
+
17 #endif
+
18 
+
19 #ifndef _SDL_visualtest_process_h
+
20 #define _SDL_visualtest_process_h
+
21 
+
22 /* Set up for C function definitions, even when using C++ */
+
23 #ifdef __cplusplus
+
24 extern "C" {
+
25 #endif
+
26 
+
30 typedef struct SDL_ProcessInfo
+
31 {
+
32 //#if defined(_WIN32) || defined(__WIN32__)
+
33 #if defined(__WIN32__)
+
34  PROCESS_INFORMATION pi;
+
35 //#elif defined(__linux__)
+
36 #elif defined(__LINUX__)
+
37  int pid;
+
38 #endif
+ +
40 
+
45 typedef struct SDL_ProcessExitStatus
+
46 {
+ + + +
50 
+
61 int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo);
+
62 
+ +
73 
+ +
84 
+ +
92 
+ +
104 
+
105 /* Ends C function definitions when using C++ */
+
106 #ifdef __cplusplus
+
107 }
+
108 #endif
+
109 
+
110 #endif /* _SDL_visualtest_process_h */
+
111 
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__random__variator_8h.html b/visualtest/docs/html/_s_d_l__visualtest__random__variator_8h.html new file mode 100755 index 0000000000..2b785a533d --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__random__variator_8h.html @@ -0,0 +1,213 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_random_variator.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_random_variator.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

struct  SDLVisualTest_RandomVariator
 
+ + + +

+Typedefs

typedef struct
+SDLVisualTest_RandomVariator 
SDLVisualTest_RandomVariator
 
+ + + + + + + +

+Functions

int SDLVisualTest_InitRandomVariator (SDLVisualTest_RandomVariator *variator, SDLVisualTest_SUTConfig *config, Uint64 seed)
 
char * SDLVisualTest_GetNextRandomVariation (SDLVisualTest_RandomVariator *variator)
 
void SDLVisualTest_FreeRandomVariator (SDLVisualTest_RandomVariator *variator)
 
+

Detailed Description

+

Header for the random variator.

+

Typedef Documentation

+ +
+
+

Struct for the variator that randomly generates variations of command line arguments to the SUT.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeRandomVariator (SDLVisualTest_RandomVariatorvariator)
+
+

Frees any resources associated with the variator.

+ +
+
+ +
+
+ + + + + + + + +
char* SDLVisualTest_GetNextRandomVariation (SDLVisualTest_RandomVariatorvariator)
+
+

Generates a new random variation.

+
Returns
The arguments string representing the random variation on success, and NULL on failure. The pointer returned should not be freed.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitRandomVariator (SDLVisualTest_RandomVariatorvariator,
SDLVisualTest_SUTConfigconfig,
Uint64 seed 
)
+
+

Initializes the variator.

+
Returns
1 on success, 0 on failure
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__random__variator_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__random__variator_8h_source.html new file mode 100755 index 0000000000..4ff7d4c28d --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__random__variator_8h_source.html @@ -0,0 +1,130 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_random_variator.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_random_variator.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+ + +
10 
+
11 #ifndef _SDL_visualtest_random_variator_h
+
12 #define _SDL_visualtest_random_variator_h
+
13 
+
14 /* Set up for C function definitions, even when using C++ */
+
15 #ifdef __cplusplus
+
16 extern "C" {
+
17 #endif
+
18 
+ +
24 {
+ + + + +
32 
+ +
39  SDLVisualTest_SUTConfig* config, Uint64 seed);
+
40 
+ +
48 
+ +
53 
+
54 /* Ends C function definitions when using C++ */
+
55 #ifdef __cplusplus
+
56 }
+
57 #endif
+
58 
+
59 #endif /* _SDL_visualtest_random_variator_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__rwhelper_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__rwhelper_8h_source.html new file mode 100755 index 0000000000..7accee6e6f --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__rwhelper_8h_source.html @@ -0,0 +1,137 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_rwhelper.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_rwhelper.h
+
+
+
1 /* See COPYING.txt for the full license governing this code. */
+
8 #include <SDL_rwops.h>
+
9 
+
10 #ifndef _SDL_visualtest_rwhelper_h
+
11 #define _SDL_visualtest_rwhelper_h
+
12 
+
14 #define RWOPS_BUFFER_LEN 256
+
15 
+
16 /* Set up for C function definitions, even when using C++ */
+
17 #ifdef __cplusplus
+
18 extern "C" {
+
19 #endif
+
20 
+ +
26 {
+
28  char buffer[RWOPS_BUFFER_LEN];
+ + + +
34 
+ +
41 
+
50 char SDLVisualTest_RWHelperReadChar(SDL_RWops* rw,
+ +
52 
+
65 char* SDLVisualTest_RWHelperReadLine(SDL_RWops* rw, char* str, int size,
+ +
67  char comment_char);
+
68 
+ + +
78  char comment_char);
+
79 
+
80 /* Ends C function definitions when using C++ */
+
81 #ifdef __cplusplus
+
82 }
+
83 #endif
+
84 
+
85 #endif /* _SDL_visualtest_rwhelper_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__screenshot_8h.html b/visualtest/docs/html/_s_d_l__visualtest__screenshot_8h.html new file mode 100755 index 0000000000..ed3dd03418 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__screenshot_8h.html @@ -0,0 +1,197 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_screenshot.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_screenshot.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

int SDLVisualTest_ScreenshotProcess (SDL_ProcessInfo *pinfo, char *prefix)
 
int SDLVisualTest_ScreenshotDesktop (char *filename)
 
int SDLVisualTest_VerifyScreenshots (char *args, char *test_dir, char *verify_dir)
 
+

Detailed Description

+

Header for the screenshot API.

+

Function Documentation

+ +
+
+ + + + + + + + +
int SDLVisualTest_ScreenshotDesktop (char * filename)
+
+

Takes a screenshot of the desktop and saves it into the file with path filename.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ScreenshotProcess (SDL_ProcessInfopinfo,
char * prefix 
)
+
+

Takes a screenshot of each window owned by the process pinfo and saves it in a file prefix-i.png where prefix is the full path to the file along with a prefix given to each screenshot.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_VerifyScreenshots (char * args,
char * test_dir,
char * verify_dir 
)
+
+

Compare a screenshot taken previously with SUT arguments args that is located in test_dir with a verification image that is located in verify_dir.

+
Returns
-1 on failure, 0 if the images were not equal, 1 if the images are equal and 2 if the verification image is not present.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__screenshot_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__screenshot_8h_source.html new file mode 100755 index 0000000000..a806a646f9 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__screenshot_8h_source.html @@ -0,0 +1,121 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_screenshot.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_screenshot.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+ +
9 
+
10 #ifndef _SDL_visualtest_screenshot_h
+
11 #define _SDL_visualtest_screenshot_h
+
12 
+
13 /* Set up for C function definitions, even when using C++ */
+
14 #ifdef __cplusplus
+
15 extern "C" {
+
16 #endif
+
17 
+
25 int SDLVisualTest_ScreenshotProcess(SDL_ProcessInfo* pinfo, char* prefix);
+
26 
+
33 int SDLVisualTest_ScreenshotDesktop(char* filename);
+
34 
+
43 int SDLVisualTest_VerifyScreenshots(char* args, char* test_dir, char* verify_dir);
+
44 
+
45 /* Ends C function definitions when using C++ */
+
46 #ifdef __cplusplus
+
47 }
+
48 #endif
+
49 
+
50 #endif /* _SDL_visualtest_screenshot_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h.html b/visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h.html new file mode 100755 index 0000000000..510ea33739 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h.html @@ -0,0 +1,317 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_sut_configparser.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_sut_configparser.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + +

+Data Structures

struct  SDLVisualTest_SUTIntRange
 
struct  SDLVisualTest_SUTOption
 
struct  SDLVisualTest_SUTConfig
 
+ + + + + + + + + +

+Macros

#define MAX_SUTOPTION_NAME_LEN   100
 
#define MAX_SUTOPTION_CATEGORY_LEN   40
 
#define MAX_SUTOPTION_ENUMVAL_LEN   40
 
#define MAX_SUTOPTION_LINE_LENGTH   256
 
+ + + + + + + +

+Typedefs

typedef struct
+SDLVisualTest_SUTIntRange 
SDLVisualTest_SUTIntRange
 
typedef struct
+SDLVisualTest_SUTOption 
SDLVisualTest_SUTOption
 
typedef struct
+SDLVisualTest_SUTConfig 
SDLVisualTest_SUTConfig
 
+ + + +

+Enumerations

enum  SDLVisualTest_SUTOptionType { SDL_SUT_OPTIONTYPE_STRING = 0, +SDL_SUT_OPTIONTYPE_INT, +SDL_SUT_OPTIONTYPE_ENUM, +SDL_SUT_OPTIONTYPE_BOOL + }
 
+ + + + + +

+Functions

int SDLVisualTest_ParseSUTConfig (char *file, SDLVisualTest_SUTConfig *config)
 
void SDLVisualTest_FreeSUTConfig (SDLVisualTest_SUTConfig *config)
 
+

Detailed Description

+

Header for the parser for SUT config files.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define MAX_SUTOPTION_CATEGORY_LEN   40
+
+

Maximum length of the name of a category of an SUT option

+ +
+
+ +
+
+ + + + +
#define MAX_SUTOPTION_ENUMVAL_LEN   40
+
+

Maximum length of one enum value of an SUT option

+ +
+
+ +
+
+ + + + +
#define MAX_SUTOPTION_LINE_LENGTH   256
+
+

Maximum length of a line in the paramters file

+ +
+
+ +
+
+ + + + +
#define MAX_SUTOPTION_NAME_LEN   100
+
+

Maximum length of the name of an SUT option

+ +
+
+

Typedef Documentation

+ +
+
+

Struct to hold all the options to an SUT application.

+ +
+
+ +
+
+

Represents the range of values an integer option can take.

+ +
+
+ +
+
+

Struct that defines an option to be passed to the SUT.

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum SDLVisualTest_SUTOptionType
+
+

Describes the different kinds of options to the SUT.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeSUTConfig (SDLVisualTest_SUTConfigconfig)
+
+

Free any resources associated with the config object pointed to by config.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ParseSUTConfig (char * file,
SDLVisualTest_SUTConfigconfig 
)
+
+

Parses a configuration file that describes the command line options an SUT application will take and populates a SUT config object. All lines in the config file must be smaller than

+
Parameters
+ + + +
filePath to the configuration file.
configPointer to an object that represents an SUT configuration.
+
+
+
Returns
zero on failure, non-zero on success
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h_source.html new file mode 100755 index 0000000000..39738533da --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__sut__configparser_8h_source.html @@ -0,0 +1,154 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_sut_configparser.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_sut_configparser.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+
8 #ifndef _SDL_visualtest_sut_configparser_h
+
9 #define _SDL_visualtest_sut_configparser_h
+
10 
+
12 #define MAX_SUTOPTION_NAME_LEN 100
+
13 
+
14 #define MAX_SUTOPTION_CATEGORY_LEN 40
+
15 
+
16 #define MAX_SUTOPTION_ENUMVAL_LEN 40
+
17 
+
18 #define MAX_SUTOPTION_LINE_LENGTH 256
+
19 
+
20 /* Set up for C function definitions, even when using C++ */
+
21 #ifdef __cplusplus
+
22 extern "C" {
+
23 #endif
+
24 
+
28 typedef enum {
+
29  SDL_SUT_OPTIONTYPE_STRING = 0,
+
30  SDL_SUT_OPTIONTYPE_INT,
+
31  SDL_SUT_OPTIONTYPE_ENUM,
+
32  SDL_SUT_OPTIONTYPE_BOOL
+ +
34 
+
38 typedef struct SDLVisualTest_SUTIntRange {
+
40  int min;
+
42  int max;
+ +
44 
+
48 typedef struct SDLVisualTest_SUTOption {
+ +
54  char** categories;
+ +
58  SDL_bool required;
+
60  union {
+ +
66  char** enum_values;
+
67  } data;
+ +
69 
+ +
74 {
+ + + +
80 
+ +
92 
+ +
97 
+
98 /* Ends C function definitions when using C++ */
+
99 #ifdef __cplusplus
+
100 }
+
101 #endif
+
102 
+
103 #endif /* _SDL_visualtest_sut_configparser_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__variator__common_8h.html b/visualtest/docs/html/_s_d_l__visualtest__variator__common_8h.html new file mode 100755 index 0000000000..018bcaa0bb --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__variator__common_8h.html @@ -0,0 +1,339 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_variator_common.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_variator_common.h File Reference
+
+
+
#include <SDL_types.h>
+#include "SDL_visualtest_sut_configparser.h"
+
+

Go to the source code of this file.

+ + + + + + +

+Data Structures

union  SDLVisualTest_SUTOptionValue
 
struct  SDLVisualTest_Variation
 
+ + + +

+Macros

#define SDL_SUT_INTEGER_OPTION_TEST_STEPS   3
 
+ + + + + + + +

+Typedefs

typedef enum
+SDLVisualTest_VariatorType 
SDLVisualTest_VariatorType
 
typedef union
+SDLVisualTest_SUTOptionValue 
SDLVisualTest_SUTOptionValue
 
typedef struct
+SDLVisualTest_Variation 
SDLVisualTest_Variation
 
+ + + +

+Enumerations

enum  SDLVisualTest_VariatorType { SDL_VARIATOR_NONE = 0, +SDL_VARIATOR_EXHAUSTIVE, +SDL_VARIATOR_RANDOM + }
 
+ + + + + + + +

+Functions

int SDLVisualTest_NextValue (SDLVisualTest_SUTOptionValue *var, SDLVisualTest_SUTOption *opt)
 
int SDLVisualTest_MakeStrFromVariation (SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config, char *buffer, int size)
 
int SDLVisualTest_InitVariation (SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config)
 
+

Detailed Description

+

Header for common functionality used by variators.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define SDL_SUT_INTEGER_OPTION_TEST_STEPS   3
+
+

The number of variations one integer option would generate

+ +
+
+

Typedef Documentation

+ +
+
+

One possible value for a command line option to the SUT.

+ +
+
+ +
+
+

Represents a valid combination of parameters that can be passed to the SUT. The ordering of the values here is the same as the ordering of the options in the SDLVisualTest_SUTConfig object for this variation.

+ +
+
+ +
+
+

enum for indicating the type of variator being used

+ +
+
+

Enumeration Type Documentation

+ +
+
+ + + + +
enum SDLVisualTest_VariatorType
+
+

enum for indicating the type of variator being used

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitVariation (SDLVisualTest_Variationvariation,
SDLVisualTest_SUTConfigconfig 
)
+
+

Initializes the variation using the following rules:

+
    +
  • Boolean options are initialized to SDL_FALSE.
  • +
  • Integer options are initialized to the minimum valid value they can hold.
  • +
  • Enum options are initialized to the first element in the list of values they can take.
  • +
  • String options are initialized to the name of the option.
  • +
+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_MakeStrFromVariation (SDLVisualTest_Variationvariation,
SDLVisualTest_SUTConfigconfig,
char * buffer,
int size 
)
+
+

Converts a variation object into a string of command line arguments.

+
Parameters
+ + + + + +
variationVariation object to be converted.
configConfig object for the SUT.
bufferPointer to the buffer the arguments string will be copied into.
sizeSize of the buffer.
+
+
+
Returns
1 on success, 0 on failure
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_NextValue (SDLVisualTest_SUTOptionValuevar,
SDLVisualTest_SUTOptionopt 
)
+
+

"Increments" the value of the option by one and returns the carry. We wrap around to the initial value on overflow which makes the carry one. For example: "incrementing" an SDL_FALSE option makes it SDL_TRUE with no carry, and "incrementing" an SDL_TRUE option makes it SDL_FALSE with carry one. For integers, a random value in the valid range for the option is used.

+
Parameters
+ + + +
varValue of the option
optObject with metadata about the option
+
+
+
Returns
1 if there is a carry for enum and bool type options, 0 otherwise. 1 is always returned for integer and string type options. -1 is returned on error.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__variator__common_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__variator__common_8h_source.html new file mode 100755 index 0000000000..be7fef254d --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__variator__common_8h_source.html @@ -0,0 +1,158 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_variator_common.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_variator_common.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+
8 #include <SDL_types.h>
+ +
10 
+
11 #ifndef _SDL_visualtest_variator_common_h
+
12 #define _SDL_visualtest_variator_common_h
+
13 
+
15 #define SDL_SUT_INTEGER_OPTION_TEST_STEPS 3
+
16 
+
17 /* Set up for C function definitions, even when using C++ */
+
18 #ifdef __cplusplus
+
19 extern "C" {
+
20 #endif
+
21 
+ +
24 {
+
25  SDL_VARIATOR_NONE = 0,
+
26  SDL_VARIATOR_EXHAUSTIVE,
+
27  SDL_VARIATOR_RANDOM
+ +
29 
+ +
34 {
+
36  SDL_bool bool_value;
+
39  struct {
+
40  int value;
+
41  SDL_bool on;
+
42  } integer;
+
46  struct {
+
47  int index;
+
48  SDL_bool on;
+
49  } enumerated;
+
52  struct {
+
53  char* value;
+
54  SDL_bool on;
+
55  } string;
+ +
57 
+ +
64 {
+ +
68  int num_vars;
+ +
70 
+ + +
87 
+ + +
100  char* buffer, int size);
+
101 
+ +
113  SDLVisualTest_SUTConfig* config);
+
114 
+
115 /* Ends C function definitions when using C++ */
+
116 #ifdef __cplusplus
+
117 }
+
118 #endif
+
119 
+
120 #endif /* _SDL_visualtest_variator_common_h */
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__variators_8h.html b/visualtest/docs/html/_s_d_l__visualtest__variators_8h.html new file mode 100755 index 0000000000..4c67f6d850 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__variators_8h.html @@ -0,0 +1,220 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_variators.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
SDL_visualtest_variators.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + +

+Data Structures

struct  SDLVisualTest_Variator
 
+ + + +

+Typedefs

typedef struct
+SDLVisualTest_Variator 
SDLVisualTest_Variator
 
+ + + + + + + +

+Functions

int SDLVisualTest_InitVariator (SDLVisualTest_Variator *variator, SDLVisualTest_SUTConfig *config, SDLVisualTest_VariatorType type, Uint64 seed)
 
char * SDLVisualTest_GetNextVariation (SDLVisualTest_Variator *variator)
 
void SDLVisualTest_FreeVariator (SDLVisualTest_Variator *variator)
 
+

Detailed Description

+

Header for all the variators that vary input parameters to a SUT application.

+

Typedef Documentation

+ +
+
+

Struct that acts like a wrapper around the different types of variators available.

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeVariator (SDLVisualTest_Variatorvariator)
+
+

Frees any resources associated with the variator.

+ +
+
+ +
+
+ + + + + + + + +
char* SDLVisualTest_GetNextVariation (SDLVisualTest_Variatorvariator)
+
+

Gets the next variation using the variator.

+
Returns
The arguments string representing the variation on success, and NULL on failure. The pointer returned should not be freed.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitVariator (SDLVisualTest_Variatorvariator,
SDLVisualTest_SUTConfigconfig,
SDLVisualTest_VariatorType type,
Uint64 seed 
)
+
+

Initializes the variator object pointed to by variator of type type with information from the config object pointed to by config.

+
Returns
1 on success, 0 on failure
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/_s_d_l__visualtest__variators_8h_source.html b/visualtest/docs/html/_s_d_l__visualtest__variators_8h_source.html new file mode 100755 index 0000000000..708dd12232 --- /dev/null +++ b/visualtest/docs/html/_s_d_l__visualtest__variators_8h_source.html @@ -0,0 +1,135 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include/SDL_visualtest_variators.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SDL_visualtest_variators.h
+
+
+Go to the documentation of this file.
1 /* See COPYING.txt for the full license governing this code. */
+ + +
10 
+
11 #ifndef _SDL_visualtest_variators_h
+
12 #define _SDL_visualtest_variators_h
+
13 
+
14 /* Set up for C function definitions, even when using C++ */
+
15 #ifdef __cplusplus
+
16 extern "C" {
+
17 #endif
+
18 
+
23 typedef struct SDLVisualTest_Variator
+
24 {
+ +
28  union
+
29  {
+ + +
32  } data;
+ +
34 
+ + + +
44  Uint64 seed);
+
45 
+ +
53 
+ +
58 
+
59 /* Ends C function definitions when using C++ */
+
60 #ifdef __cplusplus
+
61 }
+
62 #endif
+
63 
+
64 #endif /* _SDL_visualtest_variators_h */
+
+ + + + diff --git a/visualtest/docs/html/action__configparser_8c.html b/visualtest/docs/html/action__configparser_8c.html new file mode 100755 index 0000000000..b0844483dd --- /dev/null +++ b/visualtest/docs/html/action__configparser_8c.html @@ -0,0 +1,301 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/action_configparser.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
action_configparser.c File Reference
+
+
+
#include <SDL_stdinc.h>
+#include <SDL_test.h>
+#include <string.h>
+#include "SDL_visualtest_action_configparser.h"
+#include "SDL_visualtest_rwhelper.h"
+#include "SDL_visualtest_parsehelper.h"
+
+ + + + + + + + + + + + + + + + + +

+Functions

int SDLVisualTest_EnqueueAction (SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action)
 
int SDLVisualTest_DequeueAction (SDLVisualTest_ActionQueue *queue)
 
void SDLVisualTest_InitActionQueue (SDLVisualTest_ActionQueue *queue)
 
SDLVisualTest_ActionSDLVisualTest_GetQueueFront (SDLVisualTest_ActionQueue *queue)
 
int SDLVisualTest_IsActionQueueEmpty (SDLVisualTest_ActionQueue *queue)
 
void SDLVisualTest_EmptyActionQueue (SDLVisualTest_ActionQueue *queue)
 
int SDLVisualTest_InsertIntoActionQueue (SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action)
 
int SDLVisualTest_ParseActionConfig (char *file, SDLVisualTest_ActionQueue *queue)
 
+

Detailed Description

+

Source file for the parser for action config files.

+

Function Documentation

+ +
+
+ + + + + + + + +
int SDLVisualTest_DequeueAction (SDLVisualTest_ActionQueuequeue)
+
+

Remove an action from the front of the action queue pointed to by queue.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
void SDLVisualTest_EmptyActionQueue (SDLVisualTest_ActionQueuequeue)
+
+

Dequeues all the elements in the queque pointed to by queue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_EnqueueAction (SDLVisualTest_ActionQueuequeue,
SDLVisualTest_Action action 
)
+
+

Add an action pointed to by action to the rear of the action queue pointed to by queue.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
SDLVisualTest_Action* SDLVisualTest_GetQueueFront (SDLVisualTest_ActionQueuequeue)
+
+

Get the action at the front of the action queue pointed to by queue. The returned action pointer may become invalid after subsequent dequeues.

+
Returns
pointer to the action on success, NULL on failure.
+ +
+
+ +
+
+ + + + + + + + +
void SDLVisualTest_InitActionQueue (SDLVisualTest_ActionQueuequeue)
+
+

Initialize the action queue pointed to by queue.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InsertIntoActionQueue (SDLVisualTest_ActionQueuequeue,
SDLVisualTest_Action action 
)
+
+

Inserts an action action into the queue pointed to by queue such that the times of actions in the queue increase as we move from the front to the rear.

+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + +
int SDLVisualTest_IsActionQueueEmpty (SDLVisualTest_ActionQueuequeue)
+
+

Check if the queue pointed to by queue is empty or not.

+
Returns
1 if the queue is empty, 0 otherwise.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ParseActionConfig (char * file,
SDLVisualTest_ActionQueuequeue 
)
+
+

Parses an action config file with path file and populates an action queue pointed to by queue with actions.

+
Returns
1 on success, 0 on failure.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/annotated.html b/visualtest/docs/html/annotated.html new file mode 100755 index 0000000000..38448736eb --- /dev/null +++ b/visualtest/docs/html/annotated.html @@ -0,0 +1,114 @@ + + + + + + +SDL Visual Test: Data Structures + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
Data Structures
+
+ + + + + diff --git a/visualtest/docs/html/bc_s.png b/visualtest/docs/html/bc_s.png new file mode 100755 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/bdwn.png b/visualtest/docs/html/bdwn.png new file mode 100755 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + +SDL Visual Test: Data Structure Index + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
Data Structure Index
+
+ + + + + diff --git a/visualtest/docs/html/closed.png b/visualtest/docs/html/closed.png new file mode 100755 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/config_8h_source.html b/visualtest/docs/html/config_8h_source.html new file mode 100755 index 0000000000..25af01943d --- /dev/null +++ b/visualtest/docs/html/config_8h_source.html @@ -0,0 +1,117 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/config.h Source File + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
C:/Users/DELL/Work/sdlvisualtest/visualtest/config.h
+
+
+
1 /* config.h. Generated from config.h.in by configure. */
+
2 /* config.h.in. Generated from configure.in by autoheader. */
+
3 
+
4 /* Define to the address where bug reports for this package should be sent. */
+
5 #define PACKAGE_BUGREPORT "apoorvupreti@gmail.com"
+
6 
+
7 /* Define to the full name of this package. */
+
8 #define PACKAGE_NAME "sdlvisualtest"
+
9 
+
10 /* Define to the full name and version of this package. */
+
11 #define PACKAGE_STRING "sdlvisualtest 0.01"
+
12 
+
13 /* Define to the one symbol short name of this package. */
+
14 #define PACKAGE_TARNAME "sdlvisualtest"
+
15 
+
16 /* Define to the home page for this package. */
+
17 #define PACKAGE_URL ""
+
18 
+
19 /* Define to the version of this package. */
+
20 #define PACKAGE_VERSION "0.01"
+
21 
+
22 /* Define to empty if `const' does not conform to ANSI C. */
+
23 /* #undef const */
+
+ + + + diff --git a/visualtest/docs/html/dir_244674c763b96fdad0a6ffe8d0250e08.html b/visualtest/docs/html/dir_244674c763b96fdad0a6ffe8d0250e08.html new file mode 100755 index 0000000000..8720dd511e --- /dev/null +++ b/visualtest/docs/html/dir_244674c763b96fdad0a6ffe8d0250e08.html @@ -0,0 +1,98 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/unittest Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
unittest Directory Reference
+
+
+ + + + +

+Files

file  testquit.c
 
+
+ + + + diff --git a/visualtest/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/visualtest/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100755 index 0000000000..4795fcf2e0 --- /dev/null +++ b/visualtest/docs/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,127 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + + + + + +

+Directories

directory  linux
 
directory  windows
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  action_configparser.c
 
file  harness_argparser.c
 
file  mischelper.c
 
file  parsehelper.c
 
file  rwhelper.c
 
file  screenshot.c
 
file  sut_configparser.c
 
file  testharness.c
 
file  variator_common.c
 
file  variator_exhaustive.c
 
file  variator_random.c
 
file  variators.c
 
+
+ + + + diff --git a/visualtest/docs/html/dir_88e6415a3128b404f1102a130772bdb6.html b/visualtest/docs/html/dir_88e6415a3128b404f1102a130772bdb6.html new file mode 100755 index 0000000000..d16c732632 --- /dev/null +++ b/visualtest/docs/html/dir_88e6415a3128b404f1102a130772bdb6.html @@ -0,0 +1,98 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/linux Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
linux Directory Reference
+
+
+ + + + +

+Files

file  linux_process.c
 
+
+ + + + diff --git a/visualtest/docs/html/dir_a18918b93668b435612395bbc2e8b82b.html b/visualtest/docs/html/dir_a18918b93668b435612395bbc2e8b82b.html new file mode 100755 index 0000000000..73fd4b4708 --- /dev/null +++ b/visualtest/docs/html/dir_a18918b93668b435612395bbc2e8b82b.html @@ -0,0 +1,98 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/linux Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
linux Directory Reference
+
+
+ + + + +

+Files

file  linux_process.c
 
+
+ + + + diff --git a/visualtest/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/visualtest/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100755 index 0000000000..c2436fa5a6 --- /dev/null +++ b/visualtest/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,120 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
include Directory Reference
+
+ + + + + diff --git a/visualtest/docs/html/dir_f584182df4c69fab0b14563b4d535158.html b/visualtest/docs/html/dir_f584182df4c69fab0b14563b4d535158.html new file mode 100755 index 0000000000..7d85b92c99 --- /dev/null +++ b/visualtest/docs/html/dir_f584182df4c69fab0b14563b4d535158.html @@ -0,0 +1,100 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/windows Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
windows Directory Reference
+
+
+ + + + + + +

+Files

file  windows_process.c
 
file  windows_screenshot.c
 
+
+ + + + diff --git a/visualtest/docs/html/dir_fe549de2418b81853b5f194edb4a7f34.html b/visualtest/docs/html/dir_fe549de2418b81853b5f194edb4a7f34.html new file mode 100755 index 0000000000..a575feba65 --- /dev/null +++ b/visualtest/docs/html/dir_fe549de2418b81853b5f194edb4a7f34.html @@ -0,0 +1,98 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/windows Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + +
+ +
+ + +
+
+
+
windows Directory Reference
+
+
+ + + + +

+Files

file  windows_process.c
 
+
+ + + + diff --git a/visualtest/docs/html/doxygen.css b/visualtest/docs/html/doxygen.css new file mode 100755 index 0000000000..3ac2851134 --- /dev/null +++ b/visualtest/docs/html/doxygen.css @@ -0,0 +1,1186 @@ +/* The standard CSS for doxygen 1.8.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 0px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/visualtest/docs/html/doxygen.png b/visualtest/docs/html/doxygen.png new file mode 100755 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/dynsections.js b/visualtest/docs/html/dynsections.js new file mode 100755 index 0000000000..ed092c7f63 --- /dev/null +++ b/visualtest/docs/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + +SDL Visual Test: File List + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + +
+ + + + +
+ +
+ +
+
+
File List
+
+ + + + + diff --git a/visualtest/docs/html/ftv2blank.png b/visualtest/docs/html/ftv2blank.png new file mode 100755 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2cl.png b/visualtest/docs/html/ftv2cl.png new file mode 100755 index 0000000000000000000000000000000000000000..132f6577bf7f085344904602815a260d29f55d9b GIT binary patch literal 453 zcmV;$0XqJPP)VBF;ev;toEj8_OB0EQg5eYilIj#JZG_m^33l3^k4mtzx!TVD?g)Y$ zrvwRDSqT!wLIM$dWCIa$vtxE|mzbTzu-y&$FvF6WA2a{Wr1g}`WdPT-0JzEZ0IxAv z-Z+ejZc&H;I5-pb_SUB}04j0^V)3t{`z<7asDl2Tw3w3sP%)0^8$bhEg)IOTBcRXv zFfq~3&gvJ$F-U7mpBW8z1GY~HK&7h4^YI~Orv~wLnC0PP_dAkv;nzX{9Q|8Gv=2ca z@v)c9T;D#h`TZ2X&&$ff2wedmot995de~-s3I)yauahg;7qn*?1n?F$e+PwP37}~; z1NKUk7reVK^7A;$QRW7qAx40HHUZ<|k3U%nz(Ec`#i+q9K!dgcROAlCS?`L= v>#=f?wF5ZND!1uAfQsk;KN^4&*8~0npJiJ%2dj9(00000NkvXXu0mjfWVFf_ literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2doc.png b/visualtest/docs/html/ftv2doc.png new file mode 100755 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2folderclosed.png b/visualtest/docs/html/ftv2folderclosed.png new file mode 100755 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2lastnode.png b/visualtest/docs/html/ftv2lastnode.png new file mode 100755 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2link.png b/visualtest/docs/html/ftv2link.png new file mode 100755 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2mlastnode.png b/visualtest/docs/html/ftv2mlastnode.png new file mode 100755 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 GIT binary patch literal 246 zcmVkw!R34#Lv2LOS^S2tZA31X++9RY}n zChwn@Z)Wz*WWHH{)HDtJnq&A2hk$b-y(>?@z0iHr41EKCGp#T5?07*qoM6N<$f(V3Pvj6}9 literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2mnode.png b/visualtest/docs/html/ftv2mnode.png new file mode 100755 index 0000000000000000000000000000000000000000..0b63f6d38c4b9ec907b820192ebe9724ed6eca22 GIT binary patch literal 246 zcmVkw!R34#Lv2LOS^S2tZA31X++9RY}n zChwn@Z)Wz*WWHH{)HDtJnq&A2hk$b-y(>?@z0iHr41EKCGp#T5?07*qoM6N<$f(V3Pvj6}9 literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2mo.png b/visualtest/docs/html/ftv2mo.png new file mode 100755 index 0000000000000000000000000000000000000000..4bfb80f76e65815989a9350ad79d8ce45380e2b1 GIT binary patch literal 403 zcmV;E0c`$>P)${!fXv7NWJ%@%u4(KapRY>T6_x;E zxE7kt!}Tiw8@d9Sd`rTGum>z#Q14vIm`wm1#-byD1muMi02@YNO5LRF0o!Y{`a!Ya z{^&p0Su|s705&2QxmqdexG+-zNKL3f@8gTQSJrKByfo+oNJ^-{|Mn||Q5SDwjQVsS zr1}7o5-QMs>gYIMD>GRw@$lT`z4r-_m{5U#cR{urD_)TOeY)(UD|qZ^&y`IVijqk~ xs(9-kWFr7E^!lgi8GsFK5kOY_{Xbgf0^etEU%fLevs?fG002ovPDHLkV1nB&vX1}& literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2node.png b/visualtest/docs/html/ftv2node.png new file mode 100755 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2ns.png b/visualtest/docs/html/ftv2ns.png new file mode 100755 index 0000000000000000000000000000000000000000..72e3d71c2892d6f00e259facebc88b45f6db2e35 GIT binary patch literal 388 zcmV-~0ek+5P)f+++#cT|!CkD&4pnIkeMEUEM*>`*9>+Juji$!h-mW%M^8s9957{3nvbrz^&=u<~TAUrFROkmt%^F~Ez+-c53Lv%iH3d38!Rv?K zrb&MYAhp;Gf<}wS;9ZZq2@;!uYG;=Z>~GKE^{HD4keu}lnyqhc>kWX^tQn|warJ~h zT+rtMkdz6aHoN%z(o|&wpu@@OpJnF_z{PA)6(FHw02iHslz^(N{4*+K9)QJHR87wT iTyp>aXaF{u2lxRou|^4tux6eB0000^P)R?RzRoKvklcaQ%HF6%rK2&ZgO(-ihJ_C zzrKgp4jgO( fd_(yg|3PpEQb#9`a?Pz_00000NkvXXu0mjftR`5K literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2pnode.png b/visualtest/docs/html/ftv2pnode.png new file mode 100755 index 0000000000000000000000000000000000000000..c6ee22f937a07d1dbfc27c669d11f8ed13e2f152 GIT binary patch literal 229 zcmV^P)R?RzRoKvklcaQ%HF6%rK2&ZgO(-ihJ_C zzrKgp4jgO( fd_(yg|3PpEQb#9`a?Pz_00000NkvXXu0mjftR`5K literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2splitbar.png b/visualtest/docs/html/ftv2splitbar.png new file mode 100755 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/ftv2vertline.png b/visualtest/docs/html/ftv2vertline.png new file mode 100755 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRr!3HExu9B$%QnH>djv*C{Z|`mdau^P8_z}#X h?B8GEpdi4(BFDx$je&7RrDQEg&ePS;Wt~$(69Dh@6T1Ka literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/functions.html b/visualtest/docs/html/functions.html new file mode 100755 index 0000000000..98781fbd08 --- /dev/null +++ b/visualtest/docs/html/functions.html @@ -0,0 +1,309 @@ + + + + + + +SDL Visual Test: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + +
+ + + + +
+ +
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+ + + + diff --git a/visualtest/docs/html/functions_vars.html b/visualtest/docs/html/functions_vars.html new file mode 100755 index 0000000000..22983e40f4 --- /dev/null +++ b/visualtest/docs/html/functions_vars.html @@ -0,0 +1,309 @@ + + + + + + +SDL Visual Test: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + +
+ + + + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+ + + + diff --git a/visualtest/docs/html/globals.html b/visualtest/docs/html/globals.html new file mode 100755 index 0000000000..4844a74362 --- /dev/null +++ b/visualtest/docs/html/globals.html @@ -0,0 +1,395 @@ + + + + + + +SDL Visual Test: Globals + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + +
+ + + + +
+ +
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- a -

+ + +

- d -

+ + +

- k -

+ + +

- m -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/visualtest/docs/html/globals_defs.html b/visualtest/docs/html/globals_defs.html new file mode 100755 index 0000000000..ab7b0d81ec --- /dev/null +++ b/visualtest/docs/html/globals_defs.html @@ -0,0 +1,150 @@ + + + + + + +SDL Visual Test: Globals + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + +
+ + + + +
+ +
+ +
+
+ + + + diff --git a/visualtest/docs/html/globals_enum.html b/visualtest/docs/html/globals_enum.html new file mode 100755 index 0000000000..0f59b7f9e3 --- /dev/null +++ b/visualtest/docs/html/globals_enum.html @@ -0,0 +1,111 @@ + + + + + + +SDL Visual Test: Globals + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + +
+ + + + +
+ +
+ +
+
+ + + + diff --git a/visualtest/docs/html/globals_eval.html b/visualtest/docs/html/globals_eval.html new file mode 100755 index 0000000000..91b11bbaf6 --- /dev/null +++ b/visualtest/docs/html/globals_eval.html @@ -0,0 +1,117 @@ + + + + + + +SDL Visual Test: Globals + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + +
+ + + + +
+ +
+ +
+
+ + + + diff --git a/visualtest/docs/html/globals_func.html b/visualtest/docs/html/globals_func.html new file mode 100755 index 0000000000..2b6d690345 --- /dev/null +++ b/visualtest/docs/html/globals_func.html @@ -0,0 +1,261 @@ + + + + + + +SDL Visual Test: Globals + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + +
+ + + + +
+ +
+ +
+  + +

- m -

+ + +

- s -

+
+ + + + diff --git a/visualtest/docs/html/globals_type.html b/visualtest/docs/html/globals_type.html new file mode 100755 index 0000000000..af65e6eece --- /dev/null +++ b/visualtest/docs/html/globals_type.html @@ -0,0 +1,147 @@ + + + + + + +SDL Visual Test: Globals + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + +
+ + + + +
+ +
+ +
+
+ + + + diff --git a/visualtest/docs/html/harness__argparser_8c.html b/visualtest/docs/html/harness__argparser_8c.html new file mode 100755 index 0000000000..8048b33348 --- /dev/null +++ b/visualtest/docs/html/harness__argparser_8c.html @@ -0,0 +1,203 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/harness_argparser.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
harness_argparser.c File Reference
+
+
+
#include <SDL_test.h>
+#include <stdio.h>
+#include <string.h>
+#include "SDL_visualtest_harness_argparser.h"
+#include "SDL_visualtest_rwhelper.h"
+
+ + + + + +

+Macros

#define MAX_CONFIG_LINE_LEN   400
 
#define DEFAULT_SUT_TIMEOUT   (60 * 1000)
 
+ + + + + +

+Functions

int SDLVisualTest_ParseHarnessArgs (char **argv, SDLVisualTest_HarnessState *state)
 
void SDLVisualTest_FreeHarnessState (SDLVisualTest_HarnessState *state)
 
+

Detailed Description

+

Source file for functions to parse arguments to the test harness.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define DEFAULT_SUT_TIMEOUT   (60 * 1000)
+
+

Default value for the timeout after which the SUT is forcefully killed

+ +
+
+ +
+
+ + + + +
#define MAX_CONFIG_LINE_LEN   400
+
+

Maximum length of one line in the config file

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeHarnessState (SDLVisualTest_HarnessStatestate)
+
+

Frees any resources associated with the state object pointed to by state.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ParseHarnessArgs (char ** argv,
SDLVisualTest_HarnessStatestate 
)
+
+

Parse command line paramters to the test harness and populate a state object.

+
Parameters
+ + + +
argvThe array of command line parameters.
statePointer to the state object to be populated.
+
+
+
Returns
Non-zero on success, zero on failure.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/index.html b/visualtest/docs/html/index.html new file mode 100755 index 0000000000..231c3cc230 --- /dev/null +++ b/visualtest/docs/html/index.html @@ -0,0 +1,222 @@ + + + + + + +SDL Visual Test: Visual and Interactive Test Automation for SDL 2.0 + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + +
+ + + + +
+ +
+ +
+
+
Visual and Interactive Test Automation for SDL 2.0
+
+
+

+License

+

Check the file COPYING.txt for licensing information.

+

+Introduction

+

The goal of this GSoC project is to automate the testing of testsprite2. testsprite2 takes 26 parameters which have thousands of valid combinations and is used to validate SDL's window, mouse and rendering behaviour. By having a test harness that runs testsprite2 with various command line argument strings and validates the output for each run, we can make testing an easier task for maintainers, contributors and testers. The test harness can be used by a continuous integration system (like buildbot or jenkins) to validate SDL after checkins.

+

SDL Homepage: http://libsdl.org/

+

+Building

+

+Building on Linux/Cygwin

+

./autogen.sh; ./configure; make;

+

+Building on Windows

+

Use the Visual Studio solution under SDL/VisualC/visualtest.

+

+Documentation

+

Documentation is available via Doxygen. To build the documentation, cd to the SDL/visualtest/docs directory and run doxygen. A good starting point for exploring the documentation is SDL/visualtest/docs/html/index.html

+

+Usage

+

To see all the options supported by the test harness, just run testharness with no arguments.

+

At the moment the following options are supported:

+
    +
  • sutapp - Path to the system under test (SUT) application
  • +
  • sutargs - Launch the SUT with the specified arguments string
  • +
  • timeout - The maximum time after which the SUT process will be killed; passed as hh:mm:ss; default 00:01:00
  • +
  • variator - Which variator to use; see Variators
  • +
  • num-variations - The number of variations to run for; taken to be 1 for the random variator and ALL for the exhaustive variator by default
  • +
  • no-launch - Just print the arguments string for each variation without launching the SUT or performing any actions
  • +
  • parameter-config - A config file that describes the command line parameters supported by the SUT; see The SUT Parameters File or the sample *.parameters files for more details
  • +
  • action-config - A config file with a list of actions to be performed while the SUT is running; see The Actions File or the sample *.actions files
  • +
  • output-dir - Path to the directory where screenshots should be saved; is created if it doesn't exist; taken to be "./output" by default
  • +
  • verify-dir - Path to the directory with the verification images; taken to be "./verify" by default
  • +
+

Paths can be relative or absolute.

+

Alternatively, the options can be passed as a config file for convenience:

+

testharness --config testsprite2_sample.config

+

For a sample, take a look at the *.config files in this repository.

+

We can also pass a config file and override certain options as necessary: testharness --config testsprite2_sample.config --num-variations 10

+

Note: You may find it convenient to copy the SUT executable along with any resources to the test harness directory. Also note that testsprite2 and its resources (icon.bmp) are automatically copied when using the Visual Studio solution.

+

+Usage examples:

+

Passing a custom arguments string: testharness --sutapp testsprite2 --sutargs "\-\-cyclecolor \-\-blend mod +\-\-iterations 2" --action-config xyz.actions

+

Using the random variator: testharness --sutapp testsprite2 --variator random --num-variations 5 --parameter-config xyz.parameters --action-config xyz.actions

+

+Config Files

+

Config files are an alternate way to pass parameters to the test harness. We describe the paramters in a config file and pass that to the test harness using the --config option. The config file consists of lines of the form "x=y" where x is an option and y is it's value. For boolean options, we simply give the name of the option to indicate that it is to be passed to the testharness.

+

The hash '#' character can be used to start a comment from that point to the end of the line.

+

+The SUT Parameters File

+

To generate variations we need to describe the parameters the will be passed to the SUT. This description is given in a parameters file. Each line of the parameters file (except the blank lines) represents one command line option with five comma separated fields: name, type, values, required, categories

+
    +
  • name is the name of the option, e.g., --cyclecolor.
  • +
  • type can have one of three values - integer, boolean and enum.
  • +
  • values - for integer options this is the valid range of values the option can take, i.e., [min max]. For enum options this is a list of strings that the option can take, e.g., [val1 val2 val3]. For boolean options this field is ignored.
  • +
  • required - true if the option is required, false otherwise.
  • +
  • categories - a list of categories that the option belongs to. For example, [video mouse audio]
  • +
+

Just like with config files, hash characters can be used to start comments.

+

+Additional Notes

+
    +
  • If you want to have an option that always takes a certain value, use an enum with only one value.
  • +
  • Currently there isn't any way to turn an option off, i.e., all options will be included in the command line options string that is generated using the config. If you don't want an option to be passed to the SUT, remove it from the config file or comment it out.
  • +
+

+Variators

+

Variators are the mechanism by which we generate strings of command line arguments to test the SUT with. A variator is quite simply an iterator that iterates through different variations of command line options. There are two variators supported at the moment:

+
    +
  • Exhaustive - Generate all possible combinations of command line arguments that are valid.
  • +
  • Random - Generate a random variation each time the variator is called.
  • +
+

As an example, let's try a simple .parameters file:
+ --blend, enum, [add mod], false, []
+ --fullscreen, boolean, [], false, []

+

The exhaustive variator would generate the following four variations:
+ --blend add
+ --blend mod
+ --blend add --fullscreen
+ --blend mod --fullscreen
+

+

The random variator would simply generate a random variation like the following:
+ --blend mod

+

+The Actions File

+

Once the SUT process has been launched, automated testing happens using a mechanism called actions. A list of actions is read from a file and each action is performed on the SUT process sequentially. Each line in the actions file describes an action. The format for an action is hh:mm:ss ACTION_NAME additional parameters. There are five actions supported at the moment:

+
    +
  • SCREENSHOT - Takes a screenshot of each window owned by the SUT process. The images are saved as [hash]_[i].bmp where [hash] is the 32 character long hexadecimal MD5 hash of the arguments string that was passed to the SUT while launching it and i is the window number. i = 1 is an exceptional case where the _[i] is dropped and the filename is simply [hash].bmp
    + Note: The screenshots are only of the window's client area.
  • +
  • VERIFY - Verifies the screenshots taken by the last SCREENSHOT action by comparing them against a verification image. Each [hash]_i.bmp image output by the SCREENSHOT action is compared against a [hash].bmp image in the verify-dir.
  • +
  • QUIT - Gracefully quits the SUT process. On Windows this means sending a WM_CLOSE message to each window owned by the SUT process. On Linux it means sending a SIGQUIT signal to the SUT process.
  • +
  • KILL - Forcefully kills the SUT process. This is useful when the SUT process doesn't respond to the QUIT action.
  • +
  • LAUNCH [/path/to/executable] [args] - Runs an executable with [args] as the arguments string.
  • +
+

Just like with config files, hash characters can be used to start comments.

+

+Continuous Integration (CI)

+

One of the goals of the project was to create a test harness that integrates with CI systems to provide automated visual and interactive testing to SDL.

+

At the moment the test harness can be run in two modes that are useful for CI:

+
    +
  • Crash testing mode - launch the SUT with every variation and all parameters, report to the CI if there's a crash
  • +
  • Visual testing mode - launch and visually verify the SUT for a smaller subset of the parameters
  • +
+

Look at the launch_harness.sh/launch_harness.cmd for an example scripts that run the test harness for all variations with all parameters and report an error on a crash. The script uses the testsprite2_crashtest config, so remember to copy those files over to the test harness executable directory along with the script.

+

+TODOs

+
    +
  • Allow specifying a clipping box along with the VERIFY action, i.e., hh:mm:ss VERIFY x, y, w, h
  • +
  • Add support for spaces between the equals sign in test harness config files
  • +
  • Implement the SCREENSHOT action on Linux
  • +
  • Add a pairwise variator
  • +
  • Add actions to inject keyboard/mouse events
  • +
  • Add actions to manipulate the SUT window, e.g., minimize, restore, resize
  • +
  • Add support to load and save screenshots as .pngs instead of .bmps
  • +
+

+Known Issues

+
    +
  • The QUIT action does not work on a testsprite2 process with multiple windows. This appears to be an issue with testsprite2.
  • +
  • The SCREENSHOT action doesn't capture the testsprite2 window correctly if the –fullscreen option is supplied. It works with –fullscreen-desktop, however.
  • +
+

+More Information

+

Author Contact Info:
+ Apoorv Upreti <apoor.nosp@m.vupr.nosp@m.eti@g.nosp@m.mail.nosp@m..com>

+

Other useful links:

+ +
+ + + + diff --git a/visualtest/docs/html/jquery.js b/visualtest/docs/html/jquery.js new file mode 100755 index 0000000000..c197801c5d --- /dev/null +++ b/visualtest/docs/html/jquery.js @@ -0,0 +1,31 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType; +if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1 +},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av); +ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length; +if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b +})}})(window); diff --git a/visualtest/docs/html/linux__process_8c.html b/visualtest/docs/html/linux__process_8c.html new file mode 100755 index 0000000000..fa15ec9138 --- /dev/null +++ b/visualtest/docs/html/linux__process_8c.html @@ -0,0 +1,109 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/linux/linux_process.c File Reference + + + + + + + + + +
+
+
+ + + + + +
+
SDL Visual Test +
+
+ + + + + + + + + + +
+ +
+ + + +
+
+
linux_process.c File Reference
+
+
+
#include <SDL.h>
+#include <SDL_test.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <unistd.h>
+#include <errno.h>
+#include "SDL_visualtest_process.h"
+#include "SDL_visualtest_harness_argparser.h"
+#include "SDL_visualtest_parsehelper.h"
+

Detailed Description

+

Source file for the process API on linux.

+
+ + + + diff --git a/visualtest/docs/html/mischelper_8c.html b/visualtest/docs/html/mischelper_8c.html new file mode 100755 index 0000000000..18fbc3fc38 --- /dev/null +++ b/visualtest/docs/html/mischelper_8c.html @@ -0,0 +1,138 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/mischelper.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
mischelper.c File Reference
+
+
+
#include <SDL_test.h>
+
+ + + +

+Functions

void SDLVisualTest_HashString (char *str, char hash[33])
 
+

Detailed Description

+

Header with miscellaneous helper functions.

+

Source file with miscellaneous helper functions.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void SDLVisualTest_HashString (char * str,
char hash[33] 
)
+
+

Stores a 32 digit hexadecimal string representing the MD5 hash of the string str in hash.

+ +
+
+
+ + + + diff --git a/visualtest/docs/html/nav_f.png b/visualtest/docs/html/nav_f.png new file mode 100755 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/nav_g.png b/visualtest/docs/html/nav_g.png new file mode 100755 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/parsehelper.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
parsehelper.c File Reference
+
+
+
#include <SDL_test.h>
+#include "SDL_visualtest_harness_argparser.h"
+
+ + + + + +

+Functions

char ** SDLVisualTest_Tokenize (char *str, int max_token_len)
 
char ** SDLVisualTest_ParseArgsToArgv (char *args)
 
+

Detailed Description

+

Source file with some helper functions for parsing strings.

+

Function Documentation

+ +
+
+ + + + + + + + +
char** SDLVisualTest_ParseArgsToArgv (char * args)
+
+

Takes an string of command line arguments and breaks them up into an array based on whitespace.

+
Parameters
+ + +
argsThe string of arguments.
+
+
+
Returns
NULL on failure, an array of strings on success. The last element of the array is NULL. The first element of the array is NULL and should be set to the path of the executable by the caller.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char** SDLVisualTest_Tokenize (char * str,
int max_token_len 
)
+
+

Takes a string and breaks it into tokens by splitting on whitespace.

+
Parameters
+ + + +
strThe string to be split.
max_token_lenLength of each element in the array to be returned.
+
+
+
Returns
NULL on failure; an array of strings with the tokens on success. The last element of the array is NULL.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/rwhelper_8c.html b/visualtest/docs/html/rwhelper_8c.html new file mode 100755 index 0000000000..417d79e9e2 --- /dev/null +++ b/visualtest/docs/html/rwhelper_8c.html @@ -0,0 +1,244 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/rwhelper.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
rwhelper.c File Reference
+
+
+
#include <SDL_test.h>
+#include "SDL_visualtest_sut_configparser.h"
+#include "SDL_visualtest_rwhelper.h"
+
+ + + + + + + + + +

+Functions

void SDLVisualTest_RWHelperResetBuffer (SDLVisualTest_RWHelperBuffer *buffer)
 
char SDLVisualTest_RWHelperReadChar (SDL_RWops *rw, SDLVisualTest_RWHelperBuffer *buffer)
 
char * SDLVisualTest_RWHelperReadLine (SDL_RWops *rw, char *str, int size, SDLVisualTest_RWHelperBuffer *buffer, char comment_char)
 
int SDLVisualTest_RWHelperCountNonEmptyLines (SDL_RWops *rw, SDLVisualTest_RWHelperBuffer *buffer, char comment_char)
 
+

Detailed Description

+

Header file with some helper functions for working with SDL_RWops.

+

Source file with some helper functions for working with SDL_RWops.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_RWHelperCountNonEmptyLines (SDL_RWops * rw,
SDLVisualTest_RWHelperBufferbuffer,
char comment_char 
)
+
+

Counts the number of lines that are not all whitespace and comments using the SDL_RWops object pointed to by rw. comment_char indicates the character used for comments. Uses the buffer pointed to by buffer to read data in blocks.

+
Returns
Number of lines on success, -1 on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
char SDLVisualTest_RWHelperReadChar (SDL_RWops * rw,
SDLVisualTest_RWHelperBufferbuffer 
)
+
+

Reads a single character using the SDL_RWops object pointed to by rw. This function reads data in blocks and stores them in the buffer pointed to by buffer, so other SDL_RWops functions should not be used in conjunction with this function.

+
Returns
The character that was read.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
char* SDLVisualTest_RWHelperReadLine (SDL_RWops * rw,
char * str,
int size,
SDLVisualTest_RWHelperBufferbuffer,
char comment_char 
)
+
+

Reads characters using the SDL_RWops object pointed to by rw into the character array pointed to by str (of size size) until either the array is full or a new line is encountered. If comment_char is encountered, all characters from that position till the end of the line are ignored. The new line is not included as part of the buffer. Lines with only whitespace and comments are ignored. This function reads data in blocks and stores them in the buffer pointed to by buffer, so other SDL_RWops functions should not be used in conjunction with this function.

+
Returns
pointer to the string on success, NULL on failure or EOF.
+ +
+
+ +
+
+ + + + + + + + +
void SDLVisualTest_RWHelperResetBuffer (SDLVisualTest_RWHelperBufferbuffer)
+
+

Resets the buffer pointed to by buffer used by some of the helper functions. This function should be called when you're using one of the helper functions with a new SDL_RWops object.

+ +
+
+
+ + + + diff --git a/visualtest/docs/html/screenshot_8c.html b/visualtest/docs/html/screenshot_8c.html new file mode 100755 index 0000000000..2ff8029413 --- /dev/null +++ b/visualtest/docs/html/screenshot_8c.html @@ -0,0 +1,145 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/screenshot.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
screenshot.c File Reference
+
+
+
#include "SDL_visualtest_mischelper.h"
+#include <SDL_test.h>
+
+ + + +

+Functions

int SDLVisualTest_VerifyScreenshots (char *args, char *test_dir, char *verify_dir)
 
+

Detailed Description

+

Source file for the screenshot API.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_VerifyScreenshots (char * args,
char * test_dir,
char * verify_dir 
)
+
+

Compare a screenshot taken previously with SUT arguments args that is located in test_dir with a verification image that is located in verify_dir.

+
Returns
-1 on failure, 0 if the images were not equal, 1 if the images are equal and 2 if the verification image is not present.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/search/all_61.html b/visualtest/docs/html/search/all_61.html new file mode 100755 index 0000000000..a78c8f988d --- /dev/null +++ b/visualtest/docs/html/search/all_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_61.js b/visualtest/docs/html/search/all_61.js new file mode 100755 index 0000000000..321716292c --- /dev/null +++ b/visualtest/docs/html/search/all_61.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['action',['action',['../struct_s_d_l_visual_test___action_node.html#af46ec45094cc74a7432626a6234c6575',1,'SDLVisualTest_ActionNode']]], + ['action_5fconfigparser_2ec',['action_configparser.c',['../action__configparser_8c.html',1,'']]], + ['action_5floop_5ffps',['ACTION_LOOP_FPS',['../testharness_8c.html#a70102426e83ed3944f9c060bd82fb54e',1,'testharness.c']]], + ['action_5fqueue',['action_queue',['../struct_s_d_l_visual_test___harness_state.html#ae25567527563fbd7373fa1cf7cdede61',1,'SDLVisualTest_HarnessState']]], + ['action_5ftimer_5fevent',['ACTION_TIMER_EVENT',['../testharness_8c.html#a0d1d5d1394089a10f0147ed2b89c1165',1,'testharness.c']]] +]; diff --git a/visualtest/docs/html/search/all_62.html b/visualtest/docs/html/search/all_62.html new file mode 100755 index 0000000000..29fe20787f --- /dev/null +++ b/visualtest/docs/html/search/all_62.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_62.js b/visualtest/docs/html/search/all_62.js new file mode 100755 index 0000000000..d614f7b3f1 --- /dev/null +++ b/visualtest/docs/html/search/all_62.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['bool_5fvalue',['bool_value',['../union_s_d_l_visual_test___s_u_t_option_value.html#ace8ec6519c056e35443a6c401f3d0941',1,'SDLVisualTest_SUTOptionValue']]], + ['buffer',['buffer',['../struct_s_d_l_visual_test___exhaustive_variator.html#a2b599af5b00be0f525ffc18feb0775a8',1,'SDLVisualTest_ExhaustiveVariator::buffer()'],['../struct_s_d_l_visual_test___random_variator.html#a2b599af5b00be0f525ffc18feb0775a8',1,'SDLVisualTest_RandomVariator::buffer()'],['../struct_s_d_l_visual_test___r_w_helper_buffer.html#a5b528063c1aaa0e626f5d5e49de5baad',1,'SDLVisualTest_RWHelperBuffer::buffer()']]], + ['buffer_5fpos',['buffer_pos',['../struct_s_d_l_visual_test___r_w_helper_buffer.html#a8a37d41b7b076eced766d7418450477d',1,'SDLVisualTest_RWHelperBuffer']]], + ['buffer_5fwidth',['buffer_width',['../struct_s_d_l_visual_test___r_w_helper_buffer.html#adb2920cd89b7b8b8b014290e82746d8c',1,'SDLVisualTest_RWHelperBuffer']]] +]; diff --git a/visualtest/docs/html/search/all_63.html b/visualtest/docs/html/search/all_63.html new file mode 100755 index 0000000000..a46f89492f --- /dev/null +++ b/visualtest/docs/html/search/all_63.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_63.js b/visualtest/docs/html/search/all_63.js new file mode 100755 index 0000000000..dcc5243ac9 --- /dev/null +++ b/visualtest/docs/html/search/all_63.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['categories',['categories',['../struct_s_d_l_visual_test___s_u_t_option.html#a6744d43d3ad17d06068dba9ee7b78c83',1,'SDLVisualTest_SUTOption']]], + ['config',['config',['../struct_s_d_l_visual_test___exhaustive_variator.html#ab66b4220589b2e2b6e1fde7d6c20bd72',1,'SDLVisualTest_ExhaustiveVariator::config()'],['../struct_s_d_l_visual_test___random_variator.html#ab66b4220589b2e2b6e1fde7d6c20bd72',1,'SDLVisualTest_RandomVariator::config()']]] +]; diff --git a/visualtest/docs/html/search/all_64.html b/visualtest/docs/html/search/all_64.html new file mode 100755 index 0000000000..6482501511 --- /dev/null +++ b/visualtest/docs/html/search/all_64.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_64.js b/visualtest/docs/html/search/all_64.js new file mode 100755 index 0000000000..5ab8d34644 --- /dev/null +++ b/visualtest/docs/html/search/all_64.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data',['data',['../struct_s_d_l_visual_test___s_u_t_option.html#aa9545bd4acd476f61533d04d53cdffdc',1,'SDLVisualTest_SUTOption::data()'],['../struct_s_d_l_visual_test___variator.html#af99a8790e729d599c656a2070e672e9a',1,'SDLVisualTest_Variator::data()']]], + ['default_5fsut_5ftimeout',['DEFAULT_SUT_TIMEOUT',['../harness__argparser_8c.html#a6669f8e5a07e7a0e4622dd23362831e7',1,'harness_argparser.c']]] +]; diff --git a/visualtest/docs/html/search/all_65.html b/visualtest/docs/html/search/all_65.html new file mode 100755 index 0000000000..9004138c3c --- /dev/null +++ b/visualtest/docs/html/search/all_65.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_65.js b/visualtest/docs/html/search/all_65.js new file mode 100755 index 0000000000..f1c225b11f --- /dev/null +++ b/visualtest/docs/html/search/all_65.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['enum_5fvalues',['enum_values',['../struct_s_d_l_visual_test___s_u_t_option.html#a596ff3567c4b736561dba1915a2cd38d',1,'SDLVisualTest_SUTOption']]], + ['enumerated',['enumerated',['../union_s_d_l_visual_test___s_u_t_option_value.html#ad40e26afd4b8532327b61897d5b009e3',1,'SDLVisualTest_SUTOptionValue']]], + ['exit_5fstatus',['exit_status',['../struct_s_d_l___process_exit_status.html#a9324a9ff7dc6697dd77f02998d5e77d7',1,'SDL_ProcessExitStatus']]], + ['exit_5fsuccess',['exit_success',['../struct_s_d_l___process_exit_status.html#a51df50c07437f2e816d6ce7ce99e1cac',1,'SDL_ProcessExitStatus']]], + ['extra',['extra',['../struct_s_d_l_visual_test___action.html#a4626514a67f261290b54fb3d85ca8ddd',1,'SDLVisualTest_Action']]] +]; diff --git a/visualtest/docs/html/search/all_66.html b/visualtest/docs/html/search/all_66.html new file mode 100755 index 0000000000..5e2635f6c1 --- /dev/null +++ b/visualtest/docs/html/search/all_66.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_66.js b/visualtest/docs/html/search/all_66.js new file mode 100755 index 0000000000..d89c380304 --- /dev/null +++ b/visualtest/docs/html/search/all_66.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['front',['front',['../struct_s_d_l_visual_test___action_queue.html#a8b810b2fd2b05698be642ee08836a452',1,'SDLVisualTest_ActionQueue']]] +]; diff --git a/visualtest/docs/html/search/all_68.html b/visualtest/docs/html/search/all_68.html new file mode 100755 index 0000000000..2db11df90d --- /dev/null +++ b/visualtest/docs/html/search/all_68.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_68.js b/visualtest/docs/html/search/all_68.js new file mode 100755 index 0000000000..c2615b10c1 --- /dev/null +++ b/visualtest/docs/html/search/all_68.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['harness_5fargparser_2ec',['harness_argparser.c',['../harness__argparser_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/all_69.html b/visualtest/docs/html/search/all_69.html new file mode 100755 index 0000000000..b8c8306103 --- /dev/null +++ b/visualtest/docs/html/search/all_69.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_69.js b/visualtest/docs/html/search/all_69.js new file mode 100755 index 0000000000..d88f651d5a --- /dev/null +++ b/visualtest/docs/html/search/all_69.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['integer',['integer',['../union_s_d_l_visual_test___s_u_t_option_value.html#a4291d9ad3cfb3fe1645ea2732e11d68a',1,'SDLVisualTest_SUTOptionValue']]] +]; diff --git a/visualtest/docs/html/search/all_6b.html b/visualtest/docs/html/search/all_6b.html new file mode 100755 index 0000000000..f4b97caa7e --- /dev/null +++ b/visualtest/docs/html/search/all_6b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_6b.js b/visualtest/docs/html/search/all_6b.js new file mode 100755 index 0000000000..831fa2c4e4 --- /dev/null +++ b/visualtest/docs/html/search/all_6b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kill_5ftimer_5fevent',['KILL_TIMER_EVENT',['../testharness_8c.html#acdc6cb4935ca89fbe3fda31a8f533b9a',1,'testharness.c']]] +]; diff --git a/visualtest/docs/html/search/all_6c.html b/visualtest/docs/html/search/all_6c.html new file mode 100755 index 0000000000..131c91938f --- /dev/null +++ b/visualtest/docs/html/search/all_6c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_6c.js b/visualtest/docs/html/search/all_6c.js new file mode 100755 index 0000000000..f6a1353d11 --- /dev/null +++ b/visualtest/docs/html/search/all_6c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linux_5fprocess_2ec',['linux_process.c',['../linux__process_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/all_6d.html b/visualtest/docs/html/search/all_6d.html new file mode 100755 index 0000000000..650f0402c7 --- /dev/null +++ b/visualtest/docs/html/search/all_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_6d.js b/visualtest/docs/html/search/all_6d.js new file mode 100755 index 0000000000..bda2e469fc --- /dev/null +++ b/visualtest/docs/html/search/all_6d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['main',['main',['../testharness_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'testharness.c']]], + ['max',['max',['../struct_s_d_l_visual_test___s_u_t_int_range.html#ae1e1dde676c120fa6d10f3bb2c14059e',1,'SDLVisualTest_SUTIntRange']]], + ['max_5faction_5fline_5flength',['MAX_ACTION_LINE_LENGTH',['../_s_d_l__visualtest__action__configparser_8h.html#a19244c2e1556665be344807ace1556ed',1,'SDL_visualtest_action_configparser.h']]], + ['max_5fconfig_5fline_5flen',['MAX_CONFIG_LINE_LEN',['../harness__argparser_8c.html#a7186273cd88640b740b6333cd98ae243',1,'harness_argparser.c']]], + ['max_5fpath_5flen',['MAX_PATH_LEN',['../_s_d_l__visualtest__harness__argparser_8h.html#abdd33f362ae3bbdacb5de76473aa8a2f',1,'SDL_visualtest_harness_argparser.h']]], + ['max_5fsut_5fargs_5flen',['MAX_SUT_ARGS_LEN',['../_s_d_l__visualtest__harness__argparser_8h.html#a8485cbda108eca56406d67aaa685fcc5',1,'SDL_visualtest_harness_argparser.h']]], + ['max_5fsutoption_5fcategory_5flen',['MAX_SUTOPTION_CATEGORY_LEN',['../_s_d_l__visualtest__sut__configparser_8h.html#a21a678ced8cdf55b4cc70ad398bf33b6',1,'SDL_visualtest_sut_configparser.h']]], + ['max_5fsutoption_5fenumval_5flen',['MAX_SUTOPTION_ENUMVAL_LEN',['../_s_d_l__visualtest__sut__configparser_8h.html#a6c700fc8ff02cfa0c795b9593f86b9a0',1,'SDL_visualtest_sut_configparser.h']]], + ['max_5fsutoption_5fline_5flength',['MAX_SUTOPTION_LINE_LENGTH',['../_s_d_l__visualtest__sut__configparser_8h.html#a8f1a5749af5a592b30a194c72d848f75',1,'SDL_visualtest_sut_configparser.h']]], + ['max_5fsutoption_5fname_5flen',['MAX_SUTOPTION_NAME_LEN',['../_s_d_l__visualtest__sut__configparser_8h.html#a0a8b0c1f8eee787abf09bf3a840eccc7',1,'SDL_visualtest_sut_configparser.h']]], + ['min',['min',['../struct_s_d_l_visual_test___s_u_t_int_range.html#a3e202b201e6255d975cd6d3aff1f5a4d',1,'SDLVisualTest_SUTIntRange']]], + ['mischelper_2ec',['mischelper.c',['../mischelper_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/all_6e.html b/visualtest/docs/html/search/all_6e.html new file mode 100755 index 0000000000..114330ba56 --- /dev/null +++ b/visualtest/docs/html/search/all_6e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_6e.js b/visualtest/docs/html/search/all_6e.js new file mode 100755 index 0000000000..7f75305724 --- /dev/null +++ b/visualtest/docs/html/search/all_6e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['name',['name',['../struct_s_d_l_visual_test___s_u_t_option.html#ad14ca616d8f7c9b61eff58baaead7f1f',1,'SDLVisualTest_SUTOption']]], + ['next',['next',['../struct_s_d_l_visual_test___action_node.html#ae6154b60b896ce1a184d060ee4664485',1,'SDLVisualTest_ActionNode']]], + ['no_5flaunch',['no_launch',['../struct_s_d_l_visual_test___harness_state.html#a091c0d08290b73216a736ff42ac8fa99',1,'SDLVisualTest_HarnessState']]], + ['num_5foptions',['num_options',['../struct_s_d_l_visual_test___s_u_t_config.html#a593108c2cc4b7dd3edecefd724edfd51',1,'SDLVisualTest_SUTConfig']]], + ['num_5fvariations',['num_variations',['../struct_s_d_l_visual_test___harness_state.html#a0bd4e04c0c6be7b94e68501bb31dd62c',1,'SDLVisualTest_HarnessState']]], + ['num_5fvars',['num_vars',['../struct_s_d_l_visual_test___variation.html#a2daded0b80f9ab7ed3703cc2686e5a92',1,'SDLVisualTest_Variation']]] +]; diff --git a/visualtest/docs/html/search/all_6f.html b/visualtest/docs/html/search/all_6f.html new file mode 100755 index 0000000000..958ab689da --- /dev/null +++ b/visualtest/docs/html/search/all_6f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_6f.js b/visualtest/docs/html/search/all_6f.js new file mode 100755 index 0000000000..35f6f85420 --- /dev/null +++ b/visualtest/docs/html/search/all_6f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['options',['options',['../struct_s_d_l_visual_test___s_u_t_config.html#afda1bef370f3d5ea6919b7b6a73d01c0',1,'SDLVisualTest_SUTConfig']]], + ['output_5fdir',['output_dir',['../struct_s_d_l_visual_test___harness_state.html#aafa9a2fb15490380b6c2edd704f4fcf0',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/search/all_70.html b/visualtest/docs/html/search/all_70.html new file mode 100755 index 0000000000..a28cb54661 --- /dev/null +++ b/visualtest/docs/html/search/all_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_70.js b/visualtest/docs/html/search/all_70.js new file mode 100755 index 0000000000..38c5827e21 --- /dev/null +++ b/visualtest/docs/html/search/all_70.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['parsehelper_2ec',['parsehelper.c',['../parsehelper_8c.html',1,'']]], + ['process',['process',['../struct_s_d_l_visual_test___action.html#aa43e9883c9f24718f49b984b67b1afdc',1,'SDLVisualTest_Action']]] +]; diff --git a/visualtest/docs/html/search/all_72.html b/visualtest/docs/html/search/all_72.html new file mode 100755 index 0000000000..d03b8a575c --- /dev/null +++ b/visualtest/docs/html/search/all_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_72.js b/visualtest/docs/html/search/all_72.js new file mode 100755 index 0000000000..2216614a43 --- /dev/null +++ b/visualtest/docs/html/search/all_72.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['range',['range',['../struct_s_d_l_visual_test___s_u_t_option.html#a2bb1301268866e0e41d035ea0a4914e8',1,'SDLVisualTest_SUTOption']]], + ['rear',['rear',['../struct_s_d_l_visual_test___action_queue.html#a4aaf4563956932c81c65d05f9020f2ce',1,'SDLVisualTest_ActionQueue']]], + ['required',['required',['../struct_s_d_l_visual_test___s_u_t_option.html#a79305c1b10f7b4defee52e1eefde8fbc',1,'SDLVisualTest_SUTOption']]], + ['rwhelper_2ec',['rwhelper.c',['../rwhelper_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/all_73.html b/visualtest/docs/html/search/all_73.html new file mode 100755 index 0000000000..a15b975fdc --- /dev/null +++ b/visualtest/docs/html/search/all_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_73.js b/visualtest/docs/html/search/all_73.js new file mode 100755 index 0000000000..50733e93bf --- /dev/null +++ b/visualtest/docs/html/search/all_73.js @@ -0,0 +1,83 @@ +var searchData= +[ + ['screenshot_2ec',['screenshot.c',['../screenshot_8c.html',1,'']]], + ['sdl_5faction_5fkill',['SDL_ACTION_KILL',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6a87880c4f665344d4c3e12f9aa3af7410',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5flaunch',['SDL_ACTION_LAUNCH',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6ac5344bca6af9c07c4ee69ee4c2b18df2',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5fquit',['SDL_ACTION_QUIT',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6ad3d17a830b7e1e46e37d916130d8802a',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5fscreenshot',['SDL_ACTION_SCREENSHOT',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6af9b5d42cb90bf843f298be4593992fdb',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5fverify',['SDL_ACTION_VERIFY',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6a0853f8be8363015b822658b9f3b013f4',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5fgetprocessexitstatus',['SDL_GetProcessExitStatus',['../_s_d_l__visualtest__process_8h.html#a54545d6b9f737a14030b4ce55ddd4a62',1,'SDL_visualtest_process.h']]], + ['sdl_5fisprocessrunning',['SDL_IsProcessRunning',['../_s_d_l__visualtest__process_8h.html#a3a131140a71bf68fa68a900f06872239',1,'SDL_visualtest_process.h']]], + ['sdl_5fkillprocess',['SDL_KillProcess',['../_s_d_l__visualtest__process_8h.html#ae66242e44a004831ab231693fd11c8d0',1,'SDL_visualtest_process.h']]], + ['sdl_5flaunchprocess',['SDL_LaunchProcess',['../_s_d_l__visualtest__process_8h.html#a12c16e5b870e2794d6bd5a1a3bb4582f',1,'SDL_visualtest_process.h']]], + ['sdl_5fprocessexitstatus',['SDL_ProcessExitStatus',['../struct_s_d_l___process_exit_status.html',1,'SDL_ProcessExitStatus'],['../_s_d_l__visualtest__process_8h.html#a5b7d5262f85e78bf4d53d88f3c509342',1,'SDL_ProcessExitStatus(): SDL_visualtest_process.h']]], + ['sdl_5fprocessinfo',['SDL_ProcessInfo',['../struct_s_d_l___process_info.html',1,'SDL_ProcessInfo'],['../_s_d_l__visualtest__process_8h.html#a94bc9e0b0b563a527ea50ef2eecd5402',1,'SDL_ProcessInfo(): SDL_visualtest_process.h']]], + ['sdl_5fquitprocess',['SDL_QuitProcess',['../_s_d_l__visualtest__process_8h.html#ad8a5b6725ad1f0e1bac623cf4b6fc28d',1,'SDL_visualtest_process.h']]], + ['sdl_5fsut_5finteger_5foption_5ftest_5fsteps',['SDL_SUT_INTEGER_OPTION_TEST_STEPS',['../_s_d_l__visualtest__variator__common_8h.html#afcdce86a10fbcdc9f3e47c47b70e3ea3',1,'SDL_visualtest_variator_common.h']]], + ['sdl_5fvisualtest_5faction_5fconfigparser_2eh',['SDL_visualtest_action_configparser.h',['../_s_d_l__visualtest__action__configparser_8h.html',1,'']]], + ['sdl_5fvisualtest_5fexhaustive_5fvariator_2eh',['SDL_visualtest_exhaustive_variator.h',['../_s_d_l__visualtest__exhaustive__variator_8h.html',1,'']]], + ['sdl_5fvisualtest_5fharness_5fargparser_2eh',['SDL_visualtest_harness_argparser.h',['../_s_d_l__visualtest__harness__argparser_8h.html',1,'']]], + ['sdl_5fvisualtest_5fparsehelper_2eh',['SDL_visualtest_parsehelper.h',['../_s_d_l__visualtest__parsehelper_8h.html',1,'']]], + ['sdl_5fvisualtest_5fprocess_2eh',['SDL_visualtest_process.h',['../_s_d_l__visualtest__process_8h.html',1,'']]], + ['sdl_5fvisualtest_5frandom_5fvariator_2eh',['SDL_visualtest_random_variator.h',['../_s_d_l__visualtest__random__variator_8h.html',1,'']]], + ['sdl_5fvisualtest_5fscreenshot_2eh',['SDL_visualtest_screenshot.h',['../_s_d_l__visualtest__screenshot_8h.html',1,'']]], + ['sdl_5fvisualtest_5fsut_5fconfigparser_2eh',['SDL_visualtest_sut_configparser.h',['../_s_d_l__visualtest__sut__configparser_8h.html',1,'']]], + ['sdl_5fvisualtest_5fvariator_5fcommon_2eh',['SDL_visualtest_variator_common.h',['../_s_d_l__visualtest__variator__common_8h.html',1,'']]], + ['sdl_5fvisualtest_5fvariators_2eh',['SDL_visualtest_variators.h',['../_s_d_l__visualtest__variators_8h.html',1,'']]], + ['sdlvisualtest_5faction',['SDLVisualTest_Action',['../struct_s_d_l_visual_test___action.html',1,'SDLVisualTest_Action'],['../_s_d_l__visualtest__action__configparser_8h.html#a89974e9149bfca6aabb3ff06cc9671d7',1,'SDLVisualTest_Action(): SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5factionnode',['SDLVisualTest_ActionNode',['../struct_s_d_l_visual_test___action_node.html',1,'SDLVisualTest_ActionNode'],['../_s_d_l__visualtest__action__configparser_8h.html#a065d1acf0f98bde777d10bd8ab24d268',1,'SDLVisualTest_ActionNode(): SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5factionqueue',['SDLVisualTest_ActionQueue',['../struct_s_d_l_visual_test___action_queue.html',1,'SDLVisualTest_ActionQueue'],['../_s_d_l__visualtest__action__configparser_8h.html#ac9ce1bb69d8774d1818c9f9d0f97c7f1',1,'SDLVisualTest_ActionQueue(): SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5factiontype',['SDLVisualTest_ActionType',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6',1,'SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5fdequeueaction',['SDLVisualTest_DequeueAction',['../_s_d_l__visualtest__action__configparser_8h.html#a0e7998533e6e10590612a8d5dee7ec0b',1,'SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a0e7998533e6e10590612a8d5dee7ec0b',1,'SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5femptyactionqueue',['SDLVisualTest_EmptyActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#a677da0d0e4793df342f91974b4559efa',1,'SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a677da0d0e4793df342f91974b4559efa',1,'SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fenqueueaction',['SDLVisualTest_EnqueueAction',['../_s_d_l__visualtest__action__configparser_8h.html#a647d1be8f0f27af2fb1e5d4da2100596',1,'SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c'],['../action__configparser_8c.html#a647d1be8f0f27af2fb1e5d4da2100596',1,'SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c']]], + ['sdlvisualtest_5fexhaustivevariator',['SDLVisualTest_ExhaustiveVariator',['../struct_s_d_l_visual_test___exhaustive_variator.html',1,'SDLVisualTest_ExhaustiveVariator'],['../_s_d_l__visualtest__exhaustive__variator_8h.html#ab64de6cf7d6a1e6d09d470c020940c25',1,'SDLVisualTest_ExhaustiveVariator(): SDL_visualtest_exhaustive_variator.h']]], + ['sdlvisualtest_5ffreeexhaustivevariator',['SDLVisualTest_FreeExhaustiveVariator',['../_s_d_l__visualtest__exhaustive__variator_8h.html#a7168b055fb86bbbb700d87ae842f7152',1,'SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c'],['../variator__exhaustive_8c.html#a7168b055fb86bbbb700d87ae842f7152',1,'SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c']]], + ['sdlvisualtest_5ffreeharnessstate',['SDLVisualTest_FreeHarnessState',['../_s_d_l__visualtest__harness__argparser_8h.html#a833147d8da541982c615645a797627cc',1,'SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState *state): harness_argparser.c'],['../harness__argparser_8c.html#a833147d8da541982c615645a797627cc',1,'SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState *state): harness_argparser.c']]], + ['sdlvisualtest_5ffreerandomvariator',['SDLVisualTest_FreeRandomVariator',['../_s_d_l__visualtest__random__variator_8h.html#ac95d9e0716e4c918c6902b10f9591d4b',1,'SDLVisualTest_FreeRandomVariator(SDLVisualTest_RandomVariator *variator): variator_random.c'],['../variator__random_8c.html#ac95d9e0716e4c918c6902b10f9591d4b',1,'SDLVisualTest_FreeRandomVariator(SDLVisualTest_RandomVariator *variator): variator_random.c']]], + ['sdlvisualtest_5ffreesutconfig',['SDLVisualTest_FreeSUTConfig',['../_s_d_l__visualtest__sut__configparser_8h.html#a1bddf9732c0d3ed1c24455d22193de9a',1,'SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig *config): sut_configparser.c'],['../sut__configparser_8c.html#a1bddf9732c0d3ed1c24455d22193de9a',1,'SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig *config): sut_configparser.c']]], + ['sdlvisualtest_5ffreevariator',['SDLVisualTest_FreeVariator',['../_s_d_l__visualtest__variators_8h.html#a98727ef649135c3312056d7603cb70b5',1,'SDLVisualTest_FreeVariator(SDLVisualTest_Variator *variator): variators.c'],['../variators_8c.html#a98727ef649135c3312056d7603cb70b5',1,'SDLVisualTest_FreeVariator(SDLVisualTest_Variator *variator): variators.c']]], + ['sdlvisualtest_5fgetnextexhaustivevariation',['SDLVisualTest_GetNextExhaustiveVariation',['../_s_d_l__visualtest__exhaustive__variator_8h.html#aa9e13a92945ef48308215b3fa068ed29',1,'SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c'],['../variator__exhaustive_8c.html#aa9e13a92945ef48308215b3fa068ed29',1,'SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c']]], + ['sdlvisualtest_5fgetnextrandomvariation',['SDLVisualTest_GetNextRandomVariation',['../_s_d_l__visualtest__random__variator_8h.html#a479aceb74b5355c1d22856fc7efce890',1,'SDLVisualTest_GetNextRandomVariation(SDLVisualTest_RandomVariator *variator): variator_random.c'],['../variator__random_8c.html#a479aceb74b5355c1d22856fc7efce890',1,'SDLVisualTest_GetNextRandomVariation(SDLVisualTest_RandomVariator *variator): variator_random.c']]], + ['sdlvisualtest_5fgetnextvariation',['SDLVisualTest_GetNextVariation',['../_s_d_l__visualtest__variators_8h.html#aebdd4c3c545b0063d16929fd56f1a79f',1,'SDLVisualTest_GetNextVariation(SDLVisualTest_Variator *variator): variators.c'],['../variators_8c.html#aebdd4c3c545b0063d16929fd56f1a79f',1,'SDLVisualTest_GetNextVariation(SDLVisualTest_Variator *variator): variators.c']]], + ['sdlvisualtest_5fgetqueuefront',['SDLVisualTest_GetQueueFront',['../_s_d_l__visualtest__action__configparser_8h.html#afb508801942e7c74084480bcdb6f8613',1,'SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#afb508801942e7c74084480bcdb6f8613',1,'SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fharnessstate',['SDLVisualTest_HarnessState',['../struct_s_d_l_visual_test___harness_state.html',1,'SDLVisualTest_HarnessState'],['../_s_d_l__visualtest__harness__argparser_8h.html#ab89725ad0ec988d4923faa6a85972455',1,'SDLVisualTest_HarnessState(): SDL_visualtest_harness_argparser.h']]], + ['sdlvisualtest_5fhashstring',['SDLVisualTest_HashString',['../mischelper_8c.html#a0dae46cdb4e58bdda78676260eaaf980',1,'mischelper.c']]], + ['sdlvisualtest_5finitactionqueue',['SDLVisualTest_InitActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#ae68c1c80f728e125869882139bec2c9e',1,'SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#ae68c1c80f728e125869882139bec2c9e',1,'SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5finitexhaustivevariator',['SDLVisualTest_InitExhaustiveVariator',['../_s_d_l__visualtest__exhaustive__variator_8h.html#a9e213e530ddf5a18014786d10e9fdaee',1,'SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator, SDLVisualTest_SUTConfig *config): variator_exhaustive.c'],['../variator__exhaustive_8c.html#a9e213e530ddf5a18014786d10e9fdaee',1,'SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator, SDLVisualTest_SUTConfig *config): variator_exhaustive.c']]], + ['sdlvisualtest_5finitrandomvariator',['SDLVisualTest_InitRandomVariator',['../_s_d_l__visualtest__random__variator_8h.html#a807486069b7180c3b3bf8af4616d055f',1,'SDLVisualTest_InitRandomVariator(SDLVisualTest_RandomVariator *variator, SDLVisualTest_SUTConfig *config, Uint64 seed): variator_random.c'],['../variator__random_8c.html#a807486069b7180c3b3bf8af4616d055f',1,'SDLVisualTest_InitRandomVariator(SDLVisualTest_RandomVariator *variator, SDLVisualTest_SUTConfig *config, Uint64 seed): variator_random.c']]], + ['sdlvisualtest_5finitvariation',['SDLVisualTest_InitVariation',['../_s_d_l__visualtest__variator__common_8h.html#ac87934906c51364778dc910ebca47b6c',1,'SDLVisualTest_InitVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config): variator_common.c'],['../variator__common_8c.html#ac87934906c51364778dc910ebca47b6c',1,'SDLVisualTest_InitVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config): variator_common.c']]], + ['sdlvisualtest_5finitvariator',['SDLVisualTest_InitVariator',['../_s_d_l__visualtest__variators_8h.html#ac1d82ee387a19743e47a82c87d3fb7f4',1,'SDLVisualTest_InitVariator(SDLVisualTest_Variator *variator, SDLVisualTest_SUTConfig *config, SDLVisualTest_VariatorType type, Uint64 seed): variators.c'],['../variators_8c.html#ac1d82ee387a19743e47a82c87d3fb7f4',1,'SDLVisualTest_InitVariator(SDLVisualTest_Variator *variator, SDLVisualTest_SUTConfig *config, SDLVisualTest_VariatorType type, Uint64 seed): variators.c']]], + ['sdlvisualtest_5finsertintoactionqueue',['SDLVisualTest_InsertIntoActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#ace5374ef7509e95383929ff185aaf7e6',1,'SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c'],['../action__configparser_8c.html#ace5374ef7509e95383929ff185aaf7e6',1,'SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c']]], + ['sdlvisualtest_5fisactionqueueempty',['SDLVisualTest_IsActionQueueEmpty',['../_s_d_l__visualtest__action__configparser_8h.html#a8484ee36f78952192d4193c85fca2f17',1,'SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a8484ee36f78952192d4193c85fca2f17',1,'SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fmakestrfromvariation',['SDLVisualTest_MakeStrFromVariation',['../_s_d_l__visualtest__variator__common_8h.html#ad981c2efab849e76dc878ef8da9d6017',1,'SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config, char *buffer, int size): variator_common.c'],['../variator__common_8c.html#ad981c2efab849e76dc878ef8da9d6017',1,'SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config, char *buffer, int size): variator_common.c']]], + ['sdlvisualtest_5fnextvalue',['SDLVisualTest_NextValue',['../_s_d_l__visualtest__variator__common_8h.html#aafcecc06c8feb24b6f6a509bfa9db681',1,'SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue *var, SDLVisualTest_SUTOption *opt): variator_common.c'],['../variator__common_8c.html#aafcecc06c8feb24b6f6a509bfa9db681',1,'SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue *var, SDLVisualTest_SUTOption *opt): variator_common.c']]], + ['sdlvisualtest_5fparseactionconfig',['SDLVisualTest_ParseActionConfig',['../_s_d_l__visualtest__action__configparser_8h.html#a8ef9dce4d464d6994596deeace6ffa2d',1,'SDLVisualTest_ParseActionConfig(char *file, SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a8ef9dce4d464d6994596deeace6ffa2d',1,'SDLVisualTest_ParseActionConfig(char *file, SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fparseargstoargv',['SDLVisualTest_ParseArgsToArgv',['../_s_d_l__visualtest__parsehelper_8h.html#a5f168fdd02f9d40ddbad97bd8c0b6361',1,'SDLVisualTest_ParseArgsToArgv(char *args): parsehelper.c'],['../parsehelper_8c.html#a5f168fdd02f9d40ddbad97bd8c0b6361',1,'SDLVisualTest_ParseArgsToArgv(char *args): parsehelper.c']]], + ['sdlvisualtest_5fparseharnessargs',['SDLVisualTest_ParseHarnessArgs',['../_s_d_l__visualtest__harness__argparser_8h.html#a629609acc04ef21a21fdfbbf6c1589c8',1,'SDLVisualTest_ParseHarnessArgs(char **argv, SDLVisualTest_HarnessState *state): harness_argparser.c'],['../harness__argparser_8c.html#a629609acc04ef21a21fdfbbf6c1589c8',1,'SDLVisualTest_ParseHarnessArgs(char **argv, SDLVisualTest_HarnessState *state): harness_argparser.c']]], + ['sdlvisualtest_5fparsesutconfig',['SDLVisualTest_ParseSUTConfig',['../_s_d_l__visualtest__sut__configparser_8h.html#a8e178cd8a1f279f5d2cf908545e97544',1,'SDLVisualTest_ParseSUTConfig(char *file, SDLVisualTest_SUTConfig *config): sut_configparser.c'],['../sut__configparser_8c.html#a8e178cd8a1f279f5d2cf908545e97544',1,'SDLVisualTest_ParseSUTConfig(char *file, SDLVisualTest_SUTConfig *config): sut_configparser.c']]], + ['sdlvisualtest_5frandomvariator',['SDLVisualTest_RandomVariator',['../struct_s_d_l_visual_test___random_variator.html',1,'SDLVisualTest_RandomVariator'],['../_s_d_l__visualtest__random__variator_8h.html#ab0df6ee6ec21b5070bfd8e90a7d79974',1,'SDLVisualTest_RandomVariator(): SDL_visualtest_random_variator.h']]], + ['sdlvisualtest_5frwhelperbuffer',['SDLVisualTest_RWHelperBuffer',['../struct_s_d_l_visual_test___r_w_helper_buffer.html',1,'']]], + ['sdlvisualtest_5frwhelpercountnonemptylines',['SDLVisualTest_RWHelperCountNonEmptyLines',['../rwhelper_8c.html#ac7f94417fa973af01a27452acd0043e8',1,'rwhelper.c']]], + ['sdlvisualtest_5frwhelperreadchar',['SDLVisualTest_RWHelperReadChar',['../rwhelper_8c.html#a92794c04d5568bde0da9f3020d88f44c',1,'rwhelper.c']]], + ['sdlvisualtest_5frwhelperreadline',['SDLVisualTest_RWHelperReadLine',['../rwhelper_8c.html#af97cfdf8d58f716efa8fd9204666df12',1,'rwhelper.c']]], + ['sdlvisualtest_5frwhelperresetbuffer',['SDLVisualTest_RWHelperResetBuffer',['../rwhelper_8c.html#aa7878508e6d851b11dc1d1186324064a',1,'rwhelper.c']]], + ['sdlvisualtest_5fscreenshotdesktop',['SDLVisualTest_ScreenshotDesktop',['../_s_d_l__visualtest__screenshot_8h.html#a812c545e97db11a756145d43b3a8e5ee',1,'SDL_visualtest_screenshot.h']]], + ['sdlvisualtest_5fscreenshotprocess',['SDLVisualTest_ScreenshotProcess',['../_s_d_l__visualtest__screenshot_8h.html#aefe6b7dbca1fbfb7aef081545c3ca66d',1,'SDL_visualtest_screenshot.h']]], + ['sdlvisualtest_5fsutconfig',['SDLVisualTest_SUTConfig',['../struct_s_d_l_visual_test___s_u_t_config.html',1,'SDLVisualTest_SUTConfig'],['../_s_d_l__visualtest__sut__configparser_8h.html#a1b493a40d601932b62ee643390aec169',1,'SDLVisualTest_SUTConfig(): SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutintrange',['SDLVisualTest_SUTIntRange',['../struct_s_d_l_visual_test___s_u_t_int_range.html',1,'SDLVisualTest_SUTIntRange'],['../_s_d_l__visualtest__sut__configparser_8h.html#a8cbe93330b2ce59cdf6da59e2eca6045',1,'SDLVisualTest_SUTIntRange(): SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutoption',['SDLVisualTest_SUTOption',['../struct_s_d_l_visual_test___s_u_t_option.html',1,'SDLVisualTest_SUTOption'],['../_s_d_l__visualtest__sut__configparser_8h.html#a9f35b5fe1ce4ba831a9b9e1f2bc8b7f6',1,'SDLVisualTest_SUTOption(): SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutoptiontype',['SDLVisualTest_SUTOptionType',['../_s_d_l__visualtest__sut__configparser_8h.html#af9893831d9f79360f57e84a67a90293c',1,'SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutoptionvalue',['SDLVisualTest_SUTOptionValue',['../union_s_d_l_visual_test___s_u_t_option_value.html',1,'SDLVisualTest_SUTOptionValue'],['../_s_d_l__visualtest__variator__common_8h.html#aa4e5fb752f4cd087101ea3e1f6124dfb',1,'SDLVisualTest_SUTOptionValue(): SDL_visualtest_variator_common.h']]], + ['sdlvisualtest_5ftokenize',['SDLVisualTest_Tokenize',['../_s_d_l__visualtest__parsehelper_8h.html#a508e690ed938e09fc3b724d2faf06899',1,'SDLVisualTest_Tokenize(char *str, int max_token_len): parsehelper.c'],['../parsehelper_8c.html#a508e690ed938e09fc3b724d2faf06899',1,'SDLVisualTest_Tokenize(char *str, int max_token_len): parsehelper.c']]], + ['sdlvisualtest_5fvariation',['SDLVisualTest_Variation',['../struct_s_d_l_visual_test___variation.html',1,'SDLVisualTest_Variation'],['../_s_d_l__visualtest__variator__common_8h.html#a6b447c1467862ecd623cc8f37489faeb',1,'SDLVisualTest_Variation(): SDL_visualtest_variator_common.h']]], + ['sdlvisualtest_5fvariator',['SDLVisualTest_Variator',['../struct_s_d_l_visual_test___variator.html',1,'SDLVisualTest_Variator'],['../_s_d_l__visualtest__variators_8h.html#a520a2479efbe9c4a9d617735f7314e0a',1,'SDLVisualTest_Variator(): SDL_visualtest_variators.h']]], + ['sdlvisualtest_5fvariatortype',['SDLVisualTest_VariatorType',['../_s_d_l__visualtest__variator__common_8h.html#a04bfc880abe6940d69a63c06a33acdbd',1,'SDLVisualTest_VariatorType(): SDL_visualtest_variator_common.h'],['../_s_d_l__visualtest__variator__common_8h.html#a4a7752dc89880ce3f62a478b3d0d8d64',1,'SDLVisualTest_VariatorType(): SDL_visualtest_variator_common.h']]], + ['sdlvisualtest_5fverifyscreenshots',['SDLVisualTest_VerifyScreenshots',['../_s_d_l__visualtest__screenshot_8h.html#ac7b5335651144961676abc2116c38299',1,'SDLVisualTest_VerifyScreenshots(char *args, char *test_dir, char *verify_dir): screenshot.c'],['../screenshot_8c.html#ac7b5335651144961676abc2116c38299',1,'SDLVisualTest_VerifyScreenshots(char *args, char *test_dir, char *verify_dir): screenshot.c']]], + ['size',['size',['../struct_s_d_l_visual_test___action_queue.html#a439227feff9d7f55384e8780cfc2eb82',1,'SDLVisualTest_ActionQueue']]], + ['string',['string',['../union_s_d_l_visual_test___s_u_t_option_value.html#a2bf4b969ff9633c937e4d15118d1edc6',1,'SDLVisualTest_SUTOptionValue']]], + ['sut_5fconfig',['sut_config',['../struct_s_d_l_visual_test___harness_state.html#a42657080015a96da836e1640bbdf870e',1,'SDLVisualTest_HarnessState']]], + ['sut_5fconfigparser_2ec',['sut_configparser.c',['../sut__configparser_8c.html',1,'']]], + ['sutapp',['sutapp',['../struct_s_d_l_visual_test___harness_state.html#af277bbb5c712eb89e92337dd583a8b74',1,'SDLVisualTest_HarnessState']]], + ['sutargs',['sutargs',['../struct_s_d_l_visual_test___harness_state.html#a00fab9c7cf802b96b6b29e098292d24d',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/search/all_74.html b/visualtest/docs/html/search/all_74.html new file mode 100755 index 0000000000..d7dabea0ac --- /dev/null +++ b/visualtest/docs/html/search/all_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_74.js b/visualtest/docs/html/search/all_74.js new file mode 100755 index 0000000000..a955b1c186 --- /dev/null +++ b/visualtest/docs/html/search/all_74.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['test_5ferror',['TEST_ERROR',['../testharness_8c.html#a8251bcdfc5c83845e0834adf211de033',1,'testharness.c']]], + ['test_5ffailed',['TEST_FAILED',['../testharness_8c.html#a8b8b91205df891e2c7837bd03795306f',1,'testharness.c']]], + ['test_5fpassed',['TEST_PASSED',['../testharness_8c.html#a562e15dd66cf158c98dbfec9f6afa1ae',1,'testharness.c']]], + ['testharness_2ec',['testharness.c',['../testharness_8c.html',1,'']]], + ['time',['time',['../struct_s_d_l_visual_test___action.html#a42715f65f02da52edc5b22021d8ae670',1,'SDLVisualTest_Action']]], + ['timeout',['timeout',['../struct_s_d_l_visual_test___harness_state.html#a493b57f443cc38b3d3df9c1e584d9d82',1,'SDLVisualTest_HarnessState']]], + ['type',['type',['../struct_s_d_l_visual_test___action.html#a3ab091b672fc470015f09e6c4c50dcf1',1,'SDLVisualTest_Action::type()'],['../struct_s_d_l_visual_test___s_u_t_option.html#a857b9e5ccfca26034b47a5f3236d822c',1,'SDLVisualTest_SUTOption::type()'],['../struct_s_d_l_visual_test___variator.html#a24d4399dc1877c1843e120e7b027ae64',1,'SDLVisualTest_Variator::type()']]] +]; diff --git a/visualtest/docs/html/search/all_76.html b/visualtest/docs/html/search/all_76.html new file mode 100755 index 0000000000..33cae7d116 --- /dev/null +++ b/visualtest/docs/html/search/all_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_76.js b/visualtest/docs/html/search/all_76.js new file mode 100755 index 0000000000..39d4e4503c --- /dev/null +++ b/visualtest/docs/html/search/all_76.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['visual_20and_20interactive_20test_20automation_20for_20sdl_202_2e0',['Visual and Interactive Test Automation for SDL 2.0',['../index.html',1,'']]], + ['variation',['variation',['../struct_s_d_l_visual_test___exhaustive_variator.html#a11c2995cf19b41c4a1b1f8d9b4081ff7',1,'SDLVisualTest_ExhaustiveVariator::variation()'],['../struct_s_d_l_visual_test___random_variator.html#a11c2995cf19b41c4a1b1f8d9b4081ff7',1,'SDLVisualTest_RandomVariator::variation()']]], + ['variator_5fcommon_2ec',['variator_common.c',['../variator__common_8c.html',1,'']]], + ['variator_5fexhaustive_2ec',['variator_exhaustive.c',['../variator__exhaustive_8c.html',1,'']]], + ['variator_5frandom_2ec',['variator_random.c',['../variator__random_8c.html',1,'']]], + ['variator_5ftype',['variator_type',['../struct_s_d_l_visual_test___harness_state.html#aaaa989ae89caee6d39c722cfe6907466',1,'SDLVisualTest_HarnessState']]], + ['variators_2ec',['variators.c',['../variators_8c.html',1,'']]], + ['vars',['vars',['../struct_s_d_l_visual_test___variation.html#a1eab2e90f0195b4f4632eb19523aeadf',1,'SDLVisualTest_Variation']]], + ['verify_5fdir',['verify_dir',['../struct_s_d_l_visual_test___harness_state.html#adc871112f24f61e2fff74a7a7fb9794f',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/search/all_77.html b/visualtest/docs/html/search/all_77.html new file mode 100755 index 0000000000..d7ce720900 --- /dev/null +++ b/visualtest/docs/html/search/all_77.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/all_77.js b/visualtest/docs/html/search/all_77.js new file mode 100755 index 0000000000..06134db92a --- /dev/null +++ b/visualtest/docs/html/search/all_77.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['windows_5fprocess_2ec',['windows_process.c',['../windows__process_8c.html',1,'']]], + ['windows_5fscreenshot_2ec',['windows_screenshot.c',['../windows__screenshot_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/classes_73.html b/visualtest/docs/html/search/classes_73.html new file mode 100755 index 0000000000..0ddf5ea544 --- /dev/null +++ b/visualtest/docs/html/search/classes_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/classes_73.js b/visualtest/docs/html/search/classes_73.js new file mode 100755 index 0000000000..e3d0f597de --- /dev/null +++ b/visualtest/docs/html/search/classes_73.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['sdl_5fprocessexitstatus',['SDL_ProcessExitStatus',['../struct_s_d_l___process_exit_status.html',1,'']]], + ['sdl_5fprocessinfo',['SDL_ProcessInfo',['../struct_s_d_l___process_info.html',1,'']]], + ['sdlvisualtest_5faction',['SDLVisualTest_Action',['../struct_s_d_l_visual_test___action.html',1,'']]], + ['sdlvisualtest_5factionnode',['SDLVisualTest_ActionNode',['../struct_s_d_l_visual_test___action_node.html',1,'']]], + ['sdlvisualtest_5factionqueue',['SDLVisualTest_ActionQueue',['../struct_s_d_l_visual_test___action_queue.html',1,'']]], + ['sdlvisualtest_5fexhaustivevariator',['SDLVisualTest_ExhaustiveVariator',['../struct_s_d_l_visual_test___exhaustive_variator.html',1,'']]], + ['sdlvisualtest_5fharnessstate',['SDLVisualTest_HarnessState',['../struct_s_d_l_visual_test___harness_state.html',1,'']]], + ['sdlvisualtest_5frandomvariator',['SDLVisualTest_RandomVariator',['../struct_s_d_l_visual_test___random_variator.html',1,'']]], + ['sdlvisualtest_5frwhelperbuffer',['SDLVisualTest_RWHelperBuffer',['../struct_s_d_l_visual_test___r_w_helper_buffer.html',1,'']]], + ['sdlvisualtest_5fsutconfig',['SDLVisualTest_SUTConfig',['../struct_s_d_l_visual_test___s_u_t_config.html',1,'']]], + ['sdlvisualtest_5fsutintrange',['SDLVisualTest_SUTIntRange',['../struct_s_d_l_visual_test___s_u_t_int_range.html',1,'']]], + ['sdlvisualtest_5fsutoption',['SDLVisualTest_SUTOption',['../struct_s_d_l_visual_test___s_u_t_option.html',1,'']]], + ['sdlvisualtest_5fsutoptionvalue',['SDLVisualTest_SUTOptionValue',['../union_s_d_l_visual_test___s_u_t_option_value.html',1,'']]], + ['sdlvisualtest_5fvariation',['SDLVisualTest_Variation',['../struct_s_d_l_visual_test___variation.html',1,'']]], + ['sdlvisualtest_5fvariator',['SDLVisualTest_Variator',['../struct_s_d_l_visual_test___variator.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/close.png b/visualtest/docs/html/search/close.png new file mode 100755 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/search/defines_61.html b/visualtest/docs/html/search/defines_61.html new file mode 100755 index 0000000000..32e0732120 --- /dev/null +++ b/visualtest/docs/html/search/defines_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/defines_61.js b/visualtest/docs/html/search/defines_61.js new file mode 100755 index 0000000000..6c0916b160 --- /dev/null +++ b/visualtest/docs/html/search/defines_61.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['action_5floop_5ffps',['ACTION_LOOP_FPS',['../testharness_8c.html#a70102426e83ed3944f9c060bd82fb54e',1,'testharness.c']]], + ['action_5ftimer_5fevent',['ACTION_TIMER_EVENT',['../testharness_8c.html#a0d1d5d1394089a10f0147ed2b89c1165',1,'testharness.c']]] +]; diff --git a/visualtest/docs/html/search/defines_64.html b/visualtest/docs/html/search/defines_64.html new file mode 100755 index 0000000000..a3dd91d47d --- /dev/null +++ b/visualtest/docs/html/search/defines_64.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/defines_64.js b/visualtest/docs/html/search/defines_64.js new file mode 100755 index 0000000000..1d08f16aae --- /dev/null +++ b/visualtest/docs/html/search/defines_64.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['default_5fsut_5ftimeout',['DEFAULT_SUT_TIMEOUT',['../harness__argparser_8c.html#a6669f8e5a07e7a0e4622dd23362831e7',1,'harness_argparser.c']]] +]; diff --git a/visualtest/docs/html/search/defines_6b.html b/visualtest/docs/html/search/defines_6b.html new file mode 100755 index 0000000000..82965dcbca --- /dev/null +++ b/visualtest/docs/html/search/defines_6b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/defines_6b.js b/visualtest/docs/html/search/defines_6b.js new file mode 100755 index 0000000000..831fa2c4e4 --- /dev/null +++ b/visualtest/docs/html/search/defines_6b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kill_5ftimer_5fevent',['KILL_TIMER_EVENT',['../testharness_8c.html#acdc6cb4935ca89fbe3fda31a8f533b9a',1,'testharness.c']]] +]; diff --git a/visualtest/docs/html/search/defines_6d.html b/visualtest/docs/html/search/defines_6d.html new file mode 100755 index 0000000000..281ca78c59 --- /dev/null +++ b/visualtest/docs/html/search/defines_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/defines_6d.js b/visualtest/docs/html/search/defines_6d.js new file mode 100755 index 0000000000..dc4bd5e3ef --- /dev/null +++ b/visualtest/docs/html/search/defines_6d.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['max_5faction_5fline_5flength',['MAX_ACTION_LINE_LENGTH',['../_s_d_l__visualtest__action__configparser_8h.html#a19244c2e1556665be344807ace1556ed',1,'SDL_visualtest_action_configparser.h']]], + ['max_5fconfig_5fline_5flen',['MAX_CONFIG_LINE_LEN',['../harness__argparser_8c.html#a7186273cd88640b740b6333cd98ae243',1,'harness_argparser.c']]], + ['max_5fpath_5flen',['MAX_PATH_LEN',['../_s_d_l__visualtest__harness__argparser_8h.html#abdd33f362ae3bbdacb5de76473aa8a2f',1,'SDL_visualtest_harness_argparser.h']]], + ['max_5fsut_5fargs_5flen',['MAX_SUT_ARGS_LEN',['../_s_d_l__visualtest__harness__argparser_8h.html#a8485cbda108eca56406d67aaa685fcc5',1,'SDL_visualtest_harness_argparser.h']]], + ['max_5fsutoption_5fcategory_5flen',['MAX_SUTOPTION_CATEGORY_LEN',['../_s_d_l__visualtest__sut__configparser_8h.html#a21a678ced8cdf55b4cc70ad398bf33b6',1,'SDL_visualtest_sut_configparser.h']]], + ['max_5fsutoption_5fenumval_5flen',['MAX_SUTOPTION_ENUMVAL_LEN',['../_s_d_l__visualtest__sut__configparser_8h.html#a6c700fc8ff02cfa0c795b9593f86b9a0',1,'SDL_visualtest_sut_configparser.h']]], + ['max_5fsutoption_5fline_5flength',['MAX_SUTOPTION_LINE_LENGTH',['../_s_d_l__visualtest__sut__configparser_8h.html#a8f1a5749af5a592b30a194c72d848f75',1,'SDL_visualtest_sut_configparser.h']]], + ['max_5fsutoption_5fname_5flen',['MAX_SUTOPTION_NAME_LEN',['../_s_d_l__visualtest__sut__configparser_8h.html#a0a8b0c1f8eee787abf09bf3a840eccc7',1,'SDL_visualtest_sut_configparser.h']]] +]; diff --git a/visualtest/docs/html/search/defines_73.html b/visualtest/docs/html/search/defines_73.html new file mode 100755 index 0000000000..d101548a7c --- /dev/null +++ b/visualtest/docs/html/search/defines_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/defines_73.js b/visualtest/docs/html/search/defines_73.js new file mode 100755 index 0000000000..d23464e7a2 --- /dev/null +++ b/visualtest/docs/html/search/defines_73.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sdl_5fsut_5finteger_5foption_5ftest_5fsteps',['SDL_SUT_INTEGER_OPTION_TEST_STEPS',['../_s_d_l__visualtest__variator__common_8h.html#afcdce86a10fbcdc9f3e47c47b70e3ea3',1,'SDL_visualtest_variator_common.h']]] +]; diff --git a/visualtest/docs/html/search/defines_74.html b/visualtest/docs/html/search/defines_74.html new file mode 100755 index 0000000000..4b3c298751 --- /dev/null +++ b/visualtest/docs/html/search/defines_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/defines_74.js b/visualtest/docs/html/search/defines_74.js new file mode 100755 index 0000000000..6845258a5f --- /dev/null +++ b/visualtest/docs/html/search/defines_74.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['test_5ferror',['TEST_ERROR',['../testharness_8c.html#a8251bcdfc5c83845e0834adf211de033',1,'testharness.c']]], + ['test_5ffailed',['TEST_FAILED',['../testharness_8c.html#a8b8b91205df891e2c7837bd03795306f',1,'testharness.c']]], + ['test_5fpassed',['TEST_PASSED',['../testharness_8c.html#a562e15dd66cf158c98dbfec9f6afa1ae',1,'testharness.c']]] +]; diff --git a/visualtest/docs/html/search/enums_73.html b/visualtest/docs/html/search/enums_73.html new file mode 100755 index 0000000000..7d2f3b303c --- /dev/null +++ b/visualtest/docs/html/search/enums_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/enums_73.js b/visualtest/docs/html/search/enums_73.js new file mode 100755 index 0000000000..de876b49d6 --- /dev/null +++ b/visualtest/docs/html/search/enums_73.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['sdlvisualtest_5factiontype',['SDLVisualTest_ActionType',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6',1,'SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5fsutoptiontype',['SDLVisualTest_SUTOptionType',['../_s_d_l__visualtest__sut__configparser_8h.html#af9893831d9f79360f57e84a67a90293c',1,'SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fvariatortype',['SDLVisualTest_VariatorType',['../_s_d_l__visualtest__variator__common_8h.html#a04bfc880abe6940d69a63c06a33acdbd',1,'SDL_visualtest_variator_common.h']]] +]; diff --git a/visualtest/docs/html/search/enumvalues_73.html b/visualtest/docs/html/search/enumvalues_73.html new file mode 100755 index 0000000000..7379c7f5c9 --- /dev/null +++ b/visualtest/docs/html/search/enumvalues_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/enumvalues_73.js b/visualtest/docs/html/search/enumvalues_73.js new file mode 100755 index 0000000000..4a34226778 --- /dev/null +++ b/visualtest/docs/html/search/enumvalues_73.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['sdl_5faction_5fkill',['SDL_ACTION_KILL',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6a87880c4f665344d4c3e12f9aa3af7410',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5flaunch',['SDL_ACTION_LAUNCH',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6ac5344bca6af9c07c4ee69ee4c2b18df2',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5fquit',['SDL_ACTION_QUIT',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6ad3d17a830b7e1e46e37d916130d8802a',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5fscreenshot',['SDL_ACTION_SCREENSHOT',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6af9b5d42cb90bf843f298be4593992fdb',1,'SDL_visualtest_action_configparser.h']]], + ['sdl_5faction_5fverify',['SDL_ACTION_VERIFY',['../_s_d_l__visualtest__action__configparser_8h.html#a383e41b8547eab149a0a4af867b3ebc6a0853f8be8363015b822658b9f3b013f4',1,'SDL_visualtest_action_configparser.h']]] +]; diff --git a/visualtest/docs/html/search/files_61.html b/visualtest/docs/html/search/files_61.html new file mode 100755 index 0000000000..c7378fc6d3 --- /dev/null +++ b/visualtest/docs/html/search/files_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_61.js b/visualtest/docs/html/search/files_61.js new file mode 100755 index 0000000000..6cbf8398fd --- /dev/null +++ b/visualtest/docs/html/search/files_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['action_5fconfigparser_2ec',['action_configparser.c',['../action__configparser_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_68.html b/visualtest/docs/html/search/files_68.html new file mode 100755 index 0000000000..0ecafca989 --- /dev/null +++ b/visualtest/docs/html/search/files_68.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_68.js b/visualtest/docs/html/search/files_68.js new file mode 100755 index 0000000000..c2615b10c1 --- /dev/null +++ b/visualtest/docs/html/search/files_68.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['harness_5fargparser_2ec',['harness_argparser.c',['../harness__argparser_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_6c.html b/visualtest/docs/html/search/files_6c.html new file mode 100755 index 0000000000..3eda986dd2 --- /dev/null +++ b/visualtest/docs/html/search/files_6c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_6c.js b/visualtest/docs/html/search/files_6c.js new file mode 100755 index 0000000000..f6a1353d11 --- /dev/null +++ b/visualtest/docs/html/search/files_6c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linux_5fprocess_2ec',['linux_process.c',['../linux__process_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_6d.html b/visualtest/docs/html/search/files_6d.html new file mode 100755 index 0000000000..8148b75cce --- /dev/null +++ b/visualtest/docs/html/search/files_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_6d.js b/visualtest/docs/html/search/files_6d.js new file mode 100755 index 0000000000..431dcf85aa --- /dev/null +++ b/visualtest/docs/html/search/files_6d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mischelper_2ec',['mischelper.c',['../mischelper_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_70.html b/visualtest/docs/html/search/files_70.html new file mode 100755 index 0000000000..a053becd4a --- /dev/null +++ b/visualtest/docs/html/search/files_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_70.js b/visualtest/docs/html/search/files_70.js new file mode 100755 index 0000000000..1e471d8319 --- /dev/null +++ b/visualtest/docs/html/search/files_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['parsehelper_2ec',['parsehelper.c',['../parsehelper_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_72.html b/visualtest/docs/html/search/files_72.html new file mode 100755 index 0000000000..a952842bac --- /dev/null +++ b/visualtest/docs/html/search/files_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_72.js b/visualtest/docs/html/search/files_72.js new file mode 100755 index 0000000000..29b7e56101 --- /dev/null +++ b/visualtest/docs/html/search/files_72.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rwhelper_2ec',['rwhelper.c',['../rwhelper_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_73.html b/visualtest/docs/html/search/files_73.html new file mode 100755 index 0000000000..6d8f48898a --- /dev/null +++ b/visualtest/docs/html/search/files_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_73.js b/visualtest/docs/html/search/files_73.js new file mode 100755 index 0000000000..2d4c61f575 --- /dev/null +++ b/visualtest/docs/html/search/files_73.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['screenshot_2ec',['screenshot.c',['../screenshot_8c.html',1,'']]], + ['sdl_5fvisualtest_5faction_5fconfigparser_2eh',['SDL_visualtest_action_configparser.h',['../_s_d_l__visualtest__action__configparser_8h.html',1,'']]], + ['sdl_5fvisualtest_5fexhaustive_5fvariator_2eh',['SDL_visualtest_exhaustive_variator.h',['../_s_d_l__visualtest__exhaustive__variator_8h.html',1,'']]], + ['sdl_5fvisualtest_5fharness_5fargparser_2eh',['SDL_visualtest_harness_argparser.h',['../_s_d_l__visualtest__harness__argparser_8h.html',1,'']]], + ['sdl_5fvisualtest_5fparsehelper_2eh',['SDL_visualtest_parsehelper.h',['../_s_d_l__visualtest__parsehelper_8h.html',1,'']]], + ['sdl_5fvisualtest_5fprocess_2eh',['SDL_visualtest_process.h',['../_s_d_l__visualtest__process_8h.html',1,'']]], + ['sdl_5fvisualtest_5frandom_5fvariator_2eh',['SDL_visualtest_random_variator.h',['../_s_d_l__visualtest__random__variator_8h.html',1,'']]], + ['sdl_5fvisualtest_5fscreenshot_2eh',['SDL_visualtest_screenshot.h',['../_s_d_l__visualtest__screenshot_8h.html',1,'']]], + ['sdl_5fvisualtest_5fsut_5fconfigparser_2eh',['SDL_visualtest_sut_configparser.h',['../_s_d_l__visualtest__sut__configparser_8h.html',1,'']]], + ['sdl_5fvisualtest_5fvariator_5fcommon_2eh',['SDL_visualtest_variator_common.h',['../_s_d_l__visualtest__variator__common_8h.html',1,'']]], + ['sdl_5fvisualtest_5fvariators_2eh',['SDL_visualtest_variators.h',['../_s_d_l__visualtest__variators_8h.html',1,'']]], + ['sut_5fconfigparser_2ec',['sut_configparser.c',['../sut__configparser_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_74.html b/visualtest/docs/html/search/files_74.html new file mode 100755 index 0000000000..b67c32ee75 --- /dev/null +++ b/visualtest/docs/html/search/files_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_74.js b/visualtest/docs/html/search/files_74.js new file mode 100755 index 0000000000..a339ccbe9b --- /dev/null +++ b/visualtest/docs/html/search/files_74.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['testharness_2ec',['testharness.c',['../testharness_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_76.html b/visualtest/docs/html/search/files_76.html new file mode 100755 index 0000000000..2ea8e3c083 --- /dev/null +++ b/visualtest/docs/html/search/files_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_76.js b/visualtest/docs/html/search/files_76.js new file mode 100755 index 0000000000..d32b6a6fd4 --- /dev/null +++ b/visualtest/docs/html/search/files_76.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['variator_5fcommon_2ec',['variator_common.c',['../variator__common_8c.html',1,'']]], + ['variator_5fexhaustive_2ec',['variator_exhaustive.c',['../variator__exhaustive_8c.html',1,'']]], + ['variator_5frandom_2ec',['variator_random.c',['../variator__random_8c.html',1,'']]], + ['variators_2ec',['variators.c',['../variators_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/files_77.html b/visualtest/docs/html/search/files_77.html new file mode 100755 index 0000000000..cfba7eaf7c --- /dev/null +++ b/visualtest/docs/html/search/files_77.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/files_77.js b/visualtest/docs/html/search/files_77.js new file mode 100755 index 0000000000..06134db92a --- /dev/null +++ b/visualtest/docs/html/search/files_77.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['windows_5fprocess_2ec',['windows_process.c',['../windows__process_8c.html',1,'']]], + ['windows_5fscreenshot_2ec',['windows_screenshot.c',['../windows__screenshot_8c.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/functions_6d.html b/visualtest/docs/html/search/functions_6d.html new file mode 100755 index 0000000000..cc3d484f81 --- /dev/null +++ b/visualtest/docs/html/search/functions_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/functions_6d.js b/visualtest/docs/html/search/functions_6d.js new file mode 100755 index 0000000000..f93b71f18a --- /dev/null +++ b/visualtest/docs/html/search/functions_6d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main',['main',['../testharness_8c.html#a0ddf1224851353fc92bfbff6f499fa97',1,'testharness.c']]] +]; diff --git a/visualtest/docs/html/search/functions_73.html b/visualtest/docs/html/search/functions_73.html new file mode 100755 index 0000000000..071b44fbfb --- /dev/null +++ b/visualtest/docs/html/search/functions_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/functions_73.js b/visualtest/docs/html/search/functions_73.js new file mode 100755 index 0000000000..ee1ca98017 --- /dev/null +++ b/visualtest/docs/html/search/functions_73.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['sdl_5fgetprocessexitstatus',['SDL_GetProcessExitStatus',['../_s_d_l__visualtest__process_8h.html#a54545d6b9f737a14030b4ce55ddd4a62',1,'SDL_visualtest_process.h']]], + ['sdl_5fisprocessrunning',['SDL_IsProcessRunning',['../_s_d_l__visualtest__process_8h.html#a3a131140a71bf68fa68a900f06872239',1,'SDL_visualtest_process.h']]], + ['sdl_5fkillprocess',['SDL_KillProcess',['../_s_d_l__visualtest__process_8h.html#ae66242e44a004831ab231693fd11c8d0',1,'SDL_visualtest_process.h']]], + ['sdl_5flaunchprocess',['SDL_LaunchProcess',['../_s_d_l__visualtest__process_8h.html#a12c16e5b870e2794d6bd5a1a3bb4582f',1,'SDL_visualtest_process.h']]], + ['sdl_5fquitprocess',['SDL_QuitProcess',['../_s_d_l__visualtest__process_8h.html#ad8a5b6725ad1f0e1bac623cf4b6fc28d',1,'SDL_visualtest_process.h']]], + ['sdlvisualtest_5fdequeueaction',['SDLVisualTest_DequeueAction',['../_s_d_l__visualtest__action__configparser_8h.html#a0e7998533e6e10590612a8d5dee7ec0b',1,'SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a0e7998533e6e10590612a8d5dee7ec0b',1,'SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5femptyactionqueue',['SDLVisualTest_EmptyActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#a677da0d0e4793df342f91974b4559efa',1,'SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a677da0d0e4793df342f91974b4559efa',1,'SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fenqueueaction',['SDLVisualTest_EnqueueAction',['../_s_d_l__visualtest__action__configparser_8h.html#a647d1be8f0f27af2fb1e5d4da2100596',1,'SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c'],['../action__configparser_8c.html#a647d1be8f0f27af2fb1e5d4da2100596',1,'SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c']]], + ['sdlvisualtest_5ffreeexhaustivevariator',['SDLVisualTest_FreeExhaustiveVariator',['../_s_d_l__visualtest__exhaustive__variator_8h.html#a7168b055fb86bbbb700d87ae842f7152',1,'SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c'],['../variator__exhaustive_8c.html#a7168b055fb86bbbb700d87ae842f7152',1,'SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c']]], + ['sdlvisualtest_5ffreeharnessstate',['SDLVisualTest_FreeHarnessState',['../_s_d_l__visualtest__harness__argparser_8h.html#a833147d8da541982c615645a797627cc',1,'SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState *state): harness_argparser.c'],['../harness__argparser_8c.html#a833147d8da541982c615645a797627cc',1,'SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState *state): harness_argparser.c']]], + ['sdlvisualtest_5ffreerandomvariator',['SDLVisualTest_FreeRandomVariator',['../_s_d_l__visualtest__random__variator_8h.html#ac95d9e0716e4c918c6902b10f9591d4b',1,'SDLVisualTest_FreeRandomVariator(SDLVisualTest_RandomVariator *variator): variator_random.c'],['../variator__random_8c.html#ac95d9e0716e4c918c6902b10f9591d4b',1,'SDLVisualTest_FreeRandomVariator(SDLVisualTest_RandomVariator *variator): variator_random.c']]], + ['sdlvisualtest_5ffreesutconfig',['SDLVisualTest_FreeSUTConfig',['../_s_d_l__visualtest__sut__configparser_8h.html#a1bddf9732c0d3ed1c24455d22193de9a',1,'SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig *config): sut_configparser.c'],['../sut__configparser_8c.html#a1bddf9732c0d3ed1c24455d22193de9a',1,'SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig *config): sut_configparser.c']]], + ['sdlvisualtest_5ffreevariator',['SDLVisualTest_FreeVariator',['../_s_d_l__visualtest__variators_8h.html#a98727ef649135c3312056d7603cb70b5',1,'SDLVisualTest_FreeVariator(SDLVisualTest_Variator *variator): variators.c'],['../variators_8c.html#a98727ef649135c3312056d7603cb70b5',1,'SDLVisualTest_FreeVariator(SDLVisualTest_Variator *variator): variators.c']]], + ['sdlvisualtest_5fgetnextexhaustivevariation',['SDLVisualTest_GetNextExhaustiveVariation',['../_s_d_l__visualtest__exhaustive__variator_8h.html#aa9e13a92945ef48308215b3fa068ed29',1,'SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c'],['../variator__exhaustive_8c.html#aa9e13a92945ef48308215b3fa068ed29',1,'SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator *variator): variator_exhaustive.c']]], + ['sdlvisualtest_5fgetnextrandomvariation',['SDLVisualTest_GetNextRandomVariation',['../_s_d_l__visualtest__random__variator_8h.html#a479aceb74b5355c1d22856fc7efce890',1,'SDLVisualTest_GetNextRandomVariation(SDLVisualTest_RandomVariator *variator): variator_random.c'],['../variator__random_8c.html#a479aceb74b5355c1d22856fc7efce890',1,'SDLVisualTest_GetNextRandomVariation(SDLVisualTest_RandomVariator *variator): variator_random.c']]], + ['sdlvisualtest_5fgetnextvariation',['SDLVisualTest_GetNextVariation',['../_s_d_l__visualtest__variators_8h.html#aebdd4c3c545b0063d16929fd56f1a79f',1,'SDLVisualTest_GetNextVariation(SDLVisualTest_Variator *variator): variators.c'],['../variators_8c.html#aebdd4c3c545b0063d16929fd56f1a79f',1,'SDLVisualTest_GetNextVariation(SDLVisualTest_Variator *variator): variators.c']]], + ['sdlvisualtest_5fgetqueuefront',['SDLVisualTest_GetQueueFront',['../_s_d_l__visualtest__action__configparser_8h.html#afb508801942e7c74084480bcdb6f8613',1,'SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#afb508801942e7c74084480bcdb6f8613',1,'SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fhashstring',['SDLVisualTest_HashString',['../mischelper_8c.html#a0dae46cdb4e58bdda78676260eaaf980',1,'mischelper.c']]], + ['sdlvisualtest_5finitactionqueue',['SDLVisualTest_InitActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#ae68c1c80f728e125869882139bec2c9e',1,'SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#ae68c1c80f728e125869882139bec2c9e',1,'SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5finitexhaustivevariator',['SDLVisualTest_InitExhaustiveVariator',['../_s_d_l__visualtest__exhaustive__variator_8h.html#a9e213e530ddf5a18014786d10e9fdaee',1,'SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator, SDLVisualTest_SUTConfig *config): variator_exhaustive.c'],['../variator__exhaustive_8c.html#a9e213e530ddf5a18014786d10e9fdaee',1,'SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator *variator, SDLVisualTest_SUTConfig *config): variator_exhaustive.c']]], + ['sdlvisualtest_5finitrandomvariator',['SDLVisualTest_InitRandomVariator',['../_s_d_l__visualtest__random__variator_8h.html#a807486069b7180c3b3bf8af4616d055f',1,'SDLVisualTest_InitRandomVariator(SDLVisualTest_RandomVariator *variator, SDLVisualTest_SUTConfig *config, Uint64 seed): variator_random.c'],['../variator__random_8c.html#a807486069b7180c3b3bf8af4616d055f',1,'SDLVisualTest_InitRandomVariator(SDLVisualTest_RandomVariator *variator, SDLVisualTest_SUTConfig *config, Uint64 seed): variator_random.c']]], + ['sdlvisualtest_5finitvariation',['SDLVisualTest_InitVariation',['../_s_d_l__visualtest__variator__common_8h.html#ac87934906c51364778dc910ebca47b6c',1,'SDLVisualTest_InitVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config): variator_common.c'],['../variator__common_8c.html#ac87934906c51364778dc910ebca47b6c',1,'SDLVisualTest_InitVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config): variator_common.c']]], + ['sdlvisualtest_5finitvariator',['SDLVisualTest_InitVariator',['../_s_d_l__visualtest__variators_8h.html#ac1d82ee387a19743e47a82c87d3fb7f4',1,'SDLVisualTest_InitVariator(SDLVisualTest_Variator *variator, SDLVisualTest_SUTConfig *config, SDLVisualTest_VariatorType type, Uint64 seed): variators.c'],['../variators_8c.html#ac1d82ee387a19743e47a82c87d3fb7f4',1,'SDLVisualTest_InitVariator(SDLVisualTest_Variator *variator, SDLVisualTest_SUTConfig *config, SDLVisualTest_VariatorType type, Uint64 seed): variators.c']]], + ['sdlvisualtest_5finsertintoactionqueue',['SDLVisualTest_InsertIntoActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#ace5374ef7509e95383929ff185aaf7e6',1,'SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c'],['../action__configparser_8c.html#ace5374ef7509e95383929ff185aaf7e6',1,'SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue *queue, SDLVisualTest_Action action): action_configparser.c']]], + ['sdlvisualtest_5fisactionqueueempty',['SDLVisualTest_IsActionQueueEmpty',['../_s_d_l__visualtest__action__configparser_8h.html#a8484ee36f78952192d4193c85fca2f17',1,'SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a8484ee36f78952192d4193c85fca2f17',1,'SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fmakestrfromvariation',['SDLVisualTest_MakeStrFromVariation',['../_s_d_l__visualtest__variator__common_8h.html#ad981c2efab849e76dc878ef8da9d6017',1,'SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config, char *buffer, int size): variator_common.c'],['../variator__common_8c.html#ad981c2efab849e76dc878ef8da9d6017',1,'SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config, char *buffer, int size): variator_common.c']]], + ['sdlvisualtest_5fnextvalue',['SDLVisualTest_NextValue',['../_s_d_l__visualtest__variator__common_8h.html#aafcecc06c8feb24b6f6a509bfa9db681',1,'SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue *var, SDLVisualTest_SUTOption *opt): variator_common.c'],['../variator__common_8c.html#aafcecc06c8feb24b6f6a509bfa9db681',1,'SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue *var, SDLVisualTest_SUTOption *opt): variator_common.c']]], + ['sdlvisualtest_5fparseactionconfig',['SDLVisualTest_ParseActionConfig',['../_s_d_l__visualtest__action__configparser_8h.html#a8ef9dce4d464d6994596deeace6ffa2d',1,'SDLVisualTest_ParseActionConfig(char *file, SDLVisualTest_ActionQueue *queue): action_configparser.c'],['../action__configparser_8c.html#a8ef9dce4d464d6994596deeace6ffa2d',1,'SDLVisualTest_ParseActionConfig(char *file, SDLVisualTest_ActionQueue *queue): action_configparser.c']]], + ['sdlvisualtest_5fparseargstoargv',['SDLVisualTest_ParseArgsToArgv',['../_s_d_l__visualtest__parsehelper_8h.html#a5f168fdd02f9d40ddbad97bd8c0b6361',1,'SDLVisualTest_ParseArgsToArgv(char *args): parsehelper.c'],['../parsehelper_8c.html#a5f168fdd02f9d40ddbad97bd8c0b6361',1,'SDLVisualTest_ParseArgsToArgv(char *args): parsehelper.c']]], + ['sdlvisualtest_5fparseharnessargs',['SDLVisualTest_ParseHarnessArgs',['../_s_d_l__visualtest__harness__argparser_8h.html#a629609acc04ef21a21fdfbbf6c1589c8',1,'SDLVisualTest_ParseHarnessArgs(char **argv, SDLVisualTest_HarnessState *state): harness_argparser.c'],['../harness__argparser_8c.html#a629609acc04ef21a21fdfbbf6c1589c8',1,'SDLVisualTest_ParseHarnessArgs(char **argv, SDLVisualTest_HarnessState *state): harness_argparser.c']]], + ['sdlvisualtest_5fparsesutconfig',['SDLVisualTest_ParseSUTConfig',['../_s_d_l__visualtest__sut__configparser_8h.html#a8e178cd8a1f279f5d2cf908545e97544',1,'SDLVisualTest_ParseSUTConfig(char *file, SDLVisualTest_SUTConfig *config): sut_configparser.c'],['../sut__configparser_8c.html#a8e178cd8a1f279f5d2cf908545e97544',1,'SDLVisualTest_ParseSUTConfig(char *file, SDLVisualTest_SUTConfig *config): sut_configparser.c']]], + ['sdlvisualtest_5frwhelpercountnonemptylines',['SDLVisualTest_RWHelperCountNonEmptyLines',['../rwhelper_8c.html#ac7f94417fa973af01a27452acd0043e8',1,'rwhelper.c']]], + ['sdlvisualtest_5frwhelperreadchar',['SDLVisualTest_RWHelperReadChar',['../rwhelper_8c.html#a92794c04d5568bde0da9f3020d88f44c',1,'rwhelper.c']]], + ['sdlvisualtest_5frwhelperreadline',['SDLVisualTest_RWHelperReadLine',['../rwhelper_8c.html#af97cfdf8d58f716efa8fd9204666df12',1,'rwhelper.c']]], + ['sdlvisualtest_5frwhelperresetbuffer',['SDLVisualTest_RWHelperResetBuffer',['../rwhelper_8c.html#aa7878508e6d851b11dc1d1186324064a',1,'rwhelper.c']]], + ['sdlvisualtest_5fscreenshotdesktop',['SDLVisualTest_ScreenshotDesktop',['../_s_d_l__visualtest__screenshot_8h.html#a812c545e97db11a756145d43b3a8e5ee',1,'SDL_visualtest_screenshot.h']]], + ['sdlvisualtest_5fscreenshotprocess',['SDLVisualTest_ScreenshotProcess',['../_s_d_l__visualtest__screenshot_8h.html#aefe6b7dbca1fbfb7aef081545c3ca66d',1,'SDL_visualtest_screenshot.h']]], + ['sdlvisualtest_5ftokenize',['SDLVisualTest_Tokenize',['../_s_d_l__visualtest__parsehelper_8h.html#a508e690ed938e09fc3b724d2faf06899',1,'SDLVisualTest_Tokenize(char *str, int max_token_len): parsehelper.c'],['../parsehelper_8c.html#a508e690ed938e09fc3b724d2faf06899',1,'SDLVisualTest_Tokenize(char *str, int max_token_len): parsehelper.c']]], + ['sdlvisualtest_5fverifyscreenshots',['SDLVisualTest_VerifyScreenshots',['../_s_d_l__visualtest__screenshot_8h.html#ac7b5335651144961676abc2116c38299',1,'SDLVisualTest_VerifyScreenshots(char *args, char *test_dir, char *verify_dir): screenshot.c'],['../screenshot_8c.html#ac7b5335651144961676abc2116c38299',1,'SDLVisualTest_VerifyScreenshots(char *args, char *test_dir, char *verify_dir): screenshot.c']]] +]; diff --git a/visualtest/docs/html/search/mag_sel.png b/visualtest/docs/html/search/mag_sel.png new file mode 100755 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/search/nomatches.html b/visualtest/docs/html/search/nomatches.html new file mode 100755 index 0000000000..b1ded27e9a --- /dev/null +++ b/visualtest/docs/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
+
No Matches
+
+ + diff --git a/visualtest/docs/html/search/pages_76.html b/visualtest/docs/html/search/pages_76.html new file mode 100755 index 0000000000..c180e9b88e --- /dev/null +++ b/visualtest/docs/html/search/pages_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/pages_76.js b/visualtest/docs/html/search/pages_76.js new file mode 100755 index 0000000000..9f2660f886 --- /dev/null +++ b/visualtest/docs/html/search/pages_76.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['visual_20and_20interactive_20test_20automation_20for_20sdl_202_2e0',['Visual and Interactive Test Automation for SDL 2.0',['../index.html',1,'']]] +]; diff --git a/visualtest/docs/html/search/search.css b/visualtest/docs/html/search/search.css new file mode 100755 index 0000000000..4d7612ff63 --- /dev/null +++ b/visualtest/docs/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:111px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/visualtest/docs/html/search/search.js b/visualtest/docs/html/search/search.js new file mode 100755 index 0000000000..e6bd04688c --- /dev/null +++ b/visualtest/docs/html/search/search.js @@ -0,0 +1,813 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111011011111101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010001100101110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111111001000111101110100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 6: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 7: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 8: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000010100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 9: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "defines", + 9: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/search/search_r.png b/visualtest/docs/html/search/search_r.png new file mode 100755 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/typedefs_73.js b/visualtest/docs/html/search/typedefs_73.js new file mode 100755 index 0000000000..383282f9d6 --- /dev/null +++ b/visualtest/docs/html/search/typedefs_73.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['sdl_5fprocessexitstatus',['SDL_ProcessExitStatus',['../_s_d_l__visualtest__process_8h.html#a5b7d5262f85e78bf4d53d88f3c509342',1,'SDL_visualtest_process.h']]], + ['sdl_5fprocessinfo',['SDL_ProcessInfo',['../_s_d_l__visualtest__process_8h.html#a94bc9e0b0b563a527ea50ef2eecd5402',1,'SDL_visualtest_process.h']]], + ['sdlvisualtest_5faction',['SDLVisualTest_Action',['../_s_d_l__visualtest__action__configparser_8h.html#a89974e9149bfca6aabb3ff06cc9671d7',1,'SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5factionnode',['SDLVisualTest_ActionNode',['../_s_d_l__visualtest__action__configparser_8h.html#a065d1acf0f98bde777d10bd8ab24d268',1,'SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5factionqueue',['SDLVisualTest_ActionQueue',['../_s_d_l__visualtest__action__configparser_8h.html#ac9ce1bb69d8774d1818c9f9d0f97c7f1',1,'SDL_visualtest_action_configparser.h']]], + ['sdlvisualtest_5fexhaustivevariator',['SDLVisualTest_ExhaustiveVariator',['../_s_d_l__visualtest__exhaustive__variator_8h.html#ab64de6cf7d6a1e6d09d470c020940c25',1,'SDL_visualtest_exhaustive_variator.h']]], + ['sdlvisualtest_5fharnessstate',['SDLVisualTest_HarnessState',['../_s_d_l__visualtest__harness__argparser_8h.html#ab89725ad0ec988d4923faa6a85972455',1,'SDL_visualtest_harness_argparser.h']]], + ['sdlvisualtest_5frandomvariator',['SDLVisualTest_RandomVariator',['../_s_d_l__visualtest__random__variator_8h.html#ab0df6ee6ec21b5070bfd8e90a7d79974',1,'SDL_visualtest_random_variator.h']]], + ['sdlvisualtest_5fsutconfig',['SDLVisualTest_SUTConfig',['../_s_d_l__visualtest__sut__configparser_8h.html#a1b493a40d601932b62ee643390aec169',1,'SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutintrange',['SDLVisualTest_SUTIntRange',['../_s_d_l__visualtest__sut__configparser_8h.html#a8cbe93330b2ce59cdf6da59e2eca6045',1,'SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutoption',['SDLVisualTest_SUTOption',['../_s_d_l__visualtest__sut__configparser_8h.html#a9f35b5fe1ce4ba831a9b9e1f2bc8b7f6',1,'SDL_visualtest_sut_configparser.h']]], + ['sdlvisualtest_5fsutoptionvalue',['SDLVisualTest_SUTOptionValue',['../_s_d_l__visualtest__variator__common_8h.html#aa4e5fb752f4cd087101ea3e1f6124dfb',1,'SDL_visualtest_variator_common.h']]], + ['sdlvisualtest_5fvariation',['SDLVisualTest_Variation',['../_s_d_l__visualtest__variator__common_8h.html#a6b447c1467862ecd623cc8f37489faeb',1,'SDL_visualtest_variator_common.h']]], + ['sdlvisualtest_5fvariator',['SDLVisualTest_Variator',['../_s_d_l__visualtest__variators_8h.html#a520a2479efbe9c4a9d617735f7314e0a',1,'SDL_visualtest_variators.h']]], + ['sdlvisualtest_5fvariatortype',['SDLVisualTest_VariatorType',['../_s_d_l__visualtest__variator__common_8h.html#a4a7752dc89880ce3f62a478b3d0d8d64',1,'SDL_visualtest_variator_common.h']]] +]; diff --git a/visualtest/docs/html/search/variables_61.html b/visualtest/docs/html/search/variables_61.html new file mode 100755 index 0000000000..cbd2c67aaf --- /dev/null +++ b/visualtest/docs/html/search/variables_61.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_61.js b/visualtest/docs/html/search/variables_61.js new file mode 100755 index 0000000000..759aa184c1 --- /dev/null +++ b/visualtest/docs/html/search/variables_61.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['action',['action',['../struct_s_d_l_visual_test___action_node.html#af46ec45094cc74a7432626a6234c6575',1,'SDLVisualTest_ActionNode']]], + ['action_5fqueue',['action_queue',['../struct_s_d_l_visual_test___harness_state.html#ae25567527563fbd7373fa1cf7cdede61',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/search/variables_62.html b/visualtest/docs/html/search/variables_62.html new file mode 100755 index 0000000000..9c2628f7fc --- /dev/null +++ b/visualtest/docs/html/search/variables_62.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_62.js b/visualtest/docs/html/search/variables_62.js new file mode 100755 index 0000000000..d614f7b3f1 --- /dev/null +++ b/visualtest/docs/html/search/variables_62.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['bool_5fvalue',['bool_value',['../union_s_d_l_visual_test___s_u_t_option_value.html#ace8ec6519c056e35443a6c401f3d0941',1,'SDLVisualTest_SUTOptionValue']]], + ['buffer',['buffer',['../struct_s_d_l_visual_test___exhaustive_variator.html#a2b599af5b00be0f525ffc18feb0775a8',1,'SDLVisualTest_ExhaustiveVariator::buffer()'],['../struct_s_d_l_visual_test___random_variator.html#a2b599af5b00be0f525ffc18feb0775a8',1,'SDLVisualTest_RandomVariator::buffer()'],['../struct_s_d_l_visual_test___r_w_helper_buffer.html#a5b528063c1aaa0e626f5d5e49de5baad',1,'SDLVisualTest_RWHelperBuffer::buffer()']]], + ['buffer_5fpos',['buffer_pos',['../struct_s_d_l_visual_test___r_w_helper_buffer.html#a8a37d41b7b076eced766d7418450477d',1,'SDLVisualTest_RWHelperBuffer']]], + ['buffer_5fwidth',['buffer_width',['../struct_s_d_l_visual_test___r_w_helper_buffer.html#adb2920cd89b7b8b8b014290e82746d8c',1,'SDLVisualTest_RWHelperBuffer']]] +]; diff --git a/visualtest/docs/html/search/variables_63.html b/visualtest/docs/html/search/variables_63.html new file mode 100755 index 0000000000..ea9fcda5f8 --- /dev/null +++ b/visualtest/docs/html/search/variables_63.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_63.js b/visualtest/docs/html/search/variables_63.js new file mode 100755 index 0000000000..dcc5243ac9 --- /dev/null +++ b/visualtest/docs/html/search/variables_63.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['categories',['categories',['../struct_s_d_l_visual_test___s_u_t_option.html#a6744d43d3ad17d06068dba9ee7b78c83',1,'SDLVisualTest_SUTOption']]], + ['config',['config',['../struct_s_d_l_visual_test___exhaustive_variator.html#ab66b4220589b2e2b6e1fde7d6c20bd72',1,'SDLVisualTest_ExhaustiveVariator::config()'],['../struct_s_d_l_visual_test___random_variator.html#ab66b4220589b2e2b6e1fde7d6c20bd72',1,'SDLVisualTest_RandomVariator::config()']]] +]; diff --git a/visualtest/docs/html/search/variables_64.html b/visualtest/docs/html/search/variables_64.html new file mode 100755 index 0000000000..87ccbcc8e9 --- /dev/null +++ b/visualtest/docs/html/search/variables_64.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_64.js b/visualtest/docs/html/search/variables_64.js new file mode 100755 index 0000000000..738e92dfb8 --- /dev/null +++ b/visualtest/docs/html/search/variables_64.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data',['data',['../struct_s_d_l_visual_test___s_u_t_option.html#aa9545bd4acd476f61533d04d53cdffdc',1,'SDLVisualTest_SUTOption::data()'],['../struct_s_d_l_visual_test___variator.html#af99a8790e729d599c656a2070e672e9a',1,'SDLVisualTest_Variator::data()']]] +]; diff --git a/visualtest/docs/html/search/variables_65.html b/visualtest/docs/html/search/variables_65.html new file mode 100755 index 0000000000..9b98f66563 --- /dev/null +++ b/visualtest/docs/html/search/variables_65.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_65.js b/visualtest/docs/html/search/variables_65.js new file mode 100755 index 0000000000..f1c225b11f --- /dev/null +++ b/visualtest/docs/html/search/variables_65.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['enum_5fvalues',['enum_values',['../struct_s_d_l_visual_test___s_u_t_option.html#a596ff3567c4b736561dba1915a2cd38d',1,'SDLVisualTest_SUTOption']]], + ['enumerated',['enumerated',['../union_s_d_l_visual_test___s_u_t_option_value.html#ad40e26afd4b8532327b61897d5b009e3',1,'SDLVisualTest_SUTOptionValue']]], + ['exit_5fstatus',['exit_status',['../struct_s_d_l___process_exit_status.html#a9324a9ff7dc6697dd77f02998d5e77d7',1,'SDL_ProcessExitStatus']]], + ['exit_5fsuccess',['exit_success',['../struct_s_d_l___process_exit_status.html#a51df50c07437f2e816d6ce7ce99e1cac',1,'SDL_ProcessExitStatus']]], + ['extra',['extra',['../struct_s_d_l_visual_test___action.html#a4626514a67f261290b54fb3d85ca8ddd',1,'SDLVisualTest_Action']]] +]; diff --git a/visualtest/docs/html/search/variables_66.html b/visualtest/docs/html/search/variables_66.html new file mode 100755 index 0000000000..67d53d8b64 --- /dev/null +++ b/visualtest/docs/html/search/variables_66.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_66.js b/visualtest/docs/html/search/variables_66.js new file mode 100755 index 0000000000..d89c380304 --- /dev/null +++ b/visualtest/docs/html/search/variables_66.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['front',['front',['../struct_s_d_l_visual_test___action_queue.html#a8b810b2fd2b05698be642ee08836a452',1,'SDLVisualTest_ActionQueue']]] +]; diff --git a/visualtest/docs/html/search/variables_69.html b/visualtest/docs/html/search/variables_69.html new file mode 100755 index 0000000000..941e60775b --- /dev/null +++ b/visualtest/docs/html/search/variables_69.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_69.js b/visualtest/docs/html/search/variables_69.js new file mode 100755 index 0000000000..d88f651d5a --- /dev/null +++ b/visualtest/docs/html/search/variables_69.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['integer',['integer',['../union_s_d_l_visual_test___s_u_t_option_value.html#a4291d9ad3cfb3fe1645ea2732e11d68a',1,'SDLVisualTest_SUTOptionValue']]] +]; diff --git a/visualtest/docs/html/search/variables_6d.html b/visualtest/docs/html/search/variables_6d.html new file mode 100755 index 0000000000..ca885469b8 --- /dev/null +++ b/visualtest/docs/html/search/variables_6d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_6d.js b/visualtest/docs/html/search/variables_6d.js new file mode 100755 index 0000000000..0115904f4f --- /dev/null +++ b/visualtest/docs/html/search/variables_6d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['max',['max',['../struct_s_d_l_visual_test___s_u_t_int_range.html#ae1e1dde676c120fa6d10f3bb2c14059e',1,'SDLVisualTest_SUTIntRange']]], + ['min',['min',['../struct_s_d_l_visual_test___s_u_t_int_range.html#a3e202b201e6255d975cd6d3aff1f5a4d',1,'SDLVisualTest_SUTIntRange']]] +]; diff --git a/visualtest/docs/html/search/variables_6e.html b/visualtest/docs/html/search/variables_6e.html new file mode 100755 index 0000000000..e0813cf1a0 --- /dev/null +++ b/visualtest/docs/html/search/variables_6e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_6e.js b/visualtest/docs/html/search/variables_6e.js new file mode 100755 index 0000000000..7f75305724 --- /dev/null +++ b/visualtest/docs/html/search/variables_6e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['name',['name',['../struct_s_d_l_visual_test___s_u_t_option.html#ad14ca616d8f7c9b61eff58baaead7f1f',1,'SDLVisualTest_SUTOption']]], + ['next',['next',['../struct_s_d_l_visual_test___action_node.html#ae6154b60b896ce1a184d060ee4664485',1,'SDLVisualTest_ActionNode']]], + ['no_5flaunch',['no_launch',['../struct_s_d_l_visual_test___harness_state.html#a091c0d08290b73216a736ff42ac8fa99',1,'SDLVisualTest_HarnessState']]], + ['num_5foptions',['num_options',['../struct_s_d_l_visual_test___s_u_t_config.html#a593108c2cc4b7dd3edecefd724edfd51',1,'SDLVisualTest_SUTConfig']]], + ['num_5fvariations',['num_variations',['../struct_s_d_l_visual_test___harness_state.html#a0bd4e04c0c6be7b94e68501bb31dd62c',1,'SDLVisualTest_HarnessState']]], + ['num_5fvars',['num_vars',['../struct_s_d_l_visual_test___variation.html#a2daded0b80f9ab7ed3703cc2686e5a92',1,'SDLVisualTest_Variation']]] +]; diff --git a/visualtest/docs/html/search/variables_6f.html b/visualtest/docs/html/search/variables_6f.html new file mode 100755 index 0000000000..a67864b54f --- /dev/null +++ b/visualtest/docs/html/search/variables_6f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_6f.js b/visualtest/docs/html/search/variables_6f.js new file mode 100755 index 0000000000..35f6f85420 --- /dev/null +++ b/visualtest/docs/html/search/variables_6f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['options',['options',['../struct_s_d_l_visual_test___s_u_t_config.html#afda1bef370f3d5ea6919b7b6a73d01c0',1,'SDLVisualTest_SUTConfig']]], + ['output_5fdir',['output_dir',['../struct_s_d_l_visual_test___harness_state.html#aafa9a2fb15490380b6c2edd704f4fcf0',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/search/variables_70.html b/visualtest/docs/html/search/variables_70.html new file mode 100755 index 0000000000..091e4bf8d7 --- /dev/null +++ b/visualtest/docs/html/search/variables_70.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_70.js b/visualtest/docs/html/search/variables_70.js new file mode 100755 index 0000000000..f867642370 --- /dev/null +++ b/visualtest/docs/html/search/variables_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['process',['process',['../struct_s_d_l_visual_test___action.html#aa43e9883c9f24718f49b984b67b1afdc',1,'SDLVisualTest_Action']]] +]; diff --git a/visualtest/docs/html/search/variables_72.html b/visualtest/docs/html/search/variables_72.html new file mode 100755 index 0000000000..0e513f2d8e --- /dev/null +++ b/visualtest/docs/html/search/variables_72.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_72.js b/visualtest/docs/html/search/variables_72.js new file mode 100755 index 0000000000..2be3738acb --- /dev/null +++ b/visualtest/docs/html/search/variables_72.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['range',['range',['../struct_s_d_l_visual_test___s_u_t_option.html#a2bb1301268866e0e41d035ea0a4914e8',1,'SDLVisualTest_SUTOption']]], + ['rear',['rear',['../struct_s_d_l_visual_test___action_queue.html#a4aaf4563956932c81c65d05f9020f2ce',1,'SDLVisualTest_ActionQueue']]], + ['required',['required',['../struct_s_d_l_visual_test___s_u_t_option.html#a79305c1b10f7b4defee52e1eefde8fbc',1,'SDLVisualTest_SUTOption']]] +]; diff --git a/visualtest/docs/html/search/variables_73.html b/visualtest/docs/html/search/variables_73.html new file mode 100755 index 0000000000..3c65150e41 --- /dev/null +++ b/visualtest/docs/html/search/variables_73.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_73.js b/visualtest/docs/html/search/variables_73.js new file mode 100755 index 0000000000..4ed0016698 --- /dev/null +++ b/visualtest/docs/html/search/variables_73.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['size',['size',['../struct_s_d_l_visual_test___action_queue.html#a439227feff9d7f55384e8780cfc2eb82',1,'SDLVisualTest_ActionQueue']]], + ['string',['string',['../union_s_d_l_visual_test___s_u_t_option_value.html#a2bf4b969ff9633c937e4d15118d1edc6',1,'SDLVisualTest_SUTOptionValue']]], + ['sut_5fconfig',['sut_config',['../struct_s_d_l_visual_test___harness_state.html#a42657080015a96da836e1640bbdf870e',1,'SDLVisualTest_HarnessState']]], + ['sutapp',['sutapp',['../struct_s_d_l_visual_test___harness_state.html#af277bbb5c712eb89e92337dd583a8b74',1,'SDLVisualTest_HarnessState']]], + ['sutargs',['sutargs',['../struct_s_d_l_visual_test___harness_state.html#a00fab9c7cf802b96b6b29e098292d24d',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/search/variables_74.html b/visualtest/docs/html/search/variables_74.html new file mode 100755 index 0000000000..3a0726b441 --- /dev/null +++ b/visualtest/docs/html/search/variables_74.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_74.js b/visualtest/docs/html/search/variables_74.js new file mode 100755 index 0000000000..75a24382f0 --- /dev/null +++ b/visualtest/docs/html/search/variables_74.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['time',['time',['../struct_s_d_l_visual_test___action.html#a42715f65f02da52edc5b22021d8ae670',1,'SDLVisualTest_Action']]], + ['timeout',['timeout',['../struct_s_d_l_visual_test___harness_state.html#a493b57f443cc38b3d3df9c1e584d9d82',1,'SDLVisualTest_HarnessState']]], + ['type',['type',['../struct_s_d_l_visual_test___action.html#a3ab091b672fc470015f09e6c4c50dcf1',1,'SDLVisualTest_Action::type()'],['../struct_s_d_l_visual_test___s_u_t_option.html#a857b9e5ccfca26034b47a5f3236d822c',1,'SDLVisualTest_SUTOption::type()'],['../struct_s_d_l_visual_test___variator.html#a24d4399dc1877c1843e120e7b027ae64',1,'SDLVisualTest_Variator::type()']]] +]; diff --git a/visualtest/docs/html/search/variables_76.html b/visualtest/docs/html/search/variables_76.html new file mode 100755 index 0000000000..cccf85023c --- /dev/null +++ b/visualtest/docs/html/search/variables_76.html @@ -0,0 +1,26 @@ + + + + + + + + + +
+
Loading...
+
+ +
Searching...
+
No Matches
+ +
+ + diff --git a/visualtest/docs/html/search/variables_76.js b/visualtest/docs/html/search/variables_76.js new file mode 100755 index 0000000000..fc860d9f81 --- /dev/null +++ b/visualtest/docs/html/search/variables_76.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['variation',['variation',['../struct_s_d_l_visual_test___exhaustive_variator.html#a11c2995cf19b41c4a1b1f8d9b4081ff7',1,'SDLVisualTest_ExhaustiveVariator::variation()'],['../struct_s_d_l_visual_test___random_variator.html#a11c2995cf19b41c4a1b1f8d9b4081ff7',1,'SDLVisualTest_RandomVariator::variation()']]], + ['variator_5ftype',['variator_type',['../struct_s_d_l_visual_test___harness_state.html#aaaa989ae89caee6d39c722cfe6907466',1,'SDLVisualTest_HarnessState']]], + ['vars',['vars',['../struct_s_d_l_visual_test___variation.html#a1eab2e90f0195b4f4632eb19523aeadf',1,'SDLVisualTest_Variation']]], + ['verify_5fdir',['verify_dir',['../struct_s_d_l_visual_test___harness_state.html#adc871112f24f61e2fff74a7a7fb9794f',1,'SDLVisualTest_HarnessState']]] +]; diff --git a/visualtest/docs/html/struct_s_d_l___process_exit_status.html b/visualtest/docs/html/struct_s_d_l___process_exit_status.html new file mode 100755 index 0000000000..eb72824f60 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l___process_exit_status.html @@ -0,0 +1,139 @@ + + + + + + +SDL Visual Test: SDL_ProcessExitStatus Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDL_ProcessExitStatus Struct Reference
+
+
+ +

#include <SDL_visualtest_process.h>

+ + + + + + +

+Data Fields

int exit_success
 
int exit_status
 
+

Detailed Description

+

This structure stores the exit status (value returned by main()) and whether the process exited sucessfully or not.

+

Field Documentation

+ +
+
+ + + + +
int exit_status
+
+

The exit status of the process. 8-bit value.

+ +
+
+ +
+
+ + + + +
int exit_success
+
+

Zero if the process exited successfully

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l___process_info.html b/visualtest/docs/html/struct_s_d_l___process_info.html new file mode 100755 index 0000000000..2287670c21 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l___process_info.html @@ -0,0 +1,102 @@ + + + + + + +SDL Visual Test: SDL_ProcessInfo Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
SDL_ProcessInfo Struct Reference
+
+
+ +

#include <SDL_visualtest_process.h>

+

Detailed Description

+

Struct to store a platform specific handle to a process.

+

The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___action.html b/visualtest/docs/html/struct_s_d_l_visual_test___action.html new file mode 100755 index 0000000000..8e136641e5 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___action.html @@ -0,0 +1,175 @@ + + + + + + +SDL Visual Test: SDLVisualTest_Action Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_Action Struct Reference
+
+
+ +

#include <SDL_visualtest_action_configparser.h>

+ + + + + + + + + + + + + + + + +

+Data Fields

SDLVisualTest_ActionType type
 
int time
 
union {
   struct {
      char *   path
 
      char *   args
 
   }   process
 
extra
 
+

Detailed Description

+

Struct that defines an action that will be performed on the SUT process at a specific time.

+

Field Documentation

+ +
+
+ + + + +
union { ... } extra
+
+

Any additional information needed to perform the action.

+ +
+
+ +
+
+ + + + +
struct { ... } process
+
+

The path and arguments to the process to be launched

+ +
+
+ +
+
+ + + + +
int time
+
+

The time, in milliseconds from the launch of the SUT, when the action will be performed

+ +
+
+ +
+
+ + + + +
SDLVisualTest_ActionType type
+
+

The type of action to be performed

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___action_node.html b/visualtest/docs/html/struct_s_d_l_visual_test___action_node.html new file mode 100755 index 0000000000..28e75e4878 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___action_node.html @@ -0,0 +1,139 @@ + + + + + + +SDL Visual Test: SDLVisualTest_ActionNode Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_ActionNode Struct Reference
+
+
+ +

#include <SDL_visualtest_action_configparser.h>

+ + + + + + +

+Data Fields

SDLVisualTest_Action action
 
struct SDLVisualTest_ActionNodenext
 
+

Detailed Description

+

Struct for a node in the action queue.

+

Field Documentation

+ +
+
+ + + + +
SDLVisualTest_Action action
+
+

The action in this node

+ +
+
+ +
+
+ + + + +
struct SDLVisualTest_ActionNode* next
+
+

Pointer to the next element in the queue

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___action_queue.html b/visualtest/docs/html/struct_s_d_l_visual_test___action_queue.html new file mode 100755 index 0000000000..8292dcd9e0 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___action_queue.html @@ -0,0 +1,154 @@ + + + + + + +SDL Visual Test: SDLVisualTest_ActionQueue Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_ActionQueue Struct Reference
+
+
+ +

#include <SDL_visualtest_action_configparser.h>

+ + + + + + + + +

+Data Fields

SDLVisualTest_ActionNodefront
 
SDLVisualTest_ActionNoderear
 
int size
 
+

Detailed Description

+

Queue structure for actions loaded from the actions config file.

+

Field Documentation

+ +
+
+ + + + +
SDLVisualTest_ActionNode* front
+
+

Pointer to the front of the queue

+ +
+
+ +
+
+ + + + +
SDLVisualTest_ActionNode* rear
+
+

Pointer to the rear of the queue

+ +
+
+ +
+
+ + + + +
int size
+
+

Number of nodes in the queue

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___exhaustive_variator.html b/visualtest/docs/html/struct_s_d_l_visual_test___exhaustive_variator.html new file mode 100755 index 0000000000..12b472c3a9 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___exhaustive_variator.html @@ -0,0 +1,154 @@ + + + + + + +SDL Visual Test: SDLVisualTest_ExhaustiveVariator Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_ExhaustiveVariator Struct Reference
+
+
+ +

#include <SDL_visualtest_exhaustive_variator.h>

+ + + + + + + + +

+Data Fields

SDLVisualTest_Variation variation
 
SDLVisualTest_SUTConfig config
 
char buffer [MAX_SUT_ARGS_LEN]
 
+

Detailed Description

+

Struct for the variator that exhaustively iterates through all variations of command line arguments to the SUT.

+

Field Documentation

+ +
+
+ + + + +
char buffer[MAX_SUT_ARGS_LEN]
+
+

Buffer to store the arguments string built from the variation

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTConfig config
+
+

Configuration object for the SUT that the variator is running for.

+ +
+
+ +
+
+ + + + +
SDLVisualTest_Variation variation
+
+

The current variation.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___harness_state.html b/visualtest/docs/html/struct_s_d_l_visual_test___harness_state.html new file mode 100755 index 0000000000..a8db4701cb --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___harness_state.html @@ -0,0 +1,259 @@ + + + + + + +SDL Visual Test: SDLVisualTest_HarnessState Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_HarnessState Struct Reference
+
+
+ +

#include <SDL_visualtest_harness_argparser.h>

+ + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

char sutapp [MAX_PATH_LEN]
 
char sutargs [MAX_SUT_ARGS_LEN]
 
int timeout
 
SDLVisualTest_SUTConfig sut_config
 
SDLVisualTest_VariatorType variator_type
 
int num_variations
 
SDL_bool no_launch
 
SDLVisualTest_ActionQueue action_queue
 
char output_dir [MAX_PATH_LEN]
 
char verify_dir [MAX_PATH_LEN]
 
+

Detailed Description

+

Stores the state of the test harness.

+

Field Documentation

+ +
+
+ + + + +
SDLVisualTest_ActionQueue action_queue
+
+

A queue with actions to be performed while the SUT is running

+ +
+
+ +
+
+ + + + +
SDL_bool no_launch
+
+

If true, the test harness will just print the different variations without launching the SUT for each one

+ +
+
+ +
+
+ + + + +
int num_variations
+
+

The number of variations to generate

+ +
+
+ +
+
+ + + + +
char output_dir[MAX_PATH_LEN]
+
+

Output directory to save the screenshots

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTConfig sut_config
+
+

Configuration object for the SUT

+ +
+
+ +
+
+ + + + +
char sutapp[MAX_PATH_LEN]
+
+

Path to the System Under Test (SUT) executable

+ +
+
+ +
+
+ + + + +
char sutargs[MAX_SUT_ARGS_LEN]
+
+

Command line arguments to be passed to the SUT

+ +
+
+ +
+
+ + + + +
int timeout
+
+

Time in milliseconds after which to kill the SUT

+ +
+
+ +
+
+ + + + +
SDLVisualTest_VariatorType variator_type
+
+

What type of variator to use to generate argument strings

+ +
+
+ +
+
+ + + + +
char verify_dir[MAX_PATH_LEN]
+
+

Path to directory with the verification images

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___r_w_helper_buffer.html b/visualtest/docs/html/struct_s_d_l_visual_test___r_w_helper_buffer.html new file mode 100755 index 0000000000..35a7139086 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___r_w_helper_buffer.html @@ -0,0 +1,154 @@ + + + + + + +SDL Visual Test: SDLVisualTest_RWHelperBuffer Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_RWHelperBuffer Struct Reference
+
+
+ +

#include <SDL_visualtest_rwhelper.h>

+ + + + + + + + +

+Data Fields

char buffer [RWOPS_BUFFER_LEN]
 
int buffer_pos
 
int buffer_width
 
+

Detailed Description

+

Struct that is used as a buffer by the RW helper functions. Should be initialized by calling SDLVisualTest_RWHelperResetBuffer() before being used.

+

Field Documentation

+ +
+
+ + + + +
char buffer[RWOPS_BUFFER_LEN]
+
+

Character buffer that data is read into

+ +
+
+ +
+
+ + + + +
int buffer_pos
+
+

buffer[buffer_pos] is the next character to be read from the buffer

+ +
+
+ +
+
+ + + + +
int buffer_width
+
+

Number of character read into the buffer

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___random_variator.html b/visualtest/docs/html/struct_s_d_l_visual_test___random_variator.html new file mode 100755 index 0000000000..13a96fdb42 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___random_variator.html @@ -0,0 +1,154 @@ + + + + + + +SDL Visual Test: SDLVisualTest_RandomVariator Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_RandomVariator Struct Reference
+
+
+ +

#include <SDL_visualtest_random_variator.h>

+ + + + + + + + +

+Data Fields

SDLVisualTest_Variation variation
 
SDLVisualTest_SUTConfig config
 
char buffer [MAX_SUT_ARGS_LEN]
 
+

Detailed Description

+

Struct for the variator that randomly generates variations of command line arguments to the SUT.

+

Field Documentation

+ +
+
+ + + + +
char buffer[MAX_SUT_ARGS_LEN]
+
+

Buffer to store the arguments string built from the variation

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTConfig config
+
+

Configuration object for the SUT that the variator is running for.

+ +
+
+ +
+
+ + + + +
SDLVisualTest_Variation variation
+
+

The current variation.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_config.html b/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_config.html new file mode 100755 index 0000000000..0d4b6d09a1 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_config.html @@ -0,0 +1,139 @@ + + + + + + +SDL Visual Test: SDLVisualTest_SUTConfig Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_SUTConfig Struct Reference
+
+
+ +

#include <SDL_visualtest_sut_configparser.h>

+ + + + + + +

+Data Fields

SDLVisualTest_SUTOptionoptions
 
int num_options
 
+

Detailed Description

+

Struct to hold all the options to an SUT application.

+

Field Documentation

+ +
+
+ + + + +
int num_options
+
+

Number of options in options

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTOption* options
+
+

Pointer to an array of options

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_int_range.html b/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_int_range.html new file mode 100755 index 0000000000..8d96bd0eda --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_int_range.html @@ -0,0 +1,139 @@ + + + + + + +SDL Visual Test: SDLVisualTest_SUTIntRange Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_SUTIntRange Struct Reference
+
+
+ +

#include <SDL_visualtest_sut_configparser.h>

+ + + + + + +

+Data Fields

int min
 
int max
 
+

Detailed Description

+

Represents the range of values an integer option can take.

+

Field Documentation

+ +
+
+ + + + +
int max
+
+

Maximum value of the integer option

+ +
+
+ +
+
+ + + + +
int min
+
+

Minimum value of the integer option

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_option.html b/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_option.html new file mode 100755 index 0000000000..db0e19ed84 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___s_u_t_option.html @@ -0,0 +1,217 @@ + + + + + + +SDL Visual Test: SDLVisualTest_SUTOption Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_SUTOption Struct Reference
+
+
+ +

#include <SDL_visualtest_sut_configparser.h>

+ + + + + + + + + + + + + + + + + +

+Data Fields

char name [MAX_SUTOPTION_NAME_LEN]
 
char ** categories
 
SDLVisualTest_SUTOptionType type
 
SDL_bool required
 
union {
   SDLVisualTest_SUTIntRange   range
 
   char **   enum_values
 
data
 
+

Detailed Description

+

Struct that defines an option to be passed to the SUT.

+

Field Documentation

+ +
+
+ + + + +
char** categories
+
+

An array of categories that the option belongs to. The last element is NULL.

+ +
+
+ +
+
+ + + + +
union { ... } data
+
+

extra data that is required for certain types

+ +
+
+ +
+
+ + + + +
char** enum_values
+
+
This field is valid only for enum type options; it holds the list of values
+

that the option can take. The last element is NULL

+ +
+
+ +
+
+ + + + +
char name[MAX_SUTOPTION_NAME_LEN]
+
+

The name of the option. This is what you would pass in the command line along with two leading hyphens.

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTIntRange range
+
+
This field is valid only for integer type options; it defines the
+

valid range for such an option

+ +
+
+ +
+
+ + + + +
SDL_bool required
+
+

Whether the option is required or not

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTOptionType type
+
+

Type of the option - integer, boolean, etc.

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___variation.html b/visualtest/docs/html/struct_s_d_l_visual_test___variation.html new file mode 100755 index 0000000000..c48f02214f --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___variation.html @@ -0,0 +1,139 @@ + + + + + + +SDL Visual Test: SDLVisualTest_Variation Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_Variation Struct Reference
+
+
+ +

#include <SDL_visualtest_variator_common.h>

+ + + + + + +

+Data Fields

SDLVisualTest_SUTOptionValuevars
 
int num_vars
 
+

Detailed Description

+

Represents a valid combination of parameters that can be passed to the SUT. The ordering of the values here is the same as the ordering of the options in the SDLVisualTest_SUTConfig object for this variation.

+

Field Documentation

+ +
+
+ + + + +
int num_vars
+
+

Number of option values in vars

+ +
+
+ +
+
+ + + + +
SDLVisualTest_SUTOptionValue* vars
+
+

Pointer to array of option values

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/struct_s_d_l_visual_test___variator.html b/visualtest/docs/html/struct_s_d_l_visual_test___variator.html new file mode 100755 index 0000000000..4ba1169864 --- /dev/null +++ b/visualtest/docs/html/struct_s_d_l_visual_test___variator.html @@ -0,0 +1,144 @@ + + + + + + +SDL Visual Test: SDLVisualTest_Variator Struct Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_Variator Struct Reference
+
+
+ +

#include <SDL_visualtest_variators.h>

+ + + + + + + + + + + +

+Data Fields

SDLVisualTest_VariatorType type
 
union {
   SDLVisualTest_ExhaustiveVariator   exhaustive
 
   SDLVisualTest_RandomVariator   random
 
data
 
+

Detailed Description

+

Struct that acts like a wrapper around the different types of variators available.

+

Field Documentation

+ +
+
+ + + + +
union { ... } data
+
+

union object that stores the variator

+ +
+
+ +
+
+ + + + +
SDLVisualTest_VariatorType type
+
+

Type of the variator

+ +
+
+
The documentation for this struct was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/sut__configparser_8c.html b/visualtest/docs/html/sut__configparser_8c.html new file mode 100755 index 0000000000..341ab14276 --- /dev/null +++ b/visualtest/docs/html/sut__configparser_8c.html @@ -0,0 +1,170 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/sut_configparser.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
sut_configparser.c File Reference
+
+
+
#include <limits.h>
+#include <string.h>
+#include <SDL_test.h>
+#include <SDL_rwops.h>
+#include "SDL_visualtest_sut_configparser.h"
+#include "SDL_visualtest_parsehelper.h"
+#include "SDL_visualtest_rwhelper.h"
+
+ + + + + +

+Functions

int SDLVisualTest_ParseSUTConfig (char *file, SDLVisualTest_SUTConfig *config)
 
void SDLVisualTest_FreeSUTConfig (SDLVisualTest_SUTConfig *config)
 
+

Detailed Description

+

Source file for the parser for SUT config files.

+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeSUTConfig (SDLVisualTest_SUTConfigconfig)
+
+

Free any resources associated with the config object pointed to by config.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_ParseSUTConfig (char * file,
SDLVisualTest_SUTConfigconfig 
)
+
+

Parses a configuration file that describes the command line options an SUT application will take and populates a SUT config object. All lines in the config file must be smaller than

+
Parameters
+ + + +
filePath to the configuration file.
configPointer to an object that represents an SUT configuration.
+
+
+
Returns
zero on failure, non-zero on success
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/sync_off.png b/visualtest/docs/html/sync_off.png new file mode 100755 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/sync_on.png b/visualtest/docs/html/sync_on.png new file mode 100755 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/tab_a.png b/visualtest/docs/html/tab_a.png new file mode 100755 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/tab_b.png b/visualtest/docs/html/tab_b.png new file mode 100755 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/visualtest/docs/html/tabs.css b/visualtest/docs/html/tabs.css new file mode 100755 index 0000000000..9cf578f23a --- /dev/null +++ b/visualtest/docs/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/visualtest/docs/html/testharness_8c.html b/visualtest/docs/html/testharness_8c.html new file mode 100755 index 0000000000..ccef4845e4 --- /dev/null +++ b/visualtest/docs/html/testharness_8c.html @@ -0,0 +1,240 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/testharness.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
testharness.c File Reference
+
+
+
#include <stdlib.h>
+#include <SDL_test.h>
+#include <SDL.h>
+#include <SDL_assert.h>
+#include "SDL_visualtest_harness_argparser.h"
+#include "SDL_visualtest_process.h"
+#include "SDL_visualtest_variators.h"
+#include "SDL_visualtest_screenshot.h"
+#include "SDL_visualtest_mischelper.h"
+
+ + + + + + + + + + + + + +

+Macros

#define ACTION_TIMER_EVENT   0
 
#define KILL_TIMER_EVENT   1
 
#define ACTION_LOOP_FPS   10
 
#define TEST_PASSED   1
 
#define TEST_FAILED   0
 
#define TEST_ERROR   -1
 
+ + + +

+Functions

int main (int argc, char *argv[])
 
+

Detailed Description

+

Source file for the test harness.

+

Macro Definition Documentation

+ +
+
+ + + + +
#define ACTION_LOOP_FPS   10
+
+

FPS value used for delays in the action loop

+ +
+
+ +
+
+ + + + +
#define ACTION_TIMER_EVENT   0
+
+

Code for the user event triggered when a new action is to be executed

+ +
+
+ +
+
+ + + + +
#define KILL_TIMER_EVENT   1
+
+

Code for the user event triggered when the maximum timeout is reached

+ +
+
+ +
+
+ + + + +
#define TEST_ERROR   -1
+
+

Value returned by RunSUTAndTest() on a fatal error

+ +
+
+ +
+
+ + + + +
#define TEST_FAILED   0
+
+

Value returned by RunSUTAndTest() when the test has failed

+ +
+
+ +
+
+ + + + +
#define TEST_PASSED   1
+
+

Value returned by RunSUTAndTest() when the test has passed

+ +
+
+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int main (int argc,
char * argv[] 
)
+
+

Entry point for testharness

+ +
+
+
+ + + + diff --git a/visualtest/docs/html/union_s_d_l_visual_test___s_u_t_option_value.html b/visualtest/docs/html/union_s_d_l_visual_test___s_u_t_option_value.html new file mode 100755 index 0000000000..2cab3efc27 --- /dev/null +++ b/visualtest/docs/html/union_s_d_l_visual_test___s_u_t_option_value.html @@ -0,0 +1,184 @@ + + + + + + +SDL Visual Test: SDLVisualTest_SUTOptionValue Union Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SDLVisualTest_SUTOptionValue Union Reference
+
+
+ +

#include <SDL_visualtest_variator_common.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Data Fields

SDL_bool bool_value
 
struct {
   int   value
 
   SDL_bool   on
 
integer
 
struct {
   int   index
 
   SDL_bool   on
 
enumerated
 
struct {
   char *   value
 
   SDL_bool   on
 
string
 
+

Detailed Description

+

One possible value for a command line option to the SUT.

+

Field Documentation

+ +
+
+ + + + +
SDL_bool bool_value
+
+

Value if the option is of type boolean

+ +
+
+ +
+
+ + + + +
struct { ... } enumerated
+
+

Index of the string in the enum_values field of the corresponding SDLVisualTest_SUTOption object. If on is true the option will passed to the SUT, otherwise it will be ignored.

+ +
+
+ +
+
+ + + + +
struct { ... } integer
+
+

Value if the option is of type integer. If on is true then the option will be passed to the SUT, otherwise it will be ignored.

+ +
+
+ +
+
+ + + + +
struct { ... } string
+
+

Value if the option is of type string. If on is true the option will be passed to the SUT, otherwise it will be ignored.

+ +
+
+
The documentation for this union was generated from the following file: +
+ + + + diff --git a/visualtest/docs/html/variator__common_8c.html b/visualtest/docs/html/variator__common_8c.html new file mode 100755 index 0000000000..a2db16e8e3 --- /dev/null +++ b/visualtest/docs/html/variator__common_8c.html @@ -0,0 +1,233 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/variator_common.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
variator_common.c File Reference
+
+
+
#include <SDL_test.h>
+#include "SDL_visualtest_variator_common.h"
+
+ + + + + + + +

+Functions

int SDLVisualTest_NextValue (SDLVisualTest_SUTOptionValue *var, SDLVisualTest_SUTOption *opt)
 
int SDLVisualTest_MakeStrFromVariation (SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config, char *buffer, int size)
 
int SDLVisualTest_InitVariation (SDLVisualTest_Variation *variation, SDLVisualTest_SUTConfig *config)
 
+

Detailed Description

+

Source file for some common functionality used by variators.

+

Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitVariation (SDLVisualTest_Variationvariation,
SDLVisualTest_SUTConfigconfig 
)
+
+

Initializes the variation using the following rules:

+
    +
  • Boolean options are initialized to SDL_FALSE.
  • +
  • Integer options are initialized to the minimum valid value they can hold.
  • +
  • Enum options are initialized to the first element in the list of values they can take.
  • +
  • String options are initialized to the name of the option.
  • +
+
Returns
1 on success, 0 on failure.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_MakeStrFromVariation (SDLVisualTest_Variationvariation,
SDLVisualTest_SUTConfigconfig,
char * buffer,
int size 
)
+
+

Converts a variation object into a string of command line arguments.

+
Parameters
+ + + + + +
variationVariation object to be converted.
configConfig object for the SUT.
bufferPointer to the buffer the arguments string will be copied into.
sizeSize of the buffer.
+
+
+
Returns
1 on success, 0 on failure
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_NextValue (SDLVisualTest_SUTOptionValuevar,
SDLVisualTest_SUTOptionopt 
)
+
+

"Increments" the value of the option by one and returns the carry. We wrap around to the initial value on overflow which makes the carry one. For example: "incrementing" an SDL_FALSE option makes it SDL_TRUE with no carry, and "incrementing" an SDL_TRUE option makes it SDL_FALSE with carry one. For integers, a random value in the valid range for the option is used.

+
Parameters
+ + + +
varValue of the option
optObject with metadata about the option
+
+
+
Returns
1 if there is a carry for enum and bool type options, 0 otherwise. 1 is always returned for integer and string type options. -1 is returned on error.
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/variator__exhaustive_8c.html b/visualtest/docs/html/variator__exhaustive_8c.html new file mode 100755 index 0000000000..7df560c753 --- /dev/null +++ b/visualtest/docs/html/variator__exhaustive_8c.html @@ -0,0 +1,180 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/variator_exhaustive.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
variator_exhaustive.c File Reference
+
+
+
#include <time.h>
+#include <SDL_test.h>
+#include "SDL_visualtest_sut_configparser.h"
+#include "SDL_visualtest_exhaustive_variator.h"
+
+ + + + + + + +

+Functions

int SDLVisualTest_InitExhaustiveVariator (SDLVisualTest_ExhaustiveVariator *variator, SDLVisualTest_SUTConfig *config)
 
char * SDLVisualTest_GetNextExhaustiveVariation (SDLVisualTest_ExhaustiveVariator *variator)
 
void SDLVisualTest_FreeExhaustiveVariator (SDLVisualTest_ExhaustiveVariator *variator)
 
+

Detailed Description

+

Source file for the variator that tests the SUT with all the different variations of input parameters that are valid.

+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeExhaustiveVariator (SDLVisualTest_ExhaustiveVariatorvariator)
+
+

Frees any resources associated with the variator.

+ +
+
+ +
+
+ + + + + + + + +
char* SDLVisualTest_GetNextExhaustiveVariation (SDLVisualTest_ExhaustiveVariatorvariator)
+
+

Gets the arguments string for the next variation using the variator and updates the variator's current variation object to the next variation.

+
Returns
The arguments string representing the next variation on success, and NULL on failure or if we have iterated through all possible variations. In the latter case subsequent calls will start the variations again from the very beginning. The pointer returned should not be freed.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitExhaustiveVariator (SDLVisualTest_ExhaustiveVariatorvariator,
SDLVisualTest_SUTConfigconfig 
)
+
+

Initializes the variator.

+
Returns
1 on success, 0 on failure
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/variator__random_8c.html b/visualtest/docs/html/variator__random_8c.html new file mode 100755 index 0000000000..b9d776ffb2 --- /dev/null +++ b/visualtest/docs/html/variator__random_8c.html @@ -0,0 +1,185 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/variator_random.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
variator_random.c File Reference
+
+
+
#include <time.h>
+#include <SDL_test.h>
+#include "SDL_visualtest_random_variator.h"
+
+ + + + + + + +

+Functions

int SDLVisualTest_InitRandomVariator (SDLVisualTest_RandomVariator *variator, SDLVisualTest_SUTConfig *config, Uint64 seed)
 
char * SDLVisualTest_GetNextRandomVariation (SDLVisualTest_RandomVariator *variator)
 
void SDLVisualTest_FreeRandomVariator (SDLVisualTest_RandomVariator *variator)
 
+

Detailed Description

+

Source file for the variator that tests the SUT with random variations to the input parameters.

+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeRandomVariator (SDLVisualTest_RandomVariatorvariator)
+
+

Frees any resources associated with the variator.

+ +
+
+ +
+
+ + + + + + + + +
char* SDLVisualTest_GetNextRandomVariation (SDLVisualTest_RandomVariatorvariator)
+
+

Generates a new random variation.

+
Returns
The arguments string representing the random variation on success, and NULL on failure. The pointer returned should not be freed.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitRandomVariator (SDLVisualTest_RandomVariatorvariator,
SDLVisualTest_SUTConfigconfig,
Uint64 seed 
)
+
+

Initializes the variator.

+
Returns
1 on success, 0 on failure
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/variators_8c.html b/visualtest/docs/html/variators_8c.html new file mode 100755 index 0000000000..d1b233cdc9 --- /dev/null +++ b/visualtest/docs/html/variators_8c.html @@ -0,0 +1,190 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/variators.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+ +
+
variators.c File Reference
+
+
+
#include <SDL_test.h>
+#include "SDL_visualtest_variators.h"
+
+ + + + + + + +

+Functions

int SDLVisualTest_InitVariator (SDLVisualTest_Variator *variator, SDLVisualTest_SUTConfig *config, SDLVisualTest_VariatorType type, Uint64 seed)
 
char * SDLVisualTest_GetNextVariation (SDLVisualTest_Variator *variator)
 
void SDLVisualTest_FreeVariator (SDLVisualTest_Variator *variator)
 
+

Detailed Description

+

Source file for the operations that act on variators.

+

Function Documentation

+ +
+
+ + + + + + + + +
void SDLVisualTest_FreeVariator (SDLVisualTest_Variatorvariator)
+
+

Frees any resources associated with the variator.

+ +
+
+ +
+
+ + + + + + + + +
char* SDLVisualTest_GetNextVariation (SDLVisualTest_Variatorvariator)
+
+

Gets the next variation using the variator.

+
Returns
The arguments string representing the variation on success, and NULL on failure. The pointer returned should not be freed.
+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int SDLVisualTest_InitVariator (SDLVisualTest_Variatorvariator,
SDLVisualTest_SUTConfigconfig,
SDLVisualTest_VariatorType type,
Uint64 seed 
)
+
+

Initializes the variator object pointed to by variator of type type with information from the config object pointed to by config.

+
Returns
1 on success, 0 on failure
+ +
+
+
+ + + + diff --git a/visualtest/docs/html/windows__process_8c.html b/visualtest/docs/html/windows__process_8c.html new file mode 100755 index 0000000000..d0cee34496 --- /dev/null +++ b/visualtest/docs/html/windows__process_8c.html @@ -0,0 +1,105 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/windows/windows_process.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
windows_process.c File Reference
+
+
+
#include <SDL.h>
+#include <SDL_test.h>
+#include <string.h>
+#include <stdlib.h>
+#include "SDL_visualtest_process.h"
+

Detailed Description

+

Source file for the process API on windows.

+
+ + + + diff --git a/visualtest/docs/html/windows__screenshot_8c.html b/visualtest/docs/html/windows__screenshot_8c.html new file mode 100755 index 0000000000..a42ec278bf --- /dev/null +++ b/visualtest/docs/html/windows__screenshot_8c.html @@ -0,0 +1,103 @@ + + + + + + +SDL Visual Test: C:/Users/DELL/Work/sdlvisualtest/visualtest/src/windows/windows_screenshot.c File Reference + + + + + + + + + +
+
+ + + + + + +
+
SDL Visual Test +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
windows_screenshot.c File Reference
+
+
+
#include "SDL_visualtest_process.h"
+#include <SDL.h>
+#include <SDL_test.h>
+

Detailed Description

+

Source file for the screenshot API on windows.

+
+ + + + diff --git a/visualtest/docs/latex/_s_d_l__visualtest__action__configparser_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__action__configparser_8h.tex new file mode 100755 index 0000000000..ee466d3db1 --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__action__configparser_8h.tex @@ -0,0 +1,193 @@ +\hypertarget{_s_d_l__visualtest__action__configparser_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.h File Reference} +\label{_s_d_l__visualtest__action__configparser_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +} +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} +\item +struct \hyperlink{struct_s_d_l_visual_test___action_node}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} +\item +struct \hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{_s_d_l__visualtest__action__configparser_8h_a19244c2e1556665be344807ace1556ed}{M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}~300 +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} \hyperlink{_s_d_l__visualtest__action__configparser_8h_a89974e9149bfca6aabb3ff06cc9671d7}{S\-D\-L\-Visual\-Test\-\_\-\-Action} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___action_node}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} \hyperlink{_s_d_l__visualtest__action__configparser_8h_a065d1acf0f98bde777d10bd8ab24d268}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} \hyperlink{_s_d_l__visualtest__action__configparser_8h_ac9ce1bb69d8774d1818c9f9d0f97c7f1}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type} \{ \\* +\hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6ac5344bca6af9c07c4ee69ee4c2b18df2}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-A\-U\-N\-C\-H} = 0, +\hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6a87880c4f665344d4c3e12f9aa3af7410}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-K\-I\-L\-L}, +\hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6ad3d17a830b7e1e46e37d916130d8802a}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-Q\-U\-I\-T}, +\hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6af9b5d42cb90bf843f298be4593992fdb}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-S\-C\-R\-E\-E\-N\-S\-H\-O\-T}, +\\* +\hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6a0853f8be8363015b822658b9f3b013f4}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-V\-E\-R\-I\-F\-Y} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__action__configparser_8h_a647d1be8f0f27af2fb1e5d4da2100596}{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue, \hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} action) +\item +int \hyperlink{_s_d_l__visualtest__action__configparser_8h_a0e7998533e6e10590612a8d5dee7ec0b}{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +void \hyperlink{_s_d_l__visualtest__action__configparser_8h_ae68c1c80f728e125869882139bec2c9e}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +\hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} $\ast$ \hyperlink{_s_d_l__visualtest__action__configparser_8h_afb508801942e7c74084480bcdb6f8613}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +int \hyperlink{_s_d_l__visualtest__action__configparser_8h_a8484ee36f78952192d4193c85fca2f17}{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +void \hyperlink{_s_d_l__visualtest__action__configparser_8h_a677da0d0e4793df342f91974b4559efa}{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +int \hyperlink{_s_d_l__visualtest__action__configparser_8h_ace5374ef7509e95383929ff185aaf7e6}{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue, \hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} action) +\item +int \hyperlink{_s_d_l__visualtest__action__configparser_8h_a8ef9dce4d464d6994596deeace6ffa2d}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config} (char $\ast$file, \hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header file for the parser for action config files. + +\subsection{Macro Definition Documentation} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a19244c2e1556665be344807ace1556ed}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H@{M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}} +\index{M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H@{M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H~300}}\label{_s_d_l__visualtest__action__configparser_8h_a19244c2e1556665be344807ace1556ed} +The maximum length of one line in the actions file + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a89974e9149bfca6aabb3ff06cc9671d7}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Action}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}}}\label{_s_d_l__visualtest__action__configparser_8h_a89974e9149bfca6aabb3ff06cc9671d7} +Struct that defines an action that will be performed on the S\-U\-T process at a specific time. \hypertarget{_s_d_l__visualtest__action__configparser_8h_a065d1acf0f98bde777d10bd8ab24d268}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}}}\label{_s_d_l__visualtest__action__configparser_8h_a065d1acf0f98bde777d10bd8ab24d268} +Struct for a node in the action queue. \hypertarget{_s_d_l__visualtest__action__configparser_8h_ac9ce1bb69d8774d1818c9f9d0f97c7f1}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}}}\label{_s_d_l__visualtest__action__configparser_8h_ac9ce1bb69d8774d1818c9f9d0f97c7f1} +Queue structure for actions loaded from the actions config file. + +\subsection{Enumeration Type Documentation} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type}}}\label{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6} +Type of the action. \begin{Desc} +\item[Enumerator]\par +\begin{description} +\index{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-A\-U\-N\-C\-H@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-A\-U\-N\-C\-H}!S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}}\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-A\-U\-N\-C\-H@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-A\-U\-N\-C\-H}}\item[{\em +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6ac5344bca6af9c07c4ee69ee4c2b18df2}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-L\-A\-U\-N\-C\-H}\label{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6ac5344bca6af9c07c4ee69ee4c2b18df2} +}]Launch an application with some given arguments \index{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-K\-I\-L\-L@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-K\-I\-L\-L}!S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}}\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-K\-I\-L\-L@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-K\-I\-L\-L}}\item[{\em +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6a87880c4f665344d4c3e12f9aa3af7410}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-K\-I\-L\-L}\label{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6a87880c4f665344d4c3e12f9aa3af7410} +}]Kill the S\-U\-T process \index{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-Q\-U\-I\-T@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-Q\-U\-I\-T}!S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}}\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-Q\-U\-I\-T@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-Q\-U\-I\-T}}\item[{\em +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6ad3d17a830b7e1e46e37d916130d8802a}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-Q\-U\-I\-T}\label{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6ad3d17a830b7e1e46e37d916130d8802a} +}]Quit (Gracefully exit) the S\-U\-T process \index{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-S\-C\-R\-E\-E\-N\-S\-H\-O\-T@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-S\-C\-R\-E\-E\-N\-S\-H\-O\-T}!S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}}\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-S\-C\-R\-E\-E\-N\-S\-H\-O\-T@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-S\-C\-R\-E\-E\-N\-S\-H\-O\-T}}\item[{\em +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6af9b5d42cb90bf843f298be4593992fdb}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-S\-C\-R\-E\-E\-N\-S\-H\-O\-T}\label{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6af9b5d42cb90bf843f298be4593992fdb} +}]Take a screenshot of the S\-U\-T window \index{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-V\-E\-R\-I\-F\-Y@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-V\-E\-R\-I\-F\-Y}!S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}}\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-V\-E\-R\-I\-F\-Y@{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-V\-E\-R\-I\-F\-Y}}\item[{\em +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6a0853f8be8363015b822658b9f3b013f4}{S\-D\-L\-\_\-\-A\-C\-T\-I\-O\-N\-\_\-\-V\-E\-R\-I\-F\-Y}\label{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6a0853f8be8363015b822658b9f3b013f4} +}]Verify a previously taken screenshot \end{description} +\end{Desc} + + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a0e7998533e6e10590612a8d5dee7ec0b}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_a0e7998533e6e10590612a8d5dee7ec0b} +Remove an action from the front of the action queue pointed to by {\ttfamily queue}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a677da0d0e4793df342f91974b4559efa}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_a677da0d0e4793df342f91974b4559efa} +Dequeues all the elements in the queque pointed to by {\ttfamily queue}. \hypertarget{_s_d_l__visualtest__action__configparser_8h_a647d1be8f0f27af2fb1e5d4da2100596}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}}]{action} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_a647d1be8f0f27af2fb1e5d4da2100596} +Add an action pointed to by {\ttfamily action} to the rear of the action queue pointed to by {\ttfamily queue}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_afb508801942e7c74084480bcdb6f8613}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_afb508801942e7c74084480bcdb6f8613} +Get the action at the front of the action queue pointed to by {\ttfamily queue}. The returned action pointer may become invalid after subsequent dequeues. + +\begin{DoxyReturn}{Returns} +pointer to the action on success, N\-U\-L\-L on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_ae68c1c80f728e125869882139bec2c9e}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_ae68c1c80f728e125869882139bec2c9e} +Initialize the action queue pointed to by {\ttfamily queue}. \hypertarget{_s_d_l__visualtest__action__configparser_8h_ace5374ef7509e95383929ff185aaf7e6}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}}]{action} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_ace5374ef7509e95383929ff185aaf7e6} +Inserts an action {\ttfamily action} into the queue pointed to by {\ttfamily queue} such that the times of actions in the queue increase as we move from the front to the rear. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a8484ee36f78952192d4193c85fca2f17}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty@{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty@{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_a8484ee36f78952192d4193c85fca2f17} +Check if the queue pointed to by {\ttfamily queue} is empty or not. + +\begin{DoxyReturn}{Returns} +1 if the queue is empty, 0 otherwise. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__action__configparser_8h_a8ef9dce4d464d6994596deeace6ffa2d}{\index{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config}!SDL_visualtest_action_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{file, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__action__configparser_8h_a8ef9dce4d464d6994596deeace6ffa2d} +Parses an action config file with path {\ttfamily file} and populates an action queue pointed to by {\ttfamily queue} with actions. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__exhaustive__variator_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__exhaustive__variator_8h.tex new file mode 100755 index 0000000000..1d4c619f4e --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__exhaustive__variator_8h.tex @@ -0,0 +1,69 @@ +\hypertarget{_s_d_l__visualtest__exhaustive__variator_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.h File Reference} +\label{_s_d_l__visualtest__exhaustive__variator_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}} +} +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h\char`\"{}}\\* +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} \hyperlink{_s_d_l__visualtest__exhaustive__variator_8h_ab64de6cf7d6a1e6d09d470c020940c25}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__exhaustive__variator_8h_a9e213e530ddf5a18014786d10e9fdaee}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator} (\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$variator, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\item +char $\ast$ \hyperlink{_s_d_l__visualtest__exhaustive__variator_8h_aa9e13a92945ef48308215b3fa068ed29}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation} (\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$variator) +\item +void \hyperlink{_s_d_l__visualtest__exhaustive__variator_8h_a7168b055fb86bbbb700d87ae842f7152}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator} (\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$variator) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header for the exhaustive variator. + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__exhaustive__variator_8h_ab64de6cf7d6a1e6d09d470c020940c25}{\index{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}!SDL_visualtest_exhaustive_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}}}\label{_s_d_l__visualtest__exhaustive__variator_8h_ab64de6cf7d6a1e6d09d470c020940c25} +Struct for the variator that exhaustively iterates through all variations of command line arguments to the S\-U\-T. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__exhaustive__variator_8h_a7168b055fb86bbbb700d87ae842f7152}{\index{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator}!SDL_visualtest_exhaustive_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__exhaustive__variator_8h_a7168b055fb86bbbb700d87ae842f7152} +Frees any resources associated with the variator. \hypertarget{_s_d_l__visualtest__exhaustive__variator_8h_aa9e13a92945ef48308215b3fa068ed29}{\index{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation}!SDL_visualtest_exhaustive_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__exhaustive__variator_8h_aa9e13a92945ef48308215b3fa068ed29} +Gets the arguments string for the next variation using the variator and updates the variator's current variation object to the next variation. + +\begin{DoxyReturn}{Returns} +The arguments string representing the next variation on success, and N\-U\-L\-L on failure or if we have iterated through all possible variations. In the latter case subsequent calls will start the variations again from the very beginning. The pointer returned should not be freed. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__exhaustive__variator_8h_a9e213e530ddf5a18014786d10e9fdaee}{\index{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator}!SDL_visualtest_exhaustive_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$}]{variator, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__exhaustive__variator_8h_a9e213e530ddf5a18014786d10e9fdaee} +Initializes the variator. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__harness__argparser_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__harness__argparser_8h.tex new file mode 100755 index 0000000000..f6fea3ccbb --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__harness__argparser_8h.tex @@ -0,0 +1,80 @@ +\hypertarget{_s_d_l__visualtest__harness__argparser_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.h File Reference} +\label{_s_d_l__visualtest__harness__argparser_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}} +} +{\ttfamily \#include $<$S\-D\-L.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h\char`\"{}}\\* +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{_s_d_l__visualtest__harness__argparser_8h_abdd33f362ae3bbdacb5de76473aa8a2f}{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}~300 +\item +\#define \hyperlink{_s_d_l__visualtest__harness__argparser_8h_a8485cbda108eca56406d67aaa685fcc5}{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}~600 +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} \hyperlink{_s_d_l__visualtest__harness__argparser_8h_ab89725ad0ec988d4923faa6a85972455}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__harness__argparser_8h_a629609acc04ef21a21fdfbbf6c1589c8}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args} (char $\ast$$\ast$argv, \hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$state) +\item +void \hyperlink{_s_d_l__visualtest__harness__argparser_8h_a833147d8da541982c615645a797627cc}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State} (\hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$state) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Provides functionality to parse command line arguments to the test harness. + +\subsection{Macro Definition Documentation} +\hypertarget{_s_d_l__visualtest__harness__argparser_8h_abdd33f362ae3bbdacb5de76473aa8a2f}{\index{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}!M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}} +\index{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}!SDL_visualtest_harness_argparser.h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N~300}}\label{_s_d_l__visualtest__harness__argparser_8h_abdd33f362ae3bbdacb5de76473aa8a2f} +Maximum length of a path string \hypertarget{_s_d_l__visualtest__harness__argparser_8h_a8485cbda108eca56406d67aaa685fcc5}{\index{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}!M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}} +\index{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}!SDL_visualtest_harness_argparser.h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N~600}}\label{_s_d_l__visualtest__harness__argparser_8h_a8485cbda108eca56406d67aaa685fcc5} +Maximum length of a string of S\-U\-T arguments + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__harness__argparser_8h_ab89725ad0ec988d4923faa6a85972455}{\index{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!SDL_visualtest_harness_argparser.h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}}}\label{_s_d_l__visualtest__harness__argparser_8h_ab89725ad0ec988d4923faa6a85972455} +Stores the state of the test harness. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__harness__argparser_8h_a833147d8da541982c615645a797627cc}{\index{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State}!SDL_visualtest_harness_argparser.h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$}]{state} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__harness__argparser_8h_a833147d8da541982c615645a797627cc} +Frees any resources associated with the state object pointed to by {\ttfamily state}. \hypertarget{_s_d_l__visualtest__harness__argparser_8h_a629609acc04ef21a21fdfbbf6c1589c8}{\index{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args}!SDL_visualtest_harness_argparser.h@{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args ( +\begin{DoxyParamCaption} +\item[{char $\ast$$\ast$}]{argv, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$}]{state} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__harness__argparser_8h_a629609acc04ef21a21fdfbbf6c1589c8} +Parse command line paramters to the test harness and populate a state object. + + +\begin{DoxyParams}{Parameters} +{\em argv} & The array of command line parameters. \\ +\hline +{\em state} & Pointer to the state object to be populated.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Non-\/zero on success, zero on failure. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__parsehelper_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__parsehelper_8h.tex new file mode 100755 index 0000000000..f1773891d6 --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__parsehelper_8h.tex @@ -0,0 +1,53 @@ +\hypertarget{_s_d_l__visualtest__parsehelper_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-parsehelper.h File Reference} +\label{_s_d_l__visualtest__parsehelper_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h}} +} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +char $\ast$$\ast$ \hyperlink{_s_d_l__visualtest__parsehelper_8h_a5f168fdd02f9d40ddbad97bd8c0b6361}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv} (char $\ast$args) +\item +char $\ast$$\ast$ \hyperlink{_s_d_l__visualtest__parsehelper_8h_a508e690ed938e09fc3b724d2faf06899}{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize} (char $\ast$str, int max\-\_\-token\-\_\-len) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header with some helper functions for parsing strings. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__parsehelper_8h_a5f168fdd02f9d40ddbad97bd8c0b6361}{\index{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h@{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv}!SDL_visualtest_parsehelper.h@{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{args} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__parsehelper_8h_a5f168fdd02f9d40ddbad97bd8c0b6361} +Takes an string of command line arguments and breaks them up into an array based on whitespace. + + +\begin{DoxyParams}{Parameters} +{\em args} & The string of arguments.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +N\-U\-L\-L on failure, an array of strings on success. The last element of the array is N\-U\-L\-L. The first element of the array is N\-U\-L\-L and should be set to the path of the executable by the caller. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__parsehelper_8h_a508e690ed938e09fc3b724d2faf06899}{\index{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h@{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Tokenize@{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize@{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize}!SDL_visualtest_parsehelper.h@{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Tokenize ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{str, } +\item[{int}]{max\-\_\-token\-\_\-len} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__parsehelper_8h_a508e690ed938e09fc3b724d2faf06899} +Takes a string and breaks it into tokens by splitting on whitespace. + + +\begin{DoxyParams}{Parameters} +{\em str} & The string to be split. \\ +\hline +{\em max\-\_\-token\-\_\-len} & Length of each element in the array to be returned.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +N\-U\-L\-L on failure; an array of strings with the tokens on success. The last element of the array is N\-U\-L\-L. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__process_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__process_8h.tex new file mode 100755 index 0000000000..d09cabf3c7 --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__process_8h.tex @@ -0,0 +1,140 @@ +\hypertarget{_s_d_l__visualtest__process_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-process.h File Reference} +\label{_s_d_l__visualtest__process_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-platform.\-h$>$}\\* +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} +\item +struct \hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} \hyperlink{_s_d_l__visualtest__process_8h_a94bc9e0b0b563a527ea50ef2eecd5402}{S\-D\-L\-\_\-\-Process\-Info} +\item +typedef struct \\* +\hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} \hyperlink{_s_d_l__visualtest__process_8h_a5b7d5262f85e78bf4d53d88f3c509342}{S\-D\-L\-\_\-\-Process\-Exit\-Status} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__process_8h_a12c16e5b870e2794d6bd5a1a3bb4582f}{S\-D\-L\-\_\-\-Launch\-Process} (char $\ast$file, char $\ast$args, \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} $\ast$pinfo) +\item +int \hyperlink{_s_d_l__visualtest__process_8h_a3a131140a71bf68fa68a900f06872239}{S\-D\-L\-\_\-\-Is\-Process\-Running} (\hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} $\ast$pinfo) +\item +int \hyperlink{_s_d_l__visualtest__process_8h_ae66242e44a004831ab231693fd11c8d0}{S\-D\-L\-\_\-\-Kill\-Process} (\hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} $\ast$pinfo, \hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} $\ast$ps) +\item +int \hyperlink{_s_d_l__visualtest__process_8h_ad8a5b6725ad1f0e1bac623cf4b6fc28d}{S\-D\-L\-\_\-\-Quit\-Process} (\hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} $\ast$pinfo, \hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} $\ast$ps) +\item +int \hyperlink{_s_d_l__visualtest__process_8h_a54545d6b9f737a14030b4ce55ddd4a62}{S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status} (\hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} $\ast$pinfo, \hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} $\ast$ps) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Provides cross-\/platfrom process launching and termination functionality. + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__process_8h_a5b7d5262f85e78bf4d53d88f3c509342}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Process\-Exit\-Status}} +\index{S\-D\-L\-\_\-\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Process\-Exit\-Status}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Process\-Exit\-Status}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-\_\-\-Process\-Exit\-Status} {\bf S\-D\-L\-\_\-\-Process\-Exit\-Status}}}\label{_s_d_l__visualtest__process_8h_a5b7d5262f85e78bf4d53d88f3c509342} +This structure stores the exit status (value returned by \hyperlink{testharness_8c_a0ddf1224851353fc92bfbff6f499fa97}{main()}) and whether the process exited sucessfully or not. \hypertarget{_s_d_l__visualtest__process_8h_a94bc9e0b0b563a527ea50ef2eecd5402}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Process\-Info@{S\-D\-L\-\_\-\-Process\-Info}} +\index{S\-D\-L\-\_\-\-Process\-Info@{S\-D\-L\-\_\-\-Process\-Info}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Process\-Info}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-\_\-\-Process\-Info} {\bf S\-D\-L\-\_\-\-Process\-Info}}}\label{_s_d_l__visualtest__process_8h_a94bc9e0b0b563a527ea50ef2eecd5402} +Struct to store a platform specific handle to a process. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__process_8h_a54545d6b9f737a14030b4ce55ddd4a62}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status}} +\index{S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-\_\-\-Get\-Process\-Exit\-Status ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-\_\-\-Process\-Info} $\ast$}]{pinfo, } +\item[{{\bf S\-D\-L\-\_\-\-Process\-Exit\-Status} $\ast$}]{ps} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__process_8h_a54545d6b9f737a14030b4ce55ddd4a62} +Gets the exit status of a process. If the exit status is -\/1, the process is still running. + + +\begin{DoxyParams}{Parameters} +{\em pinfo} & Pointer to a \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} object of the process to be checked. \\ +\hline +{\em ps} & Pointer to a \hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} object which will be populated with the exit status.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__process_8h_a3a131140a71bf68fa68a900f06872239}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Is\-Process\-Running@{S\-D\-L\-\_\-\-Is\-Process\-Running}} +\index{S\-D\-L\-\_\-\-Is\-Process\-Running@{S\-D\-L\-\_\-\-Is\-Process\-Running}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Is\-Process\-Running}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-\_\-\-Is\-Process\-Running ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-\_\-\-Process\-Info} $\ast$}]{pinfo} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__process_8h_a3a131140a71bf68fa68a900f06872239} +Checks if a process is running or not. + + +\begin{DoxyParams}{Parameters} +{\em pinfo} & Pointer to \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} object of the process that needs to be checked.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 if the process is still running; zero if it is not and -\/1 if the status could not be retrieved. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__process_8h_ae66242e44a004831ab231693fd11c8d0}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Kill\-Process@{S\-D\-L\-\_\-\-Kill\-Process}} +\index{S\-D\-L\-\_\-\-Kill\-Process@{S\-D\-L\-\_\-\-Kill\-Process}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Kill\-Process}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-\_\-\-Kill\-Process ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-\_\-\-Process\-Info} $\ast$}]{pinfo, } +\item[{{\bf S\-D\-L\-\_\-\-Process\-Exit\-Status} $\ast$}]{ps} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__process_8h_ae66242e44a004831ab231693fd11c8d0} +Kills a currently running process. + + +\begin{DoxyParams}{Parameters} +{\em pinfo} & Pointer to a \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} object of the process to be terminated. \\ +\hline +{\em ps} & Pointer to a \hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} object which will be populated with the exit status.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__process_8h_a12c16e5b870e2794d6bd5a1a3bb4582f}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Launch\-Process@{S\-D\-L\-\_\-\-Launch\-Process}} +\index{S\-D\-L\-\_\-\-Launch\-Process@{S\-D\-L\-\_\-\-Launch\-Process}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Launch\-Process}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-\_\-\-Launch\-Process ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{file, } +\item[{char $\ast$}]{args, } +\item[{{\bf S\-D\-L\-\_\-\-Process\-Info} $\ast$}]{pinfo} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__process_8h_a12c16e5b870e2794d6bd5a1a3bb4582f} +Launches a process with the given commandline arguments. + + +\begin{DoxyParams}{Parameters} +{\em file} & The path to the executable to be launched. \\ +\hline +{\em args} & The command line arguments to be passed to the process. \\ +\hline +{\em pinfo} & Pointer to an \hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} object to be populated with platform specific information about the launched process.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Non-\/zero on success, zero on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__process_8h_ad8a5b6725ad1f0e1bac623cf4b6fc28d}{\index{S\-D\-L\-\_\-visualtest\-\_\-process.\-h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}!S\-D\-L\-\_\-\-Quit\-Process@{S\-D\-L\-\_\-\-Quit\-Process}} +\index{S\-D\-L\-\_\-\-Quit\-Process@{S\-D\-L\-\_\-\-Quit\-Process}!SDL_visualtest_process.h@{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-Quit\-Process}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-\_\-\-Quit\-Process ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-\_\-\-Process\-Info} $\ast$}]{pinfo, } +\item[{{\bf S\-D\-L\-\_\-\-Process\-Exit\-Status} $\ast$}]{ps} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__process_8h_ad8a5b6725ad1f0e1bac623cf4b6fc28d} +Cleanly exits the process represented by {\ttfamily pinfo} and stores the exit status in the exit status object pointed to by {\ttfamily ps}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__random__variator_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__random__variator_8h.tex new file mode 100755 index 0000000000..cbd8452ae7 --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__random__variator_8h.tex @@ -0,0 +1,70 @@ +\hypertarget{_s_d_l__visualtest__random__variator_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.h File Reference} +\label{_s_d_l__visualtest__random__variator_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}} +} +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h\char`\"{}}\\* +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} \hyperlink{_s_d_l__visualtest__random__variator_8h_ab0df6ee6ec21b5070bfd8e90a7d79974}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__random__variator_8h_a807486069b7180c3b3bf8af4616d055f}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator} (\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$variator, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config, Uint64 seed) +\item +char $\ast$ \hyperlink{_s_d_l__visualtest__random__variator_8h_a479aceb74b5355c1d22856fc7efce890}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation} (\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$variator) +\item +void \hyperlink{_s_d_l__visualtest__random__variator_8h_ac95d9e0716e4c918c6902b10f9591d4b}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator} (\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$variator) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header for the random variator. + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__random__variator_8h_ab0df6ee6ec21b5070bfd8e90a7d79974}{\index{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}!SDL_visualtest_random_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}}}\label{_s_d_l__visualtest__random__variator_8h_ab0df6ee6ec21b5070bfd8e90a7d79974} +Struct for the variator that randomly generates variations of command line arguments to the S\-U\-T. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__random__variator_8h_ac95d9e0716e4c918c6902b10f9591d4b}{\index{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator}!SDL_visualtest_random_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__random__variator_8h_ac95d9e0716e4c918c6902b10f9591d4b} +Frees any resources associated with the variator. \hypertarget{_s_d_l__visualtest__random__variator_8h_a479aceb74b5355c1d22856fc7efce890}{\index{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation}!SDL_visualtest_random_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__random__variator_8h_a479aceb74b5355c1d22856fc7efce890} +Generates a new random variation. + +\begin{DoxyReturn}{Returns} +The arguments string representing the random variation on success, and N\-U\-L\-L on failure. The pointer returned should not be freed. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__random__variator_8h_a807486069b7180c3b3bf8af4616d055f}{\index{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator}!SDL_visualtest_random_variator.h@{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$}]{variator, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config, } +\item[{Uint64}]{seed} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__random__variator_8h_a807486069b7180c3b3bf8af4616d055f} +Initializes the variator. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__screenshot_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__screenshot_8h.tex new file mode 100755 index 0000000000..63706fe2cd --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__screenshot_8h.tex @@ -0,0 +1,58 @@ +\hypertarget{_s_d_l__visualtest__screenshot_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-screenshot.h File Reference} +\label{_s_d_l__visualtest__screenshot_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}} +} +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-process.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__screenshot_8h_aefe6b7dbca1fbfb7aef081545c3ca66d}{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process} (\hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} $\ast$pinfo, char $\ast$prefix) +\item +int \hyperlink{_s_d_l__visualtest__screenshot_8h_a812c545e97db11a756145d43b3a8e5ee}{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop} (char $\ast$filename) +\item +int \hyperlink{_s_d_l__visualtest__screenshot_8h_ac7b5335651144961676abc2116c38299}{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots} (char $\ast$args, char $\ast$test\-\_\-dir, char $\ast$verify\-\_\-dir) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header for the screenshot A\-P\-I. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__screenshot_8h_a812c545e97db11a756145d43b3a8e5ee}{\index{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h@{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop@{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop@{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop}!SDL_visualtest_screenshot.h@{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Desktop ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{filename} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__screenshot_8h_a812c545e97db11a756145d43b3a8e5ee} +Takes a screenshot of the desktop and saves it into the file with path {\ttfamily filename}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__screenshot_8h_aefe6b7dbca1fbfb7aef081545c3ca66d}{\index{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h@{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process@{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process@{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process}!SDL_visualtest_screenshot.h@{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Screenshot\-Process ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-\_\-\-Process\-Info} $\ast$}]{pinfo, } +\item[{char $\ast$}]{prefix} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__screenshot_8h_aefe6b7dbca1fbfb7aef081545c3ca66d} +Takes a screenshot of each window owned by the process {\ttfamily pinfo} and saves it in a file {\ttfamily prefix-\/i.\-png} where {\ttfamily prefix} is the full path to the file along with a prefix given to each screenshot. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__screenshot_8h_ac7b5335651144961676abc2116c38299}{\index{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h@{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots@{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots@{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots}!SDL_visualtest_screenshot.h@{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{args, } +\item[{char $\ast$}]{test\-\_\-dir, } +\item[{char $\ast$}]{verify\-\_\-dir} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__screenshot_8h_ac7b5335651144961676abc2116c38299} +Compare a screenshot taken previously with S\-U\-T arguments {\ttfamily args} that is located in {\ttfamily test\-\_\-dir} with a verification image that is located in {\ttfamily verify\-\_\-dir}. + +\begin{DoxyReturn}{Returns} +-\/1 on failure, 0 if the images were not equal, 1 if the images are equal and 2 if the verification image is not present. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__sut__configparser_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__sut__configparser_8h.tex new file mode 100755 index 0000000000..5cff047b53 --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__sut__configparser_8h.tex @@ -0,0 +1,117 @@ +\hypertarget{_s_d_l__visualtest__sut__configparser_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.h File Reference} +\label{_s_d_l__visualtest__sut__configparser_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +} +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l_visual_test___s_u_t_int_range}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range} +\item +struct \hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} +\item +struct \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a0a8b0c1f8eee787abf09bf3a840eccc7}{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N}~100 +\item +\#define \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a21a678ced8cdf55b4cc70ad398bf33b6}{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N}~40 +\item +\#define \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a6c700fc8ff02cfa0c795b9593f86b9a0}{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N}~40 +\item +\#define \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a8f1a5749af5a592b30a194c72d848f75}{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}~256 +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___s_u_t_int_range}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range} \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a8cbe93330b2ce59cdf6da59e2eca6045}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a9f35b5fe1ce4ba831a9b9e1f2bc8b7f6}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a1b493a40d601932b62ee643390aec169}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{_s_d_l__visualtest__sut__configparser_8h_af9893831d9f79360f57e84a67a90293c}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type} \{ {\bfseries S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-O\-P\-T\-I\-O\-N\-T\-Y\-P\-E\-\_\-\-S\-T\-R\-I\-N\-G} = 0, +{\bfseries S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-O\-P\-T\-I\-O\-N\-T\-Y\-P\-E\-\_\-\-I\-N\-T}, +{\bfseries S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-O\-P\-T\-I\-O\-N\-T\-Y\-P\-E\-\_\-\-E\-N\-U\-M}, +{\bfseries S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-O\-P\-T\-I\-O\-N\-T\-Y\-P\-E\-\_\-\-B\-O\-O\-L} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a8e178cd8a1f279f5d2cf908545e97544}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config} (char $\ast$file, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\item +void \hyperlink{_s_d_l__visualtest__sut__configparser_8h_a1bddf9732c0d3ed1c24455d22193de9a}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config} (\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header for the parser for S\-U\-T config files. + +\subsection{Macro Definition Documentation} +\hypertarget{_s_d_l__visualtest__sut__configparser_8h_a21a678ced8cdf55b4cc70ad398bf33b6}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N}} +\index{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-C\-A\-T\-E\-G\-O\-R\-Y\-\_\-\-L\-E\-N~40}}\label{_s_d_l__visualtest__sut__configparser_8h_a21a678ced8cdf55b4cc70ad398bf33b6} +Maximum length of the name of a category of an S\-U\-T option \hypertarget{_s_d_l__visualtest__sut__configparser_8h_a6c700fc8ff02cfa0c795b9593f86b9a0}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N}} +\index{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-E\-N\-U\-M\-V\-A\-L\-\_\-\-L\-E\-N~40}}\label{_s_d_l__visualtest__sut__configparser_8h_a6c700fc8ff02cfa0c795b9593f86b9a0} +Maximum length of one enum value of an S\-U\-T option \hypertarget{_s_d_l__visualtest__sut__configparser_8h_a8f1a5749af5a592b30a194c72d848f75}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}} +\index{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N\-G\-T\-H~256}}\label{_s_d_l__visualtest__sut__configparser_8h_a8f1a5749af5a592b30a194c72d848f75} +Maximum length of a line in the paramters file \hypertarget{_s_d_l__visualtest__sut__configparser_8h_a0a8b0c1f8eee787abf09bf3a840eccc7}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N}} +\index{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N~100}}\label{_s_d_l__visualtest__sut__configparser_8h_a0a8b0c1f8eee787abf09bf3a840eccc7} +Maximum length of the name of an S\-U\-T option + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__sut__configparser_8h_a1b493a40d601932b62ee643390aec169}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}}}\label{_s_d_l__visualtest__sut__configparser_8h_a1b493a40d601932b62ee643390aec169} +Struct to hold all the options to an S\-U\-T application. \hypertarget{_s_d_l__visualtest__sut__configparser_8h_a8cbe93330b2ce59cdf6da59e2eca6045}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range} {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}}}\label{_s_d_l__visualtest__sut__configparser_8h_a8cbe93330b2ce59cdf6da59e2eca6045} +Represents the range of values an integer option can take. \hypertarget{_s_d_l__visualtest__sut__configparser_8h_a9f35b5fe1ce4ba831a9b9e1f2bc8b7f6}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}}}\label{_s_d_l__visualtest__sut__configparser_8h_a9f35b5fe1ce4ba831a9b9e1f2bc8b7f6} +Struct that defines an option to be passed to the S\-U\-T. + +\subsection{Enumeration Type Documentation} +\hypertarget{_s_d_l__visualtest__sut__configparser_8h_af9893831d9f79360f57e84a67a90293c}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type}}}\label{_s_d_l__visualtest__sut__configparser_8h_af9893831d9f79360f57e84a67a90293c} +Describes the different kinds of options to the S\-U\-T. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__sut__configparser_8h_a1bddf9732c0d3ed1c24455d22193de9a}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__sut__configparser_8h_a1bddf9732c0d3ed1c24455d22193de9a} +Free any resources associated with the config object pointed to by {\ttfamily config}. \hypertarget{_s_d_l__visualtest__sut__configparser_8h_a8e178cd8a1f279f5d2cf908545e97544}{\index{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config}!SDL_visualtest_sut_configparser.h@{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{file, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__sut__configparser_8h_a8e178cd8a1f279f5d2cf908545e97544} +Parses a configuration file that describes the command line options an S\-U\-T application will take and populates a S\-U\-T config object. All lines in the config file must be smaller than + + +\begin{DoxyParams}{Parameters} +{\em file} & Path to the configuration file. \\ +\hline +{\em config} & Pointer to an object that represents an S\-U\-T configuration.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +zero on failure, non-\/zero on success +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__variator__common_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__variator__common_8h.tex new file mode 100755 index 0000000000..85527f745a --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__variator__common_8h.tex @@ -0,0 +1,141 @@ +\hypertarget{_s_d_l__visualtest__variator__common_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.h File Reference} +\label{_s_d_l__visualtest__variator__common_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-types.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h\char`\"{}}\\* +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +union \hyperlink{union_s_d_l_visual_test___s_u_t_option_value}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} +\item +struct \hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{_s_d_l__visualtest__variator__common_8h_afcdce86a10fbcdc9f3e47c47b70e3ea3}{S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S}~3 +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef enum \\* +\hyperlink{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} \hyperlink{_s_d_l__visualtest__variator__common_8h_a4a7752dc89880ce3f62a478b3d0d8d64}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} +\item +typedef union \\* +\hyperlink{union_s_d_l_visual_test___s_u_t_option_value}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} \hyperlink{_s_d_l__visualtest__variator__common_8h_aa4e5fb752f4cd087101ea3e1f6124dfb}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} \hyperlink{_s_d_l__visualtest__variator__common_8h_a6b447c1467862ecd623cc8f37489faeb}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} \{ {\bfseries S\-D\-L\-\_\-\-V\-A\-R\-I\-A\-T\-O\-R\-\_\-\-N\-O\-N\-E} = 0, +{\bfseries S\-D\-L\-\_\-\-V\-A\-R\-I\-A\-T\-O\-R\-\_\-\-E\-X\-H\-A\-U\-S\-T\-I\-V\-E}, +{\bfseries S\-D\-L\-\_\-\-V\-A\-R\-I\-A\-T\-O\-R\-\_\-\-R\-A\-N\-D\-O\-M} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__variator__common_8h_aafcecc06c8feb24b6f6a509bfa9db681}{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value} (\hyperlink{union_s_d_l_visual_test___s_u_t_option_value}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} $\ast$var, \hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} $\ast$opt) +\item +int \hyperlink{_s_d_l__visualtest__variator__common_8h_ad981c2efab849e76dc878ef8da9d6017}{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation} (\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$variation, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config, char $\ast$buffer, int size) +\item +int \hyperlink{_s_d_l__visualtest__variator__common_8h_ac87934906c51364778dc910ebca47b6c}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation} (\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$variation, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header for common functionality used by variators. + +\subsection{Macro Definition Documentation} +\hypertarget{_s_d_l__visualtest__variator__common_8h_afcdce86a10fbcdc9f3e47c47b70e3ea3}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S@{S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S}} +\index{S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S@{S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define S\-D\-L\-\_\-\-S\-U\-T\-\_\-\-I\-N\-T\-E\-G\-E\-R\-\_\-\-O\-P\-T\-I\-O\-N\-\_\-\-T\-E\-S\-T\-\_\-\-S\-T\-E\-P\-S~3}}\label{_s_d_l__visualtest__variator__common_8h_afcdce86a10fbcdc9f3e47c47b70e3ea3} +The number of variations one integer option would generate + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__variator__common_8h_aa4e5fb752f4cd087101ea3e1f6124dfb}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}]{\setlength{\rightskip}{0pt plus 5cm}typedef union {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} {\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}}}\label{_s_d_l__visualtest__variator__common_8h_aa4e5fb752f4cd087101ea3e1f6124dfb} +One possible value for a command line option to the S\-U\-T. \hypertarget{_s_d_l__visualtest__variator__common_8h_a6b447c1467862ecd623cc8f37489faeb}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation}}}\label{_s_d_l__visualtest__variator__common_8h_a6b447c1467862ecd623cc8f37489faeb} +Represents a valid combination of parameters that can be passed to the S\-U\-T. The ordering of the values here is the same as the ordering of the options in the \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} object for this variation. \hypertarget{_s_d_l__visualtest__variator__common_8h_a4a7752dc89880ce3f62a478b3d0d8d64}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}]{\setlength{\rightskip}{0pt plus 5cm}typedef enum {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}}}\label{_s_d_l__visualtest__variator__common_8h_a4a7752dc89880ce3f62a478b3d0d8d64} +enum for indicating the type of variator being used + +\subsection{Enumeration Type Documentation} +\hypertarget{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type@{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}]{\setlength{\rightskip}{0pt plus 5cm}enum {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}}}\label{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd} +enum for indicating the type of variator being used + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__variator__common_8h_ac87934906c51364778dc910ebca47b6c}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$}]{variation, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__variator__common_8h_ac87934906c51364778dc910ebca47b6c} +Initializes the variation using the following rules\-: +\begin{DoxyItemize} +\item Boolean options are initialized to S\-D\-L\-\_\-\-F\-A\-L\-S\-E. +\item Integer options are initialized to the minimum valid value they can hold. +\item Enum options are initialized to the first element in the list of values they can take. +\item String options are initialized to the name of the option. +\end{DoxyItemize} + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__variator__common_8h_ad981c2efab849e76dc878ef8da9d6017}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$}]{variation, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config, } +\item[{char $\ast$}]{buffer, } +\item[{int}]{size} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__variator__common_8h_ad981c2efab849e76dc878ef8da9d6017} +Converts a variation object into a string of command line arguments. + + +\begin{DoxyParams}{Parameters} +{\em variation} & Variation object to be converted. \\ +\hline +{\em config} & Config object for the S\-U\-T. \\ +\hline +{\em buffer} & Pointer to the buffer the arguments string will be copied into. \\ +\hline +{\em size} & Size of the buffer.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__variator__common_8h_aafcecc06c8feb24b6f6a509bfa9db681}{\index{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value}!SDL_visualtest_variator_common.h@{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} $\ast$}]{var, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} $\ast$}]{opt} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__variator__common_8h_aafcecc06c8feb24b6f6a509bfa9db681} +\char`\"{}\-Increments\char`\"{} the value of the option by one and returns the carry. We wrap around to the initial value on overflow which makes the carry one. For example\-: \char`\"{}incrementing\char`\"{} an S\-D\-L\-\_\-\-F\-A\-L\-S\-E option makes it S\-D\-L\-\_\-\-T\-R\-U\-E with no carry, and \char`\"{}incrementing\char`\"{} an S\-D\-L\-\_\-\-T\-R\-U\-E option makes it S\-D\-L\-\_\-\-F\-A\-L\-S\-E with carry one. For integers, a random value in the valid range for the option is used. + + +\begin{DoxyParams}{Parameters} +{\em var} & Value of the option \\ +\hline +{\em opt} & Object with metadata about the option\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 if there is a carry for enum and bool type options, 0 otherwise. 1 is always returned for integer and string type options. -\/1 is returned on error. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/_s_d_l__visualtest__variators_8h.tex b/visualtest/docs/latex/_s_d_l__visualtest__variators_8h.tex new file mode 100755 index 0000000000..1996113bb6 --- /dev/null +++ b/visualtest/docs/latex/_s_d_l__visualtest__variators_8h.tex @@ -0,0 +1,71 @@ +\hypertarget{_s_d_l__visualtest__variators_8h}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-variators.h File Reference} +\label{_s_d_l__visualtest__variators_8h}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-variators.\-h@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\-S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}} +} +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h\char`\"{}}\\* +\subsection*{Data Structures} +\begin{DoxyCompactItemize} +\item +struct \hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct \\* +\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} \hyperlink{_s_d_l__visualtest__variators_8h_a520a2479efbe9c4a9d617735f7314e0a}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{_s_d_l__visualtest__variators_8h_ac1d82ee387a19743e47a82c87d3fb7f4}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator} (\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$variator, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config, \hyperlink{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} type, Uint64 seed) +\item +char $\ast$ \hyperlink{_s_d_l__visualtest__variators_8h_aebdd4c3c545b0063d16929fd56f1a79f}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation} (\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$variator) +\item +void \hyperlink{_s_d_l__visualtest__variators_8h_a98727ef649135c3312056d7603cb70b5}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator} (\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$variator) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header for all the variators that vary input parameters to a S\-U\-T application. + +\subsection{Typedef Documentation} +\hypertarget{_s_d_l__visualtest__variators_8h_a520a2479efbe9c4a9d617735f7314e0a}{\index{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}!SDL_visualtest_variators.h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} {\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator}}}\label{_s_d_l__visualtest__variators_8h_a520a2479efbe9c4a9d617735f7314e0a} +Struct that acts like a wrapper around the different types of variators available. + +\subsection{Function Documentation} +\hypertarget{_s_d_l__visualtest__variators_8h_a98727ef649135c3312056d7603cb70b5}{\index{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator}!SDL_visualtest_variators.h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__variators_8h_a98727ef649135c3312056d7603cb70b5} +Frees any resources associated with the variator. \hypertarget{_s_d_l__visualtest__variators_8h_aebdd4c3c545b0063d16929fd56f1a79f}{\index{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation}!SDL_visualtest_variators.h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__variators_8h_aebdd4c3c545b0063d16929fd56f1a79f} +Gets the next variation using the variator. + +\begin{DoxyReturn}{Returns} +The arguments string representing the variation on success, and N\-U\-L\-L on failure. The pointer returned should not be freed. +\end{DoxyReturn} +\hypertarget{_s_d_l__visualtest__variators_8h_ac1d82ee387a19743e47a82c87d3fb7f4}{\index{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator}!SDL_visualtest_variators.h@{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$}]{variator, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}}]{type, } +\item[{Uint64}]{seed} +\end{DoxyParamCaption} +)}}\label{_s_d_l__visualtest__variators_8h_ac1d82ee387a19743e47a82c87d3fb7f4} +Initializes the variator object pointed to by {\ttfamily variator} of type {\ttfamily type} with information from the config object pointed to by {\ttfamily config}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} diff --git a/visualtest/docs/latex/action__configparser_8c.tex b/visualtest/docs/latex/action__configparser_8c.tex new file mode 100755 index 0000000000..a25e86b309 --- /dev/null +++ b/visualtest/docs/latex/action__configparser_8c.tex @@ -0,0 +1,123 @@ +\hypertarget{action__configparser_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/action\-\_\-configparser.c File Reference} +\label{action__configparser_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/action\-\_\-configparser.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/action\-\_\-configparser.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-stdinc.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include $<$string.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{action__configparser_8c_a647d1be8f0f27af2fb1e5d4da2100596}{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue, \hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} action) +\item +int \hyperlink{action__configparser_8c_a0e7998533e6e10590612a8d5dee7ec0b}{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +void \hyperlink{action__configparser_8c_ae68c1c80f728e125869882139bec2c9e}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +\hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} $\ast$ \hyperlink{action__configparser_8c_afb508801942e7c74084480bcdb6f8613}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +int \hyperlink{action__configparser_8c_a8484ee36f78952192d4193c85fca2f17}{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +void \hyperlink{action__configparser_8c_a677da0d0e4793df342f91974b4559efa}{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\item +int \hyperlink{action__configparser_8c_ace5374ef7509e95383929ff185aaf7e6}{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue} (\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue, \hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} action) +\item +int \hyperlink{action__configparser_8c_a8ef9dce4d464d6994596deeace6ffa2d}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config} (char $\ast$file, \hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$queue) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the parser for action config files. + +\subsection{Function Documentation} +\hypertarget{action__configparser_8c_a0e7998533e6e10590612a8d5dee7ec0b}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Dequeue\-Action ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_a0e7998533e6e10590612a8d5dee7ec0b} +Remove an action from the front of the action queue pointed to by {\ttfamily queue}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{action__configparser_8c_a677da0d0e4793df342f91974b4559efa}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Empty\-Action\-Queue ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_a677da0d0e4793df342f91974b4559efa} +Dequeues all the elements in the queque pointed to by {\ttfamily queue}. \hypertarget{action__configparser_8c_a647d1be8f0f27af2fb1e5d4da2100596}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Enqueue\-Action ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}}]{action} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_a647d1be8f0f27af2fb1e5d4da2100596} +Add an action pointed to by {\ttfamily action} to the rear of the action queue pointed to by {\ttfamily queue}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{action__configparser_8c_afb508801942e7c74084480bcdb6f8613}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Queue\-Front ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_afb508801942e7c74084480bcdb6f8613} +Get the action at the front of the action queue pointed to by {\ttfamily queue}. The returned action pointer may become invalid after subsequent dequeues. + +\begin{DoxyReturn}{Returns} +pointer to the action on success, N\-U\-L\-L on failure. +\end{DoxyReturn} +\hypertarget{action__configparser_8c_ae68c1c80f728e125869882139bec2c9e}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Init\-Action\-Queue ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_ae68c1c80f728e125869882139bec2c9e} +Initialize the action queue pointed to by {\ttfamily queue}. \hypertarget{action__configparser_8c_ace5374ef7509e95383929ff185aaf7e6}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Insert\-Into\-Action\-Queue ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action}}]{action} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_ace5374ef7509e95383929ff185aaf7e6} +Inserts an action {\ttfamily action} into the queue pointed to by {\ttfamily queue} such that the times of actions in the queue increase as we move from the front to the rear. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{action__configparser_8c_a8484ee36f78952192d4193c85fca2f17}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty@{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty@{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Is\-Action\-Queue\-Empty ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_a8484ee36f78952192d4193c85fca2f17} +Check if the queue pointed to by {\ttfamily queue} is empty or not. + +\begin{DoxyReturn}{Returns} +1 if the queue is empty, 0 otherwise. +\end{DoxyReturn} +\hypertarget{action__configparser_8c_a8ef9dce4d464d6994596deeace6ffa2d}{\index{action\-\_\-configparser.\-c@{action\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config}!action_configparser.c@{action\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Action\-Config ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{file, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} $\ast$}]{queue} +\end{DoxyParamCaption} +)}}\label{action__configparser_8c_a8ef9dce4d464d6994596deeace6ffa2d} +Parses an action config file with path {\ttfamily file} and populates an action queue pointed to by {\ttfamily queue} with actions. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/annotated.tex b/visualtest/docs/latex/annotated.tex new file mode 100755 index 0000000000..9b865bd894 --- /dev/null +++ b/visualtest/docs/latex/annotated.tex @@ -0,0 +1,18 @@ +\section{Data Structures} +Here are the data structures with brief descriptions\-:\begin{DoxyCompactList} +\item\contentsline{section}{\hyperlink{struct_s_d_l___process_exit_status}{S\-D\-L\-\_\-\-Process\-Exit\-Status} }{\pageref{struct_s_d_l___process_exit_status}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l___process_info}{S\-D\-L\-\_\-\-Process\-Info} }{\pageref{struct_s_d_l___process_info}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} }{\pageref{struct_s_d_l_visual_test___action}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___action_node}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} }{\pageref{struct_s_d_l_visual_test___action_node}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} }{\pageref{struct_s_d_l_visual_test___action_queue}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} }{\pageref{struct_s_d_l_visual_test___exhaustive_variator}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} }{\pageref{struct_s_d_l_visual_test___harness_state}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} }{\pageref{struct_s_d_l_visual_test___random_variator}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} }{\pageref{struct_s_d_l_visual_test___r_w_helper_buffer}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} }{\pageref{struct_s_d_l_visual_test___s_u_t_config}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___s_u_t_int_range}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range} }{\pageref{struct_s_d_l_visual_test___s_u_t_int_range}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} }{\pageref{struct_s_d_l_visual_test___s_u_t_option}}{} +\item\contentsline{section}{\hyperlink{union_s_d_l_visual_test___s_u_t_option_value}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} }{\pageref{union_s_d_l_visual_test___s_u_t_option_value}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} }{\pageref{struct_s_d_l_visual_test___variation}}{} +\item\contentsline{section}{\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} }{\pageref{struct_s_d_l_visual_test___variator}}{} +\end{DoxyCompactList} diff --git a/visualtest/docs/latex/dir_244674c763b96fdad0a6ffe8d0250e08.tex b/visualtest/docs/latex/dir_244674c763b96fdad0a6ffe8d0250e08.tex new file mode 100755 index 0000000000..6ae929c048 --- /dev/null +++ b/visualtest/docs/latex/dir_244674c763b96fdad0a6ffe8d0250e08.tex @@ -0,0 +1,8 @@ +\hypertarget{dir_244674c763b96fdad0a6ffe8d0250e08}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/unittest Directory Reference} +\label{dir_244674c763b96fdad0a6ffe8d0250e08}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/unittest Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/unittest Directory Reference}} +} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file {\bfseries testquit.\-c} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/visualtest/docs/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex new file mode 100755 index 0000000000..636633334a --- /dev/null +++ b/visualtest/docs/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex @@ -0,0 +1,37 @@ +\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src Directory Reference} +\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src Directory Reference}} +} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \hyperlink{dir_a18918b93668b435612395bbc2e8b82b}{linux} +\item +directory \hyperlink{dir_f584182df4c69fab0b14563b4d535158}{windows} +\end{DoxyCompactItemize} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \hyperlink{action__configparser_8c}{action\-\_\-configparser.\-c} +\item +file \hyperlink{harness__argparser_8c}{harness\-\_\-argparser.\-c} +\item +file \hyperlink{mischelper_8c}{mischelper.\-c} +\item +file \hyperlink{parsehelper_8c}{parsehelper.\-c} +\item +file \hyperlink{rwhelper_8c}{rwhelper.\-c} +\item +file \hyperlink{screenshot_8c}{screenshot.\-c} +\item +file \hyperlink{sut__configparser_8c}{sut\-\_\-configparser.\-c} +\item +file \hyperlink{testharness_8c}{testharness.\-c} +\item +file \hyperlink{variator__common_8c}{variator\-\_\-common.\-c} +\item +file \hyperlink{variator__exhaustive_8c}{variator\-\_\-exhaustive.\-c} +\item +file \hyperlink{variator__random_8c}{variator\-\_\-random.\-c} +\item +file \hyperlink{variators_8c}{variators.\-c} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/dir_88e6415a3128b404f1102a130772bdb6.tex b/visualtest/docs/latex/dir_88e6415a3128b404f1102a130772bdb6.tex new file mode 100755 index 0000000000..da3c158e2d --- /dev/null +++ b/visualtest/docs/latex/dir_88e6415a3128b404f1102a130772bdb6.tex @@ -0,0 +1,8 @@ +\hypertarget{dir_88e6415a3128b404f1102a130772bdb6}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/linux Directory Reference} +\label{dir_88e6415a3128b404f1102a130772bdb6}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/linux Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/linux Directory Reference}} +} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file {\bfseries linux\-\_\-process.\-c} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/dir_a18918b93668b435612395bbc2e8b82b.tex b/visualtest/docs/latex/dir_a18918b93668b435612395bbc2e8b82b.tex new file mode 100755 index 0000000000..863c6e4f91 --- /dev/null +++ b/visualtest/docs/latex/dir_a18918b93668b435612395bbc2e8b82b.tex @@ -0,0 +1,8 @@ +\hypertarget{dir_a18918b93668b435612395bbc2e8b82b}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux Directory Reference} +\label{dir_a18918b93668b435612395bbc2e8b82b}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux Directory Reference}} +} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \hyperlink{linux__process_8c}{linux\-\_\-process.\-c} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/dir_d44c64559bbebec7f509842c48db8b23.tex b/visualtest/docs/latex/dir_d44c64559bbebec7f509842c48db8b23.tex new file mode 100755 index 0000000000..07211c0703 --- /dev/null +++ b/visualtest/docs/latex/dir_d44c64559bbebec7f509842c48db8b23.tex @@ -0,0 +1,30 @@ +\hypertarget{dir_d44c64559bbebec7f509842c48db8b23}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include Directory Reference} +\label{dir_d44c64559bbebec7f509842c48db8b23}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include Directory Reference}} +} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \hyperlink{_s_d_l__visualtest__action__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h} +\item +file \hyperlink{_s_d_l__visualtest__exhaustive__variator_8h}{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h} +\item +file \hyperlink{_s_d_l__visualtest__harness__argparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h} +\item +file {\bfseries S\-D\-L\-\_\-visualtest\-\_\-mischelper.\-h} +\item +file \hyperlink{_s_d_l__visualtest__parsehelper_8h}{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h} +\item +file \hyperlink{_s_d_l__visualtest__process_8h}{S\-D\-L\-\_\-visualtest\-\_\-process.\-h} +\item +file \hyperlink{_s_d_l__visualtest__random__variator_8h}{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h} +\item +file {\bfseries S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h} +\item +file \hyperlink{_s_d_l__visualtest__screenshot_8h}{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h} +\item +file \hyperlink{_s_d_l__visualtest__sut__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h} +\item +file \hyperlink{_s_d_l__visualtest__variator__common_8h}{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h} +\item +file \hyperlink{_s_d_l__visualtest__variators_8h}{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/dir_f584182df4c69fab0b14563b4d535158.tex b/visualtest/docs/latex/dir_f584182df4c69fab0b14563b4d535158.tex new file mode 100755 index 0000000000..390006c706 --- /dev/null +++ b/visualtest/docs/latex/dir_f584182df4c69fab0b14563b4d535158.tex @@ -0,0 +1,10 @@ +\hypertarget{dir_f584182df4c69fab0b14563b4d535158}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows Directory Reference} +\label{dir_f584182df4c69fab0b14563b4d535158}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows Directory Reference}} +} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \hyperlink{windows__process_8c}{windows\-\_\-process.\-c} +\item +file \hyperlink{windows__screenshot_8c}{windows\-\_\-screenshot.\-c} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/dir_fe549de2418b81853b5f194edb4a7f34.tex b/visualtest/docs/latex/dir_fe549de2418b81853b5f194edb4a7f34.tex new file mode 100755 index 0000000000..98e2c43023 --- /dev/null +++ b/visualtest/docs/latex/dir_fe549de2418b81853b5f194edb4a7f34.tex @@ -0,0 +1,8 @@ +\hypertarget{dir_fe549de2418b81853b5f194edb4a7f34}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/windows Directory Reference} +\label{dir_fe549de2418b81853b5f194edb4a7f34}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/windows Directory Reference@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/windows Directory Reference}} +} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \hyperlink{windows__process_8c}{windows\-\_\-process.\-c} +\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/doxygen.sty b/visualtest/docs/latex/doxygen.sty new file mode 100755 index 0000000000..199abf8d59 --- /dev/null +++ b/visualtest/docs/latex/doxygen.sty @@ -0,0 +1,464 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +\RequirePackage{array} +\RequirePackage{calc} +\RequirePackage{float} +\RequirePackage{ifthen} +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{xtab} + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
 ... 
+\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}{% + \par% + \scriptsize% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}{% + \DoxyCode% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
    ...
) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
    ...
) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
...
) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% +}{% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{list}{}{% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \par% + \tabletail{\hline}% + \tablelasttail{\hline}% + \tablefirsthead{}% + \tablehead{}% + \ifthenelse{\equal{#1}{}}% + {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}% + \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.805\textwidth}|}}% + {\ifthenelse{\equal{#1}{1}}% + {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}% + \begin{xtabular}{|>{\centering}p{0.10\textwidth}|% + >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.678\textwidth}|}}% + {\tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]}% + \begin{xtabular}{|>{\centering}p{0.10\textwidth}|% + >{\centering\hspace{0pt}}p{0.15\textwidth}|% + >{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.501\textwidth}|}}% + }\hline% +}{% + \end{xtabular}% + \tablefirsthead{}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \par% + \tabletail{\hline}% + \tablelasttail{\hline}% + \tablehead{}% + \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}% + \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.15\textwidth}|% + p{0.15\textwidth}|% + p{0.63\textwidth}|}% + \hline% +}{% + \end{xtabular}% + \tablefirsthead{}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \par% + \tabletail{\hline}% + \tablelasttail{\hline}% + \tablehead{}% + \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}% + \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|% + p{0.705\textwidth}|}% + \hline% +}{% + \end{xtabular}% + \tablefirsthead{}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \par% + \tabletail{\hline}% + \tablelasttail{\hline}% + \tablehead{}% + \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}% + \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|% + p{0.705\textwidth}|}% + \hline% +}{% + \end{xtabular}% + \tablefirsthead{}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \par% + \tabletail{\hline}% + \tablelasttail{\hline}% + \tablehead{}% + \tablefirsthead{\multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]}% + \begin{xtabular}{|>{\raggedleft\hspace{0pt}}p{0.25\textwidth}|% + p{0.705\textwidth}|}% + \hline% +}{% + \end{xtabular}% + \tablefirsthead{}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newlength{\tmplength}% +\newenvironment{TabularC}[1]% +{% +\setlength{\tmplength}% + {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)}% + \par\begin{xtabular*}{\linewidth}% + {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|}% +}% +{\end{xtabular*}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} diff --git a/visualtest/docs/latex/files.tex b/visualtest/docs/latex/files.tex new file mode 100755 index 0000000000..ef70e9b544 --- /dev/null +++ b/visualtest/docs/latex/files.tex @@ -0,0 +1,31 @@ +\section{File List} +Here is a list of all documented files with brief descriptions\-:\begin{DoxyCompactList} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/{\bfseries config.\-h} }{\pageref{config_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__action__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h} }{\pageref{_s_d_l__visualtest__action__configparser_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__exhaustive__variator_8h}{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h} }{\pageref{_s_d_l__visualtest__exhaustive__variator_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__harness__argparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h} }{\pageref{_s_d_l__visualtest__harness__argparser_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/{\bfseries S\-D\-L\-\_\-visualtest\-\_\-mischelper.\-h} }{\pageref{_s_d_l__visualtest__mischelper_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__parsehelper_8h}{S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h} }{\pageref{_s_d_l__visualtest__parsehelper_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__process_8h}{S\-D\-L\-\_\-visualtest\-\_\-process.\-h} }{\pageref{_s_d_l__visualtest__process_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__random__variator_8h}{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h} }{\pageref{_s_d_l__visualtest__random__variator_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/{\bfseries S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h} }{\pageref{_s_d_l__visualtest__rwhelper_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__screenshot_8h}{S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h} }{\pageref{_s_d_l__visualtest__screenshot_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__sut__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h} }{\pageref{_s_d_l__visualtest__sut__configparser_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__variator__common_8h}{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h} }{\pageref{_s_d_l__visualtest__variator__common_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__variators_8h}{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h} }{\pageref{_s_d_l__visualtest__variators_8h}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{action__configparser_8c}{action\-\_\-configparser.\-c} }{\pageref{action__configparser_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{harness__argparser_8c}{harness\-\_\-argparser.\-c} }{\pageref{harness__argparser_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{mischelper_8c}{mischelper.\-c} }{\pageref{mischelper_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{parsehelper_8c}{parsehelper.\-c} }{\pageref{parsehelper_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{rwhelper_8c}{rwhelper.\-c} }{\pageref{rwhelper_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{screenshot_8c}{screenshot.\-c} }{\pageref{screenshot_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{sut__configparser_8c}{sut\-\_\-configparser.\-c} }{\pageref{sut__configparser_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{testharness_8c}{testharness.\-c} }{\pageref{testharness_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{variator__common_8c}{variator\-\_\-common.\-c} }{\pageref{variator__common_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{variator__exhaustive_8c}{variator\-\_\-exhaustive.\-c} }{\pageref{variator__exhaustive_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{variator__random_8c}{variator\-\_\-random.\-c} }{\pageref{variator__random_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/\hyperlink{variators_8c}{variators.\-c} }{\pageref{variators_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux/\hyperlink{linux__process_8c}{linux\-\_\-process.\-c} }{\pageref{linux__process_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/\hyperlink{windows__process_8c}{windows\-\_\-process.\-c} }{\pageref{windows__process_8c}}{} +\item\contentsline{section}{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/\hyperlink{windows__screenshot_8c}{windows\-\_\-screenshot.\-c} }{\pageref{windows__screenshot_8c}}{} +\end{DoxyCompactList} diff --git a/visualtest/docs/latex/harness__argparser_8c.tex b/visualtest/docs/latex/harness__argparser_8c.tex new file mode 100755 index 0000000000..bf025f8ff9 --- /dev/null +++ b/visualtest/docs/latex/harness__argparser_8c.tex @@ -0,0 +1,64 @@ +\hypertarget{harness__argparser_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/harness\-\_\-argparser.c File Reference} +\label{harness__argparser_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/harness\-\_\-argparser.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/harness\-\_\-argparser.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include $<$stdio.\-h$>$}\\* +{\ttfamily \#include $<$string.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h\char`\"{}}\\* +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{harness__argparser_8c_a7186273cd88640b740b6333cd98ae243}{M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N}~400 +\item +\#define \hyperlink{harness__argparser_8c_a6669f8e5a07e7a0e4622dd23362831e7}{D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T}~(60 $\ast$ 1000) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{harness__argparser_8c_a629609acc04ef21a21fdfbbf6c1589c8}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args} (char $\ast$$\ast$argv, \hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$state) +\item +void \hyperlink{harness__argparser_8c_a833147d8da541982c615645a797627cc}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State} (\hyperlink{struct_s_d_l_visual_test___harness_state}{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$state) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for functions to parse arguments to the test harness. + +\subsection{Macro Definition Documentation} +\hypertarget{harness__argparser_8c_a6669f8e5a07e7a0e4622dd23362831e7}{\index{harness\-\_\-argparser.\-c@{harness\-\_\-argparser.\-c}!D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T@{D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T}} +\index{D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T@{D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T}!harness_argparser.c@{harness\-\_\-argparser.\-c}} +\subsubsection[{D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define D\-E\-F\-A\-U\-L\-T\-\_\-\-S\-U\-T\-\_\-\-T\-I\-M\-E\-O\-U\-T~(60 $\ast$ 1000)}}\label{harness__argparser_8c_a6669f8e5a07e7a0e4622dd23362831e7} +Default value for the timeout after which the S\-U\-T is forcefully killed \hypertarget{harness__argparser_8c_a7186273cd88640b740b6333cd98ae243}{\index{harness\-\_\-argparser.\-c@{harness\-\_\-argparser.\-c}!M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N}} +\index{M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N@{M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N}!harness_argparser.c@{harness\-\_\-argparser.\-c}} +\subsubsection[{M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N}]{\setlength{\rightskip}{0pt plus 5cm}\#define M\-A\-X\-\_\-\-C\-O\-N\-F\-I\-G\-\_\-\-L\-I\-N\-E\-\_\-\-L\-E\-N~400}}\label{harness__argparser_8c_a7186273cd88640b740b6333cd98ae243} +Maximum length of one line in the config file + +\subsection{Function Documentation} +\hypertarget{harness__argparser_8c_a833147d8da541982c615645a797627cc}{\index{harness\-\_\-argparser.\-c@{harness\-\_\-argparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State}!harness_argparser.c@{harness\-\_\-argparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Harness\-State ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$}]{state} +\end{DoxyParamCaption} +)}}\label{harness__argparser_8c_a833147d8da541982c615645a797627cc} +Frees any resources associated with the state object pointed to by {\ttfamily state}. \hypertarget{harness__argparser_8c_a629609acc04ef21a21fdfbbf6c1589c8}{\index{harness\-\_\-argparser.\-c@{harness\-\_\-argparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args}!harness_argparser.c@{harness\-\_\-argparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Harness\-Args ( +\begin{DoxyParamCaption} +\item[{char $\ast$$\ast$}]{argv, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State} $\ast$}]{state} +\end{DoxyParamCaption} +)}}\label{harness__argparser_8c_a629609acc04ef21a21fdfbbf6c1589c8} +Parse command line paramters to the test harness and populate a state object. + + +\begin{DoxyParams}{Parameters} +{\em argv} & The array of command line parameters. \\ +\hline +{\em state} & Pointer to the state object to be populated.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Non-\/zero on success, zero on failure. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/index.tex b/visualtest/docs/latex/index.tex new file mode 100755 index 0000000000..ef8943caf5 --- /dev/null +++ b/visualtest/docs/latex/index.tex @@ -0,0 +1,80 @@ +\hypertarget{index_license_sec}{}\section{License}\label{index_license_sec} +Check the file {\ttfamily C\-O\-P\-Y\-I\-N\-G.\-txt} for licensing information.\hypertarget{index_intro_sec}{}\section{Introduction}\label{index_intro_sec} +The goal of this G\-So\-C project is to automate the testing of testsprite2. testsprite2 takes 26 parameters which have thousands of valid combinations and is used to validate S\-D\-L's window, mouse and rendering behaviour. By having a test harness that runs testsprite2 with various command line argument strings and validates the output for each run, we can make testing an easier task for maintainers, contributors and testers. The test harness can be used by a continuous integration system (like buildbot or jenkins) to validate S\-D\-L after checkins. + +S\-D\-L Homepage\-: \href{http://libsdl.org/}{\tt http\-://libsdl.\-org/}\hypertarget{index_build_sec}{}\section{Building}\label{index_build_sec} +\hypertarget{index_build_linux}{}\subsection{Building on Linux/\-Cygwin}\label{index_build_linux} +{\ttfamily ./autogen.sh; ./configure; make;}\hypertarget{index_build_windows}{}\subsection{Building on Windows}\label{index_build_windows} +Use the Visual Studio solution under {\ttfamily S\-D\-L/\-Visual\-C/visualtest}.\hypertarget{index_docs_sec}{}\section{Documentation}\label{index_docs_sec} +Documentation is available via Doxygen. To build the documentation, cd to the S\-D\-L/visualtest/docs directory and run {\ttfamily doxygen}. A good starting point for exploring the documentation is {\ttfamily S\-D\-L/visualtest/docs/html/index.\-html} \hypertarget{index_usage_sec}{}\section{Usage}\label{index_usage_sec} +To see all the options supported by the test harness, just run {\ttfamily testharness} with no arguments. + +At the moment the following options are supported\-: \begin{DoxyItemize} +\item {\ttfamily sutapp} -\/ Path to the system under test (S\-U\-T) application \item {\ttfamily sutargs} -\/ Launch the S\-U\-T with the specified arguments string \item {\ttfamily timeout} -\/ The maximum time after which the S\-U\-T process will be killed; passed as hh\-:mm\-:ss; default 00\-:01\-:00 \item {\ttfamily variator} -\/ Which variator to use; see \hyperlink{index_variators_sec}{Variators} \item {\ttfamily num-\/variations} -\/ The number of variations to run for; taken to be 1 for the random variator and A\-L\-L for the exhaustive variator by default \item {\ttfamily no-\/launch} -\/ Just print the arguments string for each variation without launching the S\-U\-T or performing any actions \item {\ttfamily parameter-\/config} -\/ A config file that describes the command line parameters supported by the S\-U\-T; see \hyperlink{index_paramconfig_sec}{The S\-U\-T Parameters File} or the sample $\ast$.parameters files for more details \item {\ttfamily action-\/config} -\/ A config file with a list of actions to be performed while the S\-U\-T is running; see \hyperlink{index_actionconfig_sec}{The Actions File} or the sample $\ast$.actions files \item {\ttfamily output-\/dir} -\/ Path to the directory where screenshots should be saved; is created if it doesn't exist; taken to be \char`\"{}./output\char`\"{} by default \item {\ttfamily verify-\/dir} -\/ Path to the directory with the verification images; taken to be \char`\"{}./verify\char`\"{} by default\end{DoxyItemize} +Paths can be relative or absolute. + +Alternatively, the options can be passed as a config file for convenience\-: + +{\ttfamily testharness -\/-\/config testsprite2\-\_\-sample.\-config} + +For a sample, take a look at the $\ast$.config files in this repository. + +We can also pass a config file and override certain options as necessary\-: {\ttfamily testharness -\/-\/config testsprite2\-\_\-sample.\-config -\/-\/num-\/variations 10} + +Note\-: You may find it convenient to copy the S\-U\-T executable along with any resources to the test harness directory. Also note that testsprite2 and its resources (icon.\-bmp) are automatically copied when using the Visual Studio solution.\hypertarget{index_usageexamples_subsec}{}\subsection{Usage examples\-:}\label{index_usageexamples_subsec} +Passing a custom arguments string\-: {\ttfamily testharness -\/-\/sutapp testsprite2 -\/-\/sutargs \char`\"{}\textbackslash{}-\/\textbackslash{}-\/cyclecolor \textbackslash{}-\/\textbackslash{}-\/blend mod +\textbackslash{}-\/\textbackslash{}-\/iterations 2\char`\"{} -\/-\/action-\/config xyz.\-actions} + +Using the random variator\-: {\ttfamily testharness -\/-\/sutapp testsprite2 -\/-\/variator random -\/-\/num-\/variations 5 -\/-\/parameter-\/config xyz.\-parameters -\/-\/action-\/config xyz.\-actions}\hypertarget{index_config_subsec}{}\subsection{Config Files}\label{index_config_subsec} +Config files are an alternate way to pass parameters to the test harness. We describe the paramters in a config file and pass that to the test harness using the -\/-\/config option. The config file consists of lines of the form \char`\"{}x=y\char`\"{} where x is an option and y is it's value. For boolean options, we simply give the name of the option to indicate that it is to be passed to the testharness. + +The hash '\#' character can be used to start a comment from that point to the end of the line.\hypertarget{index_paramconfig_sec}{}\section{The S\-U\-T Parameters File}\label{index_paramconfig_sec} +To generate variations we need to describe the parameters the will be passed to the S\-U\-T. This description is given in a parameters file. Each line of the parameters file (except the blank lines) represents one command line option with five comma separated fields\-: {\ttfamily name, type, values, required, categories} + +\begin{DoxyItemize} +\item {\ttfamily name} is the name of the option, e.\-g., {\ttfamily -\/-\/cyclecolor}. \item {\ttfamily type} can have one of three values -\/ integer, boolean and enum. \item {\ttfamily values} -\/ for integer options this is the valid range of values the option can take, i.\-e., \mbox{[}min max\mbox{]}. For enum options this is a list of strings that the option can take, e.\-g., \mbox{[}val1 val2 val3\mbox{]}. For boolean options this field is ignored. \item {\ttfamily required} -\/ true if the option is required, false otherwise. \item {\ttfamily categories} -\/ a list of categories that the option belongs to. For example, \mbox{[}video mouse audio\mbox{]}\end{DoxyItemize} +Just like with config files, hash characters can be used to start comments.\hypertarget{index_additionalnotes_subsec}{}\subsection{Additional Notes}\label{index_additionalnotes_subsec} +\begin{DoxyItemize} +\item If you want to have an option that always takes a certain value, use an enum with only one value. \item Currently there isn't any way to turn an option off, i.\-e., all options will be included in the command line options string that is generated using the config. If you don't want an option to be passed to the S\-U\-T, remove it from the config file or comment it out.\end{DoxyItemize} +\hypertarget{index_variators_sec}{}\section{Variators}\label{index_variators_sec} +Variators are the mechanism by which we generate strings of command line arguments to test the S\-U\-T with. A variator is quite simply an iterator that iterates through different variations of command line options. There are two variators supported at the moment\-: \begin{DoxyItemize} +\item {\bfseries Exhaustive} -\/ Generate all possible combinations of command line arguments that are valid. \item {\bfseries Random} -\/ Generate a random variation each time the variator is called.\end{DoxyItemize} +As an example, let's try a simple .parameters file\-:\par + {\ttfamily -\/-\/blend, enum, \mbox{[}add mod\mbox{]}, false, \mbox{[}\mbox{]} \par + -\/-\/fullscreen, boolean, \mbox{[}\mbox{]}, false, \mbox{[}\mbox{]} } + +The exhaustive variator would generate the following four variations\-:\par + {\ttfamily -\/-\/blend add \par + -\/-\/blend mod \par + -\/-\/blend add -\/-\/fullscreen \par + -\/-\/blend mod -\/-\/fullscreen \par + } + +The random variator would simply generate a random variation like the following\-:\par + {\ttfamily -\/-\/blend mod}\hypertarget{index_actionconfig_sec}{}\section{The Actions File}\label{index_actionconfig_sec} +Once the S\-U\-T process has been launched, automated testing happens using a mechanism called actions. A list of actions is read from a file and each action is performed on the S\-U\-T process sequentially. Each line in the actions file describes an action. The format for an action is {\ttfamily hh\-:mm\-:ss A\-C\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E additional parameters}. There are five actions supported at the moment\-: \begin{DoxyItemize} +\item {\bfseries S\-C\-R\-E\-E\-N\-S\-H\-O\-T} -\/ Takes a screenshot of each window owned by the S\-U\-T process. The images are saved as {\ttfamily }\mbox{[}hash\mbox{]}\-\_\-\mbox{[}i\mbox{]}.bmp where {\ttfamily }\mbox{[}hash\mbox{]} is the 32 character long hexadecimal M\-D5 hash of the arguments string that was passed to the S\-U\-T while launching it and {\ttfamily i} is the window number. i = 1 is an exceptional case where the {\ttfamily \-\_\-}\mbox{[}i\mbox{]} is dropped and the filename is simply {\ttfamily }\mbox{[}hash\mbox{]}.bmp\par + Note\-: The screenshots are only of the window's client area. \item {\bfseries V\-E\-R\-I\-F\-Y} -\/ Verifies the screenshots taken by the last S\-C\-R\-E\-E\-N\-S\-H\-O\-T action by comparing them against a verification image. Each {\ttfamily }\mbox{[}hash\mbox{]}\-\_\-i.\-bmp image output by the S\-C\-R\-E\-E\-N\-S\-H\-O\-T action is compared against a {\ttfamily }\mbox{[}hash\mbox{]}.bmp image in the verify-\/dir. \item {\bfseries Q\-U\-I\-T} -\/ Gracefully quits the S\-U\-T process. On Windows this means sending a W\-M\-\_\-\-C\-L\-O\-S\-E message to each window owned by the S\-U\-T process. On Linux it means sending a S\-I\-G\-Q\-U\-I\-T signal to the S\-U\-T process. \item {\bfseries K\-I\-L\-L} -\/ Forcefully kills the S\-U\-T process. This is useful when the S\-U\-T process doesn't respond to the Q\-U\-I\-T action. \item {\bfseries L\-A\-U\-N\-C\-H \mbox{[}/path/to/executable\mbox{]} \mbox{[}args\mbox{]}} -\/ Runs an executable with {\ttfamily }\mbox{[}args\mbox{]} as the arguments string.\end{DoxyItemize} +Just like with config files, hash characters can be used to start comments.\hypertarget{index_contint_sec}{}\section{Continuous Integration (\-C\-I)}\label{index_contint_sec} +One of the goals of the project was to create a test harness that integrates with C\-I systems to provide automated visual and interactive testing to S\-D\-L. + +At the moment the test harness can be run in two modes that are useful for C\-I\-: \begin{DoxyItemize} +\item Crash testing mode -\/ launch the S\-U\-T with every variation and all parameters, report to the C\-I if there's a crash \item Visual testing mode -\/ launch and visually verify the S\-U\-T for a smaller subset of the parameters\end{DoxyItemize} +Look at the launch\-\_\-harness.\-sh/launch\-\_\-harness.cmd for an example scripts that run the test harness for all variations with all parameters and report an error on a crash. The script uses the testsprite2\-\_\-crashtest config, so remember to copy those files over to the test harness executable directory along with the script.\hypertarget{index_todo_sec}{}\section{T\-O\-D\-Os}\label{index_todo_sec} +\begin{DoxyItemize} +\item Allow specifying a clipping box along with the V\-E\-R\-I\-F\-Y action, i.\-e., hh\-:mm\-:ss V\-E\-R\-I\-F\-Y x, y, w, h \item Add support for spaces between the equals sign in test harness config files \item Implement the S\-C\-R\-E\-E\-N\-S\-H\-O\-T action on Linux \item Add a pairwise variator \item Add actions to inject keyboard/mouse events \item Add actions to manipulate the S\-U\-T window, e.\-g., minimize, restore, resize \item Add support to load and save screenshots as .pngs instead of .bmps\end{DoxyItemize} +\hypertarget{index_issues_sec}{}\section{Known Issues}\label{index_issues_sec} +\begin{DoxyItemize} +\item The Q\-U\-I\-T action does not work on a testsprite2 process with multiple windows. This appears to be an issue with testsprite2. \item The S\-C\-R\-E\-E\-N\-S\-H\-O\-T action doesn't capture the testsprite2 window correctly if the --fullscreen option is supplied. It works with --fullscreen-\/desktop, however.\end{DoxyItemize} +\hypertarget{index_moreinfo_sec}{}\section{More Information}\label{index_moreinfo_sec} +Author Contact Info\-:\par + Apoorv Upreti {\ttfamily $<$\href{mailto:apoorvupreti@gmail.com}{\tt apoorvupreti@gmail.\-com}$>$} + +Other useful links\-: +\begin{DoxyItemize} +\item Project Repository\-: \href{https://bitbucket.org/nerdap/sdlvisualtest}{\tt https\-://bitbucket.\-org/nerdap/sdlvisualtest} +\item Project Wiki\-: \href{https://github.com/nerdap/autotestsprite2/wiki}{\tt https\-://github.\-com/nerdap/autotestsprite2/wiki} +\item Project Blog\-: \href{http://nerdap.github.io}{\tt http\-://nerdap.\-github.\-io} +\item Verification images for testsprite2\-\_\-blendmodes\-: \href{https://www.dropbox.com/s/nm02aem76m812ng/testsprite2_blendmodes.zip}{\tt https\-://www.\-dropbox.\-com/s/nm02aem76m812ng/testsprite2\-\_\-blendmodes.\-zip} +\item Verification images for testsprite2\-\_\-geometry\-: \href{https://www.dropbox.com/s/csypwryopaslpaf/testsprite2_geometry.zip}{\tt https\-://www.\-dropbox.\-com/s/csypwryopaslpaf/testsprite2\-\_\-geometry.\-zip} +\end{DoxyItemize} \ No newline at end of file diff --git a/visualtest/docs/latex/linux__process_8c.tex b/visualtest/docs/latex/linux__process_8c.tex new file mode 100755 index 0000000000..42b01f1f27 --- /dev/null +++ b/visualtest/docs/latex/linux__process_8c.tex @@ -0,0 +1,16 @@ +\hypertarget{linux__process_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux/linux\-\_\-process.c File Reference} +\label{linux__process_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux/linux\-\_\-process.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/linux/linux\-\_\-process.\-c}} +} +{\ttfamily \#include $<$S\-D\-L.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include $<$sys/types.\-h$>$}\\* +{\ttfamily \#include $<$sys/wait.\-h$>$}\\* +{\ttfamily \#include $<$unistd.\-h$>$}\\* +{\ttfamily \#include $<$errno.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-process.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h\char`\"{}}\\* + + +\subsection{Detailed Description} +Source file for the process A\-P\-I on linux. \ No newline at end of file diff --git a/visualtest/docs/latex/make.bat b/visualtest/docs/latex/make.bat new file mode 100755 index 0000000000..817e9f5ea7 --- /dev/null +++ b/visualtest/docs/latex/make.bat @@ -0,0 +1,25 @@ +del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf + +pdflatex refman +echo ---- +makeindex refman.idx +echo ---- +pdflatex refman + +setlocal enabledelayedexpansion +set count=5 +:repeat +set content=X +for /F "tokens=*" %%T in ( 'findstr /C:"Rerun LaTeX" refman.log' ) do set content="%%~T" +if !content! == X for /F "tokens=*" %%T in ( 'findstr /C:"Rerun to get cross-references right" refman.log' ) do set content="%%~T" +if !content! == X goto :skip +set /a count-=1 +if !count! EQU 0 goto :skip + +echo ---- +pdflatex refman +goto :repeat +:skip +endlocal +makeindex refman.idx +pdflatex refman diff --git a/visualtest/docs/latex/mischelper_8c.tex b/visualtest/docs/latex/mischelper_8c.tex new file mode 100755 index 0000000000..5447f5bd3d --- /dev/null +++ b/visualtest/docs/latex/mischelper_8c.tex @@ -0,0 +1,26 @@ +\hypertarget{mischelper_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/mischelper.c File Reference} +\label{mischelper_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/mischelper.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/mischelper.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{mischelper_8c_a0dae46cdb4e58bdda78676260eaaf980}{S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String} (char $\ast$str, char hash\mbox{[}33\mbox{]}) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header with miscellaneous helper functions. + +Source file with miscellaneous helper functions. + +\subsection{Function Documentation} +\hypertarget{mischelper_8c_a0dae46cdb4e58bdda78676260eaaf980}{\index{mischelper.\-c@{mischelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String@{S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String@{S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String}!mischelper.c@{mischelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Hash\-String ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{str, } +\item[{char}]{hash\mbox{[}33\mbox{]}} +\end{DoxyParamCaption} +)}}\label{mischelper_8c_a0dae46cdb4e58bdda78676260eaaf980} +Stores a 32 digit hexadecimal string representing the M\-D5 hash of the string {\ttfamily str} in {\ttfamily hash}. \ No newline at end of file diff --git a/visualtest/docs/latex/parsehelper_8c.tex b/visualtest/docs/latex/parsehelper_8c.tex new file mode 100755 index 0000000000..28b075c484 --- /dev/null +++ b/visualtest/docs/latex/parsehelper_8c.tex @@ -0,0 +1,55 @@ +\hypertarget{parsehelper_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/parsehelper.c File Reference} +\label{parsehelper_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/parsehelper.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/parsehelper.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +char $\ast$$\ast$ \hyperlink{parsehelper_8c_a508e690ed938e09fc3b724d2faf06899}{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize} (char $\ast$str, int max\-\_\-token\-\_\-len) +\item +char $\ast$$\ast$ \hyperlink{parsehelper_8c_a5f168fdd02f9d40ddbad97bd8c0b6361}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv} (char $\ast$args) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file with some helper functions for parsing strings. + +\subsection{Function Documentation} +\hypertarget{parsehelper_8c_a5f168fdd02f9d40ddbad97bd8c0b6361}{\index{parsehelper.\-c@{parsehelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv}!parsehelper.c@{parsehelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Parse\-Args\-To\-Argv ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{args} +\end{DoxyParamCaption} +)}}\label{parsehelper_8c_a5f168fdd02f9d40ddbad97bd8c0b6361} +Takes an string of command line arguments and breaks them up into an array based on whitespace. + + +\begin{DoxyParams}{Parameters} +{\em args} & The string of arguments.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +N\-U\-L\-L on failure, an array of strings on success. The last element of the array is N\-U\-L\-L. The first element of the array is N\-U\-L\-L and should be set to the path of the executable by the caller. +\end{DoxyReturn} +\hypertarget{parsehelper_8c_a508e690ed938e09fc3b724d2faf06899}{\index{parsehelper.\-c@{parsehelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Tokenize@{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize@{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize}!parsehelper.c@{parsehelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Tokenize}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Tokenize ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{str, } +\item[{int}]{max\-\_\-token\-\_\-len} +\end{DoxyParamCaption} +)}}\label{parsehelper_8c_a508e690ed938e09fc3b724d2faf06899} +Takes a string and breaks it into tokens by splitting on whitespace. + + +\begin{DoxyParams}{Parameters} +{\em str} & The string to be split. \\ +\hline +{\em max\-\_\-token\-\_\-len} & Length of each element in the array to be returned.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +N\-U\-L\-L on failure; an array of strings with the tokens on success. The last element of the array is N\-U\-L\-L. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/refman.tex b/visualtest/docs/latex/refman.tex new file mode 100755 index 0000000000..e181c02d44 --- /dev/null +++ b/visualtest/docs/latex/refman.tex @@ -0,0 +1,189 @@ +\documentclass[twoside]{book} + +% Packages required by doxygen +\usepackage{calc} +\usepackage{doxygen} +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\usepackage{textcomp} +\usepackage[table]{xcolor} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage{mathptmx} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} + +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\setlength{\parskip}{0.2cm} +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated on Thu Sep 26 2013 00:18:24 for SDL Visual Test by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated on Thu Sep 26 2013 00:18:24 for SDL Visual Test by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +% Hyperlinks (required, but should be loaded last) +\usepackage{ifpdf} +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \usepackage[ps2pdf,pagebackref=true]{hyperref} +\fi +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + + +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\hypersetup{pageanchor=false} +\pagenumbering{roman} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large S\-D\-L Visual Test }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.8.4}\\ +\vspace*{0.5cm} +{\small Thu Sep 26 2013 00:18:24}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} + +%--- Begin generated contents --- +\chapter{Visual and Interactive Test Automation for S\-D\-L 2.0} +\label{index}\hypertarget{index}{}\input{index} +\chapter{Data Structure Index} +\input{annotated} +\chapter{File Index} +\input{files} +\chapter{Data Structure Documentation} +\input{struct_s_d_l___process_exit_status} +\input{struct_s_d_l___process_info} +\input{struct_s_d_l_visual_test___action} +\input{struct_s_d_l_visual_test___action_node} +\input{struct_s_d_l_visual_test___action_queue} +\input{struct_s_d_l_visual_test___exhaustive_variator} +\input{struct_s_d_l_visual_test___harness_state} +\input{struct_s_d_l_visual_test___random_variator} +\input{struct_s_d_l_visual_test___r_w_helper_buffer} +\input{struct_s_d_l_visual_test___s_u_t_config} +\input{struct_s_d_l_visual_test___s_u_t_int_range} +\input{struct_s_d_l_visual_test___s_u_t_option} +\input{union_s_d_l_visual_test___s_u_t_option_value} +\input{struct_s_d_l_visual_test___variation} +\input{struct_s_d_l_visual_test___variator} +\chapter{File Documentation} +\input{_s_d_l__visualtest__action__configparser_8h} +\input{_s_d_l__visualtest__exhaustive__variator_8h} +\input{_s_d_l__visualtest__harness__argparser_8h} +\input{_s_d_l__visualtest__parsehelper_8h} +\input{_s_d_l__visualtest__process_8h} +\input{_s_d_l__visualtest__random__variator_8h} +\input{_s_d_l__visualtest__screenshot_8h} +\input{_s_d_l__visualtest__sut__configparser_8h} +\input{_s_d_l__visualtest__variator__common_8h} +\input{_s_d_l__visualtest__variators_8h} +\input{action__configparser_8c} +\input{harness__argparser_8c} +\input{linux__process_8c} +\input{mischelper_8c} +\input{parsehelper_8c} +\input{rwhelper_8c} +\input{screenshot_8c} +\input{sut__configparser_8c} +\input{testharness_8c} +\input{variator__common_8c} +\input{variator__exhaustive_8c} +\input{variator__random_8c} +\input{variators_8c} +\input{windows__process_8c} +\input{windows__screenshot_8c} +%--- End generated contents --- + +% Index +\newpage +\phantomsection +\addcontentsline{toc}{part}{Index} +\printindex + +\end{document} diff --git a/visualtest/docs/latex/rwhelper_8c.tex b/visualtest/docs/latex/rwhelper_8c.tex new file mode 100755 index 0000000000..0a72b74918 --- /dev/null +++ b/visualtest/docs/latex/rwhelper_8c.tex @@ -0,0 +1,76 @@ +\hypertarget{rwhelper_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/rwhelper.c File Reference} +\label{rwhelper_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/rwhelper.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/rwhelper.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{rwhelper_8c_aa7878508e6d851b11dc1d1186324064a}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer} (\hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$buffer) +\item +char \hyperlink{rwhelper_8c_a92794c04d5568bde0da9f3020d88f44c}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char} (S\-D\-L\-\_\-\-R\-Wops $\ast$rw, \hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$buffer) +\item +char $\ast$ \hyperlink{rwhelper_8c_af97cfdf8d58f716efa8fd9204666df12}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line} (S\-D\-L\-\_\-\-R\-Wops $\ast$rw, char $\ast$str, int size, \hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$buffer, char comment\-\_\-char) +\item +int \hyperlink{rwhelper_8c_ac7f94417fa973af01a27452acd0043e8}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines} (S\-D\-L\-\_\-\-R\-Wops $\ast$rw, \hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$buffer, char comment\-\_\-char) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Header file with some helper functions for working with S\-D\-L\-\_\-\-R\-Wops. + +Source file with some helper functions for working with S\-D\-L\-\_\-\-R\-Wops. + +\subsection{Function Documentation} +\hypertarget{rwhelper_8c_ac7f94417fa973af01a27452acd0043e8}{\index{rwhelper.\-c@{rwhelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines}!rwhelper.c@{rwhelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Count\-Non\-Empty\-Lines ( +\begin{DoxyParamCaption} +\item[{S\-D\-L\-\_\-\-R\-Wops $\ast$}]{rw, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$}]{buffer, } +\item[{char}]{comment\-\_\-char} +\end{DoxyParamCaption} +)}}\label{rwhelper_8c_ac7f94417fa973af01a27452acd0043e8} +Counts the number of lines that are not all whitespace and comments using the S\-D\-L\-\_\-\-R\-Wops object pointed to by {\ttfamily rw}. {\ttfamily comment\-\_\-char} indicates the character used for comments. Uses the buffer pointed to by {\ttfamily buffer} to read data in blocks. + +\begin{DoxyReturn}{Returns} +Number of lines on success, -\/1 on failure. +\end{DoxyReturn} +\hypertarget{rwhelper_8c_a92794c04d5568bde0da9f3020d88f44c}{\index{rwhelper.\-c@{rwhelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char}!rwhelper.c@{rwhelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char}]{\setlength{\rightskip}{0pt plus 5cm}char S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Char ( +\begin{DoxyParamCaption} +\item[{S\-D\-L\-\_\-\-R\-Wops $\ast$}]{rw, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$}]{buffer} +\end{DoxyParamCaption} +)}}\label{rwhelper_8c_a92794c04d5568bde0da9f3020d88f44c} +Reads a single character using the S\-D\-L\-\_\-\-R\-Wops object pointed to by {\ttfamily rw}. This function reads data in blocks and stores them in the buffer pointed to by {\ttfamily buffer}, so other S\-D\-L\-\_\-\-R\-Wops functions should not be used in conjunction with this function. + +\begin{DoxyReturn}{Returns} +The character that was read. +\end{DoxyReturn} +\hypertarget{rwhelper_8c_af97cfdf8d58f716efa8fd9204666df12}{\index{rwhelper.\-c@{rwhelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line}!rwhelper.c@{rwhelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Read\-Line ( +\begin{DoxyParamCaption} +\item[{S\-D\-L\-\_\-\-R\-Wops $\ast$}]{rw, } +\item[{char $\ast$}]{str, } +\item[{int}]{size, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$}]{buffer, } +\item[{char}]{comment\-\_\-char} +\end{DoxyParamCaption} +)}}\label{rwhelper_8c_af97cfdf8d58f716efa8fd9204666df12} +Reads characters using the S\-D\-L\-\_\-\-R\-Wops object pointed to by {\ttfamily rw} into the character array pointed to by {\ttfamily str} (of size {\ttfamily size}) until either the array is full or a new line is encountered. If {\ttfamily comment\-\_\-char} is encountered, all characters from that position till the end of the line are ignored. The new line is not included as part of the buffer. Lines with only whitespace and comments are ignored. This function reads data in blocks and stores them in the buffer pointed to by {\ttfamily buffer}, so other S\-D\-L\-\_\-\-R\-Wops functions should not be used in conjunction with this function. + +\begin{DoxyReturn}{Returns} +pointer to the string on success, N\-U\-L\-L on failure or E\-O\-F. +\end{DoxyReturn} +\hypertarget{rwhelper_8c_aa7878508e6d851b11dc1d1186324064a}{\index{rwhelper.\-c@{rwhelper.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer}!rwhelper.c@{rwhelper.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer} $\ast$}]{buffer} +\end{DoxyParamCaption} +)}}\label{rwhelper_8c_aa7878508e6d851b11dc1d1186324064a} +Resets the buffer pointed to by {\ttfamily buffer} used by some of the helper functions. This function should be called when you're using one of the helper functions with a new S\-D\-L\-\_\-\-R\-Wops object. \ No newline at end of file diff --git a/visualtest/docs/latex/screenshot_8c.tex b/visualtest/docs/latex/screenshot_8c.tex new file mode 100755 index 0000000000..991374fe07 --- /dev/null +++ b/visualtest/docs/latex/screenshot_8c.tex @@ -0,0 +1,30 @@ +\hypertarget{screenshot_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/screenshot.c File Reference} +\label{screenshot_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/screenshot.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/screenshot.\-c}} +} +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-mischelper.\-h\char`\"{}}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{screenshot_8c_ac7b5335651144961676abc2116c38299}{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots} (char $\ast$args, char $\ast$test\-\_\-dir, char $\ast$verify\-\_\-dir) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the screenshot A\-P\-I. + +\subsection{Function Documentation} +\hypertarget{screenshot_8c_ac7b5335651144961676abc2116c38299}{\index{screenshot.\-c@{screenshot.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots@{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots@{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots}!screenshot.c@{screenshot.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Verify\-Screenshots ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{args, } +\item[{char $\ast$}]{test\-\_\-dir, } +\item[{char $\ast$}]{verify\-\_\-dir} +\end{DoxyParamCaption} +)}}\label{screenshot_8c_ac7b5335651144961676abc2116c38299} +Compare a screenshot taken previously with S\-U\-T arguments {\ttfamily args} that is located in {\ttfamily test\-\_\-dir} with a verification image that is located in {\ttfamily verify\-\_\-dir}. + +\begin{DoxyReturn}{Returns} +-\/1 on failure, 0 if the images were not equal, 1 if the images are equal and 2 if the verification image is not present. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/struct_s_d_l___process_exit_status.tex b/visualtest/docs/latex/struct_s_d_l___process_exit_status.tex new file mode 100755 index 0000000000..2b9da419f2 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l___process_exit_status.tex @@ -0,0 +1,31 @@ +\hypertarget{struct_s_d_l___process_exit_status}{\section{S\-D\-L\-\_\-\-Process\-Exit\-Status Struct Reference} +\label{struct_s_d_l___process_exit_status}\index{S\-D\-L\-\_\-\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Process\-Exit\-Status}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-process.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +int \hyperlink{struct_s_d_l___process_exit_status_a51df50c07437f2e816d6ce7ce99e1cac}{exit\-\_\-success} +\item +int \hyperlink{struct_s_d_l___process_exit_status_a9324a9ff7dc6697dd77f02998d5e77d7}{exit\-\_\-status} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +This structure stores the exit status (value returned by \hyperlink{testharness_8c_a0ddf1224851353fc92bfbff6f499fa97}{main()}) and whether the process exited sucessfully or not. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l___process_exit_status_a9324a9ff7dc6697dd77f02998d5e77d7}{\index{S\-D\-L\-\_\-\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Process\-Exit\-Status}!exit\-\_\-status@{exit\-\_\-status}} +\index{exit\-\_\-status@{exit\-\_\-status}!SDL_ProcessExitStatus@{S\-D\-L\-\_\-\-Process\-Exit\-Status}} +\subsubsection[{exit\-\_\-status}]{\setlength{\rightskip}{0pt plus 5cm}int exit\-\_\-status}}\label{struct_s_d_l___process_exit_status_a9324a9ff7dc6697dd77f02998d5e77d7} +The exit status of the process. 8-\/bit value. \hypertarget{struct_s_d_l___process_exit_status_a51df50c07437f2e816d6ce7ce99e1cac}{\index{S\-D\-L\-\_\-\-Process\-Exit\-Status@{S\-D\-L\-\_\-\-Process\-Exit\-Status}!exit\-\_\-success@{exit\-\_\-success}} +\index{exit\-\_\-success@{exit\-\_\-success}!SDL_ProcessExitStatus@{S\-D\-L\-\_\-\-Process\-Exit\-Status}} +\subsubsection[{exit\-\_\-success}]{\setlength{\rightskip}{0pt plus 5cm}int exit\-\_\-success}}\label{struct_s_d_l___process_exit_status_a51df50c07437f2e816d6ce7ce99e1cac} +Zero if the process exited successfully + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__process_8h}{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l___process_info.tex b/visualtest/docs/latex/struct_s_d_l___process_info.tex new file mode 100755 index 0000000000..2bbcf9cf3a --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l___process_info.tex @@ -0,0 +1,15 @@ +\hypertarget{struct_s_d_l___process_info}{\section{S\-D\-L\-\_\-\-Process\-Info Struct Reference} +\label{struct_s_d_l___process_info}\index{S\-D\-L\-\_\-\-Process\-Info@{S\-D\-L\-\_\-\-Process\-Info}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-process.\-h$>$} + + + +\subsection{Detailed Description} +Struct to store a platform specific handle to a process. + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__process_8h}{S\-D\-L\-\_\-visualtest\-\_\-process.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___action.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___action.tex new file mode 100755 index 0000000000..b153bd83ed --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___action.tex @@ -0,0 +1,47 @@ +\hypertarget{struct_s_d_l_visual_test___action}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Action Struct Reference} +\label{struct_s_d_l_visual_test___action}\index{S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{_s_d_l__visualtest__action__configparser_8h_a383e41b8547eab149a0a4af867b3ebc6}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type} \hyperlink{struct_s_d_l_visual_test___action_a3ab091b672fc470015f09e6c4c50dcf1}{type} +\item +int \hyperlink{struct_s_d_l_visual_test___action_a42715f65f02da52edc5b22021d8ae670}{time} +\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +union \{\\ +\>struct \{\\ +\>\>char $\ast$ {\bfseries path}\\ +\>\>char $\ast$ {\bfseries args}\\ +\>\} \hyperlink{struct_s_d_l_visual_test___action_aa43e9883c9f24718f49b984b67b1afdc}{process}\\ +\} \hyperlink{struct_s_d_l_visual_test___action_a4626514a67f261290b54fb3d85ca8ddd}{extra}\\ + +\end{tabbing}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct that defines an action that will be performed on the S\-U\-T process at a specific time. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___action_a4626514a67f261290b54fb3d85ca8ddd}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}!extra@{extra}} +\index{extra@{extra}!SDLVisualTest_Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}} +\subsubsection[{extra}]{\setlength{\rightskip}{0pt plus 5cm}union \{ ... \} extra}}\label{struct_s_d_l_visual_test___action_a4626514a67f261290b54fb3d85ca8ddd} +Any additional information needed to perform the action. \hypertarget{struct_s_d_l_visual_test___action_aa43e9883c9f24718f49b984b67b1afdc}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}!process@{process}} +\index{process@{process}!SDLVisualTest_Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}} +\subsubsection[{process}]{\setlength{\rightskip}{0pt plus 5cm}struct \{ ... \} process}}\label{struct_s_d_l_visual_test___action_aa43e9883c9f24718f49b984b67b1afdc} +The path and arguments to the process to be launched \hypertarget{struct_s_d_l_visual_test___action_a42715f65f02da52edc5b22021d8ae670}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}!time@{time}} +\index{time@{time}!SDLVisualTest_Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}} +\subsubsection[{time}]{\setlength{\rightskip}{0pt plus 5cm}int time}}\label{struct_s_d_l_visual_test___action_a42715f65f02da52edc5b22021d8ae670} +The time, in milliseconds from the launch of the S\-U\-T, when the action will be performed \hypertarget{struct_s_d_l_visual_test___action_a3ab091b672fc470015f09e6c4c50dcf1}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}!type@{type}} +\index{type@{type}!SDLVisualTest_Action@{S\-D\-L\-Visual\-Test\-\_\-\-Action}} +\subsubsection[{type}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Type} type}}\label{struct_s_d_l_visual_test___action_a3ab091b672fc470015f09e6c4c50dcf1} +The type of action to be performed + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__action__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___action_node.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___action_node.tex new file mode 100755 index 0000000000..a818ece3a2 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___action_node.tex @@ -0,0 +1,31 @@ +\hypertarget{struct_s_d_l_visual_test___action_node}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node Struct Reference} +\label{struct_s_d_l_visual_test___action_node}\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{struct_s_d_l_visual_test___action}{S\-D\-L\-Visual\-Test\-\_\-\-Action} \hyperlink{struct_s_d_l_visual_test___action_node_af46ec45094cc74a7432626a6234c6575}{action} +\item +struct \hyperlink{struct_s_d_l_visual_test___action_node}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} $\ast$ \hyperlink{struct_s_d_l_visual_test___action_node_ae6154b60b896ce1a184d060ee4664485}{next} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct for a node in the action queue. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___action_node_af46ec45094cc74a7432626a6234c6575}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}!action@{action}} +\index{action@{action}!SDLVisualTest_ActionNode@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}} +\subsubsection[{action}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action} action}}\label{struct_s_d_l_visual_test___action_node_af46ec45094cc74a7432626a6234c6575} +The action in this node \hypertarget{struct_s_d_l_visual_test___action_node_ae6154b60b896ce1a184d060ee4664485}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}!next@{next}} +\index{next@{next}!SDLVisualTest_ActionNode@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}} +\subsubsection[{next}]{\setlength{\rightskip}{0pt plus 5cm}struct {\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}$\ast$ next}}\label{struct_s_d_l_visual_test___action_node_ae6154b60b896ce1a184d060ee4664485} +Pointer to the next element in the queue + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__action__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___action_queue.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___action_queue.tex new file mode 100755 index 0000000000..40ecaf2394 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___action_queue.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_s_d_l_visual_test___action_queue}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue Struct Reference} +\label{struct_s_d_l_visual_test___action_queue}\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{struct_s_d_l_visual_test___action_node}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} $\ast$ \hyperlink{struct_s_d_l_visual_test___action_queue_a8b810b2fd2b05698be642ee08836a452}{front} +\item +\hyperlink{struct_s_d_l_visual_test___action_node}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node} $\ast$ \hyperlink{struct_s_d_l_visual_test___action_queue_a4aaf4563956932c81c65d05f9020f2ce}{rear} +\item +int \hyperlink{struct_s_d_l_visual_test___action_queue_a439227feff9d7f55384e8780cfc2eb82}{size} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Queue structure for actions loaded from the actions config file. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___action_queue_a8b810b2fd2b05698be642ee08836a452}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}!front@{front}} +\index{front@{front}!SDLVisualTest_ActionQueue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}} +\subsubsection[{front}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}$\ast$ front}}\label{struct_s_d_l_visual_test___action_queue_a8b810b2fd2b05698be642ee08836a452} +Pointer to the front of the queue \hypertarget{struct_s_d_l_visual_test___action_queue_a4aaf4563956932c81c65d05f9020f2ce}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}!rear@{rear}} +\index{rear@{rear}!SDLVisualTest_ActionQueue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}} +\subsubsection[{rear}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Node}$\ast$ rear}}\label{struct_s_d_l_visual_test___action_queue_a4aaf4563956932c81c65d05f9020f2ce} +Pointer to the rear of the queue \hypertarget{struct_s_d_l_visual_test___action_queue_a439227feff9d7f55384e8780cfc2eb82}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}!size@{size}} +\index{size@{size}!SDLVisualTest_ActionQueue@{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue}} +\subsubsection[{size}]{\setlength{\rightskip}{0pt plus 5cm}int size}}\label{struct_s_d_l_visual_test___action_queue_a439227feff9d7f55384e8780cfc2eb82} +Number of nodes in the queue + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__action__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-action\-\_\-configparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___exhaustive_variator.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___exhaustive_variator.tex new file mode 100755 index 0000000000..030308f30c --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___exhaustive_variator.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_s_d_l_visual_test___exhaustive_variator}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator Struct Reference} +\label{struct_s_d_l_visual_test___exhaustive_variator}\index{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} \hyperlink{struct_s_d_l_visual_test___exhaustive_variator_a11c2995cf19b41c4a1b1f8d9b4081ff7}{variation} +\item +\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} \hyperlink{struct_s_d_l_visual_test___exhaustive_variator_ab66b4220589b2e2b6e1fde7d6c20bd72}{config} +\item +char \hyperlink{struct_s_d_l_visual_test___exhaustive_variator_a2b599af5b00be0f525ffc18feb0775a8}{buffer} \mbox{[}\hyperlink{_s_d_l__visualtest__harness__argparser_8h_a8485cbda108eca56406d67aaa685fcc5}{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct for the variator that exhaustively iterates through all variations of command line arguments to the S\-U\-T. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___exhaustive_variator_a2b599af5b00be0f525ffc18feb0775a8}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}!buffer@{buffer}} +\index{buffer@{buffer}!SDLVisualTest_ExhaustiveVariator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}} +\subsubsection[{buffer}]{\setlength{\rightskip}{0pt plus 5cm}char buffer\mbox{[}{\bf M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___exhaustive_variator_a2b599af5b00be0f525ffc18feb0775a8} +Buffer to store the arguments string built from the variation \hypertarget{struct_s_d_l_visual_test___exhaustive_variator_ab66b4220589b2e2b6e1fde7d6c20bd72}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}!config@{config}} +\index{config@{config}!SDLVisualTest_ExhaustiveVariator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}} +\subsubsection[{config}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} config}}\label{struct_s_d_l_visual_test___exhaustive_variator_ab66b4220589b2e2b6e1fde7d6c20bd72} +Configuration object for the S\-U\-T that the variator is running for. \hypertarget{struct_s_d_l_visual_test___exhaustive_variator_a11c2995cf19b41c4a1b1f8d9b4081ff7}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}!variation@{variation}} +\index{variation@{variation}!SDLVisualTest_ExhaustiveVariator@{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator}} +\subsubsection[{variation}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} variation}}\label{struct_s_d_l_visual_test___exhaustive_variator_a11c2995cf19b41c4a1b1f8d9b4081ff7} +The current variation. + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__exhaustive__variator_8h}{S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___harness_state.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___harness_state.tex new file mode 100755 index 0000000000..35c315b790 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___harness_state.tex @@ -0,0 +1,71 @@ +\hypertarget{struct_s_d_l_visual_test___harness_state}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State Struct Reference} +\label{struct_s_d_l_visual_test___harness_state}\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +char \hyperlink{struct_s_d_l_visual_test___harness_state_af277bbb5c712eb89e92337dd583a8b74}{sutapp} \mbox{[}\hyperlink{_s_d_l__visualtest__harness__argparser_8h_abdd33f362ae3bbdacb5de76473aa8a2f}{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}\mbox{]} +\item +char \hyperlink{struct_s_d_l_visual_test___harness_state_a00fab9c7cf802b96b6b29e098292d24d}{sutargs} \mbox{[}\hyperlink{_s_d_l__visualtest__harness__argparser_8h_a8485cbda108eca56406d67aaa685fcc5}{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}\mbox{]} +\item +int \hyperlink{struct_s_d_l_visual_test___harness_state_a493b57f443cc38b3d3df9c1e584d9d82}{timeout} +\item +\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} \hyperlink{struct_s_d_l_visual_test___harness_state_a42657080015a96da836e1640bbdf870e}{sut\-\_\-config} +\item +\hyperlink{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} \hyperlink{struct_s_d_l_visual_test___harness_state_aaaa989ae89caee6d39c722cfe6907466}{variator\-\_\-type} +\item +int \hyperlink{struct_s_d_l_visual_test___harness_state_a0bd4e04c0c6be7b94e68501bb31dd62c}{num\-\_\-variations} +\item +S\-D\-L\-\_\-bool \hyperlink{struct_s_d_l_visual_test___harness_state_a091c0d08290b73216a736ff42ac8fa99}{no\-\_\-launch} +\item +\hyperlink{struct_s_d_l_visual_test___action_queue}{S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} \hyperlink{struct_s_d_l_visual_test___harness_state_ae25567527563fbd7373fa1cf7cdede61}{action\-\_\-queue} +\item +char \hyperlink{struct_s_d_l_visual_test___harness_state_aafa9a2fb15490380b6c2edd704f4fcf0}{output\-\_\-dir} \mbox{[}\hyperlink{_s_d_l__visualtest__harness__argparser_8h_abdd33f362ae3bbdacb5de76473aa8a2f}{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}\mbox{]} +\item +char \hyperlink{struct_s_d_l_visual_test___harness_state_adc871112f24f61e2fff74a7a7fb9794f}{verify\-\_\-dir} \mbox{[}\hyperlink{_s_d_l__visualtest__harness__argparser_8h_abdd33f362ae3bbdacb5de76473aa8a2f}{M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Stores the state of the test harness. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___harness_state_ae25567527563fbd7373fa1cf7cdede61}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!action\-\_\-queue@{action\-\_\-queue}} +\index{action\-\_\-queue@{action\-\_\-queue}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{action\-\_\-queue}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Action\-Queue} action\-\_\-queue}}\label{struct_s_d_l_visual_test___harness_state_ae25567527563fbd7373fa1cf7cdede61} +A queue with actions to be performed while the S\-U\-T is running \hypertarget{struct_s_d_l_visual_test___harness_state_a091c0d08290b73216a736ff42ac8fa99}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!no\-\_\-launch@{no\-\_\-launch}} +\index{no\-\_\-launch@{no\-\_\-launch}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{no\-\_\-launch}]{\setlength{\rightskip}{0pt plus 5cm}S\-D\-L\-\_\-bool no\-\_\-launch}}\label{struct_s_d_l_visual_test___harness_state_a091c0d08290b73216a736ff42ac8fa99} +If true, the test harness will just print the different variations without launching the S\-U\-T for each one \hypertarget{struct_s_d_l_visual_test___harness_state_a0bd4e04c0c6be7b94e68501bb31dd62c}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!num\-\_\-variations@{num\-\_\-variations}} +\index{num\-\_\-variations@{num\-\_\-variations}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{num\-\_\-variations}]{\setlength{\rightskip}{0pt plus 5cm}int num\-\_\-variations}}\label{struct_s_d_l_visual_test___harness_state_a0bd4e04c0c6be7b94e68501bb31dd62c} +The number of variations to generate \hypertarget{struct_s_d_l_visual_test___harness_state_aafa9a2fb15490380b6c2edd704f4fcf0}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!output\-\_\-dir@{output\-\_\-dir}} +\index{output\-\_\-dir@{output\-\_\-dir}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{output\-\_\-dir}]{\setlength{\rightskip}{0pt plus 5cm}char output\-\_\-dir\mbox{[}{\bf M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___harness_state_aafa9a2fb15490380b6c2edd704f4fcf0} +Output directory to save the screenshots \hypertarget{struct_s_d_l_visual_test___harness_state_a42657080015a96da836e1640bbdf870e}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!sut\-\_\-config@{sut\-\_\-config}} +\index{sut\-\_\-config@{sut\-\_\-config}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{sut\-\_\-config}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} sut\-\_\-config}}\label{struct_s_d_l_visual_test___harness_state_a42657080015a96da836e1640bbdf870e} +Configuration object for the S\-U\-T \hypertarget{struct_s_d_l_visual_test___harness_state_af277bbb5c712eb89e92337dd583a8b74}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!sutapp@{sutapp}} +\index{sutapp@{sutapp}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{sutapp}]{\setlength{\rightskip}{0pt plus 5cm}char sutapp\mbox{[}{\bf M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___harness_state_af277bbb5c712eb89e92337dd583a8b74} +Path to the System Under Test (S\-U\-T) executable \hypertarget{struct_s_d_l_visual_test___harness_state_a00fab9c7cf802b96b6b29e098292d24d}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!sutargs@{sutargs}} +\index{sutargs@{sutargs}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{sutargs}]{\setlength{\rightskip}{0pt plus 5cm}char sutargs\mbox{[}{\bf M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___harness_state_a00fab9c7cf802b96b6b29e098292d24d} +Command line arguments to be passed to the S\-U\-T \hypertarget{struct_s_d_l_visual_test___harness_state_a493b57f443cc38b3d3df9c1e584d9d82}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!timeout@{timeout}} +\index{timeout@{timeout}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{timeout}]{\setlength{\rightskip}{0pt plus 5cm}int timeout}}\label{struct_s_d_l_visual_test___harness_state_a493b57f443cc38b3d3df9c1e584d9d82} +Time in milliseconds after which to kill the S\-U\-T \hypertarget{struct_s_d_l_visual_test___harness_state_aaaa989ae89caee6d39c722cfe6907466}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!variator\-\_\-type@{variator\-\_\-type}} +\index{variator\-\_\-type@{variator\-\_\-type}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{variator\-\_\-type}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} variator\-\_\-type}}\label{struct_s_d_l_visual_test___harness_state_aaaa989ae89caee6d39c722cfe6907466} +What type of variator to use to generate argument strings \hypertarget{struct_s_d_l_visual_test___harness_state_adc871112f24f61e2fff74a7a7fb9794f}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}!verify\-\_\-dir@{verify\-\_\-dir}} +\index{verify\-\_\-dir@{verify\-\_\-dir}!SDLVisualTest_HarnessState@{S\-D\-L\-Visual\-Test\-\_\-\-Harness\-State}} +\subsubsection[{verify\-\_\-dir}]{\setlength{\rightskip}{0pt plus 5cm}char verify\-\_\-dir\mbox{[}{\bf M\-A\-X\-\_\-\-P\-A\-T\-H\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___harness_state_adc871112f24f61e2fff74a7a7fb9794f} +Path to directory with the verification images + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__harness__argparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___r_w_helper_buffer.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___r_w_helper_buffer.tex new file mode 100755 index 0000000000..22367cdb8a --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___r_w_helper_buffer.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_s_d_l_visual_test___r_w_helper_buffer}{\section{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer Struct Reference} +\label{struct_s_d_l_visual_test___r_w_helper_buffer}\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +char \hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer_a5b528063c1aaa0e626f5d5e49de5baad}{buffer} \mbox{[}R\-W\-O\-P\-S\-\_\-\-B\-U\-F\-F\-E\-R\-\_\-\-L\-E\-N\mbox{]} +\item +int \hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer_a8a37d41b7b076eced766d7418450477d}{buffer\-\_\-pos} +\item +int \hyperlink{struct_s_d_l_visual_test___r_w_helper_buffer_adb2920cd89b7b8b8b014290e82746d8c}{buffer\-\_\-width} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct that is used as a buffer by the R\-W helper functions. Should be initialized by calling \hyperlink{rwhelper_8c_aa7878508e6d851b11dc1d1186324064a}{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Reset\-Buffer()} before being used. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___r_w_helper_buffer_a5b528063c1aaa0e626f5d5e49de5baad}{\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}!buffer@{buffer}} +\index{buffer@{buffer}!SDLVisualTest_RWHelperBuffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}} +\subsubsection[{buffer}]{\setlength{\rightskip}{0pt plus 5cm}char buffer\mbox{[}R\-W\-O\-P\-S\-\_\-\-B\-U\-F\-F\-E\-R\-\_\-\-L\-E\-N\mbox{]}}}\label{struct_s_d_l_visual_test___r_w_helper_buffer_a5b528063c1aaa0e626f5d5e49de5baad} +Character buffer that data is read into \hypertarget{struct_s_d_l_visual_test___r_w_helper_buffer_a8a37d41b7b076eced766d7418450477d}{\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}!buffer\-\_\-pos@{buffer\-\_\-pos}} +\index{buffer\-\_\-pos@{buffer\-\_\-pos}!SDLVisualTest_RWHelperBuffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}} +\subsubsection[{buffer\-\_\-pos}]{\setlength{\rightskip}{0pt plus 5cm}int buffer\-\_\-pos}}\label{struct_s_d_l_visual_test___r_w_helper_buffer_a8a37d41b7b076eced766d7418450477d} +buffer\mbox{[}buffer\-\_\-pos\mbox{]} is the next character to be read from the buffer \hypertarget{struct_s_d_l_visual_test___r_w_helper_buffer_adb2920cd89b7b8b8b014290e82746d8c}{\index{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}!buffer\-\_\-width@{buffer\-\_\-width}} +\index{buffer\-\_\-width@{buffer\-\_\-width}!SDLVisualTest_RWHelperBuffer@{S\-D\-L\-Visual\-Test\-\_\-\-R\-W\-Helper\-Buffer}} +\subsubsection[{buffer\-\_\-width}]{\setlength{\rightskip}{0pt plus 5cm}int buffer\-\_\-width}}\label{struct_s_d_l_visual_test___r_w_helper_buffer_adb2920cd89b7b8b8b014290e82746d8c} +Number of character read into the buffer + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___random_variator.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___random_variator.tex new file mode 100755 index 0000000000..25ae5a5ef3 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___random_variator.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_s_d_l_visual_test___random_variator}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator Struct Reference} +\label{struct_s_d_l_visual_test___random_variator}\index{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} \hyperlink{struct_s_d_l_visual_test___random_variator_a11c2995cf19b41c4a1b1f8d9b4081ff7}{variation} +\item +\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} \hyperlink{struct_s_d_l_visual_test___random_variator_ab66b4220589b2e2b6e1fde7d6c20bd72}{config} +\item +char \hyperlink{struct_s_d_l_visual_test___random_variator_a2b599af5b00be0f525ffc18feb0775a8}{buffer} \mbox{[}\hyperlink{_s_d_l__visualtest__harness__argparser_8h_a8485cbda108eca56406d67aaa685fcc5}{M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct for the variator that randomly generates variations of command line arguments to the S\-U\-T. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___random_variator_a2b599af5b00be0f525ffc18feb0775a8}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}!buffer@{buffer}} +\index{buffer@{buffer}!SDLVisualTest_RandomVariator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}} +\subsubsection[{buffer}]{\setlength{\rightskip}{0pt plus 5cm}char buffer\mbox{[}{\bf M\-A\-X\-\_\-\-S\-U\-T\-\_\-\-A\-R\-G\-S\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___random_variator_a2b599af5b00be0f525ffc18feb0775a8} +Buffer to store the arguments string built from the variation \hypertarget{struct_s_d_l_visual_test___random_variator_ab66b4220589b2e2b6e1fde7d6c20bd72}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}!config@{config}} +\index{config@{config}!SDLVisualTest_RandomVariator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}} +\subsubsection[{config}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} config}}\label{struct_s_d_l_visual_test___random_variator_ab66b4220589b2e2b6e1fde7d6c20bd72} +Configuration object for the S\-U\-T that the variator is running for. \hypertarget{struct_s_d_l_visual_test___random_variator_a11c2995cf19b41c4a1b1f8d9b4081ff7}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}!variation@{variation}} +\index{variation@{variation}!SDLVisualTest_RandomVariator@{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator}} +\subsubsection[{variation}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} variation}}\label{struct_s_d_l_visual_test___random_variator_a11c2995cf19b41c4a1b1f8d9b4081ff7} +The current variation. + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__random__variator_8h}{S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_config.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_config.tex new file mode 100755 index 0000000000..90177adb7d --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_config.tex @@ -0,0 +1,31 @@ +\hypertarget{struct_s_d_l_visual_test___s_u_t_config}{\section{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config Struct Reference} +\label{struct_s_d_l_visual_test___s_u_t_config}\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} $\ast$ \hyperlink{struct_s_d_l_visual_test___s_u_t_config_afda1bef370f3d5ea6919b7b6a73d01c0}{options} +\item +int \hyperlink{struct_s_d_l_visual_test___s_u_t_config_a593108c2cc4b7dd3edecefd724edfd51}{num\-\_\-options} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct to hold all the options to an S\-U\-T application. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___s_u_t_config_a593108c2cc4b7dd3edecefd724edfd51}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}!num\-\_\-options@{num\-\_\-options}} +\index{num\-\_\-options@{num\-\_\-options}!SDLVisualTest_SUTConfig@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}} +\subsubsection[{num\-\_\-options}]{\setlength{\rightskip}{0pt plus 5cm}int num\-\_\-options}}\label{struct_s_d_l_visual_test___s_u_t_config_a593108c2cc4b7dd3edecefd724edfd51} +Number of options in {\ttfamily options} \hypertarget{struct_s_d_l_visual_test___s_u_t_config_afda1bef370f3d5ea6919b7b6a73d01c0}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}!options@{options}} +\index{options@{options}!SDLVisualTest_SUTConfig@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config}} +\subsubsection[{options}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}$\ast$ options}}\label{struct_s_d_l_visual_test___s_u_t_config_afda1bef370f3d5ea6919b7b6a73d01c0} +Pointer to an array of options + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__sut__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_int_range.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_int_range.tex new file mode 100755 index 0000000000..28a49eb04f --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_int_range.tex @@ -0,0 +1,31 @@ +\hypertarget{struct_s_d_l_visual_test___s_u_t_int_range}{\section{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range Struct Reference} +\label{struct_s_d_l_visual_test___s_u_t_int_range}\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +int \hyperlink{struct_s_d_l_visual_test___s_u_t_int_range_a3e202b201e6255d975cd6d3aff1f5a4d}{min} +\item +int \hyperlink{struct_s_d_l_visual_test___s_u_t_int_range_ae1e1dde676c120fa6d10f3bb2c14059e}{max} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Represents the range of values an integer option can take. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___s_u_t_int_range_ae1e1dde676c120fa6d10f3bb2c14059e}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}!max@{max}} +\index{max@{max}!SDLVisualTest_SUTIntRange@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}} +\subsubsection[{max}]{\setlength{\rightskip}{0pt plus 5cm}int max}}\label{struct_s_d_l_visual_test___s_u_t_int_range_ae1e1dde676c120fa6d10f3bb2c14059e} +Maximum value of the integer option \hypertarget{struct_s_d_l_visual_test___s_u_t_int_range_a3e202b201e6255d975cd6d3aff1f5a4d}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}!min@{min}} +\index{min@{min}!SDLVisualTest_SUTIntRange@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range}} +\subsubsection[{min}]{\setlength{\rightskip}{0pt plus 5cm}int min}}\label{struct_s_d_l_visual_test___s_u_t_int_range_a3e202b201e6255d975cd6d3aff1f5a4d} +Minimum value of the integer option + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__sut__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_option.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_option.tex new file mode 100755 index 0000000000..a6ada4a22c --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___s_u_t_option.tex @@ -0,0 +1,62 @@ +\hypertarget{struct_s_d_l_visual_test___s_u_t_option}{\section{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option Struct Reference} +\label{struct_s_d_l_visual_test___s_u_t_option}\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +char \hyperlink{struct_s_d_l_visual_test___s_u_t_option_ad14ca616d8f7c9b61eff58baaead7f1f}{name} \mbox{[}\hyperlink{_s_d_l__visualtest__sut__configparser_8h_a0a8b0c1f8eee787abf09bf3a840eccc7}{M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N}\mbox{]} +\item +char $\ast$$\ast$ \hyperlink{struct_s_d_l_visual_test___s_u_t_option_a6744d43d3ad17d06068dba9ee7b78c83}{categories} +\item +\hyperlink{_s_d_l__visualtest__sut__configparser_8h_af9893831d9f79360f57e84a67a90293c}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type} \hyperlink{struct_s_d_l_visual_test___s_u_t_option_a857b9e5ccfca26034b47a5f3236d822c}{type} +\item +S\-D\-L\-\_\-bool \hyperlink{struct_s_d_l_visual_test___s_u_t_option_a79305c1b10f7b4defee52e1eefde8fbc}{required} +\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +union \{\\ +\>\hyperlink{struct_s_d_l_visual_test___s_u_t_int_range}{SDLVisualTest\_SUTIntRange} \hyperlink{struct_s_d_l_visual_test___s_u_t_option_a2bb1301268866e0e41d035ea0a4914e8}{range}\\ +\>char $\ast$$\ast$ \hyperlink{struct_s_d_l_visual_test___s_u_t_option_a596ff3567c4b736561dba1915a2cd38d}{enum\_values}\\ +\} \hyperlink{struct_s_d_l_visual_test___s_u_t_option_aa9545bd4acd476f61533d04d53cdffdc}{data}\\ + +\end{tabbing}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct that defines an option to be passed to the S\-U\-T. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___s_u_t_option_a6744d43d3ad17d06068dba9ee7b78c83}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!categories@{categories}} +\index{categories@{categories}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{categories}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ categories}}\label{struct_s_d_l_visual_test___s_u_t_option_a6744d43d3ad17d06068dba9ee7b78c83} +An array of categories that the option belongs to. The last element is N\-U\-L\-L. \hypertarget{struct_s_d_l_visual_test___s_u_t_option_aa9545bd4acd476f61533d04d53cdffdc}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!data@{data}} +\index{data@{data}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{data}]{\setlength{\rightskip}{0pt plus 5cm}union \{ ... \} data}}\label{struct_s_d_l_visual_test___s_u_t_option_aa9545bd4acd476f61533d04d53cdffdc} +extra data that is required for certain types \hypertarget{struct_s_d_l_visual_test___s_u_t_option_a596ff3567c4b736561dba1915a2cd38d}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!enum\-\_\-values@{enum\-\_\-values}} +\index{enum\-\_\-values@{enum\-\_\-values}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{enum\-\_\-values}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$$\ast$ enum\-\_\-values}}\label{struct_s_d_l_visual_test___s_u_t_option_a596ff3567c4b736561dba1915a2cd38d} +\begin{DoxyVerb}This field is valid only for enum type options; it holds the list of values +\end{DoxyVerb} + that the option can take. The last element is N\-U\-L\-L \hypertarget{struct_s_d_l_visual_test___s_u_t_option_ad14ca616d8f7c9b61eff58baaead7f1f}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!name@{name}} +\index{name@{name}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{name}]{\setlength{\rightskip}{0pt plus 5cm}char name\mbox{[}{\bf M\-A\-X\-\_\-\-S\-U\-T\-O\-P\-T\-I\-O\-N\-\_\-\-N\-A\-M\-E\-\_\-\-L\-E\-N}\mbox{]}}}\label{struct_s_d_l_visual_test___s_u_t_option_ad14ca616d8f7c9b61eff58baaead7f1f} +The name of the option. This is what you would pass in the command line along with two leading hyphens. \hypertarget{struct_s_d_l_visual_test___s_u_t_option_a2bb1301268866e0e41d035ea0a4914e8}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!range@{range}} +\index{range@{range}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{range}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Int\-Range} range}}\label{struct_s_d_l_visual_test___s_u_t_option_a2bb1301268866e0e41d035ea0a4914e8} +\begin{DoxyVerb}This field is valid only for integer type options; it defines the +\end{DoxyVerb} + valid range for such an option \hypertarget{struct_s_d_l_visual_test___s_u_t_option_a79305c1b10f7b4defee52e1eefde8fbc}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!required@{required}} +\index{required@{required}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{required}]{\setlength{\rightskip}{0pt plus 5cm}S\-D\-L\-\_\-bool required}}\label{struct_s_d_l_visual_test___s_u_t_option_a79305c1b10f7b4defee52e1eefde8fbc} +Whether the option is required or not \hypertarget{struct_s_d_l_visual_test___s_u_t_option_a857b9e5ccfca26034b47a5f3236d822c}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}!type@{type}} +\index{type@{type}!SDLVisualTest_SUTOption@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option}} +\subsubsection[{type}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Type} type}}\label{struct_s_d_l_visual_test___s_u_t_option_a857b9e5ccfca26034b47a5f3236d822c} +Type of the option -\/ integer, boolean, etc. + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__sut__configparser_8h}{S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___variation.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___variation.tex new file mode 100755 index 0000000000..846aa2c176 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___variation.tex @@ -0,0 +1,31 @@ +\hypertarget{struct_s_d_l_visual_test___variation}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Variation Struct Reference} +\label{struct_s_d_l_visual_test___variation}\index{S\-D\-L\-Visual\-Test\-\_\-\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{union_s_d_l_visual_test___s_u_t_option_value}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} $\ast$ \hyperlink{struct_s_d_l_visual_test___variation_a1eab2e90f0195b4f4632eb19523aeadf}{vars} +\item +int \hyperlink{struct_s_d_l_visual_test___variation_a2daded0b80f9ab7ed3703cc2686e5a92}{num\-\_\-vars} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Represents a valid combination of parameters that can be passed to the S\-U\-T. The ordering of the values here is the same as the ordering of the options in the \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} object for this variation. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___variation_a2daded0b80f9ab7ed3703cc2686e5a92}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}!num\-\_\-vars@{num\-\_\-vars}} +\index{num\-\_\-vars@{num\-\_\-vars}!SDLVisualTest_Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}} +\subsubsection[{num\-\_\-vars}]{\setlength{\rightskip}{0pt plus 5cm}int num\-\_\-vars}}\label{struct_s_d_l_visual_test___variation_a2daded0b80f9ab7ed3703cc2686e5a92} +Number of option values in {\ttfamily vars} \hypertarget{struct_s_d_l_visual_test___variation_a1eab2e90f0195b4f4632eb19523aeadf}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}!vars@{vars}} +\index{vars@{vars}!SDLVisualTest_Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Variation}} +\subsubsection[{vars}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}$\ast$ vars}}\label{struct_s_d_l_visual_test___variation_a1eab2e90f0195b4f4632eb19523aeadf} +Pointer to array of option values + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__variator__common_8h}{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/struct_s_d_l_visual_test___variator.tex b/visualtest/docs/latex/struct_s_d_l_visual_test___variator.tex new file mode 100755 index 0000000000..f834ddfca8 --- /dev/null +++ b/visualtest/docs/latex/struct_s_d_l_visual_test___variator.tex @@ -0,0 +1,37 @@ +\hypertarget{struct_s_d_l_visual_test___variator}{\section{S\-D\-L\-Visual\-Test\-\_\-\-Variator Struct Reference} +\label{struct_s_d_l_visual_test___variator}\index{S\-D\-L\-Visual\-Test\-\_\-\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-variators.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +\hyperlink{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} \hyperlink{struct_s_d_l_visual_test___variator_a24d4399dc1877c1843e120e7b027ae64}{type} +\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +union \{\\ +\>\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{SDLVisualTest\_ExhaustiveVariator} {\bfseries exhaustive}\\ +\>\hyperlink{struct_s_d_l_visual_test___random_variator}{SDLVisualTest\_RandomVariator} {\bfseries random}\\ +\} \hyperlink{struct_s_d_l_visual_test___variator_af99a8790e729d599c656a2070e672e9a}{data}\\ + +\end{tabbing}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Struct that acts like a wrapper around the different types of variators available. + +\subsection{Field Documentation} +\hypertarget{struct_s_d_l_visual_test___variator_af99a8790e729d599c656a2070e672e9a}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}!data@{data}} +\index{data@{data}!SDLVisualTest_Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}} +\subsubsection[{data}]{\setlength{\rightskip}{0pt plus 5cm}union \{ ... \} data}}\label{struct_s_d_l_visual_test___variator_af99a8790e729d599c656a2070e672e9a} +union object that stores the variator \hypertarget{struct_s_d_l_visual_test___variator_a24d4399dc1877c1843e120e7b027ae64}{\index{S\-D\-L\-Visual\-Test\-\_\-\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}!type@{type}} +\index{type@{type}!SDLVisualTest_Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Variator}} +\subsubsection[{type}]{\setlength{\rightskip}{0pt plus 5cm}{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} type}}\label{struct_s_d_l_visual_test___variator_a24d4399dc1877c1843e120e7b027ae64} +Type of the variator + +The documentation for this struct was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__variators_8h}{S\-D\-L\-\_\-visualtest\-\_\-variators.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/sut__configparser_8c.tex b/visualtest/docs/latex/sut__configparser_8c.tex new file mode 100755 index 0000000000..429fe70703 --- /dev/null +++ b/visualtest/docs/latex/sut__configparser_8c.tex @@ -0,0 +1,50 @@ +\hypertarget{sut__configparser_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/sut\-\_\-configparser.c File Reference} +\label{sut__configparser_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/sut\-\_\-configparser.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/sut\-\_\-configparser.\-c}} +} +{\ttfamily \#include $<$limits.\-h$>$}\\* +{\ttfamily \#include $<$string.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-rwops.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-parsehelper.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-rwhelper.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{sut__configparser_8c_a8e178cd8a1f279f5d2cf908545e97544}{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config} (char $\ast$file, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\item +void \hyperlink{sut__configparser_8c_a1bddf9732c0d3ed1c24455d22193de9a}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config} (\hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the parser for S\-U\-T config files. + +\subsection{Function Documentation} +\hypertarget{sut__configparser_8c_a1bddf9732c0d3ed1c24455d22193de9a}{\index{sut\-\_\-configparser.\-c@{sut\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config}!sut_configparser.c@{sut\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-S\-U\-T\-Config ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{sut__configparser_8c_a1bddf9732c0d3ed1c24455d22193de9a} +Free any resources associated with the config object pointed to by {\ttfamily config}. \hypertarget{sut__configparser_8c_a8e178cd8a1f279f5d2cf908545e97544}{\index{sut\-\_\-configparser.\-c@{sut\-\_\-configparser.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config@{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config}!sut_configparser.c@{sut\-\_\-configparser.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Parse\-S\-U\-T\-Config ( +\begin{DoxyParamCaption} +\item[{char $\ast$}]{file, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{sut__configparser_8c_a8e178cd8a1f279f5d2cf908545e97544} +Parses a configuration file that describes the command line options an S\-U\-T application will take and populates a S\-U\-T config object. All lines in the config file must be smaller than + + +\begin{DoxyParams}{Parameters} +{\em file} & Path to the configuration file. \\ +\hline +{\em config} & Pointer to an object that represents an S\-U\-T configuration.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +zero on failure, non-\/zero on success +\end{DoxyReturn} diff --git a/visualtest/docs/latex/testharness_8c.tex b/visualtest/docs/latex/testharness_8c.tex new file mode 100755 index 0000000000..b3b7bb103b --- /dev/null +++ b/visualtest/docs/latex/testharness_8c.tex @@ -0,0 +1,68 @@ +\hypertarget{testharness_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/testharness.c File Reference} +\label{testharness_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/testharness.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/testharness.\-c}} +} +{\ttfamily \#include $<$stdlib.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-assert.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-harness\-\_\-argparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-process.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-variators.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-screenshot.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-mischelper.\-h\char`\"{}}\\* +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \hyperlink{testharness_8c_a0d1d5d1394089a10f0147ed2b89c1165}{A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}~0 +\item +\#define \hyperlink{testharness_8c_acdc6cb4935ca89fbe3fda31a8f533b9a}{K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}~1 +\item +\#define \hyperlink{testharness_8c_a70102426e83ed3944f9c060bd82fb54e}{A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S}~10 +\item +\#define \hyperlink{testharness_8c_a562e15dd66cf158c98dbfec9f6afa1ae}{T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D}~1 +\item +\#define \hyperlink{testharness_8c_a8b8b91205df891e2c7837bd03795306f}{T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D}~0 +\item +\#define \hyperlink{testharness_8c_a8251bcdfc5c83845e0834adf211de033}{T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R}~-\/1 +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{testharness_8c_a0ddf1224851353fc92bfbff6f499fa97}{main} (int argc, char $\ast$argv\mbox{[}$\,$\mbox{]}) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the test harness. + +\subsection{Macro Definition Documentation} +\hypertarget{testharness_8c_a70102426e83ed3944f9c060bd82fb54e}{\index{testharness.\-c@{testharness.\-c}!A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S@{A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S}} +\index{A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S@{A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S}!testharness.c@{testharness.\-c}} +\subsubsection[{A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S}]{\setlength{\rightskip}{0pt plus 5cm}\#define A\-C\-T\-I\-O\-N\-\_\-\-L\-O\-O\-P\-\_\-\-F\-P\-S~10}}\label{testharness_8c_a70102426e83ed3944f9c060bd82fb54e} +F\-P\-S value used for delays in the action loop \hypertarget{testharness_8c_a0d1d5d1394089a10f0147ed2b89c1165}{\index{testharness.\-c@{testharness.\-c}!A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T@{A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}} +\index{A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T@{A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}!testharness.c@{testharness.\-c}} +\subsubsection[{A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define A\-C\-T\-I\-O\-N\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T~0}}\label{testharness_8c_a0d1d5d1394089a10f0147ed2b89c1165} +Code for the user event triggered when a new action is to be executed \hypertarget{testharness_8c_acdc6cb4935ca89fbe3fda31a8f533b9a}{\index{testharness.\-c@{testharness.\-c}!K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T@{K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}} +\index{K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T@{K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}!testharness.c@{testharness.\-c}} +\subsubsection[{K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\-I\-L\-L\-\_\-\-T\-I\-M\-E\-R\-\_\-\-E\-V\-E\-N\-T~1}}\label{testharness_8c_acdc6cb4935ca89fbe3fda31a8f533b9a} +Code for the user event triggered when the maximum timeout is reached \hypertarget{testharness_8c_a8251bcdfc5c83845e0834adf211de033}{\index{testharness.\-c@{testharness.\-c}!T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R@{T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R}} +\index{T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R@{T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R}!testharness.c@{testharness.\-c}} +\subsubsection[{T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R}]{\setlength{\rightskip}{0pt plus 5cm}\#define T\-E\-S\-T\-\_\-\-E\-R\-R\-O\-R~-\/1}}\label{testharness_8c_a8251bcdfc5c83845e0834adf211de033} +Value returned by Run\-S\-U\-T\-And\-Test() on a fatal error \hypertarget{testharness_8c_a8b8b91205df891e2c7837bd03795306f}{\index{testharness.\-c@{testharness.\-c}!T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D@{T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D}} +\index{T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D@{T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D}!testharness.c@{testharness.\-c}} +\subsubsection[{T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D}]{\setlength{\rightskip}{0pt plus 5cm}\#define T\-E\-S\-T\-\_\-\-F\-A\-I\-L\-E\-D~0}}\label{testharness_8c_a8b8b91205df891e2c7837bd03795306f} +Value returned by Run\-S\-U\-T\-And\-Test() when the test has failed \hypertarget{testharness_8c_a562e15dd66cf158c98dbfec9f6afa1ae}{\index{testharness.\-c@{testharness.\-c}!T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D@{T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D}} +\index{T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D@{T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D}!testharness.c@{testharness.\-c}} +\subsubsection[{T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D}]{\setlength{\rightskip}{0pt plus 5cm}\#define T\-E\-S\-T\-\_\-\-P\-A\-S\-S\-E\-D~1}}\label{testharness_8c_a562e15dd66cf158c98dbfec9f6afa1ae} +Value returned by Run\-S\-U\-T\-And\-Test() when the test has passed + +\subsection{Function Documentation} +\hypertarget{testharness_8c_a0ddf1224851353fc92bfbff6f499fa97}{\index{testharness.\-c@{testharness.\-c}!main@{main}} +\index{main@{main}!testharness.c@{testharness.\-c}} +\subsubsection[{main}]{\setlength{\rightskip}{0pt plus 5cm}int main ( +\begin{DoxyParamCaption} +\item[{int}]{argc, } +\item[{char $\ast$}]{argv\mbox{[}$\,$\mbox{]}} +\end{DoxyParamCaption} +)}}\label{testharness_8c_a0ddf1224851353fc92bfbff6f499fa97} +Entry point for testharness \ No newline at end of file diff --git a/visualtest/docs/latex/union_s_d_l_visual_test___s_u_t_option_value.tex b/visualtest/docs/latex/union_s_d_l_visual_test___s_u_t_option_value.tex new file mode 100755 index 0000000000..5c2a05e4db --- /dev/null +++ b/visualtest/docs/latex/union_s_d_l_visual_test___s_u_t_option_value.tex @@ -0,0 +1,59 @@ +\hypertarget{union_s_d_l_visual_test___s_u_t_option_value}{\section{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value Union Reference} +\label{union_s_d_l_visual_test___s_u_t_option_value}\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}} +} + + +{\ttfamily \#include $<$S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h$>$} + +\subsection*{Data Fields} +\begin{DoxyCompactItemize} +\item +S\-D\-L\-\_\-bool \hyperlink{union_s_d_l_visual_test___s_u_t_option_value_ace8ec6519c056e35443a6c401f3d0941}{bool\-\_\-value} +\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +struct \{\\ +\>int {\bfseries value}\\ +\>SDL\_bool {\bfseries on}\\ +\} \hyperlink{union_s_d_l_visual_test___s_u_t_option_value_a4291d9ad3cfb3fe1645ea2732e11d68a}{integer}\\ + +\end{tabbing}\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +struct \{\\ +\>int {\bfseries index}\\ +\>SDL\_bool {\bfseries on}\\ +\} \hyperlink{union_s_d_l_visual_test___s_u_t_option_value_ad40e26afd4b8532327b61897d5b009e3}{enumerated}\\ + +\end{tabbing}\item +\begin{tabbing} +xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill +struct \{\\ +\>char $\ast$ {\bfseries value}\\ +\>SDL\_bool {\bfseries on}\\ +\} \hyperlink{union_s_d_l_visual_test___s_u_t_option_value_a2bf4b969ff9633c937e4d15118d1edc6}{string}\\ + +\end{tabbing}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +One possible value for a command line option to the S\-U\-T. + +\subsection{Field Documentation} +\hypertarget{union_s_d_l_visual_test___s_u_t_option_value_ace8ec6519c056e35443a6c401f3d0941}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}!bool\-\_\-value@{bool\-\_\-value}} +\index{bool\-\_\-value@{bool\-\_\-value}!SDLVisualTest_SUTOptionValue@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}} +\subsubsection[{bool\-\_\-value}]{\setlength{\rightskip}{0pt plus 5cm}S\-D\-L\-\_\-bool bool\-\_\-value}}\label{union_s_d_l_visual_test___s_u_t_option_value_ace8ec6519c056e35443a6c401f3d0941} +Value if the option is of type boolean \hypertarget{union_s_d_l_visual_test___s_u_t_option_value_ad40e26afd4b8532327b61897d5b009e3}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}!enumerated@{enumerated}} +\index{enumerated@{enumerated}!SDLVisualTest_SUTOptionValue@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}} +\subsubsection[{enumerated}]{\setlength{\rightskip}{0pt plus 5cm}struct \{ ... \} enumerated}}\label{union_s_d_l_visual_test___s_u_t_option_value_ad40e26afd4b8532327b61897d5b009e3} +Index of the string in the enum\-\_\-values field of the corresponding \hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} object. If on is true the option will passed to the S\-U\-T, otherwise it will be ignored. \hypertarget{union_s_d_l_visual_test___s_u_t_option_value_a4291d9ad3cfb3fe1645ea2732e11d68a}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}!integer@{integer}} +\index{integer@{integer}!SDLVisualTest_SUTOptionValue@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}} +\subsubsection[{integer}]{\setlength{\rightskip}{0pt plus 5cm}struct \{ ... \} integer}}\label{union_s_d_l_visual_test___s_u_t_option_value_a4291d9ad3cfb3fe1645ea2732e11d68a} +Value if the option is of type integer. If on is true then the option will be passed to the S\-U\-T, otherwise it will be ignored. \hypertarget{union_s_d_l_visual_test___s_u_t_option_value_a2bf4b969ff9633c937e4d15118d1edc6}{\index{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}!string@{string}} +\index{string@{string}!SDLVisualTest_SUTOptionValue@{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value}} +\subsubsection[{string}]{\setlength{\rightskip}{0pt plus 5cm}struct \{ ... \} string}}\label{union_s_d_l_visual_test___s_u_t_option_value_a2bf4b969ff9633c937e4d15118d1edc6} +Value if the option is of type string. If on is true the option will be passed to the S\-U\-T, otherwise it will be ignored. + +The documentation for this union was generated from the following file\-:\begin{DoxyCompactItemize} +\item +C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/include/\hyperlink{_s_d_l__visualtest__variator__common_8h}{S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h}\end{DoxyCompactItemize} diff --git a/visualtest/docs/latex/variator__common_8c.tex b/visualtest/docs/latex/variator__common_8c.tex new file mode 100755 index 0000000000..a88bc08e9f --- /dev/null +++ b/visualtest/docs/latex/variator__common_8c.tex @@ -0,0 +1,85 @@ +\hypertarget{variator__common_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-common.c File Reference} +\label{variator__common_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-common.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-common.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-variator\-\_\-common.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{variator__common_8c_aafcecc06c8feb24b6f6a509bfa9db681}{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value} (\hyperlink{union_s_d_l_visual_test___s_u_t_option_value}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} $\ast$var, \hyperlink{struct_s_d_l_visual_test___s_u_t_option}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} $\ast$opt) +\item +int \hyperlink{variator__common_8c_ad981c2efab849e76dc878ef8da9d6017}{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation} (\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$variation, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config, char $\ast$buffer, int size) +\item +int \hyperlink{variator__common_8c_ac87934906c51364778dc910ebca47b6c}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation} (\hyperlink{struct_s_d_l_visual_test___variation}{S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$variation, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for some common functionality used by variators. + +\subsection{Function Documentation} +\hypertarget{variator__common_8c_ac87934906c51364778dc910ebca47b6c}{\index{variator\-\_\-common.\-c@{variator\-\_\-common.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation}!variator_common.c@{variator\-\_\-common.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$}]{variation, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{variator__common_8c_ac87934906c51364778dc910ebca47b6c} +Initializes the variation using the following rules\-: +\begin{DoxyItemize} +\item Boolean options are initialized to S\-D\-L\-\_\-\-F\-A\-L\-S\-E. +\item Integer options are initialized to the minimum valid value they can hold. +\item Enum options are initialized to the first element in the list of values they can take. +\item String options are initialized to the name of the option. +\end{DoxyItemize} + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure. +\end{DoxyReturn} +\hypertarget{variator__common_8c_ad981c2efab849e76dc878ef8da9d6017}{\index{variator\-\_\-common.\-c@{variator\-\_\-common.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation}!variator_common.c@{variator\-\_\-common.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Make\-Str\-From\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variation} $\ast$}]{variation, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config, } +\item[{char $\ast$}]{buffer, } +\item[{int}]{size} +\end{DoxyParamCaption} +)}}\label{variator__common_8c_ad981c2efab849e76dc878ef8da9d6017} +Converts a variation object into a string of command line arguments. + + +\begin{DoxyParams}{Parameters} +{\em variation} & Variation object to be converted. \\ +\hline +{\em config} & Config object for the S\-U\-T. \\ +\hline +{\em buffer} & Pointer to the buffer the arguments string will be copied into. \\ +\hline +{\em size} & Size of the buffer.\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} +\hypertarget{variator__common_8c_aafcecc06c8feb24b6f6a509bfa9db681}{\index{variator\-\_\-common.\-c@{variator\-\_\-common.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value@{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value}!variator_common.c@{variator\-\_\-common.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Next\-Value ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option\-Value} $\ast$}]{var, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Option} $\ast$}]{opt} +\end{DoxyParamCaption} +)}}\label{variator__common_8c_aafcecc06c8feb24b6f6a509bfa9db681} +\char`\"{}\-Increments\char`\"{} the value of the option by one and returns the carry. We wrap around to the initial value on overflow which makes the carry one. For example\-: \char`\"{}incrementing\char`\"{} an S\-D\-L\-\_\-\-F\-A\-L\-S\-E option makes it S\-D\-L\-\_\-\-T\-R\-U\-E with no carry, and \char`\"{}incrementing\char`\"{} an S\-D\-L\-\_\-\-T\-R\-U\-E option makes it S\-D\-L\-\_\-\-F\-A\-L\-S\-E with carry one. For integers, a random value in the valid range for the option is used. + + +\begin{DoxyParams}{Parameters} +{\em var} & Value of the option \\ +\hline +{\em opt} & Object with metadata about the option\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +1 if there is a carry for enum and bool type options, 0 otherwise. 1 is always returned for integer and string type options. -\/1 is returned on error. +\end{DoxyReturn} diff --git a/visualtest/docs/latex/variator__exhaustive_8c.tex b/visualtest/docs/latex/variator__exhaustive_8c.tex new file mode 100755 index 0000000000..104baf3b51 --- /dev/null +++ b/visualtest/docs/latex/variator__exhaustive_8c.tex @@ -0,0 +1,54 @@ +\hypertarget{variator__exhaustive_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-exhaustive.c File Reference} +\label{variator__exhaustive_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-exhaustive.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-exhaustive.\-c}} +} +{\ttfamily \#include $<$time.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-sut\-\_\-configparser.\-h\char`\"{}}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-exhaustive\-\_\-variator.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{variator__exhaustive_8c_a9e213e530ddf5a18014786d10e9fdaee}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator} (\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$variator, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config) +\item +char $\ast$ \hyperlink{variator__exhaustive_8c_aa9e13a92945ef48308215b3fa068ed29}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation} (\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$variator) +\item +void \hyperlink{variator__exhaustive_8c_a7168b055fb86bbbb700d87ae842f7152}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator} (\hyperlink{struct_s_d_l_visual_test___exhaustive_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$variator) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the variator that tests the S\-U\-T with all the different variations of input parameters that are valid. + +\subsection{Function Documentation} +\hypertarget{variator__exhaustive_8c_a7168b055fb86bbbb700d87ae842f7152}{\index{variator\-\_\-exhaustive.\-c@{variator\-\_\-exhaustive.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator}!variator_exhaustive.c@{variator\-\_\-exhaustive.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Exhaustive\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{variator__exhaustive_8c_a7168b055fb86bbbb700d87ae842f7152} +Frees any resources associated with the variator. \hypertarget{variator__exhaustive_8c_aa9e13a92945ef48308215b3fa068ed29}{\index{variator\-\_\-exhaustive.\-c@{variator\-\_\-exhaustive.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation}!variator_exhaustive.c@{variator\-\_\-exhaustive.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Exhaustive\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{variator__exhaustive_8c_aa9e13a92945ef48308215b3fa068ed29} +Gets the arguments string for the next variation using the variator and updates the variator's current variation object to the next variation. + +\begin{DoxyReturn}{Returns} +The arguments string representing the next variation on success, and N\-U\-L\-L on failure or if we have iterated through all possible variations. In the latter case subsequent calls will start the variations again from the very beginning. The pointer returned should not be freed. +\end{DoxyReturn} +\hypertarget{variator__exhaustive_8c_a9e213e530ddf5a18014786d10e9fdaee}{\index{variator\-\_\-exhaustive.\-c@{variator\-\_\-exhaustive.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator}!variator_exhaustive.c@{variator\-\_\-exhaustive.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Exhaustive\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Exhaustive\-Variator} $\ast$}]{variator, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config} +\end{DoxyParamCaption} +)}}\label{variator__exhaustive_8c_a9e213e530ddf5a18014786d10e9fdaee} +Initializes the variator. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} diff --git a/visualtest/docs/latex/variator__random_8c.tex b/visualtest/docs/latex/variator__random_8c.tex new file mode 100755 index 0000000000..d8109cdb21 --- /dev/null +++ b/visualtest/docs/latex/variator__random_8c.tex @@ -0,0 +1,54 @@ +\hypertarget{variator__random_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-random.c File Reference} +\label{variator__random_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-random.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variator\-\_\-random.\-c}} +} +{\ttfamily \#include $<$time.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-random\-\_\-variator.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{variator__random_8c_a807486069b7180c3b3bf8af4616d055f}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator} (\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$variator, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config, Uint64 seed) +\item +char $\ast$ \hyperlink{variator__random_8c_a479aceb74b5355c1d22856fc7efce890}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation} (\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$variator) +\item +void \hyperlink{variator__random_8c_ac95d9e0716e4c918c6902b10f9591d4b}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator} (\hyperlink{struct_s_d_l_visual_test___random_variator}{S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$variator) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the variator that tests the S\-U\-T with random variations to the input parameters. + +\subsection{Function Documentation} +\hypertarget{variator__random_8c_ac95d9e0716e4c918c6902b10f9591d4b}{\index{variator\-\_\-random.\-c@{variator\-\_\-random.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator}!variator_random.c@{variator\-\_\-random.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Random\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{variator__random_8c_ac95d9e0716e4c918c6902b10f9591d4b} +Frees any resources associated with the variator. \hypertarget{variator__random_8c_a479aceb74b5355c1d22856fc7efce890}{\index{variator\-\_\-random.\-c@{variator\-\_\-random.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation}!variator_random.c@{variator\-\_\-random.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Random\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{variator__random_8c_a479aceb74b5355c1d22856fc7efce890} +Generates a new random variation. + +\begin{DoxyReturn}{Returns} +The arguments string representing the random variation on success, and N\-U\-L\-L on failure. The pointer returned should not be freed. +\end{DoxyReturn} +\hypertarget{variator__random_8c_a807486069b7180c3b3bf8af4616d055f}{\index{variator\-\_\-random.\-c@{variator\-\_\-random.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator}!variator_random.c@{variator\-\_\-random.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Random\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Random\-Variator} $\ast$}]{variator, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config, } +\item[{Uint64}]{seed} +\end{DoxyParamCaption} +)}}\label{variator__random_8c_a807486069b7180c3b3bf8af4616d055f} +Initializes the variator. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} diff --git a/visualtest/docs/latex/variators_8c.tex b/visualtest/docs/latex/variators_8c.tex new file mode 100755 index 0000000000..a2bef60d42 --- /dev/null +++ b/visualtest/docs/latex/variators_8c.tex @@ -0,0 +1,54 @@ +\hypertarget{variators_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variators.c File Reference} +\label{variators_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variators.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/variators.\-c}} +} +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-variators.\-h\char`\"{}}\\* +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \hyperlink{variators_8c_ac1d82ee387a19743e47a82c87d3fb7f4}{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator} (\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$variator, \hyperlink{struct_s_d_l_visual_test___s_u_t_config}{S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$config, \hyperlink{_s_d_l__visualtest__variator__common_8h_a04bfc880abe6940d69a63c06a33acdbd}{S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type} type, Uint64 seed) +\item +char $\ast$ \hyperlink{variators_8c_aebdd4c3c545b0063d16929fd56f1a79f}{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation} (\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$variator) +\item +void \hyperlink{variators_8c_a98727ef649135c3312056d7603cb70b5}{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator} (\hyperlink{struct_s_d_l_visual_test___variator}{S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$variator) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Source file for the operations that act on variators. + +\subsection{Function Documentation} +\hypertarget{variators_8c_a98727ef649135c3312056d7603cb70b5}{\index{variators.\-c@{variators.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator}!variators.c@{variators.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}void S\-D\-L\-Visual\-Test\-\_\-\-Free\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{variators_8c_a98727ef649135c3312056d7603cb70b5} +Frees any resources associated with the variator. \hypertarget{variators_8c_aebdd4c3c545b0063d16929fd56f1a79f}{\index{variators.\-c@{variators.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation@{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation}!variators.c@{variators.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation}]{\setlength{\rightskip}{0pt plus 5cm}char$\ast$ S\-D\-L\-Visual\-Test\-\_\-\-Get\-Next\-Variation ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$}]{variator} +\end{DoxyParamCaption} +)}}\label{variators_8c_aebdd4c3c545b0063d16929fd56f1a79f} +Gets the next variation using the variator. + +\begin{DoxyReturn}{Returns} +The arguments string representing the variation on success, and N\-U\-L\-L on failure. The pointer returned should not be freed. +\end{DoxyReturn} +\hypertarget{variators_8c_ac1d82ee387a19743e47a82c87d3fb7f4}{\index{variators.\-c@{variators.\-c}!S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator}} +\index{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator@{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator}!variators.c@{variators.\-c}} +\subsubsection[{S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator}]{\setlength{\rightskip}{0pt plus 5cm}int S\-D\-L\-Visual\-Test\-\_\-\-Init\-Variator ( +\begin{DoxyParamCaption} +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator} $\ast$}]{variator, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-S\-U\-T\-Config} $\ast$}]{config, } +\item[{{\bf S\-D\-L\-Visual\-Test\-\_\-\-Variator\-Type}}]{type, } +\item[{Uint64}]{seed} +\end{DoxyParamCaption} +)}}\label{variators_8c_ac1d82ee387a19743e47a82c87d3fb7f4} +Initializes the variator object pointed to by {\ttfamily variator} of type {\ttfamily type} with information from the config object pointed to by {\ttfamily config}. + +\begin{DoxyReturn}{Returns} +1 on success, 0 on failure +\end{DoxyReturn} diff --git a/visualtest/docs/latex/windows__process_8c.tex b/visualtest/docs/latex/windows__process_8c.tex new file mode 100755 index 0000000000..f042295485 --- /dev/null +++ b/visualtest/docs/latex/windows__process_8c.tex @@ -0,0 +1,12 @@ +\hypertarget{windows__process_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/windows\-\_\-process.c File Reference} +\label{windows__process_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/windows\-\_\-process.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/windows\-\_\-process.\-c}} +} +{\ttfamily \#include $<$S\-D\-L.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* +{\ttfamily \#include $<$string.\-h$>$}\\* +{\ttfamily \#include $<$stdlib.\-h$>$}\\* +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-process.\-h\char`\"{}}\\* + + +\subsection{Detailed Description} +Source file for the process A\-P\-I on windows. \ No newline at end of file diff --git a/visualtest/docs/latex/windows__screenshot_8c.tex b/visualtest/docs/latex/windows__screenshot_8c.tex new file mode 100755 index 0000000000..b84a39ed1b --- /dev/null +++ b/visualtest/docs/latex/windows__screenshot_8c.tex @@ -0,0 +1,10 @@ +\hypertarget{windows__screenshot_8c}{\section{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/windows\-\_\-screenshot.c File Reference} +\label{windows__screenshot_8c}\index{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/windows\-\_\-screenshot.\-c@{C\-:/\-Users/\-D\-E\-L\-L/\-Work/sdlvisualtest/visualtest/src/windows/windows\-\_\-screenshot.\-c}} +} +{\ttfamily \#include \char`\"{}S\-D\-L\-\_\-visualtest\-\_\-process.\-h\char`\"{}}\\* +{\ttfamily \#include $<$S\-D\-L.\-h$>$}\\* +{\ttfamily \#include $<$S\-D\-L\-\_\-test.\-h$>$}\\* + + +\subsection{Detailed Description} +Source file for the screenshot A\-P\-I on windows. \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_action_configparser.h b/visualtest/include/SDL_visualtest_action_configparser.h new file mode 100755 index 0000000000..856f819681 --- /dev/null +++ b/visualtest/include/SDL_visualtest_action_configparser.h @@ -0,0 +1,147 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_action_configparser.h + * + * Header file for the parser for action config files. + */ + +#ifndef _SDL_visualtest_action_configparser_h +#define _SDL_visualtest_action_configparser_h + +/** The maximum length of one line in the actions file */ +#define MAX_ACTION_LINE_LENGTH 300 + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Type of the action. + */ +typedef enum +{ + /*! Launch an application with some given arguments */ + SDL_ACTION_LAUNCH = 0, + /*! Kill the SUT process */ + SDL_ACTION_KILL, + /*! Quit (Gracefully exit) the SUT process */ + SDL_ACTION_QUIT, + /*! Take a screenshot of the SUT window */ + SDL_ACTION_SCREENSHOT, + /*! Verify a previously taken screenshot */ + SDL_ACTION_VERIFY +} SDLVisualTest_ActionType; + +/** + * Struct that defines an action that will be performed on the SUT process at + * a specific time. + */ +typedef struct SDLVisualTest_Action +{ + /*! The type of action to be performed */ + SDLVisualTest_ActionType type; + /*! The time, in milliseconds from the launch of the SUT, when the action + will be performed */ + int time; + /*! Any additional information needed to perform the action. */ + union + { + /*! The path and arguments to the process to be launched */ + struct + { + char* path; + char* args; + } process; + } extra; +} SDLVisualTest_Action; + +/** + * Struct for a node in the action queue. + */ +typedef struct SDLVisualTest_ActionNode +{ + /*! The action in this node */ + SDLVisualTest_Action action; + /*! Pointer to the next element in the queue */ + struct SDLVisualTest_ActionNode* next; +} SDLVisualTest_ActionNode; + +/** + * Queue structure for actions loaded from the actions config file. + */ +typedef struct SDLVisualTest_ActionQueue +{ + /*! Pointer to the front of the queue */ + SDLVisualTest_ActionNode* front; + /*! Pointer to the rear of the queue */ + SDLVisualTest_ActionNode* rear; + /*! Number of nodes in the queue */ + int size; +} SDLVisualTest_ActionQueue; + +/** + * Add an action pointed to by \c action to the rear of the action queue pointed + * to by \c queue. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue* queue, + SDLVisualTest_Action action); + +/** + * Remove an action from the front of the action queue pointed to by \c queue. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue* queue); + +/** + * Initialize the action queue pointed to by \c queue. + */ +void SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue* queue); + +/** + * Get the action at the front of the action queue pointed to by \c queue. + * The returned action pointer may become invalid after subsequent dequeues. + * + * \return pointer to the action on success, NULL on failure. + */ +SDLVisualTest_Action* SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue* queue); + +/** + * Check if the queue pointed to by \c queue is empty or not. + * + * \return 1 if the queue is empty, 0 otherwise. + */ +int SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue* queue); + +/** + * Dequeues all the elements in the queque pointed to by \c queue. + */ +void SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue* queue); + +/** + * Inserts an action \c action into the queue pointed to by \c queue such that + * the times of actions in the queue increase as we move from the front to the + * rear. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue* queue, + SDLVisualTest_Action action); + +/** + * Parses an action config file with path \c file and populates an action queue + * pointed to by \c queue with actions. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_ParseActionConfig(char* file, SDLVisualTest_ActionQueue* queue); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_action_configparser_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_exhaustive_variator.h b/visualtest/include/SDL_visualtest_exhaustive_variator.h new file mode 100755 index 0000000000..f8f7bc3328 --- /dev/null +++ b/visualtest/include/SDL_visualtest_exhaustive_variator.h @@ -0,0 +1,62 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_exhaustive_variator.h + * + * Header for the exhaustive variator. + */ + +#include "SDL_visualtest_harness_argparser.h" +#include "SDL_visualtest_variator_common.h" + +#ifndef _SDL_visualtest_exhaustive_variator_h +#define _SDL_visualtest_exhaustive_variator_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Struct for the variator that exhaustively iterates through all variations of + * command line arguments to the SUT. + */ +typedef struct SDLVisualTest_ExhaustiveVariator +{ + /*! The current variation. */ + SDLVisualTest_Variation variation; + /*! Configuration object for the SUT that the variator is running for. */ + SDLVisualTest_SUTConfig config; + /*! Buffer to store the arguments string built from the variation */ + char buffer[MAX_SUT_ARGS_LEN]; +} SDLVisualTest_ExhaustiveVariator; + +/** + * Initializes the variator. + * + * \return 1 on success, 0 on failure + */ +int SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator* variator, + SDLVisualTest_SUTConfig* config); + +/** + * Gets the arguments string for the next variation using the variator and updates + * the variator's current variation object to the next variation. + * + * \return The arguments string representing the next variation on success, and + * NULL on failure or if we have iterated through all possible variations. + * In the latter case subsequent calls will start the variations again from + * the very beginning. The pointer returned should not be freed. + */ +char* SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator* variator); + +/** + * Frees any resources associated with the variator. + */ +void SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator* variator); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_exhaustive_variator_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_harness_argparser.h b/visualtest/include/SDL_visualtest_harness_argparser.h new file mode 100755 index 0000000000..b5fac7eb38 --- /dev/null +++ b/visualtest/include/SDL_visualtest_harness_argparser.h @@ -0,0 +1,73 @@ +/** + * \file SDL_visualtest_harness_argparser.h + * + * Provides functionality to parse command line arguments to the test harness. + */ + +#include +#include "SDL_visualtest_sut_configparser.h" +#include "SDL_visualtest_variator_common.h" +#include "SDL_visualtest_action_configparser.h" + +#ifndef _SDL_visualtest_harness_argparser_h +#define _SDL_visualtest_harness_argparser_h + +/** Maximum length of a path string */ +#define MAX_PATH_LEN 300 +/** Maximum length of a string of SUT arguments */ +#define MAX_SUT_ARGS_LEN 600 + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Stores the state of the test harness. + */ +typedef struct SDLVisualTest_HarnessState +{ + /*! Path to the System Under Test (SUT) executable */ + char sutapp[MAX_PATH_LEN]; + /*! Command line arguments to be passed to the SUT */ + char sutargs[MAX_SUT_ARGS_LEN]; + /*! Time in milliseconds after which to kill the SUT */ + int timeout; + /*! Configuration object for the SUT */ + SDLVisualTest_SUTConfig sut_config; + /*! What type of variator to use to generate argument strings */ + SDLVisualTest_VariatorType variator_type; + /*! The number of variations to generate */ + int num_variations; + /*! If true, the test harness will just print the different variations + without launching the SUT for each one */ + SDL_bool no_launch; + /*! A queue with actions to be performed while the SUT is running */ + SDLVisualTest_ActionQueue action_queue; + /*! Output directory to save the screenshots */ + char output_dir[MAX_PATH_LEN]; + /*! Path to directory with the verification images */ + char verify_dir[MAX_PATH_LEN]; +} SDLVisualTest_HarnessState; + +/** + * Parse command line paramters to the test harness and populate a state object. + * + * \param argv The array of command line parameters. + * \param state Pointer to the state object to be populated. + * + * \return Non-zero on success, zero on failure. + */ +int SDLVisualTest_ParseHarnessArgs(char** argv, SDLVisualTest_HarnessState* state); + +/** + * Frees any resources associated with the state object pointed to by \c state. + */ +void SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState* state); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_harness_argparser_h */ diff --git a/visualtest/include/SDL_visualtest_mischelper.h b/visualtest/include/SDL_visualtest_mischelper.h new file mode 100755 index 0000000000..34323896e9 --- /dev/null +++ b/visualtest/include/SDL_visualtest_mischelper.h @@ -0,0 +1,26 @@ +/** + * \file mischelper.c + * + * Header with miscellaneous helper functions. + */ + +#ifndef _SDL_visualtest_mischelper_h +#define _SDL_visualtest_mischelper_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Stores a 32 digit hexadecimal string representing the MD5 hash of the + * string \c str in \c hash. + */ +void SDLVisualTest_HashString(char* str, char hash[33]); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_mischelper_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_parsehelper.h b/visualtest/include/SDL_visualtest_parsehelper.h new file mode 100755 index 0000000000..f0f654c891 --- /dev/null +++ b/visualtest/include/SDL_visualtest_parsehelper.h @@ -0,0 +1,44 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_parsehelper.h + * + * Header with some helper functions for parsing strings. + */ + +#ifndef _SDL_visualtest_parsehelper_h +#define _SDL_visualtest_parsehelper_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Takes an string of command line arguments and breaks them up into an array + * based on whitespace. + * + * \param args The string of arguments. + * + * \return NULL on failure, an array of strings on success. The last element + * of the array is NULL. The first element of the array is NULL and should + * be set to the path of the executable by the caller. + */ +char** SDLVisualTest_ParseArgsToArgv(char* args); + +/** + * Takes a string and breaks it into tokens by splitting on whitespace. + * + * \param str The string to be split. + * \param max_token_len Length of each element in the array to be returned. + * + * \return NULL on failure; an array of strings with the tokens on success. The + * last element of the array is NULL. + */ +char** SDLVisualTest_Tokenize(char* str, int max_token_len); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_parsehelper_h */ diff --git a/visualtest/include/SDL_visualtest_process.h b/visualtest/include/SDL_visualtest_process.h new file mode 100755 index 0000000000..ea65cbab3a --- /dev/null +++ b/visualtest/include/SDL_visualtest_process.h @@ -0,0 +1,111 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_process.h + * + * Provides cross-platfrom process launching and termination functionality. + */ + +#include + +#if defined(__WIN32__) +#include +#include +#elif defined(__LINUX__) +#include +#else +#error "Unsupported platform." +#endif + +#ifndef _SDL_visualtest_process_h +#define _SDL_visualtest_process_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Struct to store a platform specific handle to a process. + */ +typedef struct SDL_ProcessInfo +{ +//#if defined(_WIN32) || defined(__WIN32__) +#if defined(__WIN32__) + PROCESS_INFORMATION pi; +//#elif defined(__linux__) +#elif defined(__LINUX__) + int pid; +#endif +} SDL_ProcessInfo; + +/** + * This structure stores the exit status (value returned by main()) and + * whether the process exited sucessfully or not. + */ +typedef struct SDL_ProcessExitStatus +{ + int exit_success; /*!< Zero if the process exited successfully */ + int exit_status; /*!< The exit status of the process. 8-bit value. */ +} SDL_ProcessExitStatus; + +/** + * Launches a process with the given commandline arguments. + * + * \param file The path to the executable to be launched. + * \param args The command line arguments to be passed to the process. + * \param pinfo Pointer to an SDL_ProcessInfo object to be populated with + * platform specific information about the launched process. + * + * \return Non-zero on success, zero on failure. + */ +int SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo); + +/** + * Checks if a process is running or not. + * + * \param pinfo Pointer to SDL_ProcessInfo object of the process that needs to be + * checked. + * + * \return 1 if the process is still running; zero if it is not and -1 if the + * status could not be retrieved. + */ +int SDL_IsProcessRunning(SDL_ProcessInfo* pinfo); + +/** + * Kills a currently running process. + * + * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be terminated. + * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated + * with the exit status. + * + * \return 1 on success, 0 on failure. + */ +int SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps); + +/** + * Cleanly exits the process represented by \c pinfo and stores the exit status + * in the exit status object pointed to by \c ps. + * + * \return 1 on success, 0 on failure. + */ +int SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps); + +/** + * Gets the exit status of a process. If the exit status is -1, the process is + * still running. + * + * \param pinfo Pointer to a SDL_ProcessInfo object of the process to be checked. + * \param ps Pointer to a SDL_ProcessExitStatus object which will be populated + * with the exit status. + * + * \return 1 on success, 0 on failure. + */ +int SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_process_h */ + diff --git a/visualtest/include/SDL_visualtest_random_variator.h b/visualtest/include/SDL_visualtest_random_variator.h new file mode 100755 index 0000000000..7ec79f22bd --- /dev/null +++ b/visualtest/include/SDL_visualtest_random_variator.h @@ -0,0 +1,59 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_random_variator.h + * + * Header for the random variator. + */ + +#include "SDL_visualtest_harness_argparser.h" +#include "SDL_visualtest_variator_common.h" + +#ifndef _SDL_visualtest_random_variator_h +#define _SDL_visualtest_random_variator_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Struct for the variator that randomly generates variations of command line + * arguments to the SUT. + */ +typedef struct SDLVisualTest_RandomVariator +{ + /*! The current variation. */ + SDLVisualTest_Variation variation; + /*! Configuration object for the SUT that the variator is running for. */ + SDLVisualTest_SUTConfig config; + /*! Buffer to store the arguments string built from the variation */ + char buffer[MAX_SUT_ARGS_LEN]; +} SDLVisualTest_RandomVariator; + +/** + * Initializes the variator. + * + * \return 1 on success, 0 on failure + */ +int SDLVisualTest_InitRandomVariator(SDLVisualTest_RandomVariator* variator, + SDLVisualTest_SUTConfig* config, Uint64 seed); + +/** + * Generates a new random variation. + * + * \return The arguments string representing the random variation on success, and + * NULL on failure. The pointer returned should not be freed. + */ +char* SDLVisualTest_GetNextRandomVariation(SDLVisualTest_RandomVariator* variator); + +/** + * Frees any resources associated with the variator. + */ +void SDLVisualTest_FreeRandomVariator(SDLVisualTest_RandomVariator* variator); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_random_variator_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_rwhelper.h b/visualtest/include/SDL_visualtest_rwhelper.h new file mode 100755 index 0000000000..470039e9c6 --- /dev/null +++ b/visualtest/include/SDL_visualtest_rwhelper.h @@ -0,0 +1,85 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file rwhelper.c + * + * Header file with some helper functions for working with SDL_RWops. + */ + +#include + +#ifndef _SDL_visualtest_rwhelper_h +#define _SDL_visualtest_rwhelper_h + +/** Length of the buffer in SDLVisualTest_RWHelperBuffer */ +#define RWOPS_BUFFER_LEN 256 + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Struct that is used as a buffer by the RW helper functions. Should be initialized by calling + * SDLVisualTest_RWHelperResetBuffer() before being used. + */ +typedef struct SDLVisualTest_RWHelperBuffer +{ + /*! Character buffer that data is read into */ + char buffer[RWOPS_BUFFER_LEN]; + /*! buffer[buffer_pos] is the next character to be read from the buffer */ + int buffer_pos; + /*! Number of character read into the buffer */ + int buffer_width; +} SDLVisualTest_RWHelperBuffer; + +/** + * Resets the buffer pointed to by \c buffer used by some of the helper functions. + * This function should be called when you're using one of the helper functions + * with a new SDL_RWops object. + */ +void SDLVisualTest_RWHelperResetBuffer(SDLVisualTest_RWHelperBuffer* buffer); + +/** + * Reads a single character using the SDL_RWops object pointed to by \c rw. + * This function reads data in blocks and stores them in the buffer pointed to by + * \c buffer, so other SDL_RWops functions should not be used in conjunction + * with this function. + * + * \return The character that was read. + */ +char SDLVisualTest_RWHelperReadChar(SDL_RWops* rw, + SDLVisualTest_RWHelperBuffer* buffer); + +/** + * Reads characters using the SDL_RWops object pointed to by \c rw into the + * character array pointed to by \c str (of size \c size) until either the + * array is full or a new line is encountered. If \c comment_char is encountered, + * all characters from that position till the end of the line are ignored. The new line + * is not included as part of the buffer. Lines with only whitespace and comments + * are ignored. This function reads data in blocks and stores them in the buffer + * pointed to by \c buffer, so other SDL_RWops functions should not be used in + * conjunction with this function. + * + * \return pointer to the string on success, NULL on failure or EOF. + */ +char* SDLVisualTest_RWHelperReadLine(SDL_RWops* rw, char* str, int size, + SDLVisualTest_RWHelperBuffer* buffer, + char comment_char); + +/** + * Counts the number of lines that are not all whitespace and comments using the + * SDL_RWops object pointed to by \c rw. \c comment_char indicates the character + * used for comments. Uses the buffer pointed to by \c buffer to read data in blocks. + * + * \return Number of lines on success, -1 on failure. + */ +int SDLVisualTest_RWHelperCountNonEmptyLines(SDL_RWops* rw, + SDLVisualTest_RWHelperBuffer* buffer, + char comment_char); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_rwhelper_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_screenshot.h b/visualtest/include/SDL_visualtest_screenshot.h new file mode 100755 index 0000000000..96e7d20491 --- /dev/null +++ b/visualtest/include/SDL_visualtest_screenshot.h @@ -0,0 +1,50 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_screenshot.h + * + * Header for the screenshot API. + */ + +#include "SDL_visualtest_process.h" + +#ifndef _SDL_visualtest_screenshot_h +#define _SDL_visualtest_screenshot_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Takes a screenshot of each window owned by the process \c pinfo and saves + * it in a file \c prefix-i.png where \c prefix is the full path to the file + * along with a prefix given to each screenshot. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_ScreenshotProcess(SDL_ProcessInfo* pinfo, char* prefix); + +/** + * Takes a screenshot of the desktop and saves it into the file with path + * \c filename. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_ScreenshotDesktop(char* filename); + +/** + * Compare a screenshot taken previously with SUT arguments \c args that is + * located in \c test_dir with a verification image that is located in + * \c verify_dir. + * + * \return -1 on failure, 0 if the images were not equal, 1 if the images are equal + * and 2 if the verification image is not present. + */ +int SDLVisualTest_VerifyScreenshots(char* args, char* test_dir, char* verify_dir); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_screenshot_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_sut_configparser.h b/visualtest/include/SDL_visualtest_sut_configparser.h new file mode 100755 index 0000000000..9296155650 --- /dev/null +++ b/visualtest/include/SDL_visualtest_sut_configparser.h @@ -0,0 +1,103 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_sut_configparser.h + * + * Header for the parser for SUT config files. + */ + +#ifndef _SDL_visualtest_sut_configparser_h +#define _SDL_visualtest_sut_configparser_h + +/** Maximum length of the name of an SUT option */ +#define MAX_SUTOPTION_NAME_LEN 100 +/** Maximum length of the name of a category of an SUT option */ +#define MAX_SUTOPTION_CATEGORY_LEN 40 +/** Maximum length of one enum value of an SUT option */ +#define MAX_SUTOPTION_ENUMVAL_LEN 40 +/** Maximum length of a line in the paramters file */ +#define MAX_SUTOPTION_LINE_LENGTH 256 + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Describes the different kinds of options to the SUT. + */ +typedef enum { + SDL_SUT_OPTIONTYPE_STRING = 0, + SDL_SUT_OPTIONTYPE_INT, + SDL_SUT_OPTIONTYPE_ENUM, + SDL_SUT_OPTIONTYPE_BOOL +} SDLVisualTest_SUTOptionType; + +/** + * Represents the range of values an integer option can take. + */ +typedef struct SDLVisualTest_SUTIntRange { + /*! Minimum value of the integer option */ + int min; + /*! Maximum value of the integer option */ + int max; +} SDLVisualTest_SUTIntRange; + +/** + * Struct that defines an option to be passed to the SUT. + */ +typedef struct SDLVisualTest_SUTOption { + /*! The name of the option. This is what you would pass in the command line + along with two leading hyphens. */ + char name[MAX_SUTOPTION_NAME_LEN]; + /*! An array of categories that the option belongs to. The last element is + NULL. */ + char** categories; + /*! Type of the option - integer, boolean, etc. */ + SDLVisualTest_SUTOptionType type; + /*! Whether the option is required or not */ + SDL_bool required; + /*! extra data that is required for certain types */ + union { + /*! This field is valid only for integer type options; it defines the + valid range for such an option */ + SDLVisualTest_SUTIntRange range; + /*! This field is valid only for enum type options; it holds the list of values + that the option can take. The last element is NULL */ + char** enum_values; + } data; +} SDLVisualTest_SUTOption; + +/** + * Struct to hold all the options to an SUT application. + */ +typedef struct SDLVisualTest_SUTConfig +{ + /*! Pointer to an array of options */ + SDLVisualTest_SUTOption* options; + /*! Number of options in \c options */ + int num_options; +} SDLVisualTest_SUTConfig; + +/** + * Parses a configuration file that describes the command line options an SUT + * application will take and populates a SUT config object. All lines in the + * config file must be smaller than + * + * \param file Path to the configuration file. + * \param config Pointer to an object that represents an SUT configuration. + * + * \return zero on failure, non-zero on success + */ +int SDLVisualTest_ParseSUTConfig(char* file, SDLVisualTest_SUTConfig* config); + +/** + * Free any resources associated with the config object pointed to by \c config. + */ +void SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig* config); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_sut_configparser_h */ diff --git a/visualtest/include/SDL_visualtest_variator_common.h b/visualtest/include/SDL_visualtest_variator_common.h new file mode 100755 index 0000000000..451e81b747 --- /dev/null +++ b/visualtest/include/SDL_visualtest_variator_common.h @@ -0,0 +1,120 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_variator_common.h + * + * Header for common functionality used by variators. + */ + +#include +#include "SDL_visualtest_sut_configparser.h" + +#ifndef _SDL_visualtest_variator_common_h +#define _SDL_visualtest_variator_common_h + +/** The number of variations one integer option would generate */ +#define SDL_SUT_INTEGER_OPTION_TEST_STEPS 3 + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** enum for indicating the type of variator being used */ +typedef enum SDLVisualTest_VariatorType +{ + SDL_VARIATOR_NONE = 0, + SDL_VARIATOR_EXHAUSTIVE, + SDL_VARIATOR_RANDOM +} SDLVisualTest_VariatorType; + +/** + * One possible value for a command line option to the SUT. + */ +typedef union SDLVisualTest_SUTOptionValue +{ + /*! Value if the option is of type boolean */ + SDL_bool bool_value; + /*! Value if the option is of type integer. If on is true then the option + will be passed to the SUT, otherwise it will be ignored. */ + struct { + int value; + SDL_bool on; + } integer; + /*! Index of the string in the enum_values field of the corresponding + SDLVisualTest_SUTOption object. If on is true the option will passed + to the SUT, otherwise it will be ignored. */ + struct { + int index; + SDL_bool on; + } enumerated; + /*! Value if the option is of type string. If on is true the option will + be passed to the SUT, otherwise it will be ignored. */ + struct { + char* value; + SDL_bool on; + } string; +} SDLVisualTest_SUTOptionValue; + +/** + * Represents a valid combination of parameters that can be passed to the SUT. + * The ordering of the values here is the same as the ordering of the options in + * the SDLVisualTest_SUTConfig object for this variation. + */ +typedef struct SDLVisualTest_Variation +{ + /*! Pointer to array of option values */ + SDLVisualTest_SUTOptionValue* vars; + /*! Number of option values in \c vars */ + int num_vars; +} SDLVisualTest_Variation; + +/** + * "Increments" the value of the option by one and returns the carry. We wrap + * around to the initial value on overflow which makes the carry one. + * For example: "incrementing" an SDL_FALSE option makes it SDL_TRUE with no + * carry, and "incrementing" an SDL_TRUE option makes it SDL_FALSE with carry + * one. For integers, a random value in the valid range for the option is used. + * + * \param var Value of the option + * \param opt Object with metadata about the option + * + * \return 1 if there is a carry for enum and bool type options, 0 otherwise. + * 1 is always returned for integer and string type options. -1 is + * returned on error. + */ +int SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue* var, + SDLVisualTest_SUTOption* opt); + +/** + * Converts a variation object into a string of command line arguments. + * + * \param variation Variation object to be converted. + * \param config Config object for the SUT. + * \param buffer Pointer to the buffer the arguments string will be copied into. + * \param size Size of the buffer. + * + * \return 1 on success, 0 on failure + */ +int SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation* variation, + SDLVisualTest_SUTConfig* config, + char* buffer, int size); + +/** + * Initializes the variation using the following rules: + * - Boolean options are initialized to SDL_FALSE. + * - Integer options are initialized to the minimum valid value they can hold. + * - Enum options are initialized to the first element in the list of values they + * can take. + * - String options are initialized to the name of the option. + * + * \return 1 on success, 0 on failure. + */ +int SDLVisualTest_InitVariation(SDLVisualTest_Variation* variation, + SDLVisualTest_SUTConfig* config); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_variator_common_h */ \ No newline at end of file diff --git a/visualtest/include/SDL_visualtest_variators.h b/visualtest/include/SDL_visualtest_variators.h new file mode 100755 index 0000000000..7aec36bc40 --- /dev/null +++ b/visualtest/include/SDL_visualtest_variators.h @@ -0,0 +1,64 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file SDL_visualtest_variators.h + * + * Header for all the variators that vary input parameters to a SUT application. + */ + +#include "SDL_visualtest_exhaustive_variator.h" +#include "SDL_visualtest_random_variator.h" + +#ifndef _SDL_visualtest_variators_h +#define _SDL_visualtest_variators_h + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Struct that acts like a wrapper around the different types of variators + * available. + */ +typedef struct SDLVisualTest_Variator +{ + /*! Type of the variator */ + SDLVisualTest_VariatorType type; + /*! union object that stores the variator */ + union + { + SDLVisualTest_ExhaustiveVariator exhaustive; + SDLVisualTest_RandomVariator random; + } data; +} SDLVisualTest_Variator; + +/** + * Initializes the variator object pointed to by \c variator of type \c type + * with information from the config object pointed to by \c config. + * + * \return 1 on success, 0 on failure + */ +int SDLVisualTest_InitVariator(SDLVisualTest_Variator* variator, + SDLVisualTest_SUTConfig* config, + SDLVisualTest_VariatorType type, + Uint64 seed); + +/** + * Gets the next variation using the variator. + * + * \return The arguments string representing the variation on success, and + * NULL on failure. The pointer returned should not be freed. + */ +char* SDLVisualTest_GetNextVariation(SDLVisualTest_Variator* variator); + +/** + * Frees any resources associated with the variator. + */ +void SDLVisualTest_FreeVariator(SDLVisualTest_Variator* variator); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#endif /* _SDL_visualtest_variators_h */ \ No newline at end of file diff --git a/visualtest/install-sh b/visualtest/install-sh new file mode 100755 index 0000000000..205f21c6b8 --- /dev/null +++ b/visualtest/install-sh @@ -0,0 +1 @@ +/usr/share/automake-1.11/install-sh \ No newline at end of file diff --git a/visualtest/launch_harness.cmd b/visualtest/launch_harness.cmd new file mode 100755 index 0000000000..93462a9d28 --- /dev/null +++ b/visualtest/launch_harness.cmd @@ -0,0 +1,2 @@ +start /wait testharness.exe --config testsprite2_crashtest.config > testrun.log 2>&1 +if %ERRORLEVEL% NEQ 0 echo TEST RUN FAILED (see testrun.log) \ No newline at end of file diff --git a/visualtest/launch_harness.sh b/visualtest/launch_harness.sh new file mode 100755 index 0000000000..a2d1471c83 --- /dev/null +++ b/visualtest/launch_harness.sh @@ -0,0 +1,6 @@ +#!/bin/bash +./testharness.exe --config testsprite2_crashtest.config > testrun.log 2>&1 +if [ "$?" != "0" ]; then + echo TEST RUN FAILED (see testrun.log) + # report error code to CI +fi \ No newline at end of file diff --git a/visualtest/missing b/visualtest/missing new file mode 100755 index 0000000000..20bc5b0ed9 --- /dev/null +++ b/visualtest/missing @@ -0,0 +1 @@ +/usr/share/automake-1.11/missing \ No newline at end of file diff --git a/visualtest/src/action_configparser.c b/visualtest/src/action_configparser.c new file mode 100755 index 0000000000..bab7fc13e8 --- /dev/null +++ b/visualtest/src/action_configparser.c @@ -0,0 +1,396 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file action_configparser.c + * + * Source file for the parser for action config files. + */ + +#include +#include +#include +#include "SDL_visualtest_action_configparser.h" +#include "SDL_visualtest_rwhelper.h" +#include "SDL_visualtest_parsehelper.h" + +static void +FreeAction(SDLVisualTest_Action* action) +{ + if(!action) + return; + switch(action->type) + { + case SDL_ACTION_LAUNCH: + { + char* path; + char* args; + + path = action->extra.process.path; + args = action->extra.process.args; + + if(path) + SDL_free(path); + if(args) + SDL_free(args); + + action->extra.process.path = NULL; + action->extra.process.args = NULL; + } + break; + } +} + +int +SDLVisualTest_EnqueueAction(SDLVisualTest_ActionQueue* queue, + SDLVisualTest_Action action) +{ + SDLVisualTest_ActionNode* node; + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return 0; + } + + node = (SDLVisualTest_ActionNode*)SDL_malloc( + sizeof(SDLVisualTest_ActionNode)); + if(!node) + { + SDLTest_LogError("malloc() failed"); + return 0; + } + node->action = action; + node->next = NULL; + queue->size++; + if(!queue->rear) + queue->rear = queue->front = node; + else + { + queue->rear->next = node; + queue->rear = node; + } + return 1; +} + +int +SDLVisualTest_DequeueAction(SDLVisualTest_ActionQueue* queue) +{ + SDLVisualTest_ActionNode* node; + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return 0; + } + if(SDLVisualTest_IsActionQueueEmpty(queue)) + { + SDLTest_LogError("cannot dequeue from empty queue"); + return 0; + } + if(queue->front == queue->rear) + { + FreeAction(&queue->front->action); + SDL_free(queue->front); + queue->front = queue->rear = NULL; + } + else + { + node = queue->front; + queue->front = queue->front->next; + FreeAction(&node->action); + SDL_free(node); + } + queue->size--; + return 1; +} + +void +SDLVisualTest_InitActionQueue(SDLVisualTest_ActionQueue* queue) +{ + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return; + } + queue->front = NULL; + queue->rear = NULL; + queue->size = 0; +} + +SDLVisualTest_Action* +SDLVisualTest_GetQueueFront(SDLVisualTest_ActionQueue* queue) +{ + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return NULL; + } + if(!queue->front) + { + SDLTest_LogError("cannot get front of empty queue"); + return NULL; + } + + return &queue->front->action; +} + +int +SDLVisualTest_IsActionQueueEmpty(SDLVisualTest_ActionQueue* queue) +{ + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return 1; + } + + if(queue->size > 0) + return 0; + return 1; +} + +void +SDLVisualTest_EmptyActionQueue(SDLVisualTest_ActionQueue* queue) +{ + if(queue) + { + while(!SDLVisualTest_IsActionQueueEmpty(queue)) + SDLVisualTest_DequeueAction(queue); + } +} + +/* Since the size of the queue is not likely to be larger than 100 elements + we can get away with using insertion sort. */ +static void +SortQueue(SDLVisualTest_ActionQueue* queue) +{ + SDLVisualTest_ActionNode* head; + SDLVisualTest_ActionNode* tail; + + if(!queue || SDLVisualTest_IsActionQueueEmpty(queue)) + return; + + head = queue->front; + for(tail = head; tail && tail->next;) + { + SDLVisualTest_ActionNode* pos; + SDLVisualTest_ActionNode* element = tail->next; + + if(element->action.time < head->action.time) + { + tail->next = tail->next->next; + element->next = head; + head = element; + } + else if(element->action.time >= tail->action.time) + { + tail = tail->next; + } + else + { + for(pos = head; + (pos->next->action.time < element->action.time); + pos = pos->next); + tail->next = tail->next->next; + element->next = pos->next; + pos->next = element; + } + } + + queue->front = head; + queue->rear = tail; +} + +int +SDLVisualTest_InsertIntoActionQueue(SDLVisualTest_ActionQueue* queue, + SDLVisualTest_Action action) +{ + SDLVisualTest_ActionNode* n; + SDLVisualTest_ActionNode* prev; + SDLVisualTest_ActionNode* newnode; + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return 0; + } + + if(SDLVisualTest_IsActionQueueEmpty(queue)) + { + if(!SDLVisualTest_EnqueueAction(queue, action)) + { + SDLTest_LogError("SDLVisualTest_EnqueueAction() failed"); + return 0; + } + return 1; + } + + newnode = (SDLVisualTest_ActionNode*)malloc(sizeof(SDLVisualTest_ActionNode)); + if(!newnode) + { + SDLTest_LogError("malloc() failed"); + return 0; + } + newnode->action = action; + + queue->size++; + for(n = queue->front, prev = NULL; n; n = n->next) + { + if(action.time < n->action.time) + { + if(prev) + { + prev->next = newnode; + newnode->next = n; + } + else + { + newnode->next = queue->front; + queue->front = newnode; + } + return 1; + } + prev = n; + } + + queue->rear->next = newnode; + newnode->next = NULL; + queue->rear = newnode; + + return 1; +} + +int +SDLVisualTest_ParseActionConfig(char* file, SDLVisualTest_ActionQueue* queue) +{ + char line[MAX_ACTION_LINE_LENGTH]; + SDLVisualTest_RWHelperBuffer buffer; + char* token_ptr; + int linenum; + SDL_RWops* rw; + + if(!file) + { + SDLTest_LogError("file argument cannot be NULL"); + return 0; + } + if(!queue) + { + SDLTest_LogError("queue argument cannot be NULL"); + return 0; + } + + rw = SDL_RWFromFile(file, "r"); + if(!rw) + { + SDLTest_LogError("SDL_RWFromFile() failed"); + return 0; + } + + SDLVisualTest_RWHelperResetBuffer(&buffer); + SDLVisualTest_InitActionQueue(queue); + linenum = 0; + while(SDLVisualTest_RWHelperReadLine(rw, line, MAX_ACTION_LINE_LENGTH, + &buffer, '#')) + { + SDLVisualTest_Action action; + int hr, min, sec; + + /* parse time */ + token_ptr = strtok(line, " "); + if(!token_ptr || + (SDL_sscanf(token_ptr, "%d:%d:%d", &hr, &min, &sec) != 3)) + { + SDLTest_LogError("Could not parse time token at line: %d", + linenum); + SDLVisualTest_EmptyActionQueue(queue); + SDL_RWclose(rw); + return 0; + } + action.time = (((hr * 60 + min) * 60) + sec) * 1000; + + /* parse type */ + token_ptr = strtok(NULL, " "); + if(SDL_strcasecmp(token_ptr, "launch") == 0) + action.type = SDL_ACTION_LAUNCH; + else if(SDL_strcasecmp(token_ptr, "kill") == 0) + action.type = SDL_ACTION_KILL; + else if(SDL_strcasecmp(token_ptr, "quit") == 0) + action.type = SDL_ACTION_QUIT; + else if(SDL_strcasecmp(token_ptr, "screenshot") == 0) + action.type = SDL_ACTION_SCREENSHOT; + else if(SDL_strcasecmp(token_ptr, "verify") == 0) + action.type = SDL_ACTION_VERIFY; + else + { + SDLTest_LogError("Could not parse type token at line: %d", + linenum); + SDLVisualTest_EmptyActionQueue(queue); + SDL_RWclose(rw); + return 0; + } + + /* parse the extra field */ + if(action.type == SDL_ACTION_LAUNCH) + { + int len; + char* args; + char* path; + token_ptr = strtok(NULL, " "); + len = token_ptr ? SDL_strlen(token_ptr) : 0; + if(len <= 0) + { + SDLTest_LogError("Please specify the process to launch at line: %d", + linenum); + SDLVisualTest_EmptyActionQueue(queue); + SDL_RWclose(rw); + return 0; + } + path = (char*)SDL_malloc(sizeof(char) * (len + 1)); + if(!path) + { + SDLTest_LogError("malloc() failed"); + SDLVisualTest_EmptyActionQueue(queue); + SDL_RWclose(rw); + return 0; + } + SDL_strlcpy(path, token_ptr, len + 1); + + token_ptr = strtok(NULL, ""); + len = token_ptr ? SDL_strlen(token_ptr) : 0; + if(len > 0) + { + args = (char*)SDL_malloc(sizeof(char) * (len + 1)); + if(!args) + { + SDLTest_LogError("malloc() failed"); + SDL_free(path); + SDLVisualTest_EmptyActionQueue(queue); + SDL_RWclose(rw); + return 0; + } + SDL_strlcpy(args, token_ptr, len + 1); + } + else + args = NULL; + + action.extra.process.path = path; + action.extra.process.args = args; + } + + /* add the action to the queue */ + if(!SDLVisualTest_EnqueueAction(queue, action)) + { + SDLTest_LogError("SDLVisualTest_EnqueueAction() failed"); + if(action.type == SDL_ACTION_LAUNCH) + { + SDL_free(action.extra.process.path); + if(action.extra.process.args) + SDL_free(action.extra.process.args); + } + SDLVisualTest_EmptyActionQueue(queue); + SDL_RWclose(rw); + return 0; + } + } + /* sort the queue of actions */ + SortQueue(queue); + + SDL_RWclose(rw); + return 1; +} \ No newline at end of file diff --git a/visualtest/src/harness_argparser.c b/visualtest/src/harness_argparser.c new file mode 100755 index 0000000000..93cf614a33 --- /dev/null +++ b/visualtest/src/harness_argparser.c @@ -0,0 +1,358 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file harness_argparser.c + * + * Source file for functions to parse arguments to the test harness. + */ + +#include +#include +#include + +#include "SDL_visualtest_harness_argparser.h" +#include "SDL_visualtest_rwhelper.h" + +/** Maximum length of one line in the config file */ +#define MAX_CONFIG_LINE_LEN 400 +/** Default value for the timeout after which the SUT is forcefully killed */ +#define DEFAULT_SUT_TIMEOUT (60 * 1000) + +/* String compare s1 and s2 ignoring leading hyphens */ +static int +StrCaseCmpIgnoreHyphen(char* s1, char* s2) +{ + /* treat NULL pointer as empty strings */ + if(!s1) + s1 = ""; + if(!s2) + s2 = ""; + + while(*s1 == '-') + s1++; + while(*s2 == '-') + s2++; + + return SDL_strcasecmp(s1, s2); +} + +/* parser an argument, updates the state object and returns the number of + arguments processed; returns -1 on failure */ +static int +ParseArg(char** argv, int index, SDLVisualTest_HarnessState* state) +{ + if(!argv || !argv[index] || !state) + return 0; + + if(StrCaseCmpIgnoreHyphen("sutapp", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for sutapp."); + return -1; + } + SDL_strlcpy(state->sutapp, argv[index], MAX_PATH_LEN); + SDLTest_Log("SUT Application: %s", state->sutapp); + return 2; + } + else if(StrCaseCmpIgnoreHyphen("output-dir", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for output-dir."); + return -1; + } + SDL_strlcpy(state->output_dir, argv[index], MAX_PATH_LEN); + SDLTest_Log("Screenshot Output Directory: %s", state->output_dir); + return 2; + } + else if(StrCaseCmpIgnoreHyphen("verify-dir", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for verify-dir."); + return -1; + } + SDL_strlcpy(state->verify_dir, argv[index], MAX_PATH_LEN); + SDLTest_Log("Screenshot Verification Directory: %s", state->verify_dir); + return 2; + } + else if(StrCaseCmpIgnoreHyphen("sutargs", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for sutargs."); + return -1; + } + SDL_strlcpy(state->sutargs, argv[index], MAX_SUT_ARGS_LEN); + SDLTest_Log("SUT Arguments: %s", state->sutargs); + return 2; + } + else if(StrCaseCmpIgnoreHyphen("timeout", argv[index]) == 0) + { + int hr, min, sec; + index++; + if(!argv[index] || SDL_sscanf(argv[index], "%d:%d:%d", &hr, &min, &sec) != 3) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for timeout."); + return -1; + } + state->timeout = (((hr * 60) + min) * 60 + sec) * 1000; + SDLTest_Log("Maximum Timeout for each SUT run: %d milliseconds", + state->timeout); + return 2; + } + else if(StrCaseCmpIgnoreHyphen("parameter-config", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for parameter-config."); + return -1; + } + SDLTest_Log("SUT Parameters file: %s", argv[index]); + SDLVisualTest_FreeSUTConfig(&state->sut_config); + if(!SDLVisualTest_ParseSUTConfig(argv[index], &state->sut_config)) + { + SDLTest_LogError("Failed to parse SUT parameters file"); + return -1; + } + return 2; + } + else if(StrCaseCmpIgnoreHyphen("variator", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for variator."); + return -1; + } + SDLTest_Log("Variator: %s", argv[index]); + if(SDL_strcasecmp("exhaustive", argv[index]) == 0) + state->variator_type = SDL_VARIATOR_EXHAUSTIVE; + else if(SDL_strcasecmp("random", argv[index]) == 0) + state->variator_type = SDL_VARIATOR_RANDOM; + else + { + SDLTest_LogError("Arguments parsing error: Invalid variator name."); + return -1; + } + return 2; + } + else if(StrCaseCmpIgnoreHyphen("num-variations", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: Invalid argument for num-variations."); + return -1; + } + state->num_variations = SDL_atoi(argv[index]); + SDLTest_Log("Number of variations to run: %d", state->num_variations); + if(state->num_variations <= 0) + { + SDLTest_LogError("Arguments parsing error: num-variations must be positive."); + return -1; + } + return 2; + } + else if(StrCaseCmpIgnoreHyphen("no-launch", argv[index]) == 0) + { + state->no_launch = SDL_TRUE; + SDLTest_Log("SUT will not be launched."); + return 1; + } + else if(StrCaseCmpIgnoreHyphen("action-config", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: invalid argument for action-config"); + return -1; + } + SDLTest_Log("Action Config file: %s", argv[index]); + SDLVisualTest_EmptyActionQueue(&state->action_queue); + if(!SDLVisualTest_ParseActionConfig(argv[index], &state->action_queue)) + { + SDLTest_LogError("SDLVisualTest_ParseActionConfig() failed"); + return -1; + } + return 2; + } + else if(StrCaseCmpIgnoreHyphen("config", argv[index]) == 0) + { + index++; + if(!argv[index]) + { + SDLTest_LogError("Arguments parsing error: invalid argument for config"); + return -1; + } + + /* do nothing, this option has already been handled */ + return 2; + } + return 0; +} + +/* TODO: Trailing/leading spaces and spaces between equals sign not supported. */ +static int +ParseConfig(char* file, SDLVisualTest_HarnessState* state) +{ + SDL_RWops* rw; + SDLVisualTest_RWHelperBuffer buffer; + char line[MAX_CONFIG_LINE_LEN]; + + rw = SDL_RWFromFile(file, "r"); + if(!rw) + { + SDLTest_LogError("SDL_RWFromFile() failed"); + return 0; + } + + SDLVisualTest_RWHelperResetBuffer(&buffer); + while(SDLVisualTest_RWHelperReadLine(rw, line, MAX_CONFIG_LINE_LEN, + &buffer, '#')) + { + char** argv; + int i, num_params; + + /* count number of parameters and replace the trailing newline with 0 */ + num_params = 1; + for(i = 0; line[i]; i++) + { + if(line[i] == '=') + { + num_params = 2; + break; + } + } + + /* populate argv */ + argv = (char**)SDL_malloc((num_params + 1) * sizeof(char*)); + if(!argv) + { + SDLTest_LogError("malloc() failed."); + SDL_RWclose(rw); + return 0; + } + + argv[num_params] = NULL; + for(i = 0; i < num_params; i++) + { + argv[i] = strtok(i == 0 ? line : NULL, "="); + } + + if(ParseArg(argv, 0, state) == -1) + { + SDLTest_LogError("ParseArg() failed"); + SDL_free(argv); + SDL_RWclose(rw); + return 0; + } + SDL_free(argv); + } + SDL_RWclose(rw); + + if(!state->sutapp[0]) + return 0; + return 1; +} + +int +SDLVisualTest_ParseHarnessArgs(char** argv, SDLVisualTest_HarnessState* state) +{ + int i; + + SDLTest_Log("Parsing commandline arguments.."); + + if(!argv) + { + SDLTest_LogError("argv is NULL"); + return 0; + } + if(!state) + { + SDLTest_LogError("state is NULL"); + return 0; + } + + /* initialize the state object */ + state->sutargs[0] = '\0'; + state->sutapp[0] = '\0'; + state->output_dir[0] = '\0'; + state->verify_dir[0] = '\0'; + state->timeout = DEFAULT_SUT_TIMEOUT; + SDL_memset(&state->sut_config, 0, sizeof(SDLVisualTest_SUTConfig)); + SDL_memset(&state->action_queue, 0, sizeof(SDLVisualTest_ActionQueue)); + state->variator_type = SDL_VARIATOR_RANDOM; + state->num_variations = -1; + state->no_launch = SDL_FALSE; + + /* parse config file if passed */ + for(i = 0; argv[i]; i++) + { + if(StrCaseCmpIgnoreHyphen("config", argv[i]) == 0) + { + if(!argv[i + 1]) + { + SDLTest_Log("Arguments parsing error: invalid argument for config."); + return 0; + } + if(!ParseConfig(argv[i + 1], state)) + { + SDLTest_LogError("ParseConfig() failed"); + return 0; + } + } + } + + /* parse the arguments */ + for(i = 0; argv[i];) + { + int consumed = ParseArg(argv, i, state); + if(consumed == -1 || consumed == 0) + { + SDLTest_LogError("ParseArg() failed"); + return 0; + } + i += consumed; + } + + if(state->variator_type == SDL_VARIATOR_RANDOM && state->num_variations == -1) + state->num_variations = 1; + + /* check to see if required options have been passed */ + if(!state->sutapp[0]) + { + SDLTest_LogError("sutapp must be passed."); + return 0; + } + if(!state->sutargs[0] && !state->sut_config.options) + { + SDLTest_LogError("Either sutargs or parameter-config must be passed."); + return 0; + } + if(!state->output_dir[0]) + { + SDL_strlcpy(state->output_dir, "./output", MAX_PATH_LEN); + } + if(!state->verify_dir[0]) + { + SDL_strlcpy(state->verify_dir, "./verify", MAX_PATH_LEN); + } + + return 1; +} + +void +SDLVisualTest_FreeHarnessState(SDLVisualTest_HarnessState* state) +{ + if(state) + { + SDLVisualTest_EmptyActionQueue(&state->action_queue); + SDLVisualTest_FreeSUTConfig(&state->sut_config); + } +} \ No newline at end of file diff --git a/visualtest/src/linux/linux_process.c b/visualtest/src/linux/linux_process.c new file mode 100755 index 0000000000..27765c5621 --- /dev/null +++ b/visualtest/src/linux/linux_process.c @@ -0,0 +1,199 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file linux_process.c + * + * Source file for the process API on linux. + */ + + +#include +#include +#include +#include +#include +#include + +#include "SDL_visualtest_process.h" +#include "SDL_visualtest_harness_argparser.h" +#include "SDL_visualtest_parsehelper.h" + +#if defined(__LINUX__) + +static void +LogLastError(char* str) +{ + char* error = (char*)strerror(errno); + if(!str || !error) + return; + SDLTest_LogError("%s: %s", str, error); +} + +int +SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo) +{ + pid_t pid; + char** argv; + + if(!file) + { + SDLTest_LogError("file argument cannot be NULL"); + return 0; + } + if(!pinfo) + { + SDLTest_LogError("pinfo cannot be NULL"); + return 0; + } + pid = fork(); + if(pid == -1) + { + LogLastError("fork() failed"); + return 0; + } + else if(pid == 0) + { + /* parse the arguments string */ + argv = SDLVisualTest_ParseArgsToArgv(args); + argv[0] = file; + execv(file, argv); + LogLastError("execv() failed"); + return 0; + } + else + { + pinfo->pid = pid; + return 1; + } + + /* never executed */ + return 0; +} + +int +SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps) +{ + int success, status; + if(!pinfo) + { + SDLTest_LogError("pinfo argument cannot be NULL"); + return 0; + } + if(!ps) + { + SDLTest_LogError("ps argument cannot be NULL"); + return 0; + } + success = waitpid(pinfo->pid, &status, WNOHANG); + if(success == -1) + { + LogLastError("waitpid() failed"); + return 0; + } + else if(success == 0) + { + ps->exit_status = -1; + ps->exit_success = 1; + } + else + { + ps->exit_success = WIFEXITED(status); + ps->exit_status = WEXITSTATUS(status); + } + return 1; +} + +int +SDL_IsProcessRunning(SDL_ProcessInfo* pinfo) +{ + int success; + + if(!pinfo) + { + SDLTest_LogError("pinfo cannot be NULL"); + return -1; + } + + success = kill(pinfo->pid, 0); + if(success == -1) + { + if(errno == ESRCH) /* process is not running */ + return 0; + else + { + LogLastError("kill() failed"); + return -1; + } + } + return 1; +} + +int +SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps) +{ + int success, status; + + if(!pinfo) + { + SDLTest_LogError("pinfo argument cannot be NULL"); + return 0; + } + if(!ps) + { + SDLTest_LogError("ps argument cannot be NULL"); + return 0; + } + + success = kill(pinfo->pid, SIGQUIT); + if(success == -1) + { + LogLastError("kill() failed"); + return 0; + } + + success = waitpid(pinfo->pid, &status, 0); + if(success == -1) + { + LogLastError("waitpid() failed"); + return 0; + } + + ps->exit_success = WIFEXITED(status); + ps->exit_status = WEXITSTATUS(status); + return 1; +} + +int +SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps) +{ + int success, status; + + if(!pinfo) + { + SDLTest_LogError("pinfo argument cannot be NULL"); + return 0; + } + if(!ps) + { + SDLTest_LogError("ps argument cannot be NULL"); + return 0; + } + + success = kill(pinfo->pid, SIGKILL); + if(success == -1) + { + LogLastError("kill() failed"); + return 0; + } + success = waitpid(pinfo->pid, &status, 0); + if(success == -1) + { + LogLastError("waitpid() failed"); + return 0; + } + + ps->exit_success = WIFEXITED(status); + ps->exit_status = WEXITSTATUS(status); + return 1; +} + +#endif diff --git a/visualtest/src/mischelper.c b/visualtest/src/mischelper.c new file mode 100755 index 0000000000..a61f0c89a7 --- /dev/null +++ b/visualtest/src/mischelper.c @@ -0,0 +1,28 @@ +/** + * \file mischelper.c + * + * Source file with miscellaneous helper functions. + */ + +#include + +void +SDLVisualTest_HashString(char* str, char hash[33]) +{ + SDLTest_Md5Context md5c; + int i; + + if(!str) + { + SDLTest_LogError("str argument cannot be NULL"); + return; + } + + SDLTest_Md5Init(&md5c); + SDLTest_Md5Update(&md5c, (unsigned char*)str, SDL_strlen(str)); + SDLTest_Md5Final(&md5c); + + /* convert the md5 hash to an array of hexadecimal digits */ + for(i = 0; i < 16; i++) + SDL_snprintf(hash + 2 * i, 33 - 2 * i, "%02x", (int)md5c.digest[i]); +} \ No newline at end of file diff --git a/visualtest/src/parsehelper.c b/visualtest/src/parsehelper.c new file mode 100755 index 0000000000..7d601179ba --- /dev/null +++ b/visualtest/src/parsehelper.c @@ -0,0 +1,231 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file parsehelper.c + * + * Source file with some helper functions for parsing strings. + */ + +#include +#include "SDL_visualtest_harness_argparser.h" + +/* this function uses a DFA to count the number of tokens in an agruments string. + state 0 is taken to be the start and end state. State 1 handles a double quoted + argument and state 2 handles unquoted arguments. */ +static int +CountTokens(char* args) +{ + int index, num_tokens; + int state; /* current state of the DFA */ + + if(!args) + return -1; + + index = 0; + state = 0; + num_tokens = 0; + while(args[index]) + { + char ch = args[index]; + switch(state) + { + case 0: + if(ch == '\"') + { + state = 1; + num_tokens++; + } + else if(!SDL_isspace(ch)) + { + state = 2; + num_tokens++; + } + break; + + case 1: + if(ch == '\"') + { + state = 0; + } + break; + + case 2: + if(SDL_isspace(ch)) + { + state = 0; + } + break; + } + index++; + } + return num_tokens; +} + +/* - size of tokens is num_tokens + 1 +- uses the same DFA used in CountTokens() to split args into an array of strings */ +static int +TokenizeHelper(char* str, char** tokens, int num_tokens, int max_token_len) +{ + int index, state, done, st_index, token_index; + + if(!str) + { + SDLTest_LogError("str argument cannot be NULL"); + return 0; + } + if(!tokens) + { + SDLTest_LogError("tokens argument cannot be NULL"); + return 0; + } + if(num_tokens <= 0) + { + SDLTest_LogError("num_tokens argument must be positive"); + return 0; + } + if(max_token_len <= 0) + { + SDLTest_LogError("max_token_len argument must be positive"); + return 0; + } + + /* allocate memory for the tokens */ + tokens[num_tokens] = NULL; + for(index = 0; index < num_tokens; index++) + { + tokens[index] = (char*)SDL_malloc(max_token_len); + if(!tokens[index]) + { + int i; + SDLTest_LogError("malloc() failed."); + for(i = 0; i < index; i++) + SDL_free(tokens[i]); + return 0; + } + tokens[index][0] = '\0'; + } + + /* copy the tokens into the array */ + st_index = 0; + index = 0; + token_index = 0; + state = 0; + done = 0; + while(!done) + { + char ch = str[index]; + switch(state) + { + case 0: + if(ch == '\"') + { + state = 1; + st_index = index + 1; + } + else if(!ch) + done = 1; + else if(ch && !SDL_isspace(ch)) + { + state = 2; + st_index = index; + } + break; + + case 1: + if(ch == '\"') + { + int i; + state = 0; + for(i = st_index; i < index; i++) + { + tokens[token_index][i - st_index] = str[i]; + } + tokens[token_index][i - st_index] = '\0'; + token_index++; + } + else if(!ch) + { + SDLTest_LogError("Parsing Error!"); + done = 1; + } + break; + + case 2: + if(!ch) + done = 1; + if(SDL_isspace(ch) || !ch) + { + int i; + state = 0; + for(i = st_index; i < index; i++) + { + tokens[token_index][i - st_index] = str[i]; + } + tokens[token_index][i - st_index] = '\0'; + token_index++; + } + break; + } + index++; + } + return 1; +} + +char** +SDLVisualTest_Tokenize(char* str, int max_token_len) +{ + int num_tokens; + char** tokens; + + if(!str) + { + SDLTest_LogError("str argument cannot be NULL"); + return NULL; + } + if(max_token_len <= 0) + { + SDLTest_LogError("max_token_len argument must be positive"); + return NULL; + } + + num_tokens = CountTokens(str); + if(num_tokens == 0) + return NULL; + + tokens = (char**)SDL_malloc(sizeof(char*) * (num_tokens + 1)); + if(!TokenizeHelper(str, tokens, num_tokens, max_token_len)) + { + SDLTest_LogError("TokenizeHelper() failed"); + SDL_free(tokens); + return NULL; + } + return tokens; +} + +char** +SDLVisualTest_ParseArgsToArgv(char* args) +{ + char** argv; + int num_tokens; + + num_tokens = CountTokens(args); + if(num_tokens == 0) + return NULL; + + /* allocate space for arguments */ + argv = (char**)SDL_malloc((num_tokens + 2) * sizeof(char*)); + if(!argv) + { + SDLTest_LogError("malloc() failed."); + return NULL; + } + + /* tokenize */ + if(!TokenizeHelper(args, argv + 1, num_tokens, MAX_SUT_ARGS_LEN)) + { + SDLTest_LogError("TokenizeHelper() failed"); + SDL_free(argv); + return NULL; + } + argv[0] = NULL; + return argv; +} diff --git a/visualtest/src/rwhelper.c b/visualtest/src/rwhelper.c new file mode 100755 index 0000000000..a50254006c --- /dev/null +++ b/visualtest/src/rwhelper.c @@ -0,0 +1,131 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file rwhelper.c + * + * Source file with some helper functions for working with SDL_RWops. + */ + +#include +#include "SDL_visualtest_sut_configparser.h" +#include "SDL_visualtest_rwhelper.h" + +void +SDLVisualTest_RWHelperResetBuffer(SDLVisualTest_RWHelperBuffer* buffer) +{ + if(!buffer) + { + SDLTest_LogError("buffer argument cannot be NULL"); + return; + } + buffer->buffer_pos = 0; + buffer->buffer_width = 0; +} + +char +SDLVisualTest_RWHelperReadChar(SDL_RWops* rw, SDLVisualTest_RWHelperBuffer* buffer) +{ + if(!rw || !buffer) + return 0; + /* if the buffer has been consumed, we fill it up again */ + if(buffer->buffer_pos == buffer->buffer_width) + { + buffer->buffer_width = SDL_RWread(rw, buffer->buffer, 1, RWOPS_BUFFER_LEN); + buffer->buffer_pos = 0; + if(buffer->buffer_width == 0) + return 0; + } + buffer->buffer_pos++; + return buffer->buffer[buffer->buffer_pos - 1]; +} + +/* does not include new lines in the buffer and adds a trailing null character */ +char* +SDLVisualTest_RWHelperReadLine(SDL_RWops* rw, char* str, int size, + SDLVisualTest_RWHelperBuffer* buffer, + char comment_char) +{ + char ch; + int current_pos, done; + if(!rw) + { + SDLTest_LogError("rw argument cannot be NULL"); + return NULL; + } + if(!str) + { + SDLTest_LogError("str argument cannot be NULL"); + return NULL; + } + if(!buffer) + { + SDLTest_LogError("buffer argument cannot be NULL"); + return NULL; + } + if(size <= 0) + { + SDLTest_LogError("size argument should be positive"); + return NULL; + } + + done = 0; + while(!done) + { + /* ignore leading whitespace */ + for(ch = SDLVisualTest_RWHelperReadChar(rw, buffer); ch && SDL_isspace(ch); + ch = SDLVisualTest_RWHelperReadChar(rw, buffer)); + + for(current_pos = 0; + ch && ch != '\n' && ch != '\r' && ch != comment_char; + current_pos++) + { + str[current_pos] = ch; + if(current_pos >= size - 2) + { + current_pos++; + break; + } + ch = SDLVisualTest_RWHelperReadChar(rw, buffer); + } + + done = 1; + if(ch == comment_char) /* discard all characters until the next line */ + { + do + { + ch = SDLVisualTest_RWHelperReadChar(rw, buffer); + }while(ch && ch != '\n' && ch != '\r'); + + if(current_pos == 0) + done = 0; + } + } + if(current_pos == 0) + return NULL; + + str[current_pos] = '\0'; + return str; +} + +/* Lines with all whitespace are ignored */ +int +SDLVisualTest_RWHelperCountNonEmptyLines(SDL_RWops* rw, + SDLVisualTest_RWHelperBuffer* buffer, + char comment_char) +{ + int num_lines = 0; + char str[MAX_SUTOPTION_LINE_LENGTH]; + if(!rw) + { + SDLTest_LogError("rw argument cannot be NULL"); + return -1; + } + if(!buffer) + { + SDLTest_LogError("buffer argument cannot be NULL"); + return -1; + } + while(SDLVisualTest_RWHelperReadLine(rw, str, MAX_SUTOPTION_LINE_LENGTH, + buffer, comment_char)) + num_lines++; + return num_lines; +} \ No newline at end of file diff --git a/visualtest/src/screenshot.c b/visualtest/src/screenshot.c new file mode 100755 index 0000000000..7d19c7f88a --- /dev/null +++ b/visualtest/src/screenshot.c @@ -0,0 +1,136 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file screenshot.c + * + * Source file for the screenshot API. + */ + +#include "SDL_visualtest_mischelper.h" +#include + +int +SDLVisualTest_VerifyScreenshots(char* args, char* test_dir, char* verify_dir) +{ + int i, verify_len, return_code, test_len; + char hash[33]; + char* verify_path; /* path to the bmp file used for verification */ + char* test_path; /* path to the bmp file to be verified */ + SDL_RWops* rw; + SDL_Surface* verifybmp; + + return_code = 1; + + if(!args) + { + SDLTest_LogError("args argument cannot be NULL"); + return_code = -1; + goto verifyscreenshots_cleanup_generic; + } + if(!test_dir) + { + SDLTest_LogError("test_dir argument cannot be NULL"); + return_code = -1; + goto verifyscreenshots_cleanup_generic; + } + if(!verify_dir) + { + SDLTest_LogError("verify_dir argument cannot be NULL"); + return_code = -1; + goto verifyscreenshots_cleanup_generic; + } + + /* generate the MD5 hash */ + SDLVisualTest_HashString(args, hash); + + /* find the verification image */ + /* path_len + hash_len + some number of extra characters */ + verify_len = SDL_strlen(verify_dir) + 32 + 10; + verify_path = (char*)SDL_malloc(verify_len * sizeof(char)); + if(!verify_path) + { + SDLTest_LogError("malloc() failed"); + return_code = -1; + goto verifyscreenshots_cleanup_generic; + } + SDL_snprintf(verify_path, verify_len - 1, + "%s/%s.bmp", verify_dir, hash); + rw = SDL_RWFromFile(verify_path, "rb"); + if(!rw) + { + SDLTest_Log("Verification image does not exist." + " Please manually verify that the SUT is working correctly."); + return_code = 2; + goto verifyscreenshots_cleanup_verifypath; + } + + /* load the verification image */ + verifybmp = SDL_LoadBMP_RW(rw, 1); + if(!verifybmp) + { + SDLTest_LogError("SDL_LoadBMP_RW() failed"); + return_code = -1; + goto verifyscreenshots_cleanup_verifypath; + } + + /* load the test images and compare with the verification image */ + /* path_len + hash_len + some number of extra characters */ + test_len = SDL_strlen(test_dir) + 32 + 10; + test_path = (char*)SDL_malloc(test_len * sizeof(char)); + if(!test_path) + { + SDLTest_LogError("malloc() failed"); + return_code = -1; + goto verifyscreenshots_cleanup_verifybmp; + } + + for(i = 1; ; i++) + { + SDL_RWops* testrw; + SDL_Surface* testbmp; + + if(i == 1) + SDL_snprintf(test_path, test_len - 1, "%s/%s.bmp", test_dir, hash); + else + SDL_snprintf(test_path, test_len - 1, "%s/%s_%d.bmp", test_dir, hash, i); + testrw = SDL_RWFromFile(test_path, "rb"); + + /* we keep going until we've iterated through the screenshots each + SUT window */ + if(!testrw) + break; + + /* load the test screenshot */ + testbmp = SDL_LoadBMP_RW(testrw, 1); + if(!testbmp) + { + SDLTest_LogError("SDL_LoadBMP_RW() failed"); + return_code = -1; + goto verifyscreenshots_cleanup_verifybmp; + } + + /* compare with the verification image */ + if(SDLTest_CompareSurfaces(testbmp, verifybmp, 0) != 0) + { + return_code = 0; + SDL_FreeSurface(testbmp); + goto verifyscreenshots_cleanup_verifybmp; + } + + SDL_FreeSurface(testbmp); + } + + if(i == 1) + { + SDLTest_LogError("No verification images found"); + return_code = -1; + } + +verifyscreenshots_cleanup_verifybmp: + SDL_FreeSurface(verifybmp); + +verifyscreenshots_cleanup_verifypath: + SDL_free(verify_path); + +verifyscreenshots_cleanup_generic: + return return_code; +} diff --git a/visualtest/src/sut_configparser.c b/visualtest/src/sut_configparser.c new file mode 100755 index 0000000000..cf18b6208f --- /dev/null +++ b/visualtest/src/sut_configparser.c @@ -0,0 +1,232 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file sut_configparser.c + * + * Source file for the parser for SUT config files. + */ + +#include +#include +#include +#include +#include "SDL_visualtest_sut_configparser.h" +#include "SDL_visualtest_parsehelper.h" +#include "SDL_visualtest_rwhelper.h" + +int +SDLVisualTest_ParseSUTConfig(char* file, SDLVisualTest_SUTConfig* config) +{ + char line[MAX_SUTOPTION_LINE_LENGTH]; + SDLVisualTest_RWHelperBuffer buffer; + char* token_ptr; + char* token_end; + int num_lines, i, token_len; + SDL_RWops* rw; + + if(!file) + { + SDLTest_LogError("file argument cannot be NULL"); + return 0; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return 0; + } + + /* count the number of lines */ + rw = SDL_RWFromFile(file, "r"); + if(!rw) + { + SDLTest_LogError("SDL_RWFromFile() failed"); + return 0; + } + SDLVisualTest_RWHelperResetBuffer(&buffer); + num_lines = SDLVisualTest_RWHelperCountNonEmptyLines(rw, &buffer, '#'); + if(num_lines == -1) + return 0; + else if(num_lines == 0) + { + config->options = NULL; + config->num_options = 0; + SDL_RWclose(rw); + return 1; + } + + /* allocate memory */ + SDL_RWseek(rw, 0, RW_SEEK_SET); + SDLVisualTest_RWHelperResetBuffer(&buffer); + config->num_options = num_lines; + config->options = (SDLVisualTest_SUTOption*)SDL_malloc(num_lines * + sizeof(SDLVisualTest_SUTOption)); + if(!config->options) + { + SDLTest_LogError("malloc() failed"); + SDL_RWclose(rw); + return 0; + } + + /* actually parse the options */ + for(i = 0; i < num_lines; i++) + { + if(!SDLVisualTest_RWHelperReadLine(rw, line, MAX_SUTOPTION_LINE_LENGTH, + &buffer, '#')) + { + SDLTest_LogError("SDLVisualTest_RWHelperReadLine() failed"); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + + /* parse name */ + token_ptr = strtok(line, ", "); + if(!token_ptr) + { + SDLTest_LogError("Could not parse line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + token_len = SDL_strlen(token_ptr) + 1; + SDL_strlcpy(config->options[i].name, token_ptr, token_len); + + /* parse type */ + token_ptr = strtok(NULL, ", "); + if(!token_ptr) + { + SDLTest_LogError("Could not parse line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + if(SDL_strcmp(token_ptr, "string") == 0) + config->options[i].type = SDL_SUT_OPTIONTYPE_STRING; + else if(SDL_strcmp(token_ptr, "integer") == 0) + config->options[i].type = SDL_SUT_OPTIONTYPE_INT; + else if(SDL_strcmp(token_ptr, "enum") == 0) + config->options[i].type = SDL_SUT_OPTIONTYPE_ENUM; + else if(SDL_strcmp(token_ptr, "boolean") == 0) + config->options[i].type = SDL_SUT_OPTIONTYPE_BOOL; + else + { + SDLTest_LogError("Could not parse type token at line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + + /* parse values */ + token_ptr = strtok(NULL, "]"); + if(!token_ptr) + { + SDLTest_LogError("Could not parse line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + token_ptr = SDL_strchr(token_ptr, '['); + if(!token_ptr) + { + SDLTest_LogError("Could not parse enum token at line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + token_ptr++; + if(config->options[i].type == SDL_SUT_OPTIONTYPE_INT) + { + if(SDL_sscanf(token_ptr, "%d %d", &config->options[i].data.range.min, + &config->options[i].data.range.max) != 2) + { + config->options[i].data.range.min = INT_MIN; + config->options[i].data.range.max = INT_MAX; + } + } + else if(config->options[i].type == SDL_SUT_OPTIONTYPE_ENUM) + { + config->options[i].data.enum_values = SDLVisualTest_Tokenize(token_ptr, + MAX_SUTOPTION_ENUMVAL_LEN); + if(!config->options[i].data.enum_values) + { + SDLTest_LogError("Could not parse enum token at line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + } + + /* parse required */ + token_ptr = strtok(NULL, ", "); + if(!token_ptr) + { + SDLTest_LogError("Could not parse line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + + if(SDL_strcmp(token_ptr, "true") == 0) + config->options[i].required = SDL_TRUE; + else if(SDL_strcmp(token_ptr, "false") == 0) + config->options[i].required = SDL_FALSE; + else + { + SDLTest_LogError("Could not parse required token at line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + + /* parse categories */ + token_ptr = strtok(NULL, ","); + if(!token_ptr) + { + SDLTest_LogError("Could not parse line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + token_ptr = SDL_strchr(token_ptr, '['); + if(!token_ptr) + { + SDLTest_LogError("Could not parse enum token at line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + token_ptr++; + token_end = SDL_strchr(token_ptr, ']'); + *token_end = '\0'; + if(!token_end) + { + SDLTest_LogError("Could not parse enum token at line %d", i + 1); + SDL_free(config->options); + SDL_RWclose(rw); + return 0; + } + config->options[i].categories = SDLVisualTest_Tokenize(token_ptr, + MAX_SUTOPTION_CATEGORY_LEN); + } + SDL_RWclose(rw); + return 1; +} + +void +SDLVisualTest_FreeSUTConfig(SDLVisualTest_SUTConfig* config) +{ + if(config && config->options) + { + SDLVisualTest_SUTOption* option; + for(option = config->options; + option != config->options + config->num_options; option++) + { + if(option->categories) + SDL_free(option->categories); + if(option->type == SDL_SUT_OPTIONTYPE_ENUM && option->data.enum_values) + SDL_free(option->data.enum_values); + } + SDL_free(config->options); + config->options = NULL; + config->num_options = 0; + } +} diff --git a/visualtest/src/testharness.c b/visualtest/src/testharness.c new file mode 100755 index 0000000000..25e41a611f --- /dev/null +++ b/visualtest/src/testharness.c @@ -0,0 +1,533 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file testharness.c + * + * Source file for the test harness. + */ + +#include +#include +#include +#include +#include "SDL_visualtest_harness_argparser.h" +#include "SDL_visualtest_process.h" +#include "SDL_visualtest_variators.h" +#include "SDL_visualtest_screenshot.h" +#include "SDL_visualtest_mischelper.h" + +#if defined(__WIN32__) && !defined(__CYGWIN__) +#include +#elif defined(__WIN32__) && defined(__CYGWIN__) +#include +#elif defined(__LINUX__) +#include +#include +#include +#else +#error "Unsupported platform" +#endif + +/** Code for the user event triggered when a new action is to be executed */ +#define ACTION_TIMER_EVENT 0 +/** Code for the user event triggered when the maximum timeout is reached */ +#define KILL_TIMER_EVENT 1 +/** FPS value used for delays in the action loop */ +#define ACTION_LOOP_FPS 10 + +/** Value returned by RunSUTAndTest() when the test has passed */ +#define TEST_PASSED 1 +/** Value returned by RunSUTAndTest() when the test has failed */ +#define TEST_FAILED 0 +/** Value returned by RunSUTAndTest() on a fatal error */ +#define TEST_ERROR -1 + +static SDL_ProcessInfo pinfo; +static SDL_ProcessExitStatus sut_exitstatus; +static SDLVisualTest_HarnessState state; +static SDLVisualTest_Variator variator; +static SDLVisualTest_ActionNode* current; /* the current action being performed */ +static SDL_TimerID action_timer, kill_timer; + +/* returns a char* to be passed as the format argument of a printf-style function. */ +static char* +usage() +{ + return "Usage: \n%s --sutapp xyz" + " [--sutargs abc | --parameter-config xyz.parameters" + " [--variator exhaustive|random]" + " [--num-variations N] [--no-launch]] [--timeout hh:mm:ss]" + " [--action-config xyz.actions]" + " [--output-dir /path/to/output]" + " [--verify-dir /path/to/verify]" + " or --config app.config"; +} + +/* register Ctrl+C handlers */ +#if defined(__LINUX__) || defined(__CYGWIN__) +static void +CtrlCHandlerCallback(int signum) +{ + SDL_Event event; + SDLTest_Log("Ctrl+C received"); + event.type = SDL_QUIT; + SDL_PushEvent(&event); +} +#endif + +static Uint32 +ActionTimerCallback(Uint32 interval, void* param) +{ + SDL_Event event; + SDL_UserEvent userevent; + Uint32 next_action_time; + + /* push an event to handle the action */ + userevent.type = SDL_USEREVENT; + userevent.code = ACTION_TIMER_EVENT; + userevent.data1 = ¤t->action; + userevent.data2 = NULL; + + event.type = SDL_USEREVENT; + event.user = userevent; + SDL_PushEvent(&event); + + /* calculate the new interval and return it */ + if(current->next) + next_action_time = current->next->action.time - current->action.time; + else + { + next_action_time = 0; + action_timer = 0; + } + + current = current->next; + return next_action_time; +} + +static Uint32 +KillTimerCallback(Uint32 interval, void* param) +{ + SDL_Event event; + SDL_UserEvent userevent; + + userevent.type = SDL_USEREVENT; + userevent.code = KILL_TIMER_EVENT; + userevent.data1 = NULL; + userevent.data2 = NULL; + + event.type = SDL_USEREVENT; + event.user = userevent; + SDL_PushEvent(&event); + + kill_timer = 0; + return 0; +} + +static int +ProcessAction(SDLVisualTest_Action* action, int* sut_running, char* args) +{ + if(!action || !sut_running) + return TEST_ERROR; + + switch(action->type) + { + case SDL_ACTION_KILL: + SDLTest_Log("Action: Kill SUT"); + if(SDL_IsProcessRunning(&pinfo) == 1 && + !SDL_KillProcess(&pinfo, &sut_exitstatus)) + { + SDLTest_LogError("SDL_KillProcess() failed"); + return TEST_ERROR; + } + *sut_running = 0; + break; + + case SDL_ACTION_QUIT: + SDLTest_Log("Action: Quit SUT"); + if(SDL_IsProcessRunning(&pinfo) == 1 && + !SDL_QuitProcess(&pinfo, &sut_exitstatus)) + { + SDLTest_LogError("SDL_QuitProcess() failed"); + return TEST_FAILED; + } + *sut_running = 0; + break; + + case SDL_ACTION_LAUNCH: + { + char* path; + char* args; + SDL_ProcessInfo action_process; + SDL_ProcessExitStatus ps; + + path = action->extra.process.path; + args = action->extra.process.args; + if(args) + { + SDLTest_Log("Action: Launch process: %s with arguments: %s", + path, args); + } + else + SDLTest_Log("Action: Launch process: %s", path); + if(!SDL_LaunchProcess(path, args, &action_process)) + { + SDLTest_LogError("SDL_LaunchProcess() failed"); + return TEST_ERROR; + } + + /* small delay so that the process can do its job */ + SDL_Delay(1000); + + if(SDL_IsProcessRunning(&action_process) > 0) + { + SDLTest_LogError("Process %s took too long too complete." + " Force killing...", action->extra); + if(!SDL_KillProcess(&action_process, &ps)) + { + SDLTest_LogError("SDL_KillProcess() failed"); + return TEST_ERROR; + } + } + } + break; + + case SDL_ACTION_SCREENSHOT: + { + char path[MAX_PATH_LEN], hash[33]; + + SDLTest_Log("Action: Take screenshot"); + /* can't take a screenshot if the SUT isn't running */ + if(SDL_IsProcessRunning(&pinfo) != 1) + { + SDLTest_LogError("SUT has quit."); + *sut_running = 0; + return TEST_FAILED; + } + + /* file name for the screenshot image */ + SDLVisualTest_HashString(args, hash); + SDL_snprintf(path, MAX_PATH_LEN, "%s/%s", state.output_dir, hash); + if(!SDLVisualTest_ScreenshotProcess(&pinfo, path)) + { + SDLTest_LogError("SDLVisualTest_ScreenshotProcess() failed"); + return TEST_ERROR; + } + } + break; + + case SDL_ACTION_VERIFY: + { + int ret; + + SDLTest_Log("Action: Verify screenshot"); + ret = SDLVisualTest_VerifyScreenshots(args, state.output_dir, + state.verify_dir); + + if(ret == -1) + { + SDLTest_LogError("SDLVisualTest_VerifyScreenshots() failed"); + return TEST_ERROR; + } + else if(ret == 0) + { + SDLTest_Log("Verification failed: Images were not equal."); + return TEST_FAILED; + } + else if(ret == 1) + SDLTest_Log("Verification successful."); + else + { + SDLTest_Log("Verfication skipped."); + return TEST_FAILED; + } + } + break; + + default: + SDLTest_LogError("Invalid action type"); + return TEST_ERROR; + break; + } + + return TEST_PASSED; +} + +static int +RunSUTAndTest(char* sutargs, int variation_num) +{ + int success, sut_running, return_code; + char hash[33]; + SDL_Event event; + + return_code = TEST_PASSED; + + if(!sutargs) + { + SDLTest_LogError("sutargs argument cannot be NULL"); + return_code = TEST_ERROR; + goto runsutandtest_cleanup_generic; + } + + SDLVisualTest_HashString(sutargs, hash); + SDLTest_Log("Hash: %s", hash); + + success = SDL_LaunchProcess(state.sutapp, sutargs, &pinfo); + if(!success) + { + SDLTest_Log("Could not launch SUT."); + return_code = TEST_ERROR; + goto runsutandtest_cleanup_generic; + } + SDLTest_Log("SUT launch successful."); + SDLTest_Log("Process will be killed in %d milliseconds", state.timeout); + sut_running = 1; + + /* launch the timers */ + SDLTest_Log("Performing actions.."); + current = state.action_queue.front; + action_timer = 0; + kill_timer = 0; + if(current) + { + action_timer = SDL_AddTimer(current->action.time, ActionTimerCallback, NULL); + if(!action_timer) + { + SDLTest_LogError("SDL_AddTimer() failed"); + return_code = TEST_ERROR; + goto runsutandtest_cleanup_timer; + } + } + kill_timer = SDL_AddTimer(state.timeout, KillTimerCallback, NULL); + if(!kill_timer) + { + SDLTest_LogError("SDL_AddTimer() failed"); + return_code = TEST_ERROR; + goto runsutandtest_cleanup_timer; + } + + /* the timer stops running if the actions queue is empty, and the + SUT stops running if it crashes or if we encounter a KILL/QUIT action */ + while(sut_running) + { + /* process the actions by using an event queue */ + while(SDL_PollEvent(&event)) + { + if(event.type == SDL_USEREVENT) + { + if(event.user.code == ACTION_TIMER_EVENT) + { + SDLVisualTest_Action* action; + + action = (SDLVisualTest_Action*)event.user.data1; + + switch(ProcessAction(action, &sut_running, sutargs)) + { + case TEST_PASSED: + break; + + case TEST_FAILED: + return_code = TEST_FAILED; + goto runsutandtest_cleanup_timer; + break; + + default: + SDLTest_LogError("ProcessAction() failed"); + return_code = TEST_ERROR; + goto runsutandtest_cleanup_timer; + } + } + else if(event.user.code == KILL_TIMER_EVENT) + { + SDLTest_LogError("Maximum timeout reached. Force killing.."); + return_code = TEST_FAILED; + goto runsutandtest_cleanup_timer; + } + } + else if(event.type == SDL_QUIT) + { + SDLTest_LogError("Received QUIT event. Testharness is quitting.."); + return_code = TEST_ERROR; + goto runsutandtest_cleanup_timer; + } + } + SDL_Delay(1000/ACTION_LOOP_FPS); + } + + SDLTest_Log("SUT exit code was: %d", sut_exitstatus.exit_status); + if(sut_exitstatus.exit_status == 0) + { + return_code = TEST_PASSED; + goto runsutandtest_cleanup_timer; + } + else + { + return_code = TEST_FAILED; + goto runsutandtest_cleanup_timer; + } + + return_code = TEST_ERROR; + goto runsutandtest_cleanup_generic; + +runsutandtest_cleanup_timer: + if(action_timer && !SDL_RemoveTimer(action_timer)) + { + SDLTest_Log("SDL_RemoveTimer() failed"); + return_code = TEST_ERROR; + } + + if(kill_timer && !SDL_RemoveTimer(kill_timer)) + { + SDLTest_Log("SDL_RemoveTimer() failed"); + return_code = TEST_ERROR; + } +/* runsutandtest_cleanup_process: */ + if(SDL_IsProcessRunning(&pinfo) && !SDL_KillProcess(&pinfo, &sut_exitstatus)) + { + SDLTest_Log("SDL_KillProcess() failed"); + return_code = TEST_ERROR; + } +runsutandtest_cleanup_generic: + return return_code; +} + +/** Entry point for testharness */ +int +main(int argc, char* argv[]) +{ + int i, passed, return_code, failed; + + /* freeing resources, linux style! */ + return_code = 0; + + if(argc < 2) + { + SDLTest_Log(usage(), argv[0]); + goto cleanup_generic; + } + +#if defined(__LINUX__) || defined(__CYGWIN__) + signal(SIGINT, CtrlCHandlerCallback); +#endif + + /* parse arguments */ + if(!SDLVisualTest_ParseHarnessArgs(argv + 1, &state)) + { + SDLTest_Log(usage(), argv[0]); + return_code = 1; + goto cleanup_generic; + } + SDLTest_Log("Parsed harness arguments successfully."); + + /* initialize SDL */ + if(SDL_Init(SDL_INIT_TIMER) == -1) + { + SDLTest_LogError("SDL_Init() failed."); + SDLVisualTest_FreeHarnessState(&state); + return_code = 1; + goto cleanup_harness_state; + } + + /* create an output directory if none exists */ +#if defined(__LINUX__) || defined(__CYGWIN__) + mkdir(state.output_dir, 0777); +#elif defined(__WIN32__) + _mkdir(state.output_dir); +#else +#error "Unsupported platform" +#endif + + /* test with sutargs */ + if(SDL_strlen(state.sutargs)) + { + SDLTest_Log("Running: %s %s", state.sutapp, state.sutargs); + if(!state.no_launch) + { + switch(RunSUTAndTest(state.sutargs, 0)) + { + case TEST_PASSED: + SDLTest_Log("Status: PASSED"); + break; + + case TEST_FAILED: + SDLTest_Log("Status: FAILED"); + break; + + case TEST_ERROR: + SDLTest_LogError("Some error occurred while testing."); + return_code = 1; + goto cleanup_sdl; + break; + } + } + } + + if(state.sut_config.num_options > 0) + { + char* variator_name = state.variator_type == SDL_VARIATOR_RANDOM ? + "RANDOM" : "EXHAUSTIVE"; + if(state.num_variations > 0) + SDLTest_Log("Testing SUT with variator: %s for %d variations", + variator_name, state.num_variations); + else + SDLTest_Log("Testing SUT with variator: %s and ALL variations", + variator_name); + /* initialize the variator */ + if(!SDLVisualTest_InitVariator(&variator, &state.sut_config, + state.variator_type, 0)) + { + SDLTest_LogError("Could not initialize variator"); + return_code = 1; + goto cleanup_sdl; + } + + /* iterate through all the variations */ + passed = 0; + failed = 0; + for(i = 0; state.num_variations > 0 ? (i < state.num_variations) : 1; i++) + { + char* args = SDLVisualTest_GetNextVariation(&variator); + if(!args) + break; + SDLTest_Log("\nVariation number: %d\nArguments: %s", i + 1, args); + + if(!state.no_launch) + { + switch(RunSUTAndTest(args, i + 1)) + { + case TEST_PASSED: + SDLTest_Log("Status: PASSED"); + passed++; + break; + + case TEST_FAILED: + SDLTest_Log("Status: FAILED"); + failed++; + break; + + case TEST_ERROR: + SDLTest_LogError("Some error occurred while testing."); + goto cleanup_variator; + break; + } + } + } + if(!state.no_launch) + { + /* report stats */ + SDLTest_Log("Testing complete."); + SDLTest_Log("%d/%d tests passed.", passed, passed + failed); + } + goto cleanup_variator; + } + + goto cleanup_sdl; + +cleanup_variator: + SDLVisualTest_FreeVariator(&variator); +cleanup_sdl: + SDL_Quit(); +cleanup_harness_state: + SDLVisualTest_FreeHarnessState(&state); +cleanup_generic: + return return_code; +} diff --git a/visualtest/src/variator_common.c b/visualtest/src/variator_common.c new file mode 100755 index 0000000000..dec3d8aacb --- /dev/null +++ b/visualtest/src/variator_common.c @@ -0,0 +1,225 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file variator_common.c + * + * Source file for some common functionality used by variators. + */ + +#include +#include "SDL_visualtest_variator_common.h" + +int +SDLVisualTest_NextValue(SDLVisualTest_SUTOptionValue* var, + SDLVisualTest_SUTOption* opt) +{ + if(!var) + { + SDLTest_LogError("var argument cannot be NULL"); + return -1; + } + if(!opt) + { + SDLTest_LogError("opt argument cannot be NULL"); + return -1; + } + + switch(opt->type) + { + case SDL_SUT_OPTIONTYPE_BOOL: + if(var->bool_value) + { + var->bool_value = SDL_FALSE; + return 1; + } + else + { + var->bool_value = SDL_TRUE; + return 0; + } + break; + + case SDL_SUT_OPTIONTYPE_ENUM: + var->enumerated.index++; + if(!opt->data.enum_values[var->enumerated.index]) + { + var->enumerated.index = 0; + return 1; + } + return 0; + break; + + case SDL_SUT_OPTIONTYPE_INT: + { + int increment = (opt->data.range.max - opt->data.range.min) / + SDL_SUT_INTEGER_OPTION_TEST_STEPS; + /* prevents infinite loop when rounding */ + if(increment == 0) + increment = 1; + var->integer.value += increment; + if(var->integer.value > opt->data.range.max) + { + var->integer.value = opt->data.range.min; + return 1; + } + return 0; + } + break; + + case SDL_SUT_OPTIONTYPE_STRING: + return 1; + break; + } + return -1; +} + +int +SDLVisualTest_MakeStrFromVariation(SDLVisualTest_Variation* variation, + SDLVisualTest_SUTConfig* config, + char* buffer, int size) +{ + int i, index; + SDLVisualTest_SUTOptionValue* vars; + SDLVisualTest_SUTOption* options; + if(!variation) + { + SDLTest_LogError("variation argument cannot be NULL"); + return 0; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return 0; + } + if(!buffer) + { + SDLTest_LogError("buffer argument cannot be NULL"); + return 0; + } + if(size <= 0) + { + SDLTest_LogError("size argument should be positive"); + return 0; + } + + index = 0; + buffer[0] = '\0'; + options = config->options; + vars = variation->vars; + for(i = 0; i < variation->num_vars; i++) + { + int n, enum_index; + if(index >= size - 1) + { + SDLTest_LogError("String did not fit in buffer size"); + return 0; + } + switch(options[i].type) + { + case SDL_SUT_OPTIONTYPE_BOOL: + if(vars[i].bool_value) + { + n = SDL_snprintf(buffer + index, size - index, "%s ", + options[i].name); + if(n <= 0) + { + SDLTest_LogError("SDL_snprintf() failed"); + return 0; + } + index += n; + } + break; + + case SDL_SUT_OPTIONTYPE_ENUM: + if(vars[i].enumerated.on) + { + enum_index = vars[i].enumerated.index; + n = SDL_snprintf(buffer + index, size - index, "%s %s ", + options[i].name, options[i].data.enum_values[enum_index]); + index += n; + } + break; + + case SDL_SUT_OPTIONTYPE_INT: + if(vars[i].integer.on) + { + n = SDL_snprintf(buffer + index, size - index, "%s %d ", + options[i].name, vars[i].integer.value); + index += n; + } + break; + + case SDL_SUT_OPTIONTYPE_STRING: + if(vars[i].string.on) + { + n = SDL_snprintf(buffer + index, size - index, "%s %s ", + options[i].name, vars[i].string.value); + index += n; + } + break; + } + } + return 1; +} + +int +SDLVisualTest_InitVariation(SDLVisualTest_Variation* variation, + SDLVisualTest_SUTConfig* config) +{ + int i; + SDLVisualTest_SUTOptionValue* vars; + SDLVisualTest_SUTOption* options; + if(!variation) + { + SDLTest_LogError("variation argument cannot be NULL"); + return 0; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return 0; + } + + /* initialize the first variation */ + if(config->num_options <= 0) + { + SDLTest_LogError("config->num_options must be positive"); + return 0; + } + variation->vars = (SDLVisualTest_SUTOptionValue*)SDL_malloc(config->num_options * + sizeof(SDLVisualTest_SUTOptionValue)); + if(!variation->vars) + { + SDLTest_LogError("malloc() failed"); + return 0; + } + variation->num_vars = config->num_options; + vars = variation->vars; + options = config->options; + for(i = 0; i < variation->num_vars; i++) + { + switch(options[i].type) + { + case SDL_SUT_OPTIONTYPE_BOOL: + vars[i].bool_value = SDL_FALSE; + break; + + case SDL_SUT_OPTIONTYPE_ENUM: + vars[i].enumerated.on = SDL_TRUE; + vars[i].enumerated.index = 0; + break; + + case SDL_SUT_OPTIONTYPE_INT: + { + vars[i].integer.on = SDL_TRUE; + vars[i].integer.value = options[i].data.range.min; + } + break; + + case SDL_SUT_OPTIONTYPE_STRING: + vars[i].string.on = SDL_TRUE; + vars[i].string.value = options[i].name; + break; + } + } + return 1; +} \ No newline at end of file diff --git a/visualtest/src/variator_exhaustive.c b/visualtest/src/variator_exhaustive.c new file mode 100755 index 0000000000..2a0ab35c72 --- /dev/null +++ b/visualtest/src/variator_exhaustive.c @@ -0,0 +1,132 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file variator_exhaustive.c + * + * Source file for the variator that tests the SUT with all the different + * variations of input parameters that are valid. + */ + +#include +#include +#include "SDL_visualtest_sut_configparser.h" +#include "SDL_visualtest_exhaustive_variator.h" + +static int +NextVariation(SDLVisualTest_Variation* variation, + SDLVisualTest_SUTConfig* config) +{ + int i, carry; + if(!variation) + { + SDLTest_LogError("variation argument cannot be NULL"); + return -1; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return -1; + } + + carry = 1; + for(i = 0; i < variation->num_vars; i++) + { + carry = SDLVisualTest_NextValue(&variation->vars[i], &config->options[i]); + if(carry != 1) + break; + } + + if(carry == 1) /* we're done, we've tried all possible variations */ + return 0; + if(carry == 0) + return 1; + SDLTest_LogError("NextVariation() failed"); + return -1; +} + +int +SDLVisualTest_InitExhaustiveVariator(SDLVisualTest_ExhaustiveVariator* variator, + SDLVisualTest_SUTConfig* config) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return 0; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return 0; + } + + SDLTest_FuzzerInit(time(NULL)); + + variator->config = *config; + variator->variation.num_vars = 0; + variator->variation.vars = NULL; + + return 1; +} + +/* TODO: Right now variations where an option is not specified at all are not + tested for. This can be implemented by switching the on attribute for integer, + enum and string options to true and false. */ +char* +SDLVisualTest_GetNextExhaustiveVariation(SDLVisualTest_ExhaustiveVariator* variator) +{ + int success; + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return NULL; + } + + if(!variator->variation.vars) /* the first time this function is called */ + { + success = SDLVisualTest_InitVariation(&variator->variation, + &variator->config); + if(!success) + { + SDLTest_LogError("SDLVisualTest_InitVariation() failed"); + return NULL; + } + success = SDLVisualTest_MakeStrFromVariation(&variator->variation, + &variator->config, variator->buffer, MAX_SUT_ARGS_LEN); + if(!success) + { + SDLTest_LogError("SDLVisualTest_MakeStrFromVariation() failed"); + return NULL; + } + return variator->buffer; + } + else + { + success = NextVariation(&variator->variation, &variator->config); + if(success == 1) + { + success = SDLVisualTest_MakeStrFromVariation(&variator->variation, + &variator->config, variator->buffer, MAX_SUT_ARGS_LEN); + if(!success) + { + SDLTest_LogError("SDLVisualTest_MakeStrFromVariation() failed"); + return NULL; + } + return variator->buffer; + } + else if(success == -1) + SDLTest_LogError("NextVariation() failed."); + return NULL; + } + return NULL; +} + +void +SDLVisualTest_FreeExhaustiveVariator(SDLVisualTest_ExhaustiveVariator* variator) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return; + } + SDL_free(variator->variation.vars); + variator->variation.vars = NULL; +} \ No newline at end of file diff --git a/visualtest/src/variator_random.c b/visualtest/src/variator_random.c new file mode 100755 index 0000000000..14b5d48a80 --- /dev/null +++ b/visualtest/src/variator_random.c @@ -0,0 +1,111 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file variator_random.c + * + * Source file for the variator that tests the SUT with random variations to the + * input parameters. + */ + +#include +#include +#include "SDL_visualtest_random_variator.h" + +int +SDLVisualTest_InitRandomVariator(SDLVisualTest_RandomVariator* variator, + SDLVisualTest_SUTConfig* config, Uint64 seed) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return 0; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return 0; + } + + if(seed) + SDLTest_FuzzerInit(seed); + else + SDLTest_FuzzerInit(time(NULL)); + + variator->config = *config; + + if(!SDLVisualTest_InitVariation(&variator->variation, &variator->config)) + { + SDLTest_LogError("SDLVisualTest_InitVariation() failed"); + return 0; + } + + return 1; +} + +char* +SDLVisualTest_GetNextRandomVariation(SDLVisualTest_RandomVariator* variator) +{ + SDLVisualTest_SUTOptionValue* vars; + SDLVisualTest_SUTOption* options; + int i; + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return NULL; + } + + /* to save typing */ + vars = variator->variation.vars; + options = variator->config.options; + + /* generate a random variation */ + for(i = 0; i < variator->variation.num_vars; i++) + { + switch(options[i].type) + { + case SDL_SUT_OPTIONTYPE_BOOL: + vars[i].bool_value = SDLTest_RandomIntegerInRange(0, 1) ? SDL_FALSE : + SDL_TRUE; + break; + + case SDL_SUT_OPTIONTYPE_ENUM: + { + int emx = 0; + while(options[i].data.enum_values[emx]) + emx++; + vars[i].enumerated.index = SDLTest_RandomIntegerInRange(0, emx - 1); + } + break; + + case SDL_SUT_OPTIONTYPE_INT: + vars[i].integer.value = SDLTest_RandomIntegerInRange( + options[i].data.range.min, + options[i].data.range.max); + break; + + case SDL_SUT_OPTIONTYPE_STRING: + // String values are left unchanged + break; + } + } + + /* convert variation to an arguments string */ + if(!SDLVisualTest_MakeStrFromVariation(&variator->variation, &variator->config, + variator->buffer, MAX_SUT_ARGS_LEN)) + { + SDLTest_LogError("SDLVisualTest_MakeStrFromVariation() failed"); + return NULL; + } + + return variator->buffer; +} + +void SDLVisualTest_FreeRandomVariator(SDLVisualTest_RandomVariator* variator) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return; + } + SDL_free(variator->variation.vars); + variator->variation.vars = NULL; +} \ No newline at end of file diff --git a/visualtest/src/variators.c b/visualtest/src/variators.c new file mode 100755 index 0000000000..2d63113c53 --- /dev/null +++ b/visualtest/src/variators.c @@ -0,0 +1,93 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file variators.c + * + * Source file for the operations that act on variators. + */ + +#include +#include "SDL_visualtest_variators.h" + +int +SDLVisualTest_InitVariator(SDLVisualTest_Variator* variator, + SDLVisualTest_SUTConfig* config, + SDLVisualTest_VariatorType type, + Uint64 seed) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return 0; + } + if(!config) + { + SDLTest_LogError("config argument cannot be NULL"); + return 0; + } + + variator->type = type; + switch(type) + { + case SDL_VARIATOR_EXHAUSTIVE: + return SDLVisualTest_InitExhaustiveVariator(&variator->data.exhaustive, + config); + break; + + case SDL_VARIATOR_RANDOM: + return SDLVisualTest_InitRandomVariator(&variator->data.random, + config, seed); + break; + + default: + SDLTest_LogError("Invalid value for variator type"); + return 0; + } + return 0; +} + +char* +SDLVisualTest_GetNextVariation(SDLVisualTest_Variator* variator) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return NULL; + } + switch(variator->type) + { + case SDL_VARIATOR_EXHAUSTIVE: + return SDLVisualTest_GetNextExhaustiveVariation(&variator->data.exhaustive); + break; + + case SDL_VARIATOR_RANDOM: + return SDLVisualTest_GetNextRandomVariation(&variator->data.random); + break; + + default: + SDLTest_LogError("Invalid value for variator type"); + return NULL; + } + return NULL; +} + +void SDLVisualTest_FreeVariator(SDLVisualTest_Variator* variator) +{ + if(!variator) + { + SDLTest_LogError("variator argument cannot be NULL"); + return; + } + switch(variator->type) + { + case SDL_VARIATOR_EXHAUSTIVE: + SDLVisualTest_FreeExhaustiveVariator(&variator->data.exhaustive); + break; + + case SDL_VARIATOR_RANDOM: + SDLVisualTest_FreeRandomVariator(&variator->data.random); + break; + + default: + SDLTest_LogError("Invalid value for variator type"); + } +} \ No newline at end of file diff --git a/visualtest/src/windows/windows_process.c b/visualtest/src/windows/windows_process.c new file mode 100755 index 0000000000..ad0938951e --- /dev/null +++ b/visualtest/src/windows/windows_process.c @@ -0,0 +1,284 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file windows_process.c + * + * Source file for the process API on windows. + */ + + +#include +#include +#include +#include + +#include "SDL_visualtest_process.h" + +#if defined(__WIN32__) + +void +LogLastError(char* str) +{ + LPVOID buffer; + DWORD dw = GetLastError(); + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM| + FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buffer, + 0, NULL); + SDLTest_LogError("%s: %s", str, (char*)buffer); + LocalFree(buffer); +} + +int +SDL_LaunchProcess(char* file, char* args, SDL_ProcessInfo* pinfo) +{ + BOOL success; + char* working_directory; + char* command_line; + int path_length, args_length; + STARTUPINFO sui = {0}; + sui.cb = sizeof(sui); + + if(!file) + { + SDLTest_LogError("Path to executable to launched cannot be NULL."); + return 0; + } + if(!pinfo) + { + SDLTest_LogError("pinfo cannot be NULL."); + return 0; + } + + /* get the working directory of the process being launched, so that + the process can load any resources it has in it's working directory */ + path_length = SDL_strlen(file); + if(path_length == 0) + { + SDLTest_LogError("Length of the file parameter is zero."); + return 0; + } + + working_directory = (char*)SDL_malloc(path_length + 1); + if(!working_directory) + { + SDLTest_LogError("Could not allocate working_directory - malloc() failed."); + return 0; + } + + SDL_memcpy(working_directory, file, path_length + 1); + PathRemoveFileSpec(working_directory); + if(SDL_strlen(working_directory) == 0) + { + SDL_free(working_directory); + working_directory = NULL; + } + + /* join the file path and the args string together */ + if(!args) + args = ""; + args_length = SDL_strlen(args); + command_line = (char*)SDL_malloc(path_length + args_length + 2); + if(!command_line) + { + SDLTest_LogError("Could not allocate command_line - malloc() failed."); + return 0; + } + SDL_memcpy(command_line, file, path_length); + command_line[path_length] = ' '; + SDL_memcpy(command_line + path_length + 1, args, args_length + 1); + + /* create the process */ + success = CreateProcess(NULL, command_line, NULL, NULL, FALSE, + NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW, + NULL, working_directory, &sui, &pinfo->pi); + if(working_directory) + { + SDL_free(working_directory); + working_directory = NULL; + } + SDL_free(command_line); + if(!success) + { + LogLastError("CreateProcess() failed"); + return 0; + } + + return 1; +} + +int +SDL_GetProcessExitStatus(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps) +{ + DWORD exit_status; + BOOL success; + + if(!pinfo) + { + SDLTest_LogError("pinfo cannot be NULL"); + return 0; + } + if(!ps) + { + SDLTest_LogError("ps cannot be NULL"); + return 0; + } + + /* get the exit code */ + success = GetExitCodeProcess(pinfo->pi.hProcess, &exit_status); + if(!success) + { + LogLastError("GetExitCodeProcess() failed"); + return 0; + } + + if(exit_status == STILL_ACTIVE) + ps->exit_status = -1; + else + ps->exit_status = exit_status; + ps->exit_success = 1; + return 1; +} + + +int +SDL_IsProcessRunning(SDL_ProcessInfo* pinfo) +{ + DWORD exit_status; + BOOL success; + + if(!pinfo) + { + SDLTest_LogError("pinfo cannot be NULL"); + return -1; + } + + success = GetExitCodeProcess(pinfo->pi.hProcess, &exit_status); + if(!success) + { + LogLastError("GetExitCodeProcess() failed"); + return -1; + } + + if(exit_status == STILL_ACTIVE) + return 1; + return 0; +} + +static BOOL CALLBACK +CloseWindowCallback(HWND hwnd, LPARAM lparam) +{ + DWORD pid; + SDL_ProcessInfo* pinfo; + + pinfo = (SDL_ProcessInfo*)lparam; + + GetWindowThreadProcessId(hwnd, &pid); + if(pid == pinfo->pi.dwProcessId) + { + DWORD result; + if(!SendMessageTimeout(hwnd, WM_CLOSE, 0, 0, SMTO_BLOCK, + 1000, &result)) + { + if(GetLastError() != ERROR_TIMEOUT) + { + LogLastError("SendMessageTimeout() failed"); + return FALSE; + } + } + } + return TRUE; +} + +int +SDL_QuitProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps) +{ + DWORD wait_result; + if(!pinfo) + { + SDLTest_LogError("pinfo argument cannot be NULL"); + return 0; + } + if(!ps) + { + SDLTest_LogError("ps argument cannot be NULL"); + return 0; + } + + /* enumerate through all the windows, trying to close each one */ + if(!EnumWindows(CloseWindowCallback, (LPARAM)pinfo)) + { + SDLTest_LogError("EnumWindows() failed"); + return 0; + } + + /* wait until the process terminates */ + wait_result = WaitForSingleObject(pinfo->pi.hProcess, 1000); + if(wait_result == WAIT_FAILED) + { + LogLastError("WaitForSingleObject() failed"); + return 0; + } + if(wait_result != WAIT_OBJECT_0) + { + SDLTest_LogError("Process did not quit."); + return 0; + } + + /* get the exit code */ + if(!SDL_GetProcessExitStatus(pinfo, ps)) + { + SDLTest_LogError("SDL_GetProcessExitStatus() failed"); + return 0; + } + + return 1; +} + +int +SDL_KillProcess(SDL_ProcessInfo* pinfo, SDL_ProcessExitStatus* ps) +{ + BOOL success; + DWORD exit_status, wait_result; + + if(!pinfo) + { + SDLTest_LogError("pinfo argument cannot be NULL"); + return 0; + } + if(!ps) + { + SDLTest_LogError("ps argument cannot be NULL"); + return 0; + } + + /* initiate termination of the process */ + success = TerminateProcess(pinfo->pi.hProcess, 0); + if(!success) + { + LogLastError("TerminateProcess() failed"); + return 0; + } + + /* wait until the process terminates */ + wait_result = WaitForSingleObject(pinfo->pi.hProcess, INFINITE); + if(wait_result == WAIT_FAILED) + { + LogLastError("WaitForSingleObject() failed"); + return 0; + } + + /* get the exit code */ + success = GetExitCodeProcess(pinfo->pi.hProcess, &exit_status); + if(!success) + { + LogLastError("GetExitCodeProcess() failed"); + return 0; + } + + ps->exit_status = exit_status; + ps->exit_success = 1; + + return 1; +} + +#endif diff --git a/visualtest/src/windows/windows_screenshot.c b/visualtest/src/windows/windows_screenshot.c new file mode 100755 index 0000000000..7855903593 --- /dev/null +++ b/visualtest/src/windows/windows_screenshot.c @@ -0,0 +1,349 @@ +/* See COPYING.txt for the full license governing this code. */ +/** + * \file windows_screenshot.c + * + * Source file for the screenshot API on windows. + */ + +#include "SDL_visualtest_process.h" +#include +#include + +#if defined(__CYGWIN__) +#include +#endif + +#if defined(__WIN32__) +#include + +void LogLastError(char* str); + +static int img_num; +static SDL_ProcessInfo screenshot_pinfo; + +/* Saves a bitmap to a file using hdc as a device context */ +static int +SaveBitmapToFile(HDC hdc, HBITMAP hbitmap, char* filename) +{ + BITMAP bitmap; + BITMAPFILEHEADER bfh; + BITMAPINFOHEADER bih; + DWORD bmpsize, bytes_written; + HANDLE hdib, hfile; + char* bmpdata; + int return_code = 1; + + if(!hdc) + { + SDLTest_LogError("hdc argument is NULL"); + return 0; + } + if(!hbitmap) + { + SDLTest_LogError("hbitmap argument is NULL"); + return 0; + } + if(!filename) + { + SDLTest_LogError("filename argument is NULL"); + return 0; + } + + if(!GetObject(hbitmap, sizeof(BITMAP), (void*)&bitmap)) + { + SDLTest_LogError("GetObject() failed"); + return_code = 0; + goto savebitmaptofile_cleanup_generic; + } + + bih.biSize = sizeof(BITMAPINFOHEADER); + bih.biWidth = bitmap.bmWidth; + bih.biHeight = bitmap.bmHeight; + bih.biPlanes = 1; + bih.biBitCount = 32; + bih.biCompression = BI_RGB; + bih.biSizeImage = 0; + bih.biXPelsPerMeter = 0; + bih.biYPelsPerMeter = 0; + bih.biClrUsed = 0; + bih.biClrImportant = 0; + + bmpsize = ((bitmap.bmWidth * bih.biBitCount + 31) / 32) * 4 * bitmap.bmHeight; + + hdib = GlobalAlloc(GHND, bmpsize); + if(!hdib) + { + LogLastError("GlobalAlloc() failed"); + return_code = 0; + goto savebitmaptofile_cleanup_generic; + } + bmpdata = (char*)GlobalLock(hdib); + if(!bmpdata) + { + LogLastError("GlobalLock() failed"); + return_code = 0; + goto savebitmaptofile_cleanup_hdib; + } + + if(!GetDIBits(hdc, hbitmap, 0, (UINT)bitmap.bmHeight, bmpdata, + (LPBITMAPINFO)&bih, DIB_RGB_COLORS)) + { + SDLTest_LogError("GetDIBits() failed"); + return_code = 0; + goto savebitmaptofile_cleanup_unlockhdib; + } + + hfile = CreateFile(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, + FILE_ATTRIBUTE_NORMAL, NULL); + if(hfile == INVALID_HANDLE_VALUE) + { + LogLastError("CreateFile()"); + return_code = 0; + goto savebitmaptofile_cleanup_unlockhdib; + } + bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); + bfh.bfSize = bmpsize + bfh.bfOffBits; + bfh.bfType = 0x4D42; + + bytes_written = 0; + if(!WriteFile(hfile, (void*)&bfh, sizeof(BITMAPFILEHEADER), &bytes_written, NULL) || + !WriteFile(hfile, (void*)&bih, sizeof(BITMAPINFOHEADER), &bytes_written, NULL) || + !WriteFile(hfile, (void*)bmpdata, bmpsize, &bytes_written, NULL)) + { + LogLastError("WriteFile() failed"); + return_code = 0; + goto savebitmaptofile_cleanup_hfile; + } + +savebitmaptofile_cleanup_hfile: + CloseHandle(hfile); + +/* make the screenshot file writable on cygwin, since it could be overwritten later */ +#if defined(__CYGWIN__) + if(chmod(filename, 0777) == -1) + { + SDLTest_LogError("chmod() failed"); + return_code = 0; + } +#endif + +savebitmaptofile_cleanup_unlockhdib: + GlobalUnlock(hdib); + +savebitmaptofile_cleanup_hdib: + GlobalFree(hdib); + +savebitmaptofile_cleanup_generic: + return return_code; +} + +/* Takes the screenshot of a window and saves it to a file. If only_client_area + is true, then only the client area of the window is considered */ +static int +ScreenshotWindow(HWND hwnd, char* filename, SDL_bool only_client_area) +{ + int width, height; + RECT dimensions; + HDC windowdc, capturedc; + HBITMAP capturebitmap; + HGDIOBJ select_success; + BOOL blt_success; + int return_code = 1; + + if(!filename) + { + SDLTest_LogError("filename argument cannot be NULL"); + return_code = 0; + goto screenshotwindow_cleanup_generic; + } + if(!hwnd) + { + SDLTest_LogError("hwnd argument cannot be NULL"); + return_code = 0; + goto screenshotwindow_cleanup_generic; + } + + if(!GetWindowRect(hwnd, &dimensions)) + { + LogLastError("GetWindowRect() failed"); + return_code = 0; + goto screenshotwindow_cleanup_generic; + } + + if(only_client_area) + { + RECT crect; + if(!GetClientRect(hwnd, &crect)) + { + SDLTest_LogError("GetClientRect() failed"); + return_code = 0; + goto screenshotwindow_cleanup_generic; + } + + width = crect.right; + height = crect.bottom; + windowdc = GetDC(hwnd); + if(!windowdc) + { + SDLTest_LogError("GetDC() failed"); + return_code = 0; + goto screenshotwindow_cleanup_generic; + } + } + else + { + width = dimensions.right - dimensions.left; + height = dimensions.bottom - dimensions.top; + windowdc = GetWindowDC(hwnd); + if(!windowdc) + { + SDLTest_LogError("GetWindowDC() failed"); + return_code = 0; + goto screenshotwindow_cleanup_generic; + } + } + + capturedc = CreateCompatibleDC(windowdc); + if(!capturedc) + { + SDLTest_LogError("CreateCompatibleDC() failed"); + return_code = 0; + goto screenshotwindow_cleanup_windowdc; + } + capturebitmap = CreateCompatibleBitmap(windowdc, width, height); + if(!capturebitmap) + { + SDLTest_LogError("CreateCompatibleBitmap() failed"); + return_code = 0; + goto screenshotwindow_cleanup_capturedc; + } + select_success = SelectObject(capturedc, capturebitmap); + if(!select_success || select_success == HGDI_ERROR) + { + SDLTest_LogError("SelectObject() failed"); + return_code = 0; + goto screenshotwindow_cleanup_capturebitmap; + } + blt_success = BitBlt(capturedc, 0, 0, width, height, windowdc, + 0, 0, SRCCOPY|CAPTUREBLT); + if(!blt_success) + { + LogLastError("BitBlt() failed"); + return_code = 0; + goto screenshotwindow_cleanup_capturebitmap; + } + + /* save bitmap as file */ + if(!SaveBitmapToFile(windowdc, capturebitmap, filename)) + { + SDLTest_LogError("SaveBitmapToFile() failed"); + return_code = 0; + goto screenshotwindow_cleanup_capturebitmap; + } + + /* free resources */ + +screenshotwindow_cleanup_capturebitmap: + if(!DeleteObject(capturebitmap)) + { + SDLTest_LogError("DeleteObjectFailed"); + return_code = 0; + } + +screenshotwindow_cleanup_capturedc: + if(!DeleteDC(capturedc)) + { + SDLTest_LogError("DeleteDC() failed"); + return_code = 0; + } + +screenshotwindow_cleanup_windowdc: + if(!ReleaseDC(hwnd, windowdc)) + { + SDLTest_LogError("ReleaseDC() failed"); + return_code = 0;; + } + +screenshotwindow_cleanup_generic: + return return_code; +} + +/* Takes the screenshot of the entire desktop and saves it to a file */ +int SDLVisualTest_ScreenshotDesktop(char* filename) +{ + HWND hwnd; + hwnd = GetDesktopWindow(); + return ScreenshotWindow(hwnd, filename, SDL_FALSE); +} + +/* take screenshot of a window and save it to a file */ +static BOOL CALLBACK +ScreenshotHwnd(HWND hwnd, LPARAM lparam) +{ + int len; + DWORD pid; + char* prefix; + char* filename; + + GetWindowThreadProcessId(hwnd, &pid); + if(pid != screenshot_pinfo.pi.dwProcessId) + return TRUE; + + if(!IsWindowVisible(hwnd)) + return TRUE; + + prefix = (char*)lparam; + len = SDL_strlen(prefix) + 100; + filename = (char*)SDL_malloc(len * sizeof(char)); + if(!filename) + { + SDLTest_LogError("malloc() failed"); + return FALSE; + } + + /* restore the window and bring it to the top */ + ShowWindowAsync(hwnd, SW_RESTORE); + /* restore is not instantaneous */ + SDL_Delay(500); + + /* take a screenshot of the client area */ + if(img_num == 1) + SDL_snprintf(filename, len, "%s.bmp", prefix); + else + SDL_snprintf(filename, len, "%s_%d.bmp", prefix, img_num); + img_num++; + ScreenshotWindow(hwnd, filename, SDL_TRUE); + + SDL_free(filename); + return TRUE; +} + + +/* each window of the process will have a screenshot taken. The file name will be + prefix-i.png for the i'th window. */ +int +SDLVisualTest_ScreenshotProcess(SDL_ProcessInfo* pinfo, char* prefix) +{ + if(!pinfo) + { + SDLTest_LogError("pinfo argument cannot be NULL"); + return 0; + } + if(!prefix) + { + SDLTest_LogError("prefix argument cannot be NULL"); + return 0; + } + + img_num = 1; + screenshot_pinfo = *pinfo; + if(!EnumWindows(ScreenshotHwnd, (LPARAM)prefix)) + { + SDLTest_LogError("EnumWindows() failed"); + return 0; + } + + return 1; +} + +#endif diff --git a/visualtest/stamp-h1 b/visualtest/stamp-h1 new file mode 100755 index 0000000000..4547fe1b5e --- /dev/null +++ b/visualtest/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h diff --git a/visualtest/testsprite2_sample.actions b/visualtest/testsprite2_sample.actions new file mode 100755 index 0000000000..c0e9ab8b9e --- /dev/null +++ b/visualtest/testsprite2_sample.actions @@ -0,0 +1,3 @@ +00:00:02 SCREENSHOT # Take a screenshot of each window owned by the SUT process +00:00:05 VERIFY # Verify each screenshot taken with verification images +00:00:10 QUIT # Gracefully quit the SUT process \ No newline at end of file diff --git a/visualtest/testsprite2_sample.config b/visualtest/testsprite2_sample.config new file mode 100755 index 0000000000..14eb4622c2 --- /dev/null +++ b/visualtest/testsprite2_sample.config @@ -0,0 +1,6 @@ +parameter-config=testsprite2_sample.parameters +num-variations=10 +variator=random +sutapp=testsprite2 +timeout=00:00:20 +action-config=testsprite2_sample.actions \ No newline at end of file diff --git a/visualtest/testsprite2_sample.parameters b/visualtest/testsprite2_sample.parameters new file mode 100755 index 0000000000..29e34cd284 --- /dev/null +++ b/visualtest/testsprite2_sample.parameters @@ -0,0 +1,29 @@ +# parameter name, type, value range, required, categories +--gldebug, boolean, [], false, [] +--info, enum, [all video modes render event], false, [] +--log, enum, [all error system audio video render input], false, [] +--display, integer, [1 5], false, [] +--fullscreen, boolean, [], false, [] +--fullscreen-desktop, boolean, [], false, [] +# --windows, integer, [1 5], false, [] # this option is not supported yet +--title, enum, [vartest bartest footest], false, [] +--icon, enum, [icon.bmp], false, [] +--center, boolean, [], false, [] +--position, enum, [300,300], false, [] +--geometry, enum, [500x500], false, [] +--min-geometry, enum, [100x100], false, [] +--max-geometry, enum, [600x600 700x700], false, [] +--logical, enum, [500x500 550x450], false, [] +--scale, integer, [1 5], false, [] +--depth, integer, [1 5], false, [] +--refresh, integer, [1 5], false, [] +--vsync, boolean, [], false, [] +--noframe, boolean, [], false, [] +--resize, boolean, [], false, [] +--minimize, boolean, [], false, [] +--maximize, boolean, [], false, [] +--grab, boolean, [], false, [mouse] +--blend, enum, [none blend add mod], false, [] +--cyclecolor, boolean, [], false, [] +--cyclealpha, boolean, [], false, [] +--iterations, integer, [10 100], false, [] \ No newline at end of file diff --git a/visualtest/unittest/testquit.actions b/visualtest/unittest/testquit.actions new file mode 100755 index 0000000000..fa68805200 --- /dev/null +++ b/visualtest/unittest/testquit.actions @@ -0,0 +1 @@ +00:00:05 QUIT \ No newline at end of file diff --git a/visualtest/unittest/testquit.c b/visualtest/unittest/testquit.c new file mode 100755 index 0000000000..ceb83b0aaf --- /dev/null +++ b/visualtest/unittest/testquit.c @@ -0,0 +1,101 @@ +/* + Copyright (C) 2013 Apoorv Upreti + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ +/* Quits, hangs or crashes based on the command line options passed. */ + +#include +#include + +static SDLTest_CommonState *state; +static int exit_code; +static SDL_bool hang; +static SDL_bool crash; + +int +main(int argc, char** argv) +{ + int i, done; + SDL_Event event; + + state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); + if(!state) + return 1; + + state->window_flags |= SDL_WINDOW_RESIZABLE; + + exit_code = 0; + hang = SDL_FALSE; + crash = SDL_FALSE; + + for(i = 1; i < argc; ) + { + int consumed; + consumed = SDLTest_CommonArg(state, i); + if(consumed == 0) + { + consumed = -1; + if(SDL_strcasecmp(argv[i], "--exit-code") == 0) + { + if(argv[i + 1]) + { + exit_code = SDL_atoi(argv[i + 1]); + consumed = 2; + } + } + else if(SDL_strcasecmp(argv[i], "--hang") == 0) + { + hang = SDL_TRUE; + consumed = 1; + } + else if(SDL_strcasecmp(argv[i], "--crash") == 0) + { + crash = SDL_TRUE; + consumed = 1; + } + } + + if(consumed < 0) + { + SDLTest_Log("Usage: %s %s [--exit-code N] [--crash] [--hang]", argv[0], SDLTest_CommonUsage(state)); + SDLTest_CommonQuit(state); + return 1; + } + i += consumed; + } + + if(!SDLTest_CommonInit(state)) + { + SDLTest_CommonQuit(state); + return 1; + } + + /* infinite loop to hang the process */ + while(hang) + SDL_Delay(10); + + /* dereference NULL pointer to crash process */ + if(crash) + { + int* p = NULL; + *p = 5; + } + + /* event loop */ + done = 0; + while(!done) + { + while(SDL_PollEvent(&event)) + SDLTest_CommonEvent(state, &event, &done); + SDL_Delay(10); + } + + return exit_code; +} \ No newline at end of file diff --git a/visualtest/unittest/testquit.config b/visualtest/unittest/testquit.config new file mode 100755 index 0000000000..756dec8ac1 --- /dev/null +++ b/visualtest/unittest/testquit.config @@ -0,0 +1,5 @@ +sutconfig=testquit.parameters +action-config=testquit.actions +variator=exhaustive +sutapp=testquit +timeout=00:00:10 \ No newline at end of file diff --git a/visualtest/unittest/testquit.parameters b/visualtest/unittest/testquit.parameters new file mode 100755 index 0000000000..6e5887ce57 --- /dev/null +++ b/visualtest/unittest/testquit.parameters @@ -0,0 +1,3 @@ +--exit-code, integer, [-1 1], false, [] # The exit code returned by the executable +--crash, boolean, [], false, [] # Crashes the SUT executable +--hang, boolean, [], false, [] # Runs the SUT in the infinite loop and ignores all events \ No newline at end of file From 98431bae1d084a98de0e963a64cbe2d4f349b7e8 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 10 Nov 2013 00:38:37 -0500 Subject: [PATCH 033/402] Added Ben Henning's GSoC2013 work: premake build system. --- include/SDL_config.h | 4 +- .../Cygwin/build-scripts/clean_premake.bat | 4 + premake/Cygwin/build-scripts/cygwin.bat | 4 + premake/Cygwin/build-scripts/make.debug.bat | 5 + premake/Cygwin/build-scripts/make.release.bat | 5 + premake/Cygwin/build-scripts/premake4.exe | Bin 0 -> 483840 bytes .../Cygwin/build-scripts/run.tests.debug.bat | 68 + .../build-scripts/run.tests.release.bat | 68 + premake/Linux/SDL_config_premake.h | 311 ++ premake/Linux/build-scripts/clean_premake.sh | 6 + premake/Linux/build-scripts/gmake.sh | 6 + premake/Linux/build-scripts/premake4 | Bin 0 -> 339312 bytes premake/Linux/build-scripts/run.tests.sh | 94 + premake/MinGW/SDL_config_premake.h | 193 ++ premake/MinGW/build-scripts/clean_premake.bat | 4 + premake/MinGW/build-scripts/mingw.bat | 4 + premake/MinGW/build-scripts/premake4.exe | Bin 0 -> 483840 bytes premake/MinGW/build-scripts/run.tests.bat | 108 + premake/README-cygwin.txt | 29 + premake/README-ios.txt | 33 + premake/README-linux.txt | 46 + premake/README-macosx.txt | 34 + premake/README-mingw.txt | 39 + premake/README-windows.txt | 37 + premake/README.txt | 330 ++ premake/VisualC/VS2008/SDL.sln | 487 +++ premake/VisualC/VS2008/SDL2/SDL2.vcproj | 3004 +++++++++++++++++ .../VisualC/VS2008/SDL2main/SDL2main.vcproj | 199 ++ .../VisualC/VS2008/SDL2test/SDL2test.vcproj | 254 ++ premake/VisualC/VS2008/SDL_config_premake.h | 202 ++ .../VS2008/tests/checkkeys/checkkeys.vcproj | 208 ++ .../VS2008/tests/loopwave/loopwave.vcproj | 208 ++ .../VS2008/tests/testatomic/testatomic.vcproj | 208 ++ .../tests/testaudioinfo/testaudioinfo.vcproj | 208 ++ .../testautomation/testautomation.vcproj | 280 ++ .../testchessboard/testchessboard.vcproj | 208 ++ .../VS2008/tests/testdraw2/testdraw2.vcproj | 208 ++ .../VS2008/tests/testerror/testerror.vcproj | 208 ++ .../VS2008/tests/testfile/testfile.vcproj | 208 ++ .../testfilesystem/testfilesystem.vcproj | 208 ++ .../testgamecontroller.vcproj | 208 ++ .../tests/testgesture/testgesture.vcproj | 208 ++ .../VS2008/tests/testgl2/testgl2.vcproj | 208 ++ .../VS2008/tests/testgles/testgles.vcproj | 208 ++ .../VS2008/tests/testhaptic/testhaptic.vcproj | 208 ++ .../VS2008/tests/testiconv/testiconv.vcproj | 208 ++ .../VS2008/tests/testime/testime.vcproj | 208 ++ .../tests/testjoystick/testjoystick.vcproj | 208 ++ .../VS2008/tests/testkeys/testkeys.vcproj | 208 ++ .../VS2008/tests/testloadso/testloadso.vcproj | 208 ++ .../VS2008/tests/testlock/testlock.vcproj | 208 ++ .../tests/testmessage/testmessage.vcproj | 208 ++ .../testmultiaudio/testmultiaudio.vcproj | 208 ++ .../VS2008/tests/testnative/testnative.vcproj | 216 ++ .../tests/testoverlay2/testoverlay2.vcproj | 208 ++ .../tests/testplatform/testplatform.vcproj | 208 ++ .../VS2008/tests/testpower/testpower.vcproj | 208 ++ .../tests/testrelative/testrelative.vcproj | 208 ++ .../testrendercopyex/testrendercopyex.vcproj | 208 ++ .../testrendertarget/testrendertarget.vcproj | 208 ++ .../tests/testresample/testresample.vcproj | 208 ++ .../VS2008/tests/testrumble/testrumble.vcproj | 208 ++ .../VS2008/tests/testscale/testscale.vcproj | 208 ++ .../VS2008/tests/testsem/testsem.vcproj | 208 ++ .../VS2008/tests/testshader/testshader.vcproj | 208 ++ .../VS2008/tests/testshape/testshape.vcproj | 208 ++ .../tests/testsprite2/testsprite2.vcproj | 208 ++ .../testspriteminimal.vcproj | 208 ++ .../tests/teststreaming/teststreaming.vcproj | 208 ++ .../VS2008/tests/testthread/testthread.vcproj | 208 ++ .../VS2008/tests/testtimer/testtimer.vcproj | 208 ++ .../VS2008/tests/testver/testver.vcproj | 208 ++ .../VS2008/tests/testwm2/testwm2.vcproj | 208 ++ .../tests/torturethread/torturethread.vcproj | 208 ++ premake/VisualC/VS2010/SDL.sln | 487 +++ premake/VisualC/VS2010/SDL2/SDL2.vcxproj | 430 +++ .../VisualC/VS2010/SDL2/SDL2.vcxproj.filters | 708 ++++ .../VisualC/VS2010/SDL2main/SDL2main.vcxproj | 115 + .../VS2010/SDL2main/SDL2main.vcxproj.filters | 19 + .../VisualC/VS2010/SDL2test/SDL2test.vcxproj | 157 + .../VS2010/SDL2test/SDL2test.vcxproj.filters | 58 + premake/VisualC/VS2010/SDL_config_premake.h | 202 ++ .../VS2010/tests/checkkeys/checkkeys.vcxproj | 129 + .../tests/checkkeys/checkkeys.vcxproj.filters | 13 + .../VS2010/tests/loopwave/loopwave.vcxproj | 129 + .../tests/loopwave/loopwave.vcxproj.filters | 13 + .../tests/testatomic/testatomic.vcxproj | 129 + .../testatomic/testatomic.vcxproj.filters | 13 + .../tests/testaudioinfo/testaudioinfo.vcxproj | 129 + .../testaudioinfo.vcxproj.filters | 13 + .../testautomation/testautomation.vcxproj | 169 + .../testautomation.vcxproj.filters | 69 + .../testchessboard/testchessboard.vcxproj | 129 + .../testchessboard.vcxproj.filters | 13 + .../VS2010/tests/testdraw2/testdraw2.vcxproj | 132 + .../tests/testdraw2/testdraw2.vcxproj.filters | 13 + .../VS2010/tests/testerror/testerror.vcxproj | 129 + .../tests/testerror/testerror.vcxproj.filters | 13 + .../VS2010/tests/testfile/testfile.vcxproj | 129 + .../tests/testfile/testfile.vcxproj.filters | 13 + .../testfilesystem/testfilesystem.vcxproj | 129 + .../testfilesystem.vcxproj.filters | 13 + .../testgamecontroller.vcxproj | 129 + .../testgamecontroller.vcxproj.filters | 13 + .../tests/testgesture/testgesture.vcxproj | 129 + .../testgesture/testgesture.vcxproj.filters | 13 + .../VS2010/tests/testgl2/testgl2.vcxproj | 134 + .../tests/testgl2/testgl2.vcxproj.filters | 13 + .../VS2010/tests/testgles/testgles.vcxproj | 132 + .../tests/testgles/testgles.vcxproj.filters | 13 + .../tests/testhaptic/testhaptic.vcxproj | 129 + .../testhaptic/testhaptic.vcxproj.filters | 13 + .../VS2010/tests/testiconv/testiconv.vcxproj | 129 + .../tests/testiconv/testiconv.vcxproj.filters | 13 + .../VS2010/tests/testime/testime.vcxproj | 132 + .../tests/testime/testime.vcxproj.filters | 13 + .../tests/testjoystick/testjoystick.vcxproj | 129 + .../testjoystick/testjoystick.vcxproj.filters | 13 + .../VS2010/tests/testkeys/testkeys.vcxproj | 129 + .../tests/testkeys/testkeys.vcxproj.filters | 13 + .../tests/testloadso/testloadso.vcxproj | 129 + .../testloadso/testloadso.vcxproj.filters | 13 + .../VS2010/tests/testlock/testlock.vcxproj | 129 + .../tests/testlock/testlock.vcxproj.filters | 13 + .../tests/testmessage/testmessage.vcxproj | 129 + .../testmessage/testmessage.vcxproj.filters | 13 + .../testmultiaudio/testmultiaudio.vcxproj | 129 + .../testmultiaudio.vcxproj.filters | 13 + .../tests/testnative/testnative.vcxproj | 134 + .../testnative/testnative.vcxproj.filters | 21 + .../tests/testoverlay2/testoverlay2.vcxproj | 129 + .../testoverlay2/testoverlay2.vcxproj.filters | 13 + .../tests/testplatform/testplatform.vcxproj | 129 + .../testplatform/testplatform.vcxproj.filters | 13 + .../VS2010/tests/testpower/testpower.vcxproj | 129 + .../tests/testpower/testpower.vcxproj.filters | 13 + .../tests/testrelative/testrelative.vcxproj | 132 + .../testrelative/testrelative.vcxproj.filters | 13 + .../testrendercopyex/testrendercopyex.vcxproj | 132 + .../testrendercopyex.vcxproj.filters | 13 + .../testrendertarget/testrendertarget.vcxproj | 132 + .../testrendertarget.vcxproj.filters | 13 + .../tests/testresample/testresample.vcxproj | 129 + .../testresample/testresample.vcxproj.filters | 13 + .../tests/testrumble/testrumble.vcxproj | 129 + .../testrumble/testrumble.vcxproj.filters | 13 + .../VS2010/tests/testscale/testscale.vcxproj | 132 + .../tests/testscale/testscale.vcxproj.filters | 13 + .../VS2010/tests/testsem/testsem.vcxproj | 129 + .../tests/testsem/testsem.vcxproj.filters | 13 + .../tests/testshader/testshader.vcxproj | 131 + .../testshader/testshader.vcxproj.filters | 13 + .../VS2010/tests/testshape/testshape.vcxproj | 129 + .../tests/testshape/testshape.vcxproj.filters | 13 + .../tests/testsprite2/testsprite2.vcxproj | 132 + .../testsprite2/testsprite2.vcxproj.filters | 13 + .../testspriteminimal.vcxproj | 129 + .../testspriteminimal.vcxproj.filters | 13 + .../tests/teststreaming/teststreaming.vcxproj | 129 + .../teststreaming.vcxproj.filters | 13 + .../tests/testthread/testthread.vcxproj | 129 + .../testthread/testthread.vcxproj.filters | 13 + .../VS2010/tests/testtimer/testtimer.vcxproj | 129 + .../tests/testtimer/testtimer.vcxproj.filters | 13 + .../VS2010/tests/testver/testver.vcxproj | 129 + .../tests/testver/testver.vcxproj.filters | 13 + .../VS2010/tests/testwm2/testwm2.vcxproj | 132 + .../tests/testwm2/testwm2.vcxproj.filters | 13 + .../tests/torturethread/torturethread.vcxproj | 129 + .../torturethread.vcxproj.filters | 13 + premake/VisualC/VS2012/SDL.sln | 487 +++ premake/VisualC/VS2012/SDL2/SDL2.vcxproj | 432 +++ .../VisualC/VS2012/SDL2/SDL2.vcxproj.filters | 708 ++++ .../VisualC/VS2012/SDL2main/SDL2main.vcxproj | 117 + .../VS2012/SDL2main/SDL2main.vcxproj.filters | 19 + .../VisualC/VS2012/SDL2test/SDL2test.vcxproj | 159 + .../VS2012/SDL2test/SDL2test.vcxproj.filters | 58 + premake/VisualC/VS2012/SDL_config_premake.h | 202 ++ .../VS2012/tests/checkkeys/checkkeys.vcxproj | 131 + .../tests/checkkeys/checkkeys.vcxproj.filters | 13 + .../VS2012/tests/loopwave/loopwave.vcxproj | 131 + .../tests/loopwave/loopwave.vcxproj.filters | 13 + .../tests/testatomic/testatomic.vcxproj | 131 + .../testatomic/testatomic.vcxproj.filters | 13 + .../tests/testaudioinfo/testaudioinfo.vcxproj | 131 + .../testaudioinfo.vcxproj.filters | 13 + .../testautomation/testautomation.vcxproj | 171 + .../testautomation.vcxproj.filters | 69 + .../testchessboard/testchessboard.vcxproj | 131 + .../testchessboard.vcxproj.filters | 13 + .../VS2012/tests/testdraw2/testdraw2.vcxproj | 134 + .../tests/testdraw2/testdraw2.vcxproj.filters | 13 + .../VS2012/tests/testerror/testerror.vcxproj | 131 + .../tests/testerror/testerror.vcxproj.filters | 13 + .../VS2012/tests/testfile/testfile.vcxproj | 131 + .../tests/testfile/testfile.vcxproj.filters | 13 + .../testfilesystem/testfilesystem.vcxproj | 131 + .../testfilesystem.vcxproj.filters | 13 + .../testgamecontroller.vcxproj | 131 + .../testgamecontroller.vcxproj.filters | 13 + .../tests/testgesture/testgesture.vcxproj | 131 + .../testgesture/testgesture.vcxproj.filters | 13 + .../VS2012/tests/testgl2/testgl2.vcxproj | 136 + .../tests/testgl2/testgl2.vcxproj.filters | 13 + .../VS2012/tests/testgles/testgles.vcxproj | 134 + .../tests/testgles/testgles.vcxproj.filters | 13 + .../tests/testhaptic/testhaptic.vcxproj | 131 + .../testhaptic/testhaptic.vcxproj.filters | 13 + .../VS2012/tests/testiconv/testiconv.vcxproj | 131 + .../tests/testiconv/testiconv.vcxproj.filters | 13 + .../VS2012/tests/testime/testime.vcxproj | 134 + .../tests/testime/testime.vcxproj.filters | 13 + .../tests/testjoystick/testjoystick.vcxproj | 131 + .../testjoystick/testjoystick.vcxproj.filters | 13 + .../VS2012/tests/testkeys/testkeys.vcxproj | 131 + .../tests/testkeys/testkeys.vcxproj.filters | 13 + .../tests/testloadso/testloadso.vcxproj | 131 + .../testloadso/testloadso.vcxproj.filters | 13 + .../VS2012/tests/testlock/testlock.vcxproj | 131 + .../tests/testlock/testlock.vcxproj.filters | 13 + .../tests/testmessage/testmessage.vcxproj | 131 + .../testmessage/testmessage.vcxproj.filters | 13 + .../testmultiaudio/testmultiaudio.vcxproj | 131 + .../testmultiaudio.vcxproj.filters | 13 + .../tests/testnative/testnative.vcxproj | 136 + .../testnative/testnative.vcxproj.filters | 21 + .../tests/testoverlay2/testoverlay2.vcxproj | 131 + .../testoverlay2/testoverlay2.vcxproj.filters | 13 + .../tests/testplatform/testplatform.vcxproj | 131 + .../testplatform/testplatform.vcxproj.filters | 13 + .../VS2012/tests/testpower/testpower.vcxproj | 131 + .../tests/testpower/testpower.vcxproj.filters | 13 + .../tests/testrelative/testrelative.vcxproj | 134 + .../testrelative/testrelative.vcxproj.filters | 13 + .../testrendercopyex/testrendercopyex.vcxproj | 134 + .../testrendercopyex.vcxproj.filters | 13 + .../testrendertarget/testrendertarget.vcxproj | 134 + .../testrendertarget.vcxproj.filters | 13 + .../tests/testresample/testresample.vcxproj | 131 + .../testresample/testresample.vcxproj.filters | 13 + .../tests/testrumble/testrumble.vcxproj | 131 + .../testrumble/testrumble.vcxproj.filters | 13 + .../VS2012/tests/testscale/testscale.vcxproj | 134 + .../tests/testscale/testscale.vcxproj.filters | 13 + .../VS2012/tests/testsem/testsem.vcxproj | 131 + .../tests/testsem/testsem.vcxproj.filters | 13 + .../tests/testshader/testshader.vcxproj | 133 + .../testshader/testshader.vcxproj.filters | 13 + .../VS2012/tests/testshape/testshape.vcxproj | 131 + .../tests/testshape/testshape.vcxproj.filters | 13 + .../tests/testsprite2/testsprite2.vcxproj | 134 + .../testsprite2/testsprite2.vcxproj.filters | 13 + .../testspriteminimal.vcxproj | 131 + .../testspriteminimal.vcxproj.filters | 13 + .../tests/teststreaming/teststreaming.vcxproj | 131 + .../teststreaming.vcxproj.filters | 13 + .../tests/testthread/testthread.vcxproj | 131 + .../testthread/testthread.vcxproj.filters | 13 + .../VS2012/tests/testtimer/testtimer.vcxproj | 131 + .../tests/testtimer/testtimer.vcxproj.filters | 13 + .../VS2012/tests/testver/testver.vcxproj | 131 + .../tests/testver/testver.vcxproj.filters | 13 + .../VS2012/tests/testwm2/testwm2.vcxproj | 134 + .../tests/testwm2/testwm2.vcxproj.filters | 13 + .../tests/torturethread/torturethread.vcxproj | 131 + .../torturethread.vcxproj.filters | 13 + .../build-scripts/build.all.vs2010.bat | 5 + .../check.bin.compatibility.vs2010.bat | 81 + .../VisualC/build-scripts/clean_premake.bat | 9 + .../VisualC/build-scripts/generate.all.bat | 9 + premake/VisualC/build-scripts/premake4.exe | Bin 0 -> 483840 bytes .../build-scripts/run.tests.vs2010.bat | 108 + premake/VisualC/build-scripts/vs2008.bat | 4 + premake/VisualC/build-scripts/vs2010.bat | 4 + premake/VisualC/build-scripts/vs2012.bat | 4 + .../accelerometer.xcodeproj/project.pbxproj | 366 ++ .../fireworks.xcodeproj/project.pbxproj | 362 ++ .../happy/happy.xcodeproj/project.pbxproj | 362 ++ .../keyboard.xcodeproj/project.pbxproj | 370 ++ .../mixer/mixer.xcodeproj/project.pbxproj | 382 +++ .../rectangles.xcodeproj/project.pbxproj | 350 ++ .../touch/touch.xcodeproj/project.pbxproj | 362 ++ .../SDL.xcworkspace/contents.xcworkspacedata | 34 + .../SDL2/SDL2.xcodeproj/project.pbxproj | 1033 ++++++ .../SDL2main.xcodeproj/project.pbxproj | 241 ++ .../SDL2test.xcodeproj/project.pbxproj | 430 +++ premake/Xcode-iOS/SDL_config_premake.h | 163 + .../build-scripts/clean_premake.command | 4 + premake/Xcode-iOS/build-scripts/premake4 | Bin 0 -> 419580 bytes .../Xcode-iOS/build-scripts/xcode3.command | 4 + .../Xcode-iOS/build-scripts/xcode4.command | 4 + .../SDL2/SDL2.xcodeproj/project.pbxproj | 1231 +++++++ .../SDL2main.xcodeproj/project.pbxproj | 323 ++ .../SDL2test.xcodeproj/project.pbxproj | 520 +++ premake/Xcode/Xcode3/SDL_config_premake.h | 205 ++ .../checkkeys.xcodeproj/project.pbxproj | 457 +++ .../loopwave.xcodeproj/project.pbxproj | 474 +++ .../testatomic.xcodeproj/project.pbxproj | 457 +++ .../testaudioinfo.xcodeproj/project.pbxproj | 457 +++ .../testautomation.xcodeproj/project.pbxproj | 570 ++++ .../testchessboard.xcodeproj/project.pbxproj | 457 +++ .../testdraw2.xcodeproj/project.pbxproj | 500 +++ .../testerror.xcodeproj/project.pbxproj | 457 +++ .../testfile.xcodeproj/project.pbxproj | 457 +++ .../testfilesystem.xcodeproj/project.pbxproj | 457 +++ .../project.pbxproj | 457 +++ .../testgesture.xcodeproj/project.pbxproj | 457 +++ .../testgl2/testgl2.xcodeproj/project.pbxproj | 504 +++ .../testgles.xcodeproj/project.pbxproj | 500 +++ .../testhaptic.xcodeproj/project.pbxproj | 457 +++ .../testiconv.xcodeproj/project.pbxproj | 474 +++ .../testime/testime.xcodeproj/project.pbxproj | 500 +++ .../testjoystick.xcodeproj/project.pbxproj | 457 +++ .../testkeys.xcodeproj/project.pbxproj | 457 +++ .../testloadso.xcodeproj/project.pbxproj | 457 +++ .../testlock.xcodeproj/project.pbxproj | 457 +++ .../testmessage.xcodeproj/project.pbxproj | 457 +++ .../testmultiaudio.xcodeproj/project.pbxproj | 474 +++ .../testnative.xcodeproj/project.pbxproj | 480 +++ .../testoverlay2.xcodeproj/project.pbxproj | 474 +++ .../testplatform.xcodeproj/project.pbxproj | 457 +++ .../testpower.xcodeproj/project.pbxproj | 457 +++ .../testrelative.xcodeproj/project.pbxproj | 500 +++ .../project.pbxproj | 517 +++ .../project.pbxproj | 517 +++ .../testresample.xcodeproj/project.pbxproj | 474 +++ .../testrumble.xcodeproj/project.pbxproj | 457 +++ .../testscale.xcodeproj/project.pbxproj | 517 +++ .../testsem/testsem.xcodeproj/project.pbxproj | 457 +++ .../testshader.xcodeproj/project.pbxproj | 478 +++ .../testshape.xcodeproj/project.pbxproj | 474 +++ .../testsprite2.xcodeproj/project.pbxproj | 517 +++ .../project.pbxproj | 474 +++ .../teststreaming.xcodeproj/project.pbxproj | 474 +++ .../testthread.xcodeproj/project.pbxproj | 457 +++ .../testtimer.xcodeproj/project.pbxproj | 457 +++ .../testver/testver.xcodeproj/project.pbxproj | 457 +++ .../testwm2/testwm2.xcodeproj/project.pbxproj | 500 +++ .../torturethread.xcodeproj/project.pbxproj | 457 +++ .../SDL.xcworkspace/contents.xcworkspacedata | 145 + .../SDL2/SDL2.xcodeproj/project.pbxproj | 1229 +++++++ .../SDL2main.xcodeproj/project.pbxproj | 321 ++ .../SDL2test.xcodeproj/project.pbxproj | 518 +++ premake/Xcode/Xcode4/SDL_config_premake.h | 205 ++ .../checkkeys.xcodeproj/project.pbxproj | 455 +++ .../loopwave.xcodeproj/project.pbxproj | 472 +++ .../testatomic.xcodeproj/project.pbxproj | 455 +++ .../testaudioinfo.xcodeproj/project.pbxproj | 455 +++ .../testautomation.xcodeproj/project.pbxproj | 568 ++++ .../testchessboard.xcodeproj/project.pbxproj | 455 +++ .../testdraw2.xcodeproj/project.pbxproj | 498 +++ .../testerror.xcodeproj/project.pbxproj | 455 +++ .../testfile.xcodeproj/project.pbxproj | 455 +++ .../testfilesystem.xcodeproj/project.pbxproj | 455 +++ .../project.pbxproj | 455 +++ .../testgesture.xcodeproj/project.pbxproj | 455 +++ .../testgl2/testgl2.xcodeproj/project.pbxproj | 502 +++ .../testgles.xcodeproj/project.pbxproj | 498 +++ .../testhaptic.xcodeproj/project.pbxproj | 455 +++ .../testiconv.xcodeproj/project.pbxproj | 472 +++ .../testime/testime.xcodeproj/project.pbxproj | 498 +++ .../testjoystick.xcodeproj/project.pbxproj | 455 +++ .../testkeys.xcodeproj/project.pbxproj | 455 +++ .../testloadso.xcodeproj/project.pbxproj | 455 +++ .../testlock.xcodeproj/project.pbxproj | 455 +++ .../testmessage.xcodeproj/project.pbxproj | 455 +++ .../testmultiaudio.xcodeproj/project.pbxproj | 472 +++ .../testnative.xcodeproj/project.pbxproj | 478 +++ .../testoverlay2.xcodeproj/project.pbxproj | 472 +++ .../testplatform.xcodeproj/project.pbxproj | 455 +++ .../testpower.xcodeproj/project.pbxproj | 455 +++ .../testrelative.xcodeproj/project.pbxproj | 498 +++ .../project.pbxproj | 515 +++ .../project.pbxproj | 515 +++ .../testresample.xcodeproj/project.pbxproj | 472 +++ .../testrumble.xcodeproj/project.pbxproj | 455 +++ .../testscale.xcodeproj/project.pbxproj | 515 +++ .../testsem/testsem.xcodeproj/project.pbxproj | 455 +++ .../testshader.xcodeproj/project.pbxproj | 476 +++ .../testshape.xcodeproj/project.pbxproj | 472 +++ .../testsprite2.xcodeproj/project.pbxproj | 515 +++ .../project.pbxproj | 472 +++ .../teststreaming.xcodeproj/project.pbxproj | 472 +++ .../testthread.xcodeproj/project.pbxproj | 455 +++ .../testtimer.xcodeproj/project.pbxproj | 455 +++ .../testver/testver.xcodeproj/project.pbxproj | 455 +++ .../testwm2/testwm2.xcodeproj/project.pbxproj | 498 +++ .../torturethread.xcodeproj/project.pbxproj | 455 +++ .../build.all.xcode3.i386.command | 35 + .../build.all.xcode3.x86_64.command | 35 + .../build.all.xcode4.i386.command | 33 + .../build.all.xcode4.x86_64.command | 33 + .../Xcode/build-scripts/clean_premake.command | 4 + premake/Xcode/build-scripts/premake4 | Bin 0 -> 419580 bytes premake/Xcode/build-scripts/run.tests.command | 93 + premake/Xcode/build-scripts/xcode3.command | 4 + premake/Xcode/build-scripts/xcode4.command | 4 + premake/changelog | 828 +++++ premake/config/SDL_config_cygwin.template.h | 173 + premake/config/SDL_config_iphoneos.template.h | 113 + premake/config/SDL_config_linux.template.h | 180 + premake/config/SDL_config_macosx.template.h | 161 + premake/config/SDL_config_minimal.template.h | 78 + premake/config/SDL_config_windows.template.h | 149 + premake/patches/709.patch | 29 + premake/patches/711.patch | 30 + premake/patches/712.patch | 58 + premake/patches/713.patch | 64 + premake/patches/iOS.patch | 71 + premake/patches/premake.patches.txt | 26 + premake/premake4.lua | 482 +++ premake/projects/SDL2.lua | 404 +++ premake/projects/SDL2main.lua | 31 + premake/projects/SDL2test.lua | 28 + premake/projects/accelerometer.lua | 28 + premake/projects/checkkeys.lua | 28 + premake/projects/fireworks.lua | 28 + premake/projects/happy.lua | 28 + premake/projects/keyboard.lua | 28 + premake/projects/loopwave.lua | 30 + premake/projects/mixer.lua | 30 + premake/projects/rectangles.lua | 28 + premake/projects/testatomic.lua | 28 + premake/projects/testaudioinfo.lua | 28 + premake/projects/testautomation.lua | 28 + premake/projects/testdraw2.lua | 28 + premake/projects/testdrawchessboard.lua | 28 + premake/projects/testerror.lua | 28 + premake/projects/testfile.lua | 28 + premake/projects/testfilesystem.lua | 28 + premake/projects/testgamecontroller.lua | 28 + premake/projects/testgesture.lua | 28 + premake/projects/testgl2.lua | 34 + premake/projects/testgles.lua | 28 + premake/projects/testhaptic.lua | 28 + premake/projects/testiconv.lua | 29 + premake/projects/testime.lua | 28 + premake/projects/testintersection.lua | 28 + premake/projects/testjoystick.lua | 28 + premake/projects/testkeys.lua | 28 + premake/projects/testloadso.lua | 28 + premake/projects/testlock.lua | 28 + premake/projects/testmessage.lua | 28 + premake/projects/testmultiaudio.lua | 29 + premake/projects/testnative.lua | 40 + premake/projects/testoverlay2.lua | 30 + premake/projects/testplatform.lua | 28 + premake/projects/testpower.lua | 28 + premake/projects/testrelative.lua | 28 + premake/projects/testrendercopyex.lua | 29 + premake/projects/testrendertarget.lua | 30 + premake/projects/testresample.lua | 30 + premake/projects/testrumble.lua | 28 + premake/projects/testscale.lua | 30 + premake/projects/testsem.lua | 28 + premake/projects/testshader.lua | 35 + premake/projects/testshape.lua | 32 + premake/projects/testsprite2.lua | 30 + premake/projects/testspriteminimal.lua | 29 + premake/projects/teststreaming.lua | 29 + premake/projects/testthread.lua | 28 + premake/projects/testtimer.lua | 28 + premake/projects/testver.lua | 28 + premake/projects/testwm2.lua | 28 + premake/projects/torturethread.lua | 28 + premake/projects/touch.lua | 28 + premake/util/sdl_check_compile.lua | 307 ++ premake/util/sdl_dependency_checkers.lua | 204 ++ premake/util/sdl_depends.lua | 74 + premake/util/sdl_file.lua | 141 + premake/util/sdl_gen_config.lua | 68 + premake/util/sdl_projects.lua | 461 +++ premake/util/sdl_string.lua | 103 + 473 files changed, 89151 insertions(+), 1 deletion(-) create mode 100755 premake/Cygwin/build-scripts/clean_premake.bat create mode 100755 premake/Cygwin/build-scripts/cygwin.bat create mode 100755 premake/Cygwin/build-scripts/make.debug.bat create mode 100755 premake/Cygwin/build-scripts/make.release.bat create mode 100755 premake/Cygwin/build-scripts/premake4.exe create mode 100755 premake/Cygwin/build-scripts/run.tests.debug.bat create mode 100755 premake/Cygwin/build-scripts/run.tests.release.bat create mode 100755 premake/Linux/SDL_config_premake.h create mode 100755 premake/Linux/build-scripts/clean_premake.sh create mode 100755 premake/Linux/build-scripts/gmake.sh create mode 100755 premake/Linux/build-scripts/premake4 create mode 100755 premake/Linux/build-scripts/run.tests.sh create mode 100755 premake/MinGW/SDL_config_premake.h create mode 100755 premake/MinGW/build-scripts/clean_premake.bat create mode 100755 premake/MinGW/build-scripts/mingw.bat create mode 100755 premake/MinGW/build-scripts/premake4.exe create mode 100755 premake/MinGW/build-scripts/run.tests.bat create mode 100755 premake/README-cygwin.txt create mode 100755 premake/README-ios.txt create mode 100755 premake/README-linux.txt create mode 100755 premake/README-macosx.txt create mode 100755 premake/README-mingw.txt create mode 100755 premake/README-windows.txt create mode 100755 premake/README.txt create mode 100755 premake/VisualC/VS2008/SDL.sln create mode 100755 premake/VisualC/VS2008/SDL2/SDL2.vcproj create mode 100755 premake/VisualC/VS2008/SDL2main/SDL2main.vcproj create mode 100755 premake/VisualC/VS2008/SDL2test/SDL2test.vcproj create mode 100755 premake/VisualC/VS2008/SDL_config_premake.h create mode 100755 premake/VisualC/VS2008/tests/checkkeys/checkkeys.vcproj create mode 100755 premake/VisualC/VS2008/tests/loopwave/loopwave.vcproj create mode 100755 premake/VisualC/VS2008/tests/testatomic/testatomic.vcproj create mode 100755 premake/VisualC/VS2008/tests/testaudioinfo/testaudioinfo.vcproj create mode 100755 premake/VisualC/VS2008/tests/testautomation/testautomation.vcproj create mode 100755 premake/VisualC/VS2008/tests/testchessboard/testchessboard.vcproj create mode 100755 premake/VisualC/VS2008/tests/testdraw2/testdraw2.vcproj create mode 100755 premake/VisualC/VS2008/tests/testerror/testerror.vcproj create mode 100755 premake/VisualC/VS2008/tests/testfile/testfile.vcproj create mode 100755 premake/VisualC/VS2008/tests/testfilesystem/testfilesystem.vcproj create mode 100755 premake/VisualC/VS2008/tests/testgamecontroller/testgamecontroller.vcproj create mode 100755 premake/VisualC/VS2008/tests/testgesture/testgesture.vcproj create mode 100755 premake/VisualC/VS2008/tests/testgl2/testgl2.vcproj create mode 100755 premake/VisualC/VS2008/tests/testgles/testgles.vcproj create mode 100755 premake/VisualC/VS2008/tests/testhaptic/testhaptic.vcproj create mode 100755 premake/VisualC/VS2008/tests/testiconv/testiconv.vcproj create mode 100755 premake/VisualC/VS2008/tests/testime/testime.vcproj create mode 100755 premake/VisualC/VS2008/tests/testjoystick/testjoystick.vcproj create mode 100755 premake/VisualC/VS2008/tests/testkeys/testkeys.vcproj create mode 100755 premake/VisualC/VS2008/tests/testloadso/testloadso.vcproj create mode 100755 premake/VisualC/VS2008/tests/testlock/testlock.vcproj create mode 100755 premake/VisualC/VS2008/tests/testmessage/testmessage.vcproj create mode 100755 premake/VisualC/VS2008/tests/testmultiaudio/testmultiaudio.vcproj create mode 100755 premake/VisualC/VS2008/tests/testnative/testnative.vcproj create mode 100755 premake/VisualC/VS2008/tests/testoverlay2/testoverlay2.vcproj create mode 100755 premake/VisualC/VS2008/tests/testplatform/testplatform.vcproj create mode 100755 premake/VisualC/VS2008/tests/testpower/testpower.vcproj create mode 100755 premake/VisualC/VS2008/tests/testrelative/testrelative.vcproj create mode 100755 premake/VisualC/VS2008/tests/testrendercopyex/testrendercopyex.vcproj create mode 100755 premake/VisualC/VS2008/tests/testrendertarget/testrendertarget.vcproj create mode 100755 premake/VisualC/VS2008/tests/testresample/testresample.vcproj create mode 100755 premake/VisualC/VS2008/tests/testrumble/testrumble.vcproj create mode 100755 premake/VisualC/VS2008/tests/testscale/testscale.vcproj create mode 100755 premake/VisualC/VS2008/tests/testsem/testsem.vcproj create mode 100755 premake/VisualC/VS2008/tests/testshader/testshader.vcproj create mode 100755 premake/VisualC/VS2008/tests/testshape/testshape.vcproj create mode 100755 premake/VisualC/VS2008/tests/testsprite2/testsprite2.vcproj create mode 100755 premake/VisualC/VS2008/tests/testspriteminimal/testspriteminimal.vcproj create mode 100755 premake/VisualC/VS2008/tests/teststreaming/teststreaming.vcproj create mode 100755 premake/VisualC/VS2008/tests/testthread/testthread.vcproj create mode 100755 premake/VisualC/VS2008/tests/testtimer/testtimer.vcproj create mode 100755 premake/VisualC/VS2008/tests/testver/testver.vcproj create mode 100755 premake/VisualC/VS2008/tests/testwm2/testwm2.vcproj create mode 100755 premake/VisualC/VS2008/tests/torturethread/torturethread.vcproj create mode 100755 premake/VisualC/VS2010/SDL.sln create mode 100755 premake/VisualC/VS2010/SDL2/SDL2.vcxproj create mode 100755 premake/VisualC/VS2010/SDL2/SDL2.vcxproj.filters create mode 100755 premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj create mode 100755 premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj.filters create mode 100755 premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj create mode 100755 premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj.filters create mode 100755 premake/VisualC/VS2010/SDL_config_premake.h create mode 100755 premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj create mode 100755 premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj create mode 100755 premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testerror/testerror.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testerror/testerror.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testfile/testfile.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testfile/testfile.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testgles/testgles.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testgles/testgles.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testime/testime.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testime/testime.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testlock/testlock.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testlock/testlock.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testnative/testnative.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testnative/testnative.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testpower/testpower.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testpower/testpower.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testresample/testresample.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testresample/testresample.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testscale/testscale.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testscale/testscale.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testsem/testsem.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testsem/testsem.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testshader/testshader.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testshader/testshader.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testshape/testshape.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testshape/testshape.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj create mode 100755 premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testthread/testthread.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testthread/testthread.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testver/testver.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testver/testver.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj create mode 100755 premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj.filters create mode 100755 premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj create mode 100755 premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj.filters create mode 100755 premake/VisualC/VS2012/SDL.sln create mode 100755 premake/VisualC/VS2012/SDL2/SDL2.vcxproj create mode 100755 premake/VisualC/VS2012/SDL2/SDL2.vcxproj.filters create mode 100755 premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj create mode 100755 premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj.filters create mode 100755 premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj create mode 100755 premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj.filters create mode 100755 premake/VisualC/VS2012/SDL_config_premake.h create mode 100755 premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj create mode 100755 premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj create mode 100755 premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testerror/testerror.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testerror/testerror.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testfile/testfile.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testfile/testfile.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testgles/testgles.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testgles/testgles.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testime/testime.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testime/testime.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testlock/testlock.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testlock/testlock.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testnative/testnative.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testnative/testnative.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testpower/testpower.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testpower/testpower.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testresample/testresample.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testresample/testresample.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testscale/testscale.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testscale/testscale.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testsem/testsem.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testsem/testsem.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testshader/testshader.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testshader/testshader.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testshape/testshape.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testshape/testshape.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj create mode 100755 premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testthread/testthread.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testthread/testthread.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testver/testver.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testver/testver.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj create mode 100755 premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj.filters create mode 100755 premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj create mode 100755 premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj.filters create mode 100755 premake/VisualC/build-scripts/build.all.vs2010.bat create mode 100755 premake/VisualC/build-scripts/check.bin.compatibility.vs2010.bat create mode 100755 premake/VisualC/build-scripts/clean_premake.bat create mode 100755 premake/VisualC/build-scripts/generate.all.bat create mode 100755 premake/VisualC/build-scripts/premake4.exe create mode 100755 premake/VisualC/build-scripts/run.tests.vs2010.bat create mode 100755 premake/VisualC/build-scripts/vs2008.bat create mode 100755 premake/VisualC/build-scripts/vs2010.bat create mode 100755 premake/VisualC/build-scripts/vs2012.bat create mode 100755 premake/Xcode-iOS/Demos/accelerometer/accelerometer.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/Demos/fireworks/fireworks.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/Demos/happy/happy.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/Demos/keyboard/keyboard.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/Demos/mixer/mixer.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/Demos/rectangles/rectangles.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/Demos/touch/touch.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/SDL.xcworkspace/contents.xcworkspacedata create mode 100755 premake/Xcode-iOS/SDL2/SDL2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/SDL2main/SDL2main.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/SDL2test/SDL2test.xcodeproj/project.pbxproj create mode 100755 premake/Xcode-iOS/SDL_config_premake.h create mode 100755 premake/Xcode-iOS/build-scripts/clean_premake.command create mode 100755 premake/Xcode-iOS/build-scripts/premake4 create mode 100755 premake/Xcode-iOS/build-scripts/xcode3.command create mode 100755 premake/Xcode-iOS/build-scripts/xcode4.command create mode 100755 premake/Xcode/Xcode3/SDL2/SDL2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/SDL2main/SDL2main.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/SDL2test/SDL2test.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/SDL_config_premake.h create mode 100755 premake/Xcode/Xcode3/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/loopwave/loopwave.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testatomic/testatomic.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testautomation/testautomation.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testerror/testerror.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testfile/testfile.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testgesture/testgesture.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testgl2/testgl2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testgles/testgles.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testiconv/testiconv.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testime/testime.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testkeys/testkeys.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testloadso/testloadso.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testlock/testlock.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testmessage/testmessage.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testnative/testnative.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testplatform/testplatform.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testpower/testpower.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testrelative/testrelative.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testresample/testresample.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testrumble/testrumble.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testscale/testscale.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testsem/testsem.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testshader/testshader.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testshape/testshape.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testthread/testthread.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testtimer/testtimer.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testver/testver.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/testwm2/testwm2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode3/tests/torturethread/torturethread.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/SDL.xcworkspace/contents.xcworkspacedata create mode 100755 premake/Xcode/Xcode4/SDL2/SDL2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/SDL2main/SDL2main.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/SDL2test/SDL2test.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/SDL_config_premake.h create mode 100755 premake/Xcode/Xcode4/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/loopwave/loopwave.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testatomic/testatomic.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testautomation/testautomation.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testerror/testerror.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testfile/testfile.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testgesture/testgesture.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testgl2/testgl2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testgles/testgles.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testiconv/testiconv.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testime/testime.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testkeys/testkeys.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testloadso/testloadso.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testlock/testlock.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testmessage/testmessage.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testnative/testnative.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testplatform/testplatform.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testpower/testpower.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testrelative/testrelative.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testresample/testresample.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testrumble/testrumble.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testscale/testscale.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testsem/testsem.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testshader/testshader.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testshape/testshape.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testthread/testthread.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testtimer/testtimer.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testver/testver.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/testwm2/testwm2.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/Xcode4/tests/torturethread/torturethread.xcodeproj/project.pbxproj create mode 100755 premake/Xcode/build-scripts/build.all.xcode3.i386.command create mode 100755 premake/Xcode/build-scripts/build.all.xcode3.x86_64.command create mode 100755 premake/Xcode/build-scripts/build.all.xcode4.i386.command create mode 100755 premake/Xcode/build-scripts/build.all.xcode4.x86_64.command create mode 100755 premake/Xcode/build-scripts/clean_premake.command create mode 100755 premake/Xcode/build-scripts/premake4 create mode 100755 premake/Xcode/build-scripts/run.tests.command create mode 100755 premake/Xcode/build-scripts/xcode3.command create mode 100755 premake/Xcode/build-scripts/xcode4.command create mode 100755 premake/changelog create mode 100755 premake/config/SDL_config_cygwin.template.h create mode 100755 premake/config/SDL_config_iphoneos.template.h create mode 100755 premake/config/SDL_config_linux.template.h create mode 100755 premake/config/SDL_config_macosx.template.h create mode 100755 premake/config/SDL_config_minimal.template.h create mode 100755 premake/config/SDL_config_windows.template.h create mode 100755 premake/patches/709.patch create mode 100755 premake/patches/711.patch create mode 100755 premake/patches/712.patch create mode 100755 premake/patches/713.patch create mode 100755 premake/patches/iOS.patch create mode 100755 premake/patches/premake.patches.txt create mode 100755 premake/premake4.lua create mode 100755 premake/projects/SDL2.lua create mode 100755 premake/projects/SDL2main.lua create mode 100755 premake/projects/SDL2test.lua create mode 100755 premake/projects/accelerometer.lua create mode 100755 premake/projects/checkkeys.lua create mode 100755 premake/projects/fireworks.lua create mode 100755 premake/projects/happy.lua create mode 100755 premake/projects/keyboard.lua create mode 100755 premake/projects/loopwave.lua create mode 100755 premake/projects/mixer.lua create mode 100755 premake/projects/rectangles.lua create mode 100755 premake/projects/testatomic.lua create mode 100755 premake/projects/testaudioinfo.lua create mode 100755 premake/projects/testautomation.lua create mode 100755 premake/projects/testdraw2.lua create mode 100755 premake/projects/testdrawchessboard.lua create mode 100755 premake/projects/testerror.lua create mode 100755 premake/projects/testfile.lua create mode 100755 premake/projects/testfilesystem.lua create mode 100755 premake/projects/testgamecontroller.lua create mode 100755 premake/projects/testgesture.lua create mode 100755 premake/projects/testgl2.lua create mode 100755 premake/projects/testgles.lua create mode 100755 premake/projects/testhaptic.lua create mode 100755 premake/projects/testiconv.lua create mode 100755 premake/projects/testime.lua create mode 100755 premake/projects/testintersection.lua create mode 100755 premake/projects/testjoystick.lua create mode 100755 premake/projects/testkeys.lua create mode 100755 premake/projects/testloadso.lua create mode 100755 premake/projects/testlock.lua create mode 100755 premake/projects/testmessage.lua create mode 100755 premake/projects/testmultiaudio.lua create mode 100755 premake/projects/testnative.lua create mode 100755 premake/projects/testoverlay2.lua create mode 100755 premake/projects/testplatform.lua create mode 100755 premake/projects/testpower.lua create mode 100755 premake/projects/testrelative.lua create mode 100755 premake/projects/testrendercopyex.lua create mode 100755 premake/projects/testrendertarget.lua create mode 100755 premake/projects/testresample.lua create mode 100755 premake/projects/testrumble.lua create mode 100755 premake/projects/testscale.lua create mode 100755 premake/projects/testsem.lua create mode 100755 premake/projects/testshader.lua create mode 100755 premake/projects/testshape.lua create mode 100755 premake/projects/testsprite2.lua create mode 100755 premake/projects/testspriteminimal.lua create mode 100755 premake/projects/teststreaming.lua create mode 100755 premake/projects/testthread.lua create mode 100755 premake/projects/testtimer.lua create mode 100755 premake/projects/testver.lua create mode 100755 premake/projects/testwm2.lua create mode 100755 premake/projects/torturethread.lua create mode 100755 premake/projects/touch.lua create mode 100755 premake/util/sdl_check_compile.lua create mode 100755 premake/util/sdl_dependency_checkers.lua create mode 100755 premake/util/sdl_depends.lua create mode 100755 premake/util/sdl_file.lua create mode 100755 premake/util/sdl_gen_config.lua create mode 100755 premake/util/sdl_projects.lua create mode 100755 premake/util/sdl_string.lua diff --git a/include/SDL_config.h b/include/SDL_config.h index 7440940add..4d74bab7aa 100644 --- a/include/SDL_config.h +++ b/include/SDL_config.h @@ -29,7 +29,9 @@ */ /* Add any platform that doesn't build using the configure system. */ -#if defined(__WIN32__) +#ifdef USING_PREMAKE_CONFIG_H +#include "SDL_config_premake.h" +#elif defined(__WIN32__) #include "SDL_config_windows.h" #elif defined(__MACOSX__) #include "SDL_config_macosx.h" diff --git a/premake/Cygwin/build-scripts/clean_premake.bat b/premake/Cygwin/build-scripts/clean_premake.bat new file mode 100755 index 0000000000..0b34a39c6d --- /dev/null +++ b/premake/Cygwin/build-scripts/clean_premake.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\Cygwin --cygwin clean +pause \ No newline at end of file diff --git a/premake/Cygwin/build-scripts/cygwin.bat b/premake/Cygwin/build-scripts/cygwin.bat new file mode 100755 index 0000000000..1710a01124 --- /dev/null +++ b/premake/Cygwin/build-scripts/cygwin.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\Cygwin --cygwin gmake +pause \ No newline at end of file diff --git a/premake/Cygwin/build-scripts/make.debug.bat b/premake/Cygwin/build-scripts/make.debug.bat new file mode 100755 index 0000000000..21c90a64ce --- /dev/null +++ b/premake/Cygwin/build-scripts/make.debug.bat @@ -0,0 +1,5 @@ +@echo off +echo This script assumes Cygwin's make utility is in your Path +cd .. +make config=debug +pause \ No newline at end of file diff --git a/premake/Cygwin/build-scripts/make.release.bat b/premake/Cygwin/build-scripts/make.release.bat new file mode 100755 index 0000000000..c57e37f524 --- /dev/null +++ b/premake/Cygwin/build-scripts/make.release.bat @@ -0,0 +1,5 @@ +@echo off +echo This script assumes Cygwin's make utility is in your Path +cd .. +make config=release +pause \ No newline at end of file diff --git a/premake/Cygwin/build-scripts/premake4.exe b/premake/Cygwin/build-scripts/premake4.exe new file mode 100755 index 0000000000000000000000000000000000000000..ab66e76c68bd931fc7a1f0c4306bd3825cf40d3b GIT binary patch literal 483840 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�^ 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�qdc@C%`der!d(zcAn7KW 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%0Di{*3#6Mk>vUWm@BZVRXA98w8|H!9qY-Z) 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 F{|8cPb};|| literal 0 HcmV?d00001 diff --git a/premake/Cygwin/build-scripts/run.tests.debug.bat b/premake/Cygwin/build-scripts/run.tests.debug.bat new file mode 100755 index 0000000000..23a5dd8d14 --- /dev/null +++ b/premake/Cygwin/build-scripts/run.tests.debug.bat @@ -0,0 +1,68 @@ +@echo off + +cd ..\tests + +call :pass checkkeys +call :pass loopwave +call :pass testatomic +call :pass testaudioinfo +call :pass testautomation +call :pass testdraw2 +call :pass testerror +call :pass testfile +call :pass testgamecontroller +call :pass testgesture +call :pass testgl2 +call :pass testgles +call :pass testhaptic +call :pass testiconv +call :pass testime +call :pass testintersection +call :pass testjoystick +call :pass testkeys +::call :pass testloadso +call :pass testlock +call :pass testmessage +call :pass testmultiaudio +call :pass testnative +call :pass testoverlay2 +call :pass testplatform +call :pass testpower +call :pass testrelative +call :pass testrendercopyex +call :pass testrendertarget +::call :pass testresample +call :pass testrumble +call :pass testscale +call :pass testsem 1 +call :pass testshader +call :pass testshape sample.bmp +call :pass testsprite2 +call :pass testspriteminimal +call :pass teststreaming +call :pass testthread +call :pass testtimer +call :pass testver +call :pass testwm2 +call :pass torturethread + +:: leave the tests directory +cd .. + +:: exit batch +goto :eof + +:: pass label (similar to pass function in the Xcode tests command script) +:pass +:: if it does not exist, break procedure +if not exist %1\Win32\Debug goto endfunc +:: goto directory +echo Testing: %1 +title Testing: %1 +cd %1\Win32\Debug +:: execute test +".\%1.exe" %2 +cd ..\..\.. +pause +:endfunc +goto :eof \ No newline at end of file diff --git a/premake/Cygwin/build-scripts/run.tests.release.bat b/premake/Cygwin/build-scripts/run.tests.release.bat new file mode 100755 index 0000000000..7af5141cd4 --- /dev/null +++ b/premake/Cygwin/build-scripts/run.tests.release.bat @@ -0,0 +1,68 @@ +@echo off + +cd ..\tests + +call :pass checkkeys +call :pass loopwave +call :pass testatomic +call :pass testaudioinfo +call :pass testautomation +call :pass testdraw2 +call :pass testerror +call :pass testfile +call :pass testgamecontroller +call :pass testgesture +call :pass testgl2 +call :pass testgles +call :pass testhaptic +call :pass testiconv +call :pass testime +call :pass testintersection +call :pass testjoystick +call :pass testkeys +::call :pass testloadso +call :pass testlock +call :pass testmessage +call :pass testmultiaudio +call :pass testnative +call :pass testoverlay2 +call :pass testplatform +call :pass testpower +call :pass testrelative +call :pass testrendercopyex +call :pass testrendertarget +::call :pass testresample +call :pass testrumble +call :pass testscale +call :pass testsem 1 +call :pass testshader +call :pass testshape sample.bmp +call :pass testsprite2 +call :pass testspriteminimal +call :pass teststreaming +call :pass testthread +call :pass testtimer +call :pass testver +call :pass testwm2 +call :pass torturethread + +:: leave the tests directory +cd .. + +:: exit batch +goto :eof + +:: pass label (similar to pass function in the Xcode tests command script) +:pass +:: if it does not exist, break procedure +if not exist %1\Win32\Release goto endfunc +:: goto directory +echo Testing: %1 +title Testing: %1 +cd %1\Win32\Debug +:: execute test +".\%1.exe" %2 +cd ..\..\.. +pause +:endfunc +goto :eof \ No newline at end of file diff --git a/premake/Linux/SDL_config_premake.h b/premake/Linux/SDL_config_premake.h new file mode 100755 index 0000000000..dfb017ab8e --- /dev/null +++ b/premake/Linux/SDL_config_premake.h @@ -0,0 +1,311 @@ +/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_linux_h +#define _SDL_config_linux_h + +/** + * \file SDL_config.h.in + * + * This is a set of defines to configure the SDL features + */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +/* Make sure that this isn't included by Visual C++ */ +#ifdef _MSC_VER +#error You should run hg revert SDL_config.h +#endif + +/* C language features */ +/* #undef const */ +/* #undef inline */ +/* #undef volatile */ + +/* C datatypes */ +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif +#define HAVE_GCC_ATOMICS 1 +/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */ +#define HAVE_PTHREAD_SPINLOCK 1 + +/* Comment this if you want to build without any C library requirements */ +#define HAVE_LIBC 1 +#if HAVE_LIBC + +/* Useful headers */ +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 1 +/* #undef HAVE_ALTIVEC_H */ +/* #undef HAVE_PTHREAD_NP_H */ +/* #undef HAVE_LIBUDEV_H */ +#define HAVE_DBUS_DBUS_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */ +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#endif +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +/* #undef HAVE_STRLCPY */ +/* #undef HAVE_STRLCAT */ +#define HAVE_STRDUP 1 +/* #undef HAVE__STRREV */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ +/* #undef HAVE_INDEX */ +/* #undef HAVE_RINDEX */ +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +/* #undef HAVE_ITOA */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__UITOA */ +/* #undef HAVE__ULTOA */ +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +/* #undef HAVE__I64TOA */ +/* #undef HAVE__UI64TOA */ +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +/* #undef HAVE__STRICMP */ +#define HAVE_STRCASECMP 1 +/* #undef HAVE__STRNICMP */ +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI /**/ +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_FSEEKO 1 +#define HAVE_FSEEKO64 1 +#define HAVE_SIGACTION 1 +#define HAVE_SA_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +/* #undef HAVE_SYSCTLBYNAME */ +#define HAVE_CLOCK_GETTIME 1 +/* #undef HAVE_GETPAGESIZE */ +#define HAVE_MPROTECT 1 +#define HAVE_ICONV 1 +#define HAVE_PTHREAD_SETNAME_NP 1 +/* #undef HAVE_PTHREAD_SET_NAME_NP */ +#define HAVE_SEM_TIMEDWAIT 1 + +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDINT_H 1 +#endif /* HAVE_LIBC */ + +/* SDL internal assertion support */ +/* #undef SDL_DEFAULT_ASSERT_LEVEL */ + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif +#ifndef SDL_LOADSO_DLOPEN +#define SDL_LOADSO_DLOPEN 1 +#endif +#ifndef SDL_AUDIO_DRIVER_ALSA +#define SDL_AUDIO_DRIVER_ALSA 1 +#endif +#ifndef SDL_AUDIO_DRIVER_ALSA_DYNAMIC +#define SDL_AUDIO_DRIVER_ALSA_DYNAMIC "libasound.so" +#endif +#ifndef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC +#define SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "libpulse-simple.so" +#endif +#ifndef SDL_AUDIO_DRIVER_PULSEAUDIO +#define SDL_AUDIO_DRIVER_PULSEAUDIO 1 +#endif +#ifndef SDL_AUDIO_DRIVER_ESD +#define SDL_AUDIO_DRIVER_ESD 1 +#endif +#ifndef SDL_AUDIO_DRIVER_ESD_DYNAMIC +#define SDL_AUDIO_DRIVER_ESD_DYNAMIC "libesd.so" +#endif +#ifndef SDL_AUDIO_DRIVER_NAS +#define SDL_AUDIO_DRIVER_NAS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_NAS_DYNAMIC +#define SDL_AUDIO_DRIVER_NAS_DYNAMIC "libaudio.so" +#endif +#ifndef SDL_AUDIO_DRIVER_OSS +#define SDL_AUDIO_DRIVER_OSS 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XINERAMA +#define SDL_VIDEO_DRIVER_X11_XINERAMA 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "libXext.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XCURSOR +#define SDL_VIDEO_DRIVER_X11_XCURSOR 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "libXi.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XVIDMODE +#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "libXinerama.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY +#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "libX11.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "libXss.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XINPUT2 +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XSCRNSAVER +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XSHAPE +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH +#define SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_XRANDR +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "libXxf86vm.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR "libXcursor.so" +#endif +#ifndef SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "libXrandr.so" +#endif +#ifndef SDL_INPUT_LINUXEV +#define SDL_INPUT_LINUXEV 1 +#endif +#ifndef SDL_HAPTIC_LINUX +#define SDL_HAPTIC_LINUX 1 +#endif +#ifndef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 +#endif +#ifndef SDL_JOYSTICK_LINUX +#define SDL_JOYSTICK_LINUX 1 +#endif +#ifndef SDL_THREAD_PTHREAD +#define SDL_THREAD_PTHREAD 1 +#endif +#ifndef SDL_POWER_LINUX +#define SDL_POWER_LINUX 1 +#endif +#ifndef SDL_TIMER_UNIX +#define SDL_TIMER_UNIX 1 +#endif +#ifndef SDL_FILESYSTEM_UNIX +#define SDL_FILESYSTEM_UNIX 1 +#endif + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +/* #undef SDL_ALTIVEC_BLITTERS */ + +#endif /* _SDL_config_h */ diff --git a/premake/Linux/build-scripts/clean_premake.sh b/premake/Linux/build-scripts/clean_premake.sh new file mode 100755 index 0000000000..a29feb8cfb --- /dev/null +++ b/premake/Linux/build-scripts/clean_premake.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# change to directory above shell file +SCRIPTPATH=`readlink -f $0` +SCRIPTDIR=`dirname $SCRIPTPATH` +cd $SCRIPTDIR/.. +$SCRIPTDIR//premake4 --file=../premake4.lua --to=./Linux clean \ No newline at end of file diff --git a/premake/Linux/build-scripts/gmake.sh b/premake/Linux/build-scripts/gmake.sh new file mode 100755 index 0000000000..0a9d80b41f --- /dev/null +++ b/premake/Linux/build-scripts/gmake.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# change to directory above shell file +SCRIPTPATH=`readlink -f $0` +SCRIPTDIR=`dirname $SCRIPTPATH` +cd $SCRIPTDIR/.. +$SCRIPTDIR/premake4 --file=../premake4.lua --to=./Linux gmake \ No newline at end of file diff --git a/premake/Linux/build-scripts/premake4 b/premake/Linux/build-scripts/premake4 new file mode 100755 index 0000000000000000000000000000000000000000..3df9741537334c1864ec2ec3138e55f4901c93a6 GIT binary patch literal 339312 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�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 J)m5kNzX1AQN7w)W literal 0 HcmV?d00001 diff --git a/premake/Linux/build-scripts/run.tests.sh b/premake/Linux/build-scripts/run.tests.sh new file mode 100755 index 0000000000..1f87e662c3 --- /dev/null +++ b/premake/Linux/build-scripts/run.tests.sh @@ -0,0 +1,94 @@ +#!/bin/bash + +function pause() { + read -p "$*" +} + +function pass() { + if [ -d "$1/Build/Debug" ]; then + cd $1/Build/Debug + echo "Testing:" $1 + "./$@" + cd ../../.. + pause "Press any key to continue..." + fi +} + +function randomfile() { + fcount=($1/*.*) + fcount=${#fcount[@]} + fpick=$(($RANDOM % $fcount)) + for d in $1/*.*; do + if [[ $fpick -eq 0 ]]; then + RETURN=$d + echo $d + return + fi + fpick=$(($fpick - 1)) + done +} + +function testspecial() { + if [ -d "$1/Build/Debug" ]; then + cd $1/Build/Debug + randomfile $2 + cd ../../.. + pass $1 $RETURN + fi +} + +# change to directory above shell file +SCRIPTPATH=`readlink -f $0` +SCRIPTDIR=`dirname $SCRIPTPATH` +cd $SCRIPTDIR/.. +cd tests + +pass "checkkeys" +pass "loopwave" +pass "testatomic" +pass "testaudioinfo" +pass "testautomation" +pass "testdraw2" +pass "testchessboard" +pass "testerror" +pass "testfile" +pass "testfilesystem" +pass "testgamecontroller" +pass "testgesture" +pass "testgl2" +pass "testgles" +pass "testhaptic" +pass "testiconv" +pass "testime" +pass "testintersection" +pass "testjoystick" +pass "testkeys" +#pass "testloadso" +pass "testlock" +pass "testmessage" +#pass "testmultiaudio" +pass "testnative" +pass "testoverlay2" +pass "testplatform" +pass "testpower" +pass "testrelative" +pass "testrendercopyex" +pass "testrendertarget" +pass "testresample" "sample.wav" "newsample.wav" "44100" +pass "testrumble" +pass "testscale" +pass "testsem" 1 +pass "testshader" +testspecial "testshape" ./shapes +testspecial "testshape" ./shapes +testspecial "testshape" ./shapes +pass "testsprite2" +pass "testspriteminimal" +pass "teststreaming" +pass "testthread" +pass "testtimer" +pass "testver" +pass "testwm2" +pass "torturethread" + +cd .. \ No newline at end of file diff --git a/premake/MinGW/SDL_config_premake.h b/premake/MinGW/SDL_config_premake.h new file mode 100755 index 0000000000..c696dd20fb --- /dev/null +++ b/premake/MinGW/SDL_config_premake.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_TIMER_WINDOWS +#define SDL_TIMER_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_WINMM +#define SDL_AUDIO_DRIVER_WINMM 1 +#endif +#ifndef SDL_FILESYSTEM_WINDOWS +#define SDL_FILESYSTEM_WINDOWS 1 +#endif +#ifndef SDL_POWER_WINDOWS +#define SDL_POWER_WINDOWS 1 +#endif +#ifndef SDL_LOADSO_WINDOWS +#define SDL_LOADSO_WINDOWS 1 +#endif +#ifndef SDL_VIDEO_DRIVER_WINDOWS +#define SDL_VIDEO_DRIVER_WINDOWS 1 +#endif +#ifndef SDL_THREAD_WINDOWS +#define SDL_THREAD_WINDOWS 1 +#endif +#ifndef SDL_HAPTIC_DUMMY +#define SDL_HAPTIC_DUMMY 1 +#endif +#ifndef SDL_JOYSTICK_DUMMY +#define SDL_JOYSTICK_DUMMY 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_WGL +#define SDL_VIDEO_OPENGL_WGL 1 +#endif + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/premake/MinGW/build-scripts/clean_premake.bat b/premake/MinGW/build-scripts/clean_premake.bat new file mode 100755 index 0000000000..099e3fd4b2 --- /dev/null +++ b/premake/MinGW/build-scripts/clean_premake.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\MinGW --mingw clean +pause \ No newline at end of file diff --git a/premake/MinGW/build-scripts/mingw.bat b/premake/MinGW/build-scripts/mingw.bat new file mode 100755 index 0000000000..347c4d97bd --- /dev/null +++ b/premake/MinGW/build-scripts/mingw.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\MinGW --mingw gmake +pause \ No newline at end of file diff --git a/premake/MinGW/build-scripts/premake4.exe b/premake/MinGW/build-scripts/premake4.exe new file mode 100755 index 0000000000000000000000000000000000000000..ab66e76c68bd931fc7a1f0c4306bd3825cf40d3b GIT binary patch literal 483840 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�^ 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�qdc@C%`der!d(zcAn7KW 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%0Di{*3#6Mk>vUWm@BZVRXA98w8|H!9qY-Z) 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 F{|8cPb};|| literal 0 HcmV?d00001 diff --git a/premake/MinGW/build-scripts/run.tests.bat b/premake/MinGW/build-scripts/run.tests.bat new file mode 100755 index 0000000000..cac7a3e052 --- /dev/null +++ b/premake/MinGW/build-scripts/run.tests.bat @@ -0,0 +1,108 @@ +@echo off + +cd ..\tests + +call :pass checkkeys +call :pass loopwave +call :pass testatomic +call :pass testaudioinfo +call :pass testautomation +call :pass testdraw2 +call :pass testdrawchessboard +call :pass testerror +call :pass testfile +call :pass testfilesystem +call :pass testgamecontroller +call :pass testgesture +call :pass testgl2 +call :pass testgles +call :pass testhaptic +call :pass testiconv +call :pass testime +call :pass testintersection +call :pass testjoystick +call :pass testkeys +::call :pass testloadso +call :pass testlock +call :pass testmessage +call :pass testmultiaudio +call :pass testnative +call :pass testoverlay2 +call :pass testplatform +call :pass testpower +call :pass testrelative +call :pass testrendercopyex +call :pass testrendertarget +call :pass testresample sample.wav newsample.wav 44100 +call :pass testrumble +call :pass testscale +call :pass testsem 1 +call :pass testshader +call :testspecial testshape .\shapes +call :testspecial testshape .\shapes +call :testspecial testshape .\shapes +call :pass testsprite2 +call :pass testspriteminimal +call :pass teststreaming +call :pass testthread +call :pass testtimer +call :pass testver +call :pass testwm2 +call :pass torturethread + +:: leave the tests directory +cd .. + +:: exit batch +goto :eof + +:testspecial +if not exist %1\Win32\Debug goto :eof +cd %1\Win32\Debug +call :randomfile %2 +cd ..\..\.. +call :pass testshape %RETURN% +goto :eof + +:: pass label (similar to pass function in the Xcode tests command script) +:pass +setlocal enabledelayedexpansion +set args= +set /A count=0 +for %%x IN (%*) DO ( + if NOT !count! EQU 0 set args=!args! %%x + set /A count=%count% + 1 +) +endlocal & set callargs=%args% +:: if it does not exist, break procedure +if not exist %1\Win32\Debug goto endfunc +:: goto directory +echo Testing: %1 +title Testing: %1 +cd %1\Win32\Debug +:: execute test +".\%1.exe"%callargs% +cd ..\..\.. +pause +:endfunc +goto :eof + +:randomfile +setlocal enabledelayedexpansion +set count=0 +if not exist %1 goto :eof +for %%d in (%1\*.*) DO ( + set /A count=count + 1 +) +set /A count=%RANDOM% %% %count% +for %%d in (%1\*.*) DO ( + if !count! EQU 0 ( + set rfile=%%d + goto endrfile + ) + set /A count=count-1 +) +:endrfile +set tmprfile=!rfile! +endlocal & set RETURN=%tmprfile% +goto :eof \ No newline at end of file diff --git a/premake/README-cygwin.txt b/premake/README-cygwin.txt new file mode 100755 index 0000000000..47be2e1cfb --- /dev/null +++ b/premake/README-cygwin.txt @@ -0,0 +1,29 @@ +There is a script in the Cygwin/build-scripts folder for generating a series of +GNU makefiles for building the SDL2 project and some parts of its test suite. +These work similarly to the MinGW makefiles, but the overall Cygwin project has +significant limitations. + +The current project will not build correctly. It's experimental and has a lot of +tweaking needed to be built. It was built successfully once, but it has not been +maintained in any way. + +The Cygwin project is limited in that it is not expected to be able to run +anything visual at all. It is not difficult to enable all of the visual tests +and support (such as X11 support or OpenGL), but it is not a goal for this +project. For the complexity of having a compatible desktop environment setup on +Cygwin, it's assumed that will not be the case for most users of the generated +Cygwin project. As a result, only the core tests and library are built for +Cygwin, focusing on things like thread support, file operations, and various +system queries and information gathering. + +The Cygwin directory does have automated tests to run through the tests +supported by Cygwin. It also has separate build scripts for both debug and +release builds, though this is assuming the GNU make utility is located in the +user's PATH. + +The Cygwin project has no outstanding dependencies, since it is designed to be +mostly minimalistic and just relied on the POSIX functionality provided by +Cygwin. + +Like the other projects, you may cleanup the entire directory of any generated +or built files using the clean script located in Cygwin/build-scripts. \ No newline at end of file diff --git a/premake/README-ios.txt b/premake/README-ios.txt new file mode 100755 index 0000000000..cb491036dd --- /dev/null +++ b/premake/README-ios.txt @@ -0,0 +1,33 @@ +Use the Xcode command files (located in the Xcode-iOS/build-scripts folder) +to conveniently generate a workspace for Xcode 3 or Xcode 4. It also +contains a cleaner script and a convenient script for automatically +running all the test suites. + +The iOS project will be referencing all files related to the top-level iOS +project. The core library will use the top-level include and src directories, +just like the other generated projects, but it will build projects for each of +the Demos in the top-level Xcode-iOS folder. These projects will have any +resources they need copied to be copied over and included as resources. They +will also reference the Info.plist file in Xcode-iOS/Demos. + +iOS support is currently experimental, but it should work just fine for any and +all applications. All of the demos that work from the manually-created Xcode +projects also work for the generated projects. There are a few minor things that +need improving, but nothing major. + +The iOS projects have no major dependencies other than the ones in the manual +Xcode-iOS project. Those are: + + -AudioToolbox.framework + -QuartzCore.framework + -OpenGLES.framework + -CoreGraphics.framework + -UIKit.framework + -Foundation.framework + -CoreAudio.framework + +All of these frameworks are part of the iOS SDK, not part of the core OS X +system. + +Run the clean script to clear out the directory of Xcode-related files +and binaries. \ No newline at end of file diff --git a/premake/README-linux.txt b/premake/README-linux.txt new file mode 100755 index 0000000000..9374b72843 --- /dev/null +++ b/premake/README-linux.txt @@ -0,0 +1,46 @@ +You may generate GNU makefiles for building SDL2 and its related test suite by +using the gmake shell script in the Linux/build-scripts folder. + +Linux support is currently experimental for the meta-build system. Most of the +progress made on this support happened toward the end of the meta-build system +project, so there is a lot currently missing that could be added in the future. +For the most part, the Linux support works well, but there is a significant +amount of testing needed to verify it can be built in many different +environments. + +The Linux project does not target every dependency it should (as seen in the +autotools configure script or in the CMake script), but it does target the +following dependencies: + + -D-Bus (required to build Linux at all) + -DLOpen (most of the other dependencies are dependent on this) + -ALSA + -PulseAudio + -ESD + -NAS + -OSS + -X11 + -OpenGL + +Also, the Linux system should be building the SDL2 library as a shared library, +but it builds it as a static library because of a few premake-related issues. +This is because when the makefile generated by premake tells the linker where to +find the definitions library (libSDL2.o), it also gives a hint to the loader to +find libSDL2.so in the same place, with a relative path. This means in order to +execute the program dynamically linked to SDL2, it's looking in some path like: + + "../../SDL2/Build/Debug" + +Now, while this path works at the location of the makefile (such as +./tests/testsprite), it does not make sense from the actual location of the +executable (./tests/testsprite/Build/Debug). Furthermore, it's just massively +inconvenient to have a relative path to look for the shared object. Moving +libSDL2.so into the same directory as the executable does not solve this issue. +Unfortunately, premake also does not allow an install target to be created for +the makefiles, which is another one of the major issues related to building SDL2 +as a shared library on Linux. Once these problems are solved, this support +should be very straightforward to add to this system in the future. + +The Linux system does have both an automated test and cleaning shell files for +running through the entire supported test suite and cleaning up the generated +and built files, respectively. \ No newline at end of file diff --git a/premake/README-macosx.txt b/premake/README-macosx.txt new file mode 100755 index 0000000000..599e96e3c8 --- /dev/null +++ b/premake/README-macosx.txt @@ -0,0 +1,34 @@ +Use the Xcode command files (located in the Xcode/build-scripts folder) +to conveniently generate a workspace for Xcode 3 or Xcode 4. It also +contains a cleaner script and a convenient script for automatically +running all the test suites. + +If you use the script to automatically build the workspace file, you +need to open the workspace at least once after generating it, or it +will give errors that certain schema do not exist within the workspace. +Also, the script depends on Xcode command line tools being installed. + +There are separate build files for building for i386 architecture +versus x86_64 architecture. There are separate build scripts for +Xcode 3 versus Xcode 4, but these just use the different toolchains. + +There is a script for automatically running through all known supported +tests on that platform. + +The Mac OS X projects currently have reliance on the following dependencies: + + -AudioToolbox.framework + -AudioUnit.framework + -Cocoa.framework + -CoreAudio.framework + -IOKit.framework + -Carbon.framework + -ForceFeedback.framework + -CoreFoundation.framework + +It will also link to OpenGL.framework, as the dependency function for OpenGL +assumes that OpenGL always exists on Mac OS X. However, this is defined in +a segmented way to allow the possibility of no OpenGL support on Mac OS X. + +Run the clean script to clear out the directory of Xcode-related files +and binaries. \ No newline at end of file diff --git a/premake/README-mingw.txt b/premake/README-mingw.txt new file mode 100755 index 0000000000..8eb90c34e0 --- /dev/null +++ b/premake/README-mingw.txt @@ -0,0 +1,39 @@ +MinGW requires both the MinGW system and MSYS. + +There is a script for generating a series of GNU makefiles targeted +at MinGW on Windows. These makefiles will build the SDL library and +test executables with static links to libgcc and the same features +as the Visual Studio builds. That is, they have full OpenGL support +and they have no dependency on MinGW. + +After generating the scripts, simply navigate to the directory in +a MSYS terminal and execute: + + make + +If you wish to clean the directory, you can use either the clean +batch file, or call: + + make clean + +The former will remove the actual makefiles and the latter will +perform a typical clean operation. You can target specific +build configurations as such: + + make config=debug + +Verbosity is initially set to off. All verbosity controls is +whether the resulting gcc and ar commands are printed to the +console. You can enable verbose output by setting verbose to any +value: + + make verbose=1 + +There is currently no install target, but that is intended +eventually. + +Ben: +There is no DirectX support currently, but you can use the +command option '--directx' when generating the makefiles to +explicitly force the DirectX dependency on. This may have +undefined behavior, so use it cautiously. \ No newline at end of file diff --git a/premake/README-windows.txt b/premake/README-windows.txt new file mode 100755 index 0000000000..759a814f21 --- /dev/null +++ b/premake/README-windows.txt @@ -0,0 +1,37 @@ +Use the Visual Studio batch files (located in the VisualC folder) to +conveniently generate solutions for Visual Studio 2008, 2010, and 2012. +It also contains a cleaner script and a convenient script for automatically +running all the test suites. + +There is a script (check.bin.compatibility.vs2010.bat) in VisualC\build-scripts +which will build \VisualC (which is not generated by this premake +system) and build SDL2.dll using the generated SDL2.sln in the VS2010 folder. It +will copy the SDL2.dll over to each test project in \VisualC and +subsequently run those tests to verify binary compatibility between the SDL2.dll +that came from the premake solution and the executables which were built using +the old solution files. + +The windows project currently depends on most of the libraries inherently +added to the links list by Visual Studio. The additional libraries SDL2 depends +on are as follows: + + -imm32 + -oleaut32 + -winmm + -version + -OpenGL32 + -DirectX + +OpenGL32 is an optional dependency. If it is not located for whatever reason, +SDL2 will build fine without it. DirectX is another optional dependency for +SDL2. Unlike the manually-created VS projects, the meta-build system supports +not having DirectX support and still being able to build and run through most of +the projects (using the OpenGL renderer or the software renderer). + +Run the clean script to clear out the directory of VS-related files and +binaries. + +Ben: +Please note that the script for building the VS2012 solution from the +command prompt seems to not be working properly. This issue is +currently unresolved. \ No newline at end of file diff --git a/premake/README.txt b/premake/README.txt new file mode 100755 index 0000000000..02c2bb41cf --- /dev/null +++ b/premake/README.txt @@ -0,0 +1,330 @@ +Author: Ben Henning + +The goal of this project is to provide a lightweight and portable meta-build +system for generating build systems for various platforms and architectures, all +for the SDL2 library and subsequently dependent executables. + +Following is a table of contents for the entire README file. + +[0] OVERVIEW +[1] GENERATING PROJECTS AND COMMAND-LINE OPTIONS +[2] STRUCTURE +[3] SUPPORT ON WINDOWS AND VISUAL STUDIO +[4] SUPPORT ON MAC OS X AND XCODE +[5] SUPPORT FOR IOS +[6] SUPPORT FOR LINUX +[7] SUPPORT FOR MINGW +[8] SUPPORT FOR CYGWIN +[9] EXTENDING THE SYSTEM TO NEW PROJECTS OR PLATFORMS (code samples) + +[0] OVERVIEW + +The system is capable of generating projects for many different platforms and +architectures. How to generically generate projects is described in the next +section. Subsequent sections thereafter describe more specific ways to generate +projects and dependencies projects have. + +All of the projects inherently have things in common, such as depending on the +same source tree for header and source files. All projects generated will also +have both debug and release configurations available to be built. More +information on how to build either will be provided below. + +To view a list of progress on the project, view the changelog. + +[1] GENERATING PROJECTS AND COMMAND-LINE OPTIONS + +To receive help with various premake actions and command-line options, or to +view the options available for the current premake environment, run the +following command: + + ./premake4 --file=./path/to/premake4.lua help + +To construct the project files, run this local command from any command line: + + .\premake4 --file=.\path\to\premake4.lua --to=.\resultDirectory [opts] [vs2008/vs2010/vs2012] +OR + ./premake4 --file=./path/to/premake4.lua --to=./resultDirectory [opts] [xcode3/xcode4/gmake] + +opts may be one of: + --mingw + --cygwin + --ios + +opts may also include any of the following: + --alsa : Force the ALSA dependency on for Linux targets. + --dbus : Force the D-Bus dependency on for Linux targets. + --directx : Force the DirectX dependency on for Windows, MinGW, and Cygwin targets. + --dlopen : Force the DLOpen dependency on for Linux targets. + --esd : Force the ESD dependency on for Linux targets. + --nas : Force the NAS dependency on for Linux targets. + --opengl : Force the OpenGL dependency on for any target. + --oss : Force the OSS dependency on for Linux targets. + --pulseaudio : Force the PulseAudio dependency on for Linux targets. + --x11 : Force the X11 dependency on for Linux targets. + +All projects have debug and release configurations that may be built. For IDE +projects such as Visual Studio and Xcode, there are configurations in the former +and schemas in the latter to handle this. + +For make files, the following command line may be used: + make config=debug +or: + make config=release + +The make files also have a level of verbosity that will print all compiler and +linking commands to the command line. This can be enabled with the following +command: + make verbose=1 + +[2] STRUCTURE + +The structure of the meta-build system is split into three parts: + + 1. The core system which runs all of the other scripts, generates the premake + Lua file that is used to generate the actual build system, and sets up + premake to generate it. (premake4.lua) + + 2. The utility files for performing various convenience operations, ranging + from string operations and a file wrapper to custom project definitions and + complex dependency checking using CMake-esque functions. There is also a + file containing custom dependency functions for checked support. + (everything in the util folder) + + 3. The project definition files, which define each and every project related + to SDL2. This includes the SDL2 library itself, along with all of its + current tests and iOS Demos. These files also related to dependency handling + and help build dependency trees for the various projects. + (everything in the projects folder) + +The premake4.lua file is lightly documented and commented to explain how it +interfaces with the other utility files and project files. It is not extensively +documented because the actual generation process is not considered to be +pertinent to the overall usage of the meta-build system. + +The utility files have thorough documentation, since they are the foundation for +the entire project definition and dependency handling systems. + +The project definition files are lightly documented, since they are expected to +be self-explanatory. Look through each and every project definition file +(especially SDL2.lua, testgl2.lua, testshape.lua, testsprite2.lua, and +testnative.lua) to gain experience and familiarity with most of the project +definition system. + +The dependency system is very straightforward. As explained in both +sdl_projects.lua and sdl_dependency_checkers.lua, a function for checking the +actual dependency support is registered by its name and then referenced to in +the project definitions (such as for SDL2.lua). These definitions are allowed to +do anything necessary to determine whether the appropriate support exists in the +current build environment or not. The possibilities for checking can be seen +specifically in the function for checking DirectX support and any of the Linux +dependency functions using the sdl_check_compile.lua functions. + +As far as building the projects is concerned, the project definitions are +allowed to set configuration key-value pairs which will be translated and placed +inside a generated SDL config header file, similar to the one generated by both +autotools and CMake. + +[3] SUPPORT ON WINDOWS AND VISUAL STUDIO + +Check the Windows README for more information on SDL2 support on Windows and +Visual Studio. Current support exists for Visual Studio 2008, 2010, and 2012. + +[4] SUPPORT ON MAC OS X AND XCODE + +Check the Mac OS X README for more information on SDL2 support on Mac OS X using +Xcode. Current support should exist for Mac OS X 10.6, 10.7, and 10.8 (as +tested, but more may be supported). Supported Xcode versions are 3 and 4. It +supports building for both i686 and x86_64 architectures, as well as support for +universal 32-bit binaries, universal 64-bit binaries, and universal combined +binaries. + +[5] SUPPORT FOR IOS + +EXPERIMENTAL SUPPORT + +Check the iOS README for more information on SDL2 support on iOS using Xcode. +Current support has been tested on the iOS 6 emulators for iPhone and iPad, +using both Xcode 3 and Xcode 4. The iOS project will reference all the Demos +the manual project does. + +[6] SUPPORT FOR LINUX + +EXPERIMENTAL SUPPORT + +Check the Linux README for more information on SDL2 support on Linux. Currently, +only a subset of the Linux dependencies are supported, and they are supported +partially. Linux also builds to a static library instead of a shared library. +The tests run well and as expected. + +[7] SUPPORT FOR MINGW + +Check the MinGW README for more information on SDL2 support on MinGW. Currently, +all of the tests that work using the Visual Studio projects also seem to work +with MinGW, minus DirectX support. DirectX is not inherently supported, but can +be forcibly turned on if the user knows what they are doing. + +[8] SUPPORT FOR CYGWIN + +BROKEN SUPPORT + +Check the Cygwin README for more information on the progress of supporting SDL2 +on Cygwin. + +[9] EXTENDING THE SYSTEM TO NEW PROJECTS OR PLATFORMS + +In order to create a new project, simply create a Lua file and place it within +the projects directory. The meta-build system will automatically include it. +It must contain a SDL_project definition. Projects *must* have source files as +well, otherwise they will be ignored by the meta-build system. There are a +plethora of examples demonstrating how to defined projects, link them to various +dependencies, and to create dependencies. + +Here is an example that creates a new project named foo, it's a ConsoleApp +(which is the default for SDL projects, look at http://industriousone.com/kind +for more information). Its language is C and its source directory is "../test" +(this path is relative to the location of premake4.lua). It's project location +is "tests", which means it will be placed in the ./tests/ folder of whichever +destination directory is set while generating the project (for example, +./VisualC/tests). It is including all the files starting with "foo." from the +"../test" folder. + + SDL_project "foo" + SDL_kind "ConsoleApp" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_files { "/testrendercopyex.*" } + +Now, we can extend this project slightly: + + SDL_project "foo" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/foo.*" } + SDL_copy { "icon.bmp", "sample.bmp" } + +We now specified that this application will not work on iOS or Cygwin targets, +so it will be discluded when generating projects for those platforms. We have +also specified that this project depends on 'SDL2main', 'SDL2test', and 'SDL2', +which are other projects that are already defined. We can set the dependency +to any projects the SDL2 meta-build system is aware of. We also have an +interesting SDL_copy directive, which will automatically copy the files +"icon.bmp" and "sample.bmp" from "/test" to the directory of foo's +executable when it's built. + +Let's take a look at another example: + + SDL_project "testgl2" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_defines { "HAVE_OPENGL" } + SDL_dependency "OpenGL" + -- opengl is platform independent + SDL_depfunc "OpenGL" + SDL_files { "/testgl2.*" } + +This is a copy of the testgl2.lua file. Most of this is already familiar, but +there are a few new things to point out. We can set preprocessor definitions by +using the 'SDL_defines' directive. We can also create a dependency for the +project on some varied criteria. For example, testgl2 is obviously dependent on +the presence of the OpenGL library. So, the only way it will include the +"testgl2.*" (testgl2.c/testgl2.h) files is if the dependency function "OpenGL" +returns information regarding the whereabouts of the OpenGL library on the +current system. This function is registered in sdl_dependency_checkers.lua: + + function openGLDep() + print("Checking OpenGL dependencies...") + ... + return { found = foundLib, libDirs = { }, libs = { libname } } + end + ... + SDL_registerDependencyChecker("OpenGL", openGLDep) + +This function is called when it's time to decide whether testgl2 should be +generated or not. openGLDep can use any and all functions to decide whether +OpenGL is supported. + +Dependencies and projects can become much more sophisticate, if necessary. Take +the following example from the SDL2.lua project definition: + + -- DirectX dependency + SDL_dependency "directx" + SDL_os "windows|mingw" + SDL_depfunc "DirectX" + SDL_config + { + ["SDL_AUDIO_DRIVER_DSOUND"] = 1, + ["SDL_AUDIO_DRIVER_XAUDIO2"] = 1, + ["SDL_JOYSTICK_DINPUT"] = 1, + ["SDL_HAPTIC_DINPUT"] = 1, + ["SDL_VIDEO_RENDER_D3D"] = 1 + } + SDL_paths + { + "/audio/directsound/", + "/audio/xaudio2/", + "/render/direct3d/", + -- these two depend on Xinput + "/haptic/windows/", + "/joystick/windows/", + } + +This dependency is, as expected, for DirectX. One thing to note here is even +dependencies can be dependent on an operating system. This dependency will not +even be resolved if SDL2 is being generated on, say, Linux or Mac OS X. Two new +things shown here are 'SDL_config' and 'SDL_paths' directives. SDL_config allows +you to set preprocessor definitions that will be pasted into +SDL_config_premake.h (which acts as a replacement to SDL_config.h when building +the project). This allows for significant flexibility (look around SDL2.lua's +dependencies, especially for Linux). SDL_paths works like SDL_files, except it +includes all .c, .h, and .m files within that directory. The directory is still +relative to the source directory of the project (in this case, /src). + +Finally, dependency checking can be done in a huge variety of ways, ranging +from simply checking for an environmental variable to scanning directories on +Windows. Even more flexibly, the build environment itself can be checked using +functions similar to those provided in CMake to check if a function compiles, +library exists, etc. The following example comes from +sdl_dependency_checkers.lua and is used by the Linux dependency in the SDL2 +project to determine whether the OSS sound system is supported: + + function ossDep() + print("Checking for OSS support...") + if not check_cxx_source_compiles([[ + #include + int main() { int arg = SNDCTL_DSP_SETFRAGMENT; return 0; }]]) + and not check_cxx_source_compiles([[ + #include + int main() { int arg = SNDCTL_DSP_SETFRAGMENT; return 0; }]]) then + print("Warning: OSS unsupported!") + return { found = false } + end + return { found = true } + end + +Notice how it uses 'check_cxx_source_compiles'. There are even more functions +than this to check and, rather than going in detail with them here, I encourage +you to look at the documented functions within ./util/sdl_check_compile.lua. + +In order to support new platforms, start with the minimal configuration template +provided and work off of the initial SDL2 project. You may add additional +dependencies to define other source files specific to that platform (see how +it's done with Windows and Mac OS X), or you can add special dependencies that +rely on dependency functions you may implement yourself (see DirectX and +OpenGL). Dependencies can use the 'SDL_config' directive to specify special +values that can be pasted into the resulting configuration header file upon +generation. + +For more detailed information about the functions supported and how they work, +look at all of the Lua files in the util directory, as well as any of the +example projects in the projects directory to demonstrate how many of these +functions are used. The information above is only a quick subset of the +capabilities of the meta-build system. \ No newline at end of file diff --git a/premake/VisualC/VS2008/SDL.sln b/premake/VisualC/VS2008/SDL.sln new file mode 100755 index 0000000000..bd0dcbb15c --- /dev/null +++ b/premake/VisualC/VS2008/SDL.sln @@ -0,0 +1,487 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testjoystick\testjoystick.vcproj", "{AE94B4D8-1CF9-E843-8AD0-7C7613F66BEA}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfilesystem", "tests\testfilesystem\testfilesystem.vcproj", "{67EC9A94-2489-CA44-8E03-3BA3553B8854}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsem", "tests\testsem\testsem.vcproj", "{4678247F-21BB-EF4F-95F7-D4C23C9CEC21}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testnative", "tests\testnative\testnative.vcproj", "{D81E6981-B313-9A4D-8B92-6E0D61888E17}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testscale", "tests\testscale\testscale.vcproj", "{A7823B01-4361-164B-A2D4-76F2A64E8D29}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgamecontroller", "tests\testgamecontroller\testgamecontroller.vcproj", "{520C8236-74BC-5D49-B3F0-E48DC59472D6}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendertarget", "tests\testrendertarget\testrendertarget.vcproj", "{51DA1764-30F0-7A47-BBF4-0A97880EF162}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testver", "tests\testver\testver.vcproj", "{58633022-DFA5-5045-8BFD-E6D63375CBE6}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testkeys", "tests\testkeys\testkeys.vcproj", "{6C32C77B-89B7-044C-899A-350E2B5E34D9}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testloadso", "tests\testloadso\testloadso.vcproj", "{3744EA3C-502A-6741-A100-0AE7DEB1FB34}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testtimer", "tests\testtimer\testtimer.vcproj", "{CCD36FA9-CC1F-9342-8A31-3635B32BDBAB}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay2", "tests\testoverlay2\testoverlay2.vcproj", "{076A9E71-1DCB-2D48-AD91-1C8760A9C0B4}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "torturethread", "tests\torturethread\torturethread.vcproj", "{9272D376-B1EC-3746-9B0C-E25D7C4DA8E0}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplatform", "tests\testplatform\testplatform.vcproj", "{BEB73BB4-60A4-7E4E-B9A4-C1AB0D378AB5}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgesture", "tests\testgesture\testgesture.vcproj", "{CE632109-B49D-FC43-851F-7BF92A3CDB80}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testaudioinfo", "tests\testaudioinfo\testaudioinfo.vcproj", "{AA54CD08-6B46-BA4B-9161-15D7BED7D354}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loopwave", "tests\loopwave\loopwave.vcproj", "{12505F46-1148-9B4F-A319-BAB797F2CB7A}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testthread", "tests\testthread\testthread.vcproj", "{50B18708-62EC-DE43-8523-B3832ED628C6}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teststreaming", "tests\teststreaming\teststreaming.vcproj", "{52D41AEF-9480-9D40-B7C7-EB7EDDE84F5B}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "tests\checkkeys\checkkeys.vcproj", "{800464F4-3881-A447-9B95-83869584B8BE}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testspriteminimal", "tests\testspriteminimal\testspriteminimal.vcproj", "{D729516D-75F5-F344-86E9-9A4B36EA795F}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsprite2", "tests\testsprite2\testsprite2.vcproj", "{0E4487F9-8E7C-224F-99CC-F1FEC7124A60}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgles", "tests\testgles\testgles.vcproj", "{9117F5E0-4F8C-B24F-A581-0095E34D61B0}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testatomic", "tests\testatomic\testatomic.vcproj", "{36D0D004-9F44-0247-825B-61EFD8A0394F}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2test", "SDL2test\SDL2test.vcproj", "{CED8A756-F422-7B49-94A2-032634A75A8A}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testhaptic", "tests\testhaptic\testhaptic.vcproj", "{93670ED4-2FDA-E343-86D3-E730C4B3B784}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl2", "tests\testgl2\testgl2.vcproj", "{E3DDC4FA-079A-3548-8207-C972B9FC94D9}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL2\SDL2.vcproj", "{CB2E0D61-6692-7844-B1B9-550870AF8286}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testerror", "tests\testerror\testerror.vcproj", "{845E9430-36ED-FF4C-8078-3F9B69DEA8E6}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrumble", "tests\testrumble\testrumble.vcproj", "{3FAEC7C2-053A-C142-AF02-42FD74DE2295}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testresample", "tests\testresample\testresample.vcproj", "{1CD5DA6F-75A5-5A4A-993B-984FAFBA9CF1}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendercopyex", "tests\testrendercopyex\testrendercopyex.vcproj", "{E896D80E-AD87-E54B-939D-82B5A35B70E4}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testpower", "tests\testpower\testpower.vcproj", "{FE5F64B1-85CA-3F41-93FE-C9E96C6D8E11}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testchessboard", "tests\testchessboard\testchessboard.vcproj", "{7024BA1F-5E24-184A-8411-833692EE8EF7}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "SDL2main\SDL2main.vcproj", "{10E5D730-F9B4-3541-90B0-5AA85E0256C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrelative", "tests\testrelative\testrelative.vcproj", "{32F5BC66-EC0C-1042-800A-AE3691202DA0}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testlock", "tests\testlock\testlock.vcproj", "{42F52BDF-E44E-9C46-A315-9AF8DF0C53F4}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmultiaudio", "tests\testmultiaudio\testmultiaudio.vcproj", "{288BDEFD-9FEC-EB4C-908D-AC7DB41C20A8}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmessage", "tests\testmessage\testmessage.vcproj", "{24DE8359-B930-CB4A-B91B-415C5EF66827}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdraw2", "tests\testdraw2\testdraw2.vcproj", "{F28096FA-74ED-1240-A110-D8A925897232}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshape", "tests\testshape\testshape.vcproj", "{3A964B91-6CDD-F24A-8803-2D3E517FEA68}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testwm2", "tests\testwm2\testwm2.vcproj", "{A88183B1-BB10-0644-AD64-FE6CA99B9D6B}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testautomation", "tests\testautomation\testautomation.vcproj", "{5B19ABEA-4A6E-664E-A996-8BE161B4D155}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testiconv", "tests\testiconv\testiconv.vcproj", "{D853E04D-DF9C-B644-9F50-B201EAAF5E18}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "tests\testfile\testfile.vcproj", "{CC1D6E91-BDCC-D84A-B6BA-5C986D8DB67C}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testime", "tests\testime\testime.vcproj", "{CC4ED7AD-FD78-B940-8ED1-A0C67638FE19}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CED8A756-F422-7B49-94A2-032634A75A8A} = {CED8A756-F422-7B49-94A2-032634A75A8A} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshader", "tests\testshader\testshader.vcproj", "{DB434F64-0D1E-FC46-A116-56DBB68C1869}" + ProjectSection(ProjectDependencies) = postProject + {10E5D730-F9B4-3541-90B0-5AA85E0256C0} = {10E5D730-F9B4-3541-90B0-5AA85E0256C0} + {CB2E0D61-6692-7844-B1B9-550870AF8286} = {CB2E0D61-6692-7844-B1B9-550870AF8286} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AE94B4D8-1CF9-E843-8AD0-7C7613F66BEA}.Debug|Win32.ActiveCfg = Debug|Win32 + {AE94B4D8-1CF9-E843-8AD0-7C7613F66BEA}.Debug|Win32.Build.0 = Debug|Win32 + {AE94B4D8-1CF9-E843-8AD0-7C7613F66BEA}.Release|Win32.ActiveCfg = Release|Win32 + {AE94B4D8-1CF9-E843-8AD0-7C7613F66BEA}.Release|Win32.Build.0 = Release|Win32 + {67EC9A94-2489-CA44-8E03-3BA3553B8854}.Debug|Win32.ActiveCfg = Debug|Win32 + {67EC9A94-2489-CA44-8E03-3BA3553B8854}.Debug|Win32.Build.0 = Debug|Win32 + {67EC9A94-2489-CA44-8E03-3BA3553B8854}.Release|Win32.ActiveCfg = Release|Win32 + {67EC9A94-2489-CA44-8E03-3BA3553B8854}.Release|Win32.Build.0 = Release|Win32 + {4678247F-21BB-EF4F-95F7-D4C23C9CEC21}.Debug|Win32.ActiveCfg = Debug|Win32 + {4678247F-21BB-EF4F-95F7-D4C23C9CEC21}.Debug|Win32.Build.0 = Debug|Win32 + {4678247F-21BB-EF4F-95F7-D4C23C9CEC21}.Release|Win32.ActiveCfg = Release|Win32 + {4678247F-21BB-EF4F-95F7-D4C23C9CEC21}.Release|Win32.Build.0 = Release|Win32 + {D81E6981-B313-9A4D-8B92-6E0D61888E17}.Debug|Win32.ActiveCfg = Debug|Win32 + {D81E6981-B313-9A4D-8B92-6E0D61888E17}.Debug|Win32.Build.0 = Debug|Win32 + {D81E6981-B313-9A4D-8B92-6E0D61888E17}.Release|Win32.ActiveCfg = Release|Win32 + {D81E6981-B313-9A4D-8B92-6E0D61888E17}.Release|Win32.Build.0 = Release|Win32 + {A7823B01-4361-164B-A2D4-76F2A64E8D29}.Debug|Win32.ActiveCfg = Debug|Win32 + {A7823B01-4361-164B-A2D4-76F2A64E8D29}.Debug|Win32.Build.0 = Debug|Win32 + {A7823B01-4361-164B-A2D4-76F2A64E8D29}.Release|Win32.ActiveCfg = Release|Win32 + {A7823B01-4361-164B-A2D4-76F2A64E8D29}.Release|Win32.Build.0 = Release|Win32 + {520C8236-74BC-5D49-B3F0-E48DC59472D6}.Debug|Win32.ActiveCfg = Debug|Win32 + {520C8236-74BC-5D49-B3F0-E48DC59472D6}.Debug|Win32.Build.0 = Debug|Win32 + {520C8236-74BC-5D49-B3F0-E48DC59472D6}.Release|Win32.ActiveCfg = Release|Win32 + {520C8236-74BC-5D49-B3F0-E48DC59472D6}.Release|Win32.Build.0 = Release|Win32 + {51DA1764-30F0-7A47-BBF4-0A97880EF162}.Debug|Win32.ActiveCfg = Debug|Win32 + {51DA1764-30F0-7A47-BBF4-0A97880EF162}.Debug|Win32.Build.0 = Debug|Win32 + {51DA1764-30F0-7A47-BBF4-0A97880EF162}.Release|Win32.ActiveCfg = Release|Win32 + {51DA1764-30F0-7A47-BBF4-0A97880EF162}.Release|Win32.Build.0 = Release|Win32 + {58633022-DFA5-5045-8BFD-E6D63375CBE6}.Debug|Win32.ActiveCfg = Debug|Win32 + {58633022-DFA5-5045-8BFD-E6D63375CBE6}.Debug|Win32.Build.0 = Debug|Win32 + {58633022-DFA5-5045-8BFD-E6D63375CBE6}.Release|Win32.ActiveCfg = Release|Win32 + {58633022-DFA5-5045-8BFD-E6D63375CBE6}.Release|Win32.Build.0 = Release|Win32 + {6C32C77B-89B7-044C-899A-350E2B5E34D9}.Debug|Win32.ActiveCfg = Debug|Win32 + {6C32C77B-89B7-044C-899A-350E2B5E34D9}.Debug|Win32.Build.0 = Debug|Win32 + {6C32C77B-89B7-044C-899A-350E2B5E34D9}.Release|Win32.ActiveCfg = Release|Win32 + {6C32C77B-89B7-044C-899A-350E2B5E34D9}.Release|Win32.Build.0 = Release|Win32 + {3744EA3C-502A-6741-A100-0AE7DEB1FB34}.Debug|Win32.ActiveCfg = Debug|Win32 + {3744EA3C-502A-6741-A100-0AE7DEB1FB34}.Debug|Win32.Build.0 = Debug|Win32 + {3744EA3C-502A-6741-A100-0AE7DEB1FB34}.Release|Win32.ActiveCfg = Release|Win32 + {3744EA3C-502A-6741-A100-0AE7DEB1FB34}.Release|Win32.Build.0 = Release|Win32 + {CCD36FA9-CC1F-9342-8A31-3635B32BDBAB}.Debug|Win32.ActiveCfg = Debug|Win32 + {CCD36FA9-CC1F-9342-8A31-3635B32BDBAB}.Debug|Win32.Build.0 = Debug|Win32 + {CCD36FA9-CC1F-9342-8A31-3635B32BDBAB}.Release|Win32.ActiveCfg = Release|Win32 + {CCD36FA9-CC1F-9342-8A31-3635B32BDBAB}.Release|Win32.Build.0 = Release|Win32 + {076A9E71-1DCB-2D48-AD91-1C8760A9C0B4}.Debug|Win32.ActiveCfg = Debug|Win32 + {076A9E71-1DCB-2D48-AD91-1C8760A9C0B4}.Debug|Win32.Build.0 = Debug|Win32 + {076A9E71-1DCB-2D48-AD91-1C8760A9C0B4}.Release|Win32.ActiveCfg = Release|Win32 + {076A9E71-1DCB-2D48-AD91-1C8760A9C0B4}.Release|Win32.Build.0 = Release|Win32 + {9272D376-B1EC-3746-9B0C-E25D7C4DA8E0}.Debug|Win32.ActiveCfg = Debug|Win32 + {9272D376-B1EC-3746-9B0C-E25D7C4DA8E0}.Debug|Win32.Build.0 = Debug|Win32 + {9272D376-B1EC-3746-9B0C-E25D7C4DA8E0}.Release|Win32.ActiveCfg = Release|Win32 + {9272D376-B1EC-3746-9B0C-E25D7C4DA8E0}.Release|Win32.Build.0 = Release|Win32 + {BEB73BB4-60A4-7E4E-B9A4-C1AB0D378AB5}.Debug|Win32.ActiveCfg = Debug|Win32 + {BEB73BB4-60A4-7E4E-B9A4-C1AB0D378AB5}.Debug|Win32.Build.0 = Debug|Win32 + {BEB73BB4-60A4-7E4E-B9A4-C1AB0D378AB5}.Release|Win32.ActiveCfg = Release|Win32 + {BEB73BB4-60A4-7E4E-B9A4-C1AB0D378AB5}.Release|Win32.Build.0 = Release|Win32 + {CE632109-B49D-FC43-851F-7BF92A3CDB80}.Debug|Win32.ActiveCfg = Debug|Win32 + {CE632109-B49D-FC43-851F-7BF92A3CDB80}.Debug|Win32.Build.0 = Debug|Win32 + {CE632109-B49D-FC43-851F-7BF92A3CDB80}.Release|Win32.ActiveCfg = Release|Win32 + {CE632109-B49D-FC43-851F-7BF92A3CDB80}.Release|Win32.Build.0 = Release|Win32 + {AA54CD08-6B46-BA4B-9161-15D7BED7D354}.Debug|Win32.ActiveCfg = Debug|Win32 + {AA54CD08-6B46-BA4B-9161-15D7BED7D354}.Debug|Win32.Build.0 = Debug|Win32 + {AA54CD08-6B46-BA4B-9161-15D7BED7D354}.Release|Win32.ActiveCfg = Release|Win32 + {AA54CD08-6B46-BA4B-9161-15D7BED7D354}.Release|Win32.Build.0 = Release|Win32 + {12505F46-1148-9B4F-A319-BAB797F2CB7A}.Debug|Win32.ActiveCfg = Debug|Win32 + {12505F46-1148-9B4F-A319-BAB797F2CB7A}.Debug|Win32.Build.0 = Debug|Win32 + {12505F46-1148-9B4F-A319-BAB797F2CB7A}.Release|Win32.ActiveCfg = Release|Win32 + {12505F46-1148-9B4F-A319-BAB797F2CB7A}.Release|Win32.Build.0 = Release|Win32 + {50B18708-62EC-DE43-8523-B3832ED628C6}.Debug|Win32.ActiveCfg = Debug|Win32 + {50B18708-62EC-DE43-8523-B3832ED628C6}.Debug|Win32.Build.0 = Debug|Win32 + {50B18708-62EC-DE43-8523-B3832ED628C6}.Release|Win32.ActiveCfg = Release|Win32 + {50B18708-62EC-DE43-8523-B3832ED628C6}.Release|Win32.Build.0 = Release|Win32 + {52D41AEF-9480-9D40-B7C7-EB7EDDE84F5B}.Debug|Win32.ActiveCfg = Debug|Win32 + {52D41AEF-9480-9D40-B7C7-EB7EDDE84F5B}.Debug|Win32.Build.0 = Debug|Win32 + {52D41AEF-9480-9D40-B7C7-EB7EDDE84F5B}.Release|Win32.ActiveCfg = Release|Win32 + {52D41AEF-9480-9D40-B7C7-EB7EDDE84F5B}.Release|Win32.Build.0 = Release|Win32 + {800464F4-3881-A447-9B95-83869584B8BE}.Debug|Win32.ActiveCfg = Debug|Win32 + {800464F4-3881-A447-9B95-83869584B8BE}.Debug|Win32.Build.0 = Debug|Win32 + {800464F4-3881-A447-9B95-83869584B8BE}.Release|Win32.ActiveCfg = Release|Win32 + {800464F4-3881-A447-9B95-83869584B8BE}.Release|Win32.Build.0 = Release|Win32 + {D729516D-75F5-F344-86E9-9A4B36EA795F}.Debug|Win32.ActiveCfg = Debug|Win32 + {D729516D-75F5-F344-86E9-9A4B36EA795F}.Debug|Win32.Build.0 = Debug|Win32 + {D729516D-75F5-F344-86E9-9A4B36EA795F}.Release|Win32.ActiveCfg = Release|Win32 + {D729516D-75F5-F344-86E9-9A4B36EA795F}.Release|Win32.Build.0 = Release|Win32 + {0E4487F9-8E7C-224F-99CC-F1FEC7124A60}.Debug|Win32.ActiveCfg = Debug|Win32 + {0E4487F9-8E7C-224F-99CC-F1FEC7124A60}.Debug|Win32.Build.0 = Debug|Win32 + {0E4487F9-8E7C-224F-99CC-F1FEC7124A60}.Release|Win32.ActiveCfg = Release|Win32 + {0E4487F9-8E7C-224F-99CC-F1FEC7124A60}.Release|Win32.Build.0 = Release|Win32 + {9117F5E0-4F8C-B24F-A581-0095E34D61B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {9117F5E0-4F8C-B24F-A581-0095E34D61B0}.Debug|Win32.Build.0 = Debug|Win32 + {9117F5E0-4F8C-B24F-A581-0095E34D61B0}.Release|Win32.ActiveCfg = Release|Win32 + {9117F5E0-4F8C-B24F-A581-0095E34D61B0}.Release|Win32.Build.0 = Release|Win32 + {36D0D004-9F44-0247-825B-61EFD8A0394F}.Debug|Win32.ActiveCfg = Debug|Win32 + {36D0D004-9F44-0247-825B-61EFD8A0394F}.Debug|Win32.Build.0 = Debug|Win32 + {36D0D004-9F44-0247-825B-61EFD8A0394F}.Release|Win32.ActiveCfg = Release|Win32 + {36D0D004-9F44-0247-825B-61EFD8A0394F}.Release|Win32.Build.0 = Release|Win32 + {CED8A756-F422-7B49-94A2-032634A75A8A}.Debug|Win32.ActiveCfg = Debug|Win32 + {CED8A756-F422-7B49-94A2-032634A75A8A}.Debug|Win32.Build.0 = Debug|Win32 + {CED8A756-F422-7B49-94A2-032634A75A8A}.Release|Win32.ActiveCfg = Release|Win32 + {CED8A756-F422-7B49-94A2-032634A75A8A}.Release|Win32.Build.0 = Release|Win32 + {93670ED4-2FDA-E343-86D3-E730C4B3B784}.Debug|Win32.ActiveCfg = Debug|Win32 + {93670ED4-2FDA-E343-86D3-E730C4B3B784}.Debug|Win32.Build.0 = Debug|Win32 + {93670ED4-2FDA-E343-86D3-E730C4B3B784}.Release|Win32.ActiveCfg = Release|Win32 + {93670ED4-2FDA-E343-86D3-E730C4B3B784}.Release|Win32.Build.0 = Release|Win32 + {E3DDC4FA-079A-3548-8207-C972B9FC94D9}.Debug|Win32.ActiveCfg = Debug|Win32 + {E3DDC4FA-079A-3548-8207-C972B9FC94D9}.Debug|Win32.Build.0 = Debug|Win32 + {E3DDC4FA-079A-3548-8207-C972B9FC94D9}.Release|Win32.ActiveCfg = Release|Win32 + {E3DDC4FA-079A-3548-8207-C972B9FC94D9}.Release|Win32.Build.0 = Release|Win32 + {CB2E0D61-6692-7844-B1B9-550870AF8286}.Debug|Win32.ActiveCfg = Debug|Win32 + {CB2E0D61-6692-7844-B1B9-550870AF8286}.Debug|Win32.Build.0 = Debug|Win32 + {CB2E0D61-6692-7844-B1B9-550870AF8286}.Release|Win32.ActiveCfg = Release|Win32 + {CB2E0D61-6692-7844-B1B9-550870AF8286}.Release|Win32.Build.0 = Release|Win32 + {845E9430-36ED-FF4C-8078-3F9B69DEA8E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {845E9430-36ED-FF4C-8078-3F9B69DEA8E6}.Debug|Win32.Build.0 = Debug|Win32 + {845E9430-36ED-FF4C-8078-3F9B69DEA8E6}.Release|Win32.ActiveCfg = Release|Win32 + {845E9430-36ED-FF4C-8078-3F9B69DEA8E6}.Release|Win32.Build.0 = Release|Win32 + {3FAEC7C2-053A-C142-AF02-42FD74DE2295}.Debug|Win32.ActiveCfg = Debug|Win32 + {3FAEC7C2-053A-C142-AF02-42FD74DE2295}.Debug|Win32.Build.0 = Debug|Win32 + {3FAEC7C2-053A-C142-AF02-42FD74DE2295}.Release|Win32.ActiveCfg = Release|Win32 + {3FAEC7C2-053A-C142-AF02-42FD74DE2295}.Release|Win32.Build.0 = Release|Win32 + {1CD5DA6F-75A5-5A4A-993B-984FAFBA9CF1}.Debug|Win32.ActiveCfg = Debug|Win32 + {1CD5DA6F-75A5-5A4A-993B-984FAFBA9CF1}.Debug|Win32.Build.0 = Debug|Win32 + {1CD5DA6F-75A5-5A4A-993B-984FAFBA9CF1}.Release|Win32.ActiveCfg = Release|Win32 + {1CD5DA6F-75A5-5A4A-993B-984FAFBA9CF1}.Release|Win32.Build.0 = Release|Win32 + {E896D80E-AD87-E54B-939D-82B5A35B70E4}.Debug|Win32.ActiveCfg = Debug|Win32 + {E896D80E-AD87-E54B-939D-82B5A35B70E4}.Debug|Win32.Build.0 = Debug|Win32 + {E896D80E-AD87-E54B-939D-82B5A35B70E4}.Release|Win32.ActiveCfg = Release|Win32 + {E896D80E-AD87-E54B-939D-82B5A35B70E4}.Release|Win32.Build.0 = Release|Win32 + {FE5F64B1-85CA-3F41-93FE-C9E96C6D8E11}.Debug|Win32.ActiveCfg = Debug|Win32 + {FE5F64B1-85CA-3F41-93FE-C9E96C6D8E11}.Debug|Win32.Build.0 = Debug|Win32 + {FE5F64B1-85CA-3F41-93FE-C9E96C6D8E11}.Release|Win32.ActiveCfg = Release|Win32 + {FE5F64B1-85CA-3F41-93FE-C9E96C6D8E11}.Release|Win32.Build.0 = Release|Win32 + {7024BA1F-5E24-184A-8411-833692EE8EF7}.Debug|Win32.ActiveCfg = Debug|Win32 + {7024BA1F-5E24-184A-8411-833692EE8EF7}.Debug|Win32.Build.0 = Debug|Win32 + {7024BA1F-5E24-184A-8411-833692EE8EF7}.Release|Win32.ActiveCfg = Release|Win32 + {7024BA1F-5E24-184A-8411-833692EE8EF7}.Release|Win32.Build.0 = Release|Win32 + {10E5D730-F9B4-3541-90B0-5AA85E0256C0}.Debug|Win32.ActiveCfg = Debug|Win32 + {10E5D730-F9B4-3541-90B0-5AA85E0256C0}.Debug|Win32.Build.0 = Debug|Win32 + {10E5D730-F9B4-3541-90B0-5AA85E0256C0}.Release|Win32.ActiveCfg = Release|Win32 + {10E5D730-F9B4-3541-90B0-5AA85E0256C0}.Release|Win32.Build.0 = Release|Win32 + {32F5BC66-EC0C-1042-800A-AE3691202DA0}.Debug|Win32.ActiveCfg = Debug|Win32 + {32F5BC66-EC0C-1042-800A-AE3691202DA0}.Debug|Win32.Build.0 = Debug|Win32 + {32F5BC66-EC0C-1042-800A-AE3691202DA0}.Release|Win32.ActiveCfg = Release|Win32 + {32F5BC66-EC0C-1042-800A-AE3691202DA0}.Release|Win32.Build.0 = Release|Win32 + {42F52BDF-E44E-9C46-A315-9AF8DF0C53F4}.Debug|Win32.ActiveCfg = Debug|Win32 + {42F52BDF-E44E-9C46-A315-9AF8DF0C53F4}.Debug|Win32.Build.0 = Debug|Win32 + {42F52BDF-E44E-9C46-A315-9AF8DF0C53F4}.Release|Win32.ActiveCfg = Release|Win32 + {42F52BDF-E44E-9C46-A315-9AF8DF0C53F4}.Release|Win32.Build.0 = Release|Win32 + {288BDEFD-9FEC-EB4C-908D-AC7DB41C20A8}.Debug|Win32.ActiveCfg = Debug|Win32 + {288BDEFD-9FEC-EB4C-908D-AC7DB41C20A8}.Debug|Win32.Build.0 = Debug|Win32 + {288BDEFD-9FEC-EB4C-908D-AC7DB41C20A8}.Release|Win32.ActiveCfg = Release|Win32 + {288BDEFD-9FEC-EB4C-908D-AC7DB41C20A8}.Release|Win32.Build.0 = Release|Win32 + {24DE8359-B930-CB4A-B91B-415C5EF66827}.Debug|Win32.ActiveCfg = Debug|Win32 + {24DE8359-B930-CB4A-B91B-415C5EF66827}.Debug|Win32.Build.0 = Debug|Win32 + {24DE8359-B930-CB4A-B91B-415C5EF66827}.Release|Win32.ActiveCfg = Release|Win32 + {24DE8359-B930-CB4A-B91B-415C5EF66827}.Release|Win32.Build.0 = Release|Win32 + {F28096FA-74ED-1240-A110-D8A925897232}.Debug|Win32.ActiveCfg = Debug|Win32 + {F28096FA-74ED-1240-A110-D8A925897232}.Debug|Win32.Build.0 = Debug|Win32 + {F28096FA-74ED-1240-A110-D8A925897232}.Release|Win32.ActiveCfg = Release|Win32 + {F28096FA-74ED-1240-A110-D8A925897232}.Release|Win32.Build.0 = Release|Win32 + {3A964B91-6CDD-F24A-8803-2D3E517FEA68}.Debug|Win32.ActiveCfg = Debug|Win32 + {3A964B91-6CDD-F24A-8803-2D3E517FEA68}.Debug|Win32.Build.0 = Debug|Win32 + {3A964B91-6CDD-F24A-8803-2D3E517FEA68}.Release|Win32.ActiveCfg = Release|Win32 + {3A964B91-6CDD-F24A-8803-2D3E517FEA68}.Release|Win32.Build.0 = Release|Win32 + {A88183B1-BB10-0644-AD64-FE6CA99B9D6B}.Debug|Win32.ActiveCfg = Debug|Win32 + {A88183B1-BB10-0644-AD64-FE6CA99B9D6B}.Debug|Win32.Build.0 = Debug|Win32 + {A88183B1-BB10-0644-AD64-FE6CA99B9D6B}.Release|Win32.ActiveCfg = Release|Win32 + {A88183B1-BB10-0644-AD64-FE6CA99B9D6B}.Release|Win32.Build.0 = Release|Win32 + {5B19ABEA-4A6E-664E-A996-8BE161B4D155}.Debug|Win32.ActiveCfg = Debug|Win32 + {5B19ABEA-4A6E-664E-A996-8BE161B4D155}.Debug|Win32.Build.0 = Debug|Win32 + {5B19ABEA-4A6E-664E-A996-8BE161B4D155}.Release|Win32.ActiveCfg = Release|Win32 + {5B19ABEA-4A6E-664E-A996-8BE161B4D155}.Release|Win32.Build.0 = Release|Win32 + {D853E04D-DF9C-B644-9F50-B201EAAF5E18}.Debug|Win32.ActiveCfg = Debug|Win32 + {D853E04D-DF9C-B644-9F50-B201EAAF5E18}.Debug|Win32.Build.0 = Debug|Win32 + {D853E04D-DF9C-B644-9F50-B201EAAF5E18}.Release|Win32.ActiveCfg = Release|Win32 + {D853E04D-DF9C-B644-9F50-B201EAAF5E18}.Release|Win32.Build.0 = Release|Win32 + {CC1D6E91-BDCC-D84A-B6BA-5C986D8DB67C}.Debug|Win32.ActiveCfg = Debug|Win32 + {CC1D6E91-BDCC-D84A-B6BA-5C986D8DB67C}.Debug|Win32.Build.0 = Debug|Win32 + {CC1D6E91-BDCC-D84A-B6BA-5C986D8DB67C}.Release|Win32.ActiveCfg = Release|Win32 + {CC1D6E91-BDCC-D84A-B6BA-5C986D8DB67C}.Release|Win32.Build.0 = Release|Win32 + {CC4ED7AD-FD78-B940-8ED1-A0C67638FE19}.Debug|Win32.ActiveCfg = Debug|Win32 + {CC4ED7AD-FD78-B940-8ED1-A0C67638FE19}.Debug|Win32.Build.0 = Debug|Win32 + {CC4ED7AD-FD78-B940-8ED1-A0C67638FE19}.Release|Win32.ActiveCfg = Release|Win32 + {CC4ED7AD-FD78-B940-8ED1-A0C67638FE19}.Release|Win32.Build.0 = Release|Win32 + {DB434F64-0D1E-FC46-A116-56DBB68C1869}.Debug|Win32.ActiveCfg = Debug|Win32 + {DB434F64-0D1E-FC46-A116-56DBB68C1869}.Debug|Win32.Build.0 = Debug|Win32 + {DB434F64-0D1E-FC46-A116-56DBB68C1869}.Release|Win32.ActiveCfg = Release|Win32 + {DB434F64-0D1E-FC46-A116-56DBB68C1869}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/premake/VisualC/VS2008/SDL2/SDL2.vcproj b/premake/VisualC/VS2008/SDL2/SDL2.vcproj new file mode 100755 index 0000000000..20ff3d6051 --- /dev/null +++ b/premake/VisualC/VS2008/SDL2/SDL2.vcproj @@ -0,0 +1,3004 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/SDL2main/SDL2main.vcproj b/premake/VisualC/VS2008/SDL2main/SDL2main.vcproj new file mode 100755 index 0000000000..2a1cd616b4 --- /dev/null +++ b/premake/VisualC/VS2008/SDL2main/SDL2main.vcproj @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/SDL2test/SDL2test.vcproj b/premake/VisualC/VS2008/SDL2test/SDL2test.vcproj new file mode 100755 index 0000000000..ca3acaa88a --- /dev/null +++ b/premake/VisualC/VS2008/SDL2test/SDL2test.vcproj @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/SDL_config_premake.h b/premake/VisualC/VS2008/SDL_config_premake.h new file mode 100755 index 0000000000..be158a4f00 --- /dev/null +++ b/premake/VisualC/VS2008/SDL_config_premake.h @@ -0,0 +1,202 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_TIMER_WINDOWS +#define SDL_TIMER_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_WINMM +#define SDL_AUDIO_DRIVER_WINMM 1 +#endif +#ifndef SDL_FILESYSTEM_WINDOWS +#define SDL_FILESYSTEM_WINDOWS 1 +#endif +#ifndef SDL_POWER_WINDOWS +#define SDL_POWER_WINDOWS 1 +#endif +#ifndef SDL_LOADSO_WINDOWS +#define SDL_LOADSO_WINDOWS 1 +#endif +#ifndef SDL_VIDEO_DRIVER_WINDOWS +#define SDL_VIDEO_DRIVER_WINDOWS 1 +#endif +#ifndef SDL_THREAD_WINDOWS +#define SDL_THREAD_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DSOUND +#define SDL_AUDIO_DRIVER_DSOUND 1 +#endif +#ifndef SDL_JOYSTICK_DINPUT +#define SDL_JOYSTICK_DINPUT 1 +#endif +#ifndef SDL_VIDEO_RENDER_D3D +#define SDL_VIDEO_RENDER_D3D 1 +#endif +#ifndef SDL_HAPTIC_DINPUT +#define SDL_HAPTIC_DINPUT 1 +#endif +#ifndef SDL_AUDIO_DRIVER_XAUDIO2 +#define SDL_AUDIO_DRIVER_XAUDIO2 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_WGL +#define SDL_VIDEO_OPENGL_WGL 1 +#endif + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/premake/VisualC/VS2008/tests/checkkeys/checkkeys.vcproj b/premake/VisualC/VS2008/tests/checkkeys/checkkeys.vcproj new file mode 100755 index 0000000000..b7fcec99cb --- /dev/null +++ b/premake/VisualC/VS2008/tests/checkkeys/checkkeys.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/loopwave/loopwave.vcproj b/premake/VisualC/VS2008/tests/loopwave/loopwave.vcproj new file mode 100755 index 0000000000..25ff149100 --- /dev/null +++ b/premake/VisualC/VS2008/tests/loopwave/loopwave.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testatomic/testatomic.vcproj b/premake/VisualC/VS2008/tests/testatomic/testatomic.vcproj new file mode 100755 index 0000000000..125944afcd --- /dev/null +++ b/premake/VisualC/VS2008/tests/testatomic/testatomic.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testaudioinfo/testaudioinfo.vcproj b/premake/VisualC/VS2008/tests/testaudioinfo/testaudioinfo.vcproj new file mode 100755 index 0000000000..40916a5815 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testaudioinfo/testaudioinfo.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testautomation/testautomation.vcproj b/premake/VisualC/VS2008/tests/testautomation/testautomation.vcproj new file mode 100755 index 0000000000..0f3f94db91 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testautomation/testautomation.vcproj @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testchessboard/testchessboard.vcproj b/premake/VisualC/VS2008/tests/testchessboard/testchessboard.vcproj new file mode 100755 index 0000000000..5471af45ff --- /dev/null +++ b/premake/VisualC/VS2008/tests/testchessboard/testchessboard.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testdraw2/testdraw2.vcproj b/premake/VisualC/VS2008/tests/testdraw2/testdraw2.vcproj new file mode 100755 index 0000000000..825a857083 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testdraw2/testdraw2.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testerror/testerror.vcproj b/premake/VisualC/VS2008/tests/testerror/testerror.vcproj new file mode 100755 index 0000000000..5e44ad45be --- /dev/null +++ b/premake/VisualC/VS2008/tests/testerror/testerror.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testfile/testfile.vcproj b/premake/VisualC/VS2008/tests/testfile/testfile.vcproj new file mode 100755 index 0000000000..79e86b69fc --- /dev/null +++ b/premake/VisualC/VS2008/tests/testfile/testfile.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testfilesystem/testfilesystem.vcproj b/premake/VisualC/VS2008/tests/testfilesystem/testfilesystem.vcproj new file mode 100755 index 0000000000..986bb419a8 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testfilesystem/testfilesystem.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testgamecontroller/testgamecontroller.vcproj b/premake/VisualC/VS2008/tests/testgamecontroller/testgamecontroller.vcproj new file mode 100755 index 0000000000..9fba8c49a9 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testgamecontroller/testgamecontroller.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testgesture/testgesture.vcproj b/premake/VisualC/VS2008/tests/testgesture/testgesture.vcproj new file mode 100755 index 0000000000..f717a9a737 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testgesture/testgesture.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testgl2/testgl2.vcproj b/premake/VisualC/VS2008/tests/testgl2/testgl2.vcproj new file mode 100755 index 0000000000..638d29d8e6 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testgl2/testgl2.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testgles/testgles.vcproj b/premake/VisualC/VS2008/tests/testgles/testgles.vcproj new file mode 100755 index 0000000000..4eec648d97 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testgles/testgles.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testhaptic/testhaptic.vcproj b/premake/VisualC/VS2008/tests/testhaptic/testhaptic.vcproj new file mode 100755 index 0000000000..b969f76634 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testhaptic/testhaptic.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testiconv/testiconv.vcproj b/premake/VisualC/VS2008/tests/testiconv/testiconv.vcproj new file mode 100755 index 0000000000..c3d0179f6f --- /dev/null +++ b/premake/VisualC/VS2008/tests/testiconv/testiconv.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testime/testime.vcproj b/premake/VisualC/VS2008/tests/testime/testime.vcproj new file mode 100755 index 0000000000..7075a1c48c --- /dev/null +++ b/premake/VisualC/VS2008/tests/testime/testime.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testjoystick/testjoystick.vcproj b/premake/VisualC/VS2008/tests/testjoystick/testjoystick.vcproj new file mode 100755 index 0000000000..9215d052d2 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testjoystick/testjoystick.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testkeys/testkeys.vcproj b/premake/VisualC/VS2008/tests/testkeys/testkeys.vcproj new file mode 100755 index 0000000000..aed4baa14b --- /dev/null +++ b/premake/VisualC/VS2008/tests/testkeys/testkeys.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testloadso/testloadso.vcproj b/premake/VisualC/VS2008/tests/testloadso/testloadso.vcproj new file mode 100755 index 0000000000..3c97a72133 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testloadso/testloadso.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testlock/testlock.vcproj b/premake/VisualC/VS2008/tests/testlock/testlock.vcproj new file mode 100755 index 0000000000..fb6c4d45df --- /dev/null +++ b/premake/VisualC/VS2008/tests/testlock/testlock.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testmessage/testmessage.vcproj b/premake/VisualC/VS2008/tests/testmessage/testmessage.vcproj new file mode 100755 index 0000000000..9f11fc5046 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testmessage/testmessage.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testmultiaudio/testmultiaudio.vcproj b/premake/VisualC/VS2008/tests/testmultiaudio/testmultiaudio.vcproj new file mode 100755 index 0000000000..cea612876b --- /dev/null +++ b/premake/VisualC/VS2008/tests/testmultiaudio/testmultiaudio.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testnative/testnative.vcproj b/premake/VisualC/VS2008/tests/testnative/testnative.vcproj new file mode 100755 index 0000000000..086b2f9571 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testnative/testnative.vcproj @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testoverlay2/testoverlay2.vcproj b/premake/VisualC/VS2008/tests/testoverlay2/testoverlay2.vcproj new file mode 100755 index 0000000000..a8c5694768 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testoverlay2/testoverlay2.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testplatform/testplatform.vcproj b/premake/VisualC/VS2008/tests/testplatform/testplatform.vcproj new file mode 100755 index 0000000000..cc2c547270 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testplatform/testplatform.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testpower/testpower.vcproj b/premake/VisualC/VS2008/tests/testpower/testpower.vcproj new file mode 100755 index 0000000000..6aaccf8f03 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testpower/testpower.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testrelative/testrelative.vcproj b/premake/VisualC/VS2008/tests/testrelative/testrelative.vcproj new file mode 100755 index 0000000000..d0f2164f88 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testrelative/testrelative.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testrendercopyex/testrendercopyex.vcproj b/premake/VisualC/VS2008/tests/testrendercopyex/testrendercopyex.vcproj new file mode 100755 index 0000000000..8875013411 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testrendercopyex/testrendercopyex.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testrendertarget/testrendertarget.vcproj b/premake/VisualC/VS2008/tests/testrendertarget/testrendertarget.vcproj new file mode 100755 index 0000000000..4bfa7610d1 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testrendertarget/testrendertarget.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testresample/testresample.vcproj b/premake/VisualC/VS2008/tests/testresample/testresample.vcproj new file mode 100755 index 0000000000..ed0449637c --- /dev/null +++ b/premake/VisualC/VS2008/tests/testresample/testresample.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testrumble/testrumble.vcproj b/premake/VisualC/VS2008/tests/testrumble/testrumble.vcproj new file mode 100755 index 0000000000..7fbff94e9a --- /dev/null +++ b/premake/VisualC/VS2008/tests/testrumble/testrumble.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testscale/testscale.vcproj b/premake/VisualC/VS2008/tests/testscale/testscale.vcproj new file mode 100755 index 0000000000..ce2569490f --- /dev/null +++ b/premake/VisualC/VS2008/tests/testscale/testscale.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testsem/testsem.vcproj b/premake/VisualC/VS2008/tests/testsem/testsem.vcproj new file mode 100755 index 0000000000..df4c25ec5e --- /dev/null +++ b/premake/VisualC/VS2008/tests/testsem/testsem.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testshader/testshader.vcproj b/premake/VisualC/VS2008/tests/testshader/testshader.vcproj new file mode 100755 index 0000000000..c003b897d4 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testshader/testshader.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testshape/testshape.vcproj b/premake/VisualC/VS2008/tests/testshape/testshape.vcproj new file mode 100755 index 0000000000..6d33fd2e11 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testshape/testshape.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testsprite2/testsprite2.vcproj b/premake/VisualC/VS2008/tests/testsprite2/testsprite2.vcproj new file mode 100755 index 0000000000..dc952d3b4b --- /dev/null +++ b/premake/VisualC/VS2008/tests/testsprite2/testsprite2.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testspriteminimal/testspriteminimal.vcproj b/premake/VisualC/VS2008/tests/testspriteminimal/testspriteminimal.vcproj new file mode 100755 index 0000000000..526385a158 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testspriteminimal/testspriteminimal.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/teststreaming/teststreaming.vcproj b/premake/VisualC/VS2008/tests/teststreaming/teststreaming.vcproj new file mode 100755 index 0000000000..d0447d4c9a --- /dev/null +++ b/premake/VisualC/VS2008/tests/teststreaming/teststreaming.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testthread/testthread.vcproj b/premake/VisualC/VS2008/tests/testthread/testthread.vcproj new file mode 100755 index 0000000000..8b325054b0 --- /dev/null +++ b/premake/VisualC/VS2008/tests/testthread/testthread.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testtimer/testtimer.vcproj b/premake/VisualC/VS2008/tests/testtimer/testtimer.vcproj new file mode 100755 index 0000000000..a59a8c2fed --- /dev/null +++ b/premake/VisualC/VS2008/tests/testtimer/testtimer.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testver/testver.vcproj b/premake/VisualC/VS2008/tests/testver/testver.vcproj new file mode 100755 index 0000000000..ec988697da --- /dev/null +++ b/premake/VisualC/VS2008/tests/testver/testver.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/testwm2/testwm2.vcproj b/premake/VisualC/VS2008/tests/testwm2/testwm2.vcproj new file mode 100755 index 0000000000..5c23a2677e --- /dev/null +++ b/premake/VisualC/VS2008/tests/testwm2/testwm2.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2008/tests/torturethread/torturethread.vcproj b/premake/VisualC/VS2008/tests/torturethread/torturethread.vcproj new file mode 100755 index 0000000000..30924a49a9 --- /dev/null +++ b/premake/VisualC/VS2008/tests/torturethread/torturethread.vcproj @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2010/SDL.sln b/premake/VisualC/VS2010/SDL.sln new file mode 100755 index 0000000000..58e4a33570 --- /dev/null +++ b/premake/VisualC/VS2010/SDL.sln @@ -0,0 +1,487 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testjoystick\testjoystick.vcxproj", "{901EBC4D-735F-D84D-9C4A-AC25E87CAD4A}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfilesystem", "tests\testfilesystem\testfilesystem.vcxproj", "{9B14A8B6-4187-1A41-9664-CAB1C3919CC7}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsem", "tests\testsem\testsem.vcxproj", "{C73D37B5-71B8-E842-BBBE-278EBB71D245}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testnative", "tests\testnative\testnative.vcxproj", "{6BD39C1C-1CC2-E946-AE2C-420BADA7F6CB}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testscale", "tests\testscale\testscale.vcxproj", "{48F4500B-46C3-CD46-942E-59482243211C}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgamecontroller", "tests\testgamecontroller\testgamecontroller.vcxproj", "{2953CE1F-0332-784D-B123-BDA28C15776A}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendertarget", "tests\testrendertarget\testrendertarget.vcxproj", "{81602E3E-93FC-2740-B4BD-BC80BCD715D6}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testver", "tests\testver\testver.vcxproj", "{8FB2FB8C-FA28-D146-A767-0CB74E35643C}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testkeys", "tests\testkeys\testkeys.vcxproj", "{068A675B-F525-714D-BA49-636E8A4B0564}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testloadso", "tests\testloadso\testloadso.vcxproj", "{63154644-828E-7F40-8024-6EEDF62436D1}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testtimer", "tests\testtimer\testtimer.vcxproj", "{F999361E-C0B3-ED43-975D-26D9A9CF5DDE}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay2", "tests\testoverlay2\testoverlay2.vcxproj", "{858D4FF2-0931-604C-853C-017D94C11F66}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "torturethread", "tests\torturethread\torturethread.vcxproj", "{B4CE343D-65CF-FB45-9505-D1D9EE28CE57}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplatform", "tests\testplatform\testplatform.vcxproj", "{5BFF537B-8785-D14E-9C7D-25B693477FB8}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgesture", "tests\testgesture\testgesture.vcxproj", "{1F585797-33BC-3643-B0E3-9BD491AF4852}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testaudioinfo", "tests\testaudioinfo\testaudioinfo.vcxproj", "{0C330D16-E8D8-EA43-9E18-BE3E51FE1347}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loopwave", "tests\loopwave\loopwave.vcxproj", "{5C06F962-7A40-964D-B60B-A919A32EE303}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testthread", "tests\testthread\testthread.vcxproj", "{0DD89D04-2A0A-2348-A5E1-12A7AEE4200D}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teststreaming", "tests\teststreaming\teststreaming.vcxproj", "{4076F581-39F7-4144-A5B8-5FDBDB3B128B}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "tests\checkkeys\checkkeys.vcxproj", "{9BC42316-43AF-B84A-9B45-133C29C126A0}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testspriteminimal", "tests\testspriteminimal\testspriteminimal.vcxproj", "{262FA1CF-740E-2746-B72E-B0330B9F1337}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsprite2", "tests\testsprite2\testsprite2.vcxproj", "{DEB1CD6C-9CCF-4B44-A29F-3067FDB33838}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgles", "tests\testgles\testgles.vcxproj", "{9937576E-DD2A-0B41-9D97-9D3CF1478963}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testatomic", "tests\testatomic\testatomic.vcxproj", "{A7E1C8B0-F3FA-E740-ABEF-DA22747D8B7F}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2test", "SDL2test\SDL2test.vcxproj", "{72D8473C-9ED1-6041-877A-B45552307F3A}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testhaptic", "tests\testhaptic\testhaptic.vcxproj", "{4BCD98A1-3F51-3244-8D09-C510E02D045B}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl2", "tests\testgl2\testgl2.vcxproj", "{05B569B7-8C6D-FE47-8AFB-3F5C9B6EC7F4}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL2\SDL2.vcxproj", "{A114B178-D2BB-CF42-A049-034C4C50596F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testerror", "tests\testerror\testerror.vcxproj", "{0232629C-6FEC-A541-9EF6-CD4560D95327}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrumble", "tests\testrumble\testrumble.vcxproj", "{C9ABF4FE-1D59-7A41-80B6-87C169B9FCB5}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testresample", "tests\testresample\testresample.vcxproj", "{60819005-330D-4948-AFC5-173584DCBA84}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendercopyex", "tests\testrendercopyex\testrendercopyex.vcxproj", "{4F5CC446-A806-DD43-A1C4-73C4C37D1895}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testpower", "tests\testpower\testpower.vcxproj", "{0DD0AD84-3DE8-2F49-B31F-4B8F41864A89}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testchessboard", "tests\testchessboard\testchessboard.vcxproj", "{541CA31C-B613-A346-AFEB-FE0614CEF765}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "SDL2main\SDL2main.vcxproj", "{859DF586-61E5-5749-AE72-0B8CC7C817D7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrelative", "tests\testrelative\testrelative.vcxproj", "{49527EB7-9A96-9743-BAE3-CA18CAD2FC54}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testlock", "tests\testlock\testlock.vcxproj", "{F0F3C9F2-2F1A-C842-9757-40DC67F4219D}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmultiaudio", "tests\testmultiaudio\testmultiaudio.vcxproj", "{E1DD1D32-C9B7-B14B-BD41-EA39A0A39F6D}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmessage", "tests\testmessage\testmessage.vcxproj", "{48910BD1-FBB6-5D47-A5D2-4EA2E5D91F72}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdraw2", "tests\testdraw2\testdraw2.vcxproj", "{296FF26A-1980-3B44-ADDA-EAE72242B4B0}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshape", "tests\testshape\testshape.vcxproj", "{14B1A8FE-44AC-C04E-BFDE-7AC1D72E37DA}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testwm2", "tests\testwm2\testwm2.vcxproj", "{41F4E0C8-9F68-7E4E-BEF1-AB5279264003}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testautomation", "tests\testautomation\testautomation.vcxproj", "{1F19F525-2F86-1949-94DD-639C09639634}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testiconv", "tests\testiconv\testiconv.vcxproj", "{B2DD9042-38C1-6140-852D-ACEF33E172F6}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "tests\testfile\testfile.vcxproj", "{D19A3C76-2C05-2643-8D45-E06B9268EDE2}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testime", "tests\testime\testime.vcxproj", "{9EA7D8D7-6D83-0549-92E8-226A16D1BC51}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {72D8473C-9ED1-6041-877A-B45552307F3A} = {72D8473C-9ED1-6041-877A-B45552307F3A} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshader", "tests\testshader\testshader.vcxproj", "{1246F077-C27B-F346-9D88-4CD5AA23CCB4}" + ProjectSection(ProjectDependencies) = postProject + {859DF586-61E5-5749-AE72-0B8CC7C817D7} = {859DF586-61E5-5749-AE72-0B8CC7C817D7} + {A114B178-D2BB-CF42-A049-034C4C50596F} = {A114B178-D2BB-CF42-A049-034C4C50596F} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {901EBC4D-735F-D84D-9C4A-AC25E87CAD4A}.Debug|Win32.ActiveCfg = Debug|Win32 + {901EBC4D-735F-D84D-9C4A-AC25E87CAD4A}.Debug|Win32.Build.0 = Debug|Win32 + {901EBC4D-735F-D84D-9C4A-AC25E87CAD4A}.Release|Win32.ActiveCfg = Release|Win32 + {901EBC4D-735F-D84D-9C4A-AC25E87CAD4A}.Release|Win32.Build.0 = Release|Win32 + {9B14A8B6-4187-1A41-9664-CAB1C3919CC7}.Debug|Win32.ActiveCfg = Debug|Win32 + {9B14A8B6-4187-1A41-9664-CAB1C3919CC7}.Debug|Win32.Build.0 = Debug|Win32 + {9B14A8B6-4187-1A41-9664-CAB1C3919CC7}.Release|Win32.ActiveCfg = Release|Win32 + {9B14A8B6-4187-1A41-9664-CAB1C3919CC7}.Release|Win32.Build.0 = Release|Win32 + {C73D37B5-71B8-E842-BBBE-278EBB71D245}.Debug|Win32.ActiveCfg = Debug|Win32 + {C73D37B5-71B8-E842-BBBE-278EBB71D245}.Debug|Win32.Build.0 = Debug|Win32 + {C73D37B5-71B8-E842-BBBE-278EBB71D245}.Release|Win32.ActiveCfg = Release|Win32 + {C73D37B5-71B8-E842-BBBE-278EBB71D245}.Release|Win32.Build.0 = Release|Win32 + {6BD39C1C-1CC2-E946-AE2C-420BADA7F6CB}.Debug|Win32.ActiveCfg = Debug|Win32 + {6BD39C1C-1CC2-E946-AE2C-420BADA7F6CB}.Debug|Win32.Build.0 = Debug|Win32 + {6BD39C1C-1CC2-E946-AE2C-420BADA7F6CB}.Release|Win32.ActiveCfg = Release|Win32 + {6BD39C1C-1CC2-E946-AE2C-420BADA7F6CB}.Release|Win32.Build.0 = Release|Win32 + {48F4500B-46C3-CD46-942E-59482243211C}.Debug|Win32.ActiveCfg = Debug|Win32 + {48F4500B-46C3-CD46-942E-59482243211C}.Debug|Win32.Build.0 = Debug|Win32 + {48F4500B-46C3-CD46-942E-59482243211C}.Release|Win32.ActiveCfg = Release|Win32 + {48F4500B-46C3-CD46-942E-59482243211C}.Release|Win32.Build.0 = Release|Win32 + {2953CE1F-0332-784D-B123-BDA28C15776A}.Debug|Win32.ActiveCfg = Debug|Win32 + {2953CE1F-0332-784D-B123-BDA28C15776A}.Debug|Win32.Build.0 = Debug|Win32 + {2953CE1F-0332-784D-B123-BDA28C15776A}.Release|Win32.ActiveCfg = Release|Win32 + {2953CE1F-0332-784D-B123-BDA28C15776A}.Release|Win32.Build.0 = Release|Win32 + {81602E3E-93FC-2740-B4BD-BC80BCD715D6}.Debug|Win32.ActiveCfg = Debug|Win32 + {81602E3E-93FC-2740-B4BD-BC80BCD715D6}.Debug|Win32.Build.0 = Debug|Win32 + {81602E3E-93FC-2740-B4BD-BC80BCD715D6}.Release|Win32.ActiveCfg = Release|Win32 + {81602E3E-93FC-2740-B4BD-BC80BCD715D6}.Release|Win32.Build.0 = Release|Win32 + {8FB2FB8C-FA28-D146-A767-0CB74E35643C}.Debug|Win32.ActiveCfg = Debug|Win32 + {8FB2FB8C-FA28-D146-A767-0CB74E35643C}.Debug|Win32.Build.0 = Debug|Win32 + {8FB2FB8C-FA28-D146-A767-0CB74E35643C}.Release|Win32.ActiveCfg = Release|Win32 + {8FB2FB8C-FA28-D146-A767-0CB74E35643C}.Release|Win32.Build.0 = Release|Win32 + {068A675B-F525-714D-BA49-636E8A4B0564}.Debug|Win32.ActiveCfg = Debug|Win32 + {068A675B-F525-714D-BA49-636E8A4B0564}.Debug|Win32.Build.0 = Debug|Win32 + {068A675B-F525-714D-BA49-636E8A4B0564}.Release|Win32.ActiveCfg = Release|Win32 + {068A675B-F525-714D-BA49-636E8A4B0564}.Release|Win32.Build.0 = Release|Win32 + {63154644-828E-7F40-8024-6EEDF62436D1}.Debug|Win32.ActiveCfg = Debug|Win32 + {63154644-828E-7F40-8024-6EEDF62436D1}.Debug|Win32.Build.0 = Debug|Win32 + {63154644-828E-7F40-8024-6EEDF62436D1}.Release|Win32.ActiveCfg = Release|Win32 + {63154644-828E-7F40-8024-6EEDF62436D1}.Release|Win32.Build.0 = Release|Win32 + {F999361E-C0B3-ED43-975D-26D9A9CF5DDE}.Debug|Win32.ActiveCfg = Debug|Win32 + {F999361E-C0B3-ED43-975D-26D9A9CF5DDE}.Debug|Win32.Build.0 = Debug|Win32 + {F999361E-C0B3-ED43-975D-26D9A9CF5DDE}.Release|Win32.ActiveCfg = Release|Win32 + {F999361E-C0B3-ED43-975D-26D9A9CF5DDE}.Release|Win32.Build.0 = Release|Win32 + {858D4FF2-0931-604C-853C-017D94C11F66}.Debug|Win32.ActiveCfg = Debug|Win32 + {858D4FF2-0931-604C-853C-017D94C11F66}.Debug|Win32.Build.0 = Debug|Win32 + {858D4FF2-0931-604C-853C-017D94C11F66}.Release|Win32.ActiveCfg = Release|Win32 + {858D4FF2-0931-604C-853C-017D94C11F66}.Release|Win32.Build.0 = Release|Win32 + {B4CE343D-65CF-FB45-9505-D1D9EE28CE57}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4CE343D-65CF-FB45-9505-D1D9EE28CE57}.Debug|Win32.Build.0 = Debug|Win32 + {B4CE343D-65CF-FB45-9505-D1D9EE28CE57}.Release|Win32.ActiveCfg = Release|Win32 + {B4CE343D-65CF-FB45-9505-D1D9EE28CE57}.Release|Win32.Build.0 = Release|Win32 + {5BFF537B-8785-D14E-9C7D-25B693477FB8}.Debug|Win32.ActiveCfg = Debug|Win32 + {5BFF537B-8785-D14E-9C7D-25B693477FB8}.Debug|Win32.Build.0 = Debug|Win32 + {5BFF537B-8785-D14E-9C7D-25B693477FB8}.Release|Win32.ActiveCfg = Release|Win32 + {5BFF537B-8785-D14E-9C7D-25B693477FB8}.Release|Win32.Build.0 = Release|Win32 + {1F585797-33BC-3643-B0E3-9BD491AF4852}.Debug|Win32.ActiveCfg = Debug|Win32 + {1F585797-33BC-3643-B0E3-9BD491AF4852}.Debug|Win32.Build.0 = Debug|Win32 + {1F585797-33BC-3643-B0E3-9BD491AF4852}.Release|Win32.ActiveCfg = Release|Win32 + {1F585797-33BC-3643-B0E3-9BD491AF4852}.Release|Win32.Build.0 = Release|Win32 + {0C330D16-E8D8-EA43-9E18-BE3E51FE1347}.Debug|Win32.ActiveCfg = Debug|Win32 + {0C330D16-E8D8-EA43-9E18-BE3E51FE1347}.Debug|Win32.Build.0 = Debug|Win32 + {0C330D16-E8D8-EA43-9E18-BE3E51FE1347}.Release|Win32.ActiveCfg = Release|Win32 + {0C330D16-E8D8-EA43-9E18-BE3E51FE1347}.Release|Win32.Build.0 = Release|Win32 + {5C06F962-7A40-964D-B60B-A919A32EE303}.Debug|Win32.ActiveCfg = Debug|Win32 + {5C06F962-7A40-964D-B60B-A919A32EE303}.Debug|Win32.Build.0 = Debug|Win32 + {5C06F962-7A40-964D-B60B-A919A32EE303}.Release|Win32.ActiveCfg = Release|Win32 + {5C06F962-7A40-964D-B60B-A919A32EE303}.Release|Win32.Build.0 = Release|Win32 + {0DD89D04-2A0A-2348-A5E1-12A7AEE4200D}.Debug|Win32.ActiveCfg = Debug|Win32 + {0DD89D04-2A0A-2348-A5E1-12A7AEE4200D}.Debug|Win32.Build.0 = Debug|Win32 + {0DD89D04-2A0A-2348-A5E1-12A7AEE4200D}.Release|Win32.ActiveCfg = Release|Win32 + {0DD89D04-2A0A-2348-A5E1-12A7AEE4200D}.Release|Win32.Build.0 = Release|Win32 + {4076F581-39F7-4144-A5B8-5FDBDB3B128B}.Debug|Win32.ActiveCfg = Debug|Win32 + {4076F581-39F7-4144-A5B8-5FDBDB3B128B}.Debug|Win32.Build.0 = Debug|Win32 + {4076F581-39F7-4144-A5B8-5FDBDB3B128B}.Release|Win32.ActiveCfg = Release|Win32 + {4076F581-39F7-4144-A5B8-5FDBDB3B128B}.Release|Win32.Build.0 = Release|Win32 + {9BC42316-43AF-B84A-9B45-133C29C126A0}.Debug|Win32.ActiveCfg = Debug|Win32 + {9BC42316-43AF-B84A-9B45-133C29C126A0}.Debug|Win32.Build.0 = Debug|Win32 + {9BC42316-43AF-B84A-9B45-133C29C126A0}.Release|Win32.ActiveCfg = Release|Win32 + {9BC42316-43AF-B84A-9B45-133C29C126A0}.Release|Win32.Build.0 = Release|Win32 + {262FA1CF-740E-2746-B72E-B0330B9F1337}.Debug|Win32.ActiveCfg = Debug|Win32 + {262FA1CF-740E-2746-B72E-B0330B9F1337}.Debug|Win32.Build.0 = Debug|Win32 + {262FA1CF-740E-2746-B72E-B0330B9F1337}.Release|Win32.ActiveCfg = Release|Win32 + {262FA1CF-740E-2746-B72E-B0330B9F1337}.Release|Win32.Build.0 = Release|Win32 + {DEB1CD6C-9CCF-4B44-A29F-3067FDB33838}.Debug|Win32.ActiveCfg = Debug|Win32 + {DEB1CD6C-9CCF-4B44-A29F-3067FDB33838}.Debug|Win32.Build.0 = Debug|Win32 + {DEB1CD6C-9CCF-4B44-A29F-3067FDB33838}.Release|Win32.ActiveCfg = Release|Win32 + {DEB1CD6C-9CCF-4B44-A29F-3067FDB33838}.Release|Win32.Build.0 = Release|Win32 + {9937576E-DD2A-0B41-9D97-9D3CF1478963}.Debug|Win32.ActiveCfg = Debug|Win32 + {9937576E-DD2A-0B41-9D97-9D3CF1478963}.Debug|Win32.Build.0 = Debug|Win32 + {9937576E-DD2A-0B41-9D97-9D3CF1478963}.Release|Win32.ActiveCfg = Release|Win32 + {9937576E-DD2A-0B41-9D97-9D3CF1478963}.Release|Win32.Build.0 = Release|Win32 + {A7E1C8B0-F3FA-E740-ABEF-DA22747D8B7F}.Debug|Win32.ActiveCfg = Debug|Win32 + {A7E1C8B0-F3FA-E740-ABEF-DA22747D8B7F}.Debug|Win32.Build.0 = Debug|Win32 + {A7E1C8B0-F3FA-E740-ABEF-DA22747D8B7F}.Release|Win32.ActiveCfg = Release|Win32 + {A7E1C8B0-F3FA-E740-ABEF-DA22747D8B7F}.Release|Win32.Build.0 = Release|Win32 + {72D8473C-9ED1-6041-877A-B45552307F3A}.Debug|Win32.ActiveCfg = Debug|Win32 + {72D8473C-9ED1-6041-877A-B45552307F3A}.Debug|Win32.Build.0 = Debug|Win32 + {72D8473C-9ED1-6041-877A-B45552307F3A}.Release|Win32.ActiveCfg = Release|Win32 + {72D8473C-9ED1-6041-877A-B45552307F3A}.Release|Win32.Build.0 = Release|Win32 + {4BCD98A1-3F51-3244-8D09-C510E02D045B}.Debug|Win32.ActiveCfg = Debug|Win32 + {4BCD98A1-3F51-3244-8D09-C510E02D045B}.Debug|Win32.Build.0 = Debug|Win32 + {4BCD98A1-3F51-3244-8D09-C510E02D045B}.Release|Win32.ActiveCfg = Release|Win32 + {4BCD98A1-3F51-3244-8D09-C510E02D045B}.Release|Win32.Build.0 = Release|Win32 + {05B569B7-8C6D-FE47-8AFB-3F5C9B6EC7F4}.Debug|Win32.ActiveCfg = Debug|Win32 + {05B569B7-8C6D-FE47-8AFB-3F5C9B6EC7F4}.Debug|Win32.Build.0 = Debug|Win32 + {05B569B7-8C6D-FE47-8AFB-3F5C9B6EC7F4}.Release|Win32.ActiveCfg = Release|Win32 + {05B569B7-8C6D-FE47-8AFB-3F5C9B6EC7F4}.Release|Win32.Build.0 = Release|Win32 + {A114B178-D2BB-CF42-A049-034C4C50596F}.Debug|Win32.ActiveCfg = Debug|Win32 + {A114B178-D2BB-CF42-A049-034C4C50596F}.Debug|Win32.Build.0 = Debug|Win32 + {A114B178-D2BB-CF42-A049-034C4C50596F}.Release|Win32.ActiveCfg = Release|Win32 + {A114B178-D2BB-CF42-A049-034C4C50596F}.Release|Win32.Build.0 = Release|Win32 + {0232629C-6FEC-A541-9EF6-CD4560D95327}.Debug|Win32.ActiveCfg = Debug|Win32 + {0232629C-6FEC-A541-9EF6-CD4560D95327}.Debug|Win32.Build.0 = Debug|Win32 + {0232629C-6FEC-A541-9EF6-CD4560D95327}.Release|Win32.ActiveCfg = Release|Win32 + {0232629C-6FEC-A541-9EF6-CD4560D95327}.Release|Win32.Build.0 = Release|Win32 + {C9ABF4FE-1D59-7A41-80B6-87C169B9FCB5}.Debug|Win32.ActiveCfg = Debug|Win32 + {C9ABF4FE-1D59-7A41-80B6-87C169B9FCB5}.Debug|Win32.Build.0 = Debug|Win32 + {C9ABF4FE-1D59-7A41-80B6-87C169B9FCB5}.Release|Win32.ActiveCfg = Release|Win32 + {C9ABF4FE-1D59-7A41-80B6-87C169B9FCB5}.Release|Win32.Build.0 = Release|Win32 + {60819005-330D-4948-AFC5-173584DCBA84}.Debug|Win32.ActiveCfg = Debug|Win32 + {60819005-330D-4948-AFC5-173584DCBA84}.Debug|Win32.Build.0 = Debug|Win32 + {60819005-330D-4948-AFC5-173584DCBA84}.Release|Win32.ActiveCfg = Release|Win32 + {60819005-330D-4948-AFC5-173584DCBA84}.Release|Win32.Build.0 = Release|Win32 + {4F5CC446-A806-DD43-A1C4-73C4C37D1895}.Debug|Win32.ActiveCfg = Debug|Win32 + {4F5CC446-A806-DD43-A1C4-73C4C37D1895}.Debug|Win32.Build.0 = Debug|Win32 + {4F5CC446-A806-DD43-A1C4-73C4C37D1895}.Release|Win32.ActiveCfg = Release|Win32 + {4F5CC446-A806-DD43-A1C4-73C4C37D1895}.Release|Win32.Build.0 = Release|Win32 + {0DD0AD84-3DE8-2F49-B31F-4B8F41864A89}.Debug|Win32.ActiveCfg = Debug|Win32 + {0DD0AD84-3DE8-2F49-B31F-4B8F41864A89}.Debug|Win32.Build.0 = Debug|Win32 + {0DD0AD84-3DE8-2F49-B31F-4B8F41864A89}.Release|Win32.ActiveCfg = Release|Win32 + {0DD0AD84-3DE8-2F49-B31F-4B8F41864A89}.Release|Win32.Build.0 = Release|Win32 + {541CA31C-B613-A346-AFEB-FE0614CEF765}.Debug|Win32.ActiveCfg = Debug|Win32 + {541CA31C-B613-A346-AFEB-FE0614CEF765}.Debug|Win32.Build.0 = Debug|Win32 + {541CA31C-B613-A346-AFEB-FE0614CEF765}.Release|Win32.ActiveCfg = Release|Win32 + {541CA31C-B613-A346-AFEB-FE0614CEF765}.Release|Win32.Build.0 = Release|Win32 + {859DF586-61E5-5749-AE72-0B8CC7C817D7}.Debug|Win32.ActiveCfg = Debug|Win32 + {859DF586-61E5-5749-AE72-0B8CC7C817D7}.Debug|Win32.Build.0 = Debug|Win32 + {859DF586-61E5-5749-AE72-0B8CC7C817D7}.Release|Win32.ActiveCfg = Release|Win32 + {859DF586-61E5-5749-AE72-0B8CC7C817D7}.Release|Win32.Build.0 = Release|Win32 + {49527EB7-9A96-9743-BAE3-CA18CAD2FC54}.Debug|Win32.ActiveCfg = Debug|Win32 + {49527EB7-9A96-9743-BAE3-CA18CAD2FC54}.Debug|Win32.Build.0 = Debug|Win32 + {49527EB7-9A96-9743-BAE3-CA18CAD2FC54}.Release|Win32.ActiveCfg = Release|Win32 + {49527EB7-9A96-9743-BAE3-CA18CAD2FC54}.Release|Win32.Build.0 = Release|Win32 + {F0F3C9F2-2F1A-C842-9757-40DC67F4219D}.Debug|Win32.ActiveCfg = Debug|Win32 + {F0F3C9F2-2F1A-C842-9757-40DC67F4219D}.Debug|Win32.Build.0 = Debug|Win32 + {F0F3C9F2-2F1A-C842-9757-40DC67F4219D}.Release|Win32.ActiveCfg = Release|Win32 + {F0F3C9F2-2F1A-C842-9757-40DC67F4219D}.Release|Win32.Build.0 = Release|Win32 + {E1DD1D32-C9B7-B14B-BD41-EA39A0A39F6D}.Debug|Win32.ActiveCfg = Debug|Win32 + {E1DD1D32-C9B7-B14B-BD41-EA39A0A39F6D}.Debug|Win32.Build.0 = Debug|Win32 + {E1DD1D32-C9B7-B14B-BD41-EA39A0A39F6D}.Release|Win32.ActiveCfg = Release|Win32 + {E1DD1D32-C9B7-B14B-BD41-EA39A0A39F6D}.Release|Win32.Build.0 = Release|Win32 + {48910BD1-FBB6-5D47-A5D2-4EA2E5D91F72}.Debug|Win32.ActiveCfg = Debug|Win32 + {48910BD1-FBB6-5D47-A5D2-4EA2E5D91F72}.Debug|Win32.Build.0 = Debug|Win32 + {48910BD1-FBB6-5D47-A5D2-4EA2E5D91F72}.Release|Win32.ActiveCfg = Release|Win32 + {48910BD1-FBB6-5D47-A5D2-4EA2E5D91F72}.Release|Win32.Build.0 = Release|Win32 + {296FF26A-1980-3B44-ADDA-EAE72242B4B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {296FF26A-1980-3B44-ADDA-EAE72242B4B0}.Debug|Win32.Build.0 = Debug|Win32 + {296FF26A-1980-3B44-ADDA-EAE72242B4B0}.Release|Win32.ActiveCfg = Release|Win32 + {296FF26A-1980-3B44-ADDA-EAE72242B4B0}.Release|Win32.Build.0 = Release|Win32 + {14B1A8FE-44AC-C04E-BFDE-7AC1D72E37DA}.Debug|Win32.ActiveCfg = Debug|Win32 + {14B1A8FE-44AC-C04E-BFDE-7AC1D72E37DA}.Debug|Win32.Build.0 = Debug|Win32 + {14B1A8FE-44AC-C04E-BFDE-7AC1D72E37DA}.Release|Win32.ActiveCfg = Release|Win32 + {14B1A8FE-44AC-C04E-BFDE-7AC1D72E37DA}.Release|Win32.Build.0 = Release|Win32 + {41F4E0C8-9F68-7E4E-BEF1-AB5279264003}.Debug|Win32.ActiveCfg = Debug|Win32 + {41F4E0C8-9F68-7E4E-BEF1-AB5279264003}.Debug|Win32.Build.0 = Debug|Win32 + {41F4E0C8-9F68-7E4E-BEF1-AB5279264003}.Release|Win32.ActiveCfg = Release|Win32 + {41F4E0C8-9F68-7E4E-BEF1-AB5279264003}.Release|Win32.Build.0 = Release|Win32 + {1F19F525-2F86-1949-94DD-639C09639634}.Debug|Win32.ActiveCfg = Debug|Win32 + {1F19F525-2F86-1949-94DD-639C09639634}.Debug|Win32.Build.0 = Debug|Win32 + {1F19F525-2F86-1949-94DD-639C09639634}.Release|Win32.ActiveCfg = Release|Win32 + {1F19F525-2F86-1949-94DD-639C09639634}.Release|Win32.Build.0 = Release|Win32 + {B2DD9042-38C1-6140-852D-ACEF33E172F6}.Debug|Win32.ActiveCfg = Debug|Win32 + {B2DD9042-38C1-6140-852D-ACEF33E172F6}.Debug|Win32.Build.0 = Debug|Win32 + {B2DD9042-38C1-6140-852D-ACEF33E172F6}.Release|Win32.ActiveCfg = Release|Win32 + {B2DD9042-38C1-6140-852D-ACEF33E172F6}.Release|Win32.Build.0 = Release|Win32 + {D19A3C76-2C05-2643-8D45-E06B9268EDE2}.Debug|Win32.ActiveCfg = Debug|Win32 + {D19A3C76-2C05-2643-8D45-E06B9268EDE2}.Debug|Win32.Build.0 = Debug|Win32 + {D19A3C76-2C05-2643-8D45-E06B9268EDE2}.Release|Win32.ActiveCfg = Release|Win32 + {D19A3C76-2C05-2643-8D45-E06B9268EDE2}.Release|Win32.Build.0 = Release|Win32 + {9EA7D8D7-6D83-0549-92E8-226A16D1BC51}.Debug|Win32.ActiveCfg = Debug|Win32 + {9EA7D8D7-6D83-0549-92E8-226A16D1BC51}.Debug|Win32.Build.0 = Debug|Win32 + {9EA7D8D7-6D83-0549-92E8-226A16D1BC51}.Release|Win32.ActiveCfg = Release|Win32 + {9EA7D8D7-6D83-0549-92E8-226A16D1BC51}.Release|Win32.Build.0 = Release|Win32 + {1246F077-C27B-F346-9D88-4CD5AA23CCB4}.Debug|Win32.ActiveCfg = Debug|Win32 + {1246F077-C27B-F346-9D88-4CD5AA23CCB4}.Debug|Win32.Build.0 = Debug|Win32 + {1246F077-C27B-F346-9D88-4CD5AA23CCB4}.Release|Win32.ActiveCfg = Release|Win32 + {1246F077-C27B-F346-9D88-4CD5AA23CCB4}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/premake/VisualC/VS2010/SDL2/SDL2.vcxproj b/premake/VisualC/VS2010/SDL2/SDL2.vcxproj new file mode 100755 index 0000000000..a34fa4b06c --- /dev/null +++ b/premake/VisualC/VS2010/SDL2/SDL2.vcxproj @@ -0,0 +1,430 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + SDL2 + Win32Proj + + + + DynamicLibrary + true + MultiByte + + + DynamicLibrary + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + SDL2 + .dll + false + true + + + Win32\Release\ + obj\Release\ + SDL2 + .dll + false + false + + + + Disabled + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)SDL2.pdb + + + USING_PREMAKE_CONFIG_H;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + + + Windows + true + imm32.lib;oleaut32.lib;winmm.lib;version.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)SDL2.dll + $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories) + Win32\Debug\SDL2.lib + + + + + MaxSpeed + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + + + USING_PREMAKE_CONFIG_H;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + + + Windows + false + true + true + imm32.lib;oleaut32.lib;winmm.lib;version.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)SDL2.dll + $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories) + Win32\Release\SDL2.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2010/SDL2/SDL2.vcxproj.filters b/premake/VisualC/VS2010/SDL2/SDL2.vcxproj.filters new file mode 100755 index 0000000000..e5af43ce40 --- /dev/null +++ b/premake/VisualC/VS2010/SDL2/SDL2.vcxproj.filters @@ -0,0 +1,708 @@ + + + + + {83552F35-9E27-8349-941D-D42C8C683F29} + + + {DCF63369-8F8C-844D-AA77-7A1C3389F75A} + + + {4B46A9AC-5C90-D74F-9516-6E459B135E58} + + + {2B838705-E332-2B46-B5FB-D82D76CAC47C} + + + {62756ECB-7D43-2646-B2F6-D0C2F73A6C31} + + + {7838C0FB-1AE8-D94A-87B4-FCFC3C8B84DC} + + + {9D0A2730-A1A5-3643-BDC3-D192D36B7DA7} + + + {A49D9D80-CFF5-C44A-8615-139DD4BB9344} + + + {A01C7BA1-F2D9-9D46-AB04-728BA7C88072} + + + {25D8CA3D-05B5-EA42-9348-6C948C86A1BB} + + + {29D9529E-8294-5A47-A9B3-994992801BA2} + + + {21817AB4-FA71-0F4A-BE78-011FACC15F5F} + + + {D3438262-E7D4-4C46-B3BB-02356842965E} + + + {68106057-FA4B-6147-951D-380F735D10E1} + + + {F8F2FC95-D2DF-B349-9A48-21E164456323} + + + {93E4CD66-FBB2-3343-9837-5167CF17E2AD} + + + {BA23138E-35A5-8C4C-B6AE-BC40C73E7899} + + + {935C1E64-0EA6-3D41-B173-DC2790AEA36B} + + + {894EC8C0-D665-5549-958A-8CE69F48B841} + + + {5178DC7D-3740-F04F-A4F5-E8ECF505986D} + + + {E858B76A-CA16-EA4C-9C24-2D30D7F57F30} + + + {A0882EB2-818B-6C4C-83FA-5D1A16294D71} + + + {B8CFBF32-5285-F841-9EE6-500733BF84E3} + + + {7F1F162F-25CB-794B-800A-DC4A6771A090} + + + {56A66F9F-D266-E24B-885B-6675CFB3CD7A} + + + {7D9CA672-E7B3-1A40-BC8D-45550C5DB87C} + + + {74579AE9-AD11-3C4B-8748-111B86027197} + + + {B0FBF7F5-ACA2-8C41-85A6-65340E33240F} + + + {BAF5077D-8616-8748-9C7A-A7FD13A7CAEA} + + + {BC4F478C-9137-1842-B7B4-6F2A15DD90DA} + + + {ED28E680-8BFF-4244-BAFF-E91CFD47EF86} + + + {A9AF8524-CB9F-9F4E-9DA5-B93A49937102} + + + {1C0AEE74-C5A7-B445-ACF3-BC2EFD681916} + + + {451C1FED-B064-E540-AE86-F0B8861EAC4D} + + + {43B99060-F4F4-1041-AE01-934B1D0743F6} + + + {D77A2123-6457-D247-AD87-936651AE255B} + + + {0795129F-E4B3-B548-88FA-823A653118BD} + + + + + src + + + src + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio\disk + + + src\audio\dummy + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\haptic + + + src\haptic + + + src\joystick + + + src\joystick + + + src\joystick + + + src\render + + + src\render + + + src\render + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\thread + + + src\thread + + + src\timer + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video\dummy + + + src\video\dummy + + + src\video\dummy + + + src\thread\generic + + + src\audio\winmm + + + src\core\windows + + + src\libm + + + src\libm + + + src\thread\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\audio\directsound + + + src\audio\directsound + + + src\joystick\windows + + + src\render\opengl + + + src\render\opengl + + + + + src + + + src + + + src + + + src + + + src + + + src\atomic + + + src\atomic + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio\disk + + + src\audio\dummy + + + src\cpuinfo + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\file + + + src\haptic + + + src\joystick + + + src\joystick + + + src\power + + + src\render + + + src\render + + + src\render + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\thread + + + src\timer + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video\dummy + + + src\video\dummy + + + src\video\dummy + + + src\thread\generic + + + src\audio\winmm + + + src\core\windows + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\loadso\windows + + + src\power\windows + + + src\thread\windows + + + src\thread\windows + + + src\thread\windows + + + src\thread\windows + + + src\timer\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\filesystem\windows + + + src\audio\directsound + + + src\audio\xaudio2 + + + src\render\direct3d + + + src\haptic\windows + + + src\joystick\windows + + + src\joystick\windows + + + src\render\opengl + + + src\render\opengl + + + diff --git a/premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj b/premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj new file mode 100755 index 0000000000..d34704d180 --- /dev/null +++ b/premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj @@ -0,0 +1,115 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + SDL2main + Win32Proj + + + + StaticLibrary + true + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + SDL2main + .lib + + + Win32\Release\ + obj\Release\ + SDL2main + .lib + + + + Disabled + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)SDL2main.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2main.lib + + + Windows + true + + + + + MaxSpeed + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2main.lib + + + Windows + false + true + true + + + + + + + + + + diff --git a/premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj.filters b/premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj.filters new file mode 100755 index 0000000000..7da1a45d13 --- /dev/null +++ b/premake/VisualC/VS2010/SDL2main/SDL2main.vcxproj.filters @@ -0,0 +1,19 @@ + + + + + {E255A4C8-F0EF-A243-91DC-06312A35FE57} + + + {FD7C1EC4-B745-E943-9324-5B10122E141B} + + + {E2DAA459-291E-D347-80AD-52463F3EEB2E} + + + + + src\main\windows + + + diff --git a/premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj b/premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj new file mode 100755 index 0000000000..8968e60016 --- /dev/null +++ b/premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj @@ -0,0 +1,157 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + SDL2test + Win32Proj + + + + StaticLibrary + true + MultiByte + + + StaticLibrary + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + SDL2test + .lib + + + Win32\Release\ + obj\Release\ + SDL2test + .lib + + + + Disabled + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)SDL2test.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2test.lib + + + Windows + true + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2test.lib + + + Windows + false + true + true + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj.filters b/premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj.filters new file mode 100755 index 0000000000..aa8e791ea0 --- /dev/null +++ b/premake/VisualC/VS2010/SDL2test/SDL2test.vcxproj.filters @@ -0,0 +1,58 @@ + + + + + {C34FFA8B-A517-F348-A88F-A091C2A0CE27} + + + {78F57D3C-A9F3-134E-B9BC-C73A2E71C6AA} + + + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + diff --git a/premake/VisualC/VS2010/SDL_config_premake.h b/premake/VisualC/VS2010/SDL_config_premake.h new file mode 100755 index 0000000000..be158a4f00 --- /dev/null +++ b/premake/VisualC/VS2010/SDL_config_premake.h @@ -0,0 +1,202 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_TIMER_WINDOWS +#define SDL_TIMER_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_WINMM +#define SDL_AUDIO_DRIVER_WINMM 1 +#endif +#ifndef SDL_FILESYSTEM_WINDOWS +#define SDL_FILESYSTEM_WINDOWS 1 +#endif +#ifndef SDL_POWER_WINDOWS +#define SDL_POWER_WINDOWS 1 +#endif +#ifndef SDL_LOADSO_WINDOWS +#define SDL_LOADSO_WINDOWS 1 +#endif +#ifndef SDL_VIDEO_DRIVER_WINDOWS +#define SDL_VIDEO_DRIVER_WINDOWS 1 +#endif +#ifndef SDL_THREAD_WINDOWS +#define SDL_THREAD_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DSOUND +#define SDL_AUDIO_DRIVER_DSOUND 1 +#endif +#ifndef SDL_JOYSTICK_DINPUT +#define SDL_JOYSTICK_DINPUT 1 +#endif +#ifndef SDL_VIDEO_RENDER_D3D +#define SDL_VIDEO_RENDER_D3D 1 +#endif +#ifndef SDL_HAPTIC_DINPUT +#define SDL_HAPTIC_DINPUT 1 +#endif +#ifndef SDL_AUDIO_DRIVER_XAUDIO2 +#define SDL_AUDIO_DRIVER_XAUDIO2 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_WGL +#define SDL_VIDEO_OPENGL_WGL 1 +#endif + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj b/premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj new file mode 100755 index 0000000000..178526f95b --- /dev/null +++ b/premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {9BC42316-43AF-B84A-9B45-133C29C126A0} + checkkeys + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + checkkeys + .exe + true + + + Win32\Release\ + obj\Release\ + checkkeys + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)checkkeys.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)checkkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)checkkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj.filters b/premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj.filters new file mode 100755 index 0000000000..57a60f8e9c --- /dev/null +++ b/premake/VisualC/VS2010/tests/checkkeys/checkkeys.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {326BE6BA-4C4D-0447-9A9E-9BBE40EA0BA8} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj b/premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj new file mode 100755 index 0000000000..f72bbe0326 --- /dev/null +++ b/premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {5C06F962-7A40-964D-B60B-A919A32EE303} + loopwave + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + loopwave + .exe + true + + + Win32\Release\ + obj\Release\ + loopwave + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)loopwave.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)loopwave.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Debug\sample.wav" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)loopwave.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Release\sample.wav" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj.filters b/premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj.filters new file mode 100755 index 0000000000..6caed42f8d --- /dev/null +++ b/premake/VisualC/VS2010/tests/loopwave/loopwave.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {08C69A69-D27F-AD47-B368-F0FF4C4508B2} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj b/premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj new file mode 100755 index 0000000000..28492f7937 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {A7E1C8B0-F3FA-E740-ABEF-DA22747D8B7F} + testatomic + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testatomic + .exe + true + + + Win32\Release\ + obj\Release\ + testatomic + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testatomic.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testatomic.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testatomic.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj.filters b/premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj.filters new file mode 100755 index 0000000000..6a735dae2c --- /dev/null +++ b/premake/VisualC/VS2010/tests/testatomic/testatomic.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {0A6BA529-9324-DF4C-9218-4E58872F768F} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj b/premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj new file mode 100755 index 0000000000..a863187197 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0C330D16-E8D8-EA43-9E18-BE3E51FE1347} + testaudioinfo + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testaudioinfo + .exe + true + + + Win32\Release\ + obj\Release\ + testaudioinfo + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testaudioinfo.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testaudioinfo.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testaudioinfo.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj.filters b/premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj.filters new file mode 100755 index 0000000000..b026ac6b66 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testaudioinfo/testaudioinfo.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {24BD95DA-0646-4F4F-8423-4DE68EDA4365} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj b/premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj new file mode 100755 index 0000000000..2c0099c1ca --- /dev/null +++ b/premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj @@ -0,0 +1,169 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {1F19F525-2F86-1949-94DD-639C09639634} + testautomation + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testautomation + .exe + true + + + Win32\Release\ + obj\Release\ + testautomation + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testautomation.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testautomation.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testautomation.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj.filters b/premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj.filters new file mode 100755 index 0000000000..6426e826ca --- /dev/null +++ b/premake/VisualC/VS2010/tests/testautomation/testautomation.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {EDC1E280-1E61-6543-B304-CEC57120CA49} + + + + + test + + + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj b/premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj new file mode 100755 index 0000000000..2c2ff0fa74 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {541CA31C-B613-A346-AFEB-FE0614CEF765} + testchessboard + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testchessboard + .exe + true + + + Win32\Release\ + obj\Release\ + testchessboard + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testchessboard.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testchessboard.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testchessboard.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj.filters b/premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj.filters new file mode 100755 index 0000000000..a175d02580 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testchessboard/testchessboard.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {0A88D931-6879-004A-A203-ADF96E842CE1} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj b/premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj new file mode 100755 index 0000000000..ee27cc6c4d --- /dev/null +++ b/premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {296FF26A-1980-3B44-ADDA-EAE72242B4B0} + testdraw2 + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testdraw2 + .exe + true + + + Win32\Release\ + obj\Release\ + testdraw2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testdraw2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testdraw2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testdraw2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj.filters b/premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj.filters new file mode 100755 index 0000000000..9a3579bba3 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testdraw2/testdraw2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4F033489-2DFF-6946-96D7-A7DE7D37AAD4} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testerror/testerror.vcxproj b/premake/VisualC/VS2010/tests/testerror/testerror.vcxproj new file mode 100755 index 0000000000..3368637303 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testerror/testerror.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0232629C-6FEC-A541-9EF6-CD4560D95327} + testerror + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testerror + .exe + true + + + Win32\Release\ + obj\Release\ + testerror + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testerror.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testerror.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testerror.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testerror/testerror.vcxproj.filters b/premake/VisualC/VS2010/tests/testerror/testerror.vcxproj.filters new file mode 100755 index 0000000000..43fd6ccaba --- /dev/null +++ b/premake/VisualC/VS2010/tests/testerror/testerror.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {5C705227-B483-A34B-B448-F770ECD3F6F6} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testfile/testfile.vcxproj b/premake/VisualC/VS2010/tests/testfile/testfile.vcxproj new file mode 100755 index 0000000000..b864e98659 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testfile/testfile.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {D19A3C76-2C05-2643-8D45-E06B9268EDE2} + testfile + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testfile + .exe + true + + + Win32\Release\ + obj\Release\ + testfile + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testfile.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testfile.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testfile.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testfile/testfile.vcxproj.filters b/premake/VisualC/VS2010/tests/testfile/testfile.vcxproj.filters new file mode 100755 index 0000000000..c60e2ce079 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testfile/testfile.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {D3335365-50F5-5849-9BEC-622319AD299E} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj b/premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj new file mode 100755 index 0000000000..62f9095beb --- /dev/null +++ b/premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {9B14A8B6-4187-1A41-9664-CAB1C3919CC7} + testfilesystem + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testfilesystem + .exe + true + + + Win32\Release\ + obj\Release\ + testfilesystem + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testfilesystem.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testfilesystem.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testfilesystem.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj.filters b/premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj.filters new file mode 100755 index 0000000000..d95a263c12 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testfilesystem/testfilesystem.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {9D8635B9-1BB8-CD4D-AA2E-53256B52FEFC} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj b/premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj new file mode 100755 index 0000000000..f30829742b --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {2953CE1F-0332-784D-B123-BDA28C15776A} + testgamecontroller + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgamecontroller + .exe + true + + + Win32\Release\ + obj\Release\ + testgamecontroller + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgamecontroller.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testgamecontroller.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testgamecontroller.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj.filters b/premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj.filters new file mode 100755 index 0000000000..c1d809b821 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgamecontroller/testgamecontroller.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {2176E079-7D52-BD4A-BD71-B7D3F42322B7} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj b/premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj new file mode 100755 index 0000000000..c1f35a6c44 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {1F585797-33BC-3643-B0E3-9BD491AF4852} + testgesture + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgesture + .exe + true + + + Win32\Release\ + obj\Release\ + testgesture + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgesture.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testgesture.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testgesture.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj.filters b/premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj.filters new file mode 100755 index 0000000000..a2061358ee --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgesture/testgesture.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {F5111E7F-A327-714B-A976-D2CF9C22AC14} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj b/premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj new file mode 100755 index 0000000000..6fe5017832 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {05B569B7-8C6D-FE47-8AFB-3F5C9B6EC7F4} + testgl2 + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgl2 + .exe + true + + + Win32\Release\ + obj\Release\ + testgl2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgl2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testgl2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testgl2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj.filters b/premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj.filters new file mode 100755 index 0000000000..507c6b6140 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgl2/testgl2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {A5B30912-1F76-7C40-954E-6D010DBC40E3} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testgles/testgles.vcxproj b/premake/VisualC/VS2010/tests/testgles/testgles.vcxproj new file mode 100755 index 0000000000..a9c27f344c --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgles/testgles.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {9937576E-DD2A-0B41-9D97-9D3CF1478963} + testgles + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgles + .exe + true + + + Win32\Release\ + obj\Release\ + testgles + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgles.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testgles.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testgles.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testgles/testgles.vcxproj.filters b/premake/VisualC/VS2010/tests/testgles/testgles.vcxproj.filters new file mode 100755 index 0000000000..3b54f57a8d --- /dev/null +++ b/premake/VisualC/VS2010/tests/testgles/testgles.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C77DA963-9918-E049-9FA0-8DF33A9B4CCD} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj b/premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj new file mode 100755 index 0000000000..1a7c88773a --- /dev/null +++ b/premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {4BCD98A1-3F51-3244-8D09-C510E02D045B} + testhaptic + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testhaptic + .exe + true + + + Win32\Release\ + obj\Release\ + testhaptic + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testhaptic.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testhaptic.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testhaptic.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj.filters b/premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj.filters new file mode 100755 index 0000000000..6e2d2a6529 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testhaptic/testhaptic.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4379B678-4F5D-1A47-AA63-731BC2761A0F} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj b/premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj new file mode 100755 index 0000000000..b4718c5f3e --- /dev/null +++ b/premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {B2DD9042-38C1-6140-852D-ACEF33E172F6} + testiconv + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testiconv + .exe + true + + + Win32\Release\ + obj\Release\ + testiconv + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testiconv.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testiconv.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\utf8.txt" ".\Win32\Debug\utf8.txt" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testiconv.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\utf8.txt" ".\Win32\Release\utf8.txt" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj.filters b/premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj.filters new file mode 100755 index 0000000000..b87c1439a9 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testiconv/testiconv.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {EF1D3B02-621B-794C-9D27-E8A8C1559E5E} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testime/testime.vcxproj b/premake/VisualC/VS2010/tests/testime/testime.vcxproj new file mode 100755 index 0000000000..d1877480ba --- /dev/null +++ b/premake/VisualC/VS2010/tests/testime/testime.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {9EA7D8D7-6D83-0549-92E8-226A16D1BC51} + testime + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testime + .exe + true + + + Win32\Release\ + obj\Release\ + testime + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testime.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testime.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testime.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testime/testime.vcxproj.filters b/premake/VisualC/VS2010/tests/testime/testime.vcxproj.filters new file mode 100755 index 0000000000..df6acd02ff --- /dev/null +++ b/premake/VisualC/VS2010/tests/testime/testime.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {D49EDF16-AE15-294B-A234-69C8AAC47BCD} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj b/premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj new file mode 100755 index 0000000000..6abf1b96de --- /dev/null +++ b/premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {901EBC4D-735F-D84D-9C4A-AC25E87CAD4A} + testjoystick + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testjoystick + .exe + true + + + Win32\Release\ + obj\Release\ + testjoystick + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testjoystick.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testjoystick.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testjoystick.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj.filters b/premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj.filters new file mode 100755 index 0000000000..fd11e957a4 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testjoystick/testjoystick.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {0307F038-A465-704A-90F6-FBDDD201C0AC} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj b/premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj new file mode 100755 index 0000000000..5548cc5363 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {068A675B-F525-714D-BA49-636E8A4B0564} + testkeys + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testkeys + .exe + true + + + Win32\Release\ + obj\Release\ + testkeys + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testkeys.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj.filters b/premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj.filters new file mode 100755 index 0000000000..178b2fa95b --- /dev/null +++ b/premake/VisualC/VS2010/tests/testkeys/testkeys.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4A2194D5-EDA7-B349-B29B-9DE407F0C8D0} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj b/premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj new file mode 100755 index 0000000000..bf2ba2bc03 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {63154644-828E-7F40-8024-6EEDF62436D1} + testloadso + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testloadso + .exe + true + + + Win32\Release\ + obj\Release\ + testloadso + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testloadso.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testloadso.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testloadso.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj.filters b/premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj.filters new file mode 100755 index 0000000000..ef5cf6a13c --- /dev/null +++ b/premake/VisualC/VS2010/tests/testloadso/testloadso.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {CE5A3405-8AF3-454C-89FB-1B0BB87D4492} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testlock/testlock.vcxproj b/premake/VisualC/VS2010/tests/testlock/testlock.vcxproj new file mode 100755 index 0000000000..79ba6784f0 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testlock/testlock.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {F0F3C9F2-2F1A-C842-9757-40DC67F4219D} + testlock + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testlock + .exe + true + + + Win32\Release\ + obj\Release\ + testlock + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testlock.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testlock.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testlock.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testlock/testlock.vcxproj.filters b/premake/VisualC/VS2010/tests/testlock/testlock.vcxproj.filters new file mode 100755 index 0000000000..ace4dc56e3 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testlock/testlock.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {FEC01265-26F6-864A-B022-454E000897D8} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj b/premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj new file mode 100755 index 0000000000..0811de0993 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {48910BD1-FBB6-5D47-A5D2-4EA2E5D91F72} + testmessage + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testmessage + .exe + true + + + Win32\Release\ + obj\Release\ + testmessage + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testmessage.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testmessage.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testmessage.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj.filters b/premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj.filters new file mode 100755 index 0000000000..540335a645 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testmessage/testmessage.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C9093CDD-7437-DD4D-AC04-D8FAD1E1BB0C} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj b/premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj new file mode 100755 index 0000000000..0d271213e4 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E1DD1D32-C9B7-B14B-BD41-EA39A0A39F6D} + testmultiaudio + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testmultiaudio + .exe + true + + + Win32\Release\ + obj\Release\ + testmultiaudio + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testmultiaudio.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testmultiaudio.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Debug\sample.wav" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testmultiaudio.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Release\sample.wav" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj.filters b/premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj.filters new file mode 100755 index 0000000000..3ce784e79a --- /dev/null +++ b/premake/VisualC/VS2010/tests/testmultiaudio/testmultiaudio.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C0BB9EF7-2D7E-D149-83FE-EC5225B3EB63} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testnative/testnative.vcxproj b/premake/VisualC/VS2010/tests/testnative/testnative.vcxproj new file mode 100755 index 0000000000..652295b08e --- /dev/null +++ b/premake/VisualC/VS2010/tests/testnative/testnative.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {6BD39C1C-1CC2-E946-AE2C-420BADA7F6CB} + testnative + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testnative + .exe + true + + + Win32\Release\ + obj\Release\ + testnative + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testnative.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testnative.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testnative.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testnative/testnative.vcxproj.filters b/premake/VisualC/VS2010/tests/testnative/testnative.vcxproj.filters new file mode 100755 index 0000000000..2fe621edfa --- /dev/null +++ b/premake/VisualC/VS2010/tests/testnative/testnative.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {5FE70C28-86C3-DF4B-A4C3-02735F707D80} + + + + + test + + + + + test + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj b/premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj new file mode 100755 index 0000000000..8d8645087e --- /dev/null +++ b/premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {858D4FF2-0931-604C-853C-017D94C11F66} + testoverlay2 + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testoverlay2 + .exe + true + + + Win32\Release\ + obj\Release\ + testoverlay2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testoverlay2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testoverlay2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Debug\moose.dat" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testoverlay2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Release\moose.dat" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj.filters b/premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj.filters new file mode 100755 index 0000000000..00fc93dd5e --- /dev/null +++ b/premake/VisualC/VS2010/tests/testoverlay2/testoverlay2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {CFB6C314-736C-EC4D-9A33-3B3E6E9B8F64} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj b/premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj new file mode 100755 index 0000000000..bff2c1162e --- /dev/null +++ b/premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {5BFF537B-8785-D14E-9C7D-25B693477FB8} + testplatform + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testplatform + .exe + true + + + Win32\Release\ + obj\Release\ + testplatform + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testplatform.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testplatform.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testplatform.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj.filters b/premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj.filters new file mode 100755 index 0000000000..d706cc07eb --- /dev/null +++ b/premake/VisualC/VS2010/tests/testplatform/testplatform.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {D32741B4-2D14-2C44-9815-497A65480F87} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testpower/testpower.vcxproj b/premake/VisualC/VS2010/tests/testpower/testpower.vcxproj new file mode 100755 index 0000000000..cb71db82f2 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testpower/testpower.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0DD0AD84-3DE8-2F49-B31F-4B8F41864A89} + testpower + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testpower + .exe + true + + + Win32\Release\ + obj\Release\ + testpower + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testpower.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testpower.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testpower.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testpower/testpower.vcxproj.filters b/premake/VisualC/VS2010/tests/testpower/testpower.vcxproj.filters new file mode 100755 index 0000000000..edaf2722ec --- /dev/null +++ b/premake/VisualC/VS2010/tests/testpower/testpower.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {7FCC575D-C9C2-3146-8E3D-5D4E43B20EB3} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj b/premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj new file mode 100755 index 0000000000..192a679cb0 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {49527EB7-9A96-9743-BAE3-CA18CAD2FC54} + testrelative + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrelative + .exe + true + + + Win32\Release\ + obj\Release\ + testrelative + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrelative.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrelative.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrelative.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj.filters b/premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj.filters new file mode 100755 index 0000000000..5be0e713ac --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrelative/testrelative.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {B674DEFB-2B8A-B641-9B90-E38E9E9275A3} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj b/premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj new file mode 100755 index 0000000000..0a8b11a4bb --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {4F5CC446-A806-DD43-A1C4-73C4C37D1895} + testrendercopyex + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrendercopyex + .exe + true + + + Win32\Release\ + obj\Release\ + testrendercopyex + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrendercopyex.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrendercopyex.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Debug\sample.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrendercopyex.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Release\sample.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj.filters b/premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj.filters new file mode 100755 index 0000000000..e7c89f7826 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrendercopyex/testrendercopyex.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {B3395C27-9611-834E-95FB-A4B6D1593513} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj b/premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj new file mode 100755 index 0000000000..ce3792e353 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {81602E3E-93FC-2740-B4BD-BC80BCD715D6} + testrendertarget + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrendertarget + .exe + true + + + Win32\Release\ + obj\Release\ + testrendertarget + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrendertarget.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrendertarget.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Debug\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrendertarget.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Release\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj.filters b/premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj.filters new file mode 100755 index 0000000000..b266a4fdfc --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrendertarget/testrendertarget.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {646A115A-D0C0-B842-95ED-837835BB681D} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testresample/testresample.vcxproj b/premake/VisualC/VS2010/tests/testresample/testresample.vcxproj new file mode 100755 index 0000000000..a920b67457 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testresample/testresample.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {60819005-330D-4948-AFC5-173584DCBA84} + testresample + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testresample + .exe + true + + + Win32\Release\ + obj\Release\ + testresample + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testresample.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testresample.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Debug\sample.wav" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testresample.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Release\sample.wav" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testresample/testresample.vcxproj.filters b/premake/VisualC/VS2010/tests/testresample/testresample.vcxproj.filters new file mode 100755 index 0000000000..23679655ca --- /dev/null +++ b/premake/VisualC/VS2010/tests/testresample/testresample.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {3E668F4B-40FD-E342-8C8A-62F0879DF843} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj b/premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj new file mode 100755 index 0000000000..8f1e916222 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {C9ABF4FE-1D59-7A41-80B6-87C169B9FCB5} + testrumble + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrumble + .exe + true + + + Win32\Release\ + obj\Release\ + testrumble + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrumble.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrumble.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrumble.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj.filters b/premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj.filters new file mode 100755 index 0000000000..62191ca077 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testrumble/testrumble.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {FB88A5FA-D8AB-4341-B4CF-4BBFB048885D} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testscale/testscale.vcxproj b/premake/VisualC/VS2010/tests/testscale/testscale.vcxproj new file mode 100755 index 0000000000..16cf37aa95 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testscale/testscale.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {48F4500B-46C3-CD46-942E-59482243211C} + testscale + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testscale + .exe + true + + + Win32\Release\ + obj\Release\ + testscale + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testscale.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testscale.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Debug\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testscale.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Release\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testscale/testscale.vcxproj.filters b/premake/VisualC/VS2010/tests/testscale/testscale.vcxproj.filters new file mode 100755 index 0000000000..42664423e8 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testscale/testscale.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {99327280-5F3F-C948-8249-0325B27EB330} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testsem/testsem.vcxproj b/premake/VisualC/VS2010/tests/testsem/testsem.vcxproj new file mode 100755 index 0000000000..9fdcebb996 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testsem/testsem.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {C73D37B5-71B8-E842-BBBE-278EBB71D245} + testsem + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testsem + .exe + true + + + Win32\Release\ + obj\Release\ + testsem + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testsem.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testsem.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testsem.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testsem/testsem.vcxproj.filters b/premake/VisualC/VS2010/tests/testsem/testsem.vcxproj.filters new file mode 100755 index 0000000000..8cf1dde2f8 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testsem/testsem.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {FE68A305-6A4C-B043-9351-4D57EBD44E6A} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testshader/testshader.vcxproj b/premake/VisualC/VS2010/tests/testshader/testshader.vcxproj new file mode 100755 index 0000000000..994155ba4e --- /dev/null +++ b/premake/VisualC/VS2010/tests/testshader/testshader.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {1246F077-C27B-F346-9D88-4CD5AA23CCB4} + testshader + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testshader + .exe + true + + + Win32\Release\ + obj\Release\ + testshader + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testshader.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testshader.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testshader.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testshader/testshader.vcxproj.filters b/premake/VisualC/VS2010/tests/testshader/testshader.vcxproj.filters new file mode 100755 index 0000000000..044bee5286 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testshader/testshader.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {87916299-E52F-1E4E-B936-38E2140B0369} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testshape/testshape.vcxproj b/premake/VisualC/VS2010/tests/testshape/testshape.vcxproj new file mode 100755 index 0000000000..6d92e99f03 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testshape/testshape.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {14B1A8FE-44AC-C04E-BFDE-7AC1D72E37DA} + testshape + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testshape + .exe + true + + + Win32\Release\ + obj\Release\ + testshape + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testshape.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testshape.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" if not exist ".\Win32\Debug\shapes" ( mkdir ".\Win32\Debug\shapes" ) copy ".\..\..\..\..\..\test\shapes\*.bmp" ".\Win32\Debug\shapes\*.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testshape.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" if not exist ".\Win32\Release\shapes" ( mkdir ".\Win32\Release\shapes" ) copy ".\..\..\..\..\..\test\shapes\*.bmp" ".\Win32\Release\shapes\*.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testshape/testshape.vcxproj.filters b/premake/VisualC/VS2010/tests/testshape/testshape.vcxproj.filters new file mode 100755 index 0000000000..579a9f970a --- /dev/null +++ b/premake/VisualC/VS2010/tests/testshape/testshape.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {85FFB357-D912-AB4D-BE80-D5DC957EF836} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj b/premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj new file mode 100755 index 0000000000..793edeccd8 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {DEB1CD6C-9CCF-4B44-A29F-3067FDB33838} + testsprite2 + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testsprite2 + .exe + true + + + Win32\Release\ + obj\Release\ + testsprite2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testsprite2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testsprite2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testsprite2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj.filters b/premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj.filters new file mode 100755 index 0000000000..ad7fee707f --- /dev/null +++ b/premake/VisualC/VS2010/tests/testsprite2/testsprite2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {E40CCFF9-BD96-E647-8B8F-BCC4CAA08BC5} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj b/premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj new file mode 100755 index 0000000000..1a290a7b34 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {262FA1CF-740E-2746-B72E-B0330B9F1337} + testspriteminimal + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testspriteminimal + .exe + true + + + Win32\Release\ + obj\Release\ + testspriteminimal + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testspriteminimal.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testspriteminimal.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testspriteminimal.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj.filters b/premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj.filters new file mode 100755 index 0000000000..6da0d95207 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testspriteminimal/testspriteminimal.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C1F3E1A3-1C29-604B-BAD9-FC8981990202} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj b/premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj new file mode 100755 index 0000000000..21fb1bb21a --- /dev/null +++ b/premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {4076F581-39F7-4144-A5B8-5FDBDB3B128B} + teststreaming + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + teststreaming + .exe + true + + + Win32\Release\ + obj\Release\ + teststreaming + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)teststreaming.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)teststreaming.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Debug\moose.dat" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)teststreaming.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Release\moose.dat" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj.filters b/premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj.filters new file mode 100755 index 0000000000..d144858dab --- /dev/null +++ b/premake/VisualC/VS2010/tests/teststreaming/teststreaming.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {76FE2D97-05DA-1A43-AEFF-BE8B330AD00B} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testthread/testthread.vcxproj b/premake/VisualC/VS2010/tests/testthread/testthread.vcxproj new file mode 100755 index 0000000000..11c03a6bfb --- /dev/null +++ b/premake/VisualC/VS2010/tests/testthread/testthread.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0DD89D04-2A0A-2348-A5E1-12A7AEE4200D} + testthread + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testthread + .exe + true + + + Win32\Release\ + obj\Release\ + testthread + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testthread.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testthread.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testthread.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testthread/testthread.vcxproj.filters b/premake/VisualC/VS2010/tests/testthread/testthread.vcxproj.filters new file mode 100755 index 0000000000..c961965f75 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testthread/testthread.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {734113B6-1B28-9F4D-BCAC-9A7D215B7112} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj b/premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj new file mode 100755 index 0000000000..c2e3c6bce2 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {F999361E-C0B3-ED43-975D-26D9A9CF5DDE} + testtimer + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testtimer + .exe + true + + + Win32\Release\ + obj\Release\ + testtimer + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testtimer.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testtimer.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testtimer.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj.filters b/premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj.filters new file mode 100755 index 0000000000..9353a5e3c2 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testtimer/testtimer.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {EB3B2709-1B71-694E-9031-647CA07835C3} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testver/testver.vcxproj b/premake/VisualC/VS2010/tests/testver/testver.vcxproj new file mode 100755 index 0000000000..d2675c53e9 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testver/testver.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {8FB2FB8C-FA28-D146-A767-0CB74E35643C} + testver + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testver + .exe + true + + + Win32\Release\ + obj\Release\ + testver + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testver.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testver.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testver.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testver/testver.vcxproj.filters b/premake/VisualC/VS2010/tests/testver/testver.vcxproj.filters new file mode 100755 index 0000000000..596fa62e0d --- /dev/null +++ b/premake/VisualC/VS2010/tests/testver/testver.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C091566F-B02C-844D-B140-F6562E245374} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj b/premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj new file mode 100755 index 0000000000..12b0c33894 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj @@ -0,0 +1,132 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {41F4E0C8-9F68-7E4E-BEF1-AB5279264003} + testwm2 + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testwm2 + .exe + true + + + Win32\Release\ + obj\Release\ + testwm2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testwm2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testwm2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testwm2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {72D8473C-9ED1-6041-877A-B45552307F3A} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj.filters b/premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj.filters new file mode 100755 index 0000000000..b8341acf41 --- /dev/null +++ b/premake/VisualC/VS2010/tests/testwm2/testwm2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {42AD74BA-CF00-7046-A4A7-8E421336F7C0} + + + + + test + + + diff --git a/premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj b/premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj new file mode 100755 index 0000000000..3722180420 --- /dev/null +++ b/premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj @@ -0,0 +1,129 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {B4CE343D-65CF-FB45-9505-D1D9EE28CE57} + torturethread + Win32Proj + + + + Application + true + MultiByte + + + Application + false + MultiByte + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + torturethread + .exe + true + + + Win32\Release\ + obj\Release\ + torturethread + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)torturethread.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)torturethread.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)torturethread.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {859DF586-61E5-5749-AE72-0B8CC7C817D7} + + + {A114B178-D2BB-CF42-A049-034C4C50596F} + + + + + + diff --git a/premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj.filters b/premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj.filters new file mode 100755 index 0000000000..48450120f5 --- /dev/null +++ b/premake/VisualC/VS2010/tests/torturethread/torturethread.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C7381C10-2E45-444F-AB84-98854EED617F} + + + + + test + + + diff --git a/premake/VisualC/VS2012/SDL.sln b/premake/VisualC/VS2012/SDL.sln new file mode 100755 index 0000000000..fc3fd0dd9b --- /dev/null +++ b/premake/VisualC/VS2012/SDL.sln @@ -0,0 +1,487 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testjoystick\testjoystick.vcxproj", "{867A2823-E792-3749-A47C-1B5F118FD1F9}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfilesystem", "tests\testfilesystem\testfilesystem.vcxproj", "{259763DF-AC86-B445-A465-064452171EB6}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsem", "tests\testsem\testsem.vcxproj", "{15C9C3A3-A6CD-F24B-AA55-74C46DFB123D}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testnative", "tests\testnative\testnative.vcxproj", "{BC693F25-4940-BB43-8529-E27D65275975}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testscale", "tests\testscale\testscale.vcxproj", "{8BBBF780-F9F4-0843-85B4-6100C0771E09}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgamecontroller", "tests\testgamecontroller\testgamecontroller.vcxproj", "{24AB4CEE-B82E-9C42-8ED2-9F3F7F3006AE}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendertarget", "tests\testrendertarget\testrendertarget.vcxproj", "{98CD7D27-4B74-4942-81DC-C82474A2E822}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testver", "tests\testver\testver.vcxproj", "{8B16A430-9090-B747-8825-BDE4B9A06538}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testkeys", "tests\testkeys\testkeys.vcxproj", "{A22567A8-5E3D-4046-A9EE-32148A1996DE}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testloadso", "tests\testloadso\testloadso.vcxproj", "{F81F2611-F8C5-334F-9ED8-1ABE38A1B106}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testtimer", "tests\testtimer\testtimer.vcxproj", "{87AECED3-5F20-8E46-9DFD-17A9E01D7E37}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay2", "tests\testoverlay2\testoverlay2.vcxproj", "{8ABC84ED-C999-DE4A-A929-CD6A79647804}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "torturethread", "tests\torturethread\torturethread.vcxproj", "{615744A9-90A8-A643-B2A7-223FEA845A00}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplatform", "tests\testplatform\testplatform.vcxproj", "{189FC042-4838-4342-9276-9514BB403092}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgesture", "tests\testgesture\testgesture.vcxproj", "{356BDC7D-2137-DA40-B20E-057366ADDEB7}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testaudioinfo", "tests\testaudioinfo\testaudioinfo.vcxproj", "{7A1312CF-BE73-8849-AFE9-48A028FB6C88}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loopwave", "tests\loopwave\loopwave.vcxproj", "{B4860E68-BEB0-2242-A6F6-A2D6FDCB5FD6}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testthread", "tests\testthread\testthread.vcxproj", "{299C1DAB-6EB1-3D4C-8101-7CDEDE92928D}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "teststreaming", "tests\teststreaming\teststreaming.vcxproj", "{187FC8D5-3BD2-394C-811A-8CBA0476B0DC}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "tests\checkkeys\checkkeys.vcxproj", "{0C2EE701-0ABA-5E48-9253-B3A54ECD5107}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testspriteminimal", "tests\testspriteminimal\testspriteminimal.vcxproj", "{170EE42E-8EE9-8E49-B04F-F412A203DF1D}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsprite2", "tests\testsprite2\testsprite2.vcxproj", "{5B2F2D57-A129-C849-9C06-5B2D35B74E07}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgles", "tests\testgles\testgles.vcxproj", "{1BC2C664-E0D9-314C-BDDE-6DF601ADE701}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testatomic", "tests\testatomic\testatomic.vcxproj", "{D2F26E24-D261-C54C-A334-F8F0EA68AA51}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2test", "SDL2test\SDL2test.vcxproj", "{E544B08A-C532-884E-A0BE-0F6F7F700067}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testhaptic", "tests\testhaptic\testhaptic.vcxproj", "{84FB19AD-E26F-984D-8F1F-9D92BC817E75}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl2", "tests\testgl2\testgl2.vcxproj", "{114BFA65-28CD-704A-A34B-99E354525E81}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL2\SDL2.vcxproj", "{7F1E020B-52F6-584E-B841-8B390015238B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testerror", "tests\testerror\testerror.vcxproj", "{DFD06E4E-B317-B745-8FB4-7063244DCA3E}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrumble", "tests\testrumble\testrumble.vcxproj", "{C72B0123-A5BD-FD45-90F1-1C29D45B5C92}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testresample", "tests\testresample\testresample.vcxproj", "{E8FC2B01-864C-1E4A-8E32-7103EF479048}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendercopyex", "tests\testrendercopyex\testrendercopyex.vcxproj", "{7BAE36E7-E655-B24D-B110-D2567316D6EA}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testpower", "tests\testpower\testpower.vcxproj", "{E3D41488-DCA1-A34B-87D3-E9820E500DA9}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testchessboard", "tests\testchessboard\testchessboard.vcxproj", "{15323EAE-0CB5-4245-8324-A4BF2EA72D6B}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "SDL2main\SDL2main.vcxproj", "{47B50335-DB5D-B948-B80C-E361ED5793F5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrelative", "tests\testrelative\testrelative.vcxproj", "{3186A875-B682-2D4D-97EC-CCF61AEEEAC7}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testlock", "tests\testlock\testlock.vcxproj", "{E2DDA701-A62F-9542-8BA9-296CBF281945}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmultiaudio", "tests\testmultiaudio\testmultiaudio.vcxproj", "{B7DA3C1F-B34B-A14A-BF10-BF628BA69C1B}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testmessage", "tests\testmessage\testmessage.vcxproj", "{461B95F1-FB8D-9B45-8FF9-8E0A9F56CA1B}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdraw2", "tests\testdraw2\testdraw2.vcxproj", "{E4477807-2D9E-CC43-9EF3-AEB1ADEDF79C}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshape", "tests\testshape\testshape.vcxproj", "{A916A09F-93F3-0A4F-9A95-9938BD96CF05}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testwm2", "tests\testwm2\testwm2.vcxproj", "{0DC21429-28DC-194C-AFFB-8BAB95022180}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testautomation", "tests\testautomation\testautomation.vcxproj", "{F7EAB41D-92CB-6B49-8131-48A61120F3C4}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testiconv", "tests\testiconv\testiconv.vcxproj", "{4CF625C3-2F83-7F4F-8ADD-15BEEFCD24E7}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "tests\testfile\testfile.vcxproj", "{07A396E5-1642-6148-82DA-2FF06644E542}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testime", "tests\testime\testime.vcxproj", "{98C363EE-E394-564A-8F5D-8649BE4EA3A5}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {E544B08A-C532-884E-A0BE-0F6F7F700067} = {E544B08A-C532-884E-A0BE-0F6F7F700067} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshader", "tests\testshader\testshader.vcxproj", "{51ADEB0F-09DD-5242-87FC-6DD5C4A098E3}" + ProjectSection(ProjectDependencies) = postProject + {47B50335-DB5D-B948-B80C-E361ED5793F5} = {47B50335-DB5D-B948-B80C-E361ED5793F5} + {7F1E020B-52F6-584E-B841-8B390015238B} = {7F1E020B-52F6-584E-B841-8B390015238B} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {867A2823-E792-3749-A47C-1B5F118FD1F9}.Debug|Win32.ActiveCfg = Debug|Win32 + {867A2823-E792-3749-A47C-1B5F118FD1F9}.Debug|Win32.Build.0 = Debug|Win32 + {867A2823-E792-3749-A47C-1B5F118FD1F9}.Release|Win32.ActiveCfg = Release|Win32 + {867A2823-E792-3749-A47C-1B5F118FD1F9}.Release|Win32.Build.0 = Release|Win32 + {259763DF-AC86-B445-A465-064452171EB6}.Debug|Win32.ActiveCfg = Debug|Win32 + {259763DF-AC86-B445-A465-064452171EB6}.Debug|Win32.Build.0 = Debug|Win32 + {259763DF-AC86-B445-A465-064452171EB6}.Release|Win32.ActiveCfg = Release|Win32 + {259763DF-AC86-B445-A465-064452171EB6}.Release|Win32.Build.0 = Release|Win32 + {15C9C3A3-A6CD-F24B-AA55-74C46DFB123D}.Debug|Win32.ActiveCfg = Debug|Win32 + {15C9C3A3-A6CD-F24B-AA55-74C46DFB123D}.Debug|Win32.Build.0 = Debug|Win32 + {15C9C3A3-A6CD-F24B-AA55-74C46DFB123D}.Release|Win32.ActiveCfg = Release|Win32 + {15C9C3A3-A6CD-F24B-AA55-74C46DFB123D}.Release|Win32.Build.0 = Release|Win32 + {BC693F25-4940-BB43-8529-E27D65275975}.Debug|Win32.ActiveCfg = Debug|Win32 + {BC693F25-4940-BB43-8529-E27D65275975}.Debug|Win32.Build.0 = Debug|Win32 + {BC693F25-4940-BB43-8529-E27D65275975}.Release|Win32.ActiveCfg = Release|Win32 + {BC693F25-4940-BB43-8529-E27D65275975}.Release|Win32.Build.0 = Release|Win32 + {8BBBF780-F9F4-0843-85B4-6100C0771E09}.Debug|Win32.ActiveCfg = Debug|Win32 + {8BBBF780-F9F4-0843-85B4-6100C0771E09}.Debug|Win32.Build.0 = Debug|Win32 + {8BBBF780-F9F4-0843-85B4-6100C0771E09}.Release|Win32.ActiveCfg = Release|Win32 + {8BBBF780-F9F4-0843-85B4-6100C0771E09}.Release|Win32.Build.0 = Release|Win32 + {24AB4CEE-B82E-9C42-8ED2-9F3F7F3006AE}.Debug|Win32.ActiveCfg = Debug|Win32 + {24AB4CEE-B82E-9C42-8ED2-9F3F7F3006AE}.Debug|Win32.Build.0 = Debug|Win32 + {24AB4CEE-B82E-9C42-8ED2-9F3F7F3006AE}.Release|Win32.ActiveCfg = Release|Win32 + {24AB4CEE-B82E-9C42-8ED2-9F3F7F3006AE}.Release|Win32.Build.0 = Release|Win32 + {98CD7D27-4B74-4942-81DC-C82474A2E822}.Debug|Win32.ActiveCfg = Debug|Win32 + {98CD7D27-4B74-4942-81DC-C82474A2E822}.Debug|Win32.Build.0 = Debug|Win32 + {98CD7D27-4B74-4942-81DC-C82474A2E822}.Release|Win32.ActiveCfg = Release|Win32 + {98CD7D27-4B74-4942-81DC-C82474A2E822}.Release|Win32.Build.0 = Release|Win32 + {8B16A430-9090-B747-8825-BDE4B9A06538}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B16A430-9090-B747-8825-BDE4B9A06538}.Debug|Win32.Build.0 = Debug|Win32 + {8B16A430-9090-B747-8825-BDE4B9A06538}.Release|Win32.ActiveCfg = Release|Win32 + {8B16A430-9090-B747-8825-BDE4B9A06538}.Release|Win32.Build.0 = Release|Win32 + {A22567A8-5E3D-4046-A9EE-32148A1996DE}.Debug|Win32.ActiveCfg = Debug|Win32 + {A22567A8-5E3D-4046-A9EE-32148A1996DE}.Debug|Win32.Build.0 = Debug|Win32 + {A22567A8-5E3D-4046-A9EE-32148A1996DE}.Release|Win32.ActiveCfg = Release|Win32 + {A22567A8-5E3D-4046-A9EE-32148A1996DE}.Release|Win32.Build.0 = Release|Win32 + {F81F2611-F8C5-334F-9ED8-1ABE38A1B106}.Debug|Win32.ActiveCfg = Debug|Win32 + {F81F2611-F8C5-334F-9ED8-1ABE38A1B106}.Debug|Win32.Build.0 = Debug|Win32 + {F81F2611-F8C5-334F-9ED8-1ABE38A1B106}.Release|Win32.ActiveCfg = Release|Win32 + {F81F2611-F8C5-334F-9ED8-1ABE38A1B106}.Release|Win32.Build.0 = Release|Win32 + {87AECED3-5F20-8E46-9DFD-17A9E01D7E37}.Debug|Win32.ActiveCfg = Debug|Win32 + {87AECED3-5F20-8E46-9DFD-17A9E01D7E37}.Debug|Win32.Build.0 = Debug|Win32 + {87AECED3-5F20-8E46-9DFD-17A9E01D7E37}.Release|Win32.ActiveCfg = Release|Win32 + {87AECED3-5F20-8E46-9DFD-17A9E01D7E37}.Release|Win32.Build.0 = Release|Win32 + {8ABC84ED-C999-DE4A-A929-CD6A79647804}.Debug|Win32.ActiveCfg = Debug|Win32 + {8ABC84ED-C999-DE4A-A929-CD6A79647804}.Debug|Win32.Build.0 = Debug|Win32 + {8ABC84ED-C999-DE4A-A929-CD6A79647804}.Release|Win32.ActiveCfg = Release|Win32 + {8ABC84ED-C999-DE4A-A929-CD6A79647804}.Release|Win32.Build.0 = Release|Win32 + {615744A9-90A8-A643-B2A7-223FEA845A00}.Debug|Win32.ActiveCfg = Debug|Win32 + {615744A9-90A8-A643-B2A7-223FEA845A00}.Debug|Win32.Build.0 = Debug|Win32 + {615744A9-90A8-A643-B2A7-223FEA845A00}.Release|Win32.ActiveCfg = Release|Win32 + {615744A9-90A8-A643-B2A7-223FEA845A00}.Release|Win32.Build.0 = Release|Win32 + {189FC042-4838-4342-9276-9514BB403092}.Debug|Win32.ActiveCfg = Debug|Win32 + {189FC042-4838-4342-9276-9514BB403092}.Debug|Win32.Build.0 = Debug|Win32 + {189FC042-4838-4342-9276-9514BB403092}.Release|Win32.ActiveCfg = Release|Win32 + {189FC042-4838-4342-9276-9514BB403092}.Release|Win32.Build.0 = Release|Win32 + {356BDC7D-2137-DA40-B20E-057366ADDEB7}.Debug|Win32.ActiveCfg = Debug|Win32 + {356BDC7D-2137-DA40-B20E-057366ADDEB7}.Debug|Win32.Build.0 = Debug|Win32 + {356BDC7D-2137-DA40-B20E-057366ADDEB7}.Release|Win32.ActiveCfg = Release|Win32 + {356BDC7D-2137-DA40-B20E-057366ADDEB7}.Release|Win32.Build.0 = Release|Win32 + {7A1312CF-BE73-8849-AFE9-48A028FB6C88}.Debug|Win32.ActiveCfg = Debug|Win32 + {7A1312CF-BE73-8849-AFE9-48A028FB6C88}.Debug|Win32.Build.0 = Debug|Win32 + {7A1312CF-BE73-8849-AFE9-48A028FB6C88}.Release|Win32.ActiveCfg = Release|Win32 + {7A1312CF-BE73-8849-AFE9-48A028FB6C88}.Release|Win32.Build.0 = Release|Win32 + {B4860E68-BEB0-2242-A6F6-A2D6FDCB5FD6}.Debug|Win32.ActiveCfg = Debug|Win32 + {B4860E68-BEB0-2242-A6F6-A2D6FDCB5FD6}.Debug|Win32.Build.0 = Debug|Win32 + {B4860E68-BEB0-2242-A6F6-A2D6FDCB5FD6}.Release|Win32.ActiveCfg = Release|Win32 + {B4860E68-BEB0-2242-A6F6-A2D6FDCB5FD6}.Release|Win32.Build.0 = Release|Win32 + {299C1DAB-6EB1-3D4C-8101-7CDEDE92928D}.Debug|Win32.ActiveCfg = Debug|Win32 + {299C1DAB-6EB1-3D4C-8101-7CDEDE92928D}.Debug|Win32.Build.0 = Debug|Win32 + {299C1DAB-6EB1-3D4C-8101-7CDEDE92928D}.Release|Win32.ActiveCfg = Release|Win32 + {299C1DAB-6EB1-3D4C-8101-7CDEDE92928D}.Release|Win32.Build.0 = Release|Win32 + {187FC8D5-3BD2-394C-811A-8CBA0476B0DC}.Debug|Win32.ActiveCfg = Debug|Win32 + {187FC8D5-3BD2-394C-811A-8CBA0476B0DC}.Debug|Win32.Build.0 = Debug|Win32 + {187FC8D5-3BD2-394C-811A-8CBA0476B0DC}.Release|Win32.ActiveCfg = Release|Win32 + {187FC8D5-3BD2-394C-811A-8CBA0476B0DC}.Release|Win32.Build.0 = Release|Win32 + {0C2EE701-0ABA-5E48-9253-B3A54ECD5107}.Debug|Win32.ActiveCfg = Debug|Win32 + {0C2EE701-0ABA-5E48-9253-B3A54ECD5107}.Debug|Win32.Build.0 = Debug|Win32 + {0C2EE701-0ABA-5E48-9253-B3A54ECD5107}.Release|Win32.ActiveCfg = Release|Win32 + {0C2EE701-0ABA-5E48-9253-B3A54ECD5107}.Release|Win32.Build.0 = Release|Win32 + {170EE42E-8EE9-8E49-B04F-F412A203DF1D}.Debug|Win32.ActiveCfg = Debug|Win32 + {170EE42E-8EE9-8E49-B04F-F412A203DF1D}.Debug|Win32.Build.0 = Debug|Win32 + {170EE42E-8EE9-8E49-B04F-F412A203DF1D}.Release|Win32.ActiveCfg = Release|Win32 + {170EE42E-8EE9-8E49-B04F-F412A203DF1D}.Release|Win32.Build.0 = Release|Win32 + {5B2F2D57-A129-C849-9C06-5B2D35B74E07}.Debug|Win32.ActiveCfg = Debug|Win32 + {5B2F2D57-A129-C849-9C06-5B2D35B74E07}.Debug|Win32.Build.0 = Debug|Win32 + {5B2F2D57-A129-C849-9C06-5B2D35B74E07}.Release|Win32.ActiveCfg = Release|Win32 + {5B2F2D57-A129-C849-9C06-5B2D35B74E07}.Release|Win32.Build.0 = Release|Win32 + {1BC2C664-E0D9-314C-BDDE-6DF601ADE701}.Debug|Win32.ActiveCfg = Debug|Win32 + {1BC2C664-E0D9-314C-BDDE-6DF601ADE701}.Debug|Win32.Build.0 = Debug|Win32 + {1BC2C664-E0D9-314C-BDDE-6DF601ADE701}.Release|Win32.ActiveCfg = Release|Win32 + {1BC2C664-E0D9-314C-BDDE-6DF601ADE701}.Release|Win32.Build.0 = Release|Win32 + {D2F26E24-D261-C54C-A334-F8F0EA68AA51}.Debug|Win32.ActiveCfg = Debug|Win32 + {D2F26E24-D261-C54C-A334-F8F0EA68AA51}.Debug|Win32.Build.0 = Debug|Win32 + {D2F26E24-D261-C54C-A334-F8F0EA68AA51}.Release|Win32.ActiveCfg = Release|Win32 + {D2F26E24-D261-C54C-A334-F8F0EA68AA51}.Release|Win32.Build.0 = Release|Win32 + {E544B08A-C532-884E-A0BE-0F6F7F700067}.Debug|Win32.ActiveCfg = Debug|Win32 + {E544B08A-C532-884E-A0BE-0F6F7F700067}.Debug|Win32.Build.0 = Debug|Win32 + {E544B08A-C532-884E-A0BE-0F6F7F700067}.Release|Win32.ActiveCfg = Release|Win32 + {E544B08A-C532-884E-A0BE-0F6F7F700067}.Release|Win32.Build.0 = Release|Win32 + {84FB19AD-E26F-984D-8F1F-9D92BC817E75}.Debug|Win32.ActiveCfg = Debug|Win32 + {84FB19AD-E26F-984D-8F1F-9D92BC817E75}.Debug|Win32.Build.0 = Debug|Win32 + {84FB19AD-E26F-984D-8F1F-9D92BC817E75}.Release|Win32.ActiveCfg = Release|Win32 + {84FB19AD-E26F-984D-8F1F-9D92BC817E75}.Release|Win32.Build.0 = Release|Win32 + {114BFA65-28CD-704A-A34B-99E354525E81}.Debug|Win32.ActiveCfg = Debug|Win32 + {114BFA65-28CD-704A-A34B-99E354525E81}.Debug|Win32.Build.0 = Debug|Win32 + {114BFA65-28CD-704A-A34B-99E354525E81}.Release|Win32.ActiveCfg = Release|Win32 + {114BFA65-28CD-704A-A34B-99E354525E81}.Release|Win32.Build.0 = Release|Win32 + {7F1E020B-52F6-584E-B841-8B390015238B}.Debug|Win32.ActiveCfg = Debug|Win32 + {7F1E020B-52F6-584E-B841-8B390015238B}.Debug|Win32.Build.0 = Debug|Win32 + {7F1E020B-52F6-584E-B841-8B390015238B}.Release|Win32.ActiveCfg = Release|Win32 + {7F1E020B-52F6-584E-B841-8B390015238B}.Release|Win32.Build.0 = Release|Win32 + {DFD06E4E-B317-B745-8FB4-7063244DCA3E}.Debug|Win32.ActiveCfg = Debug|Win32 + {DFD06E4E-B317-B745-8FB4-7063244DCA3E}.Debug|Win32.Build.0 = Debug|Win32 + {DFD06E4E-B317-B745-8FB4-7063244DCA3E}.Release|Win32.ActiveCfg = Release|Win32 + {DFD06E4E-B317-B745-8FB4-7063244DCA3E}.Release|Win32.Build.0 = Release|Win32 + {C72B0123-A5BD-FD45-90F1-1C29D45B5C92}.Debug|Win32.ActiveCfg = Debug|Win32 + {C72B0123-A5BD-FD45-90F1-1C29D45B5C92}.Debug|Win32.Build.0 = Debug|Win32 + {C72B0123-A5BD-FD45-90F1-1C29D45B5C92}.Release|Win32.ActiveCfg = Release|Win32 + {C72B0123-A5BD-FD45-90F1-1C29D45B5C92}.Release|Win32.Build.0 = Release|Win32 + {E8FC2B01-864C-1E4A-8E32-7103EF479048}.Debug|Win32.ActiveCfg = Debug|Win32 + {E8FC2B01-864C-1E4A-8E32-7103EF479048}.Debug|Win32.Build.0 = Debug|Win32 + {E8FC2B01-864C-1E4A-8E32-7103EF479048}.Release|Win32.ActiveCfg = Release|Win32 + {E8FC2B01-864C-1E4A-8E32-7103EF479048}.Release|Win32.Build.0 = Release|Win32 + {7BAE36E7-E655-B24D-B110-D2567316D6EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {7BAE36E7-E655-B24D-B110-D2567316D6EA}.Debug|Win32.Build.0 = Debug|Win32 + {7BAE36E7-E655-B24D-B110-D2567316D6EA}.Release|Win32.ActiveCfg = Release|Win32 + {7BAE36E7-E655-B24D-B110-D2567316D6EA}.Release|Win32.Build.0 = Release|Win32 + {E3D41488-DCA1-A34B-87D3-E9820E500DA9}.Debug|Win32.ActiveCfg = Debug|Win32 + {E3D41488-DCA1-A34B-87D3-E9820E500DA9}.Debug|Win32.Build.0 = Debug|Win32 + {E3D41488-DCA1-A34B-87D3-E9820E500DA9}.Release|Win32.ActiveCfg = Release|Win32 + {E3D41488-DCA1-A34B-87D3-E9820E500DA9}.Release|Win32.Build.0 = Release|Win32 + {15323EAE-0CB5-4245-8324-A4BF2EA72D6B}.Debug|Win32.ActiveCfg = Debug|Win32 + {15323EAE-0CB5-4245-8324-A4BF2EA72D6B}.Debug|Win32.Build.0 = Debug|Win32 + {15323EAE-0CB5-4245-8324-A4BF2EA72D6B}.Release|Win32.ActiveCfg = Release|Win32 + {15323EAE-0CB5-4245-8324-A4BF2EA72D6B}.Release|Win32.Build.0 = Release|Win32 + {47B50335-DB5D-B948-B80C-E361ED5793F5}.Debug|Win32.ActiveCfg = Debug|Win32 + {47B50335-DB5D-B948-B80C-E361ED5793F5}.Debug|Win32.Build.0 = Debug|Win32 + {47B50335-DB5D-B948-B80C-E361ED5793F5}.Release|Win32.ActiveCfg = Release|Win32 + {47B50335-DB5D-B948-B80C-E361ED5793F5}.Release|Win32.Build.0 = Release|Win32 + {3186A875-B682-2D4D-97EC-CCF61AEEEAC7}.Debug|Win32.ActiveCfg = Debug|Win32 + {3186A875-B682-2D4D-97EC-CCF61AEEEAC7}.Debug|Win32.Build.0 = Debug|Win32 + {3186A875-B682-2D4D-97EC-CCF61AEEEAC7}.Release|Win32.ActiveCfg = Release|Win32 + {3186A875-B682-2D4D-97EC-CCF61AEEEAC7}.Release|Win32.Build.0 = Release|Win32 + {E2DDA701-A62F-9542-8BA9-296CBF281945}.Debug|Win32.ActiveCfg = Debug|Win32 + {E2DDA701-A62F-9542-8BA9-296CBF281945}.Debug|Win32.Build.0 = Debug|Win32 + {E2DDA701-A62F-9542-8BA9-296CBF281945}.Release|Win32.ActiveCfg = Release|Win32 + {E2DDA701-A62F-9542-8BA9-296CBF281945}.Release|Win32.Build.0 = Release|Win32 + {B7DA3C1F-B34B-A14A-BF10-BF628BA69C1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {B7DA3C1F-B34B-A14A-BF10-BF628BA69C1B}.Debug|Win32.Build.0 = Debug|Win32 + {B7DA3C1F-B34B-A14A-BF10-BF628BA69C1B}.Release|Win32.ActiveCfg = Release|Win32 + {B7DA3C1F-B34B-A14A-BF10-BF628BA69C1B}.Release|Win32.Build.0 = Release|Win32 + {461B95F1-FB8D-9B45-8FF9-8E0A9F56CA1B}.Debug|Win32.ActiveCfg = Debug|Win32 + {461B95F1-FB8D-9B45-8FF9-8E0A9F56CA1B}.Debug|Win32.Build.0 = Debug|Win32 + {461B95F1-FB8D-9B45-8FF9-8E0A9F56CA1B}.Release|Win32.ActiveCfg = Release|Win32 + {461B95F1-FB8D-9B45-8FF9-8E0A9F56CA1B}.Release|Win32.Build.0 = Release|Win32 + {E4477807-2D9E-CC43-9EF3-AEB1ADEDF79C}.Debug|Win32.ActiveCfg = Debug|Win32 + {E4477807-2D9E-CC43-9EF3-AEB1ADEDF79C}.Debug|Win32.Build.0 = Debug|Win32 + {E4477807-2D9E-CC43-9EF3-AEB1ADEDF79C}.Release|Win32.ActiveCfg = Release|Win32 + {E4477807-2D9E-CC43-9EF3-AEB1ADEDF79C}.Release|Win32.Build.0 = Release|Win32 + {A916A09F-93F3-0A4F-9A95-9938BD96CF05}.Debug|Win32.ActiveCfg = Debug|Win32 + {A916A09F-93F3-0A4F-9A95-9938BD96CF05}.Debug|Win32.Build.0 = Debug|Win32 + {A916A09F-93F3-0A4F-9A95-9938BD96CF05}.Release|Win32.ActiveCfg = Release|Win32 + {A916A09F-93F3-0A4F-9A95-9938BD96CF05}.Release|Win32.Build.0 = Release|Win32 + {0DC21429-28DC-194C-AFFB-8BAB95022180}.Debug|Win32.ActiveCfg = Debug|Win32 + {0DC21429-28DC-194C-AFFB-8BAB95022180}.Debug|Win32.Build.0 = Debug|Win32 + {0DC21429-28DC-194C-AFFB-8BAB95022180}.Release|Win32.ActiveCfg = Release|Win32 + {0DC21429-28DC-194C-AFFB-8BAB95022180}.Release|Win32.Build.0 = Release|Win32 + {F7EAB41D-92CB-6B49-8131-48A61120F3C4}.Debug|Win32.ActiveCfg = Debug|Win32 + {F7EAB41D-92CB-6B49-8131-48A61120F3C4}.Debug|Win32.Build.0 = Debug|Win32 + {F7EAB41D-92CB-6B49-8131-48A61120F3C4}.Release|Win32.ActiveCfg = Release|Win32 + {F7EAB41D-92CB-6B49-8131-48A61120F3C4}.Release|Win32.Build.0 = Release|Win32 + {4CF625C3-2F83-7F4F-8ADD-15BEEFCD24E7}.Debug|Win32.ActiveCfg = Debug|Win32 + {4CF625C3-2F83-7F4F-8ADD-15BEEFCD24E7}.Debug|Win32.Build.0 = Debug|Win32 + {4CF625C3-2F83-7F4F-8ADD-15BEEFCD24E7}.Release|Win32.ActiveCfg = Release|Win32 + {4CF625C3-2F83-7F4F-8ADD-15BEEFCD24E7}.Release|Win32.Build.0 = Release|Win32 + {07A396E5-1642-6148-82DA-2FF06644E542}.Debug|Win32.ActiveCfg = Debug|Win32 + {07A396E5-1642-6148-82DA-2FF06644E542}.Debug|Win32.Build.0 = Debug|Win32 + {07A396E5-1642-6148-82DA-2FF06644E542}.Release|Win32.ActiveCfg = Release|Win32 + {07A396E5-1642-6148-82DA-2FF06644E542}.Release|Win32.Build.0 = Release|Win32 + {98C363EE-E394-564A-8F5D-8649BE4EA3A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {98C363EE-E394-564A-8F5D-8649BE4EA3A5}.Debug|Win32.Build.0 = Debug|Win32 + {98C363EE-E394-564A-8F5D-8649BE4EA3A5}.Release|Win32.ActiveCfg = Release|Win32 + {98C363EE-E394-564A-8F5D-8649BE4EA3A5}.Release|Win32.Build.0 = Release|Win32 + {51ADEB0F-09DD-5242-87FC-6DD5C4A098E3}.Debug|Win32.ActiveCfg = Debug|Win32 + {51ADEB0F-09DD-5242-87FC-6DD5C4A098E3}.Debug|Win32.Build.0 = Debug|Win32 + {51ADEB0F-09DD-5242-87FC-6DD5C4A098E3}.Release|Win32.ActiveCfg = Release|Win32 + {51ADEB0F-09DD-5242-87FC-6DD5C4A098E3}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/premake/VisualC/VS2012/SDL2/SDL2.vcxproj b/premake/VisualC/VS2012/SDL2/SDL2.vcxproj new file mode 100755 index 0000000000..c7dd06f093 --- /dev/null +++ b/premake/VisualC/VS2012/SDL2/SDL2.vcxproj @@ -0,0 +1,432 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {7F1E020B-52F6-584E-B841-8B390015238B} + SDL2 + Win32Proj + + + + DynamicLibrary + true + MultiByte + v110 + + + DynamicLibrary + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + SDL2 + .dll + false + true + + + Win32\Release\ + obj\Release\ + SDL2 + .dll + false + false + + + + Disabled + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)SDL2.pdb + + + USING_PREMAKE_CONFIG_H;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + + + Windows + true + imm32.lib;oleaut32.lib;winmm.lib;version.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)SDL2.dll + $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories) + Win32\Debug\SDL2.lib + + + + + MaxSpeed + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + + + USING_PREMAKE_CONFIG_H;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + ..;..\..\..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories) + + + Windows + false + true + true + imm32.lib;oleaut32.lib;winmm.lib;version.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;uuid.lib;odbc32.lib;odbccp32.lib;OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)SDL2.dll + $(DXSDK_DIR)\Lib\x86;%(AdditionalLibraryDirectories) + Win32\Release\SDL2.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/VisualC/VS2012/SDL2/SDL2.vcxproj.filters b/premake/VisualC/VS2012/SDL2/SDL2.vcxproj.filters new file mode 100755 index 0000000000..32b1bdd2ff --- /dev/null +++ b/premake/VisualC/VS2012/SDL2/SDL2.vcxproj.filters @@ -0,0 +1,708 @@ + + + + + {ADEFAB0B-D006-ED47-8FD7-779EFC05AFB2} + + + {A1283406-E167-EA43-9A12-C9643EF0AD90} + + + {DCFE7352-8A02-AD43-BCAA-BFA4C48BA1D8} + + + {00074231-3E71-9540-BBC3-A658F83A8C5B} + + + {60C70DBB-2483-EB4D-B3F1-EDC2ABE33218} + + + {E86C7CE6-D84F-0246-8305-CAC9DC111CAC} + + + {03FDB100-C243-F649-8F61-04B9266FC837} + + + {A2439046-92D5-6C41-9576-D853A0B88EE3} + + + {3FF1D4EB-FFD6-1245-AFC5-34BAB778C0F0} + + + {153D1C69-37A5-C545-AD9D-78D09A346B1C} + + + {14A04DE3-1267-C54F-8365-E562E2E86DD9} + + + {72FBA0ED-9CB3-9C48-A84C-477143562BA5} + + + {3736406C-1551-DC46-9B99-AF49D75A6784} + + + {583C21C4-F3F3-C944-9B0B-24E4A9723FAB} + + + {79FB2D01-A2D5-0F4D-BDC6-C9C18DB07984} + + + {7AA190FE-2F3B-064B-B036-0D1FF60EF305} + + + {2C6F3941-9CD8-DE4E-9E25-74B5BEA589ED} + + + {924161C5-B81D-4242-AE02-AE1943EC47FE} + + + {4BD8963D-3790-E342-B9CA-E267E826DD8E} + + + {37D45504-44FB-064F-948D-0C4316D8C723} + + + {EB7B98EE-8FA2-A045-A368-76A0E7B3F8F5} + + + {F960D69D-08A1-9B47-955D-47CC3829F33C} + + + {BCA2F63F-C00E-2A40-BE35-3CE306F43BFB} + + + {6A0ECA48-36B8-C64F-B49C-4BAACBD9B8DA} + + + {0E805449-4B85-0444-A84E-C695B58CC05A} + + + {204FE516-51EF-8543-92E7-937448E29811} + + + {F7EE16F3-C152-9B4C-8EAD-60C0D26EC6F4} + + + {A2CE2FA2-A19D-4043-9357-11A1B6C4F52C} + + + {0CC475AD-60C6-094A-AC63-3EAD99353006} + + + {AC6445E9-E301-F04A-9654-E865A433336B} + + + {31A54CC4-B967-054E-AB77-4D3E84BB9F65} + + + {00BC1056-E15A-8D41-9864-D6023213DB30} + + + {6242F67B-F1A5-BD4F-A2FF-A8339675C1E4} + + + {F56E2DCC-68AE-9244-A6B9-ABB6E802360E} + + + {96C5297F-FF4C-0548-A942-2F037DAE6F02} + + + {3BF27E48-AFAF-2542-B591-6BAD55FF360F} + + + {37119F6F-20C4-A547-A574-E4DDF7BF8E80} + + + + + src + + + src + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio\disk + + + src\audio\dummy + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\haptic + + + src\haptic + + + src\joystick + + + src\joystick + + + src\joystick + + + src\render + + + src\render + + + src\render + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\thread + + + src\thread + + + src\timer + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video\dummy + + + src\video\dummy + + + src\video\dummy + + + src\thread\generic + + + src\audio\winmm + + + src\core\windows + + + src\libm + + + src\libm + + + src\thread\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\audio\directsound + + + src\audio\directsound + + + src\joystick\windows + + + src\render\opengl + + + src\render\opengl + + + + + src + + + src + + + src + + + src + + + src + + + src\atomic + + + src\atomic + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio + + + src\audio\disk + + + src\audio\dummy + + + src\cpuinfo + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\events + + + src\file + + + src\haptic + + + src\joystick + + + src\joystick + + + src\power + + + src\render + + + src\render + + + src\render + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\render\software + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\stdlib + + + src\thread + + + src\timer + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video + + + src\video\dummy + + + src\video\dummy + + + src\video\dummy + + + src\thread\generic + + + src\audio\winmm + + + src\core\windows + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\libm + + + src\loadso\windows + + + src\power\windows + + + src\thread\windows + + + src\thread\windows + + + src\thread\windows + + + src\thread\windows + + + src\timer\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\video\windows + + + src\filesystem\windows + + + src\audio\directsound + + + src\audio\xaudio2 + + + src\render\direct3d + + + src\haptic\windows + + + src\joystick\windows + + + src\joystick\windows + + + src\render\opengl + + + src\render\opengl + + + diff --git a/premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj b/premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj new file mode 100755 index 0000000000..b4a2aab10d --- /dev/null +++ b/premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj @@ -0,0 +1,117 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + SDL2main + Win32Proj + + + + StaticLibrary + true + MultiByte + v110 + + + StaticLibrary + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + SDL2main + .lib + + + Win32\Release\ + obj\Release\ + SDL2main + .lib + + + + Disabled + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)SDL2main.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2main.lib + + + Windows + true + + + + + MaxSpeed + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2main.lib + + + Windows + false + true + true + + + + + + + + + + diff --git a/premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj.filters b/premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj.filters new file mode 100755 index 0000000000..8ec9712503 --- /dev/null +++ b/premake/VisualC/VS2012/SDL2main/SDL2main.vcxproj.filters @@ -0,0 +1,19 @@ + + + + + {20668DBD-C997-D94C-82BC-FFA6F1FAC562} + + + {720C56A4-94A2-2D40-9B68-6BEA7F78FA66} + + + {ED0BAA99-5AE2-534E-BFF9-D9D488FF2771} + + + + + src\main\windows + + + diff --git a/premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj b/premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj new file mode 100755 index 0000000000..e6ef535a66 --- /dev/null +++ b/premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj @@ -0,0 +1,159 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + SDL2test + Win32Proj + + + + StaticLibrary + true + MultiByte + v110 + + + StaticLibrary + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + SDL2test + .lib + + + Win32\Release\ + obj\Release\ + SDL2test + .lib + + + + Disabled + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)SDL2test.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2test.lib + + + Windows + true + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..;..\..\..\..\include;%(AdditionalIncludeDirectories) + + + $(OutDir)SDL2test.lib + + + Windows + false + true + true + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj.filters b/premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj.filters new file mode 100755 index 0000000000..223778b5d2 --- /dev/null +++ b/premake/VisualC/VS2012/SDL2test/SDL2test.vcxproj.filters @@ -0,0 +1,58 @@ + + + + + {225F6BF5-1223-DE4D-AE58-119A06816C3F} + + + {50B2248A-623E-474D-B912-19B250D06132} + + + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + src\test + + + diff --git a/premake/VisualC/VS2012/SDL_config_premake.h b/premake/VisualC/VS2012/SDL_config_premake.h new file mode 100755 index 0000000000..be158a4f00 --- /dev/null +++ b/premake/VisualC/VS2012/SDL_config_premake.h @@ -0,0 +1,202 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_TIMER_WINDOWS +#define SDL_TIMER_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_WINMM +#define SDL_AUDIO_DRIVER_WINMM 1 +#endif +#ifndef SDL_FILESYSTEM_WINDOWS +#define SDL_FILESYSTEM_WINDOWS 1 +#endif +#ifndef SDL_POWER_WINDOWS +#define SDL_POWER_WINDOWS 1 +#endif +#ifndef SDL_LOADSO_WINDOWS +#define SDL_LOADSO_WINDOWS 1 +#endif +#ifndef SDL_VIDEO_DRIVER_WINDOWS +#define SDL_VIDEO_DRIVER_WINDOWS 1 +#endif +#ifndef SDL_THREAD_WINDOWS +#define SDL_THREAD_WINDOWS 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DSOUND +#define SDL_AUDIO_DRIVER_DSOUND 1 +#endif +#ifndef SDL_JOYSTICK_DINPUT +#define SDL_JOYSTICK_DINPUT 1 +#endif +#ifndef SDL_VIDEO_RENDER_D3D +#define SDL_VIDEO_RENDER_D3D 1 +#endif +#ifndef SDL_HAPTIC_DINPUT +#define SDL_HAPTIC_DINPUT 1 +#endif +#ifndef SDL_AUDIO_DRIVER_XAUDIO2 +#define SDL_AUDIO_DRIVER_XAUDIO2 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_WGL +#define SDL_VIDEO_OPENGL_WGL 1 +#endif + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj b/premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj new file mode 100755 index 0000000000..ca918da803 --- /dev/null +++ b/premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0C2EE701-0ABA-5E48-9253-B3A54ECD5107} + checkkeys + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + checkkeys + .exe + true + + + Win32\Release\ + obj\Release\ + checkkeys + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)checkkeys.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)checkkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)checkkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj.filters b/premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj.filters new file mode 100755 index 0000000000..0c73111f1a --- /dev/null +++ b/premake/VisualC/VS2012/tests/checkkeys/checkkeys.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {DDC55830-A554-F24D-83EF-9B5E4E3A0B37} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj b/premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj new file mode 100755 index 0000000000..cd0070ecb3 --- /dev/null +++ b/premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {B4860E68-BEB0-2242-A6F6-A2D6FDCB5FD6} + loopwave + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + loopwave + .exe + true + + + Win32\Release\ + obj\Release\ + loopwave + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)loopwave.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)loopwave.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Debug\sample.wav" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)loopwave.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Release\sample.wav" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj.filters b/premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj.filters new file mode 100755 index 0000000000..f96f16d7aa --- /dev/null +++ b/premake/VisualC/VS2012/tests/loopwave/loopwave.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {A020565A-7C60-7A48-9BDD-9967A2C31012} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj b/premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj new file mode 100755 index 0000000000..d152e00f7f --- /dev/null +++ b/premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {D2F26E24-D261-C54C-A334-F8F0EA68AA51} + testatomic + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testatomic + .exe + true + + + Win32\Release\ + obj\Release\ + testatomic + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testatomic.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testatomic.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testatomic.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj.filters b/premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj.filters new file mode 100755 index 0000000000..27dc079a9e --- /dev/null +++ b/premake/VisualC/VS2012/tests/testatomic/testatomic.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {4A3ED0B0-F175-F048-8051-524A5DB3BC0D} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj b/premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj new file mode 100755 index 0000000000..bbfa3471b2 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {7A1312CF-BE73-8849-AFE9-48A028FB6C88} + testaudioinfo + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testaudioinfo + .exe + true + + + Win32\Release\ + obj\Release\ + testaudioinfo + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testaudioinfo.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testaudioinfo.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testaudioinfo.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj.filters b/premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj.filters new file mode 100755 index 0000000000..94996b3893 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testaudioinfo/testaudioinfo.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {CF8F9A91-CC78-F041-B59E-7C77C527C6DD} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj b/premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj new file mode 100755 index 0000000000..2418c726a6 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj @@ -0,0 +1,171 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {F7EAB41D-92CB-6B49-8131-48A61120F3C4} + testautomation + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testautomation + .exe + true + + + Win32\Release\ + obj\Release\ + testautomation + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testautomation.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testautomation.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testautomation.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj.filters b/premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj.filters new file mode 100755 index 0000000000..e7507d9f31 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testautomation/testautomation.vcxproj.filters @@ -0,0 +1,69 @@ + + + + + {F6971E40-42B2-5345-BF72-1CC2592B74DF} + + + + + test + + + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj b/premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj new file mode 100755 index 0000000000..5a30dfa1e0 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {15323EAE-0CB5-4245-8324-A4BF2EA72D6B} + testchessboard + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testchessboard + .exe + true + + + Win32\Release\ + obj\Release\ + testchessboard + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testchessboard.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testchessboard.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testchessboard.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj.filters b/premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj.filters new file mode 100755 index 0000000000..033a62e152 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testchessboard/testchessboard.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {6DF84982-7F01-BE4C-8B7A-77B30F0B6FA7} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj b/premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj new file mode 100755 index 0000000000..ff096816b9 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E4477807-2D9E-CC43-9EF3-AEB1ADEDF79C} + testdraw2 + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testdraw2 + .exe + true + + + Win32\Release\ + obj\Release\ + testdraw2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testdraw2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testdraw2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testdraw2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj.filters b/premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj.filters new file mode 100755 index 0000000000..77aff40bd3 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testdraw2/testdraw2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {27B9E572-B60D-5F4E-BD5B-B637509EFC33} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testerror/testerror.vcxproj b/premake/VisualC/VS2012/tests/testerror/testerror.vcxproj new file mode 100755 index 0000000000..fd949f71bf --- /dev/null +++ b/premake/VisualC/VS2012/tests/testerror/testerror.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {DFD06E4E-B317-B745-8FB4-7063244DCA3E} + testerror + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testerror + .exe + true + + + Win32\Release\ + obj\Release\ + testerror + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testerror.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testerror.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testerror.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testerror/testerror.vcxproj.filters b/premake/VisualC/VS2012/tests/testerror/testerror.vcxproj.filters new file mode 100755 index 0000000000..732cfa0c50 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testerror/testerror.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {120F793B-1E83-CE45-983C-A8AB8F664742} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testfile/testfile.vcxproj b/premake/VisualC/VS2012/tests/testfile/testfile.vcxproj new file mode 100755 index 0000000000..74500a4ce3 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testfile/testfile.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {07A396E5-1642-6148-82DA-2FF06644E542} + testfile + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testfile + .exe + true + + + Win32\Release\ + obj\Release\ + testfile + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testfile.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testfile.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testfile.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testfile/testfile.vcxproj.filters b/premake/VisualC/VS2012/tests/testfile/testfile.vcxproj.filters new file mode 100755 index 0000000000..ed6f911c38 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testfile/testfile.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {82BC5087-1504-A84A-889B-B4DE722A521E} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj b/premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj new file mode 100755 index 0000000000..9894aa4e6a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {259763DF-AC86-B445-A465-064452171EB6} + testfilesystem + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testfilesystem + .exe + true + + + Win32\Release\ + obj\Release\ + testfilesystem + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testfilesystem.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testfilesystem.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testfilesystem.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj.filters b/premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj.filters new file mode 100755 index 0000000000..363fd16872 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testfilesystem/testfilesystem.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {33CB845D-7186-0246-98CA-B981CF4C67E2} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj b/premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj new file mode 100755 index 0000000000..08dc0d9067 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {24AB4CEE-B82E-9C42-8ED2-9F3F7F3006AE} + testgamecontroller + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgamecontroller + .exe + true + + + Win32\Release\ + obj\Release\ + testgamecontroller + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgamecontroller.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testgamecontroller.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testgamecontroller.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj.filters b/premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj.filters new file mode 100755 index 0000000000..a50e3df701 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgamecontroller/testgamecontroller.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {0C36D1A5-969C-A340-85C5-368C8B115CB5} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj b/premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj new file mode 100755 index 0000000000..30a9b0e925 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {356BDC7D-2137-DA40-B20E-057366ADDEB7} + testgesture + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgesture + .exe + true + + + Win32\Release\ + obj\Release\ + testgesture + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgesture.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testgesture.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testgesture.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj.filters b/premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj.filters new file mode 100755 index 0000000000..db568e7bf5 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgesture/testgesture.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {16E9BA0C-AA3E-694D-A7CD-B6A9827E1C17} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj b/premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj new file mode 100755 index 0000000000..dc75c2ef04 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {114BFA65-28CD-704A-A34B-99E354525E81} + testgl2 + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgl2 + .exe + true + + + Win32\Release\ + obj\Release\ + testgl2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgl2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testgl2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testgl2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj.filters b/premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj.filters new file mode 100755 index 0000000000..bd75b0661d --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgl2/testgl2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {3D8A3797-C7C6-784C-AD6D-7C39C0E4CA74} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testgles/testgles.vcxproj b/premake/VisualC/VS2012/tests/testgles/testgles.vcxproj new file mode 100755 index 0000000000..5e270f3ab3 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgles/testgles.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {1BC2C664-E0D9-314C-BDDE-6DF601ADE701} + testgles + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testgles + .exe + true + + + Win32\Release\ + obj\Release\ + testgles + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testgles.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testgles.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testgles.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testgles/testgles.vcxproj.filters b/premake/VisualC/VS2012/tests/testgles/testgles.vcxproj.filters new file mode 100755 index 0000000000..b2daed5d43 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testgles/testgles.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {058C37BE-CF61-1046-947A-FE43F37E9899} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj b/premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj new file mode 100755 index 0000000000..a0158e39af --- /dev/null +++ b/premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {84FB19AD-E26F-984D-8F1F-9D92BC817E75} + testhaptic + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testhaptic + .exe + true + + + Win32\Release\ + obj\Release\ + testhaptic + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testhaptic.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testhaptic.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testhaptic.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj.filters b/premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj.filters new file mode 100755 index 0000000000..057c6ad665 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testhaptic/testhaptic.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {3EB2A30F-A974-B143-9921-BFB46BFC5AA7} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj b/premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj new file mode 100755 index 0000000000..587755c471 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {4CF625C3-2F83-7F4F-8ADD-15BEEFCD24E7} + testiconv + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testiconv + .exe + true + + + Win32\Release\ + obj\Release\ + testiconv + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testiconv.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testiconv.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\utf8.txt" ".\Win32\Debug\utf8.txt" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testiconv.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\utf8.txt" ".\Win32\Release\utf8.txt" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj.filters b/premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj.filters new file mode 100755 index 0000000000..e1e447097f --- /dev/null +++ b/premake/VisualC/VS2012/tests/testiconv/testiconv.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {66870B1E-295C-1F42-BA63-8DE33CFAF7BF} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testime/testime.vcxproj b/premake/VisualC/VS2012/tests/testime/testime.vcxproj new file mode 100755 index 0000000000..bb99427647 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testime/testime.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {98C363EE-E394-564A-8F5D-8649BE4EA3A5} + testime + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testime + .exe + true + + + Win32\Release\ + obj\Release\ + testime + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testime.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testime.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testime.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testime/testime.vcxproj.filters b/premake/VisualC/VS2012/tests/testime/testime.vcxproj.filters new file mode 100755 index 0000000000..263f006be3 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testime/testime.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {D3A0B367-C2EE-F44D-8824-309CB7E1084D} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj b/premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj new file mode 100755 index 0000000000..f6260c3764 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {867A2823-E792-3749-A47C-1B5F118FD1F9} + testjoystick + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testjoystick + .exe + true + + + Win32\Release\ + obj\Release\ + testjoystick + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testjoystick.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testjoystick.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testjoystick.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj.filters b/premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj.filters new file mode 100755 index 0000000000..3f1c12548a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testjoystick/testjoystick.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {CD715A5E-DB2F-284E-81E8-8BD37B7EF33A} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj b/premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj new file mode 100755 index 0000000000..99afad0ae2 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {A22567A8-5E3D-4046-A9EE-32148A1996DE} + testkeys + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testkeys + .exe + true + + + Win32\Release\ + obj\Release\ + testkeys + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testkeys.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testkeys.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj.filters b/premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj.filters new file mode 100755 index 0000000000..4676ce579a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testkeys/testkeys.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {F26EFCDD-F088-4548-A10A-A1705E0B1664} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj b/premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj new file mode 100755 index 0000000000..bee9743313 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {F81F2611-F8C5-334F-9ED8-1ABE38A1B106} + testloadso + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testloadso + .exe + true + + + Win32\Release\ + obj\Release\ + testloadso + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testloadso.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testloadso.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testloadso.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj.filters b/premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj.filters new file mode 100755 index 0000000000..b7fac772ce --- /dev/null +++ b/premake/VisualC/VS2012/tests/testloadso/testloadso.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {02AC69A3-6E6E-0C47-958F-A78F9350334D} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testlock/testlock.vcxproj b/premake/VisualC/VS2012/tests/testlock/testlock.vcxproj new file mode 100755 index 0000000000..6b4a5d3b85 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testlock/testlock.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E2DDA701-A62F-9542-8BA9-296CBF281945} + testlock + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testlock + .exe + true + + + Win32\Release\ + obj\Release\ + testlock + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testlock.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testlock.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testlock.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testlock/testlock.vcxproj.filters b/premake/VisualC/VS2012/tests/testlock/testlock.vcxproj.filters new file mode 100755 index 0000000000..4dad063d4a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testlock/testlock.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {55B1451D-618D-CE49-86E7-BDF5665C1530} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj b/premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj new file mode 100755 index 0000000000..f6957d9d68 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {461B95F1-FB8D-9B45-8FF9-8E0A9F56CA1B} + testmessage + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testmessage + .exe + true + + + Win32\Release\ + obj\Release\ + testmessage + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testmessage.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testmessage.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testmessage.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj.filters b/premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj.filters new file mode 100755 index 0000000000..424191e2ee --- /dev/null +++ b/premake/VisualC/VS2012/tests/testmessage/testmessage.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {767F50ED-D92E-0344-B5C3-8D2A543AA4BF} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj b/premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj new file mode 100755 index 0000000000..e00671f3bb --- /dev/null +++ b/premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {B7DA3C1F-B34B-A14A-BF10-BF628BA69C1B} + testmultiaudio + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testmultiaudio + .exe + true + + + Win32\Release\ + obj\Release\ + testmultiaudio + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testmultiaudio.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testmultiaudio.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Debug\sample.wav" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testmultiaudio.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Release\sample.wav" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj.filters b/premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj.filters new file mode 100755 index 0000000000..54c6daef90 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testmultiaudio/testmultiaudio.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {B96B8EBD-B8BB-D44A-83CD-350E98FF464A} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testnative/testnative.vcxproj b/premake/VisualC/VS2012/tests/testnative/testnative.vcxproj new file mode 100755 index 0000000000..c2bd439e4a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testnative/testnative.vcxproj @@ -0,0 +1,136 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {BC693F25-4940-BB43-8529-E27D65275975} + testnative + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testnative + .exe + true + + + Win32\Release\ + obj\Release\ + testnative + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testnative.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testnative.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testnative.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testnative/testnative.vcxproj.filters b/premake/VisualC/VS2012/tests/testnative/testnative.vcxproj.filters new file mode 100755 index 0000000000..c6908aab4a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testnative/testnative.vcxproj.filters @@ -0,0 +1,21 @@ + + + + + {FA1E5497-4A56-EE4B-B13A-3A8A6B3DD1AA} + + + + + test + + + + + test + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj b/premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj new file mode 100755 index 0000000000..22e15acf21 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {8ABC84ED-C999-DE4A-A929-CD6A79647804} + testoverlay2 + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testoverlay2 + .exe + true + + + Win32\Release\ + obj\Release\ + testoverlay2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testoverlay2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testoverlay2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Debug\moose.dat" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testoverlay2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Release\moose.dat" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj.filters b/premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj.filters new file mode 100755 index 0000000000..522989593b --- /dev/null +++ b/premake/VisualC/VS2012/tests/testoverlay2/testoverlay2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {BBDD5904-0E37-5943-A257-C0A7AC077FED} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj b/premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj new file mode 100755 index 0000000000..15403ac007 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {189FC042-4838-4342-9276-9514BB403092} + testplatform + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testplatform + .exe + true + + + Win32\Release\ + obj\Release\ + testplatform + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testplatform.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testplatform.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testplatform.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj.filters b/premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj.filters new file mode 100755 index 0000000000..00b5d5a24f --- /dev/null +++ b/premake/VisualC/VS2012/tests/testplatform/testplatform.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C0D0B000-9F95-7A4C-B713-8504FF3ED72E} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testpower/testpower.vcxproj b/premake/VisualC/VS2012/tests/testpower/testpower.vcxproj new file mode 100755 index 0000000000..e53fe430eb --- /dev/null +++ b/premake/VisualC/VS2012/tests/testpower/testpower.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E3D41488-DCA1-A34B-87D3-E9820E500DA9} + testpower + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testpower + .exe + true + + + Win32\Release\ + obj\Release\ + testpower + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testpower.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testpower.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testpower.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testpower/testpower.vcxproj.filters b/premake/VisualC/VS2012/tests/testpower/testpower.vcxproj.filters new file mode 100755 index 0000000000..a23bef4337 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testpower/testpower.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {EBE8E727-7C40-1342-A7B2-3B9B744F579D} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj b/premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj new file mode 100755 index 0000000000..8fa7fbb045 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {3186A875-B682-2D4D-97EC-CCF61AEEEAC7} + testrelative + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrelative + .exe + true + + + Win32\Release\ + obj\Release\ + testrelative + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrelative.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrelative.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrelative.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj.filters b/premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj.filters new file mode 100755 index 0000000000..2b369b565b --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrelative/testrelative.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {311BAE6A-3DEC-BD41-BE15-111121D1D3DA} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj b/premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj new file mode 100755 index 0000000000..a03b3a8abc --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {7BAE36E7-E655-B24D-B110-D2567316D6EA} + testrendercopyex + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrendercopyex + .exe + true + + + Win32\Release\ + obj\Release\ + testrendercopyex + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrendercopyex.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrendercopyex.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Debug\sample.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrendercopyex.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Release\sample.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj.filters b/premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj.filters new file mode 100755 index 0000000000..6a75291380 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrendercopyex/testrendercopyex.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {F854DD7A-2868-7F45-A731-E60210FB8320} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj b/premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj new file mode 100755 index 0000000000..b0cdbc0563 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {98CD7D27-4B74-4942-81DC-C82474A2E822} + testrendertarget + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrendertarget + .exe + true + + + Win32\Release\ + obj\Release\ + testrendertarget + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrendertarget.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrendertarget.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Debug\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrendertarget.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Release\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj.filters b/premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj.filters new file mode 100755 index 0000000000..bb3789015e --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrendertarget/testrendertarget.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C93D5E8A-7F18-0A4B-9B1F-4FA9BE2BEA4A} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testresample/testresample.vcxproj b/premake/VisualC/VS2012/tests/testresample/testresample.vcxproj new file mode 100755 index 0000000000..42b2c179f5 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testresample/testresample.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {E8FC2B01-864C-1E4A-8E32-7103EF479048} + testresample + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testresample + .exe + true + + + Win32\Release\ + obj\Release\ + testresample + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testresample.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testresample.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Debug\sample.wav" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testresample.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.wav" ".\Win32\Release\sample.wav" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testresample/testresample.vcxproj.filters b/premake/VisualC/VS2012/tests/testresample/testresample.vcxproj.filters new file mode 100755 index 0000000000..e5ac622352 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testresample/testresample.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {2EB4B18A-3CA7-DF4A-B634-EAC5842AD3DA} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj b/premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj new file mode 100755 index 0000000000..f2ffaba482 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {C72B0123-A5BD-FD45-90F1-1C29D45B5C92} + testrumble + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testrumble + .exe + true + + + Win32\Release\ + obj\Release\ + testrumble + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testrumble.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testrumble.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testrumble.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj.filters b/premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj.filters new file mode 100755 index 0000000000..3d1ca80181 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testrumble/testrumble.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {6FC911A2-4E27-F443-97BD-634C2615F7A1} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testscale/testscale.vcxproj b/premake/VisualC/VS2012/tests/testscale/testscale.vcxproj new file mode 100755 index 0000000000..f870175029 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testscale/testscale.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {8BBBF780-F9F4-0843-85B4-6100C0771E09} + testscale + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testscale + .exe + true + + + Win32\Release\ + obj\Release\ + testscale + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testscale.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testscale.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Debug\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testscale.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\sample.bmp" ".\Win32\Release\sample.bmp" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testscale/testscale.vcxproj.filters b/premake/VisualC/VS2012/tests/testscale/testscale.vcxproj.filters new file mode 100755 index 0000000000..7ba14abb7e --- /dev/null +++ b/premake/VisualC/VS2012/tests/testscale/testscale.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {D31D64B5-A036-F448-8ABF-550A54FDBCA9} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testsem/testsem.vcxproj b/premake/VisualC/VS2012/tests/testsem/testsem.vcxproj new file mode 100755 index 0000000000..c543fbc5ae --- /dev/null +++ b/premake/VisualC/VS2012/tests/testsem/testsem.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {15C9C3A3-A6CD-F24B-AA55-74C46DFB123D} + testsem + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testsem + .exe + true + + + Win32\Release\ + obj\Release\ + testsem + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testsem.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testsem.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testsem.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testsem/testsem.vcxproj.filters b/premake/VisualC/VS2012/tests/testsem/testsem.vcxproj.filters new file mode 100755 index 0000000000..5e5c9bd078 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testsem/testsem.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {7035C9E5-695A-1642-8EB9-7AF88EFECF03} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testshader/testshader.vcxproj b/premake/VisualC/VS2012/tests/testshader/testshader.vcxproj new file mode 100755 index 0000000000..d00e547c5d --- /dev/null +++ b/premake/VisualC/VS2012/tests/testshader/testshader.vcxproj @@ -0,0 +1,133 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {51ADEB0F-09DD-5242-87FC-6DD5C4A098E3} + testshader + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testshader + .exe + true + + + Win32\Release\ + obj\Release\ + testshader + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testshader.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testshader.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;HAVE_OPENGL;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + OpenGL32.lib;%(AdditionalDependencies) + $(OutDir)testshader.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testshader/testshader.vcxproj.filters b/premake/VisualC/VS2012/tests/testshader/testshader.vcxproj.filters new file mode 100755 index 0000000000..cae699fa4c --- /dev/null +++ b/premake/VisualC/VS2012/tests/testshader/testshader.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {E9B40D10-C5D8-6D4E-9994-A4EF637B307B} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testshape/testshape.vcxproj b/premake/VisualC/VS2012/tests/testshape/testshape.vcxproj new file mode 100755 index 0000000000..fcb68dc998 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testshape/testshape.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {A916A09F-93F3-0A4F-9A95-9938BD96CF05} + testshape + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testshape + .exe + true + + + Win32\Release\ + obj\Release\ + testshape + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testshape.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testshape.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" if not exist ".\Win32\Debug\shapes" ( mkdir ".\Win32\Debug\shapes" ) copy ".\..\..\..\..\..\test\shapes\*.bmp" ".\Win32\Debug\shapes\*.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testshape.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" if not exist ".\Win32\Release\shapes" ( mkdir ".\Win32\Release\shapes" ) copy ".\..\..\..\..\..\test\shapes\*.bmp" ".\Win32\Release\shapes\*.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testshape/testshape.vcxproj.filters b/premake/VisualC/VS2012/tests/testshape/testshape.vcxproj.filters new file mode 100755 index 0000000000..77081ca370 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testshape/testshape.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {25FFEBD5-1004-164B-9DDE-4A7C0DE978C5} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj b/premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj new file mode 100755 index 0000000000..c670db69bc --- /dev/null +++ b/premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {5B2F2D57-A129-C849-9C06-5B2D35B74E07} + testsprite2 + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testsprite2 + .exe + true + + + Win32\Release\ + obj\Release\ + testsprite2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testsprite2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testsprite2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testsprite2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj.filters b/premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj.filters new file mode 100755 index 0000000000..52f9e4782b --- /dev/null +++ b/premake/VisualC/VS2012/tests/testsprite2/testsprite2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {84C81BC1-234F-7147-8E00-5F182F55B746} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj b/premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj new file mode 100755 index 0000000000..eb9f1c5bcd --- /dev/null +++ b/premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {170EE42E-8EE9-8E49-B04F-F412A203DF1D} + testspriteminimal + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testspriteminimal + .exe + true + + + Win32\Release\ + obj\Release\ + testspriteminimal + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testspriteminimal.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testspriteminimal.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Debug\icon.bmp" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testspriteminimal.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\icon.bmp" ".\Win32\Release\icon.bmp" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj.filters b/premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj.filters new file mode 100755 index 0000000000..01a9ed262d --- /dev/null +++ b/premake/VisualC/VS2012/tests/testspriteminimal/testspriteminimal.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {D2F7522F-04A1-5246-A5D1-8C39E97E17F6} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj b/premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj new file mode 100755 index 0000000000..deb4b7aee8 --- /dev/null +++ b/premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {187FC8D5-3BD2-394C-811A-8CBA0476B0DC} + teststreaming + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + teststreaming + .exe + true + + + Win32\Release\ + obj\Release\ + teststreaming + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)teststreaming.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)teststreaming.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Debug\moose.dat" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)teststreaming.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" copy ".\..\..\..\..\..\test\moose.dat" ".\Win32\Release\moose.dat" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj.filters b/premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj.filters new file mode 100755 index 0000000000..2589604f52 --- /dev/null +++ b/premake/VisualC/VS2012/tests/teststreaming/teststreaming.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {1060A052-EB7B-2C42-AFAD-83D7180A34BD} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testthread/testthread.vcxproj b/premake/VisualC/VS2012/tests/testthread/testthread.vcxproj new file mode 100755 index 0000000000..ae8024d89a --- /dev/null +++ b/premake/VisualC/VS2012/tests/testthread/testthread.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {299C1DAB-6EB1-3D4C-8101-7CDEDE92928D} + testthread + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testthread + .exe + true + + + Win32\Release\ + obj\Release\ + testthread + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testthread.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testthread.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testthread.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testthread/testthread.vcxproj.filters b/premake/VisualC/VS2012/tests/testthread/testthread.vcxproj.filters new file mode 100755 index 0000000000..ddbf299894 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testthread/testthread.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {6FB768AE-AE3D-CF41-A6B2-F3D0E72A0640} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj b/premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj new file mode 100755 index 0000000000..9a72dea16e --- /dev/null +++ b/premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {87AECED3-5F20-8E46-9DFD-17A9E01D7E37} + testtimer + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testtimer + .exe + true + + + Win32\Release\ + obj\Release\ + testtimer + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testtimer.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testtimer.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testtimer.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj.filters b/premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj.filters new file mode 100755 index 0000000000..02d948f827 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testtimer/testtimer.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {2A784C7E-C9A5-D545-B4E7-D002318AA2DF} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testver/testver.vcxproj b/premake/VisualC/VS2012/tests/testver/testver.vcxproj new file mode 100755 index 0000000000..e1e2c9a427 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testver/testver.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {8B16A430-9090-B747-8825-BDE4B9A06538} + testver + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testver + .exe + true + + + Win32\Release\ + obj\Release\ + testver + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testver.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testver.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testver.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testver/testver.vcxproj.filters b/premake/VisualC/VS2012/tests/testver/testver.vcxproj.filters new file mode 100755 index 0000000000..795aaa14b2 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testver/testver.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {9180AF77-6382-5548-B4AA-BD901007D9EC} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj b/premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj new file mode 100755 index 0000000000..aa8499c4c9 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj @@ -0,0 +1,134 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {0DC21429-28DC-194C-AFFB-8BAB95022180} + testwm2 + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + testwm2 + .exe + true + + + Win32\Release\ + obj\Release\ + testwm2 + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)testwm2.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)testwm2.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)testwm2.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {E544B08A-C532-884E-A0BE-0F6F7F700067} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj.filters b/premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj.filters new file mode 100755 index 0000000000..61c44c64a7 --- /dev/null +++ b/premake/VisualC/VS2012/tests/testwm2/testwm2.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {239E5CDD-9DC6-9C4B-98DF-FE2025E99820} + + + + + test + + + diff --git a/premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj b/premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj new file mode 100755 index 0000000000..53d532db9f --- /dev/null +++ b/premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj @@ -0,0 +1,131 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {615744A9-90A8-A643-B2A7-223FEA845A00} + torturethread + Win32Proj + + + + Application + true + MultiByte + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + Win32\Debug\ + obj\Debug\ + torturethread + .exe + true + + + Win32\Release\ + obj\Release\ + torturethread + .exe + false + + + + Disabled + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + true + + Level3 + false + EditAndContinue + $(OutDir)torturethread.pdb + CompileAsC + + + USING_PREMAKE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + true + $(OutDir)torturethread.exe + mainCRTStartup + + + if not exist ".\Win32\Debug" ( mkdir ".\Win32\Debug" ) copy ".\..\..\SDL2\Win32\Debug\SDL2.dll" ".\Win32\Debug\SDL2.dll" + + + + + MaxSpeed + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + false + true + MultiThreadedDLL + true + + Level3 + false + + CompileAsC + + + USING_PREMAKE_CONFIG_H;NDEBUG;%(PreprocessorDefinitions) + ..\..;..\..\..\..\..\include;%(AdditionalIncludeDirectories) + + + Console + false + true + true + $(OutDir)torturethread.exe + mainCRTStartup + + + if not exist ".\Win32\Release" ( mkdir ".\Win32\Release" ) copy ".\..\..\SDL2\Win32\Release\SDL2.dll" ".\Win32\Release\SDL2.dll" + + + + + + + + + {47B50335-DB5D-B948-B80C-E361ED5793F5} + + + {7F1E020B-52F6-584E-B841-8B390015238B} + + + + + + diff --git a/premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj.filters b/premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj.filters new file mode 100755 index 0000000000..60d08012e3 --- /dev/null +++ b/premake/VisualC/VS2012/tests/torturethread/torturethread.vcxproj.filters @@ -0,0 +1,13 @@ + + + + + {C6601DE1-8668-8F4F-8099-B1905C51063C} + + + + + test + + + diff --git a/premake/VisualC/build-scripts/build.all.vs2010.bat b/premake/VisualC/build-scripts/build.all.vs2010.bat new file mode 100755 index 0000000000..a3cc1df13c --- /dev/null +++ b/premake/VisualC/build-scripts/build.all.vs2010.bat @@ -0,0 +1,5 @@ +@echo off +cd ..\VS2010 +call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" +msbuild /m SDL.sln /property:Configuration=Debug +pause \ No newline at end of file diff --git a/premake/VisualC/build-scripts/check.bin.compatibility.vs2010.bat b/premake/VisualC/build-scripts/check.bin.compatibility.vs2010.bat new file mode 100755 index 0000000000..baeabbbed8 --- /dev/null +++ b/premake/VisualC/build-scripts/check.bin.compatibility.vs2010.bat @@ -0,0 +1,81 @@ +@echo off +title Building Premake VS2010 Environment... +call build.all.vs2010.bat + +title Building SDL VS2010 Environment... +cd %~dp0 +cd ..\..\..\VisualC +msbuild /m SDL_VS2010.sln /t:Clean,Build /property:Configuration=Debug +pause + +title Running SDL VS2010 tests with premake SDL2.dll... +cd tests + +call :pass checkkeys +call :pass loopwave +call :pass testatomic +call :pass testaudioinfo +call :pass testautomation +call :pass testdraw2 +call :pass testerror +call :pass testfile +call :pass testgamecontroller +call :pass testgesture +call :pass testgl2 +call :pass testgles +call :pass testhaptic +call :pass testiconv +call :pass testime +call :pass testintersection +call :pass testjoystick +call :pass testkeys +::call :pass testloadso +call :pass testlock +call :pass testmessage +call :pass testmultiaudio +call :pass testnative +call :pass testoverlay2 +call :pass testplatform +call :pass testpower +call :pass testrelative +call :pass testrendercopyex +call :pass testrendertarget +::call :pass testresample +call :pass testrumble +call :pass testscale +call :pass testsem 0 +call :pass testshader +call :pass testshape "../../../../../../test/sample.bmp" +call :pass testsprite2 +call :pass testspriteminimal +call :pass teststreaming +call :pass testthread +call :pass testtimer +call :pass testver +call :pass testwm2 +call :pass torturethread + +:: leave the tests directory +cd .. + +:: exit batch +goto :eof + +:: pass label (similar to pass function in the Xcode tests command script) +:pass +:: if it does not exist, break procedure +if not exist %1\Win32\Debug goto endfunc +:: goto directory +echo Running SDL VS2010 %1 with premake SDL2.dll... +title Running SDL VS2010 %1 with premake SDL2.dll... +cd %1\Win32\Debug +:: remove old SDL2.dll +rm SDL2.dll +:: copy new SDL2.dll (~dp0 is get directory of current location of batch file) +copy %~dp0\..\SDL2\Win32\Debug\SDL2.dll .\SDL2.dll +:: execute test +".\%1.exe" %2 +cd ..\..\.. +pause +:endfunc +goto :eof \ No newline at end of file diff --git a/premake/VisualC/build-scripts/clean_premake.bat b/premake/VisualC/build-scripts/clean_premake.bat new file mode 100755 index 0000000000..154979a027 --- /dev/null +++ b/premake/VisualC/build-scripts/clean_premake.bat @@ -0,0 +1,9 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2008 clean +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2010 clean +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2012 clean +if exist VS2008 rmdir VS2008 +if exist VS2010 rmdir VS2010 +if exist VS2012 rmdir VS2012 +pause \ No newline at end of file diff --git a/premake/VisualC/build-scripts/generate.all.bat b/premake/VisualC/build-scripts/generate.all.bat new file mode 100755 index 0000000000..331c0cd061 --- /dev/null +++ b/premake/VisualC/build-scripts/generate.all.bat @@ -0,0 +1,9 @@ +@echo off +cd .. +title Generating VS2008... +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2008 vs2008 +title Generating VS2010... +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2010 vs2010 +title Generating VS2012... +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2012 vs2012 +pause \ No newline at end of file diff --git a/premake/VisualC/build-scripts/premake4.exe b/premake/VisualC/build-scripts/premake4.exe new file mode 100755 index 0000000000000000000000000000000000000000..ab66e76c68bd931fc7a1f0c4306bd3825cf40d3b GIT binary patch literal 483840 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�^ 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�qdc@C%`der!d(zcAn7KW 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%0Di{*3#6Mk>vUWm@BZVRXA98w8|H!9qY-Z) z9v{srX}1Pu4D3(zLV6&K)%$LUnA;8sDuA72n~6hGC@y=`-c^as(s|~RlAn*tLdL#r96#kwQ9oUX8-tnf0bf>4!N00 z+~kIPqbU^V2MA=Ofn?c|3xJIo-&>B~EZcf0XD;+HgZ&D@h$Ecz$BBPrSL055-lw3B z0N~bm@L-Ca9a7&I?d!dJ8`b0CO#X$azK?6!@wc<2di*+F->Ubo(}=y;b8Jir930id z-!{MI8M35@b&pNDNBe{7$zJuN*MLO8bpsePYV6tH*4Vuf7A0O&i2y~nm^IvfS(>0c z9jlxBxYc3s2A7}@@FL5wT7w?3R6=a59pG*S*|}mwszy;nHJzdy^Ns792cwyf6=BM} z@bjB_;dwmVE7Wp2RS}Qer~plTyN-s^b+4l#&_KfKF_f}SS#&2jwYJi3idG|XC#PBd z>y4i5IlQwe;?G`y)eO$Z9StH=Z&Yh|QE)gJ@pg&*~m6 z^KF=k8!Pw|h8zA>qY!_n@r4PnepFE^vVovn%hc8lS{2Ey3)*@9wT?@6RrPum9~Fo( zuP7)3^m1({%G^PYreZ1vo=waXySb6-Z)T|nXyvaQ&QB|MpFIS;Ya1)~ zxVOH8D~ImEIe0Y0MIN>94^DBljlAK3+OZp`mEtEin^??!zsU5IPr1tp8nIT|`Aa`- zqfb6O+CRlZ1$;dkl^@;T);~1c;fHO64(-GE^P69fX4_11Hps{u#dWZEPY>zoKvUXS zigZ$e+SocoPkCt3Dm^&GEfp$Pp?KeVzd#Th9>_GYYIxjebb=db_29ODZ9$k9JXjk^ zOO?N$cpggeOML9|i}=;@X>Z5i==B*fnfmi7o)LpK(4O4ymUhr~JR__n=5|W~)czwJ z9bf^(u`Fvh@BbRE;*_3!o-%nR zE8_3G*v1k~r~H5l-nlsFYNuJ^bNK8OmK~n4{u)69-a+OT+<_bb)MZ)gnB{A^In+?4MTTX&LAY zy21G8I(%FFbHo4njKApc%0K)iY6YD6dPo&l^xC5HLTXD3P9(FhLvCX>=gMKt7NmxDf?=rONJwx$_b7F!)02*`M@PZm+x(QestM(x@ifb)Ch?$oeHHX-l0j= zWzW^coRJnxlf?zV7;4|^P6mF)^*dymAP^(Ir+P z8tH|VC1bUWCziYWnhWMGGjP-FY24%O@B?2@(^P-}w=ROYaW6`VSSN>o%77^Tf#0Zd zsg|7X%Qr;y*mh)=?+k6S9h0)%JXwShqUoiVnR@w`;v{YIQMy2zURD=qtIO*GZFhNH z0B7-pES|A27UKfqpP!Fl2m9isK5Z5IvF;Ps*JYO4bYt4Ea;%TBdwWe6=_WTmSGiS5 z1$l;2&UW*_<_MR--}pS;#e%dfH_7^P@#gc#sBa1QWcn3oh@V2cYFJN>JF^Gq{>&m?xf?IVR@*ZWXX z8rg6LEs4d`@{3>zeaAwn-YL00ia_f~p`onZ6cc ziO}$|8d-#=YDBamG~+VBUI$~uc&NfVrHkhSiT%JD6&AtJO|q5FK6rp$ZVtjDR5-_; zzwKgN1WvN`9HYm3w-_pUtiegJ&h{sh{SRvcP7CjHL7b9m%uYLJ3r~rb0mX)W#xyW6 zjVA?ECXZ{Rm3@9@Vs2D7H4TZxE+*l5py5ZSquZ5#VN}eN|~YeKrdKTKH*@ge{Ufp#!P1IU`x*Bj_B)fyc{!)r+DukTnE57=hG#_82$cj`jxnPcgL`9 zgp6JCGtMT(x~+?dHn~{{L*>OxG$g56)XP?HO^xOykeMnn3+BfSBTV>KVVHN=^Dv@} z@+*C}F_;eF#?ZAiDx{%_I4SMq9$i9RQ~0~7K%s;g2=aHGRX$#u*etcp3#Lmt6Y5-2BkT|K ziPyEvVsN3aJBLiAbMYXPFn!LtFC}Nl)V6M2cGi?)t7>+67f>q}{io5&Or*nJif`hP z=$Qu@yfRv`B+Q`H{ncVgD7%H|NfT-lx!5D^f|k_8 zGT>aci}w`MiLV*?n?&$dYpq>C2a65^Gs>FDHh`QbbeZUt%iri~0l&Mlb;s2@ZeM}U zhTf=j6xMK3@dS#=#I5{lrC9OLC7GyP z9Wghu4=xZG@YiVQy~k6sgMGkU?O>5$~-h0O3m>@9|7GO)C zu*8;AD|1;e(__$?S1F#Z&Z;;2h-K|pGQkj-@-zxOY&luGCNt7x>UBh+P@${X zr;4Jf143F&>wX<%)j9PbWv4)rjZYrd z;v|AkkRj^8PsgX5GTn~L6kvai6)aG?P;7Y!Lp zbi^f8gtl3LKw=yj_k!ALmq5JCA*~nrU}zSk0nOE>HggW4t}!!q4&cx%2AqrW7t$ZV z?D*V%GSKx)AF^}}U)f8{R~*vd72c_ZrUyt1`OY>x_~YX`K(HBOq2a5N!9L{WR&qMF zG#_kvCzHt&bltG0wWKM#CV1s;8U6C=l@f&>gnsc}0egQs*q8K2fM+-s1~X4^H0!<{ z4uKu~9C-|#$XMcdK;=jz|2}mSbn<~Q??<+HAJsKa+}>Zj_J5*t8Y=~d+JoM4BE zNU4#DT~EDl597D^MDkPo{9R-%%2_JB?sQl^bePq`v~p@~%}AA! zKYZMysm+u`kJs!6@}t7{wNJ%e7+m`v<+na^Q?woEEoKUQhL=nXw(u)_IzAIbFLfff zm)jnN_lmgDG16eyB)GtY1Z*+U5hM)MQDBM03YwKD?osEKj>|d_1;)>X05Vu1L5P?j zSHG7n#x*Udg?AFPUt^j#`*`OUx8~x}KQM-5X!sqBHY_4s4pbw%%5(x;+Acp!B)_*4 zfo#*Fy>m1mh*zMs?id>Dl{j-X204t9Q#|2igQA_v4)aDWozlW|4$J}SC}RokAO8J( zI-?IhUGt@iMJ10|_za{vjI6Ek|L7wQBQQ@!O(~H47u0w@dI|ayFa^EKh^&t@ymAne z9nl4i6Jmxm;h2aBL`acijT{iF#Yi;fpe{B^tf2`KNWnO%aw%o;1=pKdFhblY;A@kD zt|JyPXBg5GhoV8q8oUS{Vt}=xS|G4SWChy+6^u-b3{kGgw;S@7oD$7Y!aA%2RXycY z_kU|Ffh_jdNc_cC#To;O+@G7y;9X2&uXJ{Bj9K7kZtzoIf%tjwQ81Vnk`$a ze4_{5T)9(a=vZ1$<)y_gir6WH3z1gab9Jb|k}HSJS>vS&q9QJaGHs5~PgFz90o8+B zNjG0w2b!?aMncOp$f#%i10Cr(&Q+_xa~7dp*HB-zA*lY(cCK_NhKB8M)s~4&DS^LC zYsHs=n2*LcTn9oE<1Y>%@2QxQ#MH_sS;aIvltoP_(w!1@VFgnPq3McM;~#EYUGqt9iC&>>PqhT^YlCZ3r+m&MVe3c7(_2nHe4V*X`w%!ho-)4G%ovKml##SU0*OfRL zW?^Vm!b=nLPiI@?sE3EhYIk36#Vr7FVL(@*bRtFN^>~GK>tK?Gfh$8 zk_|+~@=}L(qXpXams*$W#X7y&QtgISb9}WrI+2;;eMxLY{A|K-7=D6m&%l%o5TEC3 z;lk9s6jSP8m%n5L2rZ+vL45x1oRJHTeeTMx6_aCrjFn zT_A|^&!RC$;#c9j6o4Ly&s-v|wa9-hb>p+vB`LDOf%F+%9WX0miAgQ2v*=8-Riq1D zQF;jp9&99eajr<4=ZQVQwSdW50J#KAnuuxeFcSUl5VaE7WpmEUH(pXXM)Tr@-CUYW zcK+>K2Ql@)dHd+~f57}vipk~%`%4xP8kth??;f45DwMhC(%rZuWuNzYc4-ssTsg?hu0&OZ+Yuu+F z1T*O&CJ+ZB8N|13Ta3lbMC)9Mnz|+6@211u$=_A85n)qEIBfEmK0{Lafc8A=5$WI% zmOe!@@VC^zgI!B$=>{}m0w0Nd$4H)g{g-K{QI|Qa;$6)X0HxSAJ`19fL0~0@X{liI z`3t3NQ>11W(W#gZAy%%VNfG8qSs-5UW(~JVLqreJ9+(Gac>iwP0Yfy5XHFGiru@XD( z7KT&~$vAOylgQDa#X&FKTOFKFa3{g+&18K3`VCe7Y&1aD_5m`ZN5iSnc`f5=$-Sj0 z#Pzr^lYrG)CUn5sz#@|x;5O11Yk}c}bbLB-HC4jA72OGv6gKdPO0}-^PNHpYqA?!K zc*fhXLV6O&%#KoNCVXC0c%{eCw*vW z1YHeX@Jhr3o13`HX&83V zS4ORW7tH_NM<(l}otwlfW1fXk8q=p46*8wXyJQ32nF1W)SIV5@RZ(4H83&O^3W9-G zFbkOIgtKf0vL&8($c7Hx2cm*5AGEHr_|OR8i+_v?h;wPjI#wGPu&9}swrIH~OiJ_e z3pKuMO;XKjE0=(jw;~b^m}~9$o`iRwjFc;d~hff2wuj@frohvV2#2n=! z8H4UJt3hWQKrwkk5xmmXV;r{T(G~Qf(vp(F)>k<(Vkgz*2&fBhL8z;Q{~B{5oQ4I* zxmg7tZ~^Qe!$UZfT#?DJUws1^gko*UWknF+?O2#fO@0+~D5Ivl%ljDQgCXoXk1o0R z&^{}s8!{3FsKT;x2q~ASMa*YZ1kH?>pvQR8LlVY9&TU>Lbu__qMbV$Gdq<2^qH;sW zU1NxrHVAL}+}e;`9PgrgGxxlHQHE}7+&-F;2ggTT!^-2xVqkWNi z)1*adJ$;^4e_4?9-gG8Fl&lVtRq+40w0QJZJ1>CbM=CkYQ&ivFd;=E;_d<&M#=!vq z8%qzGt4uovUO45q>})klV@FR8Z2*Xv_QmF7KAM;=vcPB~-$`vnTbzo*XjGDNbWV(y zG>$k3>=!c?W9>{f?l@zv^2w7L_tNH#0>q`lWSml=ZjV8!B6 zRImh+eYkL>s7yo^MSo@f{yt9G;rh%mmHmfm^~!WrIhezjpM6}m0~$5x!lj+ z-mf0a)IJiH(c8Oe!Dg0}h-so>-J3@M6HcL1e^WAm_3E0sgsww5MOdZ@KVX}6V2Gnv zy9UU|ZWi-?>9>8*fsC0aEhFI?t@WcI)$s7K&;S?f6aR+t!WWDN_Y}h=5Id8$teCBi zgb}nLpMW zjd#HoI4Xi7)$V zCAR3$@*tpwTuUVau-YRz14eAo=jP@%WwkF2`fr?P>frZ7TE`OAB?IBa0MfxNT7iwm z)7QdplmW8s2o8qZ$-9yZF@S|Z-*(j<&B;(x$|caE`v1MTQ&V2g_d%S|Y`L=~sIJSz zO>&(9Z1oH$YB6XiFXt{jy=l3v8hjFUo3z{|N!d^u7(Zw$Jv2LxS>&3H*(($j7l^FZ z^YoEL?!Ol9BO&U5)226UF!nN#os0$AOh&Uw-_G5;P%RC3wgvpN2>{D(vA5 z7dwL>3#UlLoUQC)T_@1k+r`c_fv$fA-Fz2%9J4$b@;-28J{?kg5p&0$`E#t!YQ|Ry zny`ZQq#uh@O3_gO6wzIz8DtxI5;#&4wo8?EcEfbL(;^1~K?vE-L!fUWNnRo))QiMa zt5hPV&~gyLCgF;BD%9c>x+OS1)g+Zm!mtg+l+7B{3;wq+`r%;!!P2u;7DC1RQWnHA^_=O62O6bKr)>{A9sE z#Eq#uW00NKG_*VrB||fOn{;?C;~>pgxtw@*R}c*|fNzNh(m5Wbsu5MEF+Ta&^h48_ z((hR0@+5%BN=hx^UZTKBo%WyjRp=&I%CB-IdV7gnCob%jM*&?DcrvAe^Bd9It7kDr zY2FavF%n#;3RMAr9dUD5|HW{U+>sqfkvl6yT~3>V3_LS+f;-U!$)XQ1|#)E8pOb5H-~ykN_~SD_!fs1>V;t&sqn zr$A_r_YWw0&GJj`SlH+JHyQ|Jc%-sVe667qs!MG)n#x_6zF@uM@hK0ro#N!r`U?Lq zra|hVt+#MnflGiwsE+Fpo0$|af+XGH1VWym6TG;kEUQwW`&ihcV5xFaMnimNxQj2< zM(!!GGz5u-Em~sc*ht$ci~=-{xtmSe`IRUu+YxDa2&O@0>5-H^OS`B5DN(I(+CA4Nt}Z`994MJ?Gp^q6tD5H4>BwqMVs|-_9n-l znEC&r7jNz|xR@~-9I_|dHSC&krPG`!K>V-TAZgo@e5x0HMLMt52fL=DotaIm1Qjk* zD1``q&QnG&R}xo9SBjgD3*-^@QtC)mT@#K82o}`g2pSX`P6vLW4YgDIQHcWIl#3l& zRgUMF)g!7}G=I%x=M98(O?3p)FM{zz%8>PRUItzT3I;6y-g?dReXD<3MV?ykPx~il zUmtwv94{NsE)>!^aOUKI$8?~W>~w-w597mU@vYK7OG6<$nGqxYvzF0S6|>g2_# zSGmh7MgkdBOju*Gz-6#beCtd#uBV{w>-n+euiKYu5a8#X` zfmH0&@IeaCIL6d(tI1|PWW%}IzdfBI{ zm8VYB$*#5R{a?B1)T;+~7>RgRAn#qH=I%pz41FF;c?5odZ7@;5ykDuEjg(L-B3#6o zFvB2ZWp0FgpE-YA6CXZD(B`v&bxKT{wV6aS2i_n7H zWO>k%jocZ@F{T|eg<1< zq#}nayjH! z9KxijG{L>_)8#CQrbQqlY&^lUj-1|b>frE!bby5|26@b81Cq!UFh1Lg@nbXk)8bdU z&1;nKqcg1G?YWiRa&#a*tDmWKXSlZ$Lw5@StWE(8hj2H+5+;L!DN4V&>m zS9%giD9|Vl@78$Rn6|hez$XC#zO%DXisSRiz%MQf>8jjQRCMg@9C`w#ukbDhudEv& zO}8yC3*@-8lHO&~9I?PE!8fF)Jrt{AAiz*krKQuQQ^{>Eb7iiA8zDI$FNUX-my*Hb z6O1OZ!11q5PX~8DM z;_cGLOSAa^TLk5CQw0@IgT6k_fUfOXn~OW7f?!r2;X!d)S=lnpSVw`$oWXwRQS|A9 z2}Rp-rOj!62rATR7=o9m+9`c!63#G)z>;$O(a5=`y`h(8jaLk|5Qr)lBjG2za()Xk z9{J<8i=vCRhD~v(&6Q=+U#y*!x`xe5&H_^S4=f6Y24v$P?gGLo3Xpc6qU2XO;0 zHGgHq$kUU3Es^EEhXsuIXgIy3>=S$+dBj_%%?l(O8E=8hl&CUM5fd9<;xd>;R_N4h zSwaAH$b}LIClsz>$St9oeGp?7;&NT}q&^uEom!MXduVk$$xRT+2Ai&s|dQ?FcO8LzCGj>e*?`ZlI? z&pWyh6VeTzx|Q<-2AU({g?1yTKmok`Vu722Y^|rxYKjXeNk(!6|kjeSEsApg^YX#9$-EIMn-SL?XTGS5&T$>2d(zyww}DA zY!mjb{5!Rf#`Uchw~g|#75Eby^Ut8!TZfpcICBUDkvxh{szI-S|IkfL+A;Rpw$#X1jc zW&KMZ?Lr0zp0fY}H@7}!C(IXa;g=xVWWK2_dm)vRwbkhYHf6}+mm^fd`v{y|*l=tb z?$vFKkY$K*gE!83Ab?Kjwpu<7q1B*`OJ{g{7(!{ey_9d z$$_VtX6IAtpAjL_1Yjl$cwR)KQo7LEWWh17aVNYYKGA4L;E)Amzt*z2;}liOhf(kW z@%l<1M!C~-bbA#-_$U**f%b>}XODoe#N4A)lI=hguZ~1hjzd~vaJZ<#|I-1oKr?gf z^;X})GDbmp`x11N?d~xXIGUVdZG+(TL=??KX(gEo%HUFsY)4-tIMPx=$F?rVsLgG1 zXMT*sHSBUYTCxo3V=$myMT&PJ2aS~VhA@_ib(6?JjmEgqkckUvlgZ*GF%TIxYUse{ z0xB^$yzoI|wSuMd(L5g=Uc7WY(H;KR5CNpgUm(B&tzJdtsPxU_Q40u zpUsuXuaZ_5lO$RDE7tAl22>Z!62#36_Ro&Nterarpl7xrK}8bUNI0=&u$fA4-P}2w zPs?3XtP#+Kw`%EfB`{jcn6dCH*3NMAcLrYp2)<4=Yr>zXO}(2H6O$S$sdpJ&4$%_$ z0=>Qy=6QgWyV6vjf@U%Xm|e zjw~pl(BtP?R8PyoC?6$r=CVKv`<`TnS`LpQ90Z9AB%rD>!oUq6)E%rlgP}G-j?wRR3z!s`j?r=Wr`G%P2A3s4_IY|QJ(^{qr0ih-_0C1AJXMW+Ta~Kdsr6DlW&E5*p3lTwI1dPdsB?7MH=1a1{1(DUvIj8Hd*V_3 zlY%-`_&W{>w^yCw{ZT~m@J0cT#R$CYYXP=ELMs`TS+k;rB9bU!g`}g5I~>Oh!0-Ym zs2j-OV*y!kkyYYjp}Ul$!{0@dbbCJ6P(lj)A6%nrxR@E8Raqq~@4?hK)GGPKw%mP^ zxootm&2_Du7LM{kod}{kw2@1rSfN~fLJRh<3C={`|A(M zLkYaB%$@VIkT=n3t-X?=liTk+3V_R>O6y%e&b8gG3ROJ*^aXV?n(}@u5mr3LD=9E*CU;p6~s?-~YRMm@`{uXJ=<;XUjQ^P=2>b@Q07EMdLe?;o`&G zGNI{1v6@dL>%zS}++!7wGetuYP+pd%b=snsgUmy&BaIg(`}IDWl;9s+M@dE;D3wYH zM^l>w$WtjI6)h!c53mZqT;?Xmx%f)VmWT`-BQ9#KO2U+ynPf_&HQsyu@)A>rQl7V2 z@pKN7j^-Cn4gN`Dd?^smm5XEN@(Eq!e&?$I{4linJF`(7TBMYKO};z&7kVpKos#ne zzS03z(>|mvxYpV76O1UB)~j(YT=`CGaFXA6pp~jcJ$SkkcX?PO;W@ve4UJ%vD z@g)@gJfL~UA!&&e+-#Ms7v713j_iP{fVQ1Uc%rJ}%`;}T#G7c)n|UOT*3nc-GkXLj zWz#~Ax&1M%BAc%s$mL+tYY2m4-q9wRgzOK#P$i`IpRCV68K082C;b1=^2i$fSC+@D zqJzSn@1BYu(KX`6ufxlgI%} zROWxnx|P^|zSJ9d2%Xn~ z;vwiiYCu{>N(vs0OS2O>;fY}R9j{K2{u|y$XjX=~;p3D|JkU6ReJgFDR_*oJIZ;O!ktieyuc%E;!`HB=`1clx*DZ`J zmH6L^r{o$7ChGsj3T4pPiRa4q4~)bor-2VF&zE>%f!NvMV!?TZf38MKTKj*=UE+lV zSTEM7Qcn_F(qa)AO+cq2cyayX<9(v>i32p-ds-?pKK|dz`xm+cB9gP(cXayas$_`- z|L@3a+v%Kj?TZ`q7&Jb`7#fvKn~Eq=+!WhYfs5B4XoEgJt{Rz1FH|sJhZmzFq9mcv zzTSQOgMz8M2`4cP&;3%Iq$NE@k&Ukkae8zoUcxNWwT1Bs3ic1|)pwA!n8u`8<7re; za&*#2JL{l6zCAsA_=W~~26wj>8@IIoig~`ACPUKTm4dM7=!lg^{(OVUph-rxB(RI7 zFMP-cAq0=uF%h-ql#r}=IaHFsL*!|gnF z=0=LLn5GcBY1&hoD6f!dJfveocvBi4awZ=TW)j7chl@LIk$GfEuU#fAvC*&PF-fbq z0I|}eX@)d;=IX+|d`D^ZTpSWI!r$E#!yB4o>=M&(ZqvcRfwq(oKre?hbA)+pMp8<6 zv7I#iB}fhzw7m!H}kQCWLyBtu4=Co)i>{Q;S+koHCeY zFGUJxrZwkFOaC50CF7w5L5A*%Wd*tvpmn-LEYb-*;di1darq!Zo_fecZxa!MOXxi) zzuP-xFG?N`dT4N3cVwf&w1brSzBumsE9gEf?L;jDnmOzSAAJgitRt%`h>nDS~Km6GjD7=|T*m zB;04F;+VP})(1@YB0+H@gwiv42o!Raif$5kDHjb3Vz4%NW3!x9n|)GJteucPVfd8u z=aL=HG;=j;cQHjT(Z-@koPA4$LkROgFLe;p2ceVV*cO=PGg@+G#Rt^nydD|e_47p@ zFfZTVBC0QS?|tXM1QU2U2M+xt5fhr-FHyQ+$Rw;1$!T_n#XIw-`Zd-dB(7m2g?{m} zqpg)XDXgI)Em0(qAly(PC5y$;k7dMQQ$*^sEhb?Bk#>}Rb5*{<+>#uC^Po|S+|Q1#&WZ$p_u1u@)LPW z7)QCVYOWB%LJI9k=UkY&hdE8ICz|p}10|B90JDVJyHAA0;`B-;7{tTGsy2-ff`}X) z%)6E8vyn0dZ^ieEhI?chbK0P*eU2PU_HbJ0fGKVg@NE>~lgKctm#wWR-t>+J@}&6- z3WQkjfDG!Oy`cu;Hj^oiOQrEQd}zhvK&aI8G}94OS$HzB!Z{$~@2D?t$25LC6eZG$ zOnYZ|!=iK)qJ0^!gpf*RLULI+!b_^X=8C{YNeIVxx!)reQCnK;SN@6@WwVgN`$!CldCYpjL!uD)Q7lA@eZLUdIYh1JQopIrK;tR6} zJOzfWsf6NJIRZd$9D{gtCISoxwxizA`ZClmleVkrKSI!z4l;>F_zvO_{-=pLrr^i-HBvld$7 zv~mlOrYCihum%4PH&QYf*TEMJ@5GYucT7U#oR~e8AcP`^9>|#FY)VWsV}ZCLTpj^N zJ82Iv@cspTwQpw%GIbh}uVlZ`#9(^T71|)XgxSgiCZ6P%(pe}GNn3vu!gY^#I7mr5 za6w{sNiKxu27uJNok8QRxQR-XpJG6yS6yH4t97L zRLZsFQ8rNc=h9$E#IriZB~n$)tN*XE7mSsz-@jDv-KI7#YmnpM!9%2B&;%`;QI;f5 ze()hui}>f-nI0^}+upIngpFxS+)@3=9+|IaAsElB@g2T*;&?vNJDwK{fwaMGzDudK zC(m(15;B*rvjWqg+*mTY?s0cI7%^D7J zl8nsy3#H;bfImtrx(Y(M_s%)yori~rguGPX!kU6MRLrqpXhQ1O7PD}FQWX1*Y zh1ctegr!8H^%EGDlG5Q3vPN3_XbhWzg)B@~j2_zH{G0RAN|PX>xByMbbeHxXx2iqn}X zuql^ZZPZ?Cq_HC$9@E~CDLGsi+=~jm!(2+rf5V>O4^Lij4kNR&1T4Wd)gbZzHuG`# znnrZ0w)`rzqqyP_9!~x^#Bo03B#@PeLnZz%3L3h?Upn(&NINz1{~lwdC&pN~!{nE* zw?*Sk#yEh{9Kz%CKUfq~tm(lf*%Pd-yYkK~8UTj`$UQNemGWU;kmjDHy>qc)6V4UB zImye5FD{KokVn*<-_gND!Z;$_DPiiwfjbH=>B>+MJTZ*{h?H)FW_U`@4B%}{a$x8OX;txt;UxR!na?dmA#>|;EAG|nA zywyw@@Oh_V#~W!)BcY@OKhWg5rSN7d$wLWWJ&oQ3Mgt&U_`qAk$nE8IvX(V3WrB;B z6yKROBX_AaAk$=(SEIOKKG{Vz%;YGHs~D7sA6nrd=1jwz9i{>CX?CUuWVK~@BtpNZ zM^{B=iIY1oo#0Y6NRclk6AlR`lq7-@Cf<~@q~P9tU=sSqr_jP`(|lIawi{&A#>TU$rqC#3PKG; zBbf;tA65uWhzdD|?;2bi(r#!siDgpCce!e_3HX%7eqd?Y;Q{>Ot3hBvoBm{_eWiWV8Ds-ktZ zt|%3NqPcRJ+8g}R+Ya$=2fQ;Wf@Tt0JCo_a{svd6G?EgMmaqe&Wn=@x}>Gl5XBhHNfAik7u8O za#!AD%p}M1MI6$ky@$T(-4?_@f6v8xOYs>P;1l}3qTWODKeJq#6dips?Piov5{#22 z+uzy|9|mzuh=M%$vxT%Z$_HUCZ7y{3y)kJ8kc+(NA|*y*$+KuGZW*bicwWJX);t|u zB5>Yc3Qsm@aS@Jap^h%Dju~mG;?~iX-%|e(0b)FOZ$?u#d81_#S->IxR79frf|F#M z*H?5t(phj`(gemNVn48yLYpQTPzz#59{iyE)W_(l5!6|xBCDgVoXQ}rFA+5FKTvJ# zw96i*ogXQ6md!jpI#E1~ugpNhE2p4MGsqK&kJ2!6BOTh&#VbC&JHBERj3WcwGt%*`?c^9c>*&b1WL=ByfqjF62L@>bEZ>(hgR6*rA{BzRlSv3@Qr1pl$3eE_ zkeRJ;mJ&KwJXDwGCd+B3<@pCGQHfG=#XHKS2HmJ+K4zG_w#4u>tRH8F(^qIQjBvfA zuoBB4#jgXPCn)-Ys5eoOUjaAGDInO=qr3 z3WuMrhJG zk9Za_72tb4P$1s==G$C+kwJ?^y;~~X+8c1nA;UUy6g&M)yk!+>(-lBNFEZ#7rWW3$9 zBJ6kyb2o=8u$hGv3jHo=VWNsji?Nb)f@q5euz4CmTx&g3HK_A4)*>Jy+*OA^x(*J` z4lX+Snkya;j7!(qdAHIzcj@9{-_FUYGo^4yPQ}sDpb&5SKJjopEL(VHq~oi7X|B3H z_(*GXD!yl!5TBS98HZ=x0vvSR9q?eS&M!VTBN}^___SF|U4I9iH`d?MD04`k09RdR zW+oj~CCUh+DL)=Jqo;pxBo)Kp$oSOcB>MUk59g~la#_Fx6x`XQx!Odz>R8_d#?X}_ zhwJdva%v2oKGWIRq_tv181IWFGisBD|E{=*0I3NX^hZeWRMB=o#eC3#Bq6@Cjy^whXF)uDK1Kgi975 zHRoIrPokpyaWgy-Lg}$SiE)s)W(2!!wbDLrft!j2@9erPKRDaJZSED3XyYLg5L?;n-Rc zrO~|>M!kpbL8wHTz zSzP6CRlrpdS0!BZGa}szFFo4?n5gL4TEIZyIe<29dbS9#C&IGRAF{Wuy-SbOJsAu(@8(f&dG=^{hMK3|BpK1Ki}HXD)!30owxB2Hh5bBap5Upbp_x z0e=F01{ly)&kF1Lu}MC9b{Fso(q99-j`Gd{c0{=L%Ll#>ml4-?T$^xp=#KgT4(+CA zJRW!s@EAYT3vd?jY`~3x+Rs)~GFx3@1{TER*b}Z3%D}rO*BNvO3oR2X@FZVHhrx(G zUynBwP!qGz&|(#lc165+3=d)#n}^~ww2X&N#~n#iZv`FLI@6G6X6$$m#pi|+gkcHC z*Xi-W*94snDQgTat)KE>;3Aq=DDQbSyqEF%rz$LitF6Z9$A%K*_0jd8k?} z5+~`zo47$y`voavBk@KC6QA!B9;L>+58>4%jl#YHR2WcnB z&%ec>hS5>Y%=3zY8PA6$lc9wnr@GSDY)du(gYLmp1@>HBJe)O z=x|hvp5{!>8f7l~$mCQI#X_N3ps5aKe3e!!ke0%mpBj6JV`mXk3W7c_a8 z6$hJ?$@wDwp;I{f%h>Rduvzpy7les((}?Tm+ovy{%As^b3nMiP?M61l!~*V<(o=ED z9_pMCNl!mOh{?JHd=b~|*$4;%qXHPCSE=#@^d;Ja=q#d@1Or6J?`b{NG=L%;gLoP~ z;#eF6nd4oN5xjZGwq>Nqks0^gpCUeSAD5gwob0J79`~uyv3Te?brgl0(&C;QS3sVJ ze?Aj5cpnfQmC>3m(UmA4I|+}&W!D%s23G@IWGkxzmd8~kO4zrw!Fu+(kstGkgxvv5 z9HM8p07r+y-T>YhB<$ZCz$3uBh6}s(De~M7pm5t)une zLi|ka3|WhQSv(F?9HpYiDbb-(qclD?XU2u|v5CfMiciW&q2_0F<_@j{uez3o*4`-q z9{{7jTrS!@|JqV0&L|+S*aj}P6=FAa5IO>VxL>Wow(@H) zlae!H<8+De{n5juuR_8Wo+{pciH!~z1hewEdxxim=^;;KOos-N&*|uGPkxgw0$xfK z#H_W0=2t_`ur%hLHi|=^lLK|6qc=P4 zuV>G7eyqK!X9a+E^*z~Lz|a+XwiWUA`}OR5z=#T->>9!wZq@Vt?h>mfviuhs8q50{ z?9j-Fj2PIXXlNe!v3TqTFg=l?30(9>=t4q98ZpPGjDYl-VgQWQkY`d9^+~dA z47~;mvDCjfV4Irxv9-A9R|XgPWnTl&!L>|=m#0Yl^tcuwEE^ZuEc#8u{SRNj4gtmsn0H`h6c!8|hxDYS}aK>iXA;3t$ zD8TBQ^lUI-N5EjfQwR?LwA!L)K7d_;>j7&6x&f|5cxOOAKqtUNLL(;FQUV2Ma07xr9#QDoJQ@A6&&bEbTnU6p&1r7e0e#Y?cm#PgDe0?=IMDD z{jmc+Y8PYy_;zP;_~*E9xk{ zxPl3wat9H!LqLL=_?0o{Oq+Zfkx90d;FSC{{!%JeArBKBB9C{2ypN8ILcdN<5tG^I zk@3kHP`uPsnr6H!5b!7JXN%56i}8Y~BV*%;En!IoVu70YIp_DCBL;u-2qZ-caWUlk&7^AEd=!q&K@COgbV1vz?%W91E^Ta8kZt&d$0{i070f*GyeSL!i{QCy8V86gV z0fB)*BwyU(T^~UNc~Bo;oKxt_;UQMd-<3c}@st23^)xOBMc;Hr#^;d$JEEaTVaYi|ZDyYq&1qI)^JC*AZL? zaqYvk7gsK>t+>9&m4j;$u54V>aE-y0jw=CI6t2Oz=odC3I4o#Hg0q!daKae=3kwU2 zv(C-Uy>=})*eW7oavjzit%tb{UrNx{W1^843klqEi;W?^&P_|{@BxH9mS-zjRD4WK zdc0VNh~g{z==U@Pfrb_iPb)e#J`#2<2{T4M)nt)!F`w4MDH|V@h-v(^`A|9Bm&a8B z*FFb7X2i7}*Y~)-#F`iZ%NUqU>TzgUXBD8j*kUGS~9i%bG;Z2_yk{j zS0_ddl8{a__Y6CzX*9TviVCOcH_Mc86r5SYAum4uP;eZM=~Gx*bR=tyOk|#f39_`P zP@XKA_A6Vq3i_@JdBkftPXPz8B>37gsDCSV2I)CE}FG}Z;Dd1aU>gC zaC}O}%Pgi(Q?BCq6JIRBT1aX)ae2PXtTX^QSw2p~w7vYoBo*9)No(LByg9b)P+Rjw*Na&+3 z3)6~BxD;qKnuGBAm{ORWwPMm4*fbKQfM8-oGL2z!&PwxH!3bu8Y4KPi4JTQEh-n3k zVINKkM+a5G!gqYE*vypN@zI<3h9|^_b_iaZwlO=*YQQSah{LASJ)bhP68C&MD(`7A z4hz3j8JP#wlX0=pT(y%^TQOUATQ0o#q>{43i{$t`1m}8TBlruiY2FFFNslC7iC*DJ zii(fmF!}%uZkafS07wU?fYStwRxl;XqB0UO5Dq!JjtnUzB&Xau)*x@bKS1J4r`Z3^vBFrxUmps7y0`PtT<`;nF5kDEQ z1?Y|e?2Yg&Ko#jy06%-E=Vj9$IV7fGD^yO@_!7Bko~AAC725}@jocs6lm&FOc^zhc ze6?My5EO^Q)ue?~xL!QoY@Vvc*kL(IuJYO1*w~^0i|4YYG@7lk9fAZINm#DLTe9KG z$pmKoQ5HlU$&_i3t$05NTu+-AThc;PKC^kO#v&WqqIDa^0nZS?v9lF|a^P)ji<4Jr zIx&QZU2H9utBI|dJfJ(;m!!l(sm?AOc8K>ik;ze$qNCVq(E1qsN+%~LkYacG8I~ zj$;h=8P1=m`g`L=3d*AwFR7P<;iq_6#*Lnep=I$Spk*>tPFS& zkjBl#TAqvn-wgbD2do3u11^8Ge+ZKS){`Uf>Qo$K|Cf0#mxSQlTqk&+;)fb&v=Xww z=md2Xl0ZFlwxSYT^qOpwQ%h_;QZf<~KPiCqLGEGznra^!D)#UJxiknTp@oKKBqef4 zD<*_va>QX&JX|2cX`3EU7`V_-ympu4(IWs5j&VbFa6YCXjP`l4%!ai(S~G+V=dYr| zniIDF;T42aKDqx$w|qVAU?=!IxVGb>^=n$&rgb+8+k|T^t{hzSn~!y~`M9U`*XLMs zn~D3$xW?d0$CZF93fEv&H|>}QF0T;Y;2=tZGOIl z)->?4a()k~(()>oBb_~=eL&)i?+4OqL{v0C$naqRHec|gG~y{qtZgd5$Gp)gk7hHqIH;N_PTFZSU@Y}}d7cM$30h#w2S&410x5hE#|O%HBT=4+mv5+- z)=Aqn4>wysq!kaXU~(+BcJ^crj)R$kMeTm^X*gk`^KR2d=iMjRRoAQZz6iSKyCPF??BbYuK*Gfuzh)Pr$HI63h3l5ATwyNsFJ*sz&knB7cP8IYH}pDbzv_U z*78^~!>Ta;IWX)Ha+{}fjMPyUoSAcgua7xd&%Qyv8u|akk1PzJbonyIprt4uBl;G{ z%hqEqQ$1NlcQ3Zm&5Oe*2{n8N zI;M~f2=ERK_Qxs*V6Tv#zJ2^50^Iiu?ByGbM`-BYn-0`de!33~2=ELBhI>BiUDQ?d z&-TB1v6;A^+^ZX-dxN}>+3m&B<$c9GFBT{78~p6W!sLCsonEX=*>dG8RIF6l!m>)$ zYSn94)vQ&!PThL-8+_34!$yspG}Se;Zr;MCrLA47)@|C_J2*Nyw`=dxp<}1cU0l1m zxqB#jPcLsDU%zhM{Xgmv(6d)yQ13o{gG2iDA29IaL4$`34GjyAh{U#VY+U@X;R%UJ z$tff7Fnz|z%&bwPKN&N2+;|r1(3W9&hhZCnx#K34W#F6{_86c+(M*Rc75_+&bV$Ki zHGYZ?^M4k=0$E@DGfyL8`!avli*6glD%lZ1Y%Lv5&*g6l+trg5B74hL_7_jHs?wWr>l28szhO)`r?7}2A? zuGK7@m#oRjp38}38ILs4;91A)m?J_HK&=(97|=@sPSPNrD11Nw=2IG55R;)W=Z9T2vK>=fzD`)s{AonrkV{@$gN2q}}5qngKY`G<4cC2YX( z|49FTqAw*&isJGPmr~H`U)&E#`eYT-VNc19#vwh8JQ1jkCR<^dNitd+2|7+@?epL3 z15p(^NP0ozHI3YYvPQSKpa1uC!%>S^$XlbBX5vu(?1ac$Fu{;%xzhtRJZlX1uOEVLH`LU9BO7KNK;kz~Cw1Y}e zbLDlefFt5nP!|0f<6cff*aEZrS-7Y6px`_Ikpv(4`3nBC7cyPs!vzqM>J%^%I~ z%b^TvbI@Z|arI!ns8=ui4S-MB4s!9qT>xURH>HilFC4FprTcDX_nx$m zPHD4;c4N12MYj=)OL$>yRLI0@*>^s7k!%P{C)xr(e} zS*!BCzP@~Gv4ax}q6Buj&OrkzRc4)>ocaf0a;DR9kyQ?h3&Rh}l9GjAWu(B_d~6aj zsCZ>YDD%gzY%C^|v_5J&J%Vr_?Hzx7^H!WL@Y6owLi@S&reMB=E!Mw#(fTocdN+I| z&NKOsZ0TdW1_zjnd7xc>UT)g^ z!e{~H9e%Xsez3^=>0l?G%)*8OKR8Kqdh-C{IRg)JOIDeGB5@W?Yw~oQRq&3Dw6ydz za~bn`g(MA6O3o}6q8HXlu)0KNuvt)aDqpJQQb@v=wLr^kJ%P)K_%pSecI-7CV#We> zacfgPEbQQ$rF7DrRsv{8hRWjS8nlnnVKc=SUm3yy1X{2+HLNFgE%>*n%ygw>ooV4! zwm*r@5?o zDoTeosCT{XF@YKyx?Zk;aZlcpA_>#M5X(qmDM7e1vM3k+StCdOVs2rk09w~Xps3{5U-RU zK0|lc#6(wGF@tX4*H+gPKONnS!jJXr=@=E|h#UNZ(EOgbe4-4O6l)(cCL+I=AG z1_k%Uw^y}5&x}|+W&{~!BybuZVZoL1dBURcHl#Nw0QZZINX?LY=pThA@mrKb^cm<9 zO$J&-2UilFIT%GW08=S1Lmt+bzWpTkn*CDa`CV{aMrxW2>mMD3qm2Ry#w*t8u4gh% z+k&&cbikV+hC}3K$j6YLAswZmcw)QMPplUjj1R;*=0pJvJ^~sm$?${sdAxp(g#86% zO$0PvzsKVZ8w50FO6VzJRRQ&<@A7oUuO%EIpg|FkRTofy{*K^hy?}$B;G>CR}fHt z^Sa3Yhk)#R0gbaIo+_X|MB-f}Y%IgeNc_e%PRF=k!i@szzYvgpBE!QZ-c3M*y~OKC z`0A>V#}xq$e@J|@fNZhEC&>7C8Qw?2t`fG8u$q8|r&k2sO9Ha}5^j~@D+Dx7lX#kh zLnZW=&_zIFQ;Am*kUhK1>9ea69u`plvw+5LBtBopPmnN4!a*{=yMV?H5^pZ!Yf4yj zNtAO>K>c3=8vc;s+a9~pSv)k;g`zEj`^ns&+Q4kX-=7+*C;7}bx9w( z80igzBY)`iy<%~4|E{?cJ_6p}Fyrq{%JmN&=P#_^3+dNI6s-F}@%gx}!-JYmz@G=k zMgOF1RMyRUG@0-r?Q=iap^Sf9?%u?(7Vb=MJhkJupOpbEqrGlzL-~etms3;ol)h#l?p0DgU)o~jFW^5cJF2_!S0%1v=(zk}?SN-J_`1^X%JUnI2mU=Z5as>ya$vwd zCG(@ry^jy}2L11ch0Oj#vAW;y=(I*I?(9;Va!!Z$E75b*3++2OApeHi?W!GA?p>L& zIk#>P;3rSM@IR!qvj1{V{~xJ-_S65E^r!NuLA9e#TKgdXf~!8chm}sjF?KJ0=mxx_ zMSj*1rR>03m7hNB?9Q^c*!)@RsB(R$Z;eJ%Am4(knN_|&s(dxBd=;yOiaXnMEPJ*0 zF=a^p?OPd35g#;fegD6XDIR;KH-F;t!VNo-c>_iqS1uG@^*UM)^4b*YGr3~ElKA>n zk1v<{xw9h;zRX{eudF^;Hm%bkl2^?ugX~WzJv^q>h??Yz`cI6#s-93j9{acZ;0%A@ zY4gYRKB?@Db+xvej`p;AFxU3VNu^8nxauteol(D|<4=z`rTmq2+Omf>2e{5Yty~=8(7$M*4*bTiIQrokCHA+c*F1hkdsyXtH)!n{<>Z!d z%O%qYKM;DX{aNMYthQ$|2B1B{{+R8UcUGBn@JhCGChB{{!#2A6UrJch6&4@;i27M& zRUdccFGY8_TBAMFTLMqo88+~o@^-?31-rJQ{ha2^sCW6Ca^-^|6~0>Ui1_BZ#j)p= z@)@@l1l?fjsu(v2028n;flq}-noc(c|}TX$v` zJS*LBN%_n2&#bO9yFy-vgX-F$w+%ZlgdOO@(}Si7@Dvy;5k%SuRSg@mGEo!nW@4?`ZjxvY#h zU1rJ!FX)$*ZeN_+6=n45R&&y;qI|>0In763QP$Mi;`H~X0Mw^LqvfBURr@Xq417}F zZx`EibwkCvXH~<@Eq~1`^4Z0lR!_gS)?NcSe5iW?_@^Rp(LdmJD2W zDVOQ1P2XXaueL6K%g$|BU8JvgZPN1NYQOTkz3Yt!{gfY{*KK=Tb)MV!(v_rYyI8@T z%8hm&Q`@a^PpI@oC)6)z{UiTlYT$w&-&$m~M*i#s{h6a`JL5MVr~FXAO@YTd#2;0^ zo;=Itx8BWAzT#@}>WI49+k$=neH+j}J9EIyBkGqIvjW@x?v4C~Gp!pRQ9ZBM-j^Eh z26>Da_igB5b$6d%btCJ#Lw@cS6jPzJ2ouq#U8bJ$L@Qk_3pZhg{7B$Y`;f! z9}=|ZYIi5_*EM)%_-^&+hd+IFay$5CEmvJ%U{s%m+c#fyp$Fpo4X(0GRr^J(-Zsev z<>~LwonJXmojU%+>(4?^A2#6n&a7N@;qFh%HSPd?(?5MVQ($GZKtRoxai zxaMB(JJ6?9^V@j+pf+1g@>ZAYoa7ONCb>XBHwYQ7~KZbM9*Sc;}?SePnZsrVq zGkjh+J88X|J7i>Uw^qt?4Hxj;<@RfuwC43>_a|xeG_*B9t5*AAMSi(mVK9sOP!Uq!Gm++p1cO|?d z;olP8mhhH@Hzm9w;dKeGNqAMlD-vFo@REcVCA=Wvc?r)+_?LudB|IbHX$enBcv8X> z66Q;ITtLGy36Dy6M8d-o{wd)h2@gtmK*IeJ{vqK$34fRHHwk~0aIb{FNVrGB-2yTz z(f-C7a-JxmUP30JvAT?xP%j~q&{$2zOQ@HSNocGp<0aHf$RspYk?|7hC1esBEoHof zdI_0?Mhh7)p-$>Lp|n8q3Rg z3H1^(3614syo7oQnS{o&GG0QxgiJzX85u93UP30JQJ!NmNT@eE*YrNCAi@k|S_L&z zLc*P%T39r5N7$t{?Ol|{h3ziQ>}>(u7`8G`Q95<4+CTRX_(Lr0t4^zZm8lzT!rR88{eBs4U5A^Cn@t6Lz2vshw_l;;b z#1r`QJG-8SDUE7vI}y{|ANZx0E8`-Rz;@a7yN9(0p0j+`*+?b2-NJ3*Z=Hb`j!%Sa(nNyrHD0fo3_~=03o8D|&6|Y=qwJ2Y z(yYGSC+>&31J^CsI%l-9GpcR3rn|j>=kMv*;}hlB@<)IBS`hvDd-BSUQ8M$|PjkLW z`nC0ofV?q^`h2L>0DEfxMQ)ce$0|;ZvR5>lLh{eqHp+RNGRAuE##g;bpITJ<;LbQ@ z=i}j@#Z)5xCb!A^dc3l%{?3R=A*6rVb6p$_O6yrYLJzpL2JW`xWV%5)QSsoctSY1* z)!S`8YEUu<9`0x3*#`LQt+O2_C|OP0q;=Xu^6lI_dBy}~cl7ZG%VP*H7}Mw01f@rX zvWw$+90eTQyOc{-jmqg%`U4KWSCHXrj{GulngvtC7C+ zYxri+BxU^Nh56pKpJKk|YV~0IBxU%Eeh&(t5kEgYx>|R#^72vr=O+e|{GRXrD|NC` zXM}pw#g^s|4&zQ9o~(R%r-^%ZU-N0iAARrJIECclwe^DcRK@nYc3B?`r>EM>*1454RXMo5f5_5?q(7zog@beU zuOF%Q*!J6?oG;-&v1Q#3_a3Q6x0sRe@Bvri;Fyohz69R$f)?8F3RsCw;l2cVu8Unx7 za{B5KsyCZr-QgA0r|{rt{}F2P&Ew~9R;Kj%<%Zo$QOmEb@oMcO!p9uwKL>cVeH)C9 z9wgQ@XlE`)(%s*460tfnmzno*16B>f_Qb*^bO;_Z9?+h7ZBb# zULExLneRvYkw17OwxJAws9Gz%;HVTB0wlEeJe z$7AaOA24KFK)8CSW6xh#q+-6rj+_dbAErJ$)b+R3)hU0<)jzj|s_RBp|J%)APw^p7 z{f4S13b!tp(S^$2RI$Oy!RoFV6}~#Sinq^`_R)jXY3G0bX1E9DlT6qAqr!n|otBj= zoU>O}3EQ@!z1e>KI$+GfTJ(*H2WleN34$6cRT{?ec5hwYo>?4vsF zs8D-WGm6)ru?h54ckJ+d)Ww?O4ZmcaaZ@u||J~6#>PRl|J+td{Qp;sk?sn}Wug}I= zfzIldWr22wyJCLE3^ni6u~nyZ?sNY1e5w!Y`a#|L>f6>c+6_5gpYYN@eYd*LXx-B2 zE1=#-K;|u=!BgUTiF*jBcNfsuRpPD^?<}C9lYp$F#9bubUgFLI>YW5MI!N4J;%x*p zv=)%HlDMtJTMB4wA)vmw#G6T6C-Ei%8X6188cDpN#6J+wSYJSWJ&D(mcx{Q-6wqKL zAgdwqY7(z1pwUu5y@kXpNxY(ftb%}sauP2qaVGJiI-)(^2&jK8@s|>RAs~A$py8>+ zpGf?%fci%Q8Ve-;K;ri#epf(tM?k}EiQkg=4FUDn1vFlj_!Ws?63}o_Kz2dm=Oq4@ z#Loz*KP{l~q{L51{J4OIV*;|H57 zg9J2wEaN5A50vo(WPE=aFQK8I3=fgv66%8mZs;rH`^b0+^}S_ykPMelA1H7`FB#uc z#!ILVknufa{6_-nB{cZU@a_UK3AORRv|pg%M#i>#47|OR6%b;vG$a!Z>3u()!D%O0^e z&aVuz<@r;}vuhq_Z?tZ8^py|ApRT}edX#(9a!aEZG+$*|mDt}N4qf*ypSh6cf2_L& zyXVn+)a{=$Hqd;Z6<8V`cvM&x`Q?rY_Jq%@sDJ3uXY%}MC}H>UY3TU3QT^H^0mJ?i#$9^ayx;kift zo6BAPJRL~!2dlG}9$vY+UfY-O_?cFQR~~zYEo(XH4KJ@wE#qsCOXUrR9KNFYD`w34 zw;mP366U3D}DzmnSq)+VKg5n3%FqTz<;=N{nGL)CU$jVSo={E9Irxy#_QT(-<`tr(%4GEW@ zCbl8GZ0$?sm1bW%4D0m5k?^QGITe&+Rsp(Qvw8mfx?vTSJBhEaoU-8QgX-%lDIEfv zM%gU3p!5qG7%M4Pr==DYzPg9`EVFB9sI0W!-#s=whnM%;hk6U;JMW##njGZqo7$LJ zDt|pmn{fP&C*^P5)M%;9ZP+b1ej~?M>B6cgpY>RIV#ZqD-l^8Qs>%(Ylr3Q+YE$}v z7MH3juOE&3}`K?$D#Wtv*!ub79 zh`$SMj5U;)CoX$7NAmi;s;9S7M)WUtH0cwXU$cw#v#pc|vEI5B@w9%zo;E13QX148 zaHhvxPQOmWpqfgzuA8gh>SImuoj%-DQ_1Q4=Y;ld0fdJ)vZ|$2TbJs0Y+4V(hc*tY zr923&5b{S;-d^*Y7;7nex{eQ?ez_yXA8D$qt>iDM`P-udw~4=+%?!1b5sUh_ZeEV- zqqX&s+RB&1c34gv%<+`wPIZ(q{+&K<{*<@ZFDQ`&^pQ!?j; zxG0~MA$qUd8tW-O4}Pdo>n+#st`1i9l@>=Mc28urC_c|IrM?o|%5Kn@0raLk*4_C? zedT+P*nTgbHzxd4JEsOp?Z69Oho1BNtz8Tal!%}?Y;Zg%-LiP30-%Q5- zI%6@N^dBf=27NMdTx%}R>Roa^P~NWo;KrF9ygk!h3qDY~4LNz`&1by*Y~6wyDhEGF z{5hi;m-l7&O$`-;<;cN@jhx<>iq(h8>f6U}oJ}gv>3gPpsJ#B9)5c~eI6pVMj2|j* zKK$;+$|qGRew&Z3k@BN^#zEa7-akM0Gc-~T#SVH$pjg(VQlJnloZGZ(VHk8@T-%*_Sm{TCcYpk@=GA_qdR-rb-W8?aNzt@%}fXzp<&}cPuEW z>nzd-!{N48I_36|FDt%2PW3lzwC}7_{`hUS|CjT4yy_6AQwqN6@FMX5Z{K5%i*(A_ z!@9+lFLQmm<+M+ye7|{3txZ!nf5)5)bV|1M&K;L)bNqfgT{9*3o?+DL7TC{chN>=D z4}Kh4%i?Ae(l3KU2SYPu$c(~_>%O#JYOwCOwwaPJy?K-KWjX+7A9Xt2OlkY=nkKn( zc>m7mT-jRL^sL#a=FP97{SB+SbhcIsn`RvuwVBrY498vLtd$7w+Gm#=x&G#N&9+uD z%3N=JwGYL!D(*&WrQP(C=Q78VJuvuq6j&=|59;k+b>#UcD7xlKq3yDTm)G+0X6m~) zS6tfHo2*tN-0-JoR&ynz*VxwOXOsRL>UghhuC&Ta?KCiz*2@e-d`>r48kd{t(8Hbg z?^IvbLaDfZ`TkS`>4(AS=hQ-J@9unm(#PCB*XkbDLWvtQqw-#N-d?f(*)5dIf1g{| z>oLiLsUI0zC{tXbbE@p&{ryspTP>8LtDj7ETSM#D2KSx~Y?O?FtAjH4)A(pu(W|?S z^7Dk+_O1US`(r2@lx3q#8kN`7?~w!H_Puj#l)+u9?(JH)EpWE5&k-A?-JUKVzmDSi zQ$CorRK^YLF{Wv?N|Zh=#HppyfA7z`ZrkztuI)FVrSiDXp1Ys@U96{e zIu|h|aR;r}v7X1(dg^v{`O?d^?FhHX|Gb|1YojuKzuryzo$QzV(0XdFg~#58CwclY zCmidkJJ(iy@n=*|ig!6#R9B7Nv$^)E4`{uK{eALqUA5h&#v{%yb0&Pnsg-rr5#bGg z4_fC?fk8Ck>_MD!pHyhc^%bxZ$>?@19b>*buP4yI_u{RRR+F#o(ufw zImbHc<9V~cYTMM6;oR~Cpk3HdyFC4C|KAw>C;HML`-o&O~*jQVwq&~`D ze%haK`-|git6OWk4sj2p^%(Z&#lYHX^UTm;XFliUCtYePrb5}xZsdZ{}IQ6hrH;PZc z>R3y??EP}~r!9DSr?1wir53zse!pmacZyHEcCn_q!2Yh~r3qaAWv*|msc!DK_`&%k zE}wbV$JbPQhgc1Ln$F8>aU-y%TC?`HioZ;LMDo~jqiId`m%Muy;}7!u`kN1|)E?h< zzCWgGJEDK^rfQ|?ciX)w@5$xa@7Cv5>KAKHc5GOm>%-<-$yVy2ihqBf6U^JI%WcI< zZJBZ7<>t)}lwZAF!%8hT&hK@aD^EW)U#+3;uWoU#!Z#mL{LB-fHPqP`0;(PI=km=y zSyWwh-=&}ARFCUl_NkTC)io`qI=t!jiuj#*TB)v%o!Y+7{?GaP=F~G6tEtV#IJnd~ z{DR_JpIuo^z4X)Mu@k59_$GfT)zog*!xAk$aDD+B2InqTRj0PTxO>CgK*C?28(&p* zs-|1zx{~9!&Nr>9u3WmlU60Rr`Xd+ADr)bry~j>h;QVjB7+OWG`;9KY%EvyGf5D|9 zOSQ(jOC8J1=la|FvTCXRJayxvHJkh>zT%ZoOSN)v`~9m5dk}u2(W^_`*$>Vgg}D>vB9``@KI zD=VlYj@Ei{@hHzf_pVYwb!|AO&xY09p6KsgEU%uMy|P7(3bdZh?%o?;Uaj6^?)kDu zZ3!QIUn#FnIP&c$UqtZwmwj-toSO5fh41>2Tz}R)7++5Hzn$56P9L7$ub^o;wcGR1 zVO!d^qWo71)UxV^HpA|Eo#pZ$^DwlmS|x0Fg=-VIe%E?bR7SP2P5q{-7w31)qm^Y; zi`?M(I~wx(S9}~=My*-vx0hwR@%CQuxQMA&n>UG94>l+Iy26!A?K=I!(9_#^|5{t9 zFtwvy*heqsbA28Bw_23YP0ChxpkKc7plxIBFBtFQBV9^NwCHH7!?YxkAcd3EZpXlwgJS)#Y^!T48s+vC1C zbtr`E&)Nd@WnReQRln_9#QVqOhea>)(z8D;r@zI^AMi+dk=Nky7hmKY=K9&<@%ZO? zQ!jlMdGax*fA_KaEN|4sqtzT2aru5 zQJ>_EzP>5)@Y-I)&-|xFg?XP$eR0(OQ`&D~ZqJm$ylzvQ8-kW^SImdl+xO1}};p=JmdoRaB`-eagS~h4L`(>8@$5tt@GOfVsRJUy!%< z+U*$@FWVBH@?`vjym9C9LI&!%yc#?me?Kq(m!k)kY~%H@dRBBdZ{n1tMJe04em{RU z{!U)v`Oa3aoH@NC&x>y7*{+(t=0+mtKj+2xTX~CbTw7Lfmg_^@%c2{3J#OD0=w#&f zP4{a2^}K^CN9;ZFcT*~V->agldFw~s_KJz-{lV#V(Um-#54J3C_dBoOzSrX~=l!|5 zzVCM{`1qFdvgl&osj$`V)i3h#BIi}nxx53fYWlj5u_Sti*F|UYGA`EcIn7XsaQ&O2 zlX;6bbh-AGk?ViKo1)`+W&V8mbC=y6dHT0SNAiZ(ceA{a#oL3uEjp0*Xp;Ac;6B_Q z8QvECp7-q(9q-}vRr1GG?ld?zTP8pwctFCu}lJrOB2aUeU&P|_E_xPrP z1xobRjIXbx&2qc&^n9z~DFsSPx6M~B&Y79JZ)rvY-%ksaqRCr&*7(e8>!5oNl^NSUDZA+6oZOQ$Bc^q&_(+*Q z`J)LLzt3`8aBl1z|E7jIE~3bPZUNd-+1sC(BnnQbKC2 z-*~ImRJZIiXOE2E{z&<%Vdsg%CxAE>HWm5AK zzBTrbaI3q`+4610$I7*d&c}uoPIYrW9q>A(*<)o)`3AFZE}QOFR4-~vWw*!5>VX|6 zH?y7R_HgCg&|mvKR_y$G4Zc5kM(%-iuAROa@fiNJm-@Hsg4~$X6%sehe5~Y_U+gyP zixs)gR$h1c>zl{Ql_%jRJ6_Aky}q{gFZRDYR(@$Uq|@`F6}i?fwF1^$c&z-qqM)Y5 z+39YL4Bwacefd~<{G#8B=0_Ihwsv^d%(7mgk~P<t=2!wQv=)1!{|n7_>Jh}-TTS4}Nc3L>(9`f7KY z+lAw&3R-_vsPxM_`Z(giVmI5?9Z#H93zaKgcQ-Ed9_v=^{F}vF&J`-{vxepVb$5~5 zH*J@X-14GOx!Ql=F^eDO=X%8)UUjzK6XpKAUGY;!ex5rqaCyHrE>D#2-8MJQ8*Rv~ zF?Y!RuX{gHmR!I0U|HO(+_SbncI=jn_<4=XwEcOp+ne7P=GU6_M7h~`$)L+$Omu4% z-2Hr|?-1Y3uR=h(1#a8?22OAJ#}j4M)c6S>_Hc9S-fVr{!xuno+=Br>c{P#G%r{8%Rv`E@25(;&z5Jnb)T7QV;wTF zbHr1neWQV&TKu#$H*H-&e#nHUN|eVlpADVE+zxdeAG0FosS*;krMAoYrMc?aDjBtm zPnD`wiemeHmYVC>FxqX)#iz=*)7;`*^M>b6p5Ob$*rKP()9O=gYPe0yO%J_$E2HT% zW%1}~Q@bTi$W5QHy89C4nbP${bi$dn*|~qjdiA>#`b;^V=-hu`i|kxw$c4ao!!xCA zy|R|uV-~r6TINn#oiCp$j*H9R&#XH+x7}{1GWT{rQ%>}(cQl~ZO1Fq!hdVyL@=O^w zs_xFRLsHyoHS`F!E&p8kf7p8$xSF2te|V=mNfC)k6e_w<t~-%@3Yp- zo>?=qX6@OtXU~$qE;YwZD?34XI(B}NiO6@5o^Pz^U413Dwdh5%n%Z~B zIsEWw@m`zUDcee(Ywr9GD|-?y`ffUqtEc-R#{bZFs5mj(*JS3E+-%-bm)_X#u=LZ* z^N-xl=Z5rL_doySJLL84PuBAFrJ#FmF^l%^;H2}(t5n8|V%56)ptZm-EPW%sTYE=X zu8P9O&M4(!xU;%2np>a)cos-g)T;o*bX;;06;i*MY>EY*56#A&Q zq5aiiSTg!e@Y!$(#izfLZvS`~DjeEMRYT9^-mTmj8Ph%tN6U7rzPNUYVx1l=$1C^) zWLo@m20ujQ{+PZcGfw3P@V-5+yvNTxch!#8VAmZ#pxH4y=i~n9-1U2Y^c^_z16Cy& z9NuE=k-L%SnsRc&4^Wgd5Ud=zn)|w7Q;1~Q4>*2R!KXsqpTaNs)}*lS2e?MtL+R+% z+~{p5-baaz!21n)fmT9CDLxfrd+*RjVB*tb4QlJ6D4SkwSM0SJLH%pP*ydBAl!t9R z;g07`M?>Sr2{0*{)>+X-F%l!#-`W;FYaLi@+A zGX;|8b5AU-Sr8*Yd}ImV;~up z(67JYB&B!%xkZJQW6_5PH}G*;%xYpXQaLHLjSv9V=^wsYg&O?fs(q|gI=TxkCR z^u@RYSYP%zJ#b_K8J|jH)fIz~kSs$)J}WwMK7$`*U9c$DfAYOBGOTBe;1g*{{T`Y5 z+YkMrFh3M8A7MU1{O~L7)83E1y`~y*lhHSLNB>aa9H#^h0*|7~z>3Wm0e#64D6la4EhjQ+>a14|qoMHRE$=!?_j za&L%c0gB%+b0L*^AB>J3_+cl)!E-l^KIw)XC3C2R8J;iZXwDAbIqyo?=Ser{JTY$+ zdBR^a!()SAd$7aHFW3iM^G&5&+`4z8=}--xe%E3fcDVP{VK;Okqp$wTvtsw656p0> zz{z_k2+`34?%qWvHlaoI65D$#R~O^&1xmf2e})}C8h1zk=j0dkY6<@N{W|!2l~Vh7 zZQ0>V86%P2{-waWuHt$xrTYF1k$(did&-2DsT9B((dqVnx%hjkQjJCa?C_I8pDw4m zCBgM;f^ybT`1`UA%3oI!={JCGbjXp#8?Vq)9{Ke?Sb@K%>zC4SfPKEl&UIEE==}?= z;HBmEA^7{gQlGZFv(Hx;N;pdcYQ0r zWR9;tml8GiV2A4|?U-V9EsDNi{;TW3tabIYuZK<%`R6n1^S6Vv8^2h@`7qA;bRvHk zCx1F2KYbke=|uTqobuC&`h#)mk51G-eVqEI6YWPIr~T+e`_sp1e>$N*FpmDv3H^g{ z^p8&HFN~wVbVC1O9Q~&g{RhVBKXju1!8rYoPV`?Gr~lG_we)}WtLM-2nemzZpU|(K zKl5jXGy6X~{15q=;mrQe4*#S4c>1XSv%~+WKV~?y|K}n^N6(-2kB6iF&kp~i{qS(q z|JmVxv_Bq>`ah9>!=L(thok<_4*x^{nBmO+Po&@Qr~Wd-nf;%A{vY~}r;qwS`}{xp z51u~i|3rAjpZyO%AN7BB_#ge38P4qgME?0q`nRL!4;roJ{HOi+^ZY;U4>O!;f5`md z5BtRoXWB1z_#gHUKmWJ#|7ky&;lI}({9%9b^na`WKkYZ3{%`FEf7pLK{I~XpKdv8m z_;332=k*5<|4skkkLwp6{+s^7AJ;!-c*Ae{4}V-gnc=_ppFgj^%<$j)-=EiSJpJGL zFBsxS5tEOO2D&hQ93}V(Fe{b={mIis9SUYR6d2J}i;WVRC5ovm{xJ1e$umdgy)rcX zbc{JJHJxRa7NY(OX~@4*7Pz@^DxMazU~ajJ4pUPI2QTEOCy<4E#4g!D1Q?qa0C z;RsF|7wHa+8I@xW7VE2l?IOm1B8N0EF4Bb;9zG50L*eB3a4s_(ZRgC~aRfg&=3-gD zoxcW!vyT7gV?QE+f56}I)8FwEKK}YUe)_M+-+x}enRej!@%!KL6YKto9RD%x^zZin z&+#KO{P*j}pY_KK|2uyAHU9WJe){MAE3Q9($4~70m;c|7pIGA=_G}yK{{K9Ng%+P0 zu)GNWzbXq`NEq!5%%xP{L*TY{8@HI@I< zb!dLqG5I5h1@M$g%(<6%AL0~Df^wE;LBh9Fy4;71iTkD=sNEfw*!2DwTMkm*>sJ@< z8o@e;#^L62u3(hfT+2Nl`!>J@$9_@}#e_%8}Qo57ZYlvl&0-^ggBjLqM=(&+Ylj%RFox38eO3U?7GMs-Eiq6GlH zPulkC^%X$t{DOxacH z58=RQTv%v+C4`GEd?yt702Y1ZRLKi`McgmG0~?W`bfq&c?D|#1r>l$Da**HWy&uWOIjT%G=&O~>4|Rf~76gHrJd^{mlW5SEp=@xZkfCf!|U^xd-q?xaquxE}Nt zM7~d=hxWFBa-05U(+boNL(YIoWDD>qWj4t#t%7BV%Xc)QeTkyPpQijseGS|J>ls(A z8lh8_Pb_0rBYd8p{$i8SS$6$4i@GNFZoubbNl|gE&|bVK`a>UEzKC4I1;*5VHXS#| zZcOn~KRmKf?Ks)h4Y5LkyblKZAwJ~ofRF%sj(t`)c9y{aRF>^qfu7;Rdu#c5a~}@C zVb5FhMEUx_X=CiRbE1Q=1iSrSZEhdMN1VW zlJlHB@HE$DO-*P$TMkm_oty6z%k1H!k@W7H)DHEFli2jmzMJ7qYEx*>&CE9)|2_y) zYp(1}zAa3fi9L2t7#xP?_Qgle{G3J`HaPoJ)om1l%_iFjT$@2NcFEd2wE?5O*Ze56 zH(HGL(&-R#0L@ABKO=W+^N2XDI;2WWEQp(?C)*;At^Ew2q|ORwI{Faxi_tRIsWdNW zt)i21k!Zc+qScOzbJ_B-?C%0LEv@$An8vZiBu!)4-=#FxeL6R7rPw;vi{fguJGYs~ zL>kNfs?%8ZSC}?OYQ@c$IT|z`lVom_0W{7v9Fn#h@>elcXb04@~gWS#Ya~@VU z=AB*ry{@kKIDL{u8n>m&3+m0gm%C+Fy2B;^jow)q8F`n!O>Y=nvzu0Di8C4RY=WFeW|cTY#J~i9lGb7?6Lm0yhaHThm2RwV#~`>f9gsh7cX1hMe^=$8@apkPOdv{JWW0t zy*F=bxZwI*YIUzl_W-&MoQkMVTp38u%Y0aMTkD%E{TgG!dH-{X)N;Apce4IAka<5a z)My|iuPbei`}KY;x`p+TTl6$B>?h@AB#+>$B*&uL}#m@0rG2Plg}TDWiSX56SV=Fa5QAKI=)a zCO2DNXZ7T|*FHa38{MNb6)tLAO}O_ak1^yuKSKHpy;kzH>>800YEiIQ@~X?1K)>mu zQl)P~p0kSe_S?Q@^v9a~rq#L^s6)3K;bHGYp<6YNMRjsm zP&KaxWLg&~0Y+kS!he!k(!1IJ*h&2*03eMV;g3g30XdyekA?bJyO)iBRTi~bc(ro*!D|CX1iU$%VX z)Gw8&Ul^x;sYLz4IQ2^<>KDeTUm)t2tq7Y9Q~yd`U~UeFO|?= z7)O7B&|kJbjHkbZePGKwj(wmK_5sGR4^+ZFz&Q4SO4tV&$36gIAK3DaXCDar%a(T> z`%5M4FN|Yl{RP7QvgIAm{u0+Ww!Gt9->Ag(4aT{?QHkptjB|aX z64y5v=lTZ3^^Gm>c-J>#{J@rXobdw?;|CaL{6Hnf4=~R7fl7=YV4U#-5aS27yyJ}@ zi18U)-f_lfK#b2|obefz7@xs7<1;ETK7(<_XF!b49+CEJyzv<^{>>-jjWhlw!}G@( z|K=0p-~4gLzxl-YH-DV*FP+SvK-wQPnEqlV(~0|I`Z)K;bmIP)sNWtK@BWyWe_+cy z&in(Nn17&;Gygy*<{#+e%sV*ZRR?>O^kbYlLDKF<6ZotQtPk28NpC+5%S zBRgbeVqA8Ix#=VmUq1Q zN%DC;i7dP3#a>T}_UFc**CTHqETq}kWVJEh%hA!14$@NJsLHF>5SO@W9sWSSW7T~X zJe;^rG4EqW@F{1~UJ~fX!e7t*S#&I^4@Zc21pHdxYJBZ|bJ=hU1zXZOF?U`vh%Ouq z7+GCJ!5-gV@ZLNbA{R^A+l+Kmu(>lgj>RRz6Mrj%CEbk_?8*}FdCkc%EaVe3BHBj5 zB!n`xq*K5sct%X2StkXPDVgYCkph#ihgEq!XrN%PojgLXr+~$q1IxaMA-Yv;B&#_E zlrN2n>CQrQ-p9Bm=?B1HP%w{AriOx6WSBd+1RAb$CO;mUT{L z#HYgHMNxe9eJH(|qLZasQ$bFddSB!2a|(8I;f8JV)8LL+{!#4(sT6F_s*)2{X+WJ@ zdUk4QI|XxdIG>%623C(P%n$D`r(kt;H+x#sz%}f4eW_m|1=G4YMRvhM*!lIc6IbJF z3bwGj%+&fJs8(~S?Q6=XU=J&rFW-0wi|kUz_zfRZuuf;=>Q4_rD~6%CY4uwQcD_q- z+QM|$VLMV3D1!1+b+F%RlMY{3FS=@2i0W5m%GC2W)1kg1n%{9nD+S9LUhujt9lo6H zkGS)_jDnTv-xHC|fLS6tYSllY^^L1&NyfGru(-vErfQ1zxk&ybb2Tvo>RyR6dbv@0 z=}zLU?HTYhd}UAly^j>^E_O*lE)#fn-M*4Te?q~kiy}PjGNIvGN2{qkQ{B!HzCneScpT#Pam( z#jg86!6J^%;kc6plxn48iS;P{D#3VzFIk}FelAb+<}C_xUH0PEqHNIhw=?(AL+u|L za}{&QhU5_`srkkzJu@DO9ZA`+o7S1V_fRwi`|6~V+L;YMa-%P==g*~Jr2ig*jLzDZtP#rkCiYFTNmxXQdj~ThJ z&ttA?<^?4GjMh>G1Scn?M;xsG zg7lAjzi00w*t0cQ2 z^@BVp?zmI^x&XDOr+ltwOaOTkQnZ&2Ooz-^?k z#;ywK*W=dNxoLFZHGQCIV267C^Bl&(WmGNWVV$2bkR}fW7k?*5?02`8ycz;b0WN+56En?pw$Y zM99I41f@cdNnA0rZx7n{WVda%u1g`9i{~24pBtlK{Rz)Tk_+LM_@PUC%kwB$_EWd} zy@l{Co6n`xeSm@m+Wxd&`WQ0eWFB%DA$#>f^`NxdV=z2d^4(@4DnEDQkCxQO5ScN@ zGbI(tw^1?l&cI{PjuqP}@D-I`{__^kWlx~%~_eRRZ6ui}^E} zUs169eb?mHmB1E}pJ_=2Kau_kRBjI_f$b5>@2%uedC#8p2r4dtpK;-B6Aelz*sbSL z#eC1;O?g2)1P-D0y=%CAgw3YJ*|?{Dd&^Y!(iqW9xoLCsfqby!{=~)SDTOY(Qn9pi#-dz_#Bqx z3QoI}huS+u_vG}N=g{nFc0x20)z9}E$?;-kF#5T7w(d$)Ub6<{)h13_bEZK_dsoLg_d1gW}rFC(2$`>sqidEWUFI{44{w(KcJ_B%H| zOR*e|QJrV)OG5osF?nyYOF1mj?@5g;K;_RgzIOjXIf#c{{ruPg)nEUm!x;nR;H>EN zpnf_EpRdAWIlBU`1Po1kbP!X=RHg0?=~RI5^CL!ci+I#AbB>qN=PDq$hhrAahF=|% z6qsW6ssh%xPMHwzgXmMcpC(Ux1soS+uPi?~SsinJw{e=$E7*9pU+RH5w>q{^b>LLQ zD^PkE;{Jh(%H!EJYiivqF#BR!R{a*~%k{l8?@PRfIcD$q?^*GxV;AUJrlzl9s?xC7 z3~Oe7(i{t}zlICT^c@XUQT*)z*RfBpVcSC=iTjK!3MTdHbdPK$G<^_#a9{`0&-{9k zulAMT(y&ADi{d18?1p!&@cl|Su_AS0#8K4$HhBcE?W=@+Bh$hu2L;rzrLmNtWmRyA z^X=nDmMA~5swtgbRnR`qOf;|#h0})ZEOM*h=KOOe11tH|u_odBePdN%zfGu8D;QnB zE0$|sUi$`$VkXun?M36AWr^o@o_qr(*8=Ui2xbp1+M-@af< zHIx>+PIU0*QpZ-c6szc0gO4!h#FP6*kv+(qU~;J%QX&@~ZLLN6w|Xx3mAY!+wLKma z_7tUeq=Yg&=Pd+A^{<*1jl%Dy%yhGS3xd~0J5`cV{TBc~->tWBFnX?Ijs~*V6sliV z*IT$eNq%O;Qq;cX9X%(P)_}$47v9e6r>J8_-^<-RYhcAD$&52H$R2Us3_Fxt18dtj z9TLZoewSyZCUDe3@41T#obh$&dUx(tr&cXIyAX7z@gTCl?J_;vf@-1ubfTQbb0mL+ zG*|7bS|}d=Qt)^tx_&d-Eslu31CUDmdH5C5w}jAhTD#vt?vx&36l+0b|6~*`J{7lC_M-GYNb>MqZ-Sj=V~E&J(N8kdep(G&5>U&hM@Mn zV{a;(TLEa&3_O=1`&T6-U=mUf zA8-5J6E&w(u+y97n7yrs*=AZ3)Ur_h8cp68EcqV74epCy_D1$#+eiNftM{;Zw?b!y z6&er7Bu+57`yN!9uYSJ!4cW8Coa3Vd?;(0%>rUquRR2z$H%cfUV2Q#+?XO<-6wLZE z|D)p{fLr@+`tF-Z-V;x^)RldJuIKN(Bu}C8r%KO}nf?*ZI34i`tU>)PTuv%t_eZ$t zANk3)2X@fe zs^#q_$QzQ#Tzd@3cUkt?mTyhq;h(#t6e#>zbwco5O z$!X;+5Vodu#TjqZ{taqR9i&=8f5!5ctzX2|(XLF2PxiOMBGaHZTy?1azw;I3KW+v8 z;>!7RmmztFo#Sn1e1aqIyfdD(q4;)pw-(xcf&)crkq@4t`r`f^RrTl-SZZ$jkhvP| zE9T^oabs#5n2X7~OLw9A@CsZ*vu%UH6SH$FKA`@-(^30YUK?=tI_rI*q44B)J3dcu zho&Pb<#bMDe|R~L3plld$BT*xNJaHAKh$2VxE*$`+pMr~50Xbn(_l98|F>#qVX2e) zEL1;($`ZaEz+189!^lmvul?x5H2Inia6F{V`}!bC|HzP)-m=fIX!y`h?J0 z_8A8EIM1|Ljr!w+g~GG@Kf^?iG$q$YRG%Z|NVUGe3A@sY_e+rd<9@z>@ZlFw3b>R0 zRv0}OKA7v~Ce{f?MhgZ-kD&T~CtYEGxD!kw`C|EJq5c}x#5K^;2?sPJCjYqkhJr2s zdP;h87xaY*_so5V?8ih&A(4zO*uQtkQ&<{}r*ba6Yn;~&uTvu9wzZ)CeA-g9YgRSeL~BF3~v*^HbVn*!Z(}(F*3w(`?U4VN zBPDx!P9Xm=({nVA#g;L^&euvH3;B-;ICc3%XNSJ!m|#HTymT>essjy5D6$@9m}j3+^C!zJ6a>k;niIvA%ozZyE0d27=1@X}+UANrl;+Gj9VBT>u=n?~rV$%Bi!x_Lg zUwE>9D57tDes${{13q4yPa6tCe6AQn>S+cny}ek-_ap-<>Z2V~j-z;f>GmIvGJuC; zB_HPzq`%trv^l;ED9F;ArsBs@E{QF-Bzq^ceRnriBdUg;pc5PCGhTAKkLLi%(1)**eQ7vJ*GV8D_zN=y%x0as+7 zkC?AU?b~&XUZ%!?Q@fp86jT`?s26M-pp5E6;LV2W#SDmCwai~ajse=WVZyuSqxN0= zvj6;C27FG=oKKfvfUe-2_+~K%$nZU}ADhkqKW8)VsZ$vsFOv97T#y0L4`GMoLsyV(u2w!IIW zuXKajHL>7pVcih3Fg5F5U^j#rtrxj;q#N2aDPB80y1{f8Eq`cVH^}W?|8&1;H%!tw zX;Ea@4fi&Bxb$!AhP68ipZtJs_<|X$eNgR&*`ExqUY6^IO&a{=%E-U%0?qy_u~WOj z!7%4T2TwO-tW&lW_|XNMcC5wt7+vsv71#0lrY@jWMAHMSyC9}p$A3y`7fAP7U3Prb z1#=X%-ds=af__bdv6Smw@N)Zb^QDVjAV2xqX2ZZPDD%0^{rO-QOlfhbGIZ*KiCYzp zMwoU1bwuoS%C;^rx}X_!O|uJ}w@16#Ebjut-nNaLvRyEfO0RSm>w=|a$6w}5?1H09 z_71=O(Frp0OQ%2UMAr+yOLb@8cY>sECpgHgKU{mS6KcOKTF$uI z3BB%Gsx@ajL8$EY;&61Gd6;ne^*pCem`;hVKDN6Pd_Tsvr|Y2emWQS1tnP&6@S(RHenGhtNcGt_LpP^(+Vz>wQXQ*~8$X0yY0W*GXemZco15Tf8 zb1FpZ4L5B{To|g=0Z02CX6+F{*Yi6G^Q0Qvq4(0Q;#bIzZ@{}l%N;!1K|*3|RXYv6 z53ROy1(m-YWKKMivPOP;trp5TY`@qBKAJQ^ev>u`zd5vTzhoO!>tP!M8a{zm)~yoC zwNFsCb>YT9(@)@4TV=IZ@)O8Qt*K0T*9uYdqV-)bw1SuC?1=Natzh3$Av4C^3KNg% zE8WUzfk)T9y?mWpK=0~uDa*MnAiUGtRr^&lr2mM!Gwnz-oExota8te+CK|jeZmVp9 z-unKzsc2nf&76vZt&&Y}<(~2>qx?oVwL(I>c26VRZNI-}^>72^Unuij8`=P+8`rC) zENFndg~Hq(P9Gs9#a~Y3R|D_ytb{!-oY28 z2*E=0TF^66`5}ewV|erQ1G~GcVX{k8SNnxGV06?h``)}N$ev>0Ab##O=D-Y<^+Vumz^ZS42_y5lC z|DE6eJHP*Te*f?M{@?lizw`Tl=lB24@Bf|O|2x0`cYgox{63o3|2x0`cYgox{Qlqh z{lD}3f9LoA&hP*Co!@88_g~9p&G+-?6ErdZ&yVKS@xzZmCXn;~B;xb`zlGyJiRS@y z;&}j_cpgCiU;8|ufp}i=pFS7pQDe#7Lp(3&IYK^fAd!3yLLhw`UNG{#SqwXHTPsvX zyAYB>na?Yp(NBL++3{*!21xHXHoJI#F1^$#qkB*&1tKF>Ph6RjO2=+AD`~gf2HQ;{ zT%zLl=y|gOEw9ZL%pzJGT4UaaZY%_8S zpnox73h*oc!`dPt%=~BCT*C98vO(keYLvfV3cdRY%AYTI%E6APd+^k2=vejTR6555 zu0NX!(d0gycs_&&*q6-(4Fjr#D#65opxHWTl0kb72R6S&RLwuehuXJZqD zF!4|gECPLF(9Ve-2+1!=UqO84x0pa?Trxh7x(3E-hbe5Ff@|G54HD7zW6UV1{Rmva z+D}~BrZ{YSzasIT2u7Swv?>BZLITKgllae23{xh`Nn#Iie$NqdpK=lnizf3&p!S$1 zDTQ(=r+XZFv$@Eyh<=mM8-1UE2&5+J9%zR<|CA%U)cpddk$nDm8}K8d;nO=2Iu4>g977(vh^Y7jJu zogJ+7NW4tYByJ#R5{L19u$i8#2s!>hbAl#uCP9;ko)hEsL*i+ICQ*x^Nt{5?Bo^ZP zbYmEa{sc{;20@d^L(n9awzBdk@hm};XhhH?N)j}QpYVOeF^t4yf+o?2ph?ssXc9#T zn#87NmOLarAZQZ(37W)h1Wlq0L6i8kiIpCSr36jlRe~nbouEnFNYEro5j2TIjjZ%Z ztRQF-6A79`e}X1)7eSM_oS;dZO3);B64wzDO9`698w5?_ae^k%oS;e6AZQY$2%1EU zpxMZ>3atN>l*GJqFirPx%ED(K(EDp%GopNA;BDLNg|+fB$i5Xy*IM6%0vU0o#2&Qn zktSTAEN~xaYqIqN5|Mw)e2Xa2b*WIHXI9Cnp{|aZatCc=q=V)@<*lo>qx17isg4)2 z;r^2eI^Gskb*w?&g?D}))T6ZoYga3)V}4b>SKsDCi?-MCd1(}MzNtWEWFge@)q7)` zQF?yPu4lG9fwZVaYvaEnI=1aVGRISBE%{jWb{ooHZ|e;H6N6Oykr2I>m#dp&4 zsPqbTOu5^sCZinI{*V?cpM&BjAMD^tr~pj?yHDZDNZyF&_r$GV!I^!$0+_f0T6fC$ zaa8U#M2_4#K`3DTX)k&!!dE((z2U@4zx7OzSeN zplKhJoZE)vx1|qA_twH3THkc3z~!hu>h6q0z60UwC-+9T3#0c8M0_u4)pJ;zsx#2ORfP^G$6|h>b+UesLj;$p3&ZoT0U%P*R-0k6A>$1=~;bcXJDMBBireE!f=gY-N{>#xNNgu(X zSWsv(bp~p$X9@oE8z87LLf2vOJaw#|woA|ztzUs;%)JTK*NSCr+vp8Yd9pG(@F7|k ztfP4K3x6ZDO`^)#yhH1Pt1>H93>)EbWpbi;1k#uIN!jUF8o@R${)Dm3B2=HwHXlDV z!tG;ON3)I5y4Kvhnq=iBIB31WiDv|zPkAPJ)w2n_qn5d;Y(w=Ue*C)}y$L!qD$Q1$ zM(b_`wy19BZ3fjIbEEbsrv6??^wVjEN2*C9VKfPKtgQ7tEwmX@jWa&ig`xT|m}P&t zrWvS`iF;oZqxQoB2Fho*z;SuOtZHZU9!5Q_+{B^K4jVFfp`57>wFE8EWixAKpl{Pw8+{VsmE=MoMQjpqftMpmM5>RH8i zmtmHR)74kAQUA@~@vY`=EL=l=ZMVv!b>*1F({IDq0S1runlDHFKcBHfQuHQz&#@e4 zJwp196;BAE-iCn6ijwWG=OTOXSV3j!U6`X;J5=X`&X28j5tdDc1A6ym&-5eOw6}9k zbP7}%>Ptcck}uzCboTUAxL^~+<=2Glm1&XR!mu>xPcVOx^h62C+p))uI~`&UU6U?< zjO1Eo7n+E9@ za-dlEfXp62w9dPsW5R;Zx$ykCqQBfL^d4TULqVEG9&~ID?w`^+ALYLUJ$#-D`jMZ*MFJOz9KYYWqoJtrQxcEAvnFFfRfH(c7t=AJO^P*IBdrieQ=B zMqKbysEE8cvN#;AYsX|AjHQaN`ki9k%5G*T!kFn*~(wb3yRkSfa?sx{R4P!nNq?p&g*X!qWJOe42J_kV+q#rcS zGx1KPaKvO$R?-(_zk9Y7Wnj<2?Y5h7^*LtVsJ~?*Qp|VCNz3yN6ZUwb9kF8eGtiK zdU%`qjF-?7rr2k91zitfC)6*#{1Q&~9t|1%g2F?>4;arWNBb{|e*SVF*&~;_IewAl zV0*Fe+aWh(FDm%gnM|yJBlGp8P3%#9xBpP{+fV^dr)Fh^?L+#QIM-;&$qKmFPe1g| z49Sv~?nM?nE;MPqb5+@P^VaKUT%J||vQ z=>+_Y?eB2=L1Kd+izYFD4vQu+Hm??sPom#$ z7EPiaCyORg>K5yMn8XG{7EPk;7;B$E5>4;3Xc8m#vS<=3rm$!d{T{RSl_N3HheeZE zv4lmF=+eoW49wk#RNQ_1L z$)rg<^_WGI=yH)olW1(mqDjmI7ENO8R2EGl)=`0{Phw3WizabJB#S0d$c;sl=%US{ zNz7lsqDhRvSTuODvj1y&Wu?#D-Zcnncs)GW>iJd*WF%i7t*TnnX;AMU&|F?KyrviC8|1W+NK& zFzW*ye)xZkJsug$M?)MY?-#OSDy@}qDctk zuPy+|!@^aoujXFmUltZ!U(Jm3%VO{bovG`N>6BmxIT4-?)5<@QaI_*+(n6 zsOM1$Ke%X0C)YyKY3p^09`5&+13S2)XMsUcJmn+q=avIYhi&HiTW?W(aKE-37+rrF z1O=X9C^V0)ETQNMLwrm+0ha$v!aZ)mP@K22fyshxm@Cnh$Jp1nx;rJaEFwatlG zwBC>KLpuRma);ls@tZ$|<#%=hmO4?u)nDxlh2>{<0+xO!d9%mnV}xH>PHf{) zWhPSOa6hnI*wmy#(=Lm(6qestF3g+r+PlUwC&JGw7nXeAC+B6z0m82<7sf9y8&!5J zmU094BRk<@?mM8dkT~?f(gH-e3<6m z{vF4@9;C4RnDSv1S)S-@)9aKL+;1sAcH8{B)T{Ojlr6eUKc)QG!k6b4jojZ)VfiKH z#~vwOHdb|vqFCa7NGD=`5t)~L7ha(3!u^g;#8P*RiKd!VjnbW-Auzu-M*)@cSu%rAB^S&hHXNIf(oDoQ&P%RljlKx;usC z*K;zK6k6~`Z|7MG%a7+|EcDVwakrcZ${yTr=VYw%)GAZ1bax8NPp2TZK$|~wq4Rl4 zE$)|75aW}&y(ahZSqjS!ry$mS;?=L4En7R+=NcQOC}_dcYsKR>b< z`S~;CzoIvww)`J`j${A+{4@Sh?AM0_`_DeVr{ItM`b@z7vk!T`)PL{B$4me3R<-@# ztpOZI*&mMo@E}`|iT)hFJ`*_pvk!Uxzf1prm-9dC0nD64(1*;CN&WgQg#CvFCZhcr z|3543uUJCZuiva+9QY$VzoY)gj-LoPc`ESqnV{ga=R(ehhJ|0acqt-L?byZ7!Vr#whadzhY)nU$TB`zVi|Ur_k?Nzv2dl4qsQ%U--JuXy#k zvg%Fs+nU;Ub@lH*d~9fJYHn%$)Yjhd`AcV4H>0PwuYX|h>$jor!#_qwe~w`s6F9lJ zd3gEwCr%QWEI36-c0?o|a!qUpx#@241y@R8Zv&(*0H+PQ%o?hNQCcAd;*=ss}_(9)8hmZW9 zF8}}O{QqCq{~C?8n(MUIZ_wVjNoTX}7QL<8^bHJ+wj1x*$*TYH!~Z`~{~k_u?pBrx zZtiC8R&K~H612UYlZ~abBZj%V+Bw--npsLMkaBl6H?wg@aon6e+-()?on5WWh~H+` zu67n?OtXrIN&OZk^;?*O^8qt^40G|Ya&>oBK&LokF0Kj|wsubVxh}3!?B7m480KW< zso-N}=3wSziP<_k*`O?)Y)~Gy&JH-w1_|IUW$tR{ZiakkV3?JY4bHdlv9e%#Vk8qI zW0*Nw;bMBYnPDENupUSjH%~h^X1U!wtt{=_Y!$5SobWW32;O|!})g_nnn<6`CNflm1q$IR6XKj|MlCo@NsFnNv>szW^1Z*d%*Ev;Np z;mA0SR$eHU6Prf$V(H;(#w-Gxhw^c^azyp^8_&u?%FWE-fSIMUD?6T*g~vZ=)ZnPG zQR-5zRxTdq4t8j?Nal;2U%Hzyi};(o7S0aNj^=jEY<|VFwR5ogjW&07useXFkm;DY z+E_Wcvl`sR+0`A@q?MbMg1M`ikDY@ZDi}JPoLxPwY!IQ~oGL~Aquy#a&`PIn4}#%ysR9}ojqKcdPT%R<+gRVa&mLGLRv-e z%skvsPe9^XyIMI}*s`-B>3^g{#6cBlX8GGW=2i~OLb3FeDIHS}2?^2f-}tD&B%j^? zynppSGK|&Ne)TVs&+I$o?|n$an2ko#cCJ?J-$>i+%+0OvN+-jax<&p*0^9kZ#w2M} z3BP```V!t=mLBe?O4!B2`yI1U-Ca@n-R+#6P;)W+B9n)ltlF5NhG*)?FP@`|gPpaV zmE|uUv%eGFos7ps^tHv<6^qg!bHy77R{=DKLdf=8^RszUL}AdWY##Hs0N;9SovtA^ z#LL1K0&8$wgH<5Z)zQG7;PhH7AK}go8?am)wXrmWYd7d)u>?PepuLE2OPn^q3=lHY zp&?}Er;6hmOa@0CY$lFtF)kc6upu61JZ-EU$BkG$jytg@IO=1GI2vHlIIhP+a5Th@ z6X=dmYnujUiQ`&K4@Vu0hNC{Fj8Jpk8cZC=wHP0cI@l05ldq4pBV^`ZgHYQ*A1gzs zyJZ`eNnkvVx>yiGJp&EQ3*kC_easd|4a^uv9ZVC)EtoQnYcUZVH8Cz6wXhy8=6UO| zdK}kdB{*)tGI89DCE}=yh2yA=9mjDE=7Qr+%oN9Mm=2DH7zM{2m@JM)*i3}_Mp~E< zLT0%Hn0(#!7$1&?7#D#foa-?|{WaJC!u1;4uug<)H|Sz5Ox%g&Blu+mK0&CfqlslA z+^}gqmc*oY>R^ckMk8dNA41@9gnHYwF<*rGMw>7Pgge)0p=AN*eC&>Ego2hoSg<7%xKd$TS>{fh(RG^HVl;q33kWBbGT2lV&n_ zA7q~|*JapzC-})szRb+-3@{2abw4GF5&lpznf!?CH*|<7S?YAqjGN%+Gx_b^)sG=S zV)B{IWkW8dpgoehHJW_cr7?%=dGO~~D>grl`yhA|2c> zT1ndEdaw*CAG+E}#{a-97ne=adwBNo^w+f6Gl=;3`X;{jw2$!GdRJa-tUSTT*Ik7l zM*H$5D%=_pvz|@x@%3L3yXQB8CjZ0r7d`;N$Jd=DPHJd`W4oea2ES1WKEA%q`0Rxy zIK8BEax<~==jf}5_zWf=?c34;XcHGq z7x)^~wc_9=aUwp>?{xX_1y)|jcKEqchKS$KjGsGkeJ9kL?c;B^BkI`?=NtGYb;813 zv-^Cd$$B1O#+PXlMEf!wdSJQl6e&N>FWZjxV|sgP+GZm!vK|JR@fQ!F{hgKsi>+{; zwV03x=WD)~=>~p_M@rcfNqzXrj8BvD?S}9{FE!u9B}9Cj?^|2Z4dT_ck}LV967qjz z#&?mDM*E0quL(Zmp-#ld`4yAUeqyJ*u-ddKszm%DJbnt=U(L$Wn!ex}(U1Ia{^Dso zJwQKcos)cH4H5r4Grlcdz6TEU@@7|jCF>vO%h>4lz_xX}G6gF(5%Gta@t;iF-vbNx zH1fUDUPs7-^EF?F_CQq30<)`y8;JNnnDKRDQhVUcf=#XxTeXPzIDhfE${u(xtrWko zo$S9O%=k44eLb+-_=UxUF`_^E;e70iP%rRRRNXuDat@LHC^P<$m0~Y2v}apxzd)4B z59e1&Z0dzuuRjRB3?cjVPiA~$F`Hfpf2b-S#zDr%`CNPbd%@r2MR5SfMk4(&X8f6h z(Y>%FAnlW+GEpu+oFCGd-U}~mEu{N)uP5STG!%cad_^zRZf*CP*hZ9>hVxyj+Izvu z{^+)Qin>HS;QXXktPfsR=5-`H(OCR^oZn+Uvk!^{&p+s`-a@3$!AxIft5P2buHAU+ z#1Dc`!}&vL>-r!lKH&JN^MpKpIKMO0qz}%jh^%{kkSK3H&NpDV^g+13wRW67sm~Lb z=^MX1(FYpK<%ZG5*sOeMIDbgxavxCN9gWX>q(;b(^Z8`%^?{o#cf5EcQLcQPPm3$) z1Ec2?m)BbpdW&(=Fto7dK~*1w)*KYP_lko^pT*za)(0Pp75q2aND=Ad{8QoI`ylt{ zJhOLtgdXPOd@sjI{jgX+@Wi`#(w=ZJ(;sOO?+5?oFFI_^342Jx`Pff|et2oWShP@> zD3>43H_kzRKvR?l@A!Wss>u_H_M+kZ zo;Ig`==yO(V(C<}U*P;qy~F(wq260`{wHBq^KrhzzTke~X-YHMw}7x47!Naj9ku9w zi2LSs|Jw?pKhkji@vPhZVDVhqC~S%bQ9n3exj(ZX)ZQg3e%>*Y#m~q2dY_&m`6W!g z@VP8t@iAUz`ZeKI{a~vaw7GkT&<7gMPr{n|VO_OLkpo7`kMpA!F_0fr=joSa7z95b z=i7>o^uw;aFJtmmq z$NAwi_76br<4}nYXgfX>53K^g`CQ2d2SD}Hnd+tMiTL?AUuSl}06g};^|R4eiKu_v ze{0Z=kOBDkBj2r;tv@)w!T$09)b>0MeQie856(B%j~@UpS(VW!4^n?{{)o`M0XR^w zWwD((d3_O}A*o6dG6rDw&jmU!Le~=YgYz?|77Re-t3xxJf9MeMYPQv9Wakf+Fwa*|?GE<9y4} zt^p999uey;M2rvfaejO7*8!l$EXYw_Nyv!_GSd$q`8fbw6T^Q{ib(y$`LY{%2SG^t z+zcarBEBEaH}#w{2sy|1aM2P-`-Ag`jw64(C#ADq%)d?4CpLwdeze=1LEywLZvG)j zv^x#wW10&G;pM%ot*uoGME&6WCtno@VdbQ`X^GvW{^0!Zpyh)wTQUAwc?YSVLd^8} zc&LM*xPIDf-S{Xw|3 zeOg2(A2FWs!}%-fcMihD691d~@2qCY8H@9iD$E8!SK_PE36uY;y)S{Qs_ObaA}Sgw zPKkz!Q#l}>c|K=@f?}bfqM~U*auo`J1Qdr9rzEx1M8zRPbIKuyw8%`c)G)OyP0372 zQ7O$V<)Y>A{m;4g8t^>%yzlc4zwi5gogaVpIcx8;&)#dVwf0*3?t89V{tIk+`%MXD zY?ge?T=_Sri?^=a4@*hsx~fqpiM8?jNda} z+T(J)HQ%}G53%W49jBF%pWE=$KVo~j%E#LDoO!R7k(9^hep8a-*6S=6y?AaJxnBNV z=Xa*N>(8_4rOg(VkrN4T=d|;6&zl7{-8*D?8EMgPW9GAy!(83;mXWn@#yG_}p^?r{vU>5)D=%E(J2Uss>-akn$p zrbit5u#55?;iI}8QFMeX34#GJo01Hr+;y} zjO?5gT=45TcY8u?dP0NZGIIX+jHMILx$Q%&P0tU%SVlsd%i|)Ox#c9wrWYjqR7MIm z@yy+iJngsXM<)DIMmpb~cDz%HhyOOc?c|$fBr|8htp?t1f1}u@H%i0rP9Of}%~3O= z-SZUH$ZG$YLHD3{XRmwDFq*mL$EFu_uI?nCzI%3P%lF*#Y=}+wDXZlqH4fkXe5m2( zL#$1|zS-AF0&2Z5^oiE>T=itx^!%9mPO``MHuH6uJ1)z!>3L<1ousTypEj`v-Evr9 z(@Uo}bCM-5&zW|rIqjAoo4&thODEYf^@Hw1J$@|J*lK_Jgf>ocf6b{a-a#Jz+jRQE zlTPw#_`<+pQ{4I(V$*}nASZd_>e*LFWA}U%Yt!@Q&`$Evmc*Vf)$`1!HhupWypvo? zh`aI8W{>{b^g?gNNp8OuI&aQVx11N)^par1Nsg?3y8HdHcii%0)5Cg&I?2)By_=Wk zo_DVUJZ81uKQ`P+;!@}Lq~CS>ErB*YcVtf|S-nJkv*=T|eG9SaSBLj$+62{U${TcZEuThdeGKbCkbuWYuuF60j}p#O|13@jEZ-X>wjEZv*Mno{Wje% zFu{rU{vK_4{HEJph1hiZ(2Gv;;Oy?n<_&$H>&>@iN#X-3(jiHkh)W79+Gj(3tP&;Q!>Ny9B~#Wp=Q`(-B?;&Z6v zXo<&u`djVKzMbVH%)8fL&0XN82io*Aanqfo-}y<6UprOe8m|zWp1yCUll1K!U3gbk#n=ZG?b&_+p=HyKM$t`bGQ>*@N;lQ#z8}GWuJ}pS*O%K_(!AWLL>Rx-?JhxsH*z~RYHakgD?H2u7dbM}A-=>%D+Ug{~ zuOE6$iuG~JPcy6i)aLh~r|~0qEGc)_6KK;L<-YGEKWP2OYz=YuE5xSj6F-DJ{8ZSo ze7d`xu{J$t@NOr5$82$ZZLcRTw&_9iUME?rkMaHEyn7zWv*~TAPoSq;rgTaDw6&`} z1vY)oq5V#>;E(%5+Xr~;k4>LA=QAgHCavwpIc09XQTFfH`}O?XNjApMJf1Vq?bij` z^yvFXoMhML)pUnQkKba`6SjQmB;_6E3Ox!v_Q$5j4F1|lW=%ZZ?DO%S`PZh0+&$qW zgLa$L85|df6!_dF}M=AKw(+@nC^X*SXV9l9%20jSqIa<+IqPXC64?BvQ(z zi(NLl`9=j;{J+!poRh43did!f>)rhgwCN{`esGdM#&=#ETFv9P+w?|5N}Qy1*BZZu z4fpsDuJYepa*|Um&c^m!8f;qQN@dyfz{nqAms;NRivO{li=JoGeLuc}dQK&^9vgVm zr56P@eSQ0DPSR{EITi3*D_8kqo9;dLx|7VE@xrtBo4NTzH4nj4vy zwBM#jMwU6r(y8m(&7AC>H$!ZC^xNf5va;o;Pkq_Rpr;jDX*=a9jN7fyEbxxl7}d_k3y=$T2|XV3GX<@aW>QSSdEK2FU)L8D3f192#u~s>`7y0#smYdynJH)2zn`@Vot_^1= zx5)6wk4>NR?IY#n?)DS0uLN~+@h!`y$5*RcPL}St_(+X|?(%sy{X|>8a*|YS+sUSZ zfv)leHoc@c83rS;mR zyY(W_rca#dUrsJO%Rl|qVR!u@Ha%})vvM-y8o#Pf9k+dswdw2M3MeNr;ing@3G~Rn zO<%pHMLB8z*~k+ge&vq4^K5$Vy1;V6bDh)brF#4y7ky3ZauO9AF0AY1v7hex+m;g} zx9=l;4}0uqV2I~E4xaa0_aBGPb4T?{NlB+DrcK}8p}noNXYcOlsFjA1@)YevBR92YRKdtK?c7IwKN8G7(T~7+7 z+5pz!$v;*h-=dd=R?a_BCI3j*hv&EN{_y;5kq^(G*Zbl5-}iZV{*tJN=TGeW@cgCy z9-d!&VCDR({98Gwa(+erTl@`6J7b% zSe%~_`aln=wll$9&ND7m>$$P*&w932IRC_b?zyijf7YD*^O-v;oL4P3vgprpX%)_^ zj_0zgu6C5T$04)IcwGDC;r#fxymEe3K0NK$)ne5HK2?3b*6iW=kF{HpaIeX4SP#rhw?{)`qt z#riAWKLmNnRq`v|Z{5d7Rla{mmGK>nJsBQZ8&ToB>NqtU;Ht-}^B3%|@Z3|ioO4v= z=T*%oDG$&0PpzC^u|L`4yHcwG>+n3kYJXBzR?e?@zjdGg+RFJA`Dx`3{ulYe4-db; z*Tu^Dg;n_7;Ib>NiSq)cI+Y&uCoQ)N>q@P=#{4 zK+8wDe|D^3Yf(>$wWxt8pA3u#-T+nsJAgu<2)GK|1L~lzW|0LBB^fQh== z0tazk1Y84t2O7||s31TGqJW`5Ixq)V3cL&K295wlz$M@oP=`T%01KEv6!1JS9(V)T z3hV}s0Ox@_Km+tC2rz*WKsxXWFa+&-7wImb5I6}G1J{9?TrH{*5Db_=G>`yH2XcWO zKp}7ma01?ZEh+$D0TbvB^aF+h3BY(@7O))H4io?X9jN_=>%Kh0;%l_v;-V>1HQ2 z$?A=ZC%qil0y!L97|=hwpC|tnySFK$u%#1qB%=Yxy&@cOsThR{dzL8bOPgvvm!jIC zze$eh#8Hmu6j#;OIX=d%K#xor9+%`PMtyBPC2TY{J4KI6#WOgYV-NUgv7I_>KOr6Qevvy=+Uz$VM# z5MFngan|$xWJGA%gMJ^!bCMkC4vP>TND#c)eekH%5Y$RB(Bgr*VRGm z$`I%H0vAY_3y3-vV(?cEi{>veysOmk_!W_?MjKt>ZD3~})JiI}3 z-<&eKJ8W#mXjJCPyJd4TBPl5=E@llBwfo!)v zxTJV*g=Fh)gMSjbc#n*sDkSKz%}bmirVhoKgr=prAFH|MA`N_!8*6LSyGb4 ztv=zstn)hP55^`jzMG}6*bzyQiWUz~t7(iyyp(;N>}6I&u(axuy=BqiByy?d7^MJ=;( ztR19bjuCOtvB+*cv9#h{xv%Keqt(KbGe)`0kBbRbUwu7XbCIY->pqwMTABo|b*>)S ztrrZvt<$)U#|%3vHEy)y0p+;W%Li6_5H-{4WB)&`Mt|!%JUPD42-lcCWj(_!de$65 zQ3G8i9vF~;*e4(Nyk!ed*m~37-WA{0WtqCU_&bQ2TS3Oqu)mN0D>>j-qdVnO9!?eB z45tFGg;VmCa4O;=uFoO;E}Zf|9!_O{8BVR=7*1ur6HaZ-2&d?Xa4J7EoVullQ>DS- z)FvRNLpasG74UdCmD?m7Z!JQZhT)W7eO%uUqhjxbQ9ifAsI8a6sP<>VDEb?uyTT~H zmB7?6s%T;ub!-%9iD6VoJE%yjFsig!7!}wcjPk$TjfyGnM$P-68FWy5pR5qx>c0;iv}mz7+D&wx)Z-GIH@<9Kdr}d5-~JZdehDb?y!L12uq0 zfto;V!18o`0Uvj2(X8t_fR*4#`0ClAT063U-`>lRh<+A{*%~RazRHRm4 zrU6#|bik@-KF|SJ;l5sp)N0Razz{)=bSo!{7ip3uf&$1jnaE0e1 zb$!FszH~9hed8e3b&AN9r!+%oqGP^dxD-*JH^|fD_zG`xgoB~4c6 z8Lk<+62-c>KG{R^y=Q&G^XGwOq5D~uVfZ%>>wfF-++OcoSL#24kf82VRu5NOJUZ`5 zJ#~4mJ?UT3|0@4KTi#QTC-vO_clz&h;9tGfz^lqp-FIfi1Sol`J9Prc2UY{w zKspc$L;^C<2%vzgJ-buIz%ifz*a55ta)9YTIuHwl06~BcV3oZUf%|}CKt8Y@SPskq zG6Ad1Pi3t2>+ykqdHk<5?|=LufBiBC*Q5XXWdr}? zP5WPaz+Z}h<$B`yOA!dPv;Tkj_y4#k#P)=L?B(sV8Uab{)NxZ=xyNPgIoHX`HLi5Z zTg7**vye$ycDf$r_q~1k?Lb%dKm4C^&qWGxr#t_H`;NW{p!%ME_H-ci-02riv;SEBc+uJ7+t_0=$<;FJ^RsR!H4i&a<^b8ibRY|u z2xJ1OKmrg8L<12(2*3k05CpUb+5&+<0N@Wa0{j49zz6UK?)1WUtASFW7_iD0Aw32Z z0=t17z1aMa5WOo0SbW~z$Rcd zupGz%<^a=yi9kA#1jGYFfoLEMpn z!5Y?B(6l1O^PEN?COy%eYK}ArX)~lDNFPTUhO{M8U!)C@W+H8c^j5p>R9&RGxVB>A zJfv3KpN-TqzVnb;>j@On7D#-MT5AC5NCT1H#Qj#BoP}#Ec8*8d7-{UQkYS`WuC2yK zBDG@e7|^XXiYTO3%sv!!t9#K%TO*AGy$#X`q-~LgA#I0LNBRU(8ma5>!~?f%-@Wqt z_3RQ^?t)oz;A#b%5?#H0ZD-8up`{e--AkppO^q-0HRziULu+3RW zr+^2RTv+Q+fxu+Iy2rCO0jCg7uMqrq9fdVQJg3y}_IKLs%aG;159m>!)_ZW?_GSam zdDf!b$2{kOyZ1D8oqO*+^!V$%b-wcFBVRoJ$?@JHf!9~;OzpIO^MN-LLyir*+wNks z*ZVZRGA-n#MW+^at6Sr>4qH})+}@iP_VbhmbEi!GFl4X(&Dt;T_iUN@$?=esgT-@x z%sSL#*Mjw-yJx&O;7R4R^3>vqU3Y)~`q|rW{&8i}hQ8faUK(@Z$Zs9GOrP>ZSbM)F z8*aVpcj3VP-@~q~J8`4@$`4PCU-)IX#lt_ujz%iyFcn^;+rw$m5ecmB6`Ji zEm^lf(S-c%Klkso?&2`xz%Xt0iZ_PbAGY@T%D{r?HFKo6ukOwsGP|hVuvc$?H*&+m zTQ{EEyQ*;5_gTr2hn6i4oaNOoc7MAJ^p`q%6I&lGj?|!fAO1~ zy(ce|Pww9RB5r#9u}3zRkS>wW{LpLvo}7i34v{zZ_t!GQjyBq}bPG8=E*t>&ILW;FgIjIx`P1a} z9m&g^R+j9JpVnx7p!tG1$^D+JN8=7c|(-7Gxrn>I=yD<+EqK* z^9kGQuj}_#*x(QRg4*>g=`8Yn`oH_di|ytP_Fi3Z_LG#pUcFgXZgdqo%d? z@BOsn`McBRZmF5`a{ZFdXW#nb>q77E*B1R3Rwb;F`TO|KZ~*27M>TtXfi20hFY(Vq zx9k$k|3AszZlp2>dDtHXjIuM%|5=S`FJi9oI)=V(n+I+N5V4$8p8tVLf~Ih>3BZ{8z3mM@~I?M{|i>GMCOx;O27qTp+)e|ACJe zRtq}>N&HIuL3~6SD2oAgc0Ixs%dIU7?n%!CHv6L#wZ^ z)X(X^=+zC{m}tCdY&8xWE6hytGMP{Cdki5i-)9+9&NO5tb`N`meTpmM7J)y_gjND0 z6bZG&$>L)1uy{@^5ksZ1(g=B(+*V-}qCBMxRGv{{m1HGN$yDA_HYmH5&y)+G1^)_Llax zwocoqZPDJ-!t||ry77ilZfNH7=1b;e^EGpsxy$_4yk*uTtw{tKMy8N`go<^2ro_={ z^h?aU48z`FpXMfVGq}clF#jAsoqlJ4Xw(i?n3!&BkMB56Xmpxe;{=wv#R zp32;0a@mF42i#e%7BBOI`QiLa{0zQ;Kg3rTwutrQcVttYjnTiReP}E*-#3q&_8Wt; zT%SYjw!+YP@Vk*noWX74c5_#`V15)ona}07@yGev!V^NQuu!-zG!TPCT^uRy7NevA zl2fWHw}*_LQ8Lu!YMGh^-m&_3kf^(QcjE;k(i~}yH)onT<_2?%`LX%AdCn|18w){l#5kxp-K*FG=z(xrK6G-JrG8yXxJH1S8)VWu7t7)?&m*NT$#q zGG8$lnJMftb|-s?-OZilCko}lB-pO^q+L>yoGPcwnes$AOP(%g%X8#;@;!OA`iUNj z-^OwI;X3^ceT!be1hdV!ByK0i@gwTU+pM)PTAPZw zjaa`yQq7k2;j|a~2-}BEW{nK3A`8v@^yT z-x#IFo8}SoYx4)we#1{lH7W;PYC@}YFWMWkM{_2anaNaR7Yn-B1KKo6RHYujZ0-$i z2lo-TkN*tw!72VWpDc_KUKMhLCBjBwr?5*nDHID%%n*-@Pl&;yDTavy#Md#}dtkTD ziI>Fs(oJc&oCrzZ0(*5pKBWAtlq+4;v1*=rRvn`q)ME6{^fG;xkz}TsFPpEL-CW zHawxMQhKWq+Kbv4ZHZQ@wbp0ouj$M6U-jpWRYq;IiP^#A%{Vj3oMg_&?6}H&$9xZS zGvKbBrXzXLDoAYDdNOarDh^E`8bDPtaIO^oL= z>}Ym7D?mSA=az6AVc)%=DQVD;b^OQtm+%d)@Ls}G!f@d-bfbn?7rN0&>?bZ2_lb%W zDiuq=Nvv$hedOomRq&jiRCpy`$yOF9dCGR>H)R<3HC^4I7O59tC%oW2WolEkx_VRn zq~70n*BE1pmaUjq&2odNR$O~-zSu(=sH{`|Q2MJ=Fo*6?_o$`n4fVF#TH`cD+hdi_ zt7hBE#&iIEfw|306aA$GX_j;zbId)drrcE?2E9Bi2f$NVt{Pe>?9yT55wn#!*1T-C z#LV$5p|-kg%q;o|M#UUBnwf+#TEwhmW{B9VZI9oV;&J#4-$5QOh?m7H;xFP2*zrHa z`(kyemh^~J4|7Em>2ay0)JA$z>V#Q?lO)JCk-AAeq^G49<;_Z=_Jwv{E7NM}z4Z}# zsyaDZ7enpVCFE%7?Nd=-bu`17{6n%#fV?FGoLbtF(aI0&M*;d zZ+N?JuxBCV-dsocx`qNP?(DD*cop%5%y{ zB}qwF#$m>otK=w4;Zc9898!KzYN++qR;sDKp(bhR+8p?T_cVW9(<9(n57pzrttIej z-`98RpXi0~1x|o#=k*`;>w39?Tol(<><$llt$0v8 z26^#?Je-l5%CqHZ@R2XTR(xZeGp@qQGNx&U!Dh@d=b2l``;cfaDh73Kg}r#mY9UjT zZN-X0kXRs9m%GSOGOy0j=jl1HhRgLlSj6@Ec4MFMgIQ|+2HW^J>0n#O!SJ|WA#=z= zvL03d75aHu?lR>|$I@AJG5s4I#C7Aog{L=H2p9W6iW^9;!ozt{&X5}`{goNYX80zh zYAwxA3()$*7faAqB6@jWyP@6DeDp_*fyQ0)2@+1?$zDh)73f73qW;=+Bl;?Jmp+sy69`|-o!G0qVdAuii2d>~wbC8ort zVjEEuhrm}qD1IyUg!i>YY607_UEYKE>;k-;no3=z9pbVf%5Wu78I3vZ6}0%Iav9d5 z2mG0{Dho|(qc78U>Ie1v`ekstjoHZ@YC6nRbECP>JY^P}SKvd|C(Q{*bo68%!8;3S zFI(S(>8|vv=)-1uCtZSh_$8(V+l74&k=a4`jW=0;t`!%=rEtr+KR68@@E-mkU&G&~A(a|SmK7XDW*iT{fKo*y8j2${lC z;Va>ka7OqEe$P!t_c(ND4E(b<`PF9U8U!x ze)0rZpRQ_vc2#Sxb9y@LDs4P(%raP$n9rHxFy6<_UYHdZlcVGm=43BB&hE)>;Xdbz zIVX3Idy!8UN`$)b{J#@BN^78NjnpSpS$!5h+c=C^ZLP7^PGhv*TC|pksN}eIP8$NN zl!d6@AD-L}<5$CB{%+R67`7)e3A6f{<HRiGt~9!r>bR5^R%t7X9u*N`T%{Ho(S*x z7ue0}Mm<9`VvN=1Ci5#q*D9jjfrt(#ky&IBSw+4eSBd==%z3VUc+-BEW!uv{9RhD_ z68#Fj&R&zbOkbycm_|$>6U4+bY0L!3X)d#Z*}@!TjxwpRivip+ZXZYU-@=Rdk^hyi zCo~bp!4F&_tP!>eJ|Zis;vht}Y2s99dtYfVq%2XIDb1CBmF`OQ<>qn+xhJBVUGgXL zIr$g)54nzVQ27G-epYFrc2u8MQ`8CSCG}fKfWO`nvqrFS(~KvhNE*q6UT+|WtVkr! z%L;oDFVv?WLr*%>EKTSh^gwzT{Q}mPa_If^5NLQUt^wDZ8-#VEDcnqM5p;Yf_c8Yw zcY-^^o##rq&WJ5S5i<@zJmJ7RI|i}(Z1`@g`HlShwk7zIFXAs@wPvvJEN0r>!Z*Ts zp-k`++ln*9?eHOf60eI+@s9YDoT1E8-q9xO@9Nb|YO71GyJ97$K>b=RQJt!fMzmCY ztUg(viI`!h-U2H+U5#jCgpmpPUJk#h!1&rIF`Ne8b5Y>3@tf(#m?se{^=0pI`}xy+ z34e`miglg!SO@tQt$0lAC@vDe76&1I_()1r)+(`TqPh`Q>7LpZ(y|b1RFvKjQE6Yy zx99XsNXXA7epm09m$eK)4TLqyhQ8JTe^zr_z?}ooqwlaD@FOJnHdmdm%{Sx&ur?3` zP7(eo_>gb$AMziGpNNH6yLe8jC7+gk5s!3II7L=;B?LBnF6?*ZnB*9uN>@x01i#=- zH6PK_ezj0NqW+91vnN&vqO};zOtD%#W~U^~O}n)MZNFBiWf@u4Tw3g9$Nmob0%G8y zu+~}J8tD5C=vXIy64nFv^55}3f*^zl$-+d);{jN~hOm9%;wadbbyx#vC7Iw+q4WbH zc1<2G_f=xB0{ERGs>9W7>UhNahqMyi%Q$8FV6E$0a*kXf_M2U=d)dB0FygqLSS#92 zU!xl`FEU=N58Hqp04aY{ItZU&3|0Z|$tx6JRabke3F>5c#!mP?Tl9HGdo$Sl()`A} zU`~cUTB}CYZQr0j-Gk}FP>68Gag(vG@C45zvboH+!W(w39U#wqZMl< zh##(Ewuv<2jgv-SbFewhTwvyzXU$*DGgf@(R~^5mL{Z)8ne<%v&^p_T9g1;%2@&x- znAe&Jn$Xpz@5bCtQp+(G*ygh(Mq z7>d=acp*VZ!n#2^=9-B@mM|Ub2XlmZh{1A&ncBT>2xa2iV ziGWYb8#2~=84YVX)QAP26X1KM8tKr|iAI(&9TD{$W1f+NHId~;p0V0k zZ*0P<><;|Kb4}`m^#KOs&G;bN_k$hvX98eL+cNE8Picl{WJYK5ncd70<`{Fr=I?bk zhrJ<9zN{bHi1lX!5SO=Q+p|F|&GM`a-ynnyVg2W2xM=oxI@gxx@3X49~yoHKJN+m3}?h*cnziERam>5;w{)aO7fO` zBwxu-Y9#qf0aBpUR%$N=Ni^00WJ#Aoq%bK$io~i=v=k!^m140%m4MZbR4HA;yPu^j ztb1f*y*^BKjl5^nJ*!|3<8;2U8@6)4QD_`7ju|J6BIArv49i&x&+xi&)3{~eO>w5T z>0|nuer6;1(^t*w=1r_I-hpmcUd?V#f(T7`%=0=4!CW6fB1sg9CNX5Fr6+Vvssu?f zJh4*tD!j3q>@D^VOL5+u59iDIVXefU3&46wTSU1*h~0Qj=5#KE3*#cVNO(TcTnJVn zBCzTdB}R)e;!rVGjK_*>l9(!{V-0(vm?cgZi(o&B@ySK0bQO`=P3e|&N227)8sb?E z;$>OZMiw-N@?DjkLC-1VZF8qKEnd#cS&@ATacw_#AY$8OtVfJtsp6WpZHndMxdg0WrsDIQOsw%| zanreMZVuL&a=2W~(AGCz@==dJR>0b0^-D%yBVZe1U>6dwPMV3;uxxk`xv&H4VFU7^ z|Ao-~B0FZi4vnW2ALzS3biKVoL(4;;;Zd;mu}XrHicdPS;O)*+a280bT;lrQav z1W>Sv{^)TS`kI7Zu1C*GWgqk-0&UMmd#yFTQpLw!-wQ*#63~_$v|=};;FjvI@tTa8 zG*ipPco%86G;cl7TCfely96xTM0?Xdv@g8BMzlZtra-zayucuuh9@Y~I=sO!I)aX* zqv&Wlh8~ItGoDVMlju}9dV& za}Hwk95dHkj=6KSxgK8gR&$4$Z|*h=%>8B|BAjDbGc7_iS8SG4vL6)j{)bP*TsEYt z^@v40oj{UEDoKauIuYwY(@8es_<2~*%O%T69$AfueiPYBc949sn-q}!q!1DQF?^;| zM9z?6QbO!sM2MvrG_X7@Y}YBAIArDE#*%CLL>( z)0sI;4znC9s+*V{n0xkP_BnwWz67&-RXv1+{C)h*fxkKMHwXUaz~3DBn*)Dy;J<|f F{|8cPb};|| literal 0 HcmV?d00001 diff --git a/premake/VisualC/build-scripts/run.tests.vs2010.bat b/premake/VisualC/build-scripts/run.tests.vs2010.bat new file mode 100755 index 0000000000..41215d5270 --- /dev/null +++ b/premake/VisualC/build-scripts/run.tests.vs2010.bat @@ -0,0 +1,108 @@ +@echo off + +cd ..\VS2010\tests + +call :pass checkkeys +call :pass loopwave +call :pass testatomic +call :pass testaudioinfo +call :pass testautomation +call :pass testdraw2 +call :pass testchessboard +call :pass testerror +call :pass testfile +call :pass testfilesystem +call :pass testgamecontroller +call :pass testgesture +call :pass testgl2 +call :pass testgles +call :pass testhaptic +call :pass testiconv +call :pass testime +call :pass testintersection +call :pass testjoystick +call :pass testkeys +::call :pass testloadso +call :pass testlock +call :pass testmessage +call :pass testmultiaudio +call :pass testnative +call :pass testoverlay2 +call :pass testplatform +call :pass testpower +call :pass testrelative +call :pass testrendercopyex +call :pass testrendertarget +call :pass testresample sample.wav newsample.wav 44100 +call :pass testrumble +call :pass testscale +call :pass testsem 1 +call :pass testshader +call :testspecial testshape .\shapes +call :testspecial testshape .\shapes +call :testspecial testshape .\shapes +call :pass testsprite2 +call :pass testspriteminimal +call :pass teststreaming +call :pass testthread +call :pass testtimer +call :pass testver +call :pass testwm2 +call :pass torturethread + +:: leave the tests directory +cd .. + +:: exit batch +goto :eof + +:testspecial +if not exist %1\Win32\Debug goto :eof +cd %1\Win32\Debug +call :randomfile %2 +cd ..\..\.. +call :pass %1 %RETURN% +goto :eof + +:: pass label (similar to pass function in the Xcode tests command script) +:pass +setlocal enabledelayedexpansion +set args= +set /A count=0 +for %%x IN (%*) DO ( + if NOT !count! EQU 0 set args=!args! %%x + set /A count=%count% + 1 +) +endlocal & set callargs=%args% +:: if it does not exist, break procedure +if not exist %1\Win32\Debug goto endfunc +:: goto directory +echo Testing: %1 +title Testing: %1 +cd %1\Win32\Debug +:: execute test +".\%1.exe"%callargs% +cd ..\..\.. +pause +:endfunc +goto :eof + +:randomfile +setlocal enabledelayedexpansion +set count=0 +if not exist %1 goto :eof +for %%d in (%1\*.*) DO ( + set /A count=count + 1 +) +set /A count=%RANDOM% %% %count% +for %%d in (%1\*.*) DO ( + if !count! EQU 0 ( + set rfile=%%d + goto endrfile + ) + set /A count=count-1 +) +:endrfile +set tmprfile=!rfile! +endlocal & set RETURN=%tmprfile% +goto :eof \ No newline at end of file diff --git a/premake/VisualC/build-scripts/vs2008.bat b/premake/VisualC/build-scripts/vs2008.bat new file mode 100755 index 0000000000..11c7733d2e --- /dev/null +++ b/premake/VisualC/build-scripts/vs2008.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2008 vs2008 +pause \ No newline at end of file diff --git a/premake/VisualC/build-scripts/vs2010.bat b/premake/VisualC/build-scripts/vs2010.bat new file mode 100755 index 0000000000..1aa902c0c4 --- /dev/null +++ b/premake/VisualC/build-scripts/vs2010.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2010 vs2010 +pause \ No newline at end of file diff --git a/premake/VisualC/build-scripts/vs2012.bat b/premake/VisualC/build-scripts/vs2012.bat new file mode 100755 index 0000000000..1e00b0c8fd --- /dev/null +++ b/premake/VisualC/build-scripts/vs2012.bat @@ -0,0 +1,4 @@ +@echo off +cd .. +%~dp0\premake4.exe --file=..\premake4.lua --to=.\VisualC\VS2012 vs2012 +pause \ No newline at end of file diff --git a/premake/Xcode-iOS/Demos/accelerometer/accelerometer.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/accelerometer/accelerometer.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..cc5ab09d7a --- /dev/null +++ b/premake/Xcode-iOS/Demos/accelerometer/accelerometer.xcodeproj/project.pbxproj @@ -0,0 +1,366 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 674906CF330F50E3203B3BE2 /* ship.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 324B72283F7756BA003D4F89 /* ship.bmp */; }; + 7D6E4948535F13803EB24793 /* space.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 75D70D1032D7609D1FF110D8 /* space.bmp */; }; + 05BC137B00F21C1E34222E13 /* accelerometer.c in Sources */ = {isa = PBXBuildFile; fileRef = 0F0668AE7894542751932A92 /* accelerometer.c */; }; + 26993FB748FA383F4D1609ED /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 1AD060ED78CA41CC628541A4 /* common.c */; }; + 0D4139CC20C575FB6FE0714B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 13373F7C6C961F2D4D281BE9 /* AudioToolbox.framework */; }; + 21C26FE40025290D321B186A /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 761E2DD50F5B34C04FFD2AAE /* QuartzCore.framework */; }; + 27DC096C4EBF1C4910E8113A /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 691C3F7C7CBC50FC7AF4543F /* OpenGLES.framework */; }; + 188D7C0554AA68A621F77BC2 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CF62CCC24035B7636970CDF /* CoreGraphics.framework */; }; + 1C4B220C7E566D3B6FEA219B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FF410EE17A75CBF37A16A7A /* UIKit.framework */; }; + 3AB556FB793A74F25F5554E7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EE13E2B3520069A797D2E12 /* Foundation.framework */; }; + 128C61D42B537987446C3DAE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09C44E3B227D56962A4C6F18 /* CoreAudio.framework */; }; + 6B4A5750488819AB41E467FB /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EF20F1D796452C879872F95 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7C9A632C62AF516279D47C47 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3CC27DC669FE34F16DE15E07 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 3694413107B7067430080ECD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3CC27DC669FE34F16DE15E07 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2FE912395DD5772A6A7E1F33 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 324B72283F7756BA003D4F89 /* ship.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = "ship.bmp"; path = "../../../../Xcode-iOS/Demos/data/ship.bmp"; sourceTree = ""; }; + 75D70D1032D7609D1FF110D8 /* space.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = "space.bmp"; path = "../../../../Xcode-iOS/Demos/data/space.bmp"; sourceTree = ""; }; + 0F0668AE7894542751932A92 /* accelerometer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "accelerometer.c"; path = "../../../../Xcode-iOS/Demos/src/accelerometer.c"; sourceTree = ""; }; + 1AD060ED78CA41CC628541A4 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 6717384817185E66201700F1 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 13373F7C6C961F2D4D281BE9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 761E2DD50F5B34C04FFD2AAE /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 691C3F7C7CBC50FC7AF4543F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 7CF62CCC24035B7636970CDF /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 0FF410EE17A75CBF37A16A7A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 4EE13E2B3520069A797D2E12 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 09C44E3B227D56962A4C6F18 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 61D70B5D29674F5D75141737 /* accelerometer */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "accelerometer"; path = "accelerometer"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CC27DC669FE34F16DE15E07 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4F2B411B72F5599B7711251B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0D4139CC20C575FB6FE0714B /* AudioToolbox.framework in Frameworks */, + 21C26FE40025290D321B186A /* QuartzCore.framework in Frameworks */, + 27DC096C4EBF1C4910E8113A /* OpenGLES.framework in Frameworks */, + 188D7C0554AA68A621F77BC2 /* CoreGraphics.framework in Frameworks */, + 1C4B220C7E566D3B6FEA219B /* UIKit.framework in Frameworks */, + 3AB556FB793A74F25F5554E7 /* Foundation.framework in Frameworks */, + 128C61D42B537987446C3DAE /* CoreAudio.framework in Frameworks */, + 6B4A5750488819AB41E467FB /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1BCF64F206ED3FFA6FCB3744 /* accelerometer */ = { + isa = PBXGroup; + children = ( + 57EA49B528E153D23CAA746B /* Xcode-iOS */, + 04022578784D401A06614C4C /* Frameworks */, + 0682642E36227AF649AD15E1 /* Products */, + 10934AB6192843925A2C3FCB /* Projects */, + ); + name = "accelerometer"; + sourceTree = ""; + }; + 57EA49B528E153D23CAA746B /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 440746E769CB3C2666172B92 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 440746E769CB3C2666172B92 /* Demos */ = { + isa = PBXGroup; + children = ( + 2FE912395DD5772A6A7E1F33 /* Info.plist */, + 09B436A542BB045D05CC2009 /* data */, + 0D4A117E0EF119EE7D3E77A5 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 09B436A542BB045D05CC2009 /* data */ = { + isa = PBXGroup; + children = ( + 324B72283F7756BA003D4F89 /* ship.bmp */, + 75D70D1032D7609D1FF110D8 /* space.bmp */, + ); + name = "data"; + sourceTree = ""; + }; + 0D4A117E0EF119EE7D3E77A5 /* src */ = { + isa = PBXGroup; + children = ( + 0F0668AE7894542751932A92 /* accelerometer.c */, + 1AD060ED78CA41CC628541A4 /* common.c */, + 6717384817185E66201700F1 /* common.h */, + ); + name = "src"; + sourceTree = ""; + }; + 04022578784D401A06614C4C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 13373F7C6C961F2D4D281BE9 /* AudioToolbox.framework */, + 761E2DD50F5B34C04FFD2AAE /* QuartzCore.framework */, + 691C3F7C7CBC50FC7AF4543F /* OpenGLES.framework */, + 7CF62CCC24035B7636970CDF /* CoreGraphics.framework */, + 0FF410EE17A75CBF37A16A7A /* UIKit.framework */, + 4EE13E2B3520069A797D2E12 /* Foundation.framework */, + 09C44E3B227D56962A4C6F18 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 0682642E36227AF649AD15E1 /* Products */ = { + isa = PBXGroup; + children = ( + 61D70B5D29674F5D75141737 /* accelerometer */, + ); + name = "Products"; + sourceTree = ""; + }; + 10934AB6192843925A2C3FCB /* Projects */ = { + isa = PBXGroup; + children = ( + 3CC27DC669FE34F16DE15E07 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 00327F6B64F33A717B2750FC /* Products */ = { + isa = PBXGroup; + children = ( + 5EF20F1D796452C879872F95 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 206349984FD364256139268B /* accelerometer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 31FC2F13262437C908FF3C38 /* Build configuration list for PBXNativeTarget "accelerometer" */; + buildPhases = ( + 1CE11A4948F84856205D72AA /* Resources */, + 0A7A791967E92509752E3940 /* Sources */, + 4F2B411B72F5599B7711251B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 59ED738603BF22172E103B9C /* PBXTargetDependency */, + ); + name = "accelerometer"; + productInstallPath = "$(HOME)/Applications"; + productName = "accelerometer"; + productReference = 61D70B5D29674F5D75141737 /* accelerometer */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "accelerometer" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 1BCF64F206ED3FFA6FCB3744 /* accelerometer */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 00327F6B64F33A717B2750FC /* Products */; + ProjectRef = 3CC27DC669FE34F16DE15E07 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 206349984FD364256139268B /* accelerometer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 5EF20F1D796452C879872F95 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7C9A632C62AF516279D47C47 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 1CE11A4948F84856205D72AA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 674906CF330F50E3203B3BE2 /* ship.bmp in Resources */, + 7D6E4948535F13803EB24793 /* space.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0A7A791967E92509752E3940 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 05BC137B00F21C1E34222E13 /* accelerometer.c in Sources */, + 26993FB748FA383F4D1609ED /* common.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 59ED738603BF22172E103B9C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 3694413107B7067430080ECD /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 25FD2ACB1A5E4A7146666462 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "accelerometer"; + }; + name = "Debug"; + }; + 171926D866766FC058847A16 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "accelerometer"; + }; + name = "Release"; + }; + 6505556E31F8228178087816 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 50AE5630181E7A0D22AF4CB3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 31FC2F13262437C908FF3C38 /* Build configuration list for PBXNativeTarget "accelerometer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 25FD2ACB1A5E4A7146666462 /* Debug */, + 171926D866766FC058847A16 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "accelerometer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6505556E31F8228178087816 /* Debug */, + 50AE5630181E7A0D22AF4CB3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/Demos/fireworks/fireworks.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/fireworks/fireworks.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..11f99dd6e5 --- /dev/null +++ b/premake/Xcode-iOS/Demos/fireworks/fireworks.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 10E2774011786F995B805C7F /* stroke.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 6730111A6BFB5F5C14DD4871 /* stroke.bmp */; }; + 79D87D07048610C3209314C6 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 0EBB33113E847AA430B96B69 /* common.c */; }; + 71A12A290ADF47D43590019A /* fireworks.c in Sources */ = {isa = PBXBuildFile; fileRef = 596447B07498655C0C243381 /* fireworks.c */; }; + 79C17D3407632C1F2E3E0E60 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 123376C8576F65BC595A6307 /* AudioToolbox.framework */; }; + 73360C2A26FB4CA511D62254 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60711C343D703F8D4C67108C /* QuartzCore.framework */; }; + 527D0CDF1702119E424E4A1F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 633F528E066847D70E7013C4 /* OpenGLES.framework */; }; + 098672276FAD7A58464B0720 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E802A784A7A29545AD836CD /* CoreGraphics.framework */; }; + 5FA3503D55AC13E211914909 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B22322B31D5351E536A0626 /* UIKit.framework */; }; + 25665D894EE1308D14544C71 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 230B36B52E4826A148913E3B /* Foundation.framework */; }; + 4C2479ED4E2C5193217C6EC9 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CE031D65AB00DD264007083 /* CoreAudio.framework */; }; + 0A231ED87C3D466409B42038 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 36533B8A10B0217136B82153 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 21963BEC278D360D2CC829A9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 460E547038C062D10E9E3D5F /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 50E70FB957213B36609376FC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 460E547038C062D10E9E3D5F /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0671155E7F8E65FF744F0C39 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 6730111A6BFB5F5C14DD4871 /* stroke.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = "stroke.bmp"; path = "../../../../Xcode-iOS/Demos/data/stroke.bmp"; sourceTree = ""; }; + 0EBB33113E847AA430B96B69 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 5E933B3601CB6D550A35284B /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 596447B07498655C0C243381 /* fireworks.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "fireworks.c"; path = "../../../../Xcode-iOS/Demos/src/fireworks.c"; sourceTree = ""; }; + 123376C8576F65BC595A6307 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 60711C343D703F8D4C67108C /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 633F528E066847D70E7013C4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 5E802A784A7A29545AD836CD /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 7B22322B31D5351E536A0626 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 230B36B52E4826A148913E3B /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 4CE031D65AB00DD264007083 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 30200E315CB6417F29DA5065 /* fireworks */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "fireworks"; path = "fireworks"; sourceTree = BUILT_PRODUCTS_DIR; }; + 460E547038C062D10E9E3D5F /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 00003F873C025B1226283799 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 79C17D3407632C1F2E3E0E60 /* AudioToolbox.framework in Frameworks */, + 73360C2A26FB4CA511D62254 /* QuartzCore.framework in Frameworks */, + 527D0CDF1702119E424E4A1F /* OpenGLES.framework in Frameworks */, + 098672276FAD7A58464B0720 /* CoreGraphics.framework in Frameworks */, + 5FA3503D55AC13E211914909 /* UIKit.framework in Frameworks */, + 25665D894EE1308D14544C71 /* Foundation.framework in Frameworks */, + 4C2479ED4E2C5193217C6EC9 /* CoreAudio.framework in Frameworks */, + 0A231ED87C3D466409B42038 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 792F068F49A57B4638B70EC5 /* fireworks */ = { + isa = PBXGroup; + children = ( + 49E04FED520F68E0695A1DB6 /* Xcode-iOS */, + 501A0CA8227D64CE52083875 /* Frameworks */, + 07354BC83E791D3F4F231D23 /* Products */, + 6E052C166223126769C05956 /* Projects */, + ); + name = "fireworks"; + sourceTree = ""; + }; + 49E04FED520F68E0695A1DB6 /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 31BA2F820B3B5C9778AE27A2 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 31BA2F820B3B5C9778AE27A2 /* Demos */ = { + isa = PBXGroup; + children = ( + 0671155E7F8E65FF744F0C39 /* Info.plist */, + 142A121F4562529546B6158D /* data */, + 30930BB2673975194C004BD3 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 142A121F4562529546B6158D /* data */ = { + isa = PBXGroup; + children = ( + 6730111A6BFB5F5C14DD4871 /* stroke.bmp */, + ); + name = "data"; + sourceTree = ""; + }; + 30930BB2673975194C004BD3 /* src */ = { + isa = PBXGroup; + children = ( + 0EBB33113E847AA430B96B69 /* common.c */, + 5E933B3601CB6D550A35284B /* common.h */, + 596447B07498655C0C243381 /* fireworks.c */, + ); + name = "src"; + sourceTree = ""; + }; + 501A0CA8227D64CE52083875 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 123376C8576F65BC595A6307 /* AudioToolbox.framework */, + 60711C343D703F8D4C67108C /* QuartzCore.framework */, + 633F528E066847D70E7013C4 /* OpenGLES.framework */, + 5E802A784A7A29545AD836CD /* CoreGraphics.framework */, + 7B22322B31D5351E536A0626 /* UIKit.framework */, + 230B36B52E4826A148913E3B /* Foundation.framework */, + 4CE031D65AB00DD264007083 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 07354BC83E791D3F4F231D23 /* Products */ = { + isa = PBXGroup; + children = ( + 30200E315CB6417F29DA5065 /* fireworks */, + ); + name = "Products"; + sourceTree = ""; + }; + 6E052C166223126769C05956 /* Projects */ = { + isa = PBXGroup; + children = ( + 460E547038C062D10E9E3D5F /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 69CE07AB71092E5823634CFF /* Products */ = { + isa = PBXGroup; + children = ( + 36533B8A10B0217136B82153 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 449B2B3766C40168684F5081 /* fireworks */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6476261C1F55185646DD5A1D /* Build configuration list for PBXNativeTarget "fireworks" */; + buildPhases = ( + 602E226C0419148750F91DB2 /* Resources */, + 376F64A66D4239294A6949B6 /* Sources */, + 00003F873C025B1226283799 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 39CF02464D5053C66EA47AC0 /* PBXTargetDependency */, + ); + name = "fireworks"; + productInstallPath = "$(HOME)/Applications"; + productName = "fireworks"; + productReference = 30200E315CB6417F29DA5065 /* fireworks */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "fireworks" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 792F068F49A57B4638B70EC5 /* fireworks */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 69CE07AB71092E5823634CFF /* Products */; + ProjectRef = 460E547038C062D10E9E3D5F /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 449B2B3766C40168684F5081 /* fireworks */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 36533B8A10B0217136B82153 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 21963BEC278D360D2CC829A9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 602E226C0419148750F91DB2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 10E2774011786F995B805C7F /* stroke.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 376F64A66D4239294A6949B6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 79D87D07048610C3209314C6 /* common.c in Sources */, + 71A12A290ADF47D43590019A /* fireworks.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 39CF02464D5053C66EA47AC0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 50E70FB957213B36609376FC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 670D1D77032D31C655C83E60 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "fireworks"; + }; + name = "Debug"; + }; + 3777705C388527704EAB5951 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "fireworks"; + }; + name = "Release"; + }; + 11105FF3697A04D35F3C1869 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 75EF49955C93529475B6356E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6476261C1F55185646DD5A1D /* Build configuration list for PBXNativeTarget "fireworks" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 670D1D77032D31C655C83E60 /* Debug */, + 3777705C388527704EAB5951 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "fireworks" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 11105FF3697A04D35F3C1869 /* Debug */, + 75EF49955C93529475B6356E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/Demos/happy/happy.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/happy/happy.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..fdac9bda7f --- /dev/null +++ b/premake/Xcode-iOS/Demos/happy/happy.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 43587E112FDE41E3486A5141 /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 67E105821F9D19C248BF17B6 /* icon.bmp */; }; + 2F5A7AB72FA52C3D029335B6 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 49AD32CF351438B316C15B7A /* common.c */; }; + 66455D1E7E3179156E546AA8 /* happy.c in Sources */ = {isa = PBXBuildFile; fileRef = 1F0270E77CC100E968633EBA /* happy.c */; }; + 04CE7E9842C4612763496460 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C147BCA187412202A676460 /* AudioToolbox.framework */; }; + 5DC8148934C32F3407541C0F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DDB080C0C872DF96CEE0B62 /* QuartzCore.framework */; }; + 039E2FCB749D2AE6705435A4 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B210870772357A20E4576EE /* OpenGLES.framework */; }; + 263A59BA6D20796421AC3870 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 603E37DB4001230953C943FD /* CoreGraphics.framework */; }; + 7E2000C447ED370218691A83 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49C87CB0268927E071506CEA /* UIKit.framework */; }; + 081D5E427A420BEA66DF6129 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 489C1A076394164C7F853083 /* Foundation.framework */; }; + 65AC30DF305741C6521420A7 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AF1729947305D7E10DA777D /* CoreAudio.framework */; }; + 424C13DC60653FEE6370536B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 327333F1228F1B0D0A582BEC /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 73DD36916E01179F50147B85 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45B64B000539221732843506 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 6D92213A249742C860667923 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45B64B000539221732843506 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4E8504577F0B2DC43C2073B9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 67E105821F9D19C248BF17B6 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = "icon.bmp"; path = "../../../../Xcode-iOS/Demos/data/icon.bmp"; sourceTree = ""; }; + 49AD32CF351438B316C15B7A /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 4346585005E47029491C60D0 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 1F0270E77CC100E968633EBA /* happy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "happy.c"; path = "../../../../Xcode-iOS/Demos/src/happy.c"; sourceTree = ""; }; + 2C147BCA187412202A676460 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 5DDB080C0C872DF96CEE0B62 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 3B210870772357A20E4576EE /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 603E37DB4001230953C943FD /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 49C87CB0268927E071506CEA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 489C1A076394164C7F853083 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 7AF1729947305D7E10DA777D /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 65F833BA06B514AD0EE36218 /* happy */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "happy"; path = "happy"; sourceTree = BUILT_PRODUCTS_DIR; }; + 45B64B000539221732843506 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 42BC7BB86D0D2AE72C3C307D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 04CE7E9842C4612763496460 /* AudioToolbox.framework in Frameworks */, + 5DC8148934C32F3407541C0F /* QuartzCore.framework in Frameworks */, + 039E2FCB749D2AE6705435A4 /* OpenGLES.framework in Frameworks */, + 263A59BA6D20796421AC3870 /* CoreGraphics.framework in Frameworks */, + 7E2000C447ED370218691A83 /* UIKit.framework in Frameworks */, + 081D5E427A420BEA66DF6129 /* Foundation.framework in Frameworks */, + 65AC30DF305741C6521420A7 /* CoreAudio.framework in Frameworks */, + 424C13DC60653FEE6370536B /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3555679049400DAA17916DD7 /* happy */ = { + isa = PBXGroup; + children = ( + 7CFE361B495F31F009A616F6 /* Xcode-iOS */, + 532F72873A65662513E35533 /* Frameworks */, + 343C7E606DE365001C7D0B84 /* Products */, + 20D87CCB7D1E6AC128B72992 /* Projects */, + ); + name = "happy"; + sourceTree = ""; + }; + 7CFE361B495F31F009A616F6 /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 224D240956AC3D2636C95904 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 224D240956AC3D2636C95904 /* Demos */ = { + isa = PBXGroup; + children = ( + 4E8504577F0B2DC43C2073B9 /* Info.plist */, + 1EEF027C57A725660BCF6FB9 /* data */, + 1F3D1DBD7857554A0C1C1965 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 1EEF027C57A725660BCF6FB9 /* data */ = { + isa = PBXGroup; + children = ( + 67E105821F9D19C248BF17B6 /* icon.bmp */, + ); + name = "data"; + sourceTree = ""; + }; + 1F3D1DBD7857554A0C1C1965 /* src */ = { + isa = PBXGroup; + children = ( + 49AD32CF351438B316C15B7A /* common.c */, + 4346585005E47029491C60D0 /* common.h */, + 1F0270E77CC100E968633EBA /* happy.c */, + ); + name = "src"; + sourceTree = ""; + }; + 532F72873A65662513E35533 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2C147BCA187412202A676460 /* AudioToolbox.framework */, + 5DDB080C0C872DF96CEE0B62 /* QuartzCore.framework */, + 3B210870772357A20E4576EE /* OpenGLES.framework */, + 603E37DB4001230953C943FD /* CoreGraphics.framework */, + 49C87CB0268927E071506CEA /* UIKit.framework */, + 489C1A076394164C7F853083 /* Foundation.framework */, + 7AF1729947305D7E10DA777D /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 343C7E606DE365001C7D0B84 /* Products */ = { + isa = PBXGroup; + children = ( + 65F833BA06B514AD0EE36218 /* happy */, + ); + name = "Products"; + sourceTree = ""; + }; + 20D87CCB7D1E6AC128B72992 /* Projects */ = { + isa = PBXGroup; + children = ( + 45B64B000539221732843506 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 452A4F211058019E46671F0C /* Products */ = { + isa = PBXGroup; + children = ( + 327333F1228F1B0D0A582BEC /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2CAD44D858E6037A6F811B90 /* happy */ = { + isa = PBXNativeTarget; + buildConfigurationList = 233F10BA36C35A146C6A4B3E /* Build configuration list for PBXNativeTarget "happy" */; + buildPhases = ( + 779B1C3D74C34A815E3A3F7E /* Resources */, + 059733C83C381D451EFA5F5A /* Sources */, + 42BC7BB86D0D2AE72C3C307D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 1F023F2F3EDE66E20BCC17E1 /* PBXTargetDependency */, + ); + name = "happy"; + productInstallPath = "$(HOME)/Applications"; + productName = "happy"; + productReference = 65F833BA06B514AD0EE36218 /* happy */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "happy" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 3555679049400DAA17916DD7 /* happy */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 452A4F211058019E46671F0C /* Products */; + ProjectRef = 45B64B000539221732843506 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 2CAD44D858E6037A6F811B90 /* happy */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 327333F1228F1B0D0A582BEC /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 73DD36916E01179F50147B85 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 779B1C3D74C34A815E3A3F7E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 43587E112FDE41E3486A5141 /* icon.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 059733C83C381D451EFA5F5A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F5A7AB72FA52C3D029335B6 /* common.c in Sources */, + 66455D1E7E3179156E546AA8 /* happy.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 1F023F2F3EDE66E20BCC17E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6D92213A249742C860667923 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 563C339925F445BB2F1E01DB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "happy"; + }; + name = "Debug"; + }; + 205A208D2C4F2495443E582F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "happy"; + }; + name = "Release"; + }; + 115846ED1EDF44EA13E06D02 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 3536279D443370B3347E7CB6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 233F10BA36C35A146C6A4B3E /* Build configuration list for PBXNativeTarget "happy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 563C339925F445BB2F1E01DB /* Debug */, + 205A208D2C4F2495443E582F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "happy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 115846ED1EDF44EA13E06D02 /* Debug */, + 3536279D443370B3347E7CB6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/Demos/keyboard/keyboard.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/keyboard/keyboard.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..8502fa9994 --- /dev/null +++ b/premake/Xcode-iOS/Demos/keyboard/keyboard.xcodeproj/project.pbxproj @@ -0,0 +1,370 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 45273A68360C0E815D1B1BC0 /* kromasky_16x16.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 5F9758D31B3F59084DC82795 /* kromasky_16x16.bmp */; }; + 324160D025840B5270143D94 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 6E0951906832624606980FA7 /* common.c */; }; + 4CBC542E1F7005322C280595 /* keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 2987762A782C33F9516B55E5 /* keyboard.c */; }; + 7BBF522D0B3425221AC07065 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2343286F2DA963733BDB4BFF /* AudioToolbox.framework */; }; + 79421BCE00DF36EC439A5CD4 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29F4734C35942DEA723A5A77 /* QuartzCore.framework */; }; + 06A76AFF0ED4094D53875FC7 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E0C550168CA5DF878D253AB /* OpenGLES.framework */; }; + 3D133C292D622B105EE9453E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 422B29AA759D18C60A831E77 /* CoreGraphics.framework */; }; + 05431A973AEA7EE57FA27595 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 750F39EC6BA274B14FCF2602 /* UIKit.framework */; }; + 69605E6F6C651372297A0B12 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 243E12D229FC131B064C7705 /* Foundation.framework */; }; + 05CF5EDB7CA80D6B0B8E1F8D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7256748A485906120EDA0EC6 /* CoreAudio.framework */; }; + 152755650FEB31C909EC00E4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72750F76468F6580744A4BC9 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5034364C4E5B3FD958D13B5C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4EC774AF1C8B11653EDD4CF5 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 47316C104E515CB0638F45FE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4EC774AF1C8B11653EDD4CF5 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3EAB5300634A1F997DFB781B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 5F9758D31B3F59084DC82795 /* kromasky_16x16.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = "kromasky_16x16.bmp"; path = "../../../../Xcode-iOS/Demos/data/bitmapfont/kromasky_16x16.bmp"; sourceTree = ""; }; + 6E0951906832624606980FA7 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 4D90349C274323322B1A6BBA /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 2987762A782C33F9516B55E5 /* keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "keyboard.c"; path = "../../../../Xcode-iOS/Demos/src/keyboard.c"; sourceTree = ""; }; + 2343286F2DA963733BDB4BFF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 29F4734C35942DEA723A5A77 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 7E0C550168CA5DF878D253AB /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 422B29AA759D18C60A831E77 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 750F39EC6BA274B14FCF2602 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 243E12D229FC131B064C7705 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 7256748A485906120EDA0EC6 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 759B2B246CC126C15CAC3E9A /* keyboard */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "keyboard"; path = "keyboard"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4EC774AF1C8B11653EDD4CF5 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 34184B7037081F3645C941EF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BBF522D0B3425221AC07065 /* AudioToolbox.framework in Frameworks */, + 79421BCE00DF36EC439A5CD4 /* QuartzCore.framework in Frameworks */, + 06A76AFF0ED4094D53875FC7 /* OpenGLES.framework in Frameworks */, + 3D133C292D622B105EE9453E /* CoreGraphics.framework in Frameworks */, + 05431A973AEA7EE57FA27595 /* UIKit.framework in Frameworks */, + 69605E6F6C651372297A0B12 /* Foundation.framework in Frameworks */, + 05CF5EDB7CA80D6B0B8E1F8D /* CoreAudio.framework in Frameworks */, + 152755650FEB31C909EC00E4 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 677B6BC5125065EF671517AF /* keyboard */ = { + isa = PBXGroup; + children = ( + 7B4430D456083F22037D36EF /* Xcode-iOS */, + 12A204F705CD6EA85EED2785 /* Frameworks */, + 648E631128706545491A6FF5 /* Products */, + 5C50345624874A655FED50DE /* Projects */, + ); + name = "keyboard"; + sourceTree = ""; + }; + 7B4430D456083F22037D36EF /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 0CDD3A6150551D1F7A057966 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 0CDD3A6150551D1F7A057966 /* Demos */ = { + isa = PBXGroup; + children = ( + 3EAB5300634A1F997DFB781B /* Info.plist */, + 49C73F1123DD22E36DB26715 /* data */, + 70CD296F51F07063761032D3 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 49C73F1123DD22E36DB26715 /* data */ = { + isa = PBXGroup; + children = ( + 4B1E1F4E75081D4125E24E30 /* bitmapfont */, + ); + name = "data"; + sourceTree = ""; + }; + 4B1E1F4E75081D4125E24E30 /* bitmapfont */ = { + isa = PBXGroup; + children = ( + 5F9758D31B3F59084DC82795 /* kromasky_16x16.bmp */, + ); + name = "bitmapfont"; + sourceTree = ""; + }; + 70CD296F51F07063761032D3 /* src */ = { + isa = PBXGroup; + children = ( + 6E0951906832624606980FA7 /* common.c */, + 4D90349C274323322B1A6BBA /* common.h */, + 2987762A782C33F9516B55E5 /* keyboard.c */, + ); + name = "src"; + sourceTree = ""; + }; + 12A204F705CD6EA85EED2785 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2343286F2DA963733BDB4BFF /* AudioToolbox.framework */, + 29F4734C35942DEA723A5A77 /* QuartzCore.framework */, + 7E0C550168CA5DF878D253AB /* OpenGLES.framework */, + 422B29AA759D18C60A831E77 /* CoreGraphics.framework */, + 750F39EC6BA274B14FCF2602 /* UIKit.framework */, + 243E12D229FC131B064C7705 /* Foundation.framework */, + 7256748A485906120EDA0EC6 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 648E631128706545491A6FF5 /* Products */ = { + isa = PBXGroup; + children = ( + 759B2B246CC126C15CAC3E9A /* keyboard */, + ); + name = "Products"; + sourceTree = ""; + }; + 5C50345624874A655FED50DE /* Projects */ = { + isa = PBXGroup; + children = ( + 4EC774AF1C8B11653EDD4CF5 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 644325D14FD20B88184F7B96 /* Products */ = { + isa = PBXGroup; + children = ( + 72750F76468F6580744A4BC9 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 73176F12128359B77F276047 /* keyboard */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2CB14BD0504177BD395A5721 /* Build configuration list for PBXNativeTarget "keyboard" */; + buildPhases = ( + 4684144777C328C125E4477A /* Resources */, + 46C76D2668D37A606FA41834 /* Sources */, + 34184B7037081F3645C941EF /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 49D96F9A0B0A7D6D315D6561 /* PBXTargetDependency */, + ); + name = "keyboard"; + productInstallPath = "$(HOME)/Applications"; + productName = "keyboard"; + productReference = 759B2B246CC126C15CAC3E9A /* keyboard */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "keyboard" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 677B6BC5125065EF671517AF /* keyboard */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 644325D14FD20B88184F7B96 /* Products */; + ProjectRef = 4EC774AF1C8B11653EDD4CF5 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 73176F12128359B77F276047 /* keyboard */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 72750F76468F6580744A4BC9 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 5034364C4E5B3FD958D13B5C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 4684144777C328C125E4477A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 45273A68360C0E815D1B1BC0 /* kromasky_16x16.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 46C76D2668D37A606FA41834 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 324160D025840B5270143D94 /* common.c in Sources */, + 4CBC542E1F7005322C280595 /* keyboard.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 49D96F9A0B0A7D6D315D6561 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 47316C104E515CB0638F45FE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 29CD6D214B7C539E454E3F7F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "keyboard"; + }; + name = "Debug"; + }; + 4F111B6B1ABD2B982AD67BF5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "keyboard"; + }; + name = "Release"; + }; + 5BB564CA490F15C1418B1116 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 1CB3517C5A08534D77F33340 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2CB14BD0504177BD395A5721 /* Build configuration list for PBXNativeTarget "keyboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 29CD6D214B7C539E454E3F7F /* Debug */, + 4F111B6B1ABD2B982AD67BF5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "keyboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BB564CA490F15C1418B1116 /* Debug */, + 1CB3517C5A08534D77F33340 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/Demos/mixer/mixer.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/mixer/mixer.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..cccd2a9e45 --- /dev/null +++ b/premake/Xcode-iOS/Demos/mixer/mixer.xcodeproj/project.pbxproj @@ -0,0 +1,382 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 0B6859393B9143B32E541E7E /* ds_brush_snare.wav in Resources */ = {isa = PBXBuildFile; fileRef = 422733DF08FD31034D304460 /* ds_brush_snare.wav */; }; + 1D620E24175E3BDC68B364CC /* ds_china.wav in Resources */ = {isa = PBXBuildFile; fileRef = 79E53A83260455FE38C33693 /* ds_china.wav */; }; + 0CFA1EA63AE91AEB435040F4 /* ds_kick_big_amb.wav in Resources */ = {isa = PBXBuildFile; fileRef = 1F722A62118969EF6675146F /* ds_kick_big_amb.wav */; }; + 3C721D7F0BE567BA03824EC3 /* ds_loose_skin_mute.wav in Resources */ = {isa = PBXBuildFile; fileRef = 7FFF7D0619C10C5C2CDB1303 /* ds_loose_skin_mute.wav */; }; + 562A04E23F4F62DB1A77086F /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 10786FA134B253174C941340 /* common.c */; }; + 6BEA7CEB63D02B4D066E34E5 /* mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 687637245A2B505F4A160613 /* mixer.c */; }; + 081C234807FF0C5C139957D8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 203A4FD6274F474708165F11 /* AudioToolbox.framework */; }; + 5B59651D06310F6C10D32C9D /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32982470375E18A1721C3319 /* QuartzCore.framework */; }; + 4CB53808503156A666854E29 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19A945435C744703450D6DB4 /* OpenGLES.framework */; }; + 4B5D5AA06F9A6DDF6E6955BE /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06A616C9757B111D082B6699 /* CoreGraphics.framework */; }; + 660D132301FE4FC469482A6A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A35894181D26234E8906BB /* UIKit.framework */; }; + 40135577196C0B49113E1344 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F39495026702A5475264C60 /* Foundation.framework */; }; + 5DE82D615C365F4C08B4227B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 102040E91CCC47744B866018 /* CoreAudio.framework */; }; + 42B32C7E1256594210637026 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 387D44E21004100A08F954C0 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3DF962F5699217AC4FE77606 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4FC72EC24B0D47FF42BB412E /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 0BD816BC3B2176BC65117275 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4FC72EC24B0D47FF42BB412E /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 65434775530A460B247312EC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 422733DF08FD31034D304460 /* ds_brush_snare.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "ds_brush_snare.wav"; path = "../../../../Xcode-iOS/Demos/data/drums/ds_brush_snare.wav"; sourceTree = ""; }; + 79E53A83260455FE38C33693 /* ds_china.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "ds_china.wav"; path = "../../../../Xcode-iOS/Demos/data/drums/ds_china.wav"; sourceTree = ""; }; + 1F722A62118969EF6675146F /* ds_kick_big_amb.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "ds_kick_big_amb.wav"; path = "../../../../Xcode-iOS/Demos/data/drums/ds_kick_big_amb.wav"; sourceTree = ""; }; + 7FFF7D0619C10C5C2CDB1303 /* ds_loose_skin_mute.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "ds_loose_skin_mute.wav"; path = "../../../../Xcode-iOS/Demos/data/drums/ds_loose_skin_mute.wav"; sourceTree = ""; }; + 10786FA134B253174C941340 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 61A137E9413B20467DD00CE4 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 687637245A2B505F4A160613 /* mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "mixer.c"; path = "../../../../Xcode-iOS/Demos/src/mixer.c"; sourceTree = ""; }; + 203A4FD6274F474708165F11 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 32982470375E18A1721C3319 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 19A945435C744703450D6DB4 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 06A616C9757B111D082B6699 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 68A35894181D26234E8906BB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 4F39495026702A5475264C60 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 102040E91CCC47744B866018 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 17915AFB41DD5216489A7D9D /* mixer */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "mixer"; path = "mixer"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4FC72EC24B0D47FF42BB412E /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3F9F772D4BEA703C31557097 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 081C234807FF0C5C139957D8 /* AudioToolbox.framework in Frameworks */, + 5B59651D06310F6C10D32C9D /* QuartzCore.framework in Frameworks */, + 4CB53808503156A666854E29 /* OpenGLES.framework in Frameworks */, + 4B5D5AA06F9A6DDF6E6955BE /* CoreGraphics.framework in Frameworks */, + 660D132301FE4FC469482A6A /* UIKit.framework in Frameworks */, + 40135577196C0B49113E1344 /* Foundation.framework in Frameworks */, + 5DE82D615C365F4C08B4227B /* CoreAudio.framework in Frameworks */, + 42B32C7E1256594210637026 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 64F72912178E0E0A529D547E /* mixer */ = { + isa = PBXGroup; + children = ( + 30E07F1023C3109F689531C0 /* Xcode-iOS */, + 447E63AC35FA5F3B5457493C /* Frameworks */, + 56F83BF965B964C63D7C584C /* Products */, + 6BBD4CDF46EE53A457CF775A /* Projects */, + ); + name = "mixer"; + sourceTree = ""; + }; + 30E07F1023C3109F689531C0 /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 5687680358D406927F8D3122 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 5687680358D406927F8D3122 /* Demos */ = { + isa = PBXGroup; + children = ( + 65434775530A460B247312EC /* Info.plist */, + 4525302B7F940E66616B446F /* data */, + 682F19D924A4152E215F01F1 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 4525302B7F940E66616B446F /* data */ = { + isa = PBXGroup; + children = ( + 69E5397630F2065F749834A8 /* drums */, + ); + name = "data"; + sourceTree = ""; + }; + 69E5397630F2065F749834A8 /* drums */ = { + isa = PBXGroup; + children = ( + 422733DF08FD31034D304460 /* ds_brush_snare.wav */, + 79E53A83260455FE38C33693 /* ds_china.wav */, + 1F722A62118969EF6675146F /* ds_kick_big_amb.wav */, + 7FFF7D0619C10C5C2CDB1303 /* ds_loose_skin_mute.wav */, + ); + name = "drums"; + sourceTree = ""; + }; + 682F19D924A4152E215F01F1 /* src */ = { + isa = PBXGroup; + children = ( + 10786FA134B253174C941340 /* common.c */, + 61A137E9413B20467DD00CE4 /* common.h */, + 687637245A2B505F4A160613 /* mixer.c */, + ); + name = "src"; + sourceTree = ""; + }; + 447E63AC35FA5F3B5457493C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 203A4FD6274F474708165F11 /* AudioToolbox.framework */, + 32982470375E18A1721C3319 /* QuartzCore.framework */, + 19A945435C744703450D6DB4 /* OpenGLES.framework */, + 06A616C9757B111D082B6699 /* CoreGraphics.framework */, + 68A35894181D26234E8906BB /* UIKit.framework */, + 4F39495026702A5475264C60 /* Foundation.framework */, + 102040E91CCC47744B866018 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 56F83BF965B964C63D7C584C /* Products */ = { + isa = PBXGroup; + children = ( + 17915AFB41DD5216489A7D9D /* mixer */, + ); + name = "Products"; + sourceTree = ""; + }; + 6BBD4CDF46EE53A457CF775A /* Projects */ = { + isa = PBXGroup; + children = ( + 4FC72EC24B0D47FF42BB412E /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 14184545582D7FB768DA7DD1 /* Products */ = { + isa = PBXGroup; + children = ( + 387D44E21004100A08F954C0 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5D8A3C36241715841B63245E /* mixer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 071B02257AE01E935E8D1379 /* Build configuration list for PBXNativeTarget "mixer" */; + buildPhases = ( + 0DD66F6149F315524B87203F /* Resources */, + 241A48291BAC50147F677AD3 /* Sources */, + 3F9F772D4BEA703C31557097 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 1C743B7F1E84122F06736C69 /* PBXTargetDependency */, + ); + name = "mixer"; + productInstallPath = "$(HOME)/Applications"; + productName = "mixer"; + productReference = 17915AFB41DD5216489A7D9D /* mixer */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "mixer" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 64F72912178E0E0A529D547E /* mixer */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 14184545582D7FB768DA7DD1 /* Products */; + ProjectRef = 4FC72EC24B0D47FF42BB412E /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 5D8A3C36241715841B63245E /* mixer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 387D44E21004100A08F954C0 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3DF962F5699217AC4FE77606 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 0DD66F6149F315524B87203F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B6859393B9143B32E541E7E /* ds_brush_snare.wav in Resources */, + 1D620E24175E3BDC68B364CC /* ds_china.wav in Resources */, + 0CFA1EA63AE91AEB435040F4 /* ds_kick_big_amb.wav in Resources */, + 3C721D7F0BE567BA03824EC3 /* ds_loose_skin_mute.wav in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 241A48291BAC50147F677AD3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 562A04E23F4F62DB1A77086F /* common.c in Sources */, + 6BEA7CEB63D02B4D066E34E5 /* mixer.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 1C743B7F1E84122F06736C69 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0BD816BC3B2176BC65117275 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 6BF263503A1012B07427361E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "mixer"; + }; + name = "Debug"; + }; + 004C079411BA6B4276C04983 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "mixer"; + }; + name = "Release"; + }; + 010032F924AD1A8604875C13 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 62BE3AE0053C3D574C260D65 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 071B02257AE01E935E8D1379 /* Build configuration list for PBXNativeTarget "mixer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6BF263503A1012B07427361E /* Debug */, + 004C079411BA6B4276C04983 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "mixer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 010032F924AD1A8604875C13 /* Debug */, + 62BE3AE0053C3D574C260D65 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/Demos/rectangles/rectangles.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/rectangles/rectangles.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..1e17181034 --- /dev/null +++ b/premake/Xcode-iOS/Demos/rectangles/rectangles.xcodeproj/project.pbxproj @@ -0,0 +1,350 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3E683D8F380B72331D966705 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 2813245205F14A8C59584160 /* common.c */; }; + 6C1A3816543D7795144223E1 /* rectangles.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A6027E7619B1FF276F1647F /* rectangles.c */; }; + 538E114C2E7E62F427035765 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F76EF742501A5342D32B4D /* AudioToolbox.framework */; }; + 541C7B547AFB75F808F11178 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39BB5FD3409327B862A33D0D /* QuartzCore.framework */; }; + 3ADA65AC17A56E470D723A3C /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C104A979ED6C3F551705B5 /* OpenGLES.framework */; }; + 2DB765A563272C8C413C7066 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49F32DF021A1011108AA6CFA /* CoreGraphics.framework */; }; + 1B941B1F31474FB121373844 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 628A573103CA605A5BC832E0 /* UIKit.framework */; }; + 73672D2A32625F0C346242FA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D9D37B445D828F112A73D2F /* Foundation.framework */; }; + 04FB3B665FEE29384B9B42F1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 342B2F6F3B5B137C31E424CE /* CoreAudio.framework */; }; + 28C530DA667726EB4DF6727F /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45EF5D8025B92F4F04680040 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 368972B01B321F625EDD3C27 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0436345602702CD6400A6247 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 4D7C0BD571B740A9497C22A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0436345602702CD6400A6247 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5227088F1D3F252018614672 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 2813245205F14A8C59584160 /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 36B01E185907089C3F291E5B /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 1A6027E7619B1FF276F1647F /* rectangles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "rectangles.c"; path = "../../../../Xcode-iOS/Demos/src/rectangles.c"; sourceTree = ""; }; + 34F76EF742501A5342D32B4D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 39BB5FD3409327B862A33D0D /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 00C104A979ED6C3F551705B5 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 49F32DF021A1011108AA6CFA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 628A573103CA605A5BC832E0 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 1D9D37B445D828F112A73D2F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 342B2F6F3B5B137C31E424CE /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 7332796826E47C595AC15526 /* rectangles */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "rectangles"; path = "rectangles"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0436345602702CD6400A6247 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 57DD0560107127536F5B5B69 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 538E114C2E7E62F427035765 /* AudioToolbox.framework in Frameworks */, + 541C7B547AFB75F808F11178 /* QuartzCore.framework in Frameworks */, + 3ADA65AC17A56E470D723A3C /* OpenGLES.framework in Frameworks */, + 2DB765A563272C8C413C7066 /* CoreGraphics.framework in Frameworks */, + 1B941B1F31474FB121373844 /* UIKit.framework in Frameworks */, + 73672D2A32625F0C346242FA /* Foundation.framework in Frameworks */, + 04FB3B665FEE29384B9B42F1 /* CoreAudio.framework in Frameworks */, + 28C530DA667726EB4DF6727F /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 288A2F3007DA183E3DA11892 /* rectangles */ = { + isa = PBXGroup; + children = ( + 483D233459853EE340090F93 /* Xcode-iOS */, + 2792239319A468A14CAA48C7 /* Frameworks */, + 6F89456E4C5C59BF2F18556B /* Products */, + 6546611D6AF04A5720535BA8 /* Projects */, + ); + name = "rectangles"; + sourceTree = ""; + }; + 483D233459853EE340090F93 /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 38DD5DD6376F629A6DED1DE9 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 38DD5DD6376F629A6DED1DE9 /* Demos */ = { + isa = PBXGroup; + children = ( + 5227088F1D3F252018614672 /* Info.plist */, + 6CF216180B8F014E40C62052 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 6CF216180B8F014E40C62052 /* src */ = { + isa = PBXGroup; + children = ( + 2813245205F14A8C59584160 /* common.c */, + 36B01E185907089C3F291E5B /* common.h */, + 1A6027E7619B1FF276F1647F /* rectangles.c */, + ); + name = "src"; + sourceTree = ""; + }; + 2792239319A468A14CAA48C7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 34F76EF742501A5342D32B4D /* AudioToolbox.framework */, + 39BB5FD3409327B862A33D0D /* QuartzCore.framework */, + 00C104A979ED6C3F551705B5 /* OpenGLES.framework */, + 49F32DF021A1011108AA6CFA /* CoreGraphics.framework */, + 628A573103CA605A5BC832E0 /* UIKit.framework */, + 1D9D37B445D828F112A73D2F /* Foundation.framework */, + 342B2F6F3B5B137C31E424CE /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6F89456E4C5C59BF2F18556B /* Products */ = { + isa = PBXGroup; + children = ( + 7332796826E47C595AC15526 /* rectangles */, + ); + name = "Products"; + sourceTree = ""; + }; + 6546611D6AF04A5720535BA8 /* Projects */ = { + isa = PBXGroup; + children = ( + 0436345602702CD6400A6247 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0DC524DC289165A2096A1B8A /* Products */ = { + isa = PBXGroup; + children = ( + 45EF5D8025B92F4F04680040 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4F6855E4129920DC7A9153FC /* rectangles */ = { + isa = PBXNativeTarget; + buildConfigurationList = 79D259543EB15FB103D110D7 /* Build configuration list for PBXNativeTarget "rectangles" */; + buildPhases = ( + 3CAC6B4F48AA464B710068C1 /* Resources */, + 0BE0523D5BE05C0B02A52BA6 /* Sources */, + 57DD0560107127536F5B5B69 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 1B3B41B9731B1B0D007A7AC1 /* PBXTargetDependency */, + ); + name = "rectangles"; + productInstallPath = "$(HOME)/Applications"; + productName = "rectangles"; + productReference = 7332796826E47C595AC15526 /* rectangles */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "rectangles" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 288A2F3007DA183E3DA11892 /* rectangles */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0DC524DC289165A2096A1B8A /* Products */; + ProjectRef = 0436345602702CD6400A6247 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4F6855E4129920DC7A9153FC /* rectangles */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 45EF5D8025B92F4F04680040 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 368972B01B321F625EDD3C27 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3CAC6B4F48AA464B710068C1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0BE0523D5BE05C0B02A52BA6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E683D8F380B72331D966705 /* common.c in Sources */, + 6C1A3816543D7795144223E1 /* rectangles.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 1B3B41B9731B1B0D007A7AC1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 4D7C0BD571B740A9497C22A5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 241D072A6F2D0EA442E9032F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "rectangles"; + }; + name = "Debug"; + }; + 29F11E745BAF53647A9017A1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "rectangles"; + }; + name = "Release"; + }; + 2CD758AE2ACB76894D9F26D0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 743958EA264E002121B2360E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 79D259543EB15FB103D110D7 /* Build configuration list for PBXNativeTarget "rectangles" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 241D072A6F2D0EA442E9032F /* Debug */, + 29F11E745BAF53647A9017A1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "rectangles" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2CD758AE2ACB76894D9F26D0 /* Debug */, + 743958EA264E002121B2360E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/Demos/touch/touch.xcodeproj/project.pbxproj b/premake/Xcode-iOS/Demos/touch/touch.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..ce0a370279 --- /dev/null +++ b/premake/Xcode-iOS/Demos/touch/touch.xcodeproj/project.pbxproj @@ -0,0 +1,362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 44A5650B6BCF70612F3A3EED /* stroke.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 102B12A4027156F83A0D40AB /* stroke.bmp */; }; + 31906B8700A178D233233F36 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 02F347371F52568E12CF75FA /* common.c */; }; + 2DAD6F6C37366013402423CD /* touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 6D5059D32C6D47053C146426 /* touch.c */; }; + 1FCF7B9250267C474FFF1317 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EB40C466A044452147954FE /* AudioToolbox.framework */; }; + 3F8614FA2BB9118010E402BD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65156B5F67D37E3634D1353B /* QuartzCore.framework */; }; + 4DE269AF156A670F15C76C20 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B790E684F1661FD3CDE50BD /* OpenGLES.framework */; }; + 1B9025D4163C6DF452CB4B15 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BFD013C2EC12CDF6D7213E4 /* CoreGraphics.framework */; }; + 1067012C0CF4170C465A4732 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D4E119A347A3D9916C6457B /* UIKit.framework */; }; + 250771553F7A720752E02B11 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37FD4C8345287A1C74820723 /* Foundation.framework */; }; + 57E9417D75CB142C653E02C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 059525A845FC5C9E20953252 /* CoreAudio.framework */; }; + 6B1F7AF166A178AA61071706 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D931F88425701C078B07720 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33B14F0C4EDF4A8D301C10A8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 73C70F1E01C8127431B70DD1 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 1C2D50527874154867FC7A7A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 73C70F1E01C8127431B70DD1 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5D7268702730733A7D936748 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "../../../../Xcode-iOS/Demos/Info.plist"; sourceTree = ""; }; + 102B12A4027156F83A0D40AB /* stroke.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = "stroke.bmp"; path = "../../../../Xcode-iOS/Demos/data/stroke.bmp"; sourceTree = ""; }; + 02F347371F52568E12CF75FA /* common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "common.c"; path = "../../../../Xcode-iOS/Demos/src/common.c"; sourceTree = ""; }; + 278274AA7EA5160202BE0835 /* common.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "common.h"; path = "../../../../Xcode-iOS/Demos/src/common.h"; sourceTree = ""; }; + 6D5059D32C6D47053C146426 /* touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "touch.c"; path = "../../../../Xcode-iOS/Demos/src/touch.c"; sourceTree = ""; }; + 5EB40C466A044452147954FE /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 65156B5F67D37E3634D1353B /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 4B790E684F1661FD3CDE50BD /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 2BFD013C2EC12CDF6D7213E4 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 0D4E119A347A3D9916C6457B /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 37FD4C8345287A1C74820723 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 059525A845FC5C9E20953252 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 79DA5CF10F7848015B0E7B10 /* touch */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = "touch"; path = "touch"; sourceTree = BUILT_PRODUCTS_DIR; }; + 73C70F1E01C8127431B70DD1 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1DAD583D4ABE25DC3C232F7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FCF7B9250267C474FFF1317 /* AudioToolbox.framework in Frameworks */, + 3F8614FA2BB9118010E402BD /* QuartzCore.framework in Frameworks */, + 4DE269AF156A670F15C76C20 /* OpenGLES.framework in Frameworks */, + 1B9025D4163C6DF452CB4B15 /* CoreGraphics.framework in Frameworks */, + 1067012C0CF4170C465A4732 /* UIKit.framework in Frameworks */, + 250771553F7A720752E02B11 /* Foundation.framework in Frameworks */, + 57E9417D75CB142C653E02C3 /* CoreAudio.framework in Frameworks */, + 6B1F7AF166A178AA61071706 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 492E166D57477FA478990772 /* touch */ = { + isa = PBXGroup; + children = ( + 5C73413941CE7C1842690DE9 /* Xcode-iOS */, + 01AA4ABB3DF9507B6FCA472B /* Frameworks */, + 604E40BE080514F15A952943 /* Products */, + 05931ED004651CC60E5C655D /* Projects */, + ); + name = "touch"; + sourceTree = ""; + }; + 5C73413941CE7C1842690DE9 /* Xcode-iOS */ = { + isa = PBXGroup; + children = ( + 3D7B6D34290A516832BD26C9 /* Demos */, + ); + name = "Xcode-iOS"; + sourceTree = ""; + }; + 3D7B6D34290A516832BD26C9 /* Demos */ = { + isa = PBXGroup; + children = ( + 5D7268702730733A7D936748 /* Info.plist */, + 32253DCA52F637CC52874AE1 /* data */, + 61A878F7300F30FB49712375 /* src */, + ); + name = "Demos"; + sourceTree = ""; + }; + 32253DCA52F637CC52874AE1 /* data */ = { + isa = PBXGroup; + children = ( + 102B12A4027156F83A0D40AB /* stroke.bmp */, + ); + name = "data"; + sourceTree = ""; + }; + 61A878F7300F30FB49712375 /* src */ = { + isa = PBXGroup; + children = ( + 02F347371F52568E12CF75FA /* common.c */, + 278274AA7EA5160202BE0835 /* common.h */, + 6D5059D32C6D47053C146426 /* touch.c */, + ); + name = "src"; + sourceTree = ""; + }; + 01AA4ABB3DF9507B6FCA472B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5EB40C466A044452147954FE /* AudioToolbox.framework */, + 65156B5F67D37E3634D1353B /* QuartzCore.framework */, + 4B790E684F1661FD3CDE50BD /* OpenGLES.framework */, + 2BFD013C2EC12CDF6D7213E4 /* CoreGraphics.framework */, + 0D4E119A347A3D9916C6457B /* UIKit.framework */, + 37FD4C8345287A1C74820723 /* Foundation.framework */, + 059525A845FC5C9E20953252 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 604E40BE080514F15A952943 /* Products */ = { + isa = PBXGroup; + children = ( + 79DA5CF10F7848015B0E7B10 /* touch */, + ); + name = "Products"; + sourceTree = ""; + }; + 05931ED004651CC60E5C655D /* Projects */ = { + isa = PBXGroup; + children = ( + 73C70F1E01C8127431B70DD1 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7BDA644C79FE323076F70739 /* Products */ = { + isa = PBXGroup; + children = ( + 1D931F88425701C078B07720 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7E3B5FEB754A0B5520235C50 /* touch */ = { + isa = PBXNativeTarget; + buildConfigurationList = 371D55C1257826A923E4771B /* Build configuration list for PBXNativeTarget "touch" */; + buildPhases = ( + 160D35EC4E82653C03C52EAD /* Resources */, + 193B23AC765E2C585B1560FD /* Sources */, + 1DAD583D4ABE25DC3C232F7A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 7BF075F418D41E8C1DD347F7 /* PBXTargetDependency */, + ); + name = "touch"; + productInstallPath = "$(HOME)/Applications"; + productName = "touch"; + productReference = 79DA5CF10F7848015B0E7B10 /* touch */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "touch" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 492E166D57477FA478990772 /* touch */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7BDA644C79FE323076F70739 /* Products */; + ProjectRef = 73C70F1E01C8127431B70DD1 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 7E3B5FEB754A0B5520235C50 /* touch */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 1D931F88425701C078B07720 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 33B14F0C4EDF4A8D301C10A8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 160D35EC4E82653C03C52EAD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 44A5650B6BCF70612F3A3EED /* stroke.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 193B23AC765E2C585B1560FD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 31906B8700A178D233233F36 /* common.c in Sources */, + 2DAD6F6C37366013402423CD /* touch.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 7BF075F418D41E8C1DD347F7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 1C2D50527874154867FC7A7A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 551D11A047DA4F2C7C7D0823 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "touch"; + }; + name = "Debug"; + }; + 623B2822705365B569AE5529 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INFOPLIST_FILE = "../../../../Xcode-iOS/Demos/Info.plist"; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = "touch"; + }; + name = "Release"; + }; + 5BBE2AC31114434E5C1F7758 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 7C575288033B53977BD57638 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 371D55C1257826A923E4771B /* Build configuration list for PBXNativeTarget "touch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 551D11A047DA4F2C7C7D0823 /* Debug */, + 623B2822705365B569AE5529 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "touch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5BBE2AC31114434E5C1F7758 /* Debug */, + 7C575288033B53977BD57638 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/SDL.xcworkspace/contents.xcworkspacedata b/premake/Xcode-iOS/SDL.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000000..7788c7732c --- /dev/null +++ b/premake/Xcode-iOS/SDL.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/Xcode-iOS/SDL2/SDL2.xcodeproj/project.pbxproj b/premake/Xcode-iOS/SDL2/SDL2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..4dbfb523c6 --- /dev/null +++ b/premake/Xcode-iOS/SDL2/SDL2.xcodeproj/project.pbxproj @@ -0,0 +1,1033 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 4B806D3A32321C1562DC068A /* SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 1754411A221209B96C327B00 /* SDL.c */; }; + 312A55E27C22567927096421 /* SDL_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 50127CF143E2409B00E82007 /* SDL_assert.c */; }; + 59EC4DD65AC8132A334525C2 /* SDL_error.c in Sources */ = {isa = PBXBuildFile; fileRef = 3E6760E518A1332F0C066AEE /* SDL_error.c */; }; + 777A6B9724EA08530C265065 /* SDL_hints.c in Sources */ = {isa = PBXBuildFile; fileRef = 61943EC860253DA55758786D /* SDL_hints.c */; }; + 7E5108A73256684F3D264AFD /* SDL_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 24541855198526E106FB61C9 /* SDL_log.c */; }; + 0FC3034E04AD7E6F3AA825C8 /* SDL_atomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 1FB5255373F013CC70D8002D /* SDL_atomic.c */; }; + 5E007EF93C286858239D38F9 /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 2137310F68926D6D476C07A1 /* SDL_spinlock.c */; }; + 0CD02D154F366D7153274AFB /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 002C4E540DF5538435BC514A /* SDL_audio.c */; }; + 06871CF4135806F428EE6100 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 4DBB70D75469728B342373E8 /* SDL_audiocvt.c */; }; + 53C27DD277591A486D287F66 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = 48886D482B5239D2429E422D /* SDL_audiodev.c */; }; + 42024F3C06A820FA25753037 /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 0F175E65628D4137386B7A6D /* SDL_audiotypecvt.c */; }; + 706901DA2233598C2BC31C9E /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 77537CFB490A3599736F3830 /* SDL_mixer.c */; }; + 5D37701F2B9C4D8572677A14 /* SDL_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F503D9B3C7B4D2E09215A0A /* SDL_wave.c */; }; + 4F9A194458623E3271D9606F /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 785801FB211321AB70091ABE /* SDL_coreaudio.c */; }; + 401616E4053C316F11827D6A /* SDL_diskaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 4DC41A2B14C11D2837432538 /* SDL_diskaudio.c */; }; + 1EF571B808FD4D1C7CCA604A /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 09BB72B17B0C531926C153F5 /* SDL_dummyaudio.c */; }; + 6C61795802890EEB0CA54BA2 /* SDL_cpuinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 215A41140CF741414DF53790 /* SDL_cpuinfo.c */; }; + 3EE216AB54E87EA113703443 /* SDL_clipboardevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 24704CFC41E52BEC136D61EF /* SDL_clipboardevents.c */; }; + 117F40E519F73DBA084F02EE /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 464D7C157FD7281A65677EB6 /* SDL_dropevents.c */; }; + 4F4E4A74448725295FA90435 /* SDL_events.c in Sources */ = {isa = PBXBuildFile; fileRef = 2A4321B70FCC1BF02A4B3380 /* SDL_events.c */; }; + 2E9D6A2A139E11AA6BF93FA2 /* SDL_gesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 4DC2358C7D821A786391025B /* SDL_gesture.c */; }; + 28084123104729F20883021D /* SDL_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 3E70553911EE2F50403C2750 /* SDL_keyboard.c */; }; + 780602D4682E3A62216F0016 /* SDL_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 131F008A780923790A8148F5 /* SDL_mouse.c */; }; + 72D51B6B14043ABF5B1A411E /* SDL_quit.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D5177DC2F6F2EA974930BD1 /* SDL_quit.c */; }; + 6F9B6082102A6D4643966C33 /* SDL_touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BD37C83179405632D7E4F15 /* SDL_touch.c */; }; + 1D095DEE6FBE62757B2F0414 /* SDL_windowevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 31D33D8501A50DA7668C1AE8 /* SDL_windowevents.c */; }; + 6B4B439A34176F3D1BEA2D1C /* SDL_rwops.c in Sources */ = {isa = PBXBuildFile; fileRef = 3FCB452F4E155E2904C203BC /* SDL_rwops.c */; }; + 01924E3528BA6A184DDC4943 /* SDL_rwopsbundlesupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DC9038B20EA22A67E200719 /* SDL_rwopsbundlesupport.m */; }; + 0C176977081064BD51221009 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 087154621C696D6C0AAD0059 /* SDL_sysfilesystem.m */; }; + 006441F36BCB7D18505F1A4D /* SDL_haptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 1FC417354FD96DC41F5B42DC /* SDL_haptic.c */; }; + 5AF26187008556F10D163FC5 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = 37A8332F73B83B981A656B57 /* SDL_gamecontroller.c */; }; + 44BF684B3269241B040C6774 /* SDL_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 29925AA7203D1B7471C02E35 /* SDL_joystick.c */; }; + 4E1438BA6EAD299D3AB94EB1 /* SDLUIAccelerationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 139C19587C553FAD2FF73925 /* SDLUIAccelerationDelegate.m */; }; + 40BB54235B2918C822911D19 /* SDL_sysjoystick.m in Sources */ = {isa = PBXBuildFile; fileRef = 478E79F80A440AB446AF36B9 /* SDL_sysjoystick.m */; }; + 07E7585B40781652700B7606 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 76F16F6846EE3EE4233E6AE1 /* SDL_sysloadso.c */; }; + 4F3E10F7613037117EB3300A /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F734033596532395886740E /* SDL_power.c */; }; + 2AE467ED7C4202905BCB6C79 /* SDL_syspower.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D1E217E017A113B708F503E /* SDL_syspower.m */; }; + 0E381F293D34214B54782982 /* SDL_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 16912E070440110F77DC211B /* SDL_render.c */; }; + 083E3C4A327E29FB535B1FAC /* SDL_yuv_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 548B72177C19782D6FC8496A /* SDL_yuv_mmx.c */; }; + 02CB74104D79791B0990020E /* SDL_yuv_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BF21F823F875C6F29CF5D97 /* SDL_yuv_sw.c */; }; + 20634A5F593610E956065D3F /* SDL_render_gles.c in Sources */ = {isa = PBXBuildFile; fileRef = 7B673C6607B5021010B16CC9 /* SDL_render_gles.c */; }; + 2F1314E84BAE322B27F703F2 /* SDL_render_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = 629E77A3760410B906A567F7 /* SDL_render_gles2.c */; }; + 368E5B8445CD1B8401E76AF7 /* SDL_shaders_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = 39A9217A0717288C2FDD590A /* SDL_shaders_gles2.c */; }; + 4FF037AE0F9B121821B90C8C /* SDL_blendfillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E360AE36AA6505462B64168 /* SDL_blendfillrect.c */; }; + 563963766931175F0B5F3FCA /* SDL_blendline.c in Sources */ = {isa = PBXBuildFile; fileRef = 55EB71951AB3082D65D67F09 /* SDL_blendline.c */; }; + 7C53362964DB1E582A4C716F /* SDL_blendpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 50F735292AAB4EC320785387 /* SDL_blendpoint.c */; }; + 603C084C405738731C060951 /* SDL_drawline.c in Sources */ = {isa = PBXBuildFile; fileRef = 7AC349DB515B566C59F7764B /* SDL_drawline.c */; }; + 706934E33ADB01A122ED0676 /* SDL_drawpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 6DB9260B44F4147A769475EE /* SDL_drawpoint.c */; }; + 74C87E3E4F2B36DC43CA2F35 /* SDL_render_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 34B301645FD51A5D52E63453 /* SDL_render_sw.c */; }; + 6A9A64C74B9954D106E54D6F /* SDL_rotate.c in Sources */ = {isa = PBXBuildFile; fileRef = 3DED4866613C4A255D8A0F6B /* SDL_rotate.c */; }; + 075360CC0A5E5C66484F62F8 /* SDL_getenv.c in Sources */ = {isa = PBXBuildFile; fileRef = 4DA248EA1F8A226552B17518 /* SDL_getenv.c */; }; + 61B2004548E76739034A0B78 /* SDL_iconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 124A749436D01E322447405A /* SDL_iconv.c */; }; + 37365F82067E4DB5356104CF /* SDL_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 206167DF0E633DDA38386DB5 /* SDL_malloc.c */; }; + 6B561A8B4BCB33CE38170C24 /* SDL_qsort.c in Sources */ = {isa = PBXBuildFile; fileRef = 46D10031516609805A120451 /* SDL_qsort.c */; }; + 1790071D15E22E8F30675AA7 /* SDL_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 226E7A9565696D1109C63D31 /* SDL_stdlib.c */; }; + 6B2D58972C715A1069D40036 /* SDL_string.c in Sources */ = {isa = PBXBuildFile; fileRef = 3BDE72945D2B3C8B5CC33EBE /* SDL_string.c */; }; + 10B6394A4F192929471B48ED /* SDL_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = 49C941ED33AE1BDF03E7434B /* SDL_thread.c */; }; + 70C725D9776C58540D4368C3 /* SDL_syscond.c in Sources */ = {isa = PBXBuildFile; fileRef = 12FE6FD85B19655C0B1D2812 /* SDL_syscond.c */; }; + 1E59768334D271C377111037 /* SDL_sysmutex.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E8415AB34D72C681EA777BF /* SDL_sysmutex.c */; }; + 2E312CAB2C9A404935B337A2 /* SDL_syssem.c in Sources */ = {isa = PBXBuildFile; fileRef = 271A52A21FD42FD759442D0B /* SDL_syssem.c */; }; + 447639E03ED5458F38F23139 /* SDL_systhread.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D6F38982BAA3DB678653A9F /* SDL_systhread.c */; }; + 5D755F5F0DCE0CEB291F6EC4 /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = 35E57FD90ED160CD3C377491 /* SDL_systls.c */; }; + 0FD97D8128F92AF83C09072F /* SDL_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C9238847CD26ECA3EF23E38 /* SDL_timer.c */; }; + 7E9B20A15917194A791D6122 /* SDL_systimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3BD67DAA56A456B453590AE3 /* SDL_systimer.c */; }; + 7FD261822F3148596D7A6E81 /* SDL_RLEaccel.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BED7C140FC627FF7D7F2111 /* SDL_RLEaccel.c */; }; + 321D4A6D588325BF5D0E62E1 /* SDL_blit.c in Sources */ = {isa = PBXBuildFile; fileRef = 4286099A6624526E4BC469B4 /* SDL_blit.c */; }; + 2F7F74AA6DAF7CB00E59199C /* SDL_blit_0.c in Sources */ = {isa = PBXBuildFile; fileRef = 6E7C17832B15293C3553792B /* SDL_blit_0.c */; }; + 73290E654357301424F432B1 /* SDL_blit_1.c in Sources */ = {isa = PBXBuildFile; fileRef = 0503247464D1023C4FB247FA /* SDL_blit_1.c */; }; + 17FB78FB43E649B00156410B /* SDL_blit_A.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E4A1E7B3EC46D91001B0F6A /* SDL_blit_A.c */; }; + 39C216A67CCA38CA15754031 /* SDL_blit_N.c in Sources */ = {isa = PBXBuildFile; fileRef = 461134000974378462AC3D70 /* SDL_blit_N.c */; }; + 6013202F0BDE394B17CE5698 /* SDL_blit_auto.c in Sources */ = {isa = PBXBuildFile; fileRef = 51224FAB20BA286A4F4A26EA /* SDL_blit_auto.c */; }; + 320F2422684F48EA0D206F02 /* SDL_blit_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = 50E8446963BA626B7FF02513 /* SDL_blit_copy.c */; }; + 61FB5617309F432E1410309D /* SDL_blit_slow.c in Sources */ = {isa = PBXBuildFile; fileRef = 3A507E5B122409D1793A6F51 /* SDL_blit_slow.c */; }; + 07285E0C6B925B40008D6193 /* SDL_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 277B113418FB21F91656773C /* SDL_bmp.c */; }; + 6A3823080B0667B076D93DDC /* SDL_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 35956B79610472F945081D98 /* SDL_clipboard.c */; }; + 14B24A5E05466C0601B52CF5 /* SDL_egl.c in Sources */ = {isa = PBXBuildFile; fileRef = 37B95CA22ECA68A94CB125AF /* SDL_egl.c */; }; + 40BF75A3254E46D15E594007 /* SDL_fillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 685F5211064001EA47DC7960 /* SDL_fillrect.c */; }; + 592273B70BFD223B7B335E96 /* SDL_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = 18AE600B7ADC0AB061053C02 /* SDL_pixels.c */; }; + 2C713596449934B84BD85CB4 /* SDL_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 175F09A3458D5EC2267974C2 /* SDL_rect.c */; }; + 0E7006E626FE6E425E38676D /* SDL_shape.c in Sources */ = {isa = PBXBuildFile; fileRef = 72B36F81063916AA18A17BA5 /* SDL_shape.c */; }; + 57376C9B40EA4F4E156C180F /* SDL_stretch.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C312B8C084B245B77693130 /* SDL_stretch.c */; }; + 5F8B28FB2EA35F2E632E66AD /* SDL_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 07245D04334F42C931AC3CE1 /* SDL_surface.c */; }; + 3E6A3B8261B06E180D03733B /* SDL_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 21FC3C1F203577D81A1302FB /* SDL_video.c */; }; + 57804D5121E342FF245A186B /* SDL_nullevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 6532624C22D14DA9369C597D /* SDL_nullevents.c */; }; + 1F472D4947857BB063A51388 /* SDL_nullframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 197510FC2BCD4AAC7399616A /* SDL_nullframebuffer.c */; }; + 0F2D74255E6022A45A613516 /* SDL_nullvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = 5880707874BA78E878636D01 /* SDL_nullvideo.c */; }; + 70CE6C4B3C6E7D151DB82429 /* SDL_uikitappdelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D4044F73A5936AE039A2A8E /* SDL_uikitappdelegate.m */; }; + 310349292DC724FA46171246 /* SDL_uikitevents.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EE2311851600F1A08837ED8 /* SDL_uikitevents.m */; }; + 3FB92B1C70C9598D38E5578C /* SDL_uikitmessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = 07A63C252BE013A210351305 /* SDL_uikitmessagebox.m */; }; + 4E1E1F6C0DF843B13C8A20B3 /* SDL_uikitmodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 2907271017A61367037578CE /* SDL_uikitmodes.m */; }; + 5977233B255D34F5622A600D /* SDL_uikitopengles.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8D13032A8242957A856C2E /* SDL_uikitopengles.m */; }; + 1CAE707A614455AC41541BD5 /* SDL_uikitopenglview.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DF2244C0A887AF25E802E0E /* SDL_uikitopenglview.m */; }; + 6A5875C8347A76EA3012019A /* SDL_uikitvideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B4E59B175A135D425483E78 /* SDL_uikitvideo.m */; }; + 129705167B44645E147450D4 /* SDL_uikitview.m in Sources */ = {isa = PBXBuildFile; fileRef = 616337D37E51262B02E67C2D /* SDL_uikitview.m */; }; + 43C5739551F76C1A1F8C4115 /* SDL_uikitviewcontroller.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BEA5F9878A47E063CF465B2 /* SDL_uikitviewcontroller.m */; }; + 4E027E396E7609FB7E207F75 /* SDL_uikitwindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 62E72E4E269E652A451851E0 /* SDL_uikitwindow.m */; }; + 326B2A134A3F743840A87D77 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FC23087098E4A46760575ED /* AudioToolbox.framework */; }; + 79E346732A181E9E1E9D01D3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 219B4BBB7728655E071C76E8 /* QuartzCore.framework */; }; + 551857D24E5F619C5E366560 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F2242B8754F17D126471E4F /* OpenGLES.framework */; }; + 50590A581DD405AD26553B45 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 184359E00F2E2484050B5639 /* CoreGraphics.framework */; }; + 4C5A5947489F49780FA80B81 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43D63AC169FD00D664F81586 /* UIKit.framework */; }; + 40AC6E426F4057FA1A2C4290 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D1F38124D655A821B1E79D9 /* Foundation.framework */; }; + 6AA3296957470540360C589F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07327F877E212C9043452002 /* CoreAudio.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1754411A221209B96C327B00 /* SDL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL.c"; path = "../../../src/SDL.c"; sourceTree = ""; }; + 50127CF143E2409B00E82007 /* SDL_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_assert.c"; path = "../../../src/SDL_assert.c"; sourceTree = ""; }; + 60C132130BCD5BDC6AC15946 /* SDL_assert_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_assert_c.h"; path = "../../../src/SDL_assert_c.h"; sourceTree = ""; }; + 3E6760E518A1332F0C066AEE /* SDL_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_error.c"; path = "../../../src/SDL_error.c"; sourceTree = ""; }; + 188702356BD1063054A73BCA /* SDL_error_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_error_c.h"; path = "../../../src/SDL_error_c.h"; sourceTree = ""; }; + 61943EC860253DA55758786D /* SDL_hints.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_hints.c"; path = "../../../src/SDL_hints.c"; sourceTree = ""; }; + 24541855198526E106FB61C9 /* SDL_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_log.c"; path = "../../../src/SDL_log.c"; sourceTree = ""; }; + 1FB5255373F013CC70D8002D /* SDL_atomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_atomic.c"; path = "../../../src/atomic/SDL_atomic.c"; sourceTree = ""; }; + 2137310F68926D6D476C07A1 /* SDL_spinlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_spinlock.c"; path = "../../../src/atomic/SDL_spinlock.c"; sourceTree = ""; }; + 002C4E540DF5538435BC514A /* SDL_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audio.c"; path = "../../../src/audio/SDL_audio.c"; sourceTree = ""; }; + 269A7458635E34682A053C5E /* SDL_audio_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audio_c.h"; path = "../../../src/audio/SDL_audio_c.h"; sourceTree = ""; }; + 4DBB70D75469728B342373E8 /* SDL_audiocvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiocvt.c"; path = "../../../src/audio/SDL_audiocvt.c"; sourceTree = ""; }; + 48886D482B5239D2429E422D /* SDL_audiodev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiodev.c"; path = "../../../src/audio/SDL_audiodev.c"; sourceTree = ""; }; + 227E138737440F101016545F /* SDL_audiodev_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audiodev_c.h"; path = "../../../src/audio/SDL_audiodev_c.h"; sourceTree = ""; }; + 5C3C744F22823D470BED10D6 /* SDL_audiomem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audiomem.h"; path = "../../../src/audio/SDL_audiomem.h"; sourceTree = ""; }; + 0F175E65628D4137386B7A6D /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiotypecvt.c"; path = "../../../src/audio/SDL_audiotypecvt.c"; sourceTree = ""; }; + 77537CFB490A3599736F3830 /* SDL_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_mixer.c"; path = "../../../src/audio/SDL_mixer.c"; sourceTree = ""; }; + 591062475F93492D625F7D3B /* SDL_sysaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysaudio.h"; path = "../../../src/audio/SDL_sysaudio.h"; sourceTree = ""; }; + 5F503D9B3C7B4D2E09215A0A /* SDL_wave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_wave.c"; path = "../../../src/audio/SDL_wave.c"; sourceTree = ""; }; + 627D165130C55DBB44F4177D /* SDL_wave.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_wave.h"; path = "../../../src/audio/SDL_wave.h"; sourceTree = ""; }; + 785801FB211321AB70091ABE /* SDL_coreaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_coreaudio.c"; path = "../../../src/audio/coreaudio/SDL_coreaudio.c"; sourceTree = ""; }; + 49A72F922CF1399C415C00CD /* SDL_coreaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_coreaudio.h"; path = "../../../src/audio/coreaudio/SDL_coreaudio.h"; sourceTree = ""; }; + 4DC41A2B14C11D2837432538 /* SDL_diskaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_diskaudio.c"; path = "../../../src/audio/disk/SDL_diskaudio.c"; sourceTree = ""; }; + 521D08EF11EB69A96AA46ED4 /* SDL_diskaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_diskaudio.h"; path = "../../../src/audio/disk/SDL_diskaudio.h"; sourceTree = ""; }; + 09BB72B17B0C531926C153F5 /* SDL_dummyaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dummyaudio.c"; path = "../../../src/audio/dummy/SDL_dummyaudio.c"; sourceTree = ""; }; + 276C60536A9304A5146B1268 /* SDL_dummyaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_dummyaudio.h"; path = "../../../src/audio/dummy/SDL_dummyaudio.h"; sourceTree = ""; }; + 215A41140CF741414DF53790 /* SDL_cpuinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_cpuinfo.c"; path = "../../../src/cpuinfo/SDL_cpuinfo.c"; sourceTree = ""; }; + 24704CFC41E52BEC136D61EF /* SDL_clipboardevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_clipboardevents.c"; path = "../../../src/events/SDL_clipboardevents.c"; sourceTree = ""; }; + 40F9257146A1113B5D295492 /* SDL_clipboardevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_clipboardevents_c.h"; path = "../../../src/events/SDL_clipboardevents_c.h"; sourceTree = ""; }; + 464D7C157FD7281A65677EB6 /* SDL_dropevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dropevents.c"; path = "../../../src/events/SDL_dropevents.c"; sourceTree = ""; }; + 7FD4632B48A909616DF97F07 /* SDL_dropevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_dropevents_c.h"; path = "../../../src/events/SDL_dropevents_c.h"; sourceTree = ""; }; + 2A4321B70FCC1BF02A4B3380 /* SDL_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_events.c"; path = "../../../src/events/SDL_events.c"; sourceTree = ""; }; + 643F6B011BA52B760BDD1942 /* SDL_events_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_events_c.h"; path = "../../../src/events/SDL_events_c.h"; sourceTree = ""; }; + 4DC2358C7D821A786391025B /* SDL_gesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_gesture.c"; path = "../../../src/events/SDL_gesture.c"; sourceTree = ""; }; + 31144B144A1A7666503F77F4 /* SDL_gesture_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gesture_c.h"; path = "../../../src/events/SDL_gesture_c.h"; sourceTree = ""; }; + 3E70553911EE2F50403C2750 /* SDL_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_keyboard.c"; path = "../../../src/events/SDL_keyboard.c"; sourceTree = ""; }; + 6D484FBC6CD8631039835F29 /* SDL_keyboard_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_keyboard_c.h"; path = "../../../src/events/SDL_keyboard_c.h"; sourceTree = ""; }; + 131F008A780923790A8148F5 /* SDL_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_mouse.c"; path = "../../../src/events/SDL_mouse.c"; sourceTree = ""; }; + 5E6E36D918D75AAB28EA359D /* SDL_mouse_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_mouse_c.h"; path = "../../../src/events/SDL_mouse_c.h"; sourceTree = ""; }; + 0D5177DC2F6F2EA974930BD1 /* SDL_quit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_quit.c"; path = "../../../src/events/SDL_quit.c"; sourceTree = ""; }; + 25307DC4784F0E2F3FF45EEF /* SDL_sysevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysevents.h"; path = "../../../src/events/SDL_sysevents.h"; sourceTree = ""; }; + 5BD37C83179405632D7E4F15 /* SDL_touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_touch.c"; path = "../../../src/events/SDL_touch.c"; sourceTree = ""; }; + 2C27609311E17D35413538AC /* SDL_touch_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_touch_c.h"; path = "../../../src/events/SDL_touch_c.h"; sourceTree = ""; }; + 31D33D8501A50DA7668C1AE8 /* SDL_windowevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_windowevents.c"; path = "../../../src/events/SDL_windowevents.c"; sourceTree = ""; }; + 6B44408116777C04046D47E0 /* SDL_windowevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_windowevents_c.h"; path = "../../../src/events/SDL_windowevents_c.h"; sourceTree = ""; }; + 48BD26A31962045F1EC334D7 /* blank_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "blank_cursor.h"; path = "../../../src/events/blank_cursor.h"; sourceTree = ""; }; + 46173CA331D053443D626F46 /* default_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "default_cursor.h"; path = "../../../src/events/default_cursor.h"; sourceTree = ""; }; + 7C5D7E131FD3751B40AF3A66 /* scancodes_darwin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_darwin.h"; path = "../../../src/events/scancodes_darwin.h"; sourceTree = ""; }; + 1F5C562746B51D5B737F4DB4 /* scancodes_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_linux.h"; path = "../../../src/events/scancodes_linux.h"; sourceTree = ""; }; + 00192A7A384C139278B97974 /* scancodes_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_windows.h"; path = "../../../src/events/scancodes_windows.h"; sourceTree = ""; }; + 5766257411BB400D357661D8 /* scancodes_xfree86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_xfree86.h"; path = "../../../src/events/scancodes_xfree86.h"; sourceTree = ""; }; + 3FCB452F4E155E2904C203BC /* SDL_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rwops.c"; path = "../../../src/file/SDL_rwops.c"; sourceTree = ""; }; + 49E1087F5B134DC2209810BD /* SDL_rwopsbundlesupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rwopsbundlesupport.h"; path = "../../../src/file/cocoa/SDL_rwopsbundlesupport.h"; sourceTree = ""; }; + 1DC9038B20EA22A67E200719 /* SDL_rwopsbundlesupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_rwopsbundlesupport.m"; path = "../../../src/file/cocoa/SDL_rwopsbundlesupport.m"; sourceTree = ""; }; + 087154621C696D6C0AAD0059 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_sysfilesystem.m"; path = "../../../src/filesystem/cocoa/SDL_sysfilesystem.m"; sourceTree = ""; }; + 1FC417354FD96DC41F5B42DC /* SDL_haptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_haptic.c"; path = "../../../src/haptic/SDL_haptic.c"; sourceTree = ""; }; + 69CB1CC76962285D1A1F08D8 /* SDL_haptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_haptic_c.h"; path = "../../../src/haptic/SDL_haptic_c.h"; sourceTree = ""; }; + 1F60634F6E5E60C80D1E38B0 /* SDL_syshaptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_syshaptic.h"; path = "../../../src/haptic/SDL_syshaptic.h"; sourceTree = ""; }; + 37A8332F73B83B981A656B57 /* SDL_gamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_gamecontroller.c"; path = "../../../src/joystick/SDL_gamecontroller.c"; sourceTree = ""; }; + 284F7BF263DB56DB568B73C3 /* SDL_gamecontrollerdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gamecontrollerdb.h"; path = "../../../src/joystick/SDL_gamecontrollerdb.h"; sourceTree = ""; }; + 29925AA7203D1B7471C02E35 /* SDL_joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_joystick.c"; path = "../../../src/joystick/SDL_joystick.c"; sourceTree = ""; }; + 1C8B023E6CDF28562D183DE6 /* SDL_joystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_joystick_c.h"; path = "../../../src/joystick/SDL_joystick_c.h"; sourceTree = ""; }; + 498C191A334E46FE00116849 /* SDL_sysjoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysjoystick.h"; path = "../../../src/joystick/SDL_sysjoystick.h"; sourceTree = ""; }; + 179431F6323964D836A3261C /* SDLUIAccelerationDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDLUIAccelerationDelegate.h"; path = "../../../src/joystick/iphoneos/SDLUIAccelerationDelegate.h"; sourceTree = ""; }; + 139C19587C553FAD2FF73925 /* SDLUIAccelerationDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDLUIAccelerationDelegate.m"; path = "../../../src/joystick/iphoneos/SDLUIAccelerationDelegate.m"; sourceTree = ""; }; + 478E79F80A440AB446AF36B9 /* SDL_sysjoystick.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_sysjoystick.m"; path = "../../../src/joystick/iphoneos/SDL_sysjoystick.m"; sourceTree = ""; }; + 76F16F6846EE3EE4233E6AE1 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysloadso.c"; path = "../../../src/loadso/dlopen/SDL_sysloadso.c"; sourceTree = ""; }; + 2F734033596532395886740E /* SDL_power.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_power.c"; path = "../../../src/power/SDL_power.c"; sourceTree = ""; }; + 19386AFA6A1935321C554BEF /* SDL_syspower.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_syspower.h"; path = "../../../src/power/uikit/SDL_syspower.h"; sourceTree = ""; }; + 4D1E217E017A113B708F503E /* SDL_syspower.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_syspower.m"; path = "../../../src/power/uikit/SDL_syspower.m"; sourceTree = ""; }; + 16912E070440110F77DC211B /* SDL_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render.c"; path = "../../../src/render/SDL_render.c"; sourceTree = ""; }; + 2AFA351043F538CF25113C9C /* SDL_sysrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysrender.h"; path = "../../../src/render/SDL_sysrender.h"; sourceTree = ""; }; + 548B72177C19782D6FC8496A /* SDL_yuv_mmx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_yuv_mmx.c"; path = "../../../src/render/SDL_yuv_mmx.c"; sourceTree = ""; }; + 5BF21F823F875C6F29CF5D97 /* SDL_yuv_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_yuv_sw.c"; path = "../../../src/render/SDL_yuv_sw.c"; sourceTree = ""; }; + 76427E03117A09D1265B3125 /* SDL_yuv_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_yuv_sw_c.h"; path = "../../../src/render/SDL_yuv_sw_c.h"; sourceTree = ""; }; + 231478CC3D3B196136187054 /* mmx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mmx.h"; path = "../../../src/render/mmx.h"; sourceTree = ""; }; + 52F708CC10F906D324300533 /* SDL_glesfuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_glesfuncs.h"; path = "../../../src/render/opengles/SDL_glesfuncs.h"; sourceTree = ""; }; + 7B673C6607B5021010B16CC9 /* SDL_render_gles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_gles.c"; path = "../../../src/render/opengles/SDL_render_gles.c"; sourceTree = ""; }; + 57FF40047C945F1900A03BE9 /* SDL_gles2funcs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gles2funcs.h"; path = "../../../src/render/opengles2/SDL_gles2funcs.h"; sourceTree = ""; }; + 629E77A3760410B906A567F7 /* SDL_render_gles2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_gles2.c"; path = "../../../src/render/opengles2/SDL_render_gles2.c"; sourceTree = ""; }; + 39A9217A0717288C2FDD590A /* SDL_shaders_gles2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_shaders_gles2.c"; path = "../../../src/render/opengles2/SDL_shaders_gles2.c"; sourceTree = ""; }; + 09D37FD4681175A15E950EF8 /* SDL_shaders_gles2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_shaders_gles2.h"; path = "../../../src/render/opengles2/SDL_shaders_gles2.h"; sourceTree = ""; }; + 0E360AE36AA6505462B64168 /* SDL_blendfillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendfillrect.c"; path = "../../../src/render/software/SDL_blendfillrect.c"; sourceTree = ""; }; + 70E82FAA02A2183700E80C3A /* SDL_blendfillrect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendfillrect.h"; path = "../../../src/render/software/SDL_blendfillrect.h"; sourceTree = ""; }; + 55EB71951AB3082D65D67F09 /* SDL_blendline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendline.c"; path = "../../../src/render/software/SDL_blendline.c"; sourceTree = ""; }; + 1A271214195266D879360116 /* SDL_blendline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendline.h"; path = "../../../src/render/software/SDL_blendline.h"; sourceTree = ""; }; + 50F735292AAB4EC320785387 /* SDL_blendpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendpoint.c"; path = "../../../src/render/software/SDL_blendpoint.c"; sourceTree = ""; }; + 57132F4C54CC47953B063C70 /* SDL_blendpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendpoint.h"; path = "../../../src/render/software/SDL_blendpoint.h"; sourceTree = ""; }; + 1E477D245E114B547C4C7BE5 /* SDL_draw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_draw.h"; path = "../../../src/render/software/SDL_draw.h"; sourceTree = ""; }; + 7AC349DB515B566C59F7764B /* SDL_drawline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_drawline.c"; path = "../../../src/render/software/SDL_drawline.c"; sourceTree = ""; }; + 59C210E567CC206A2AA159D5 /* SDL_drawline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_drawline.h"; path = "../../../src/render/software/SDL_drawline.h"; sourceTree = ""; }; + 6DB9260B44F4147A769475EE /* SDL_drawpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_drawpoint.c"; path = "../../../src/render/software/SDL_drawpoint.c"; sourceTree = ""; }; + 49293A57413D29DE595C3EF0 /* SDL_drawpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_drawpoint.h"; path = "../../../src/render/software/SDL_drawpoint.h"; sourceTree = ""; }; + 34B301645FD51A5D52E63453 /* SDL_render_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_sw.c"; path = "../../../src/render/software/SDL_render_sw.c"; sourceTree = ""; }; + 6DA712C36240711B385A22A7 /* SDL_render_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_render_sw_c.h"; path = "../../../src/render/software/SDL_render_sw_c.h"; sourceTree = ""; }; + 3DED4866613C4A255D8A0F6B /* SDL_rotate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rotate.c"; path = "../../../src/render/software/SDL_rotate.c"; sourceTree = ""; }; + 52B710D533A60CC36F95312A /* SDL_rotate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rotate.h"; path = "../../../src/render/software/SDL_rotate.h"; sourceTree = ""; }; + 4DA248EA1F8A226552B17518 /* SDL_getenv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_getenv.c"; path = "../../../src/stdlib/SDL_getenv.c"; sourceTree = ""; }; + 124A749436D01E322447405A /* SDL_iconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_iconv.c"; path = "../../../src/stdlib/SDL_iconv.c"; sourceTree = ""; }; + 206167DF0E633DDA38386DB5 /* SDL_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_malloc.c"; path = "../../../src/stdlib/SDL_malloc.c"; sourceTree = ""; }; + 46D10031516609805A120451 /* SDL_qsort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_qsort.c"; path = "../../../src/stdlib/SDL_qsort.c"; sourceTree = ""; }; + 226E7A9565696D1109C63D31 /* SDL_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_stdlib.c"; path = "../../../src/stdlib/SDL_stdlib.c"; sourceTree = ""; }; + 3BDE72945D2B3C8B5CC33EBE /* SDL_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_string.c"; path = "../../../src/stdlib/SDL_string.c"; sourceTree = ""; }; + 4F7E7F946C5028E168DA5B8C /* SDL_systhread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_systhread.h"; path = "../../../src/thread/SDL_systhread.h"; sourceTree = ""; }; + 49C941ED33AE1BDF03E7434B /* SDL_thread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_thread.c"; path = "../../../src/thread/SDL_thread.c"; sourceTree = ""; }; + 4155456918EF0F9259041949 /* SDL_thread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_thread_c.h"; path = "../../../src/thread/SDL_thread_c.h"; sourceTree = ""; }; + 12FE6FD85B19655C0B1D2812 /* SDL_syscond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syscond.c"; path = "../../../src/thread/pthread/SDL_syscond.c"; sourceTree = ""; }; + 7E8415AB34D72C681EA777BF /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysmutex.c"; path = "../../../src/thread/pthread/SDL_sysmutex.c"; sourceTree = ""; }; + 18B754CF16E064A92C877A6D /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysmutex_c.h"; path = "../../../src/thread/pthread/SDL_sysmutex_c.h"; sourceTree = ""; }; + 271A52A21FD42FD759442D0B /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syssem.c"; path = "../../../src/thread/pthread/SDL_syssem.c"; sourceTree = ""; }; + 7D6F38982BAA3DB678653A9F /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systhread.c"; path = "../../../src/thread/pthread/SDL_systhread.c"; sourceTree = ""; }; + 462959C3319A7F2C5F4E366F /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_systhread_c.h"; path = "../../../src/thread/pthread/SDL_systhread_c.h"; sourceTree = ""; }; + 35E57FD90ED160CD3C377491 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systls.c"; path = "../../../src/thread/pthread/SDL_systls.c"; sourceTree = ""; }; + 1C9238847CD26ECA3EF23E38 /* SDL_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_timer.c"; path = "../../../src/timer/SDL_timer.c"; sourceTree = ""; }; + 3FBF321321F445AC252324AB /* SDL_timer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_timer_c.h"; path = "../../../src/timer/SDL_timer_c.h"; sourceTree = ""; }; + 3BD67DAA56A456B453590AE3 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systimer.c"; path = "../../../src/timer/unix/SDL_systimer.c"; sourceTree = ""; }; + 2BED7C140FC627FF7D7F2111 /* SDL_RLEaccel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_RLEaccel.c"; path = "../../../src/video/SDL_RLEaccel.c"; sourceTree = ""; }; + 009C17A22716434F146A7B11 /* SDL_RLEaccel_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_RLEaccel_c.h"; path = "../../../src/video/SDL_RLEaccel_c.h"; sourceTree = ""; }; + 4286099A6624526E4BC469B4 /* SDL_blit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit.c"; path = "../../../src/video/SDL_blit.c"; sourceTree = ""; }; + 2CF12C34447B00E75E8F31E0 /* SDL_blit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit.h"; path = "../../../src/video/SDL_blit.h"; sourceTree = ""; }; + 6E7C17832B15293C3553792B /* SDL_blit_0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_0.c"; path = "../../../src/video/SDL_blit_0.c"; sourceTree = ""; }; + 0503247464D1023C4FB247FA /* SDL_blit_1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_1.c"; path = "../../../src/video/SDL_blit_1.c"; sourceTree = ""; }; + 0E4A1E7B3EC46D91001B0F6A /* SDL_blit_A.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_A.c"; path = "../../../src/video/SDL_blit_A.c"; sourceTree = ""; }; + 461134000974378462AC3D70 /* SDL_blit_N.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_N.c"; path = "../../../src/video/SDL_blit_N.c"; sourceTree = ""; }; + 51224FAB20BA286A4F4A26EA /* SDL_blit_auto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_auto.c"; path = "../../../src/video/SDL_blit_auto.c"; sourceTree = ""; }; + 4E4E0D300BDC40AB3A9A5D3E /* SDL_blit_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_auto.h"; path = "../../../src/video/SDL_blit_auto.h"; sourceTree = ""; }; + 50E8446963BA626B7FF02513 /* SDL_blit_copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_copy.c"; path = "../../../src/video/SDL_blit_copy.c"; sourceTree = ""; }; + 10D26BDC6E335CB63F5E45E6 /* SDL_blit_copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_copy.h"; path = "../../../src/video/SDL_blit_copy.h"; sourceTree = ""; }; + 3A507E5B122409D1793A6F51 /* SDL_blit_slow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_slow.c"; path = "../../../src/video/SDL_blit_slow.c"; sourceTree = ""; }; + 3BF64A5405261FF320EF4B06 /* SDL_blit_slow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_slow.h"; path = "../../../src/video/SDL_blit_slow.h"; sourceTree = ""; }; + 277B113418FB21F91656773C /* SDL_bmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_bmp.c"; path = "../../../src/video/SDL_bmp.c"; sourceTree = ""; }; + 35956B79610472F945081D98 /* SDL_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_clipboard.c"; path = "../../../src/video/SDL_clipboard.c"; sourceTree = ""; }; + 37B95CA22ECA68A94CB125AF /* SDL_egl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_egl.c"; path = "../../../src/video/SDL_egl.c"; sourceTree = ""; }; + 27CF26C22A0E31BD125D1B74 /* SDL_egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_egl.h"; path = "../../../src/video/SDL_egl.h"; sourceTree = ""; }; + 685F5211064001EA47DC7960 /* SDL_fillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_fillrect.c"; path = "../../../src/video/SDL_fillrect.c"; sourceTree = ""; }; + 18AE600B7ADC0AB061053C02 /* SDL_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_pixels.c"; path = "../../../src/video/SDL_pixels.c"; sourceTree = ""; }; + 4C73501403330BED7CB96B68 /* SDL_pixels_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_pixels_c.h"; path = "../../../src/video/SDL_pixels_c.h"; sourceTree = ""; }; + 175F09A3458D5EC2267974C2 /* SDL_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rect.c"; path = "../../../src/video/SDL_rect.c"; sourceTree = ""; }; + 3BBF186A5E9B294039F257D1 /* SDL_rect_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rect_c.h"; path = "../../../src/video/SDL_rect_c.h"; sourceTree = ""; }; + 72B36F81063916AA18A17BA5 /* SDL_shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_shape.c"; path = "../../../src/video/SDL_shape.c"; sourceTree = ""; }; + 366D314A0A131064291600BA /* SDL_shape_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_shape_internals.h"; path = "../../../src/video/SDL_shape_internals.h"; sourceTree = ""; }; + 6C312B8C084B245B77693130 /* SDL_stretch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_stretch.c"; path = "../../../src/video/SDL_stretch.c"; sourceTree = ""; }; + 07245D04334F42C931AC3CE1 /* SDL_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_surface.c"; path = "../../../src/video/SDL_surface.c"; sourceTree = ""; }; + 070241285B2D6B36492D5457 /* SDL_sysvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysvideo.h"; path = "../../../src/video/SDL_sysvideo.h"; sourceTree = ""; }; + 21FC3C1F203577D81A1302FB /* SDL_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_video.c"; path = "../../../src/video/SDL_video.c"; sourceTree = ""; }; + 6532624C22D14DA9369C597D /* SDL_nullevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullevents.c"; path = "../../../src/video/dummy/SDL_nullevents.c"; sourceTree = ""; }; + 49CE757D222D75AE205620BC /* SDL_nullevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullevents_c.h"; path = "../../../src/video/dummy/SDL_nullevents_c.h"; sourceTree = ""; }; + 197510FC2BCD4AAC7399616A /* SDL_nullframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullframebuffer.c"; path = "../../../src/video/dummy/SDL_nullframebuffer.c"; sourceTree = ""; }; + 4F72641F547F170D07683E8B /* SDL_nullframebuffer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullframebuffer_c.h"; path = "../../../src/video/dummy/SDL_nullframebuffer_c.h"; sourceTree = ""; }; + 5880707874BA78E878636D01 /* SDL_nullvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullvideo.c"; path = "../../../src/video/dummy/SDL_nullvideo.c"; sourceTree = ""; }; + 64F53F5D2887516B711607D5 /* SDL_nullvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullvideo.h"; path = "../../../src/video/dummy/SDL_nullvideo.h"; sourceTree = ""; }; + 6E222CB5528B63CA041C59B6 /* SDL_uikitappdelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitappdelegate.h"; path = "../../../src/video/uikit/SDL_uikitappdelegate.h"; sourceTree = ""; }; + 3D4044F73A5936AE039A2A8E /* SDL_uikitappdelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitappdelegate.m"; path = "../../../src/video/uikit/SDL_uikitappdelegate.m"; sourceTree = ""; }; + 190F328C1F6401443A4A0685 /* SDL_uikitevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitevents.h"; path = "../../../src/video/uikit/SDL_uikitevents.h"; sourceTree = ""; }; + 1EE2311851600F1A08837ED8 /* SDL_uikitevents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitevents.m"; path = "../../../src/video/uikit/SDL_uikitevents.m"; sourceTree = ""; }; + 53FB0CFC152E124918043BEC /* SDL_uikitmessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitmessagebox.h"; path = "../../../src/video/uikit/SDL_uikitmessagebox.h"; sourceTree = ""; }; + 07A63C252BE013A210351305 /* SDL_uikitmessagebox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitmessagebox.m"; path = "../../../src/video/uikit/SDL_uikitmessagebox.m"; sourceTree = ""; }; + 573E55E4299F103543007289 /* SDL_uikitmodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitmodes.h"; path = "../../../src/video/uikit/SDL_uikitmodes.h"; sourceTree = ""; }; + 2907271017A61367037578CE /* SDL_uikitmodes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitmodes.m"; path = "../../../src/video/uikit/SDL_uikitmodes.m"; sourceTree = ""; }; + 015A61DE6EB1609B64B01C22 /* SDL_uikitopengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitopengles.h"; path = "../../../src/video/uikit/SDL_uikitopengles.h"; sourceTree = ""; }; + 7E8D13032A8242957A856C2E /* SDL_uikitopengles.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitopengles.m"; path = "../../../src/video/uikit/SDL_uikitopengles.m"; sourceTree = ""; }; + 0F9E64C82F665C2E7BD01FCB /* SDL_uikitopenglview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitopenglview.h"; path = "../../../src/video/uikit/SDL_uikitopenglview.h"; sourceTree = ""; }; + 7DF2244C0A887AF25E802E0E /* SDL_uikitopenglview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitopenglview.m"; path = "../../../src/video/uikit/SDL_uikitopenglview.m"; sourceTree = ""; }; + 6CDB3D3B70AF1CF137864B00 /* SDL_uikitvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitvideo.h"; path = "../../../src/video/uikit/SDL_uikitvideo.h"; sourceTree = ""; }; + 0B4E59B175A135D425483E78 /* SDL_uikitvideo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitvideo.m"; path = "../../../src/video/uikit/SDL_uikitvideo.m"; sourceTree = ""; }; + 5B3B2D1424FD774713796DE9 /* SDL_uikitview.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitview.h"; path = "../../../src/video/uikit/SDL_uikitview.h"; sourceTree = ""; }; + 616337D37E51262B02E67C2D /* SDL_uikitview.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitview.m"; path = "../../../src/video/uikit/SDL_uikitview.m"; sourceTree = ""; }; + 0F1762A82A756D6244EB2C95 /* SDL_uikitviewcontroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitviewcontroller.h"; path = "../../../src/video/uikit/SDL_uikitviewcontroller.h"; sourceTree = ""; }; + 7BEA5F9878A47E063CF465B2 /* SDL_uikitviewcontroller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitviewcontroller.m"; path = "../../../src/video/uikit/SDL_uikitviewcontroller.m"; sourceTree = ""; }; + 502A08464E9957AC6FBE5D77 /* SDL_uikitwindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_uikitwindow.h"; path = "../../../src/video/uikit/SDL_uikitwindow.h"; sourceTree = ""; }; + 62E72E4E269E652A451851E0 /* SDL_uikitwindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_uikitwindow.m"; path = "../../../src/video/uikit/SDL_uikitwindow.m"; sourceTree = ""; }; + 04B10F6A0E333D4505B26DB7 /* keyinfotable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "keyinfotable.h"; path = "../../../src/video/uikit/keyinfotable.h"; sourceTree = ""; }; + 6FC23087098E4A46760575ED /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 219B4BBB7728655E071C76E8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 4F2242B8754F17D126471E4F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 184359E00F2E2484050B5639 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 43D63AC169FD00D664F81586 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 6D1F38124D655A821B1E79D9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 07327F877E212C9043452002 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 224D2C85085A7BA60E532655 /* libSDL2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2.a"; path = "libSDL2.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 359429BC7E1B486B000B7D61 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 326B2A134A3F743840A87D77 /* AudioToolbox.framework in Frameworks */, + 79E346732A181E9E1E9D01D3 /* QuartzCore.framework in Frameworks */, + 551857D24E5F619C5E366560 /* OpenGLES.framework in Frameworks */, + 50590A581DD405AD26553B45 /* CoreGraphics.framework in Frameworks */, + 4C5A5947489F49780FA80B81 /* UIKit.framework in Frameworks */, + 40AC6E426F4057FA1A2C4290 /* Foundation.framework in Frameworks */, + 6AA3296957470540360C589F /* CoreAudio.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4D384FDD4DB948F011877462 /* SDL2 */ = { + isa = PBXGroup; + children = ( + 725875C016BC22152CFA7352 /* src */, + 44E92F93140F256A5F4A142C /* Frameworks */, + 5A293C963BB92FA73DBE3E9F /* Products */, + ); + name = "SDL2"; + sourceTree = ""; + }; + 725875C016BC22152CFA7352 /* src */ = { + isa = PBXGroup; + children = ( + 1754411A221209B96C327B00 /* SDL.c */, + 50127CF143E2409B00E82007 /* SDL_assert.c */, + 60C132130BCD5BDC6AC15946 /* SDL_assert_c.h */, + 3E6760E518A1332F0C066AEE /* SDL_error.c */, + 188702356BD1063054A73BCA /* SDL_error_c.h */, + 61943EC860253DA55758786D /* SDL_hints.c */, + 24541855198526E106FB61C9 /* SDL_log.c */, + 465854AE0B7D6BCC29C821FD /* atomic */, + 1AAF5D2154A45B6822AB1DBF /* audio */, + 1BFC763271964B3E0F9E758B /* cpuinfo */, + 1C37183E3A1D71C9540864FF /* events */, + 304934B37B9230F931143743 /* file */, + 70DF00DE18543F7125AB2259 /* filesystem */, + 5B2C60921F756E8903387111 /* haptic */, + 422E17B63A2413892E374290 /* joystick */, + 06D541E747C777584C625E65 /* loadso */, + 0A8138B97C9215E5019C2EB0 /* power */, + 2D2F7B977A0F7881060138A9 /* render */, + 7D734A5B2A4343654716365F /* stdlib */, + 059C63C262A80AE81A0A4090 /* thread */, + 3257717A38B8521849800A40 /* timer */, + 322614E171607E07326E5A36 /* video */, + ); + name = "src"; + sourceTree = ""; + }; + 465854AE0B7D6BCC29C821FD /* atomic */ = { + isa = PBXGroup; + children = ( + 1FB5255373F013CC70D8002D /* SDL_atomic.c */, + 2137310F68926D6D476C07A1 /* SDL_spinlock.c */, + ); + name = "atomic"; + sourceTree = ""; + }; + 1AAF5D2154A45B6822AB1DBF /* audio */ = { + isa = PBXGroup; + children = ( + 002C4E540DF5538435BC514A /* SDL_audio.c */, + 269A7458635E34682A053C5E /* SDL_audio_c.h */, + 4DBB70D75469728B342373E8 /* SDL_audiocvt.c */, + 48886D482B5239D2429E422D /* SDL_audiodev.c */, + 227E138737440F101016545F /* SDL_audiodev_c.h */, + 5C3C744F22823D470BED10D6 /* SDL_audiomem.h */, + 0F175E65628D4137386B7A6D /* SDL_audiotypecvt.c */, + 77537CFB490A3599736F3830 /* SDL_mixer.c */, + 591062475F93492D625F7D3B /* SDL_sysaudio.h */, + 5F503D9B3C7B4D2E09215A0A /* SDL_wave.c */, + 627D165130C55DBB44F4177D /* SDL_wave.h */, + 2A1C22AD4A4E74AC535836E5 /* coreaudio */, + 3D1F685B44BE520145F4276E /* disk */, + 5CBA3BD405592A59599E3D10 /* dummy */, + ); + name = "audio"; + sourceTree = ""; + }; + 2A1C22AD4A4E74AC535836E5 /* coreaudio */ = { + isa = PBXGroup; + children = ( + 785801FB211321AB70091ABE /* SDL_coreaudio.c */, + 49A72F922CF1399C415C00CD /* SDL_coreaudio.h */, + ); + name = "coreaudio"; + sourceTree = ""; + }; + 3D1F685B44BE520145F4276E /* disk */ = { + isa = PBXGroup; + children = ( + 4DC41A2B14C11D2837432538 /* SDL_diskaudio.c */, + 521D08EF11EB69A96AA46ED4 /* SDL_diskaudio.h */, + ); + name = "disk"; + sourceTree = ""; + }; + 5CBA3BD405592A59599E3D10 /* dummy */ = { + isa = PBXGroup; + children = ( + 09BB72B17B0C531926C153F5 /* SDL_dummyaudio.c */, + 276C60536A9304A5146B1268 /* SDL_dummyaudio.h */, + ); + name = "dummy"; + sourceTree = ""; + }; + 1BFC763271964B3E0F9E758B /* cpuinfo */ = { + isa = PBXGroup; + children = ( + 215A41140CF741414DF53790 /* SDL_cpuinfo.c */, + ); + name = "cpuinfo"; + sourceTree = ""; + }; + 1C37183E3A1D71C9540864FF /* events */ = { + isa = PBXGroup; + children = ( + 24704CFC41E52BEC136D61EF /* SDL_clipboardevents.c */, + 40F9257146A1113B5D295492 /* SDL_clipboardevents_c.h */, + 464D7C157FD7281A65677EB6 /* SDL_dropevents.c */, + 7FD4632B48A909616DF97F07 /* SDL_dropevents_c.h */, + 2A4321B70FCC1BF02A4B3380 /* SDL_events.c */, + 643F6B011BA52B760BDD1942 /* SDL_events_c.h */, + 4DC2358C7D821A786391025B /* SDL_gesture.c */, + 31144B144A1A7666503F77F4 /* SDL_gesture_c.h */, + 3E70553911EE2F50403C2750 /* SDL_keyboard.c */, + 6D484FBC6CD8631039835F29 /* SDL_keyboard_c.h */, + 131F008A780923790A8148F5 /* SDL_mouse.c */, + 5E6E36D918D75AAB28EA359D /* SDL_mouse_c.h */, + 0D5177DC2F6F2EA974930BD1 /* SDL_quit.c */, + 25307DC4784F0E2F3FF45EEF /* SDL_sysevents.h */, + 5BD37C83179405632D7E4F15 /* SDL_touch.c */, + 2C27609311E17D35413538AC /* SDL_touch_c.h */, + 31D33D8501A50DA7668C1AE8 /* SDL_windowevents.c */, + 6B44408116777C04046D47E0 /* SDL_windowevents_c.h */, + 48BD26A31962045F1EC334D7 /* blank_cursor.h */, + 46173CA331D053443D626F46 /* default_cursor.h */, + 7C5D7E131FD3751B40AF3A66 /* scancodes_darwin.h */, + 1F5C562746B51D5B737F4DB4 /* scancodes_linux.h */, + 00192A7A384C139278B97974 /* scancodes_windows.h */, + 5766257411BB400D357661D8 /* scancodes_xfree86.h */, + ); + name = "events"; + sourceTree = ""; + }; + 304934B37B9230F931143743 /* file */ = { + isa = PBXGroup; + children = ( + 3FCB452F4E155E2904C203BC /* SDL_rwops.c */, + 1C5F5FF444C62B7148BD7280 /* cocoa */, + ); + name = "file"; + sourceTree = ""; + }; + 1C5F5FF444C62B7148BD7280 /* cocoa */ = { + isa = PBXGroup; + children = ( + 49E1087F5B134DC2209810BD /* SDL_rwopsbundlesupport.h */, + 1DC9038B20EA22A67E200719 /* SDL_rwopsbundlesupport.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 70DF00DE18543F7125AB2259 /* filesystem */ = { + isa = PBXGroup; + children = ( + 3E23031504F10C134F733B9A /* cocoa */, + ); + name = "filesystem"; + sourceTree = ""; + }; + 3E23031504F10C134F733B9A /* cocoa */ = { + isa = PBXGroup; + children = ( + 087154621C696D6C0AAD0059 /* SDL_sysfilesystem.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 5B2C60921F756E8903387111 /* haptic */ = { + isa = PBXGroup; + children = ( + 1FC417354FD96DC41F5B42DC /* SDL_haptic.c */, + 69CB1CC76962285D1A1F08D8 /* SDL_haptic_c.h */, + 1F60634F6E5E60C80D1E38B0 /* SDL_syshaptic.h */, + ); + name = "haptic"; + sourceTree = ""; + }; + 422E17B63A2413892E374290 /* joystick */ = { + isa = PBXGroup; + children = ( + 37A8332F73B83B981A656B57 /* SDL_gamecontroller.c */, + 284F7BF263DB56DB568B73C3 /* SDL_gamecontrollerdb.h */, + 29925AA7203D1B7471C02E35 /* SDL_joystick.c */, + 1C8B023E6CDF28562D183DE6 /* SDL_joystick_c.h */, + 498C191A334E46FE00116849 /* SDL_sysjoystick.h */, + 37561A8311E42C530D5164B2 /* iphoneos */, + ); + name = "joystick"; + sourceTree = ""; + }; + 37561A8311E42C530D5164B2 /* iphoneos */ = { + isa = PBXGroup; + children = ( + 179431F6323964D836A3261C /* SDLUIAccelerationDelegate.h */, + 139C19587C553FAD2FF73925 /* SDLUIAccelerationDelegate.m */, + 478E79F80A440AB446AF36B9 /* SDL_sysjoystick.m */, + ); + name = "iphoneos"; + sourceTree = ""; + }; + 06D541E747C777584C625E65 /* loadso */ = { + isa = PBXGroup; + children = ( + 517E46B91E6E4D3B02DE7B45 /* dlopen */, + ); + name = "loadso"; + sourceTree = ""; + }; + 517E46B91E6E4D3B02DE7B45 /* dlopen */ = { + isa = PBXGroup; + children = ( + 76F16F6846EE3EE4233E6AE1 /* SDL_sysloadso.c */, + ); + name = "dlopen"; + sourceTree = ""; + }; + 0A8138B97C9215E5019C2EB0 /* power */ = { + isa = PBXGroup; + children = ( + 2F734033596532395886740E /* SDL_power.c */, + 11BC588242524CFE78DD29AA /* uikit */, + ); + name = "power"; + sourceTree = ""; + }; + 11BC588242524CFE78DD29AA /* uikit */ = { + isa = PBXGroup; + children = ( + 19386AFA6A1935321C554BEF /* SDL_syspower.h */, + 4D1E217E017A113B708F503E /* SDL_syspower.m */, + ); + name = "uikit"; + sourceTree = ""; + }; + 2D2F7B977A0F7881060138A9 /* render */ = { + isa = PBXGroup; + children = ( + 16912E070440110F77DC211B /* SDL_render.c */, + 2AFA351043F538CF25113C9C /* SDL_sysrender.h */, + 548B72177C19782D6FC8496A /* SDL_yuv_mmx.c */, + 5BF21F823F875C6F29CF5D97 /* SDL_yuv_sw.c */, + 76427E03117A09D1265B3125 /* SDL_yuv_sw_c.h */, + 231478CC3D3B196136187054 /* mmx.h */, + 34DB502A055A758C4AC77ECB /* opengles */, + 67F93A410D2B0D8003EE21A5 /* opengles2 */, + 60E421392DE739B1541874E9 /* software */, + ); + name = "render"; + sourceTree = ""; + }; + 34DB502A055A758C4AC77ECB /* opengles */ = { + isa = PBXGroup; + children = ( + 52F708CC10F906D324300533 /* SDL_glesfuncs.h */, + 7B673C6607B5021010B16CC9 /* SDL_render_gles.c */, + ); + name = "opengles"; + sourceTree = ""; + }; + 67F93A410D2B0D8003EE21A5 /* opengles2 */ = { + isa = PBXGroup; + children = ( + 57FF40047C945F1900A03BE9 /* SDL_gles2funcs.h */, + 629E77A3760410B906A567F7 /* SDL_render_gles2.c */, + 39A9217A0717288C2FDD590A /* SDL_shaders_gles2.c */, + 09D37FD4681175A15E950EF8 /* SDL_shaders_gles2.h */, + ); + name = "opengles2"; + sourceTree = ""; + }; + 60E421392DE739B1541874E9 /* software */ = { + isa = PBXGroup; + children = ( + 0E360AE36AA6505462B64168 /* SDL_blendfillrect.c */, + 70E82FAA02A2183700E80C3A /* SDL_blendfillrect.h */, + 55EB71951AB3082D65D67F09 /* SDL_blendline.c */, + 1A271214195266D879360116 /* SDL_blendline.h */, + 50F735292AAB4EC320785387 /* SDL_blendpoint.c */, + 57132F4C54CC47953B063C70 /* SDL_blendpoint.h */, + 1E477D245E114B547C4C7BE5 /* SDL_draw.h */, + 7AC349DB515B566C59F7764B /* SDL_drawline.c */, + 59C210E567CC206A2AA159D5 /* SDL_drawline.h */, + 6DB9260B44F4147A769475EE /* SDL_drawpoint.c */, + 49293A57413D29DE595C3EF0 /* SDL_drawpoint.h */, + 34B301645FD51A5D52E63453 /* SDL_render_sw.c */, + 6DA712C36240711B385A22A7 /* SDL_render_sw_c.h */, + 3DED4866613C4A255D8A0F6B /* SDL_rotate.c */, + 52B710D533A60CC36F95312A /* SDL_rotate.h */, + ); + name = "software"; + sourceTree = ""; + }; + 7D734A5B2A4343654716365F /* stdlib */ = { + isa = PBXGroup; + children = ( + 4DA248EA1F8A226552B17518 /* SDL_getenv.c */, + 124A749436D01E322447405A /* SDL_iconv.c */, + 206167DF0E633DDA38386DB5 /* SDL_malloc.c */, + 46D10031516609805A120451 /* SDL_qsort.c */, + 226E7A9565696D1109C63D31 /* SDL_stdlib.c */, + 3BDE72945D2B3C8B5CC33EBE /* SDL_string.c */, + ); + name = "stdlib"; + sourceTree = ""; + }; + 059C63C262A80AE81A0A4090 /* thread */ = { + isa = PBXGroup; + children = ( + 4F7E7F946C5028E168DA5B8C /* SDL_systhread.h */, + 49C941ED33AE1BDF03E7434B /* SDL_thread.c */, + 4155456918EF0F9259041949 /* SDL_thread_c.h */, + 0ED4101758431BFF34DB2538 /* pthread */, + ); + name = "thread"; + sourceTree = ""; + }; + 0ED4101758431BFF34DB2538 /* pthread */ = { + isa = PBXGroup; + children = ( + 12FE6FD85B19655C0B1D2812 /* SDL_syscond.c */, + 7E8415AB34D72C681EA777BF /* SDL_sysmutex.c */, + 18B754CF16E064A92C877A6D /* SDL_sysmutex_c.h */, + 271A52A21FD42FD759442D0B /* SDL_syssem.c */, + 7D6F38982BAA3DB678653A9F /* SDL_systhread.c */, + 462959C3319A7F2C5F4E366F /* SDL_systhread_c.h */, + 35E57FD90ED160CD3C377491 /* SDL_systls.c */, + ); + name = "pthread"; + sourceTree = ""; + }; + 3257717A38B8521849800A40 /* timer */ = { + isa = PBXGroup; + children = ( + 1C9238847CD26ECA3EF23E38 /* SDL_timer.c */, + 3FBF321321F445AC252324AB /* SDL_timer_c.h */, + 0D15690444BF683906FF512A /* unix */, + ); + name = "timer"; + sourceTree = ""; + }; + 0D15690444BF683906FF512A /* unix */ = { + isa = PBXGroup; + children = ( + 3BD67DAA56A456B453590AE3 /* SDL_systimer.c */, + ); + name = "unix"; + sourceTree = ""; + }; + 322614E171607E07326E5A36 /* video */ = { + isa = PBXGroup; + children = ( + 2BED7C140FC627FF7D7F2111 /* SDL_RLEaccel.c */, + 009C17A22716434F146A7B11 /* SDL_RLEaccel_c.h */, + 4286099A6624526E4BC469B4 /* SDL_blit.c */, + 2CF12C34447B00E75E8F31E0 /* SDL_blit.h */, + 6E7C17832B15293C3553792B /* SDL_blit_0.c */, + 0503247464D1023C4FB247FA /* SDL_blit_1.c */, + 0E4A1E7B3EC46D91001B0F6A /* SDL_blit_A.c */, + 461134000974378462AC3D70 /* SDL_blit_N.c */, + 51224FAB20BA286A4F4A26EA /* SDL_blit_auto.c */, + 4E4E0D300BDC40AB3A9A5D3E /* SDL_blit_auto.h */, + 50E8446963BA626B7FF02513 /* SDL_blit_copy.c */, + 10D26BDC6E335CB63F5E45E6 /* SDL_blit_copy.h */, + 3A507E5B122409D1793A6F51 /* SDL_blit_slow.c */, + 3BF64A5405261FF320EF4B06 /* SDL_blit_slow.h */, + 277B113418FB21F91656773C /* SDL_bmp.c */, + 35956B79610472F945081D98 /* SDL_clipboard.c */, + 37B95CA22ECA68A94CB125AF /* SDL_egl.c */, + 27CF26C22A0E31BD125D1B74 /* SDL_egl.h */, + 685F5211064001EA47DC7960 /* SDL_fillrect.c */, + 18AE600B7ADC0AB061053C02 /* SDL_pixels.c */, + 4C73501403330BED7CB96B68 /* SDL_pixels_c.h */, + 175F09A3458D5EC2267974C2 /* SDL_rect.c */, + 3BBF186A5E9B294039F257D1 /* SDL_rect_c.h */, + 72B36F81063916AA18A17BA5 /* SDL_shape.c */, + 366D314A0A131064291600BA /* SDL_shape_internals.h */, + 6C312B8C084B245B77693130 /* SDL_stretch.c */, + 07245D04334F42C931AC3CE1 /* SDL_surface.c */, + 070241285B2D6B36492D5457 /* SDL_sysvideo.h */, + 21FC3C1F203577D81A1302FB /* SDL_video.c */, + 510869A64D5B1FE871B6226A /* dummy */, + 677D6C223CBC62F502E71FEE /* uikit */, + ); + name = "video"; + sourceTree = ""; + }; + 510869A64D5B1FE871B6226A /* dummy */ = { + isa = PBXGroup; + children = ( + 6532624C22D14DA9369C597D /* SDL_nullevents.c */, + 49CE757D222D75AE205620BC /* SDL_nullevents_c.h */, + 197510FC2BCD4AAC7399616A /* SDL_nullframebuffer.c */, + 4F72641F547F170D07683E8B /* SDL_nullframebuffer_c.h */, + 5880707874BA78E878636D01 /* SDL_nullvideo.c */, + 64F53F5D2887516B711607D5 /* SDL_nullvideo.h */, + ); + name = "dummy"; + sourceTree = ""; + }; + 677D6C223CBC62F502E71FEE /* uikit */ = { + isa = PBXGroup; + children = ( + 6E222CB5528B63CA041C59B6 /* SDL_uikitappdelegate.h */, + 3D4044F73A5936AE039A2A8E /* SDL_uikitappdelegate.m */, + 190F328C1F6401443A4A0685 /* SDL_uikitevents.h */, + 1EE2311851600F1A08837ED8 /* SDL_uikitevents.m */, + 53FB0CFC152E124918043BEC /* SDL_uikitmessagebox.h */, + 07A63C252BE013A210351305 /* SDL_uikitmessagebox.m */, + 573E55E4299F103543007289 /* SDL_uikitmodes.h */, + 2907271017A61367037578CE /* SDL_uikitmodes.m */, + 015A61DE6EB1609B64B01C22 /* SDL_uikitopengles.h */, + 7E8D13032A8242957A856C2E /* SDL_uikitopengles.m */, + 0F9E64C82F665C2E7BD01FCB /* SDL_uikitopenglview.h */, + 7DF2244C0A887AF25E802E0E /* SDL_uikitopenglview.m */, + 6CDB3D3B70AF1CF137864B00 /* SDL_uikitvideo.h */, + 0B4E59B175A135D425483E78 /* SDL_uikitvideo.m */, + 5B3B2D1424FD774713796DE9 /* SDL_uikitview.h */, + 616337D37E51262B02E67C2D /* SDL_uikitview.m */, + 0F1762A82A756D6244EB2C95 /* SDL_uikitviewcontroller.h */, + 7BEA5F9878A47E063CF465B2 /* SDL_uikitviewcontroller.m */, + 502A08464E9957AC6FBE5D77 /* SDL_uikitwindow.h */, + 62E72E4E269E652A451851E0 /* SDL_uikitwindow.m */, + 04B10F6A0E333D4505B26DB7 /* keyinfotable.h */, + ); + name = "uikit"; + sourceTree = ""; + }; + 44E92F93140F256A5F4A142C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6FC23087098E4A46760575ED /* AudioToolbox.framework */, + 219B4BBB7728655E071C76E8 /* QuartzCore.framework */, + 4F2242B8754F17D126471E4F /* OpenGLES.framework */, + 184359E00F2E2484050B5639 /* CoreGraphics.framework */, + 43D63AC169FD00D664F81586 /* UIKit.framework */, + 6D1F38124D655A821B1E79D9 /* Foundation.framework */, + 07327F877E212C9043452002 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 5A293C963BB92FA73DBE3E9F /* Products */ = { + isa = PBXGroup; + children = ( + 224D2C85085A7BA60E532655 /* libSDL2.a */, + ); + name = "Products"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 515D4C462ACD2DA8180E7783 /* SDL2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 69B50A6844351B017B9A513E /* Build configuration list for PBXNativeTarget "SDL2" */; + buildPhases = ( + 42BE4A693443527D1D8927CA /* Resources */, + 50EB14DC14BF0FEA75A13F8A /* Sources */, + 359429BC7E1B486B000B7D61 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDL2"; + productName = "SDL2"; + productReference = 224D2C85085A7BA60E532655 /* libSDL2.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 4D384FDD4DB948F011877462 /* SDL2 */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 515D4C462ACD2DA8180E7783 /* libSDL2.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 42BE4A693443527D1D8927CA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 50EB14DC14BF0FEA75A13F8A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B806D3A32321C1562DC068A /* SDL.c in Sources */, + 312A55E27C22567927096421 /* SDL_assert.c in Sources */, + 59EC4DD65AC8132A334525C2 /* SDL_error.c in Sources */, + 777A6B9724EA08530C265065 /* SDL_hints.c in Sources */, + 7E5108A73256684F3D264AFD /* SDL_log.c in Sources */, + 0FC3034E04AD7E6F3AA825C8 /* SDL_atomic.c in Sources */, + 5E007EF93C286858239D38F9 /* SDL_spinlock.c in Sources */, + 0CD02D154F366D7153274AFB /* SDL_audio.c in Sources */, + 06871CF4135806F428EE6100 /* SDL_audiocvt.c in Sources */, + 53C27DD277591A486D287F66 /* SDL_audiodev.c in Sources */, + 42024F3C06A820FA25753037 /* SDL_audiotypecvt.c in Sources */, + 706901DA2233598C2BC31C9E /* SDL_mixer.c in Sources */, + 5D37701F2B9C4D8572677A14 /* SDL_wave.c in Sources */, + 4F9A194458623E3271D9606F /* SDL_coreaudio.c in Sources */, + 401616E4053C316F11827D6A /* SDL_diskaudio.c in Sources */, + 1EF571B808FD4D1C7CCA604A /* SDL_dummyaudio.c in Sources */, + 6C61795802890EEB0CA54BA2 /* SDL_cpuinfo.c in Sources */, + 3EE216AB54E87EA113703443 /* SDL_clipboardevents.c in Sources */, + 117F40E519F73DBA084F02EE /* SDL_dropevents.c in Sources */, + 4F4E4A74448725295FA90435 /* SDL_events.c in Sources */, + 2E9D6A2A139E11AA6BF93FA2 /* SDL_gesture.c in Sources */, + 28084123104729F20883021D /* SDL_keyboard.c in Sources */, + 780602D4682E3A62216F0016 /* SDL_mouse.c in Sources */, + 72D51B6B14043ABF5B1A411E /* SDL_quit.c in Sources */, + 6F9B6082102A6D4643966C33 /* SDL_touch.c in Sources */, + 1D095DEE6FBE62757B2F0414 /* SDL_windowevents.c in Sources */, + 6B4B439A34176F3D1BEA2D1C /* SDL_rwops.c in Sources */, + 01924E3528BA6A184DDC4943 /* SDL_rwopsbundlesupport.m in Sources */, + 0C176977081064BD51221009 /* SDL_sysfilesystem.m in Sources */, + 006441F36BCB7D18505F1A4D /* SDL_haptic.c in Sources */, + 5AF26187008556F10D163FC5 /* SDL_gamecontroller.c in Sources */, + 44BF684B3269241B040C6774 /* SDL_joystick.c in Sources */, + 4E1438BA6EAD299D3AB94EB1 /* SDLUIAccelerationDelegate.m in Sources */, + 40BB54235B2918C822911D19 /* SDL_sysjoystick.m in Sources */, + 07E7585B40781652700B7606 /* SDL_sysloadso.c in Sources */, + 4F3E10F7613037117EB3300A /* SDL_power.c in Sources */, + 2AE467ED7C4202905BCB6C79 /* SDL_syspower.m in Sources */, + 0E381F293D34214B54782982 /* SDL_render.c in Sources */, + 083E3C4A327E29FB535B1FAC /* SDL_yuv_mmx.c in Sources */, + 02CB74104D79791B0990020E /* SDL_yuv_sw.c in Sources */, + 20634A5F593610E956065D3F /* SDL_render_gles.c in Sources */, + 2F1314E84BAE322B27F703F2 /* SDL_render_gles2.c in Sources */, + 368E5B8445CD1B8401E76AF7 /* SDL_shaders_gles2.c in Sources */, + 4FF037AE0F9B121821B90C8C /* SDL_blendfillrect.c in Sources */, + 563963766931175F0B5F3FCA /* SDL_blendline.c in Sources */, + 7C53362964DB1E582A4C716F /* SDL_blendpoint.c in Sources */, + 603C084C405738731C060951 /* SDL_drawline.c in Sources */, + 706934E33ADB01A122ED0676 /* SDL_drawpoint.c in Sources */, + 74C87E3E4F2B36DC43CA2F35 /* SDL_render_sw.c in Sources */, + 6A9A64C74B9954D106E54D6F /* SDL_rotate.c in Sources */, + 075360CC0A5E5C66484F62F8 /* SDL_getenv.c in Sources */, + 61B2004548E76739034A0B78 /* SDL_iconv.c in Sources */, + 37365F82067E4DB5356104CF /* SDL_malloc.c in Sources */, + 6B561A8B4BCB33CE38170C24 /* SDL_qsort.c in Sources */, + 1790071D15E22E8F30675AA7 /* SDL_stdlib.c in Sources */, + 6B2D58972C715A1069D40036 /* SDL_string.c in Sources */, + 10B6394A4F192929471B48ED /* SDL_thread.c in Sources */, + 70C725D9776C58540D4368C3 /* SDL_syscond.c in Sources */, + 1E59768334D271C377111037 /* SDL_sysmutex.c in Sources */, + 2E312CAB2C9A404935B337A2 /* SDL_syssem.c in Sources */, + 447639E03ED5458F38F23139 /* SDL_systhread.c in Sources */, + 5D755F5F0DCE0CEB291F6EC4 /* SDL_systls.c in Sources */, + 0FD97D8128F92AF83C09072F /* SDL_timer.c in Sources */, + 7E9B20A15917194A791D6122 /* SDL_systimer.c in Sources */, + 7FD261822F3148596D7A6E81 /* SDL_RLEaccel.c in Sources */, + 321D4A6D588325BF5D0E62E1 /* SDL_blit.c in Sources */, + 2F7F74AA6DAF7CB00E59199C /* SDL_blit_0.c in Sources */, + 73290E654357301424F432B1 /* SDL_blit_1.c in Sources */, + 17FB78FB43E649B00156410B /* SDL_blit_A.c in Sources */, + 39C216A67CCA38CA15754031 /* SDL_blit_N.c in Sources */, + 6013202F0BDE394B17CE5698 /* SDL_blit_auto.c in Sources */, + 320F2422684F48EA0D206F02 /* SDL_blit_copy.c in Sources */, + 61FB5617309F432E1410309D /* SDL_blit_slow.c in Sources */, + 07285E0C6B925B40008D6193 /* SDL_bmp.c in Sources */, + 6A3823080B0667B076D93DDC /* SDL_clipboard.c in Sources */, + 14B24A5E05466C0601B52CF5 /* SDL_egl.c in Sources */, + 40BF75A3254E46D15E594007 /* SDL_fillrect.c in Sources */, + 592273B70BFD223B7B335E96 /* SDL_pixels.c in Sources */, + 2C713596449934B84BD85CB4 /* SDL_rect.c in Sources */, + 0E7006E626FE6E425E38676D /* SDL_shape.c in Sources */, + 57376C9B40EA4F4E156C180F /* SDL_stretch.c in Sources */, + 5F8B28FB2EA35F2E632E66AD /* SDL_surface.c in Sources */, + 3E6A3B8261B06E180D03733B /* SDL_video.c in Sources */, + 57804D5121E342FF245A186B /* SDL_nullevents.c in Sources */, + 1F472D4947857BB063A51388 /* SDL_nullframebuffer.c in Sources */, + 0F2D74255E6022A45A613516 /* SDL_nullvideo.c in Sources */, + 70CE6C4B3C6E7D151DB82429 /* SDL_uikitappdelegate.m in Sources */, + 310349292DC724FA46171246 /* SDL_uikitevents.m in Sources */, + 3FB92B1C70C9598D38E5578C /* SDL_uikitmessagebox.m in Sources */, + 4E1E1F6C0DF843B13C8A20B3 /* SDL_uikitmodes.m in Sources */, + 5977233B255D34F5622A600D /* SDL_uikitopengles.m in Sources */, + 1CAE707A614455AC41541BD5 /* SDL_uikitopenglview.m in Sources */, + 6A5875C8347A76EA3012019A /* SDL_uikitvideo.m in Sources */, + 129705167B44645E147450D4 /* SDL_uikitview.m in Sources */, + 43C5739551F76C1A1F8C4115 /* SDL_uikitviewcontroller.m in Sources */, + 4E027E396E7609FB7E207F75 /* SDL_uikitwindow.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 726E4EA54C631D670CDC4EDB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Debug"; + }; + 6F1700A4435E72594A0728FC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Release"; + }; + 34F54C6D0F047CD714C320BB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 4B10106D09B57FF4299D3CEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 69B50A6844351B017B9A513E /* Build configuration list for PBXNativeTarget "libSDL2.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 726E4EA54C631D670CDC4EDB /* Debug */, + 6F1700A4435E72594A0728FC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34F54C6D0F047CD714C320BB /* Debug */, + 4B10106D09B57FF4299D3CEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/SDL2main/SDL2main.xcodeproj/project.pbxproj b/premake/Xcode-iOS/SDL2main/SDL2main.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..973bdafcf3 --- /dev/null +++ b/premake/Xcode-iOS/SDL2main/SDL2main.xcodeproj/project.pbxproj @@ -0,0 +1,241 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6A47770C5EF950855C473DE4 /* SDL_dummy_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 548E78363EA76CBB7C9D647D /* SDL_dummy_main.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 548E78363EA76CBB7C9D647D /* SDL_dummy_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dummy_main.c"; path = "../../../src/main/dummy/SDL_dummy_main.c"; sourceTree = ""; }; + 5E5C7A9A4A341C0E5B2D6CDA /* libSDL2main.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2main.a"; path = "libSDL2main.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 450B55DB505267192316799F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 24A248A70B67298D6C2C6433 /* SDL2main */ = { + isa = PBXGroup; + children = ( + 0F4A74990FAF59563DCE2840 /* src */, + 4DF93DED3B1F1CF603EE2961 /* Products */, + ); + name = "SDL2main"; + sourceTree = ""; + }; + 0F4A74990FAF59563DCE2840 /* src */ = { + isa = PBXGroup; + children = ( + 23932A2D1F2210D87B842AED /* main */, + ); + name = "src"; + sourceTree = ""; + }; + 23932A2D1F2210D87B842AED /* main */ = { + isa = PBXGroup; + children = ( + 38FB10B773C32C6E1FD240A6 /* dummy */, + ); + name = "main"; + sourceTree = ""; + }; + 38FB10B773C32C6E1FD240A6 /* dummy */ = { + isa = PBXGroup; + children = ( + 548E78363EA76CBB7C9D647D /* SDL_dummy_main.c */, + ); + name = "dummy"; + sourceTree = ""; + }; + 4DF93DED3B1F1CF603EE2961 /* Products */ = { + isa = PBXGroup; + children = ( + 5E5C7A9A4A341C0E5B2D6CDA /* libSDL2main.a */, + ); + name = "Products"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 03EA2B934468123B74107F68 /* SDL2main */ = { + isa = PBXNativeTarget; + buildConfigurationList = 253743B11B001E914B5D598A /* Build configuration list for PBXNativeTarget "SDL2main" */; + buildPhases = ( + 2478641F57CA13393B9D590C /* Resources */, + 2646786734062B0C5FFE3108 /* Sources */, + 450B55DB505267192316799F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDL2main"; + productName = "SDL2main"; + productReference = 5E5C7A9A4A341C0E5B2D6CDA /* libSDL2main.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2main" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 24A248A70B67298D6C2C6433 /* SDL2main */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 03EA2B934468123B74107F68 /* libSDL2main.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2478641F57CA13393B9D590C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2646786734062B0C5FFE3108 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A47770C5EF950855C473DE4 /* SDL_dummy_main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 25220E52501602BA417227AC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Debug"; + }; + 7EE30A225C264A274EA54353 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Release"; + }; + 25A70ED1565647744E791094 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 1A8A11CE1AAA3BF8562F4099 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 253743B11B001E914B5D598A /* Build configuration list for PBXNativeTarget "libSDL2main.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 25220E52501602BA417227AC /* Debug */, + 7EE30A225C264A274EA54353 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2main" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 25A70ED1565647744E791094 /* Debug */, + 1A8A11CE1AAA3BF8562F4099 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/SDL2test/SDL2test.xcodeproj/project.pbxproj b/premake/Xcode-iOS/SDL2test/SDL2test.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..c514443651 --- /dev/null +++ b/premake/Xcode-iOS/SDL2test/SDL2test.xcodeproj/project.pbxproj @@ -0,0 +1,430 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 56857095612364755D286FD9 /* SDL_test_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 6ED4535A558C6BE05EEB4C6E /* SDL_test_assert.c */; }; + 5C33580827A4354B73B70D73 /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 3D0C731632D76A34194E03DB /* SDL_test_common.c */; }; + 706031BC4F882A1031330BA1 /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = 0657514939B52F9B6F1E4EDA /* SDL_test_compare.c */; }; + 6F1624BF04F918EC623139A8 /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 12BE1FB21B87710652414729 /* SDL_test_crc32.c */; }; + 3B1C6CA815A928FC4F495888 /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = 4ACE44CD0CCA362A1A7F25F0 /* SDL_test_font.c */; }; + 42AB1E177DA962641F215685 /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = 5A9C55953C644DCF78C15BD9 /* SDL_test_fuzzer.c */; }; + 318B413E7C44573103C5314A /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = 49333DBB75662DA154D22861 /* SDL_test_harness.c */; }; + 041E4EBC2A060AF84B4D594A /* SDL_test_imageBlit.c in Sources */ = {isa = PBXBuildFile; fileRef = 0EDE1225501522A444E33397 /* SDL_test_imageBlit.c */; }; + 727F14A7672B4FB51DCA5570 /* SDL_test_imageBlitBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = 177A78C169131B6D3EFE450B /* SDL_test_imageBlitBlend.c */; }; + 6EEA55954F9B512D1AC30AFA /* SDL_test_imageFace.c in Sources */ = {isa = PBXBuildFile; fileRef = 5E01422D46856BDB2E8D4D1E /* SDL_test_imageFace.c */; }; + 433A343054ED3DF80E1D3F58 /* SDL_test_imagePrimitives.c in Sources */ = {isa = PBXBuildFile; fileRef = 43BE0BAD2C18095269ED029B /* SDL_test_imagePrimitives.c */; }; + 23796C0D79F4255042251C80 /* SDL_test_imagePrimitivesBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = 5A091595221A641D69FA2FAD /* SDL_test_imagePrimitivesBlend.c */; }; + 7C2A66EC3B0B763F4A450CDB /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 286D137118996735597E0EA5 /* SDL_test_log.c */; }; + 0F5A0ACF334E532D40007CDB /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 2C773AAC13DC5ED901586D7E /* SDL_test_md5.c */; }; + 066163463F6B29C9696F3213 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = 4F18540F577C34540CAC03F7 /* SDL_test_random.c */; }; + 1B5840A547674ADE70B06D8F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 621233187C785B7574D37434 /* AudioToolbox.framework */; }; + 492B40FD2FA63DCE33AC1A06 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 564C34DE052B0A0F1C5D1EF8 /* QuartzCore.framework */; }; + 12E11A8F35ED13A6005F7175 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F9D1D87236160D7647E450F /* OpenGLES.framework */; }; + 42E5016F5D673E7F298B16C9 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47F554947BA260C46FD60423 /* CoreGraphics.framework */; }; + 23E1397163E838CA56AC511D /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14690CC76EF75A815B195147 /* UIKit.framework */; }; + 1A7D1F2D6EFA085C0C237825 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A6F5244113B3E4A189B6866 /* Foundation.framework */; }; + 444D36D16C4942E0174C0A8B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 015F19F612DB04B6530A4330 /* CoreAudio.framework */; }; + 787B5951006701B005890A49 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 12281D7977F523324D701579 /* libSDL2main.a */; }; + 184A61C5789A47587EEE467C /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EAD7DDA02795B2776FE213A /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4366730B15F067FE56E2451F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15B20EEE3CA059EE536E6653 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E5C7A9A4A341C0E5B2D6CDA; + remoteInfo = "libSDL2main.a"; + }; + 7D4B755868EC73BD12AA6264 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15B20EEE3CA059EE536E6653 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 03EA2B934468123B74107F68; + remoteInfo = "libSDL2main.a"; + }; + 36F67DC919464A4B0F925FC5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 66FA293632AA42386CF57BEB /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 224D2C85085A7BA60E532655; + remoteInfo = "libSDL2.a"; + }; + 033D34162C254D9938854B3B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 66FA293632AA42386CF57BEB /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 515D4C462ACD2DA8180E7783; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 6ED4535A558C6BE05EEB4C6E /* SDL_test_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_assert.c"; path = "../../../src/test/SDL_test_assert.c"; sourceTree = ""; }; + 3D0C731632D76A34194E03DB /* SDL_test_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_common.c"; path = "../../../src/test/SDL_test_common.c"; sourceTree = ""; }; + 0657514939B52F9B6F1E4EDA /* SDL_test_compare.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_compare.c"; path = "../../../src/test/SDL_test_compare.c"; sourceTree = ""; }; + 12BE1FB21B87710652414729 /* SDL_test_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_crc32.c"; path = "../../../src/test/SDL_test_crc32.c"; sourceTree = ""; }; + 4ACE44CD0CCA362A1A7F25F0 /* SDL_test_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_font.c"; path = "../../../src/test/SDL_test_font.c"; sourceTree = ""; }; + 5A9C55953C644DCF78C15BD9 /* SDL_test_fuzzer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_fuzzer.c"; path = "../../../src/test/SDL_test_fuzzer.c"; sourceTree = ""; }; + 49333DBB75662DA154D22861 /* SDL_test_harness.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_harness.c"; path = "../../../src/test/SDL_test_harness.c"; sourceTree = ""; }; + 0EDE1225501522A444E33397 /* SDL_test_imageBlit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageBlit.c"; path = "../../../src/test/SDL_test_imageBlit.c"; sourceTree = ""; }; + 177A78C169131B6D3EFE450B /* SDL_test_imageBlitBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageBlitBlend.c"; path = "../../../src/test/SDL_test_imageBlitBlend.c"; sourceTree = ""; }; + 5E01422D46856BDB2E8D4D1E /* SDL_test_imageFace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageFace.c"; path = "../../../src/test/SDL_test_imageFace.c"; sourceTree = ""; }; + 43BE0BAD2C18095269ED029B /* SDL_test_imagePrimitives.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imagePrimitives.c"; path = "../../../src/test/SDL_test_imagePrimitives.c"; sourceTree = ""; }; + 5A091595221A641D69FA2FAD /* SDL_test_imagePrimitivesBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imagePrimitivesBlend.c"; path = "../../../src/test/SDL_test_imagePrimitivesBlend.c"; sourceTree = ""; }; + 286D137118996735597E0EA5 /* SDL_test_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_log.c"; path = "../../../src/test/SDL_test_log.c"; sourceTree = ""; }; + 2C773AAC13DC5ED901586D7E /* SDL_test_md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_md5.c"; path = "../../../src/test/SDL_test_md5.c"; sourceTree = ""; }; + 4F18540F577C34540CAC03F7 /* SDL_test_random.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_random.c"; path = "../../../src/test/SDL_test_random.c"; sourceTree = ""; }; + 621233187C785B7574D37434 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "System/Library/Frameworks/AudioToolbox.framework"; sourceTree = "SDKROOT"; }; + 564C34DE052B0A0F1C5D1EF8 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = "SDKROOT"; }; + 3F9D1D87236160D7647E450F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGLES.framework"; path = "System/Library/Frameworks/OpenGLES.framework"; sourceTree = "SDKROOT"; }; + 47F554947BA260C46FD60423 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreGraphics.framework"; path = "System/Library/Frameworks/CoreGraphics.framework"; sourceTree = "SDKROOT"; }; + 14690CC76EF75A815B195147 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "UIKit.framework"; path = "System/Library/Frameworks/UIKit.framework"; sourceTree = "SDKROOT"; }; + 4A6F5244113B3E4A189B6866 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Foundation.framework"; path = "System/Library/Frameworks/Foundation.framework"; sourceTree = "SDKROOT"; }; + 015F19F612DB04B6530A4330 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "System/Library/Frameworks/CoreAudio.framework"; sourceTree = "SDKROOT"; }; + 1C052B2602423CF11EB44CD2 /* libSDL2test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2test.a"; path = "libSDL2test.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 15B20EEE3CA059EE536E6653 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 66FA293632AA42386CF57BEB /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 10F173353BC717D867151BED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1B5840A547674ADE70B06D8F /* AudioToolbox.framework in Frameworks */, + 492B40FD2FA63DCE33AC1A06 /* QuartzCore.framework in Frameworks */, + 12E11A8F35ED13A6005F7175 /* OpenGLES.framework in Frameworks */, + 42E5016F5D673E7F298B16C9 /* CoreGraphics.framework in Frameworks */, + 23E1397163E838CA56AC511D /* UIKit.framework in Frameworks */, + 1A7D1F2D6EFA085C0C237825 /* Foundation.framework in Frameworks */, + 444D36D16C4942E0174C0A8B /* CoreAudio.framework in Frameworks */, + 787B5951006701B005890A49 /* libSDL2main.a in Frameworks */, + 184A61C5789A47587EEE467C /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 32F928E24467693B4BAD0BC5 /* SDL2test */ = { + isa = PBXGroup; + children = ( + 3C0256E43209258C2CC60C5F /* src */, + 275E2FF04A676A78169209B7 /* Frameworks */, + 56761C0E71916CFE48575094 /* Products */, + 351D0CB23353267B11AD040F /* Projects */, + ); + name = "SDL2test"; + sourceTree = ""; + }; + 3C0256E43209258C2CC60C5F /* src */ = { + isa = PBXGroup; + children = ( + 3EA221D752E20A48286B2818 /* test */, + ); + name = "src"; + sourceTree = ""; + }; + 3EA221D752E20A48286B2818 /* test */ = { + isa = PBXGroup; + children = ( + 6ED4535A558C6BE05EEB4C6E /* SDL_test_assert.c */, + 3D0C731632D76A34194E03DB /* SDL_test_common.c */, + 0657514939B52F9B6F1E4EDA /* SDL_test_compare.c */, + 12BE1FB21B87710652414729 /* SDL_test_crc32.c */, + 4ACE44CD0CCA362A1A7F25F0 /* SDL_test_font.c */, + 5A9C55953C644DCF78C15BD9 /* SDL_test_fuzzer.c */, + 49333DBB75662DA154D22861 /* SDL_test_harness.c */, + 0EDE1225501522A444E33397 /* SDL_test_imageBlit.c */, + 177A78C169131B6D3EFE450B /* SDL_test_imageBlitBlend.c */, + 5E01422D46856BDB2E8D4D1E /* SDL_test_imageFace.c */, + 43BE0BAD2C18095269ED029B /* SDL_test_imagePrimitives.c */, + 5A091595221A641D69FA2FAD /* SDL_test_imagePrimitivesBlend.c */, + 286D137118996735597E0EA5 /* SDL_test_log.c */, + 2C773AAC13DC5ED901586D7E /* SDL_test_md5.c */, + 4F18540F577C34540CAC03F7 /* SDL_test_random.c */, + ); + name = "test"; + sourceTree = ""; + }; + 275E2FF04A676A78169209B7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 621233187C785B7574D37434 /* AudioToolbox.framework */, + 564C34DE052B0A0F1C5D1EF8 /* QuartzCore.framework */, + 3F9D1D87236160D7647E450F /* OpenGLES.framework */, + 47F554947BA260C46FD60423 /* CoreGraphics.framework */, + 14690CC76EF75A815B195147 /* UIKit.framework */, + 4A6F5244113B3E4A189B6866 /* Foundation.framework */, + 015F19F612DB04B6530A4330 /* CoreAudio.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 56761C0E71916CFE48575094 /* Products */ = { + isa = PBXGroup; + children = ( + 1C052B2602423CF11EB44CD2 /* libSDL2test.a */, + ); + name = "Products"; + sourceTree = ""; + }; + 351D0CB23353267B11AD040F /* Projects */ = { + isa = PBXGroup; + children = ( + 15B20EEE3CA059EE536E6653 /* SDL2main.xcodeproj */, + 66FA293632AA42386CF57BEB /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 48973A77740B056E28D405B9 /* Products */ = { + isa = PBXGroup; + children = ( + 12281D7977F523324D701579 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 032716E13C9450AE73732349 /* Products */ = { + isa = PBXGroup; + children = ( + 3EAD7DDA02795B2776FE213A /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 79AC3AFD728E60BD3C644A64 /* SDL2test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7C5807BE065572C245C73A13 /* Build configuration list for PBXNativeTarget "SDL2test" */; + buildPhases = ( + 5222598971CE2119792C75BB /* Resources */, + 61A06ADB023F2DC57ED01F1E /* Sources */, + 10F173353BC717D867151BED /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 18AF3F2661A47E3550126561 /* PBXTargetDependency */, + 192D7B7C4961243059393A43 /* PBXTargetDependency */, + ); + name = "SDL2test"; + productName = "SDL2test"; + productReference = 1C052B2602423CF11EB44CD2 /* libSDL2test.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2test" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 32F928E24467693B4BAD0BC5 /* SDL2test */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 48973A77740B056E28D405B9 /* Products */; + ProjectRef = 15B20EEE3CA059EE536E6653 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 032716E13C9450AE73732349 /* Products */; + ProjectRef = 66FA293632AA42386CF57BEB /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 79AC3AFD728E60BD3C644A64 /* libSDL2test.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 12281D7977F523324D701579 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 4366730B15F067FE56E2451F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3EAD7DDA02795B2776FE213A /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 36F67DC919464A4B0F925FC5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5222598971CE2119792C75BB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 61A06ADB023F2DC57ED01F1E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56857095612364755D286FD9 /* SDL_test_assert.c in Sources */, + 5C33580827A4354B73B70D73 /* SDL_test_common.c in Sources */, + 706031BC4F882A1031330BA1 /* SDL_test_compare.c in Sources */, + 6F1624BF04F918EC623139A8 /* SDL_test_crc32.c in Sources */, + 3B1C6CA815A928FC4F495888 /* SDL_test_font.c in Sources */, + 42AB1E177DA962641F215685 /* SDL_test_fuzzer.c in Sources */, + 318B413E7C44573103C5314A /* SDL_test_harness.c in Sources */, + 041E4EBC2A060AF84B4D594A /* SDL_test_imageBlit.c in Sources */, + 727F14A7672B4FB51DCA5570 /* SDL_test_imageBlitBlend.c in Sources */, + 6EEA55954F9B512D1AC30AFA /* SDL_test_imageFace.c in Sources */, + 433A343054ED3DF80E1D3F58 /* SDL_test_imagePrimitives.c in Sources */, + 23796C0D79F4255042251C80 /* SDL_test_imagePrimitivesBlend.c in Sources */, + 7C2A66EC3B0B763F4A450CDB /* SDL_test_log.c in Sources */, + 0F5A0ACF334E532D40007CDB /* SDL_test_md5.c in Sources */, + 066163463F6B29C9696F3213 /* SDL_test_random.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 18AF3F2661A47E3550126561 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7D4B755868EC73BD12AA6264 /* PBXContainerItemProxy */; + }; + 192D7B7C4961243059393A43 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 033D34162C254D9938854B3B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 06E748D2723D439036247CC6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Debug"; + }; + 03FB61DC64612A892E0E32B2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Release"; + }; + 5182634031DC148F4ADA5AEF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../include", + ); + OBJROOT = "obj/iOS/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug"; + }; + 687A3A1170E3559940506604 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; + SDKROOT = iphoneos; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../include", + ); + OBJROOT = "obj/iOS/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7C5807BE065572C245C73A13 /* Build configuration list for PBXNativeTarget "libSDL2test.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 06E748D2723D439036247CC6 /* Debug */, + 03FB61DC64612A892E0E32B2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5182634031DC148F4ADA5AEF /* Debug */, + 687A3A1170E3559940506604 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode-iOS/SDL_config_premake.h b/premake/Xcode-iOS/SDL_config_premake.h new file mode 100755 index 0000000000..bc3e083280 --- /dev/null +++ b/premake/Xcode-iOS/SDL_config_premake.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_iphoneos_h +#define _SDL_config_iphoneos_h + +#include "SDL_platform.h" + +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif + +#define HAVE_GCC_ATOMICS 1 + +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_SETENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_COREAUDIO +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#endif +#ifndef SDL_VIDEO_DRIVER_UIKIT +#define SDL_VIDEO_DRIVER_UIKIT 1 +#endif +#ifndef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 +#endif +#ifndef SDL_FILESYSTEM_COCOA +#define SDL_FILESYSTEM_COCOA 1 +#endif +#ifndef SDL_IPHONE_KEYBOARD +#define SDL_IPHONE_KEYBOARD 1 +#endif +#ifndef SDL_POWER_UIKIT +#define SDL_POWER_UIKIT 1 +#endif +#ifndef SDL_JOYSTICK_DISABLED +#define SDL_JOYSTICK_DISABLED 0 +#endif +#ifndef SDL_VIDEO_RENDER_OGL_ES +#define SDL_VIDEO_RENDER_OGL_ES 1 +#endif +#ifndef SDL_TIMER_UNIX +#define SDL_TIMER_UNIX 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES +#define SDL_VIDEO_OPENGL_ES 1 +#endif +#ifndef SDL_THREAD_PTHREAD +#define SDL_THREAD_PTHREAD 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif +#ifndef SDL_LOADSO_DISABLED +#define SDL_LOADSO_DISABLED 1 +#endif +#ifndef SDL_HAPTIC_DISABLED +#define SDL_HAPTIC_DISABLED 1 +#endif + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDLUIAccelerationDelegate.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + +#endif /* _SDL_config_iphoneos_h */ diff --git a/premake/Xcode-iOS/build-scripts/clean_premake.command b/premake/Xcode-iOS/build-scripts/clean_premake.command new file mode 100755 index 0000000000..b054d4f521 --- /dev/null +++ b/premake/Xcode-iOS/build-scripts/clean_premake.command @@ -0,0 +1,4 @@ +#!/bin/sh +# change to directory above command file +cd `dirname $0`/.. +`dirname $0`/premake4 --file=../premake4.lua --to=./Xcode-iOS --ios clean \ No newline at end of file diff --git a/premake/Xcode-iOS/build-scripts/premake4 b/premake/Xcode-iOS/build-scripts/premake4 new file mode 100755 index 0000000000000000000000000000000000000000..dc3bb9abfa7766e96f1be5e63c9d98a04cd253f9 GIT binary patch literal 419580 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𝔡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%0A8oQuDRJ+Q`giifmJAS)pF;;6|0(8tXRq4m8)Va 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 literal 0 HcmV?d00001 diff --git a/premake/Xcode-iOS/build-scripts/xcode3.command b/premake/Xcode-iOS/build-scripts/xcode3.command new file mode 100755 index 0000000000..e1f67fa6b8 --- /dev/null +++ b/premake/Xcode-iOS/build-scripts/xcode3.command @@ -0,0 +1,4 @@ +#!/bin/sh +# change to directory above command file +cd `dirname $0`/.. +`dirname $0`/premake4 --file=../premake4.lua --to=./Xcode-iOS --ios xcode3 \ No newline at end of file diff --git a/premake/Xcode-iOS/build-scripts/xcode4.command b/premake/Xcode-iOS/build-scripts/xcode4.command new file mode 100755 index 0000000000..bf3c57f15e --- /dev/null +++ b/premake/Xcode-iOS/build-scripts/xcode4.command @@ -0,0 +1,4 @@ +#!/bin/sh +# change to directory above command file +cd `dirname $0`/.. +`dirname $0`/premake4 --file=../premake4.lua --to=./Xcode-iOS --ios xcode4 \ No newline at end of file diff --git a/premake/Xcode/Xcode3/SDL2/SDL2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/SDL2/SDL2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..9ba1b0b6fe --- /dev/null +++ b/premake/Xcode/Xcode3/SDL2/SDL2.xcodeproj/project.pbxproj @@ -0,0 +1,1231 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6F3F406D60231E94188751BC /* SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 581F727C2E205CC67F140529 /* SDL.c */; }; + 19FA05DA50E3679839F6602B /* SDL_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 20A12A2435417EEB1A001847 /* SDL_assert.c */; }; + 356E00387A38053E5EE8705E /* SDL_error.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C4669E76F5E4522717C37DD /* SDL_error.c */; }; + 149E4E143D540244690204F8 /* SDL_hints.c in Sources */ = {isa = PBXBuildFile; fileRef = 1D2E68ED4D66639038F63099 /* SDL_hints.c */; }; + 6D2117B123FD403E5F17176E /* SDL_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 4EAE1E8A03AF0D8C0BC74C60 /* SDL_log.c */; }; + 52F43FB27CAA2A34780F23D2 /* SDL_atomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 741E10D47F9F35F77FC23C71 /* SDL_atomic.c */; }; + 492C77BF4FA9117B4C456DEE /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 545D521E33195938012A701C /* SDL_spinlock.c */; }; + 2F1F27BE61AD6559771B219B /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 009822131E4843700095766C /* SDL_audio.c */; }; + 461F2F773934429817AA4299 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 2BA37BD372FE166821D80A1E /* SDL_audiocvt.c */; }; + 79F231BA363B7C142C533385 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D2936CF698D392735D76E9E /* SDL_audiodev.c */; }; + 637A1C5F33B070F311F368D2 /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 76263CFA4F4A3E8E74966406 /* SDL_audiotypecvt.c */; }; + 16451C9255A341FF66894454 /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 748562A8151756FF3FE91679 /* SDL_mixer.c */; }; + 20DE6FC1792A40ED25F514F9 /* SDL_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 58E6725272291A8B48974EC3 /* SDL_wave.c */; }; + 50C80EB5218555D753C36826 /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 17F2408C59BB1CE53ACB077B /* SDL_coreaudio.c */; }; + 44F427256F5C0EC273FC3B89 /* SDL_diskaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 694A007643FB227E1C011EE8 /* SDL_diskaudio.c */; }; + 388A0733659279AE2A123B36 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 183031E40F3E3665462E31AC /* SDL_dummyaudio.c */; }; + 1362409443423D9B472D0416 /* SDL_cpuinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 399D7F372AA42CDF004A30CB /* SDL_cpuinfo.c */; }; + 2C9E656F18713B73279B4B04 /* SDL_clipboardevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 5EEA55BC35E77DD14C8B6DEA /* SDL_clipboardevents.c */; }; + 0CCE44195C6176D8043D528A /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 64680D041F9E679917CF3CB8 /* SDL_dropevents.c */; }; + 25F304341BF22DF974DF1780 /* SDL_events.c in Sources */ = {isa = PBXBuildFile; fileRef = 67B9300749251C797177656C /* SDL_events.c */; }; + 7D5172AE101630DD2E8D3D30 /* SDL_gesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 2427171D0D16540755560B01 /* SDL_gesture.c */; }; + 6A112F1137181ABE5AC417D0 /* SDL_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 4A4523A15D1D31E40DBA55EF /* SDL_keyboard.c */; }; + 2EF9131C40D10D5B633214A1 /* SDL_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E064D1B5215736C4B0C0F8B /* SDL_mouse.c */; }; + 16DC68A33B9E04A63D9A54C6 /* SDL_quit.c in Sources */ = {isa = PBXBuildFile; fileRef = 7EAB2812398D5FDE1566622B /* SDL_quit.c */; }; + 53C876237C494B6428793CD6 /* SDL_touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 11625DDF6F935BC24C1658C6 /* SDL_touch.c */; }; + 778838BC7EAC5963763138C1 /* SDL_windowevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 7B0D1AE01FCA24EC38765CFF /* SDL_windowevents.c */; }; + 4F65225D210F1D0C223A3842 /* SDL_rwops.c in Sources */ = {isa = PBXBuildFile; fileRef = 46E842226EEF2BBD3E14319D /* SDL_rwops.c */; }; + 189B1C085510122958EF71C2 /* SDL_rwopsbundlesupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E087787656B7EF200787EF7 /* SDL_rwopsbundlesupport.m */; }; + 218C0918297D7C1E31307429 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 7927299A5CBA392013905A95 /* SDL_sysfilesystem.m */; }; + 1F950ADC73537B891DE53BB8 /* SDL_haptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 6C027EE044E726073F02545E /* SDL_haptic.c */; }; + 1DA01FF6657570AA36A52EC5 /* SDL_syshaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 466551BC2C236A3C09D52B8C /* SDL_syshaptic.c */; }; + 689A0A855C4F785B5C981CA4 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D0C59A3666A74AD19C81F68 /* SDL_gamecontroller.c */; }; + 159C6EB8203936010A1F2027 /* SDL_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 4FCA1736705A5DC74EC17138 /* SDL_joystick.c */; }; + 4FC953274C2A1641268F236B /* SDL_sysjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 79981D6D163C5F2060C66FA5 /* SDL_sysjoystick.c */; }; + 151061BF5CDD3CB1146656AF /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 31CD0B3A1CC508507B0E69C7 /* SDL_sysloadso.c */; }; + 7F9268CB0F1354E475291503 /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C2235273DF86C1B64BC738C /* SDL_power.c */; }; + 6F6C5A254D6A1B6E6F2911D5 /* SDL_syspower.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A4855D539F85E716904291D /* SDL_syspower.c */; }; + 34555B4E69CE63A24CDA7F43 /* SDL_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 550435DE0C8635D76B737308 /* SDL_render.c */; }; + 7BEF2DBE471D78592D830CFC /* SDL_yuv_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 30C711D35F4E10AE14064022 /* SDL_yuv_mmx.c */; }; + 50E3046B39F125B111E552E5 /* SDL_yuv_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 2B19077009C9231E3CB109F9 /* SDL_yuv_sw.c */; }; + 35A118A4441C11DE1E126429 /* SDL_render_gl.c in Sources */ = {isa = PBXBuildFile; fileRef = 2E98213F58C83B7679EA2EE0 /* SDL_render_gl.c */; }; + 5D485D983D9508FF46252F6C /* SDL_shaders_gl.c in Sources */ = {isa = PBXBuildFile; fileRef = 74E6545673FD059731C53CB0 /* SDL_shaders_gl.c */; }; + 0B755CE80D912DB50009511D /* SDL_blendfillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 139751A76375191B64F53E7D /* SDL_blendfillrect.c */; }; + 73765AD0352731C868D24D4A /* SDL_blendline.c in Sources */ = {isa = PBXBuildFile; fileRef = 2E0B793E01E363125E115555 /* SDL_blendline.c */; }; + 02947C1003D14ADE559D42B2 /* SDL_blendpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 47A60CF070301F215AA31899 /* SDL_blendpoint.c */; }; + 75A536C37C5E31577AA043A4 /* SDL_drawline.c in Sources */ = {isa = PBXBuildFile; fileRef = 3DC17B6963CD575538C46E2B /* SDL_drawline.c */; }; + 34792E3153922D7D763C170E /* SDL_drawpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 57200BE31613529B5E4D145A /* SDL_drawpoint.c */; }; + 10763EF370CC093B1CFA183C /* SDL_render_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 7F4003F22A2B03CC4F3E2570 /* SDL_render_sw.c */; }; + 110C5B4311ED10D54C4F62AA /* SDL_rotate.c in Sources */ = {isa = PBXBuildFile; fileRef = 34F408411DF145AD78114160 /* SDL_rotate.c */; }; + 48487F951B64565B7D7207CA /* SDL_getenv.c in Sources */ = {isa = PBXBuildFile; fileRef = 467E7A495D341EA43CA77D04 /* SDL_getenv.c */; }; + 059730C916147C00706662AD /* SDL_iconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 7420083415F10DBF1A6E4645 /* SDL_iconv.c */; }; + 7296105F4E1C17650F3D73C9 /* SDL_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AAD26CD05F31E954E925A93 /* SDL_malloc.c */; }; + 49DD00DB42335811763516DD /* SDL_qsort.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A637631359161D6452A680F /* SDL_qsort.c */; }; + 52DE7BE66FA215C168DF1677 /* SDL_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 0B1A13D3324F661B06A354E4 /* SDL_stdlib.c */; }; + 5C645F5C4E433585671F555D /* SDL_string.c in Sources */ = {isa = PBXBuildFile; fileRef = 76AA2E0B0F173AC9212F4258 /* SDL_string.c */; }; + 1C0923FF7665104E12545B0C /* SDL_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = 00BF063F2A516202081956FF /* SDL_thread.c */; }; + 56775E493033788C61470057 /* SDL_syscond.c in Sources */ = {isa = PBXBuildFile; fileRef = 75A15D1D350165C72B266D64 /* SDL_syscond.c */; }; + 6E88479E164B21F0200C15BC /* SDL_sysmutex.c in Sources */ = {isa = PBXBuildFile; fileRef = 575F34176E7226D0364C71AC /* SDL_sysmutex.c */; }; + 28E422FD2DB22AD275C62496 /* SDL_syssem.c in Sources */ = {isa = PBXBuildFile; fileRef = 68EA167A2FA9170A1EEA3B1D /* SDL_syssem.c */; }; + 427C5DE627A9073945E63965 /* SDL_systhread.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F031FEF2BCC1434771A7E86 /* SDL_systhread.c */; }; + 74D208E105A93E03446D0CC3 /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A8F127A2C4E6F364C1526F0 /* SDL_systls.c */; }; + 55472CED35DA24E748C92A9D /* SDL_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 08B34CDF5C9079763C624849 /* SDL_timer.c */; }; + 641F56DE115627885E68139B /* SDL_systimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6A01774C1EED1B2144AE1CB5 /* SDL_systimer.c */; }; + 58C65B09535869014BC3131C /* SDL_RLEaccel.c in Sources */ = {isa = PBXBuildFile; fileRef = 676211D87FE20B7150213164 /* SDL_RLEaccel.c */; }; + 3E0401B74A716B967F1D70CB /* SDL_blit.c in Sources */ = {isa = PBXBuildFile; fileRef = 7B5F52584ED13C49741749BD /* SDL_blit.c */; }; + 21B578155ED918C80674601C /* SDL_blit_0.c in Sources */ = {isa = PBXBuildFile; fileRef = 6BD9773F57DE397A34542B86 /* SDL_blit_0.c */; }; + 6E612A61515559E567CD5D9C /* SDL_blit_1.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F717A917D9207E82B1709FD /* SDL_blit_1.c */; }; + 5E200CE93B4833C9061C18AF /* SDL_blit_A.c in Sources */ = {isa = PBXBuildFile; fileRef = 4A7C2E9C357B39870C9C7CBB /* SDL_blit_A.c */; }; + 71E83A8D25F069DC2952005B /* SDL_blit_N.c in Sources */ = {isa = PBXBuildFile; fileRef = 16F56E412F037AA6626704FC /* SDL_blit_N.c */; }; + 75EC6ADC292417204E4E701B /* SDL_blit_auto.c in Sources */ = {isa = PBXBuildFile; fileRef = 12AD22506E1411CA1FCA193D /* SDL_blit_auto.c */; }; + 0F073C586C5B0777519F427F /* SDL_blit_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D4437C37F683A8A58F55923 /* SDL_blit_copy.c */; }; + 1F897EA9155F39AB161168AD /* SDL_blit_slow.c in Sources */ = {isa = PBXBuildFile; fileRef = 2C3813742F9649C6666B1E7E /* SDL_blit_slow.c */; }; + 78E46B133F7458F4295F5452 /* SDL_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 626030677A9E27FC1E8935A1 /* SDL_bmp.c */; }; + 6383693061D0250D26F00218 /* SDL_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C4629AC64180D01435D314B /* SDL_clipboard.c */; }; + 0BEF1BDA1C6F691D22EB02A7 /* SDL_egl.c in Sources */ = {isa = PBXBuildFile; fileRef = 1AA429B9420C620D5F982BCC /* SDL_egl.c */; }; + 13F970752FFF253553FD1C57 /* SDL_fillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 127978F1333C57F33D196715 /* SDL_fillrect.c */; }; + 711F3C0A570B25DF7D873D2A /* SDL_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C8921DA02C03ADB0F4646F8 /* SDL_pixels.c */; }; + 58AE29EA6A4E39D37DFF1403 /* SDL_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 39842F4E596B39E8643764C3 /* SDL_rect.c */; }; + 46AA6A03274D62FC24FF0927 /* SDL_shape.c in Sources */ = {isa = PBXBuildFile; fileRef = 1A481A30600E3DFE77A26D0A /* SDL_shape.c */; }; + 277D2B962D136C4A24D2142F /* SDL_stretch.c in Sources */ = {isa = PBXBuildFile; fileRef = 467C2DC84A7B76C05E9E120F /* SDL_stretch.c */; }; + 14010A0150CF689E0D9E3221 /* SDL_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 518E5DE30064338C4BC17126 /* SDL_surface.c */; }; + 78B41B604F381B2D5C6D18E1 /* SDL_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 095B54196A9037AE32C14507 /* SDL_video.c */; }; + 67D15BC71BE7653C55D74F61 /* SDL_cocoaclipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B1A7D591BBF260340365717 /* SDL_cocoaclipboard.m */; }; + 78F26FEE048D4A6B4A863229 /* SDL_cocoaevents.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CD471DB63ED0C072F712786 /* SDL_cocoaevents.m */; }; + 6F89267B7FF56499250A71CC /* SDL_cocoakeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FF971A805D912AE7C3511F7 /* SDL_cocoakeyboard.m */; }; + 5CF76F752B327CD948535F8F /* SDL_cocoamessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = 59FA32BE7DCE61473C727995 /* SDL_cocoamessagebox.m */; }; + 2AC25E1763A837323CD605E7 /* SDL_cocoamodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 090C140773EF64C55AB32D4D /* SDL_cocoamodes.m */; }; + 7D0450A731DD481909466CA0 /* SDL_cocoamouse.m in Sources */ = {isa = PBXBuildFile; fileRef = 36ED1B4309137DF626BA1304 /* SDL_cocoamouse.m */; }; + 0E6135F17C3B3277248323EB /* SDL_cocoamousetap.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A5F20432ADC009E19FA2C1E /* SDL_cocoamousetap.m */; }; + 18E915CA0AF24DC818255656 /* SDL_cocoaopengl.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A4F55752FF300143C835B3B /* SDL_cocoaopengl.m */; }; + 6C6654F603723710090735D5 /* SDL_cocoashape.m in Sources */ = {isa = PBXBuildFile; fileRef = 05CF7A893F4C1E2406AA11AA /* SDL_cocoashape.m */; }; + 647B47720F656FFC2BF30900 /* SDL_cocoavideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 297A08E31208586E5A9E4EB3 /* SDL_cocoavideo.m */; }; + 32ED7E75749236CD56FF20F0 /* SDL_cocoawindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 650003A700A8250D0F784E5A /* SDL_cocoawindow.m */; }; + 0F174DBC0448241115FC7C63 /* SDL_nullevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 2DD03852185F1A5357D16C0E /* SDL_nullevents.c */; }; + 6BC505CE4607095478152E99 /* SDL_nullframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 7FE32E2D489C1F5676D070F3 /* SDL_nullframebuffer.c */; }; + 44AF6A685C5A55FE4A5E19FC /* SDL_nullvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = 4576033B4C1F3E0D521D1842 /* SDL_nullvideo.c */; }; + 287200EA3B9D424D5DE575FD /* SDL_x11clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 58465C34749040C207292140 /* SDL_x11clipboard.c */; }; + 4E2C59800F607C372D6A3089 /* SDL_x11dyn.c in Sources */ = {isa = PBXBuildFile; fileRef = 36703205767270E5711876F8 /* SDL_x11dyn.c */; }; + 2DF75EB904B605E26DAF04C7 /* SDL_x11events.c in Sources */ = {isa = PBXBuildFile; fileRef = 7448494A32995EB4084F3B7D /* SDL_x11events.c */; }; + 47F6212A03D0643556910B37 /* SDL_x11framebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 3EF375972CA805682F8F74F4 /* SDL_x11framebuffer.c */; }; + 674049A36F4E1F8A39BA72F3 /* SDL_x11keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 4543334473D06CAE254F00B1 /* SDL_x11keyboard.c */; }; + 423735EE5D4E6C26652252E9 /* SDL_x11messagebox.c in Sources */ = {isa = PBXBuildFile; fileRef = 1D2B22B2741D4C6060E23309 /* SDL_x11messagebox.c */; }; + 057D7414702F46FC7B087EDC /* SDL_x11modes.c in Sources */ = {isa = PBXBuildFile; fileRef = 448A72B44504304B144C3E13 /* SDL_x11modes.c */; }; + 4DE24CFB2C5D19C9769A7FB9 /* SDL_x11mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 54687D293BC66D0A5C631CD2 /* SDL_x11mouse.c */; }; + 448B41931F8356286212178E /* SDL_x11opengl.c in Sources */ = {isa = PBXBuildFile; fileRef = 72DF3CFC4E8B09C256A46840 /* SDL_x11opengl.c */; }; + 5C724339694D58067B6016D3 /* SDL_x11opengles.c in Sources */ = {isa = PBXBuildFile; fileRef = 76560AEB0562134E7A7E6B36 /* SDL_x11opengles.c */; }; + 0F906C3D26303BD807A6588E /* SDL_x11shape.c in Sources */ = {isa = PBXBuildFile; fileRef = 077269AF6E2A464C6904277D /* SDL_x11shape.c */; }; + 6A5106E473582923650744EE /* SDL_x11touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 652626396914587E520F7C8C /* SDL_x11touch.c */; }; + 11152B937B1F6F19699B764D /* SDL_x11video.c in Sources */ = {isa = PBXBuildFile; fileRef = 668E75F870AC40425B0D639F /* SDL_x11video.c */; }; + 1CFD4BF822A240336A086B93 /* SDL_x11window.c in Sources */ = {isa = PBXBuildFile; fileRef = 7FB6418B385644032BC404E9 /* SDL_x11window.c */; }; + 640C07407CC856FB1B373B79 /* SDL_x11xinput2.c in Sources */ = {isa = PBXBuildFile; fileRef = 085A68FD7A9151CF2E095ECB /* SDL_x11xinput2.c */; }; + 23120B9A3B8079C517555340 /* edid-parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 11F5212A6B0F3DF7559B6BE3 /* edid-parse.c */; }; + 6B5A02020724656F6C16507F /* imKStoUCS.c in Sources */ = {isa = PBXBuildFile; fileRef = 5A492D32559D49902FB05F45 /* imKStoUCS.c */; }; + 6BB96439701E5363094C5DD5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16087FC97B0458F07F343E84 /* AudioToolbox.framework */; }; + 63DC268722B13B3312A72478 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 517D7ABB382B14B10EEF73BE /* AudioUnit.framework */; }; + 116D397753E162E06F2A4550 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCD682F04A36BC83BCC7159 /* Cocoa.framework */; }; + 673D5F7B1D0E077948DA7126 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E21418B420C32A255982342 /* CoreAudio.framework */; }; + 6C2B372D02D23CB0511D7889 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7735724A00183AF616F6186E /* IOKit.framework */; }; + 236B622A48961F397FF06EF7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12566C6F031E562D44A61FA5 /* Carbon.framework */; }; + 49957BE83EA63CF059A30F9C /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F7A40AB2F484EA966CD5A46 /* ForceFeedback.framework */; }; + 1B8B600655202E66597A6A1E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01151A0B6D9422C20F99251B /* CoreFoundation.framework */; }; + 35A63C9C2D0E087E232429CF /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 711A00A97A0E506D5F82591B /* OpenGL.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 581F727C2E205CC67F140529 /* SDL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL.c"; path = "../../../../src/SDL.c"; sourceTree = ""; }; + 20A12A2435417EEB1A001847 /* SDL_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_assert.c"; path = "../../../../src/SDL_assert.c"; sourceTree = ""; }; + 3DBA229B02BC326E66521EC6 /* SDL_assert_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_assert_c.h"; path = "../../../../src/SDL_assert_c.h"; sourceTree = ""; }; + 7C4669E76F5E4522717C37DD /* SDL_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_error.c"; path = "../../../../src/SDL_error.c"; sourceTree = ""; }; + 300D65535AAF1A8F2739388E /* SDL_error_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_error_c.h"; path = "../../../../src/SDL_error_c.h"; sourceTree = ""; }; + 1D2E68ED4D66639038F63099 /* SDL_hints.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_hints.c"; path = "../../../../src/SDL_hints.c"; sourceTree = ""; }; + 4EAE1E8A03AF0D8C0BC74C60 /* SDL_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_log.c"; path = "../../../../src/SDL_log.c"; sourceTree = ""; }; + 741E10D47F9F35F77FC23C71 /* SDL_atomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_atomic.c"; path = "../../../../src/atomic/SDL_atomic.c"; sourceTree = ""; }; + 545D521E33195938012A701C /* SDL_spinlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_spinlock.c"; path = "../../../../src/atomic/SDL_spinlock.c"; sourceTree = ""; }; + 009822131E4843700095766C /* SDL_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audio.c"; path = "../../../../src/audio/SDL_audio.c"; sourceTree = ""; }; + 7C8304171E6648543F9779B6 /* SDL_audio_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audio_c.h"; path = "../../../../src/audio/SDL_audio_c.h"; sourceTree = ""; }; + 2BA37BD372FE166821D80A1E /* SDL_audiocvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiocvt.c"; path = "../../../../src/audio/SDL_audiocvt.c"; sourceTree = ""; }; + 5D2936CF698D392735D76E9E /* SDL_audiodev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiodev.c"; path = "../../../../src/audio/SDL_audiodev.c"; sourceTree = ""; }; + 1F255A29771744AC1DFE48A0 /* SDL_audiodev_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audiodev_c.h"; path = "../../../../src/audio/SDL_audiodev_c.h"; sourceTree = ""; }; + 14AA3D784A5D4B873D657338 /* SDL_audiomem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audiomem.h"; path = "../../../../src/audio/SDL_audiomem.h"; sourceTree = ""; }; + 76263CFA4F4A3E8E74966406 /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiotypecvt.c"; path = "../../../../src/audio/SDL_audiotypecvt.c"; sourceTree = ""; }; + 748562A8151756FF3FE91679 /* SDL_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_mixer.c"; path = "../../../../src/audio/SDL_mixer.c"; sourceTree = ""; }; + 7B696A2B3C9847A40FD30FA2 /* SDL_sysaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysaudio.h"; path = "../../../../src/audio/SDL_sysaudio.h"; sourceTree = ""; }; + 58E6725272291A8B48974EC3 /* SDL_wave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_wave.c"; path = "../../../../src/audio/SDL_wave.c"; sourceTree = ""; }; + 00EA32A02E3338A774D7623F /* SDL_wave.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_wave.h"; path = "../../../../src/audio/SDL_wave.h"; sourceTree = ""; }; + 17F2408C59BB1CE53ACB077B /* SDL_coreaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_coreaudio.c"; path = "../../../../src/audio/coreaudio/SDL_coreaudio.c"; sourceTree = ""; }; + 4EE3552C72927CDA048947F7 /* SDL_coreaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_coreaudio.h"; path = "../../../../src/audio/coreaudio/SDL_coreaudio.h"; sourceTree = ""; }; + 694A007643FB227E1C011EE8 /* SDL_diskaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_diskaudio.c"; path = "../../../../src/audio/disk/SDL_diskaudio.c"; sourceTree = ""; }; + 29C54C2B479130B15A262000 /* SDL_diskaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_diskaudio.h"; path = "../../../../src/audio/disk/SDL_diskaudio.h"; sourceTree = ""; }; + 183031E40F3E3665462E31AC /* SDL_dummyaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dummyaudio.c"; path = "../../../../src/audio/dummy/SDL_dummyaudio.c"; sourceTree = ""; }; + 06A572223CF8475871EE7D5C /* SDL_dummyaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_dummyaudio.h"; path = "../../../../src/audio/dummy/SDL_dummyaudio.h"; sourceTree = ""; }; + 399D7F372AA42CDF004A30CB /* SDL_cpuinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_cpuinfo.c"; path = "../../../../src/cpuinfo/SDL_cpuinfo.c"; sourceTree = ""; }; + 5EEA55BC35E77DD14C8B6DEA /* SDL_clipboardevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_clipboardevents.c"; path = "../../../../src/events/SDL_clipboardevents.c"; sourceTree = ""; }; + 130E0CF138CF24996422240B /* SDL_clipboardevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_clipboardevents_c.h"; path = "../../../../src/events/SDL_clipboardevents_c.h"; sourceTree = ""; }; + 64680D041F9E679917CF3CB8 /* SDL_dropevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dropevents.c"; path = "../../../../src/events/SDL_dropevents.c"; sourceTree = ""; }; + 688C5D160E4C409930EB1C46 /* SDL_dropevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_dropevents_c.h"; path = "../../../../src/events/SDL_dropevents_c.h"; sourceTree = ""; }; + 67B9300749251C797177656C /* SDL_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_events.c"; path = "../../../../src/events/SDL_events.c"; sourceTree = ""; }; + 576820C320D25B890F7E4EE7 /* SDL_events_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_events_c.h"; path = "../../../../src/events/SDL_events_c.h"; sourceTree = ""; }; + 2427171D0D16540755560B01 /* SDL_gesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_gesture.c"; path = "../../../../src/events/SDL_gesture.c"; sourceTree = ""; }; + 353545A10ADB514C610609C6 /* SDL_gesture_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gesture_c.h"; path = "../../../../src/events/SDL_gesture_c.h"; sourceTree = ""; }; + 4A4523A15D1D31E40DBA55EF /* SDL_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_keyboard.c"; path = "../../../../src/events/SDL_keyboard.c"; sourceTree = ""; }; + 74B612214A4706DA719F28D2 /* SDL_keyboard_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_keyboard_c.h"; path = "../../../../src/events/SDL_keyboard_c.h"; sourceTree = ""; }; + 0E064D1B5215736C4B0C0F8B /* SDL_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_mouse.c"; path = "../../../../src/events/SDL_mouse.c"; sourceTree = ""; }; + 058B27A349C800B503ED6669 /* SDL_mouse_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_mouse_c.h"; path = "../../../../src/events/SDL_mouse_c.h"; sourceTree = ""; }; + 7EAB2812398D5FDE1566622B /* SDL_quit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_quit.c"; path = "../../../../src/events/SDL_quit.c"; sourceTree = ""; }; + 13A403E279690000102705FE /* SDL_sysevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysevents.h"; path = "../../../../src/events/SDL_sysevents.h"; sourceTree = ""; }; + 11625DDF6F935BC24C1658C6 /* SDL_touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_touch.c"; path = "../../../../src/events/SDL_touch.c"; sourceTree = ""; }; + 08D035322454110E49E76A60 /* SDL_touch_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_touch_c.h"; path = "../../../../src/events/SDL_touch_c.h"; sourceTree = ""; }; + 7B0D1AE01FCA24EC38765CFF /* SDL_windowevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_windowevents.c"; path = "../../../../src/events/SDL_windowevents.c"; sourceTree = ""; }; + 06FA2EC12902637126010F3E /* SDL_windowevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_windowevents_c.h"; path = "../../../../src/events/SDL_windowevents_c.h"; sourceTree = ""; }; + 3D290B0440424FCA73116E71 /* blank_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "blank_cursor.h"; path = "../../../../src/events/blank_cursor.h"; sourceTree = ""; }; + 5E5607A90E0E7383395F1124 /* default_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "default_cursor.h"; path = "../../../../src/events/default_cursor.h"; sourceTree = ""; }; + 5D38365C0E6E6FB712EA76DC /* scancodes_darwin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_darwin.h"; path = "../../../../src/events/scancodes_darwin.h"; sourceTree = ""; }; + 0BE05A937D854CC543FB3741 /* scancodes_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_linux.h"; path = "../../../../src/events/scancodes_linux.h"; sourceTree = ""; }; + 1A9C33FD4D512FE04A4308B1 /* scancodes_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_windows.h"; path = "../../../../src/events/scancodes_windows.h"; sourceTree = ""; }; + 59691A177371256478D52733 /* scancodes_xfree86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_xfree86.h"; path = "../../../../src/events/scancodes_xfree86.h"; sourceTree = ""; }; + 46E842226EEF2BBD3E14319D /* SDL_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rwops.c"; path = "../../../../src/file/SDL_rwops.c"; sourceTree = ""; }; + 5ED91E7C0367157226554461 /* SDL_rwopsbundlesupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rwopsbundlesupport.h"; path = "../../../../src/file/cocoa/SDL_rwopsbundlesupport.h"; sourceTree = ""; }; + 5E087787656B7EF200787EF7 /* SDL_rwopsbundlesupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_rwopsbundlesupport.m"; path = "../../../../src/file/cocoa/SDL_rwopsbundlesupport.m"; sourceTree = ""; }; + 7927299A5CBA392013905A95 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_sysfilesystem.m"; path = "../../../../src/filesystem/cocoa/SDL_sysfilesystem.m"; sourceTree = ""; }; + 6C027EE044E726073F02545E /* SDL_haptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_haptic.c"; path = "../../../../src/haptic/SDL_haptic.c"; sourceTree = ""; }; + 6CA146A939633B3D587234B0 /* SDL_haptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_haptic_c.h"; path = "../../../../src/haptic/SDL_haptic_c.h"; sourceTree = ""; }; + 465F3E1A22A90B691CB6261A /* SDL_syshaptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_syshaptic.h"; path = "../../../../src/haptic/SDL_syshaptic.h"; sourceTree = ""; }; + 466551BC2C236A3C09D52B8C /* SDL_syshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syshaptic.c"; path = "../../../../src/haptic/darwin/SDL_syshaptic.c"; sourceTree = ""; }; + 7D0C59A3666A74AD19C81F68 /* SDL_gamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_gamecontroller.c"; path = "../../../../src/joystick/SDL_gamecontroller.c"; sourceTree = ""; }; + 7EBA21266FA01ACA47254FA4 /* SDL_gamecontrollerdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gamecontrollerdb.h"; path = "../../../../src/joystick/SDL_gamecontrollerdb.h"; sourceTree = ""; }; + 4FCA1736705A5DC74EC17138 /* SDL_joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_joystick.c"; path = "../../../../src/joystick/SDL_joystick.c"; sourceTree = ""; }; + 77AB1AAE2997056268FF5C5C /* SDL_joystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_joystick_c.h"; path = "../../../../src/joystick/SDL_joystick_c.h"; sourceTree = ""; }; + 2DD4468E154E427A6D1B3C33 /* SDL_sysjoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysjoystick.h"; path = "../../../../src/joystick/SDL_sysjoystick.h"; sourceTree = ""; }; + 79981D6D163C5F2060C66FA5 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysjoystick.c"; path = "../../../../src/joystick/darwin/SDL_sysjoystick.c"; sourceTree = ""; }; + 5E8A65BF1C1807EF6C8522A1 /* SDL_sysjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysjoystick_c.h"; path = "../../../../src/joystick/darwin/SDL_sysjoystick_c.h"; sourceTree = ""; }; + 31CD0B3A1CC508507B0E69C7 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysloadso.c"; path = "../../../../src/loadso/dlopen/SDL_sysloadso.c"; sourceTree = ""; }; + 1C2235273DF86C1B64BC738C /* SDL_power.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_power.c"; path = "../../../../src/power/SDL_power.c"; sourceTree = ""; }; + 6A4855D539F85E716904291D /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syspower.c"; path = "../../../../src/power/macosx/SDL_syspower.c"; sourceTree = ""; }; + 550435DE0C8635D76B737308 /* SDL_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render.c"; path = "../../../../src/render/SDL_render.c"; sourceTree = ""; }; + 0B803F96427D29011CAC67A9 /* SDL_sysrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysrender.h"; path = "../../../../src/render/SDL_sysrender.h"; sourceTree = ""; }; + 30C711D35F4E10AE14064022 /* SDL_yuv_mmx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_yuv_mmx.c"; path = "../../../../src/render/SDL_yuv_mmx.c"; sourceTree = ""; }; + 2B19077009C9231E3CB109F9 /* SDL_yuv_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_yuv_sw.c"; path = "../../../../src/render/SDL_yuv_sw.c"; sourceTree = ""; }; + 49360D2910D87F4C61260CC1 /* SDL_yuv_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_yuv_sw_c.h"; path = "../../../../src/render/SDL_yuv_sw_c.h"; sourceTree = ""; }; + 09C048B2597C65C2452F29A1 /* mmx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mmx.h"; path = "../../../../src/render/mmx.h"; sourceTree = ""; }; + 02615473574C5DA45F8119C2 /* SDL_glfuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_glfuncs.h"; path = "../../../../src/render/opengl/SDL_glfuncs.h"; sourceTree = ""; }; + 2E98213F58C83B7679EA2EE0 /* SDL_render_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_gl.c"; path = "../../../../src/render/opengl/SDL_render_gl.c"; sourceTree = ""; }; + 74E6545673FD059731C53CB0 /* SDL_shaders_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_shaders_gl.c"; path = "../../../../src/render/opengl/SDL_shaders_gl.c"; sourceTree = ""; }; + 7E5F355E58573DA27BC14C1C /* SDL_shaders_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_shaders_gl.h"; path = "../../../../src/render/opengl/SDL_shaders_gl.h"; sourceTree = ""; }; + 139751A76375191B64F53E7D /* SDL_blendfillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendfillrect.c"; path = "../../../../src/render/software/SDL_blendfillrect.c"; sourceTree = ""; }; + 64FD5AD01DA8269C6D04363A /* SDL_blendfillrect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendfillrect.h"; path = "../../../../src/render/software/SDL_blendfillrect.h"; sourceTree = ""; }; + 2E0B793E01E363125E115555 /* SDL_blendline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendline.c"; path = "../../../../src/render/software/SDL_blendline.c"; sourceTree = ""; }; + 70F6353E33186EFC79F57A18 /* SDL_blendline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendline.h"; path = "../../../../src/render/software/SDL_blendline.h"; sourceTree = ""; }; + 47A60CF070301F215AA31899 /* SDL_blendpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendpoint.c"; path = "../../../../src/render/software/SDL_blendpoint.c"; sourceTree = ""; }; + 357F47816FF76A56538A1A90 /* SDL_blendpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendpoint.h"; path = "../../../../src/render/software/SDL_blendpoint.h"; sourceTree = ""; }; + 6F3E58C258E816C01EE5607B /* SDL_draw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_draw.h"; path = "../../../../src/render/software/SDL_draw.h"; sourceTree = ""; }; + 3DC17B6963CD575538C46E2B /* SDL_drawline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_drawline.c"; path = "../../../../src/render/software/SDL_drawline.c"; sourceTree = ""; }; + 6BEC714C75AA234067F04A6F /* SDL_drawline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_drawline.h"; path = "../../../../src/render/software/SDL_drawline.h"; sourceTree = ""; }; + 57200BE31613529B5E4D145A /* SDL_drawpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_drawpoint.c"; path = "../../../../src/render/software/SDL_drawpoint.c"; sourceTree = ""; }; + 3140693929B158EB4CBA6F56 /* SDL_drawpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_drawpoint.h"; path = "../../../../src/render/software/SDL_drawpoint.h"; sourceTree = ""; }; + 7F4003F22A2B03CC4F3E2570 /* SDL_render_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_sw.c"; path = "../../../../src/render/software/SDL_render_sw.c"; sourceTree = ""; }; + 13DE07DE194D2BA503B10D81 /* SDL_render_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_render_sw_c.h"; path = "../../../../src/render/software/SDL_render_sw_c.h"; sourceTree = ""; }; + 34F408411DF145AD78114160 /* SDL_rotate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rotate.c"; path = "../../../../src/render/software/SDL_rotate.c"; sourceTree = ""; }; + 2BAA4C9A41A6056A24A70D24 /* SDL_rotate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rotate.h"; path = "../../../../src/render/software/SDL_rotate.h"; sourceTree = ""; }; + 467E7A495D341EA43CA77D04 /* SDL_getenv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_getenv.c"; path = "../../../../src/stdlib/SDL_getenv.c"; sourceTree = ""; }; + 7420083415F10DBF1A6E4645 /* SDL_iconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_iconv.c"; path = "../../../../src/stdlib/SDL_iconv.c"; sourceTree = ""; }; + 6AAD26CD05F31E954E925A93 /* SDL_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_malloc.c"; path = "../../../../src/stdlib/SDL_malloc.c"; sourceTree = ""; }; + 1A637631359161D6452A680F /* SDL_qsort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_qsort.c"; path = "../../../../src/stdlib/SDL_qsort.c"; sourceTree = ""; }; + 0B1A13D3324F661B06A354E4 /* SDL_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_stdlib.c"; path = "../../../../src/stdlib/SDL_stdlib.c"; sourceTree = ""; }; + 76AA2E0B0F173AC9212F4258 /* SDL_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_string.c"; path = "../../../../src/stdlib/SDL_string.c"; sourceTree = ""; }; + 5AAF37911F8240A92E0F1490 /* SDL_systhread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_systhread.h"; path = "../../../../src/thread/SDL_systhread.h"; sourceTree = ""; }; + 00BF063F2A516202081956FF /* SDL_thread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_thread.c"; path = "../../../../src/thread/SDL_thread.c"; sourceTree = ""; }; + 78FB562052435E795D701744 /* SDL_thread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_thread_c.h"; path = "../../../../src/thread/SDL_thread_c.h"; sourceTree = ""; }; + 75A15D1D350165C72B266D64 /* SDL_syscond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syscond.c"; path = "../../../../src/thread/pthread/SDL_syscond.c"; sourceTree = ""; }; + 575F34176E7226D0364C71AC /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysmutex.c"; path = "../../../../src/thread/pthread/SDL_sysmutex.c"; sourceTree = ""; }; + 0CC42FB1128B78AA72B36280 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysmutex_c.h"; path = "../../../../src/thread/pthread/SDL_sysmutex_c.h"; sourceTree = ""; }; + 68EA167A2FA9170A1EEA3B1D /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syssem.c"; path = "../../../../src/thread/pthread/SDL_syssem.c"; sourceTree = ""; }; + 2F031FEF2BCC1434771A7E86 /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systhread.c"; path = "../../../../src/thread/pthread/SDL_systhread.c"; sourceTree = ""; }; + 3FD000ED7A01775526CA5618 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_systhread_c.h"; path = "../../../../src/thread/pthread/SDL_systhread_c.h"; sourceTree = ""; }; + 6A8F127A2C4E6F364C1526F0 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systls.c"; path = "../../../../src/thread/pthread/SDL_systls.c"; sourceTree = ""; }; + 08B34CDF5C9079763C624849 /* SDL_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_timer.c"; path = "../../../../src/timer/SDL_timer.c"; sourceTree = ""; }; + 336A25DF147652083BCD3D3C /* SDL_timer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_timer_c.h"; path = "../../../../src/timer/SDL_timer_c.h"; sourceTree = ""; }; + 6A01774C1EED1B2144AE1CB5 /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systimer.c"; path = "../../../../src/timer/unix/SDL_systimer.c"; sourceTree = ""; }; + 676211D87FE20B7150213164 /* SDL_RLEaccel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_RLEaccel.c"; path = "../../../../src/video/SDL_RLEaccel.c"; sourceTree = ""; }; + 32C66811376436BE0E942436 /* SDL_RLEaccel_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_RLEaccel_c.h"; path = "../../../../src/video/SDL_RLEaccel_c.h"; sourceTree = ""; }; + 7B5F52584ED13C49741749BD /* SDL_blit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit.c"; path = "../../../../src/video/SDL_blit.c"; sourceTree = ""; }; + 4C266BB0748836070E5430AB /* SDL_blit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit.h"; path = "../../../../src/video/SDL_blit.h"; sourceTree = ""; }; + 6BD9773F57DE397A34542B86 /* SDL_blit_0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_0.c"; path = "../../../../src/video/SDL_blit_0.c"; sourceTree = ""; }; + 5F717A917D9207E82B1709FD /* SDL_blit_1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_1.c"; path = "../../../../src/video/SDL_blit_1.c"; sourceTree = ""; }; + 4A7C2E9C357B39870C9C7CBB /* SDL_blit_A.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_A.c"; path = "../../../../src/video/SDL_blit_A.c"; sourceTree = ""; }; + 16F56E412F037AA6626704FC /* SDL_blit_N.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_N.c"; path = "../../../../src/video/SDL_blit_N.c"; sourceTree = ""; }; + 12AD22506E1411CA1FCA193D /* SDL_blit_auto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_auto.c"; path = "../../../../src/video/SDL_blit_auto.c"; sourceTree = ""; }; + 24D062C176AE370B678D5E1A /* SDL_blit_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_auto.h"; path = "../../../../src/video/SDL_blit_auto.h"; sourceTree = ""; }; + 7D4437C37F683A8A58F55923 /* SDL_blit_copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_copy.c"; path = "../../../../src/video/SDL_blit_copy.c"; sourceTree = ""; }; + 260722C00E09302702FA08F5 /* SDL_blit_copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_copy.h"; path = "../../../../src/video/SDL_blit_copy.h"; sourceTree = ""; }; + 2C3813742F9649C6666B1E7E /* SDL_blit_slow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_slow.c"; path = "../../../../src/video/SDL_blit_slow.c"; sourceTree = ""; }; + 772B39E25F5C46CF744B6DC7 /* SDL_blit_slow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_slow.h"; path = "../../../../src/video/SDL_blit_slow.h"; sourceTree = ""; }; + 626030677A9E27FC1E8935A1 /* SDL_bmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_bmp.c"; path = "../../../../src/video/SDL_bmp.c"; sourceTree = ""; }; + 5C4629AC64180D01435D314B /* SDL_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_clipboard.c"; path = "../../../../src/video/SDL_clipboard.c"; sourceTree = ""; }; + 1AA429B9420C620D5F982BCC /* SDL_egl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_egl.c"; path = "../../../../src/video/SDL_egl.c"; sourceTree = ""; }; + 6005192E4497458D4A615860 /* SDL_egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_egl.h"; path = "../../../../src/video/SDL_egl.h"; sourceTree = ""; }; + 127978F1333C57F33D196715 /* SDL_fillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_fillrect.c"; path = "../../../../src/video/SDL_fillrect.c"; sourceTree = ""; }; + 1C8921DA02C03ADB0F4646F8 /* SDL_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_pixels.c"; path = "../../../../src/video/SDL_pixels.c"; sourceTree = ""; }; + 133907A045651496256139AF /* SDL_pixels_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_pixels_c.h"; path = "../../../../src/video/SDL_pixels_c.h"; sourceTree = ""; }; + 39842F4E596B39E8643764C3 /* SDL_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rect.c"; path = "../../../../src/video/SDL_rect.c"; sourceTree = ""; }; + 530646B0528B495D2A062BFD /* SDL_rect_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rect_c.h"; path = "../../../../src/video/SDL_rect_c.h"; sourceTree = ""; }; + 1A481A30600E3DFE77A26D0A /* SDL_shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_shape.c"; path = "../../../../src/video/SDL_shape.c"; sourceTree = ""; }; + 61CD6881175C22CC253B4D8E /* SDL_shape_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_shape_internals.h"; path = "../../../../src/video/SDL_shape_internals.h"; sourceTree = ""; }; + 467C2DC84A7B76C05E9E120F /* SDL_stretch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_stretch.c"; path = "../../../../src/video/SDL_stretch.c"; sourceTree = ""; }; + 518E5DE30064338C4BC17126 /* SDL_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_surface.c"; path = "../../../../src/video/SDL_surface.c"; sourceTree = ""; }; + 184509C109CB13FB64680AD8 /* SDL_sysvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysvideo.h"; path = "../../../../src/video/SDL_sysvideo.h"; sourceTree = ""; }; + 095B54196A9037AE32C14507 /* SDL_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_video.c"; path = "../../../../src/video/SDL_video.c"; sourceTree = ""; }; + 54280E727B4A720C0E194582 /* SDL_cocoaclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoaclipboard.h"; path = "../../../../src/video/cocoa/SDL_cocoaclipboard.h"; sourceTree = ""; }; + 6B1A7D591BBF260340365717 /* SDL_cocoaclipboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoaclipboard.m"; path = "../../../../src/video/cocoa/SDL_cocoaclipboard.m"; sourceTree = ""; }; + 1A270B314E6440B967AF1587 /* SDL_cocoaevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoaevents.h"; path = "../../../../src/video/cocoa/SDL_cocoaevents.h"; sourceTree = ""; }; + 6CD471DB63ED0C072F712786 /* SDL_cocoaevents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoaevents.m"; path = "../../../../src/video/cocoa/SDL_cocoaevents.m"; sourceTree = ""; }; + 5EB34F5F7E84410D43390A37 /* SDL_cocoakeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoakeyboard.h"; path = "../../../../src/video/cocoa/SDL_cocoakeyboard.h"; sourceTree = ""; }; + 4FF971A805D912AE7C3511F7 /* SDL_cocoakeyboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoakeyboard.m"; path = "../../../../src/video/cocoa/SDL_cocoakeyboard.m"; sourceTree = ""; }; + 3E163466557909D8647817DB /* SDL_cocoamessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamessagebox.h"; path = "../../../../src/video/cocoa/SDL_cocoamessagebox.h"; sourceTree = ""; }; + 59FA32BE7DCE61473C727995 /* SDL_cocoamessagebox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamessagebox.m"; path = "../../../../src/video/cocoa/SDL_cocoamessagebox.m"; sourceTree = ""; }; + 2C045FBC31E41DC90B983693 /* SDL_cocoamodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamodes.h"; path = "../../../../src/video/cocoa/SDL_cocoamodes.h"; sourceTree = ""; }; + 090C140773EF64C55AB32D4D /* SDL_cocoamodes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamodes.m"; path = "../../../../src/video/cocoa/SDL_cocoamodes.m"; sourceTree = ""; }; + 15593F5425E22D8A44911FF5 /* SDL_cocoamouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamouse.h"; path = "../../../../src/video/cocoa/SDL_cocoamouse.h"; sourceTree = ""; }; + 36ED1B4309137DF626BA1304 /* SDL_cocoamouse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamouse.m"; path = "../../../../src/video/cocoa/SDL_cocoamouse.m"; sourceTree = ""; }; + 0F950D9601F85D8A22A44228 /* SDL_cocoamousetap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamousetap.h"; path = "../../../../src/video/cocoa/SDL_cocoamousetap.h"; sourceTree = ""; }; + 6A5F20432ADC009E19FA2C1E /* SDL_cocoamousetap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamousetap.m"; path = "../../../../src/video/cocoa/SDL_cocoamousetap.m"; sourceTree = ""; }; + 25DE143C196C205B51980555 /* SDL_cocoaopengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoaopengl.h"; path = "../../../../src/video/cocoa/SDL_cocoaopengl.h"; sourceTree = ""; }; + 3A4F55752FF300143C835B3B /* SDL_cocoaopengl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoaopengl.m"; path = "../../../../src/video/cocoa/SDL_cocoaopengl.m"; sourceTree = ""; }; + 2ABD0A8B59FA64842735209E /* SDL_cocoashape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoashape.h"; path = "../../../../src/video/cocoa/SDL_cocoashape.h"; sourceTree = ""; }; + 05CF7A893F4C1E2406AA11AA /* SDL_cocoashape.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoashape.m"; path = "../../../../src/video/cocoa/SDL_cocoashape.m"; sourceTree = ""; }; + 5B8467FB461063CC729E1488 /* SDL_cocoavideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoavideo.h"; path = "../../../../src/video/cocoa/SDL_cocoavideo.h"; sourceTree = ""; }; + 297A08E31208586E5A9E4EB3 /* SDL_cocoavideo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoavideo.m"; path = "../../../../src/video/cocoa/SDL_cocoavideo.m"; sourceTree = ""; }; + 619C5EFB358E1D2248E557BF /* SDL_cocoawindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoawindow.h"; path = "../../../../src/video/cocoa/SDL_cocoawindow.h"; sourceTree = ""; }; + 650003A700A8250D0F784E5A /* SDL_cocoawindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoawindow.m"; path = "../../../../src/video/cocoa/SDL_cocoawindow.m"; sourceTree = ""; }; + 2DD03852185F1A5357D16C0E /* SDL_nullevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullevents.c"; path = "../../../../src/video/dummy/SDL_nullevents.c"; sourceTree = ""; }; + 64AC1624164719933D7D7C2D /* SDL_nullevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullevents_c.h"; path = "../../../../src/video/dummy/SDL_nullevents_c.h"; sourceTree = ""; }; + 7FE32E2D489C1F5676D070F3 /* SDL_nullframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullframebuffer.c"; path = "../../../../src/video/dummy/SDL_nullframebuffer.c"; sourceTree = ""; }; + 568828F86F02017D64E909DD /* SDL_nullframebuffer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullframebuffer_c.h"; path = "../../../../src/video/dummy/SDL_nullframebuffer_c.h"; sourceTree = ""; }; + 4576033B4C1F3E0D521D1842 /* SDL_nullvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullvideo.c"; path = "../../../../src/video/dummy/SDL_nullvideo.c"; sourceTree = ""; }; + 7F1D717B488B567150456ADD /* SDL_nullvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullvideo.h"; path = "../../../../src/video/dummy/SDL_nullvideo.h"; sourceTree = ""; }; + 58465C34749040C207292140 /* SDL_x11clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11clipboard.c"; path = "../../../../src/video/x11/SDL_x11clipboard.c"; sourceTree = ""; }; + 60AA6D98240C1E16753F1F78 /* SDL_x11clipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11clipboard.h"; path = "../../../../src/video/x11/SDL_x11clipboard.h"; sourceTree = ""; }; + 36703205767270E5711876F8 /* SDL_x11dyn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11dyn.c"; path = "../../../../src/video/x11/SDL_x11dyn.c"; sourceTree = ""; }; + 0E5A3F0C3CC540030ACE7F88 /* SDL_x11dyn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11dyn.h"; path = "../../../../src/video/x11/SDL_x11dyn.h"; sourceTree = ""; }; + 7448494A32995EB4084F3B7D /* SDL_x11events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11events.c"; path = "../../../../src/video/x11/SDL_x11events.c"; sourceTree = ""; }; + 56517D6D01E97D41451D059D /* SDL_x11events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11events.h"; path = "../../../../src/video/x11/SDL_x11events.h"; sourceTree = ""; }; + 3EF375972CA805682F8F74F4 /* SDL_x11framebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11framebuffer.c"; path = "../../../../src/video/x11/SDL_x11framebuffer.c"; sourceTree = ""; }; + 79E9493B77FA59684C5974B7 /* SDL_x11framebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11framebuffer.h"; path = "../../../../src/video/x11/SDL_x11framebuffer.h"; sourceTree = ""; }; + 4543334473D06CAE254F00B1 /* SDL_x11keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11keyboard.c"; path = "../../../../src/video/x11/SDL_x11keyboard.c"; sourceTree = ""; }; + 39CC0CFD6B7A19ED26007BB4 /* SDL_x11keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11keyboard.h"; path = "../../../../src/video/x11/SDL_x11keyboard.h"; sourceTree = ""; }; + 1D2B22B2741D4C6060E23309 /* SDL_x11messagebox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11messagebox.c"; path = "../../../../src/video/x11/SDL_x11messagebox.c"; sourceTree = ""; }; + 4062686F73250F0A0246473E /* SDL_x11messagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11messagebox.h"; path = "../../../../src/video/x11/SDL_x11messagebox.h"; sourceTree = ""; }; + 448A72B44504304B144C3E13 /* SDL_x11modes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11modes.c"; path = "../../../../src/video/x11/SDL_x11modes.c"; sourceTree = ""; }; + 27FB6C3B1FDD1C925C2D4B61 /* SDL_x11modes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11modes.h"; path = "../../../../src/video/x11/SDL_x11modes.h"; sourceTree = ""; }; + 54687D293BC66D0A5C631CD2 /* SDL_x11mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11mouse.c"; path = "../../../../src/video/x11/SDL_x11mouse.c"; sourceTree = ""; }; + 5CCE0B2D44471331046106E6 /* SDL_x11mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11mouse.h"; path = "../../../../src/video/x11/SDL_x11mouse.h"; sourceTree = ""; }; + 72DF3CFC4E8B09C256A46840 /* SDL_x11opengl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11opengl.c"; path = "../../../../src/video/x11/SDL_x11opengl.c"; sourceTree = ""; }; + 217F515544D919DC3B542BDB /* SDL_x11opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11opengl.h"; path = "../../../../src/video/x11/SDL_x11opengl.h"; sourceTree = ""; }; + 76560AEB0562134E7A7E6B36 /* SDL_x11opengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11opengles.c"; path = "../../../../src/video/x11/SDL_x11opengles.c"; sourceTree = ""; }; + 01A4506F329C34E9544E65C9 /* SDL_x11opengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11opengles.h"; path = "../../../../src/video/x11/SDL_x11opengles.h"; sourceTree = ""; }; + 077269AF6E2A464C6904277D /* SDL_x11shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11shape.c"; path = "../../../../src/video/x11/SDL_x11shape.c"; sourceTree = ""; }; + 60910F6738E036B6171642D5 /* SDL_x11shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11shape.h"; path = "../../../../src/video/x11/SDL_x11shape.h"; sourceTree = ""; }; + 3E0545D92AE266C52A3A6C93 /* SDL_x11sym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11sym.h"; path = "../../../../src/video/x11/SDL_x11sym.h"; sourceTree = ""; }; + 652626396914587E520F7C8C /* SDL_x11touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11touch.c"; path = "../../../../src/video/x11/SDL_x11touch.c"; sourceTree = ""; }; + 6796539A4EAF7FA5634E3B4F /* SDL_x11touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11touch.h"; path = "../../../../src/video/x11/SDL_x11touch.h"; sourceTree = ""; }; + 668E75F870AC40425B0D639F /* SDL_x11video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11video.c"; path = "../../../../src/video/x11/SDL_x11video.c"; sourceTree = ""; }; + 3B503D8111BC749C35456BC7 /* SDL_x11video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11video.h"; path = "../../../../src/video/x11/SDL_x11video.h"; sourceTree = ""; }; + 7FB6418B385644032BC404E9 /* SDL_x11window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11window.c"; path = "../../../../src/video/x11/SDL_x11window.c"; sourceTree = ""; }; + 03BC5ACE246D31A203BD2B15 /* SDL_x11window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11window.h"; path = "../../../../src/video/x11/SDL_x11window.h"; sourceTree = ""; }; + 085A68FD7A9151CF2E095ECB /* SDL_x11xinput2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11xinput2.c"; path = "../../../../src/video/x11/SDL_x11xinput2.c"; sourceTree = ""; }; + 349969F15E6A02A1270D6BA0 /* SDL_x11xinput2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11xinput2.h"; path = "../../../../src/video/x11/SDL_x11xinput2.h"; sourceTree = ""; }; + 11F5212A6B0F3DF7559B6BE3 /* edid-parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "edid-parse.c"; path = "../../../../src/video/x11/edid-parse.c"; sourceTree = ""; }; + 1A364F9D6023493E20920E8B /* edid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "edid.h"; path = "../../../../src/video/x11/edid.h"; sourceTree = ""; }; + 5A492D32559D49902FB05F45 /* imKStoUCS.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "imKStoUCS.c"; path = "../../../../src/video/x11/imKStoUCS.c"; sourceTree = ""; }; + 71206CFD70915771458F467A /* imKStoUCS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "imKStoUCS.h"; path = "../../../../src/video/x11/imKStoUCS.h"; sourceTree = ""; }; + 16087FC97B0458F07F343E84 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 517D7ABB382B14B10EEF73BE /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 5DCD682F04A36BC83BCC7159 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0E21418B420C32A255982342 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 7735724A00183AF616F6186E /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 12566C6F031E562D44A61FA5 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 1F7A40AB2F484EA966CD5A46 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 01151A0B6D9422C20F99251B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 711A00A97A0E506D5F82591B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 07D004B11E733F1F0EA93105 /* libSDL2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2.a"; path = "libSDL2.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6D2F46F31435311A2F32250F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6BB96439701E5363094C5DD5 /* AudioToolbox.framework in Frameworks */, + 63DC268722B13B3312A72478 /* AudioUnit.framework in Frameworks */, + 116D397753E162E06F2A4550 /* Cocoa.framework in Frameworks */, + 673D5F7B1D0E077948DA7126 /* CoreAudio.framework in Frameworks */, + 6C2B372D02D23CB0511D7889 /* IOKit.framework in Frameworks */, + 236B622A48961F397FF06EF7 /* Carbon.framework in Frameworks */, + 49957BE83EA63CF059A30F9C /* ForceFeedback.framework in Frameworks */, + 1B8B600655202E66597A6A1E /* CoreFoundation.framework in Frameworks */, + 35A63C9C2D0E087E232429CF /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2B14576D52B77980500C4530 /* SDL2 */ = { + isa = PBXGroup; + children = ( + 7F1615B67DCA68AA1B4A2D65 /* src */, + 778B60761D6F788D20CF1089 /* Frameworks */, + 64BF6DFE5A77548A48B644E1 /* Products */, + ); + name = "SDL2"; + sourceTree = ""; + }; + 7F1615B67DCA68AA1B4A2D65 /* src */ = { + isa = PBXGroup; + children = ( + 581F727C2E205CC67F140529 /* SDL.c */, + 20A12A2435417EEB1A001847 /* SDL_assert.c */, + 3DBA229B02BC326E66521EC6 /* SDL_assert_c.h */, + 7C4669E76F5E4522717C37DD /* SDL_error.c */, + 300D65535AAF1A8F2739388E /* SDL_error_c.h */, + 1D2E68ED4D66639038F63099 /* SDL_hints.c */, + 4EAE1E8A03AF0D8C0BC74C60 /* SDL_log.c */, + 688234A1457F4899390578CF /* atomic */, + 3B436A4F077A1168739174F1 /* audio */, + 5FBE445076B30F5E181A6E72 /* cpuinfo */, + 55AD5AFE0AC25A02516B6C0F /* events */, + 169E182E269F4D57356F462F /* file */, + 202A4F20595F11DE1C0E5DEF /* filesystem */, + 402B7BD16DA178D365B82E74 /* haptic */, + 23392EB30D7244ED2CAD16E6 /* joystick */, + 2C2475364CBA026D4A046C45 /* loadso */, + 2FF70AA82AFD089324DC1914 /* power */, + 746E7D0E29004F251DB16B9F /* render */, + 60E97A5510353DFB504F1D03 /* stdlib */, + 511B65CD237E28165A3B0FFD /* thread */, + 74166396173F5600536A7BC8 /* timer */, + 3FC4100D63F1660C3B995BD6 /* video */, + ); + name = "src"; + sourceTree = ""; + }; + 688234A1457F4899390578CF /* atomic */ = { + isa = PBXGroup; + children = ( + 741E10D47F9F35F77FC23C71 /* SDL_atomic.c */, + 545D521E33195938012A701C /* SDL_spinlock.c */, + ); + name = "atomic"; + sourceTree = ""; + }; + 3B436A4F077A1168739174F1 /* audio */ = { + isa = PBXGroup; + children = ( + 009822131E4843700095766C /* SDL_audio.c */, + 7C8304171E6648543F9779B6 /* SDL_audio_c.h */, + 2BA37BD372FE166821D80A1E /* SDL_audiocvt.c */, + 5D2936CF698D392735D76E9E /* SDL_audiodev.c */, + 1F255A29771744AC1DFE48A0 /* SDL_audiodev_c.h */, + 14AA3D784A5D4B873D657338 /* SDL_audiomem.h */, + 76263CFA4F4A3E8E74966406 /* SDL_audiotypecvt.c */, + 748562A8151756FF3FE91679 /* SDL_mixer.c */, + 7B696A2B3C9847A40FD30FA2 /* SDL_sysaudio.h */, + 58E6725272291A8B48974EC3 /* SDL_wave.c */, + 00EA32A02E3338A774D7623F /* SDL_wave.h */, + 2D5C19413AFC226317315284 /* coreaudio */, + 3ECA7F9726472B184E7B1DC0 /* disk */, + 65C05A2970AC5239286044C7 /* dummy */, + ); + name = "audio"; + sourceTree = ""; + }; + 2D5C19413AFC226317315284 /* coreaudio */ = { + isa = PBXGroup; + children = ( + 17F2408C59BB1CE53ACB077B /* SDL_coreaudio.c */, + 4EE3552C72927CDA048947F7 /* SDL_coreaudio.h */, + ); + name = "coreaudio"; + sourceTree = ""; + }; + 3ECA7F9726472B184E7B1DC0 /* disk */ = { + isa = PBXGroup; + children = ( + 694A007643FB227E1C011EE8 /* SDL_diskaudio.c */, + 29C54C2B479130B15A262000 /* SDL_diskaudio.h */, + ); + name = "disk"; + sourceTree = ""; + }; + 65C05A2970AC5239286044C7 /* dummy */ = { + isa = PBXGroup; + children = ( + 183031E40F3E3665462E31AC /* SDL_dummyaudio.c */, + 06A572223CF8475871EE7D5C /* SDL_dummyaudio.h */, + ); + name = "dummy"; + sourceTree = ""; + }; + 5FBE445076B30F5E181A6E72 /* cpuinfo */ = { + isa = PBXGroup; + children = ( + 399D7F372AA42CDF004A30CB /* SDL_cpuinfo.c */, + ); + name = "cpuinfo"; + sourceTree = ""; + }; + 55AD5AFE0AC25A02516B6C0F /* events */ = { + isa = PBXGroup; + children = ( + 5EEA55BC35E77DD14C8B6DEA /* SDL_clipboardevents.c */, + 130E0CF138CF24996422240B /* SDL_clipboardevents_c.h */, + 64680D041F9E679917CF3CB8 /* SDL_dropevents.c */, + 688C5D160E4C409930EB1C46 /* SDL_dropevents_c.h */, + 67B9300749251C797177656C /* SDL_events.c */, + 576820C320D25B890F7E4EE7 /* SDL_events_c.h */, + 2427171D0D16540755560B01 /* SDL_gesture.c */, + 353545A10ADB514C610609C6 /* SDL_gesture_c.h */, + 4A4523A15D1D31E40DBA55EF /* SDL_keyboard.c */, + 74B612214A4706DA719F28D2 /* SDL_keyboard_c.h */, + 0E064D1B5215736C4B0C0F8B /* SDL_mouse.c */, + 058B27A349C800B503ED6669 /* SDL_mouse_c.h */, + 7EAB2812398D5FDE1566622B /* SDL_quit.c */, + 13A403E279690000102705FE /* SDL_sysevents.h */, + 11625DDF6F935BC24C1658C6 /* SDL_touch.c */, + 08D035322454110E49E76A60 /* SDL_touch_c.h */, + 7B0D1AE01FCA24EC38765CFF /* SDL_windowevents.c */, + 06FA2EC12902637126010F3E /* SDL_windowevents_c.h */, + 3D290B0440424FCA73116E71 /* blank_cursor.h */, + 5E5607A90E0E7383395F1124 /* default_cursor.h */, + 5D38365C0E6E6FB712EA76DC /* scancodes_darwin.h */, + 0BE05A937D854CC543FB3741 /* scancodes_linux.h */, + 1A9C33FD4D512FE04A4308B1 /* scancodes_windows.h */, + 59691A177371256478D52733 /* scancodes_xfree86.h */, + ); + name = "events"; + sourceTree = ""; + }; + 169E182E269F4D57356F462F /* file */ = { + isa = PBXGroup; + children = ( + 46E842226EEF2BBD3E14319D /* SDL_rwops.c */, + 0F7844EB5A6F39F066B52DF5 /* cocoa */, + ); + name = "file"; + sourceTree = ""; + }; + 0F7844EB5A6F39F066B52DF5 /* cocoa */ = { + isa = PBXGroup; + children = ( + 5ED91E7C0367157226554461 /* SDL_rwopsbundlesupport.h */, + 5E087787656B7EF200787EF7 /* SDL_rwopsbundlesupport.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 202A4F20595F11DE1C0E5DEF /* filesystem */ = { + isa = PBXGroup; + children = ( + 2F2D3D4B30AA6BA34C0647E6 /* cocoa */, + ); + name = "filesystem"; + sourceTree = ""; + }; + 2F2D3D4B30AA6BA34C0647E6 /* cocoa */ = { + isa = PBXGroup; + children = ( + 7927299A5CBA392013905A95 /* SDL_sysfilesystem.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 402B7BD16DA178D365B82E74 /* haptic */ = { + isa = PBXGroup; + children = ( + 6C027EE044E726073F02545E /* SDL_haptic.c */, + 6CA146A939633B3D587234B0 /* SDL_haptic_c.h */, + 465F3E1A22A90B691CB6261A /* SDL_syshaptic.h */, + 35210A3C265F39CF73320BC1 /* darwin */, + ); + name = "haptic"; + sourceTree = ""; + }; + 35210A3C265F39CF73320BC1 /* darwin */ = { + isa = PBXGroup; + children = ( + 466551BC2C236A3C09D52B8C /* SDL_syshaptic.c */, + ); + name = "darwin"; + sourceTree = ""; + }; + 23392EB30D7244ED2CAD16E6 /* joystick */ = { + isa = PBXGroup; + children = ( + 7D0C59A3666A74AD19C81F68 /* SDL_gamecontroller.c */, + 7EBA21266FA01ACA47254FA4 /* SDL_gamecontrollerdb.h */, + 4FCA1736705A5DC74EC17138 /* SDL_joystick.c */, + 77AB1AAE2997056268FF5C5C /* SDL_joystick_c.h */, + 2DD4468E154E427A6D1B3C33 /* SDL_sysjoystick.h */, + 3A02105A17B3711E2080498F /* darwin */, + ); + name = "joystick"; + sourceTree = ""; + }; + 3A02105A17B3711E2080498F /* darwin */ = { + isa = PBXGroup; + children = ( + 79981D6D163C5F2060C66FA5 /* SDL_sysjoystick.c */, + 5E8A65BF1C1807EF6C8522A1 /* SDL_sysjoystick_c.h */, + ); + name = "darwin"; + sourceTree = ""; + }; + 2C2475364CBA026D4A046C45 /* loadso */ = { + isa = PBXGroup; + children = ( + 2EE438980D7C6329498E1501 /* dlopen */, + ); + name = "loadso"; + sourceTree = ""; + }; + 2EE438980D7C6329498E1501 /* dlopen */ = { + isa = PBXGroup; + children = ( + 31CD0B3A1CC508507B0E69C7 /* SDL_sysloadso.c */, + ); + name = "dlopen"; + sourceTree = ""; + }; + 2FF70AA82AFD089324DC1914 /* power */ = { + isa = PBXGroup; + children = ( + 1C2235273DF86C1B64BC738C /* SDL_power.c */, + 029A07530D871F233FEF258B /* macosx */, + ); + name = "power"; + sourceTree = ""; + }; + 029A07530D871F233FEF258B /* macosx */ = { + isa = PBXGroup; + children = ( + 6A4855D539F85E716904291D /* SDL_syspower.c */, + ); + name = "macosx"; + sourceTree = ""; + }; + 746E7D0E29004F251DB16B9F /* render */ = { + isa = PBXGroup; + children = ( + 550435DE0C8635D76B737308 /* SDL_render.c */, + 0B803F96427D29011CAC67A9 /* SDL_sysrender.h */, + 30C711D35F4E10AE14064022 /* SDL_yuv_mmx.c */, + 2B19077009C9231E3CB109F9 /* SDL_yuv_sw.c */, + 49360D2910D87F4C61260CC1 /* SDL_yuv_sw_c.h */, + 09C048B2597C65C2452F29A1 /* mmx.h */, + 3C2D69C5103C04B5214F4C19 /* opengl */, + 5E27683C527C630169150FED /* software */, + ); + name = "render"; + sourceTree = ""; + }; + 3C2D69C5103C04B5214F4C19 /* opengl */ = { + isa = PBXGroup; + children = ( + 02615473574C5DA45F8119C2 /* SDL_glfuncs.h */, + 2E98213F58C83B7679EA2EE0 /* SDL_render_gl.c */, + 74E6545673FD059731C53CB0 /* SDL_shaders_gl.c */, + 7E5F355E58573DA27BC14C1C /* SDL_shaders_gl.h */, + ); + name = "opengl"; + sourceTree = ""; + }; + 5E27683C527C630169150FED /* software */ = { + isa = PBXGroup; + children = ( + 139751A76375191B64F53E7D /* SDL_blendfillrect.c */, + 64FD5AD01DA8269C6D04363A /* SDL_blendfillrect.h */, + 2E0B793E01E363125E115555 /* SDL_blendline.c */, + 70F6353E33186EFC79F57A18 /* SDL_blendline.h */, + 47A60CF070301F215AA31899 /* SDL_blendpoint.c */, + 357F47816FF76A56538A1A90 /* SDL_blendpoint.h */, + 6F3E58C258E816C01EE5607B /* SDL_draw.h */, + 3DC17B6963CD575538C46E2B /* SDL_drawline.c */, + 6BEC714C75AA234067F04A6F /* SDL_drawline.h */, + 57200BE31613529B5E4D145A /* SDL_drawpoint.c */, + 3140693929B158EB4CBA6F56 /* SDL_drawpoint.h */, + 7F4003F22A2B03CC4F3E2570 /* SDL_render_sw.c */, + 13DE07DE194D2BA503B10D81 /* SDL_render_sw_c.h */, + 34F408411DF145AD78114160 /* SDL_rotate.c */, + 2BAA4C9A41A6056A24A70D24 /* SDL_rotate.h */, + ); + name = "software"; + sourceTree = ""; + }; + 60E97A5510353DFB504F1D03 /* stdlib */ = { + isa = PBXGroup; + children = ( + 467E7A495D341EA43CA77D04 /* SDL_getenv.c */, + 7420083415F10DBF1A6E4645 /* SDL_iconv.c */, + 6AAD26CD05F31E954E925A93 /* SDL_malloc.c */, + 1A637631359161D6452A680F /* SDL_qsort.c */, + 0B1A13D3324F661B06A354E4 /* SDL_stdlib.c */, + 76AA2E0B0F173AC9212F4258 /* SDL_string.c */, + ); + name = "stdlib"; + sourceTree = ""; + }; + 511B65CD237E28165A3B0FFD /* thread */ = { + isa = PBXGroup; + children = ( + 5AAF37911F8240A92E0F1490 /* SDL_systhread.h */, + 00BF063F2A516202081956FF /* SDL_thread.c */, + 78FB562052435E795D701744 /* SDL_thread_c.h */, + 77227A70027F1AEE2C864094 /* pthread */, + ); + name = "thread"; + sourceTree = ""; + }; + 77227A70027F1AEE2C864094 /* pthread */ = { + isa = PBXGroup; + children = ( + 75A15D1D350165C72B266D64 /* SDL_syscond.c */, + 575F34176E7226D0364C71AC /* SDL_sysmutex.c */, + 0CC42FB1128B78AA72B36280 /* SDL_sysmutex_c.h */, + 68EA167A2FA9170A1EEA3B1D /* SDL_syssem.c */, + 2F031FEF2BCC1434771A7E86 /* SDL_systhread.c */, + 3FD000ED7A01775526CA5618 /* SDL_systhread_c.h */, + 6A8F127A2C4E6F364C1526F0 /* SDL_systls.c */, + ); + name = "pthread"; + sourceTree = ""; + }; + 74166396173F5600536A7BC8 /* timer */ = { + isa = PBXGroup; + children = ( + 08B34CDF5C9079763C624849 /* SDL_timer.c */, + 336A25DF147652083BCD3D3C /* SDL_timer_c.h */, + 532B498A1E6302C9738B2DFF /* unix */, + ); + name = "timer"; + sourceTree = ""; + }; + 532B498A1E6302C9738B2DFF /* unix */ = { + isa = PBXGroup; + children = ( + 6A01774C1EED1B2144AE1CB5 /* SDL_systimer.c */, + ); + name = "unix"; + sourceTree = ""; + }; + 3FC4100D63F1660C3B995BD6 /* video */ = { + isa = PBXGroup; + children = ( + 676211D87FE20B7150213164 /* SDL_RLEaccel.c */, + 32C66811376436BE0E942436 /* SDL_RLEaccel_c.h */, + 7B5F52584ED13C49741749BD /* SDL_blit.c */, + 4C266BB0748836070E5430AB /* SDL_blit.h */, + 6BD9773F57DE397A34542B86 /* SDL_blit_0.c */, + 5F717A917D9207E82B1709FD /* SDL_blit_1.c */, + 4A7C2E9C357B39870C9C7CBB /* SDL_blit_A.c */, + 16F56E412F037AA6626704FC /* SDL_blit_N.c */, + 12AD22506E1411CA1FCA193D /* SDL_blit_auto.c */, + 24D062C176AE370B678D5E1A /* SDL_blit_auto.h */, + 7D4437C37F683A8A58F55923 /* SDL_blit_copy.c */, + 260722C00E09302702FA08F5 /* SDL_blit_copy.h */, + 2C3813742F9649C6666B1E7E /* SDL_blit_slow.c */, + 772B39E25F5C46CF744B6DC7 /* SDL_blit_slow.h */, + 626030677A9E27FC1E8935A1 /* SDL_bmp.c */, + 5C4629AC64180D01435D314B /* SDL_clipboard.c */, + 1AA429B9420C620D5F982BCC /* SDL_egl.c */, + 6005192E4497458D4A615860 /* SDL_egl.h */, + 127978F1333C57F33D196715 /* SDL_fillrect.c */, + 1C8921DA02C03ADB0F4646F8 /* SDL_pixels.c */, + 133907A045651496256139AF /* SDL_pixels_c.h */, + 39842F4E596B39E8643764C3 /* SDL_rect.c */, + 530646B0528B495D2A062BFD /* SDL_rect_c.h */, + 1A481A30600E3DFE77A26D0A /* SDL_shape.c */, + 61CD6881175C22CC253B4D8E /* SDL_shape_internals.h */, + 467C2DC84A7B76C05E9E120F /* SDL_stretch.c */, + 518E5DE30064338C4BC17126 /* SDL_surface.c */, + 184509C109CB13FB64680AD8 /* SDL_sysvideo.h */, + 095B54196A9037AE32C14507 /* SDL_video.c */, + 14664CC87EFE15A30F7210A7 /* cocoa */, + 72A40D0826B87C940A0F1136 /* dummy */, + 70A4478517CF4901021961DA /* x11 */, + ); + name = "video"; + sourceTree = ""; + }; + 14664CC87EFE15A30F7210A7 /* cocoa */ = { + isa = PBXGroup; + children = ( + 54280E727B4A720C0E194582 /* SDL_cocoaclipboard.h */, + 6B1A7D591BBF260340365717 /* SDL_cocoaclipboard.m */, + 1A270B314E6440B967AF1587 /* SDL_cocoaevents.h */, + 6CD471DB63ED0C072F712786 /* SDL_cocoaevents.m */, + 5EB34F5F7E84410D43390A37 /* SDL_cocoakeyboard.h */, + 4FF971A805D912AE7C3511F7 /* SDL_cocoakeyboard.m */, + 3E163466557909D8647817DB /* SDL_cocoamessagebox.h */, + 59FA32BE7DCE61473C727995 /* SDL_cocoamessagebox.m */, + 2C045FBC31E41DC90B983693 /* SDL_cocoamodes.h */, + 090C140773EF64C55AB32D4D /* SDL_cocoamodes.m */, + 15593F5425E22D8A44911FF5 /* SDL_cocoamouse.h */, + 36ED1B4309137DF626BA1304 /* SDL_cocoamouse.m */, + 0F950D9601F85D8A22A44228 /* SDL_cocoamousetap.h */, + 6A5F20432ADC009E19FA2C1E /* SDL_cocoamousetap.m */, + 25DE143C196C205B51980555 /* SDL_cocoaopengl.h */, + 3A4F55752FF300143C835B3B /* SDL_cocoaopengl.m */, + 2ABD0A8B59FA64842735209E /* SDL_cocoashape.h */, + 05CF7A893F4C1E2406AA11AA /* SDL_cocoashape.m */, + 5B8467FB461063CC729E1488 /* SDL_cocoavideo.h */, + 297A08E31208586E5A9E4EB3 /* SDL_cocoavideo.m */, + 619C5EFB358E1D2248E557BF /* SDL_cocoawindow.h */, + 650003A700A8250D0F784E5A /* SDL_cocoawindow.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 72A40D0826B87C940A0F1136 /* dummy */ = { + isa = PBXGroup; + children = ( + 2DD03852185F1A5357D16C0E /* SDL_nullevents.c */, + 64AC1624164719933D7D7C2D /* SDL_nullevents_c.h */, + 7FE32E2D489C1F5676D070F3 /* SDL_nullframebuffer.c */, + 568828F86F02017D64E909DD /* SDL_nullframebuffer_c.h */, + 4576033B4C1F3E0D521D1842 /* SDL_nullvideo.c */, + 7F1D717B488B567150456ADD /* SDL_nullvideo.h */, + ); + name = "dummy"; + sourceTree = ""; + }; + 70A4478517CF4901021961DA /* x11 */ = { + isa = PBXGroup; + children = ( + 58465C34749040C207292140 /* SDL_x11clipboard.c */, + 60AA6D98240C1E16753F1F78 /* SDL_x11clipboard.h */, + 36703205767270E5711876F8 /* SDL_x11dyn.c */, + 0E5A3F0C3CC540030ACE7F88 /* SDL_x11dyn.h */, + 7448494A32995EB4084F3B7D /* SDL_x11events.c */, + 56517D6D01E97D41451D059D /* SDL_x11events.h */, + 3EF375972CA805682F8F74F4 /* SDL_x11framebuffer.c */, + 79E9493B77FA59684C5974B7 /* SDL_x11framebuffer.h */, + 4543334473D06CAE254F00B1 /* SDL_x11keyboard.c */, + 39CC0CFD6B7A19ED26007BB4 /* SDL_x11keyboard.h */, + 1D2B22B2741D4C6060E23309 /* SDL_x11messagebox.c */, + 4062686F73250F0A0246473E /* SDL_x11messagebox.h */, + 448A72B44504304B144C3E13 /* SDL_x11modes.c */, + 27FB6C3B1FDD1C925C2D4B61 /* SDL_x11modes.h */, + 54687D293BC66D0A5C631CD2 /* SDL_x11mouse.c */, + 5CCE0B2D44471331046106E6 /* SDL_x11mouse.h */, + 72DF3CFC4E8B09C256A46840 /* SDL_x11opengl.c */, + 217F515544D919DC3B542BDB /* SDL_x11opengl.h */, + 76560AEB0562134E7A7E6B36 /* SDL_x11opengles.c */, + 01A4506F329C34E9544E65C9 /* SDL_x11opengles.h */, + 077269AF6E2A464C6904277D /* SDL_x11shape.c */, + 60910F6738E036B6171642D5 /* SDL_x11shape.h */, + 3E0545D92AE266C52A3A6C93 /* SDL_x11sym.h */, + 652626396914587E520F7C8C /* SDL_x11touch.c */, + 6796539A4EAF7FA5634E3B4F /* SDL_x11touch.h */, + 668E75F870AC40425B0D639F /* SDL_x11video.c */, + 3B503D8111BC749C35456BC7 /* SDL_x11video.h */, + 7FB6418B385644032BC404E9 /* SDL_x11window.c */, + 03BC5ACE246D31A203BD2B15 /* SDL_x11window.h */, + 085A68FD7A9151CF2E095ECB /* SDL_x11xinput2.c */, + 349969F15E6A02A1270D6BA0 /* SDL_x11xinput2.h */, + 11F5212A6B0F3DF7559B6BE3 /* edid-parse.c */, + 1A364F9D6023493E20920E8B /* edid.h */, + 5A492D32559D49902FB05F45 /* imKStoUCS.c */, + 71206CFD70915771458F467A /* imKStoUCS.h */, + ); + name = "x11"; + sourceTree = ""; + }; + 778B60761D6F788D20CF1089 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 16087FC97B0458F07F343E84 /* AudioToolbox.framework */, + 517D7ABB382B14B10EEF73BE /* AudioUnit.framework */, + 5DCD682F04A36BC83BCC7159 /* Cocoa.framework */, + 0E21418B420C32A255982342 /* CoreAudio.framework */, + 7735724A00183AF616F6186E /* IOKit.framework */, + 12566C6F031E562D44A61FA5 /* Carbon.framework */, + 1F7A40AB2F484EA966CD5A46 /* ForceFeedback.framework */, + 01151A0B6D9422C20F99251B /* CoreFoundation.framework */, + 711A00A97A0E506D5F82591B /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 64BF6DFE5A77548A48B644E1 /* Products */ = { + isa = PBXGroup; + children = ( + 07D004B11E733F1F0EA93105 /* libSDL2.a */, + ); + name = "Products"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 58C10ED14175754444033E0E /* SDL2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 132E34C647554236197A43CB /* Build configuration list for PBXNativeTarget "SDL2" */; + buildPhases = ( + 50D0255976AC17D747C2368C /* Resources */, + 30F2001848230434140646C7 /* Sources */, + 6D2F46F31435311A2F32250F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDL2"; + productName = "SDL2"; + productReference = 07D004B11E733F1F0EA93105 /* libSDL2.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2B14576D52B77980500C4530 /* SDL2 */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58C10ED14175754444033E0E /* libSDL2.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 50D0255976AC17D747C2368C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 30F2001848230434140646C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F3F406D60231E94188751BC /* SDL.c in Sources */, + 19FA05DA50E3679839F6602B /* SDL_assert.c in Sources */, + 356E00387A38053E5EE8705E /* SDL_error.c in Sources */, + 149E4E143D540244690204F8 /* SDL_hints.c in Sources */, + 6D2117B123FD403E5F17176E /* SDL_log.c in Sources */, + 52F43FB27CAA2A34780F23D2 /* SDL_atomic.c in Sources */, + 492C77BF4FA9117B4C456DEE /* SDL_spinlock.c in Sources */, + 2F1F27BE61AD6559771B219B /* SDL_audio.c in Sources */, + 461F2F773934429817AA4299 /* SDL_audiocvt.c in Sources */, + 79F231BA363B7C142C533385 /* SDL_audiodev.c in Sources */, + 637A1C5F33B070F311F368D2 /* SDL_audiotypecvt.c in Sources */, + 16451C9255A341FF66894454 /* SDL_mixer.c in Sources */, + 20DE6FC1792A40ED25F514F9 /* SDL_wave.c in Sources */, + 50C80EB5218555D753C36826 /* SDL_coreaudio.c in Sources */, + 44F427256F5C0EC273FC3B89 /* SDL_diskaudio.c in Sources */, + 388A0733659279AE2A123B36 /* SDL_dummyaudio.c in Sources */, + 1362409443423D9B472D0416 /* SDL_cpuinfo.c in Sources */, + 2C9E656F18713B73279B4B04 /* SDL_clipboardevents.c in Sources */, + 0CCE44195C6176D8043D528A /* SDL_dropevents.c in Sources */, + 25F304341BF22DF974DF1780 /* SDL_events.c in Sources */, + 7D5172AE101630DD2E8D3D30 /* SDL_gesture.c in Sources */, + 6A112F1137181ABE5AC417D0 /* SDL_keyboard.c in Sources */, + 2EF9131C40D10D5B633214A1 /* SDL_mouse.c in Sources */, + 16DC68A33B9E04A63D9A54C6 /* SDL_quit.c in Sources */, + 53C876237C494B6428793CD6 /* SDL_touch.c in Sources */, + 778838BC7EAC5963763138C1 /* SDL_windowevents.c in Sources */, + 4F65225D210F1D0C223A3842 /* SDL_rwops.c in Sources */, + 189B1C085510122958EF71C2 /* SDL_rwopsbundlesupport.m in Sources */, + 218C0918297D7C1E31307429 /* SDL_sysfilesystem.m in Sources */, + 1F950ADC73537B891DE53BB8 /* SDL_haptic.c in Sources */, + 1DA01FF6657570AA36A52EC5 /* SDL_syshaptic.c in Sources */, + 689A0A855C4F785B5C981CA4 /* SDL_gamecontroller.c in Sources */, + 159C6EB8203936010A1F2027 /* SDL_joystick.c in Sources */, + 4FC953274C2A1641268F236B /* SDL_sysjoystick.c in Sources */, + 151061BF5CDD3CB1146656AF /* SDL_sysloadso.c in Sources */, + 7F9268CB0F1354E475291503 /* SDL_power.c in Sources */, + 6F6C5A254D6A1B6E6F2911D5 /* SDL_syspower.c in Sources */, + 34555B4E69CE63A24CDA7F43 /* SDL_render.c in Sources */, + 7BEF2DBE471D78592D830CFC /* SDL_yuv_mmx.c in Sources */, + 50E3046B39F125B111E552E5 /* SDL_yuv_sw.c in Sources */, + 35A118A4441C11DE1E126429 /* SDL_render_gl.c in Sources */, + 5D485D983D9508FF46252F6C /* SDL_shaders_gl.c in Sources */, + 0B755CE80D912DB50009511D /* SDL_blendfillrect.c in Sources */, + 73765AD0352731C868D24D4A /* SDL_blendline.c in Sources */, + 02947C1003D14ADE559D42B2 /* SDL_blendpoint.c in Sources */, + 75A536C37C5E31577AA043A4 /* SDL_drawline.c in Sources */, + 34792E3153922D7D763C170E /* SDL_drawpoint.c in Sources */, + 10763EF370CC093B1CFA183C /* SDL_render_sw.c in Sources */, + 110C5B4311ED10D54C4F62AA /* SDL_rotate.c in Sources */, + 48487F951B64565B7D7207CA /* SDL_getenv.c in Sources */, + 059730C916147C00706662AD /* SDL_iconv.c in Sources */, + 7296105F4E1C17650F3D73C9 /* SDL_malloc.c in Sources */, + 49DD00DB42335811763516DD /* SDL_qsort.c in Sources */, + 52DE7BE66FA215C168DF1677 /* SDL_stdlib.c in Sources */, + 5C645F5C4E433585671F555D /* SDL_string.c in Sources */, + 1C0923FF7665104E12545B0C /* SDL_thread.c in Sources */, + 56775E493033788C61470057 /* SDL_syscond.c in Sources */, + 6E88479E164B21F0200C15BC /* SDL_sysmutex.c in Sources */, + 28E422FD2DB22AD275C62496 /* SDL_syssem.c in Sources */, + 427C5DE627A9073945E63965 /* SDL_systhread.c in Sources */, + 74D208E105A93E03446D0CC3 /* SDL_systls.c in Sources */, + 55472CED35DA24E748C92A9D /* SDL_timer.c in Sources */, + 641F56DE115627885E68139B /* SDL_systimer.c in Sources */, + 58C65B09535869014BC3131C /* SDL_RLEaccel.c in Sources */, + 3E0401B74A716B967F1D70CB /* SDL_blit.c in Sources */, + 21B578155ED918C80674601C /* SDL_blit_0.c in Sources */, + 6E612A61515559E567CD5D9C /* SDL_blit_1.c in Sources */, + 5E200CE93B4833C9061C18AF /* SDL_blit_A.c in Sources */, + 71E83A8D25F069DC2952005B /* SDL_blit_N.c in Sources */, + 75EC6ADC292417204E4E701B /* SDL_blit_auto.c in Sources */, + 0F073C586C5B0777519F427F /* SDL_blit_copy.c in Sources */, + 1F897EA9155F39AB161168AD /* SDL_blit_slow.c in Sources */, + 78E46B133F7458F4295F5452 /* SDL_bmp.c in Sources */, + 6383693061D0250D26F00218 /* SDL_clipboard.c in Sources */, + 0BEF1BDA1C6F691D22EB02A7 /* SDL_egl.c in Sources */, + 13F970752FFF253553FD1C57 /* SDL_fillrect.c in Sources */, + 711F3C0A570B25DF7D873D2A /* SDL_pixels.c in Sources */, + 58AE29EA6A4E39D37DFF1403 /* SDL_rect.c in Sources */, + 46AA6A03274D62FC24FF0927 /* SDL_shape.c in Sources */, + 277D2B962D136C4A24D2142F /* SDL_stretch.c in Sources */, + 14010A0150CF689E0D9E3221 /* SDL_surface.c in Sources */, + 78B41B604F381B2D5C6D18E1 /* SDL_video.c in Sources */, + 67D15BC71BE7653C55D74F61 /* SDL_cocoaclipboard.m in Sources */, + 78F26FEE048D4A6B4A863229 /* SDL_cocoaevents.m in Sources */, + 6F89267B7FF56499250A71CC /* SDL_cocoakeyboard.m in Sources */, + 5CF76F752B327CD948535F8F /* SDL_cocoamessagebox.m in Sources */, + 2AC25E1763A837323CD605E7 /* SDL_cocoamodes.m in Sources */, + 7D0450A731DD481909466CA0 /* SDL_cocoamouse.m in Sources */, + 0E6135F17C3B3277248323EB /* SDL_cocoamousetap.m in Sources */, + 18E915CA0AF24DC818255656 /* SDL_cocoaopengl.m in Sources */, + 6C6654F603723710090735D5 /* SDL_cocoashape.m in Sources */, + 647B47720F656FFC2BF30900 /* SDL_cocoavideo.m in Sources */, + 32ED7E75749236CD56FF20F0 /* SDL_cocoawindow.m in Sources */, + 0F174DBC0448241115FC7C63 /* SDL_nullevents.c in Sources */, + 6BC505CE4607095478152E99 /* SDL_nullframebuffer.c in Sources */, + 44AF6A685C5A55FE4A5E19FC /* SDL_nullvideo.c in Sources */, + 287200EA3B9D424D5DE575FD /* SDL_x11clipboard.c in Sources */, + 4E2C59800F607C372D6A3089 /* SDL_x11dyn.c in Sources */, + 2DF75EB904B605E26DAF04C7 /* SDL_x11events.c in Sources */, + 47F6212A03D0643556910B37 /* SDL_x11framebuffer.c in Sources */, + 674049A36F4E1F8A39BA72F3 /* SDL_x11keyboard.c in Sources */, + 423735EE5D4E6C26652252E9 /* SDL_x11messagebox.c in Sources */, + 057D7414702F46FC7B087EDC /* SDL_x11modes.c in Sources */, + 4DE24CFB2C5D19C9769A7FB9 /* SDL_x11mouse.c in Sources */, + 448B41931F8356286212178E /* SDL_x11opengl.c in Sources */, + 5C724339694D58067B6016D3 /* SDL_x11opengles.c in Sources */, + 0F906C3D26303BD807A6588E /* SDL_x11shape.c in Sources */, + 6A5106E473582923650744EE /* SDL_x11touch.c in Sources */, + 11152B937B1F6F19699B764D /* SDL_x11video.c in Sources */, + 1CFD4BF822A240336A086B93 /* SDL_x11window.c in Sources */, + 640C07407CC856FB1B373B79 /* SDL_x11xinput2.c in Sources */, + 23120B9A3B8079C517555340 /* edid-parse.c in Sources */, + 6B5A02020724656F6C16507F /* imKStoUCS.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 2F9F246B26C024DC7F120D57 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Debug Universal"; + }; + 1F8157D3663E276E67CA365A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Debug Native"; + }; + 3DB962F0119172E925261BFD /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Release Universal"; + }; + 74787FE45CB724B452A57D48 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Release Native"; + }; + 5130467F4DEC798D3DDE50E5 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 04333FF1188C50D5561D33E2 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 028974124FBE6DB33D647B20 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0F0067AB466871753BBD0402 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 132E34C647554236197A43CB /* Build configuration list for PBXNativeTarget "libSDL2.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2F9F246B26C024DC7F120D57 /* Debug Universal */, + 1F8157D3663E276E67CA365A /* Debug Native */, + 3DB962F0119172E925261BFD /* Release Universal */, + 74787FE45CB724B452A57D48 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5130467F4DEC798D3DDE50E5 /* Debug Universal */, + 04333FF1188C50D5561D33E2 /* Debug Native */, + 028974124FBE6DB33D647B20 /* Release Universal */, + 0F0067AB466871753BBD0402 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/SDL2main/SDL2main.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/SDL2main/SDL2main.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..f972b5c159 --- /dev/null +++ b/premake/Xcode/Xcode3/SDL2main/SDL2main.xcodeproj/project.pbxproj @@ -0,0 +1,323 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 7C6F655C3400039274C60CE8 /* SDL_dummy_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 26C4436469AA4D7A0F7C1DFD /* SDL_dummy_main.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 26C4436469AA4D7A0F7C1DFD /* SDL_dummy_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dummy_main.c"; path = "../../../../src/main/dummy/SDL_dummy_main.c"; sourceTree = ""; }; + 58DC62993160374E09FF7AD6 /* libSDL2main.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2main.a"; path = "libSDL2main.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 21963BE338963B81309D4E7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 608409A47F473CA5269D156D /* SDL2main */ = { + isa = PBXGroup; + children = ( + 43645C8537AA27FA2F2F3BDD /* src */, + 69F4412F1D6557483C505475 /* Products */, + ); + name = "SDL2main"; + sourceTree = ""; + }; + 43645C8537AA27FA2F2F3BDD /* src */ = { + isa = PBXGroup; + children = ( + 31FB051624A240B6101F10A4 /* main */, + ); + name = "src"; + sourceTree = ""; + }; + 31FB051624A240B6101F10A4 /* main */ = { + isa = PBXGroup; + children = ( + 1AA63C577EFC727433BD4743 /* dummy */, + ); + name = "main"; + sourceTree = ""; + }; + 1AA63C577EFC727433BD4743 /* dummy */ = { + isa = PBXGroup; + children = ( + 26C4436469AA4D7A0F7C1DFD /* SDL_dummy_main.c */, + ); + name = "dummy"; + sourceTree = ""; + }; + 69F4412F1D6557483C505475 /* Products */ = { + isa = PBXGroup; + children = ( + 58DC62993160374E09FF7AD6 /* libSDL2main.a */, + ); + name = "Products"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0E7126A94A11494963D3548B /* SDL2main */ = { + isa = PBXNativeTarget; + buildConfigurationList = 066A29C00B877F83230951D3 /* Build configuration list for PBXNativeTarget "SDL2main" */; + buildPhases = ( + 2FF90B8D051E2574710B253A /* Resources */, + 215446A6532346FA6D1F2C8C /* Sources */, + 21963BE338963B81309D4E7A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDL2main"; + productName = "SDL2main"; + productReference = 58DC62993160374E09FF7AD6 /* libSDL2main.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2main" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 608409A47F473CA5269D156D /* SDL2main */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0E7126A94A11494963D3548B /* libSDL2main.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 2FF90B8D051E2574710B253A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 215446A6532346FA6D1F2C8C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7C6F655C3400039274C60CE8 /* SDL_dummy_main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 510953B45C415358368511E1 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Debug Universal"; + }; + 16D675B01A7317CD3B8D5FE5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Debug Native"; + }; + 76C85F4810AE2D6230A80EF9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Release Universal"; + }; + 6786373D26612E5222AC01B1 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Release Native"; + }; + 57CB0CB34D9E521A60B061AC /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 44C96A8A3A1153C9612956EB /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 0AF04773722D251F47E85CD4 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 328D4CB71647274B61221D5D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 066A29C00B877F83230951D3 /* Build configuration list for PBXNativeTarget "libSDL2main.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 510953B45C415358368511E1 /* Debug Universal */, + 16D675B01A7317CD3B8D5FE5 /* Debug Native */, + 76C85F4810AE2D6230A80EF9 /* Release Universal */, + 6786373D26612E5222AC01B1 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2main" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 57CB0CB34D9E521A60B061AC /* Debug Universal */, + 44C96A8A3A1153C9612956EB /* Debug Native */, + 0AF04773722D251F47E85CD4 /* Release Universal */, + 328D4CB71647274B61221D5D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/SDL2test/SDL2test.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/SDL2test/SDL2test.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..18b8d47db7 --- /dev/null +++ b/premake/Xcode/Xcode3/SDL2test/SDL2test.xcodeproj/project.pbxproj @@ -0,0 +1,520 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 337D79CE5C6E740E7845219E /* SDL_test_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 64702E4E1458346C45853388 /* SDL_test_assert.c */; }; + 0D1D797B22CC02F330FF5E47 /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 49A239233C6C6CA56CE74C48 /* SDL_test_common.c */; }; + 1327749E357953A70CCF170A /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = 2CD224BD127B6FAC31FB648B /* SDL_test_compare.c */; }; + 5BA46CE023E7234071C61356 /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 324A22B47C420DDB457464A4 /* SDL_test_crc32.c */; }; + 35EF0E232141409B16135264 /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C134A0D34FC4D84557A7740 /* SDL_test_font.c */; }; + 24FC39DE3EDC7E2810DE1A63 /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = 298B79602BB7243F2DC918CC /* SDL_test_fuzzer.c */; }; + 17300EC9649122EC74172668 /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = 10E1293A4A1A080255541B1F /* SDL_test_harness.c */; }; + 3271353414A709102AEC727C /* SDL_test_imageBlit.c in Sources */ = {isa = PBXBuildFile; fileRef = 3473299674511A515EC85B18 /* SDL_test_imageBlit.c */; }; + 6F86057B520C152A35441188 /* SDL_test_imageBlitBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = 46D4392C1C2A2D21746004B8 /* SDL_test_imageBlitBlend.c */; }; + 54B811C75417488052B86ACB /* SDL_test_imageFace.c in Sources */ = {isa = PBXBuildFile; fileRef = 02C0451848954C585F967106 /* SDL_test_imageFace.c */; }; + 30DD2C017D1C74A7192E20FD /* SDL_test_imagePrimitives.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F9A3A9453A870E641EC17FE /* SDL_test_imagePrimitives.c */; }; + 41C97B2F609370172B895949 /* SDL_test_imagePrimitivesBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = 69340FD05C9810932D5B3DA7 /* SDL_test_imagePrimitivesBlend.c */; }; + 7A0D0AEA2B651F1557DE60A0 /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 50F457701A661F5C56DD6806 /* SDL_test_log.c */; }; + 33CD7CD04DFE6AE920702DA3 /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 631451F96D09797A39395338 /* SDL_test_md5.c */; }; + 782955367C837DBE79096716 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = 30A82713021216C43C8619EC /* SDL_test_random.c */; }; + 445F64FC7ADA3EBA30845620 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E114BF405C61A49375F6B9F /* AudioToolbox.framework */; }; + 628405F619B7693533F272CA /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B96593D519A75EB2A392F97 /* AudioUnit.framework */; }; + 079374543BC5361C0E1C0F2C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45F83E8C66185B825C3B2F22 /* Cocoa.framework */; }; + 5AD0424A300F69DE2BBC4BC8 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 390F301014294D505E6811AA /* CoreAudio.framework */; }; + 5D1A13F94F9966E9571B3C91 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C622BCF3FDE1F79421C672B /* IOKit.framework */; }; + 26C240F07CC4571159B3246F /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 762D124313B64A3B6DE020FA /* Carbon.framework */; }; + 36C219D71FEC743174BD4B24 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DAE522C524806641A083AEB /* ForceFeedback.framework */; }; + 779B1E6F2FF24FF047276D63 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BD07856726B7C7E5D950CE8 /* CoreFoundation.framework */; }; + 4CFD2303559549CC7D321ACE /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C5049651C43767C030361EC /* OpenGL.framework */; }; + 66772CFF530D13744A817F94 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B6D31FD16317046144826F4 /* libSDL2main.a */; }; + 361A737046B91D3D2B122E80 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EF4020950DF15C7645540BE /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4256279152F56A071E0B1818 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2586308C446C1C7A1D8D1F44 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 543772357FCE478840DB05E1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2586308C446C1C7A1D8D1F44 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 15D75AF543BC727911CB4C32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7524156959DC362020BE45D2 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 008B326E705E69EC1A0B00B4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7524156959DC362020BE45D2 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 64702E4E1458346C45853388 /* SDL_test_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_assert.c"; path = "../../../../src/test/SDL_test_assert.c"; sourceTree = ""; }; + 49A239233C6C6CA56CE74C48 /* SDL_test_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_common.c"; path = "../../../../src/test/SDL_test_common.c"; sourceTree = ""; }; + 2CD224BD127B6FAC31FB648B /* SDL_test_compare.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_compare.c"; path = "../../../../src/test/SDL_test_compare.c"; sourceTree = ""; }; + 324A22B47C420DDB457464A4 /* SDL_test_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_crc32.c"; path = "../../../../src/test/SDL_test_crc32.c"; sourceTree = ""; }; + 7C134A0D34FC4D84557A7740 /* SDL_test_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_font.c"; path = "../../../../src/test/SDL_test_font.c"; sourceTree = ""; }; + 298B79602BB7243F2DC918CC /* SDL_test_fuzzer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_fuzzer.c"; path = "../../../../src/test/SDL_test_fuzzer.c"; sourceTree = ""; }; + 10E1293A4A1A080255541B1F /* SDL_test_harness.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_harness.c"; path = "../../../../src/test/SDL_test_harness.c"; sourceTree = ""; }; + 3473299674511A515EC85B18 /* SDL_test_imageBlit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageBlit.c"; path = "../../../../src/test/SDL_test_imageBlit.c"; sourceTree = ""; }; + 46D4392C1C2A2D21746004B8 /* SDL_test_imageBlitBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageBlitBlend.c"; path = "../../../../src/test/SDL_test_imageBlitBlend.c"; sourceTree = ""; }; + 02C0451848954C585F967106 /* SDL_test_imageFace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageFace.c"; path = "../../../../src/test/SDL_test_imageFace.c"; sourceTree = ""; }; + 3F9A3A9453A870E641EC17FE /* SDL_test_imagePrimitives.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imagePrimitives.c"; path = "../../../../src/test/SDL_test_imagePrimitives.c"; sourceTree = ""; }; + 69340FD05C9810932D5B3DA7 /* SDL_test_imagePrimitivesBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imagePrimitivesBlend.c"; path = "../../../../src/test/SDL_test_imagePrimitivesBlend.c"; sourceTree = ""; }; + 50F457701A661F5C56DD6806 /* SDL_test_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_log.c"; path = "../../../../src/test/SDL_test_log.c"; sourceTree = ""; }; + 631451F96D09797A39395338 /* SDL_test_md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_md5.c"; path = "../../../../src/test/SDL_test_md5.c"; sourceTree = ""; }; + 30A82713021216C43C8619EC /* SDL_test_random.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_random.c"; path = "../../../../src/test/SDL_test_random.c"; sourceTree = ""; }; + 7E114BF405C61A49375F6B9F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 5B96593D519A75EB2A392F97 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 45F83E8C66185B825C3B2F22 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 390F301014294D505E6811AA /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6C622BCF3FDE1F79421C672B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 762D124313B64A3B6DE020FA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 0DAE522C524806641A083AEB /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 4BD07856726B7C7E5D950CE8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 1C5049651C43767C030361EC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 1E1175156F97314C291323CB /* libSDL2test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2test.a"; path = "libSDL2test.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2586308C446C1C7A1D8D1F44 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7524156959DC362020BE45D2 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3D48554E124D39E0335337FA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 445F64FC7ADA3EBA30845620 /* AudioToolbox.framework in Frameworks */, + 628405F619B7693533F272CA /* AudioUnit.framework in Frameworks */, + 079374543BC5361C0E1C0F2C /* Cocoa.framework in Frameworks */, + 5AD0424A300F69DE2BBC4BC8 /* CoreAudio.framework in Frameworks */, + 5D1A13F94F9966E9571B3C91 /* IOKit.framework in Frameworks */, + 26C240F07CC4571159B3246F /* Carbon.framework in Frameworks */, + 36C219D71FEC743174BD4B24 /* ForceFeedback.framework in Frameworks */, + 779B1E6F2FF24FF047276D63 /* CoreFoundation.framework in Frameworks */, + 4CFD2303559549CC7D321ACE /* OpenGL.framework in Frameworks */, + 66772CFF530D13744A817F94 /* libSDL2main.a in Frameworks */, + 361A737046B91D3D2B122E80 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1FB469BB7E2F5A4659ED5F39 /* SDL2test */ = { + isa = PBXGroup; + children = ( + 56EC37C45DBA006839404305 /* src */, + 795F6F6A1E037849252B6A89 /* Frameworks */, + 6A8845BC486E4A3701F1222D /* Products */, + 55E27D766A715CFB047C11E2 /* Projects */, + ); + name = "SDL2test"; + sourceTree = ""; + }; + 56EC37C45DBA006839404305 /* src */ = { + isa = PBXGroup; + children = ( + 1BF37558187B43BB605E5CCE /* test */, + ); + name = "src"; + sourceTree = ""; + }; + 1BF37558187B43BB605E5CCE /* test */ = { + isa = PBXGroup; + children = ( + 64702E4E1458346C45853388 /* SDL_test_assert.c */, + 49A239233C6C6CA56CE74C48 /* SDL_test_common.c */, + 2CD224BD127B6FAC31FB648B /* SDL_test_compare.c */, + 324A22B47C420DDB457464A4 /* SDL_test_crc32.c */, + 7C134A0D34FC4D84557A7740 /* SDL_test_font.c */, + 298B79602BB7243F2DC918CC /* SDL_test_fuzzer.c */, + 10E1293A4A1A080255541B1F /* SDL_test_harness.c */, + 3473299674511A515EC85B18 /* SDL_test_imageBlit.c */, + 46D4392C1C2A2D21746004B8 /* SDL_test_imageBlitBlend.c */, + 02C0451848954C585F967106 /* SDL_test_imageFace.c */, + 3F9A3A9453A870E641EC17FE /* SDL_test_imagePrimitives.c */, + 69340FD05C9810932D5B3DA7 /* SDL_test_imagePrimitivesBlend.c */, + 50F457701A661F5C56DD6806 /* SDL_test_log.c */, + 631451F96D09797A39395338 /* SDL_test_md5.c */, + 30A82713021216C43C8619EC /* SDL_test_random.c */, + ); + name = "test"; + sourceTree = ""; + }; + 795F6F6A1E037849252B6A89 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7E114BF405C61A49375F6B9F /* AudioToolbox.framework */, + 5B96593D519A75EB2A392F97 /* AudioUnit.framework */, + 45F83E8C66185B825C3B2F22 /* Cocoa.framework */, + 390F301014294D505E6811AA /* CoreAudio.framework */, + 6C622BCF3FDE1F79421C672B /* IOKit.framework */, + 762D124313B64A3B6DE020FA /* Carbon.framework */, + 0DAE522C524806641A083AEB /* ForceFeedback.framework */, + 4BD07856726B7C7E5D950CE8 /* CoreFoundation.framework */, + 1C5049651C43767C030361EC /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6A8845BC486E4A3701F1222D /* Products */ = { + isa = PBXGroup; + children = ( + 1E1175156F97314C291323CB /* libSDL2test.a */, + ); + name = "Products"; + sourceTree = ""; + }; + 55E27D766A715CFB047C11E2 /* Projects */ = { + isa = PBXGroup; + children = ( + 2586308C446C1C7A1D8D1F44 /* SDL2main.xcodeproj */, + 7524156959DC362020BE45D2 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 59F10019753464A80ACA61C2 /* Products */ = { + isa = PBXGroup; + children = ( + 3B6D31FD16317046144826F4 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4DBA793E60F7389C45A23630 /* Products */ = { + isa = PBXGroup; + children = ( + 6EF4020950DF15C7645540BE /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7CD70F5D43DA554D66287CFC /* SDL2test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0B1800395F995523000222B7 /* Build configuration list for PBXNativeTarget "SDL2test" */; + buildPhases = ( + 35BD3B0B4FD3288E0D252E74 /* Resources */, + 51B160D8261B3CDB61990505 /* Sources */, + 3D48554E124D39E0335337FA /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 323011DF03D31A8540301B10 /* PBXTargetDependency */, + 4BA611C06B4A67550F3B6BA1 /* PBXTargetDependency */, + ); + name = "SDL2test"; + productName = "SDL2test"; + productReference = 1E1175156F97314C291323CB /* libSDL2test.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2test" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 1FB469BB7E2F5A4659ED5F39 /* SDL2test */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 59F10019753464A80ACA61C2 /* Products */; + ProjectRef = 2586308C446C1C7A1D8D1F44 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4DBA793E60F7389C45A23630 /* Products */; + ProjectRef = 7524156959DC362020BE45D2 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 7CD70F5D43DA554D66287CFC /* libSDL2test.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 3B6D31FD16317046144826F4 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 4256279152F56A071E0B1818 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6EF4020950DF15C7645540BE /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 15D75AF543BC727911CB4C32 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 35BD3B0B4FD3288E0D252E74 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 51B160D8261B3CDB61990505 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 337D79CE5C6E740E7845219E /* SDL_test_assert.c in Sources */, + 0D1D797B22CC02F330FF5E47 /* SDL_test_common.c in Sources */, + 1327749E357953A70CCF170A /* SDL_test_compare.c in Sources */, + 5BA46CE023E7234071C61356 /* SDL_test_crc32.c in Sources */, + 35EF0E232141409B16135264 /* SDL_test_font.c in Sources */, + 24FC39DE3EDC7E2810DE1A63 /* SDL_test_fuzzer.c in Sources */, + 17300EC9649122EC74172668 /* SDL_test_harness.c in Sources */, + 3271353414A709102AEC727C /* SDL_test_imageBlit.c in Sources */, + 6F86057B520C152A35441188 /* SDL_test_imageBlitBlend.c in Sources */, + 54B811C75417488052B86ACB /* SDL_test_imageFace.c in Sources */, + 30DD2C017D1C74A7192E20FD /* SDL_test_imagePrimitives.c in Sources */, + 41C97B2F609370172B895949 /* SDL_test_imagePrimitivesBlend.c in Sources */, + 7A0D0AEA2B651F1557DE60A0 /* SDL_test_log.c in Sources */, + 33CD7CD04DFE6AE920702DA3 /* SDL_test_md5.c in Sources */, + 782955367C837DBE79096716 /* SDL_test_random.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 323011DF03D31A8540301B10 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 543772357FCE478840DB05E1 /* PBXContainerItemProxy */; + }; + 4BA611C06B4A67550F3B6BA1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 008B326E705E69EC1A0B00B4 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 4A2953F0465464715FF64F2F /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Debug Universal"; + }; + 27874CF36C0C48391D621F81 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Debug Native"; + }; + 1C32324B72E80242501F43F2 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Release Universal"; + }; + 5AFE7B533F5F255666177F5B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Release Native"; + }; + 42AF24F81A8936CB00095CCD /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 7F6D4F3E122F5AC81F875AAD /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 54FF675725126F2E36652B1C /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 69475F78601C5BAB6CB770F8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0B1800395F995523000222B7 /* Build configuration list for PBXNativeTarget "libSDL2test.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4A2953F0465464715FF64F2F /* Debug Universal */, + 27874CF36C0C48391D621F81 /* Debug Native */, + 1C32324B72E80242501F43F2 /* Release Universal */, + 5AFE7B533F5F255666177F5B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 42AF24F81A8936CB00095CCD /* Debug Universal */, + 7F6D4F3E122F5AC81F875AAD /* Debug Native */, + 54FF675725126F2E36652B1C /* Release Universal */, + 69475F78601C5BAB6CB770F8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/SDL_config_premake.h b/premake/Xcode/Xcode3/SDL_config_premake.h new file mode 100755 index 0000000000..cb1725a275 --- /dev/null +++ b/premake/Xcode/Xcode3/SDL_config_premake.h @@ -0,0 +1,205 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_macosx_h +#define _SDL_config_macosx_h + +#include "SDL_platform.h" + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */ +#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) ) +#define HAVE_ALLOCA_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_AUDIO_DRIVER_COREAUDIO +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#endif +#ifndef SDL_POWER_MACOSX +#define SDL_POWER_MACOSX 1 +#endif +#ifndef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 +#endif +#ifndef SDL_LOADSO_DLOPEN +#define SDL_LOADSO_DLOPEN 1 +#endif +#ifndef SDL_FILESYSTEM_COCOA +#define SDL_FILESYSTEM_COCOA 1 +#endif +#ifndef SDL_VIDEO_DRIVER_COCOA +#define SDL_VIDEO_DRIVER_COCOA 1 +#endif +#ifndef SDL_THREAD_PTHREAD +#define SDL_THREAD_PTHREAD 1 +#endif +#ifndef SDL_TIMER_UNIX +#define SDL_TIMER_UNIX 1 +#endif +#ifndef SDL_HAPTIC_IOKIT +#define SDL_HAPTIC_IOKIT 1 +#endif +#ifndef SDL_JOYSTICK_IOKIT +#define SDL_JOYSTICK_IOKIT 1 +#endif + +/* Enable various video drivers */ +#undef SDL_VIDEO_DRIVER_X11 +#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_XINPUT2 "/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_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* _SDL_config_macosx_h */ diff --git a/premake/Xcode/Xcode3/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..9bc6095f3e --- /dev/null +++ b/premake/Xcode/Xcode3/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 322A045A6E6557341FEB170E /* checkkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 69E572554280205947E1455E /* checkkeys.c */; }; + 1FCE2801700D10B63EAC1E96 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B41193166084200141239E9 /* AudioToolbox.framework */; }; + 26A66ECE2F7335D609283499 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 377836464C33612C220B072D /* AudioUnit.framework */; }; + 4365370425D617CC73BE4C14 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35137B2F5A4640634A9464E4 /* Cocoa.framework */; }; + 1F491C03156D41743AEA6CC6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CDC7A684893646334D67868 /* CoreAudio.framework */; }; + 5F4268810C9079E1525E534B /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EED43C81C1B3A0465AA1A66 /* IOKit.framework */; }; + 096C508759AB2A6F1E8951AE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DE90946568C14882904699E /* Carbon.framework */; }; + 776B4FFD176F147317A43518 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0053648C598616BC17197439 /* ForceFeedback.framework */; }; + 6538777413730E577BFE01EF /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65F55FB02F4E3C726D3D53C9 /* CoreFoundation.framework */; }; + 25CB70B645686B0611D94900 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CAC1E0579FF66CF4E020083 /* OpenGL.framework */; }; + 65471E063B7511EA51D23F99 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AED7A57072C0FB5641461D8 /* libSDL2main.a */; }; + 301E37E4700D6F3509D321B6 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A642093282471FB2AFE4720 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6CA1620A302414004CAF7859 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5F040F224166126D41637CA8 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 5A281B75525E214430CA3469 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5F040F224166126D41637CA8 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 07CA7ED360C823EC041E505C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7C366261561B202361AC09EF /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 683637717D1D307C46EF25FE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7C366261561B202361AC09EF /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 69E572554280205947E1455E /* checkkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "checkkeys.c"; path = "../../../../../test/checkkeys.c"; sourceTree = ""; }; + 7B41193166084200141239E9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 377836464C33612C220B072D /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 35137B2F5A4640634A9464E4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5CDC7A684893646334D67868 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 5EED43C81C1B3A0465AA1A66 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 7DE90946568C14882904699E /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 0053648C598616BC17197439 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 65F55FB02F4E3C726D3D53C9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 0CAC1E0579FF66CF4E020083 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 0A40748B0E5F234B355B6BD2 /* checkkeys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "checkkeys"; path = "checkkeys"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F040F224166126D41637CA8 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7C366261561B202361AC09EF /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5CFA422E755324E01F465E4A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1FCE2801700D10B63EAC1E96 /* AudioToolbox.framework in Frameworks */, + 26A66ECE2F7335D609283499 /* AudioUnit.framework in Frameworks */, + 4365370425D617CC73BE4C14 /* Cocoa.framework in Frameworks */, + 1F491C03156D41743AEA6CC6 /* CoreAudio.framework in Frameworks */, + 5F4268810C9079E1525E534B /* IOKit.framework in Frameworks */, + 096C508759AB2A6F1E8951AE /* Carbon.framework in Frameworks */, + 776B4FFD176F147317A43518 /* ForceFeedback.framework in Frameworks */, + 6538777413730E577BFE01EF /* CoreFoundation.framework in Frameworks */, + 25CB70B645686B0611D94900 /* OpenGL.framework in Frameworks */, + 65471E063B7511EA51D23F99 /* libSDL2main.a in Frameworks */, + 301E37E4700D6F3509D321B6 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7551320B77D378B21D42667A /* checkkeys */ = { + isa = PBXGroup; + children = ( + 049836107F76417B7B837FAD /* test */, + 28AB780A0708383130F605F2 /* Frameworks */, + 51A87EEE71086351715325F5 /* Products */, + 0F4933074A3308093A560CDC /* Projects */, + ); + name = "checkkeys"; + sourceTree = ""; + }; + 049836107F76417B7B837FAD /* test */ = { + isa = PBXGroup; + children = ( + 69E572554280205947E1455E /* checkkeys.c */, + ); + name = "test"; + sourceTree = ""; + }; + 28AB780A0708383130F605F2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7B41193166084200141239E9 /* AudioToolbox.framework */, + 377836464C33612C220B072D /* AudioUnit.framework */, + 35137B2F5A4640634A9464E4 /* Cocoa.framework */, + 5CDC7A684893646334D67868 /* CoreAudio.framework */, + 5EED43C81C1B3A0465AA1A66 /* IOKit.framework */, + 7DE90946568C14882904699E /* Carbon.framework */, + 0053648C598616BC17197439 /* ForceFeedback.framework */, + 65F55FB02F4E3C726D3D53C9 /* CoreFoundation.framework */, + 0CAC1E0579FF66CF4E020083 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 51A87EEE71086351715325F5 /* Products */ = { + isa = PBXGroup; + children = ( + 0A40748B0E5F234B355B6BD2 /* checkkeys */, + ); + name = "Products"; + sourceTree = ""; + }; + 0F4933074A3308093A560CDC /* Projects */ = { + isa = PBXGroup; + children = ( + 5F040F224166126D41637CA8 /* SDL2main.xcodeproj */, + 7C366261561B202361AC09EF /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 59F362F429F137244C5D266F /* Products */ = { + isa = PBXGroup; + children = ( + 0AED7A57072C0FB5641461D8 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 788031B312545C5E499B0933 /* Products */ = { + isa = PBXGroup; + children = ( + 4A642093282471FB2AFE4720 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3472466F263432064675348C /* checkkeys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 35E43ED924A827077A73277C /* Build configuration list for PBXNativeTarget "checkkeys" */; + buildPhases = ( + 481B20AA7C407A1062E82AA2 /* Resources */, + 07EE599C1DA9643F7D1446B2 /* Sources */, + 5CFA422E755324E01F465E4A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 08422E7313E947714D9A4D60 /* PBXTargetDependency */, + 4F265B2E3FD67B4C742268B7 /* PBXTargetDependency */, + ); + name = "checkkeys"; + productInstallPath = "$(HOME)/bin"; + productName = "checkkeys"; + productReference = 0A40748B0E5F234B355B6BD2 /* checkkeys */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "checkkeys" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 7551320B77D378B21D42667A /* checkkeys */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 59F362F429F137244C5D266F /* Products */; + ProjectRef = 5F040F224166126D41637CA8 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 788031B312545C5E499B0933 /* Products */; + ProjectRef = 7C366261561B202361AC09EF /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 3472466F263432064675348C /* checkkeys */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 0AED7A57072C0FB5641461D8 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6CA1620A302414004CAF7859 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4A642093282471FB2AFE4720 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 07CA7ED360C823EC041E505C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 481B20AA7C407A1062E82AA2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 07EE599C1DA9643F7D1446B2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 322A045A6E6557341FEB170E /* checkkeys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 08422E7313E947714D9A4D60 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5A281B75525E214430CA3469 /* PBXContainerItemProxy */; + }; + 4F265B2E3FD67B4C742268B7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 683637717D1D307C46EF25FE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2E4F7DDA1DC234142D0741B2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Debug Universal"; + }; + 357133BE06BC44C0570072ED /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Debug Native"; + }; + 5C19111B085728896B520456 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Release Universal"; + }; + 47345D7163004A837E2C2C37 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Release Native"; + }; + 15E4471025F065D87E7163FA /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 5E6430007D976B98018E4629 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 5A7A1D38700F164F1E67012B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 018428DC1BFD1068496C0024 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 35E43ED924A827077A73277C /* Build configuration list for PBXNativeTarget "checkkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2E4F7DDA1DC234142D0741B2 /* Debug Universal */, + 357133BE06BC44C0570072ED /* Debug Native */, + 5C19111B085728896B520456 /* Release Universal */, + 47345D7163004A837E2C2C37 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "checkkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 15E4471025F065D87E7163FA /* Debug Universal */, + 5E6430007D976B98018E4629 /* Debug Native */, + 5A7A1D38700F164F1E67012B /* Release Universal */, + 018428DC1BFD1068496C0024 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/loopwave/loopwave.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/loopwave/loopwave.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..c553754a90 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/loopwave/loopwave.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 062A6EDF012B6A9641AF7FB9 /* loopwave.c in Sources */ = {isa = PBXBuildFile; fileRef = 310564485C4C21834D350ABF /* loopwave.c */; }; + 74BA75FA18A45A5F48914818 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45F63DE3224C48AD69A84503 /* AudioToolbox.framework */; }; + 030A07FE614A57CC37BD5DCD /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 240F5523036E3C8367F06030 /* AudioUnit.framework */; }; + 0F1F5EE861F95A0E61FD5ECE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A882424412B0D2E066E4BDA /* Cocoa.framework */; }; + 318941345DA23FC34A426730 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C975E904CA854270617673C /* CoreAudio.framework */; }; + 6F07387D48157F33023D0A69 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24901D3671DE2DF7514A6D0E /* IOKit.framework */; }; + 01E5042B3AA5283671B74556 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20A9382B41CB0A2A01775579 /* Carbon.framework */; }; + 21F71E1F43A5162016BA26FF /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B0157215DCF781564126260 /* ForceFeedback.framework */; }; + 39FB43AD4E663E5963DD6A64 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A2D5945566B43BD503B7232 /* CoreFoundation.framework */; }; + 2F3235902F1B3BBF7ACF4467 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 048837873DA5449857AE60F1 /* OpenGL.framework */; }; + 44CF28ED62B90C68060E03ED /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A90682A48B24B01354821FE /* libSDL2main.a */; }; + 0889617D5DD21848312A70F4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 314673287DC135CE214818AB /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 67037CC85B947C4B58B64EBA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7B49049B002E76D557C760E2 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 1D5961507A4825A667DA30BA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7B49049B002E76D557C760E2 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 032B3A303D376DC41DC118C1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4DEA3F7F3F8009FA7EF07AA6 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 6523111C79426E4733A759B4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4DEA3F7F3F8009FA7EF07AA6 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 310564485C4C21834D350ABF /* loopwave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "loopwave.c"; path = "../../../../../test/loopwave.c"; sourceTree = ""; }; + 45F63DE3224C48AD69A84503 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 240F5523036E3C8367F06030 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 7A882424412B0D2E066E4BDA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 3C975E904CA854270617673C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 24901D3671DE2DF7514A6D0E /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 20A9382B41CB0A2A01775579 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 3B0157215DCF781564126260 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 6A2D5945566B43BD503B7232 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 048837873DA5449857AE60F1 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2B02458468CD2BA4494B5B96 /* loopwave */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "loopwave"; path = "loopwave"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7B49049B002E76D557C760E2 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 4DEA3F7F3F8009FA7EF07AA6 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 75C83A552FB74F98392A11C9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 74BA75FA18A45A5F48914818 /* AudioToolbox.framework in Frameworks */, + 030A07FE614A57CC37BD5DCD /* AudioUnit.framework in Frameworks */, + 0F1F5EE861F95A0E61FD5ECE /* Cocoa.framework in Frameworks */, + 318941345DA23FC34A426730 /* CoreAudio.framework in Frameworks */, + 6F07387D48157F33023D0A69 /* IOKit.framework in Frameworks */, + 01E5042B3AA5283671B74556 /* Carbon.framework in Frameworks */, + 21F71E1F43A5162016BA26FF /* ForceFeedback.framework in Frameworks */, + 39FB43AD4E663E5963DD6A64 /* CoreFoundation.framework in Frameworks */, + 2F3235902F1B3BBF7ACF4467 /* OpenGL.framework in Frameworks */, + 44CF28ED62B90C68060E03ED /* libSDL2main.a in Frameworks */, + 0889617D5DD21848312A70F4 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6146648358E1392E02AB47F4 /* loopwave */ = { + isa = PBXGroup; + children = ( + 7A7E0491571D313D2B8C7AFF /* test */, + 52B4655961EA4A53123224EB /* Frameworks */, + 563E36452CA11B6B4DE71E87 /* Products */, + 4E0A12F05B3528FB2ED95097 /* Projects */, + ); + name = "loopwave"; + sourceTree = ""; + }; + 7A7E0491571D313D2B8C7AFF /* test */ = { + isa = PBXGroup; + children = ( + 310564485C4C21834D350ABF /* loopwave.c */, + ); + name = "test"; + sourceTree = ""; + }; + 52B4655961EA4A53123224EB /* Frameworks */ = { + isa = PBXGroup; + children = ( + 45F63DE3224C48AD69A84503 /* AudioToolbox.framework */, + 240F5523036E3C8367F06030 /* AudioUnit.framework */, + 7A882424412B0D2E066E4BDA /* Cocoa.framework */, + 3C975E904CA854270617673C /* CoreAudio.framework */, + 24901D3671DE2DF7514A6D0E /* IOKit.framework */, + 20A9382B41CB0A2A01775579 /* Carbon.framework */, + 3B0157215DCF781564126260 /* ForceFeedback.framework */, + 6A2D5945566B43BD503B7232 /* CoreFoundation.framework */, + 048837873DA5449857AE60F1 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 563E36452CA11B6B4DE71E87 /* Products */ = { + isa = PBXGroup; + children = ( + 2B02458468CD2BA4494B5B96 /* loopwave */, + ); + name = "Products"; + sourceTree = ""; + }; + 4E0A12F05B3528FB2ED95097 /* Projects */ = { + isa = PBXGroup; + children = ( + 7B49049B002E76D557C760E2 /* SDL2main.xcodeproj */, + 4DEA3F7F3F8009FA7EF07AA6 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0158468C18CF549300205CD2 /* Products */ = { + isa = PBXGroup; + children = ( + 4A90682A48B24B01354821FE /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 554966576A227E7B749C3EEA /* Products */ = { + isa = PBXGroup; + children = ( + 314673287DC135CE214818AB /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 113B56ED7C1954B22A5E071A /* loopwave */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3124524079731BFA3C4A50BF /* Build configuration list for PBXNativeTarget "loopwave" */; + buildPhases = ( + 2FF255230D805866140F0D22 /* Resources */, + 33330525538751295C882206 /* Sources */, + 75C83A552FB74F98392A11C9 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 444E7A914EBA2D6A1DAB4C87 /* PBXTargetDependency */, + 50D753504D3E62603EC864E6 /* PBXTargetDependency */, + ); + name = "loopwave"; + productInstallPath = "$(HOME)/bin"; + productName = "loopwave"; + productReference = 2B02458468CD2BA4494B5B96 /* loopwave */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "loopwave" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 6146648358E1392E02AB47F4 /* loopwave */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0158468C18CF549300205CD2 /* Products */; + ProjectRef = 7B49049B002E76D557C760E2 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 554966576A227E7B749C3EEA /* Products */; + ProjectRef = 4DEA3F7F3F8009FA7EF07AA6 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 113B56ED7C1954B22A5E071A /* loopwave */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 4A90682A48B24B01354821FE /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 67037CC85B947C4B58B64EBA /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 314673287DC135CE214818AB /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 032B3A303D376DC41DC118C1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2FF255230D805866140F0D22 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 33330525538751295C882206 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 062A6EDF012B6A9641AF7FB9 /* loopwave.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 444E7A914EBA2D6A1DAB4C87 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 1D5961507A4825A667DA30BA /* PBXContainerItemProxy */; + }; + 50D753504D3E62603EC864E6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6523111C79426E4733A759B4 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 76B1778D03FB125133045BD2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Debug Universal"; + }; + 4429168720D30A6F18D90481 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Debug Native"; + }; + 47E476F00FB06D7E72202B41 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Release Universal"; + }; + 44096789056D44FB67070CC3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Release Native"; + }; + 5CD870A70BA7063F1FA27524 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 39381B1472A00C7232D90364 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 6E12096A3DD64FA505A80CC4 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 597265952F4564FC62E217BB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3124524079731BFA3C4A50BF /* Build configuration list for PBXNativeTarget "loopwave" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 76B1778D03FB125133045BD2 /* Debug Universal */, + 4429168720D30A6F18D90481 /* Debug Native */, + 47E476F00FB06D7E72202B41 /* Release Universal */, + 44096789056D44FB67070CC3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "loopwave" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5CD870A70BA7063F1FA27524 /* Debug Universal */, + 39381B1472A00C7232D90364 /* Debug Native */, + 6E12096A3DD64FA505A80CC4 /* Release Universal */, + 597265952F4564FC62E217BB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testatomic/testatomic.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testatomic/testatomic.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..2aec6ee954 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testatomic/testatomic.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 57876D99114444BD06CB79EA /* testatomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 54330859254103D731515D90 /* testatomic.c */; }; + 17F567BB421716785F6439CF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09A150504E10263515C14414 /* AudioToolbox.framework */; }; + 77EF12F73F887CA74A7B7FC9 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D4C19F323B75D856812787F /* AudioUnit.framework */; }; + 52DF34A54896760C11C25AE6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AE359BD2A9673542E98181F /* Cocoa.framework */; }; + 02FE0EBC709352A14E8D4A6D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37540DD006A96C3C08D41CFE /* CoreAudio.framework */; }; + 361F6EC20955561325544E5D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 574C4DD436087C51492D43B3 /* IOKit.framework */; }; + 31F569F0245E3AA002C15E11 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45B72D0141D071FF4C41486E /* Carbon.framework */; }; + 32C4089A55DC6316410D6182 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 454029B87D165A3370306EFD /* ForceFeedback.framework */; }; + 1C410038088F223D5F162F97 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BCB496E70D34CB5241D1087 /* CoreFoundation.framework */; }; + 69E226E7448C5F956D780C75 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 008150AD1F8441BF65833853 /* OpenGL.framework */; }; + 61A726E729BA1BC965100ED9 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 26805ECB03C10C4C10583FB0 /* libSDL2main.a */; }; + 5A1E047B453532082C883A0A /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 70163DCB7F7A4A513D3E4F7A /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 035B6577156746CC13202FA0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5B9110BF2C18721424265DC2 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 6F8D40AE773C25A10EA02D59 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5B9110BF2C18721424265DC2 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 251D257954BF783F084324FA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 61946CBF2E6837466BFE7B96 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 38C722631617477D60904E7D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 61946CBF2E6837466BFE7B96 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 54330859254103D731515D90 /* testatomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testatomic.c"; path = "../../../../../test/testatomic.c"; sourceTree = ""; }; + 09A150504E10263515C14414 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 6D4C19F323B75D856812787F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 1AE359BD2A9673542E98181F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 37540DD006A96C3C08D41CFE /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 574C4DD436087C51492D43B3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 45B72D0141D071FF4C41486E /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 454029B87D165A3370306EFD /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3BCB496E70D34CB5241D1087 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 008150AD1F8441BF65833853 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 46F7356A68904D295FBF06D3 /* testatomic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testatomic"; path = "testatomic"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5B9110BF2C18721424265DC2 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 61946CBF2E6837466BFE7B96 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 134752C077415E7D02F75654 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 17F567BB421716785F6439CF /* AudioToolbox.framework in Frameworks */, + 77EF12F73F887CA74A7B7FC9 /* AudioUnit.framework in Frameworks */, + 52DF34A54896760C11C25AE6 /* Cocoa.framework in Frameworks */, + 02FE0EBC709352A14E8D4A6D /* CoreAudio.framework in Frameworks */, + 361F6EC20955561325544E5D /* IOKit.framework in Frameworks */, + 31F569F0245E3AA002C15E11 /* Carbon.framework in Frameworks */, + 32C4089A55DC6316410D6182 /* ForceFeedback.framework in Frameworks */, + 1C410038088F223D5F162F97 /* CoreFoundation.framework in Frameworks */, + 69E226E7448C5F956D780C75 /* OpenGL.framework in Frameworks */, + 61A726E729BA1BC965100ED9 /* libSDL2main.a in Frameworks */, + 5A1E047B453532082C883A0A /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 212A608F0CC1571F52F633FB /* testatomic */ = { + isa = PBXGroup; + children = ( + 4F043DFE10616AE900733E45 /* test */, + 7C6009560D8A127A1B255032 /* Frameworks */, + 00DF69976BA67FBF7BC84829 /* Products */, + 7F2426214CD21294606E6093 /* Projects */, + ); + name = "testatomic"; + sourceTree = ""; + }; + 4F043DFE10616AE900733E45 /* test */ = { + isa = PBXGroup; + children = ( + 54330859254103D731515D90 /* testatomic.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7C6009560D8A127A1B255032 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 09A150504E10263515C14414 /* AudioToolbox.framework */, + 6D4C19F323B75D856812787F /* AudioUnit.framework */, + 1AE359BD2A9673542E98181F /* Cocoa.framework */, + 37540DD006A96C3C08D41CFE /* CoreAudio.framework */, + 574C4DD436087C51492D43B3 /* IOKit.framework */, + 45B72D0141D071FF4C41486E /* Carbon.framework */, + 454029B87D165A3370306EFD /* ForceFeedback.framework */, + 3BCB496E70D34CB5241D1087 /* CoreFoundation.framework */, + 008150AD1F8441BF65833853 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 00DF69976BA67FBF7BC84829 /* Products */ = { + isa = PBXGroup; + children = ( + 46F7356A68904D295FBF06D3 /* testatomic */, + ); + name = "Products"; + sourceTree = ""; + }; + 7F2426214CD21294606E6093 /* Projects */ = { + isa = PBXGroup; + children = ( + 5B9110BF2C18721424265DC2 /* SDL2main.xcodeproj */, + 61946CBF2E6837466BFE7B96 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 108F3ABD6F7A3DDF29277E81 /* Products */ = { + isa = PBXGroup; + children = ( + 26805ECB03C10C4C10583FB0 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 20C85614704965D87A8831CD /* Products */ = { + isa = PBXGroup; + children = ( + 70163DCB7F7A4A513D3E4F7A /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 415225415C793CF93B6C48BB /* testatomic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1BEB0C2039841455059663BA /* Build configuration list for PBXNativeTarget "testatomic" */; + buildPhases = ( + 506603C11BBD535932F232B1 /* Resources */, + 30662E732E7067B865390F2F /* Sources */, + 134752C077415E7D02F75654 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 6CCA644F4019420773C07A30 /* PBXTargetDependency */, + 07855B5D48D922A52EFF1306 /* PBXTargetDependency */, + ); + name = "testatomic"; + productInstallPath = "$(HOME)/bin"; + productName = "testatomic"; + productReference = 46F7356A68904D295FBF06D3 /* testatomic */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testatomic" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 212A608F0CC1571F52F633FB /* testatomic */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 108F3ABD6F7A3DDF29277E81 /* Products */; + ProjectRef = 5B9110BF2C18721424265DC2 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 20C85614704965D87A8831CD /* Products */; + ProjectRef = 61946CBF2E6837466BFE7B96 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 415225415C793CF93B6C48BB /* testatomic */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 26805ECB03C10C4C10583FB0 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 035B6577156746CC13202FA0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 70163DCB7F7A4A513D3E4F7A /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 251D257954BF783F084324FA /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 506603C11BBD535932F232B1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 30662E732E7067B865390F2F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 57876D99114444BD06CB79EA /* testatomic.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6CCA644F4019420773C07A30 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 6F8D40AE773C25A10EA02D59 /* PBXContainerItemProxy */; + }; + 07855B5D48D922A52EFF1306 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 38C722631617477D60904E7D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0059059B309E03CE78EC0408 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Debug Universal"; + }; + 59BF346A32B248880DDA7290 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Debug Native"; + }; + 3EBA4B4B351A446C3FBB385A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Release Universal"; + }; + 6430394B78573C0F285F23A1 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Release Native"; + }; + 66B718A43B48147F4C584EE0 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 589213A76C373A4B3FAF174E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 21955E8308B20083425838E3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 3C6B53B876BA4FE97C24513D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1BEB0C2039841455059663BA /* Build configuration list for PBXNativeTarget "testatomic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0059059B309E03CE78EC0408 /* Debug Universal */, + 59BF346A32B248880DDA7290 /* Debug Native */, + 3EBA4B4B351A446C3FBB385A /* Release Universal */, + 6430394B78573C0F285F23A1 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testatomic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 66B718A43B48147F4C584EE0 /* Debug Universal */, + 589213A76C373A4B3FAF174E /* Debug Native */, + 21955E8308B20083425838E3 /* Release Universal */, + 3C6B53B876BA4FE97C24513D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..e671a57049 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 7D983EB23BB023620FDC631B /* testaudioinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 6AAB0BDF19C76D3D44A60FC7 /* testaudioinfo.c */; }; + 2E3807C25FFB079D6F30596E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02CA1F0E0C8467F463624ADD /* AudioToolbox.framework */; }; + 187423281AF4481F16147BB7 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BCD1AE972C161E11F071578 /* AudioUnit.framework */; }; + 11950DD740FE6A3749CC2DC7 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 31E736320F1E3B7452516A65 /* Cocoa.framework */; }; + 3EC26A2B6C6512FD2BE143E6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 220C55811EEC52AA1CBD3ED5 /* CoreAudio.framework */; }; + 69A76E9B0F5C17A229A66F1A /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FD87BFB5C244C2B46E02D9A /* IOKit.framework */; }; + 46C36AF300D05D543C255910 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F045D6C671C7A110BA74023 /* Carbon.framework */; }; + 200D3BD6702F27A77E1F56EA /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 36D61BA23D7303CA76E47619 /* ForceFeedback.framework */; }; + 1A2A488E19AB4A3438E4145C /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4911023B0A6C6D8B460C750E /* CoreFoundation.framework */; }; + 1C60207D19CE379667A66146 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A445DDC49FF3F2D2F335A6E /* OpenGL.framework */; }; + 177E722D6B0D287924706E29 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CE709F778906FDC607E7935 /* libSDL2main.a */; }; + 45D35D816F2C3A8440B327FB /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DF04DB11F794E8A077A0454 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 11EB0CF20F6227641BBC548E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76F81FA525C6233E40D2394E /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 5480371703F501BF596B2FC6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76F81FA525C6233E40D2394E /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 438C359D597141EF6E1A0AD9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 75181E2E17BE3DDB19AC1FB6 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 4FFC5D4964944802134720DC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 75181E2E17BE3DDB19AC1FB6 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 6AAB0BDF19C76D3D44A60FC7 /* testaudioinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testaudioinfo.c"; path = "../../../../../test/testaudioinfo.c"; sourceTree = ""; }; + 02CA1F0E0C8467F463624ADD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 5BCD1AE972C161E11F071578 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 31E736320F1E3B7452516A65 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 220C55811EEC52AA1CBD3ED5 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 5FD87BFB5C244C2B46E02D9A /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 1F045D6C671C7A110BA74023 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 36D61BA23D7303CA76E47619 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 4911023B0A6C6D8B460C750E /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 5A445DDC49FF3F2D2F335A6E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 36B537061DB55E06101D603D /* testaudioinfo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testaudioinfo"; path = "testaudioinfo"; sourceTree = BUILT_PRODUCTS_DIR; }; + 76F81FA525C6233E40D2394E /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 75181E2E17BE3DDB19AC1FB6 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 575531557DAD0AA659EC2F8D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2E3807C25FFB079D6F30596E /* AudioToolbox.framework in Frameworks */, + 187423281AF4481F16147BB7 /* AudioUnit.framework in Frameworks */, + 11950DD740FE6A3749CC2DC7 /* Cocoa.framework in Frameworks */, + 3EC26A2B6C6512FD2BE143E6 /* CoreAudio.framework in Frameworks */, + 69A76E9B0F5C17A229A66F1A /* IOKit.framework in Frameworks */, + 46C36AF300D05D543C255910 /* Carbon.framework in Frameworks */, + 200D3BD6702F27A77E1F56EA /* ForceFeedback.framework in Frameworks */, + 1A2A488E19AB4A3438E4145C /* CoreFoundation.framework in Frameworks */, + 1C60207D19CE379667A66146 /* OpenGL.framework in Frameworks */, + 177E722D6B0D287924706E29 /* libSDL2main.a in Frameworks */, + 45D35D816F2C3A8440B327FB /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2F800DA22701573041067203 /* testaudioinfo */ = { + isa = PBXGroup; + children = ( + 305F699367EA668A74457BEA /* test */, + 317A67855A065AB524B17024 /* Frameworks */, + 76C8571C169A70E415E32AD4 /* Products */, + 0487685B323E227622CB3FD7 /* Projects */, + ); + name = "testaudioinfo"; + sourceTree = ""; + }; + 305F699367EA668A74457BEA /* test */ = { + isa = PBXGroup; + children = ( + 6AAB0BDF19C76D3D44A60FC7 /* testaudioinfo.c */, + ); + name = "test"; + sourceTree = ""; + }; + 317A67855A065AB524B17024 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 02CA1F0E0C8467F463624ADD /* AudioToolbox.framework */, + 5BCD1AE972C161E11F071578 /* AudioUnit.framework */, + 31E736320F1E3B7452516A65 /* Cocoa.framework */, + 220C55811EEC52AA1CBD3ED5 /* CoreAudio.framework */, + 5FD87BFB5C244C2B46E02D9A /* IOKit.framework */, + 1F045D6C671C7A110BA74023 /* Carbon.framework */, + 36D61BA23D7303CA76E47619 /* ForceFeedback.framework */, + 4911023B0A6C6D8B460C750E /* CoreFoundation.framework */, + 5A445DDC49FF3F2D2F335A6E /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 76C8571C169A70E415E32AD4 /* Products */ = { + isa = PBXGroup; + children = ( + 36B537061DB55E06101D603D /* testaudioinfo */, + ); + name = "Products"; + sourceTree = ""; + }; + 0487685B323E227622CB3FD7 /* Projects */ = { + isa = PBXGroup; + children = ( + 76F81FA525C6233E40D2394E /* SDL2main.xcodeproj */, + 75181E2E17BE3DDB19AC1FB6 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0AE37B0B40D661BA1E6D3683 /* Products */ = { + isa = PBXGroup; + children = ( + 4CE709F778906FDC607E7935 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 1D9604843684239C18526ED2 /* Products */ = { + isa = PBXGroup; + children = ( + 7DF04DB11F794E8A077A0454 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4B3516596A75307554C0362C /* testaudioinfo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5F9804010243275821A85AA7 /* Build configuration list for PBXNativeTarget "testaudioinfo" */; + buildPhases = ( + 474D223C1A7F40B75D6F585D /* Resources */, + 66FB20826B0E24E80F4C4F60 /* Sources */, + 575531557DAD0AA659EC2F8D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 71194949090F64EF33633A28 /* PBXTargetDependency */, + 696E490D34BC5E13449D52A6 /* PBXTargetDependency */, + ); + name = "testaudioinfo"; + productInstallPath = "$(HOME)/bin"; + productName = "testaudioinfo"; + productReference = 36B537061DB55E06101D603D /* testaudioinfo */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testaudioinfo" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2F800DA22701573041067203 /* testaudioinfo */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0AE37B0B40D661BA1E6D3683 /* Products */; + ProjectRef = 76F81FA525C6233E40D2394E /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 1D9604843684239C18526ED2 /* Products */; + ProjectRef = 75181E2E17BE3DDB19AC1FB6 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4B3516596A75307554C0362C /* testaudioinfo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 4CE709F778906FDC607E7935 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 11EB0CF20F6227641BBC548E /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 7DF04DB11F794E8A077A0454 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 438C359D597141EF6E1A0AD9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 474D223C1A7F40B75D6F585D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 66FB20826B0E24E80F4C4F60 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D983EB23BB023620FDC631B /* testaudioinfo.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 71194949090F64EF33633A28 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5480371703F501BF596B2FC6 /* PBXContainerItemProxy */; + }; + 696E490D34BC5E13449D52A6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 4FFC5D4964944802134720DC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7C4539DF61E102A0092563DD /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Debug Universal"; + }; + 709D6AC8015263455B1E4001 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Debug Native"; + }; + 54AF607B62B6325307AF2490 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Release Universal"; + }; + 2CC1663213CF200A0F3B7530 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Release Native"; + }; + 458E213409073A93136E2B1A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 0DC7361B4B095F1630AB44F1 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 1D0A21EE328F5FA61BA71A6C /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 41A348A7712773961D725869 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5F9804010243275821A85AA7 /* Build configuration list for PBXNativeTarget "testaudioinfo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7C4539DF61E102A0092563DD /* Debug Universal */, + 709D6AC8015263455B1E4001 /* Debug Native */, + 54AF607B62B6325307AF2490 /* Release Universal */, + 2CC1663213CF200A0F3B7530 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testaudioinfo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 458E213409073A93136E2B1A /* Debug Universal */, + 0DC7361B4B095F1630AB44F1 /* Debug Native */, + 1D0A21EE328F5FA61BA71A6C /* Release Universal */, + 41A348A7712773961D725869 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testautomation/testautomation.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testautomation/testautomation.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..2b5b8d1ed2 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testautomation/testautomation.xcodeproj/project.pbxproj @@ -0,0 +1,570 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 2F335BE80DE0020E203E5DD8 /* testautomation.c in Sources */ = {isa = PBXBuildFile; fileRef = 794762FD04D1549934E159CD /* testautomation.c */; }; + 653716B97F514F1115D6458F /* testautomation_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 471E0D47498B7B5274FB14FE /* testautomation_audio.c */; }; + 7C22594E259C512B68C3074A /* testautomation_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 4F3953A43A3A4F8F4C8E36A4 /* testautomation_clipboard.c */; }; + 0D0C2F586E93033058EB4F2D /* testautomation_events.c in Sources */ = {isa = PBXBuildFile; fileRef = 2786614254EC5FB566462683 /* testautomation_events.c */; }; + 0EF101106870459C05C777E5 /* testautomation_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 3D67397E3717790131435254 /* testautomation_keyboard.c */; }; + 4473155D1CA524123B156875 /* testautomation_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 5BEC6F3916D7143614DF3D74 /* testautomation_main.c */; }; + 2C2A04F453191DD549990B38 /* testautomation_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 6D017E6145BD211645712A51 /* testautomation_mouse.c */; }; + 174141BE560F099B2C951FF6 /* testautomation_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = 435E6BF81AB9117F68EB441C /* testautomation_pixels.c */; }; + 15E2389B6AB717B517F50AA9 /* testautomation_platform.c in Sources */ = {isa = PBXBuildFile; fileRef = 0055527C0684494769333104 /* testautomation_platform.c */; }; + 4E710EFA4F50233E3BB50A17 /* testautomation_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 0DC13053355641975EF14CFC /* testautomation_rect.c */; }; + 07001C17388A1B8604CF33C9 /* testautomation_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 7EE110555956273251AE02BD /* testautomation_render.c */; }; + 115828D60DF755371C7E4B6F /* testautomation_rwops.c in Sources */ = {isa = PBXBuildFile; fileRef = 05F752B051CB188A1FA10AE0 /* testautomation_rwops.c */; }; + 17E762DE07227FFC234A7E9B /* testautomation_sdltest.c in Sources */ = {isa = PBXBuildFile; fileRef = 140F10664DCC4A491D2D06DB /* testautomation_sdltest.c */; }; + 3A1421F37C845F1F1A9A1691 /* testautomation_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 26AF4A18290748D322B947F5 /* testautomation_stdlib.c */; }; + 491B449B228565596C3C6841 /* testautomation_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F0C25EE376B02EA064B50F6 /* testautomation_surface.c */; }; + 4EE3570C11213BFA50727385 /* testautomation_syswm.c in Sources */ = {isa = PBXBuildFile; fileRef = 1267615F52DF35C27BFC749A /* testautomation_syswm.c */; }; + 15C3490D20032CC168A5510A /* testautomation_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 30EA083B11207D622DDB12FC /* testautomation_timer.c */; }; + 0D3D4F4B7C2244F36B98001A /* testautomation_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 799007AB7FD4531345B703C3 /* testautomation_video.c */; }; + 634F703209AF4BF432C670FF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 525D58370F4C52CF3B2C6C24 /* AudioToolbox.framework */; }; + 2FD209F3507D70B84CE97341 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CA133CE381F37C11A1B0BEB /* AudioUnit.framework */; }; + 701A5D0F305059164EA22D84 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69CB409266666CB01DB03008 /* Cocoa.framework */; }; + 3FD61CBC1F3C541624184811 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6448343A600A31F50A122DE9 /* CoreAudio.framework */; }; + 472C522A706B317850BA6C51 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11861357591E56A023ED491D /* IOKit.framework */; }; + 054B18C7468D589C15E05FCA /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B20422947087C5367012759 /* Carbon.framework */; }; + 22AD0BEA6F4E275414225D5D /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C11BD2221C785317CF3370 /* ForceFeedback.framework */; }; + 3B8A7FF62F4A2D17470C080E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A682EF21FA87CBA3C2B3F7D /* CoreFoundation.framework */; }; + 14960DFD058B085471CB4AB3 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77D94DCC4A8B73683E874CF3 /* OpenGL.framework */; }; + 7C8926195FA63E4B429155D2 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 65657808084F160069055C6D /* libSDL2main.a */; }; + 77A0414679C77DF659307C2A /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 30744F3724232CC61005573B /* libSDL2test.a */; }; + 667727B43C5E63914EDD2933 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 51F53A75641962D9541A7DD9 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 1DCE473D01537CA077766F74 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6906495449E9743407E812AA /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 4570617838BB3896391D43EC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6906495449E9743407E812AA /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 4893660C40505DFE57DA4601 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0058171435E569F359901CA9 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 19D24173024D0FC63B313020 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0058171435E569F359901CA9 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 2B800D747BF326C622B92D93 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29FC6095786D7CDA66E54FA2 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 2325525D7B406481596F1ACA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29FC6095786D7CDA66E54FA2 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 794762FD04D1549934E159CD /* testautomation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation.c"; path = "../../../../../test/testautomation.c"; sourceTree = ""; }; + 471E0D47498B7B5274FB14FE /* testautomation_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_audio.c"; path = "../../../../../test/testautomation_audio.c"; sourceTree = ""; }; + 4F3953A43A3A4F8F4C8E36A4 /* testautomation_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_clipboard.c"; path = "../../../../../test/testautomation_clipboard.c"; sourceTree = ""; }; + 2786614254EC5FB566462683 /* testautomation_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_events.c"; path = "../../../../../test/testautomation_events.c"; sourceTree = ""; }; + 3D67397E3717790131435254 /* testautomation_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_keyboard.c"; path = "../../../../../test/testautomation_keyboard.c"; sourceTree = ""; }; + 5BEC6F3916D7143614DF3D74 /* testautomation_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_main.c"; path = "../../../../../test/testautomation_main.c"; sourceTree = ""; }; + 6D017E6145BD211645712A51 /* testautomation_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_mouse.c"; path = "../../../../../test/testautomation_mouse.c"; sourceTree = ""; }; + 435E6BF81AB9117F68EB441C /* testautomation_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_pixels.c"; path = "../../../../../test/testautomation_pixels.c"; sourceTree = ""; }; + 0055527C0684494769333104 /* testautomation_platform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_platform.c"; path = "../../../../../test/testautomation_platform.c"; sourceTree = ""; }; + 0DC13053355641975EF14CFC /* testautomation_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_rect.c"; path = "../../../../../test/testautomation_rect.c"; sourceTree = ""; }; + 7EE110555956273251AE02BD /* testautomation_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_render.c"; path = "../../../../../test/testautomation_render.c"; sourceTree = ""; }; + 05F752B051CB188A1FA10AE0 /* testautomation_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_rwops.c"; path = "../../../../../test/testautomation_rwops.c"; sourceTree = ""; }; + 140F10664DCC4A491D2D06DB /* testautomation_sdltest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_sdltest.c"; path = "../../../../../test/testautomation_sdltest.c"; sourceTree = ""; }; + 26AF4A18290748D322B947F5 /* testautomation_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_stdlib.c"; path = "../../../../../test/testautomation_stdlib.c"; sourceTree = ""; }; + 3F19057030C97AB601CD4266 /* testautomation_suites.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "testautomation_suites.h"; path = "../../../../../test/testautomation_suites.h"; sourceTree = ""; }; + 5F0C25EE376B02EA064B50F6 /* testautomation_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_surface.c"; path = "../../../../../test/testautomation_surface.c"; sourceTree = ""; }; + 1267615F52DF35C27BFC749A /* testautomation_syswm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_syswm.c"; path = "../../../../../test/testautomation_syswm.c"; sourceTree = ""; }; + 30EA083B11207D622DDB12FC /* testautomation_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_timer.c"; path = "../../../../../test/testautomation_timer.c"; sourceTree = ""; }; + 799007AB7FD4531345B703C3 /* testautomation_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_video.c"; path = "../../../../../test/testautomation_video.c"; sourceTree = ""; }; + 525D58370F4C52CF3B2C6C24 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 1CA133CE381F37C11A1B0BEB /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 69CB409266666CB01DB03008 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 6448343A600A31F50A122DE9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 11861357591E56A023ED491D /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3B20422947087C5367012759 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 58C11BD2221C785317CF3370 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3A682EF21FA87CBA3C2B3F7D /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 77D94DCC4A8B73683E874CF3 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 75027F0E24CC623E719313AB /* testautomation */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testautomation"; path = "testautomation"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6906495449E9743407E812AA /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 0058171435E569F359901CA9 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 29FC6095786D7CDA66E54FA2 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5D6A013F76D150BA04E85B78 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 634F703209AF4BF432C670FF /* AudioToolbox.framework in Frameworks */, + 2FD209F3507D70B84CE97341 /* AudioUnit.framework in Frameworks */, + 701A5D0F305059164EA22D84 /* Cocoa.framework in Frameworks */, + 3FD61CBC1F3C541624184811 /* CoreAudio.framework in Frameworks */, + 472C522A706B317850BA6C51 /* IOKit.framework in Frameworks */, + 054B18C7468D589C15E05FCA /* Carbon.framework in Frameworks */, + 22AD0BEA6F4E275414225D5D /* ForceFeedback.framework in Frameworks */, + 3B8A7FF62F4A2D17470C080E /* CoreFoundation.framework in Frameworks */, + 14960DFD058B085471CB4AB3 /* OpenGL.framework in Frameworks */, + 7C8926195FA63E4B429155D2 /* libSDL2main.a in Frameworks */, + 77A0414679C77DF659307C2A /* libSDL2test.a in Frameworks */, + 667727B43C5E63914EDD2933 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 202F2A541FD450F927A57FBC /* testautomation */ = { + isa = PBXGroup; + children = ( + 1B64500B363640606F5E14E5 /* test */, + 363D69995B857A2815A13DC6 /* Frameworks */, + 60B1254425E50F951FCA074B /* Products */, + 0A2C78C572E328E306C02744 /* Projects */, + ); + name = "testautomation"; + sourceTree = ""; + }; + 1B64500B363640606F5E14E5 /* test */ = { + isa = PBXGroup; + children = ( + 794762FD04D1549934E159CD /* testautomation.c */, + 471E0D47498B7B5274FB14FE /* testautomation_audio.c */, + 4F3953A43A3A4F8F4C8E36A4 /* testautomation_clipboard.c */, + 2786614254EC5FB566462683 /* testautomation_events.c */, + 3D67397E3717790131435254 /* testautomation_keyboard.c */, + 5BEC6F3916D7143614DF3D74 /* testautomation_main.c */, + 6D017E6145BD211645712A51 /* testautomation_mouse.c */, + 435E6BF81AB9117F68EB441C /* testautomation_pixels.c */, + 0055527C0684494769333104 /* testautomation_platform.c */, + 0DC13053355641975EF14CFC /* testautomation_rect.c */, + 7EE110555956273251AE02BD /* testautomation_render.c */, + 05F752B051CB188A1FA10AE0 /* testautomation_rwops.c */, + 140F10664DCC4A491D2D06DB /* testautomation_sdltest.c */, + 26AF4A18290748D322B947F5 /* testautomation_stdlib.c */, + 3F19057030C97AB601CD4266 /* testautomation_suites.h */, + 5F0C25EE376B02EA064B50F6 /* testautomation_surface.c */, + 1267615F52DF35C27BFC749A /* testautomation_syswm.c */, + 30EA083B11207D622DDB12FC /* testautomation_timer.c */, + 799007AB7FD4531345B703C3 /* testautomation_video.c */, + ); + name = "test"; + sourceTree = ""; + }; + 363D69995B857A2815A13DC6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 525D58370F4C52CF3B2C6C24 /* AudioToolbox.framework */, + 1CA133CE381F37C11A1B0BEB /* AudioUnit.framework */, + 69CB409266666CB01DB03008 /* Cocoa.framework */, + 6448343A600A31F50A122DE9 /* CoreAudio.framework */, + 11861357591E56A023ED491D /* IOKit.framework */, + 3B20422947087C5367012759 /* Carbon.framework */, + 58C11BD2221C785317CF3370 /* ForceFeedback.framework */, + 3A682EF21FA87CBA3C2B3F7D /* CoreFoundation.framework */, + 77D94DCC4A8B73683E874CF3 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 60B1254425E50F951FCA074B /* Products */ = { + isa = PBXGroup; + children = ( + 75027F0E24CC623E719313AB /* testautomation */, + ); + name = "Products"; + sourceTree = ""; + }; + 0A2C78C572E328E306C02744 /* Projects */ = { + isa = PBXGroup; + children = ( + 6906495449E9743407E812AA /* SDL2main.xcodeproj */, + 0058171435E569F359901CA9 /* SDL2test.xcodeproj */, + 29FC6095786D7CDA66E54FA2 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0BDA2B645FDD3BEE211A6954 /* Products */ = { + isa = PBXGroup; + children = ( + 65657808084F160069055C6D /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 7829072B1E387FAA7F1D6362 /* Products */ = { + isa = PBXGroup; + children = ( + 30744F3724232CC61005573B /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 6E4E53E23BE56BD653904C40 /* Products */ = { + isa = PBXGroup; + children = ( + 51F53A75641962D9541A7DD9 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 586C3E63152630904E4344B7 /* testautomation */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5BA144AB73752BB233B15E56 /* Build configuration list for PBXNativeTarget "testautomation" */; + buildPhases = ( + 602B2E997588500D28BF3D9C /* Resources */, + 5E6E466B254968535F104F95 /* Sources */, + 5D6A013F76D150BA04E85B78 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5E91187E198B10230A423327 /* PBXTargetDependency */, + 34B918CE0EB26C3E7E5A4A83 /* PBXTargetDependency */, + 74B40BD2278E0624550E1B92 /* PBXTargetDependency */, + ); + name = "testautomation"; + productInstallPath = "$(HOME)/bin"; + productName = "testautomation"; + productReference = 75027F0E24CC623E719313AB /* testautomation */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testautomation" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 202F2A541FD450F927A57FBC /* testautomation */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0BDA2B645FDD3BEE211A6954 /* Products */; + ProjectRef = 6906495449E9743407E812AA /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 7829072B1E387FAA7F1D6362 /* Products */; + ProjectRef = 0058171435E569F359901CA9 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 6E4E53E23BE56BD653904C40 /* Products */; + ProjectRef = 29FC6095786D7CDA66E54FA2 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 586C3E63152630904E4344B7 /* testautomation */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 65657808084F160069055C6D /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 1DCE473D01537CA077766F74 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 30744F3724232CC61005573B /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 4893660C40505DFE57DA4601 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 51F53A75641962D9541A7DD9 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2B800D747BF326C622B92D93 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 602B2E997588500D28BF3D9C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5E6E466B254968535F104F95 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F335BE80DE0020E203E5DD8 /* testautomation.c in Sources */, + 653716B97F514F1115D6458F /* testautomation_audio.c in Sources */, + 7C22594E259C512B68C3074A /* testautomation_clipboard.c in Sources */, + 0D0C2F586E93033058EB4F2D /* testautomation_events.c in Sources */, + 0EF101106870459C05C777E5 /* testautomation_keyboard.c in Sources */, + 4473155D1CA524123B156875 /* testautomation_main.c in Sources */, + 2C2A04F453191DD549990B38 /* testautomation_mouse.c in Sources */, + 174141BE560F099B2C951FF6 /* testautomation_pixels.c in Sources */, + 15E2389B6AB717B517F50AA9 /* testautomation_platform.c in Sources */, + 4E710EFA4F50233E3BB50A17 /* testautomation_rect.c in Sources */, + 07001C17388A1B8604CF33C9 /* testautomation_render.c in Sources */, + 115828D60DF755371C7E4B6F /* testautomation_rwops.c in Sources */, + 17E762DE07227FFC234A7E9B /* testautomation_sdltest.c in Sources */, + 3A1421F37C845F1F1A9A1691 /* testautomation_stdlib.c in Sources */, + 491B449B228565596C3C6841 /* testautomation_surface.c in Sources */, + 4EE3570C11213BFA50727385 /* testautomation_syswm.c in Sources */, + 15C3490D20032CC168A5510A /* testautomation_timer.c in Sources */, + 0D3D4F4B7C2244F36B98001A /* testautomation_video.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5E91187E198B10230A423327 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 4570617838BB3896391D43EC /* PBXContainerItemProxy */; + }; + 34B918CE0EB26C3E7E5A4A83 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 19D24173024D0FC63B313020 /* PBXContainerItemProxy */; + }; + 74B40BD2278E0624550E1B92 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 2325525D7B406481596F1ACA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 530A5E2B6C51709625A378DA /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Debug Universal"; + }; + 3959435D388F69171D142D41 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Debug Native"; + }; + 273E09722ABB6C217CC7119E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Release Universal"; + }; + 320B04BC782D7AB87BAD2323 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Release Native"; + }; + 605F7F38404C55F0155D47FF /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 39A135251D9001C821A36BFA /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 55770DCA779C47491C7B5963 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 77191B3A2E603070399E514A /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5BA144AB73752BB233B15E56 /* Build configuration list for PBXNativeTarget "testautomation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 530A5E2B6C51709625A378DA /* Debug Universal */, + 3959435D388F69171D142D41 /* Debug Native */, + 273E09722ABB6C217CC7119E /* Release Universal */, + 320B04BC782D7AB87BAD2323 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testautomation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 605F7F38404C55F0155D47FF /* Debug Universal */, + 39A135251D9001C821A36BFA /* Debug Native */, + 55770DCA779C47491C7B5963 /* Release Universal */, + 77191B3A2E603070399E514A /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..64b971c92d --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 35DE328145AD6E0914745F79 /* testdrawchessboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 60996D1717D963E769CD2898 /* testdrawchessboard.c */; }; + 0110486431865C1E669C36DF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53165EAA0B2E158F6E762B5F /* AudioToolbox.framework */; }; + 7FC97D7F201C0EF852E13862 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 769C1044757D0E64647A44A6 /* AudioUnit.framework */; }; + 41D609FD5D23379474C46FFC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A7E27DA6BBA2A650C8A66F2 /* Cocoa.framework */; }; + 5277264E7ED10A462AE05E06 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D501CC572D136350610399A /* CoreAudio.framework */; }; + 722625F2417A3E3D3E8D1D28 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A559841B373846021274DF /* IOKit.framework */; }; + 45827A9C4A18208249DA2B1C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 476967DE4E9A09EF64091D16 /* Carbon.framework */; }; + 5F3605382F072DF26D481BA4 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69AA19F74A2B61D2520C3776 /* ForceFeedback.framework */; }; + 20E612CC280776C71AB64008 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DFA232B67675BA732AC3F7C /* CoreFoundation.framework */; }; + 10AF6245321D238657A06FCC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76831E5E5DBD4629335D23F8 /* OpenGL.framework */; }; + 7E680796485C4FD40B7944EE /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 556C3C2D330A0B0047FD5F57 /* libSDL2main.a */; }; + 33241E5A5B95214B7472122D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 66F16E0067F26FD93B4E13D3 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5E9264457D8F4FDA258F7D50 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 48D519EF36B55DA1160D5EE2 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 398A4D6C75E32B05043D51FE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 48D519EF36B55DA1160D5EE2 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 3E9F799007DC20805CD54D80 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0CB41069655D7E0866A7735B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 290C1261537627EA7B57269C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0CB41069655D7E0866A7735B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 60996D1717D963E769CD2898 /* testdrawchessboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testdrawchessboard.c"; path = "../../../../../test/testdrawchessboard.c"; sourceTree = ""; }; + 53165EAA0B2E158F6E762B5F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 769C1044757D0E64647A44A6 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 5A7E27DA6BBA2A650C8A66F2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 2D501CC572D136350610399A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 72A559841B373846021274DF /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 476967DE4E9A09EF64091D16 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 69AA19F74A2B61D2520C3776 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2DFA232B67675BA732AC3F7C /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 76831E5E5DBD4629335D23F8 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5A0869BF37CB00921B944598 /* testchessboard */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testchessboard"; path = "testchessboard"; sourceTree = BUILT_PRODUCTS_DIR; }; + 48D519EF36B55DA1160D5EE2 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 0CB41069655D7E0866A7735B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 24E15BE51C2017BE68F3698F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0110486431865C1E669C36DF /* AudioToolbox.framework in Frameworks */, + 7FC97D7F201C0EF852E13862 /* AudioUnit.framework in Frameworks */, + 41D609FD5D23379474C46FFC /* Cocoa.framework in Frameworks */, + 5277264E7ED10A462AE05E06 /* CoreAudio.framework in Frameworks */, + 722625F2417A3E3D3E8D1D28 /* IOKit.framework in Frameworks */, + 45827A9C4A18208249DA2B1C /* Carbon.framework in Frameworks */, + 5F3605382F072DF26D481BA4 /* ForceFeedback.framework in Frameworks */, + 20E612CC280776C71AB64008 /* CoreFoundation.framework in Frameworks */, + 10AF6245321D238657A06FCC /* OpenGL.framework in Frameworks */, + 7E680796485C4FD40B7944EE /* libSDL2main.a in Frameworks */, + 33241E5A5B95214B7472122D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2BF10F8D27097A0366F2294C /* testchessboard */ = { + isa = PBXGroup; + children = ( + 76D535B72B981F7C2015797C /* test */, + 2A7C3CF320AC38DF78681804 /* Frameworks */, + 7BB4694341283B1B173A71E2 /* Products */, + 679E6D3E2EFF2738661F1F8C /* Projects */, + ); + name = "testchessboard"; + sourceTree = ""; + }; + 76D535B72B981F7C2015797C /* test */ = { + isa = PBXGroup; + children = ( + 60996D1717D963E769CD2898 /* testdrawchessboard.c */, + ); + name = "test"; + sourceTree = ""; + }; + 2A7C3CF320AC38DF78681804 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 53165EAA0B2E158F6E762B5F /* AudioToolbox.framework */, + 769C1044757D0E64647A44A6 /* AudioUnit.framework */, + 5A7E27DA6BBA2A650C8A66F2 /* Cocoa.framework */, + 2D501CC572D136350610399A /* CoreAudio.framework */, + 72A559841B373846021274DF /* IOKit.framework */, + 476967DE4E9A09EF64091D16 /* Carbon.framework */, + 69AA19F74A2B61D2520C3776 /* ForceFeedback.framework */, + 2DFA232B67675BA732AC3F7C /* CoreFoundation.framework */, + 76831E5E5DBD4629335D23F8 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 7BB4694341283B1B173A71E2 /* Products */ = { + isa = PBXGroup; + children = ( + 5A0869BF37CB00921B944598 /* testchessboard */, + ); + name = "Products"; + sourceTree = ""; + }; + 679E6D3E2EFF2738661F1F8C /* Projects */ = { + isa = PBXGroup; + children = ( + 48D519EF36B55DA1160D5EE2 /* SDL2main.xcodeproj */, + 0CB41069655D7E0866A7735B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 49B200351F1678324E3174EA /* Products */ = { + isa = PBXGroup; + children = ( + 556C3C2D330A0B0047FD5F57 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 41036B430C9B4C7529775FA4 /* Products */ = { + isa = PBXGroup; + children = ( + 66F16E0067F26FD93B4E13D3 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 07D02207186251D71CCD7829 /* testchessboard */ = { + isa = PBXNativeTarget; + buildConfigurationList = 01B27E227F386B85001A41CF /* Build configuration list for PBXNativeTarget "testchessboard" */; + buildPhases = ( + 3D931C945EA21D4C0F1E1330 /* Resources */, + 4E7F03F413B507E954C37591 /* Sources */, + 24E15BE51C2017BE68F3698F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 214F56C74D9256F3225A5077 /* PBXTargetDependency */, + 510C136A2F672D291C086F8B /* PBXTargetDependency */, + ); + name = "testchessboard"; + productInstallPath = "$(HOME)/bin"; + productName = "testchessboard"; + productReference = 5A0869BF37CB00921B944598 /* testchessboard */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testchessboard" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2BF10F8D27097A0366F2294C /* testchessboard */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 49B200351F1678324E3174EA /* Products */; + ProjectRef = 48D519EF36B55DA1160D5EE2 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 41036B430C9B4C7529775FA4 /* Products */; + ProjectRef = 0CB41069655D7E0866A7735B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 07D02207186251D71CCD7829 /* testchessboard */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 556C3C2D330A0B0047FD5F57 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5E9264457D8F4FDA258F7D50 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 66F16E0067F26FD93B4E13D3 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3E9F799007DC20805CD54D80 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3D931C945EA21D4C0F1E1330 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4E7F03F413B507E954C37591 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 35DE328145AD6E0914745F79 /* testdrawchessboard.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 214F56C74D9256F3225A5077 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 398A4D6C75E32B05043D51FE /* PBXContainerItemProxy */; + }; + 510C136A2F672D291C086F8B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 290C1261537627EA7B57269C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 67A117F234013A0663E16451 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Debug Universal"; + }; + 1BCC7B883E42796A3CD94CC9 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Debug Native"; + }; + 3D2D7BB13A5266A84BEC1887 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Release Universal"; + }; + 417E6CAF07F903EB4F4348B8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Release Native"; + }; + 1B6F4D777CD26B656BBE3F65 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 61160B083DC61DEA14751448 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 573C43B32DD46E95354E4107 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4A8028AA6A024D75566E08F9 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 01B27E227F386B85001A41CF /* Build configuration list for PBXNativeTarget "testchessboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 67A117F234013A0663E16451 /* Debug Universal */, + 1BCC7B883E42796A3CD94CC9 /* Debug Native */, + 3D2D7BB13A5266A84BEC1887 /* Release Universal */, + 417E6CAF07F903EB4F4348B8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testchessboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1B6F4D777CD26B656BBE3F65 /* Debug Universal */, + 61160B083DC61DEA14751448 /* Debug Native */, + 573C43B32DD46E95354E4107 /* Release Universal */, + 4A8028AA6A024D75566E08F9 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..c8f56627bd --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj @@ -0,0 +1,500 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 46A643E578D4673508D31259 /* testdraw2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B3F36FF4D8A2DD716C440D4 /* testdraw2.c */; }; + 107A71C744DF30D240C81A27 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 362D61AA1F56529425652D31 /* AudioToolbox.framework */; }; + 26446575064870BF494C3E42 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34D47D841ED54D2751B771C4 /* AudioUnit.framework */; }; + 2553249C28071DD2726E1BDD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 797B033D5B6C490E5BA75B83 /* Cocoa.framework */; }; + 649A616F5282137110F84534 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 684A6B9055540E5713A96DE1 /* CoreAudio.framework */; }; + 63531BEB1095549A6C6849FF /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04076F4F45DE0B1B2DC833EA /* IOKit.framework */; }; + 4C63217B29F3164A549F36A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07C063862A593E306BA26C60 /* Carbon.framework */; }; + 04090BB1204A6D8477DF0481 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07F8332E3B3B280911103CCC /* ForceFeedback.framework */; }; + 46D34FBB1AE60EA458434F87 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 332C0F1827311CFA0A6D15BF /* CoreFoundation.framework */; }; + 6CF6242256FC3EFC139206FC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 293C2E4D5E1B693D285E501A /* OpenGL.framework */; }; + 177F2BC3249E24E164CD7E1E /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 43A460245E6C3EA750F733AE /* libSDL2main.a */; }; + 09B2308925B451B75142513C /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5128532F4FD46D876FE00730 /* libSDL2test.a */; }; + 2CAD3DB40BED09454E765342 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FCA07BB14A64ED71D202DC2 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 44CD19F82A1A1BD5563412AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 486A432B695035F428DF7ABF /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 11001D5A40213D8B28611B1A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 486A432B695035F428DF7ABF /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 0C4D504B1B2C6A111E1842E4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 644E4C3B5CA36B2702C76EAD /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 3D0670FA38FC52FF7C3D1BDC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 644E4C3B5CA36B2702C76EAD /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 66FA34A779DA6601017F6257 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 71C277AE425D745E65B23734 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 54892FDB58722851769A007D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 71C277AE425D745E65B23734 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3B3F36FF4D8A2DD716C440D4 /* testdraw2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testdraw2.c"; path = "../../../../../test/testdraw2.c"; sourceTree = ""; }; + 362D61AA1F56529425652D31 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 34D47D841ED54D2751B771C4 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 797B033D5B6C490E5BA75B83 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 684A6B9055540E5713A96DE1 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 04076F4F45DE0B1B2DC833EA /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 07C063862A593E306BA26C60 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 07F8332E3B3B280911103CCC /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 332C0F1827311CFA0A6D15BF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 293C2E4D5E1B693D285E501A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 23C77B2C463965F0177666B8 /* testdraw2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testdraw2"; path = "testdraw2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 486A432B695035F428DF7ABF /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 644E4C3B5CA36B2702C76EAD /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 71C277AE425D745E65B23734 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0954145A60A5100166C11418 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 107A71C744DF30D240C81A27 /* AudioToolbox.framework in Frameworks */, + 26446575064870BF494C3E42 /* AudioUnit.framework in Frameworks */, + 2553249C28071DD2726E1BDD /* Cocoa.framework in Frameworks */, + 649A616F5282137110F84534 /* CoreAudio.framework in Frameworks */, + 63531BEB1095549A6C6849FF /* IOKit.framework in Frameworks */, + 4C63217B29F3164A549F36A6 /* Carbon.framework in Frameworks */, + 04090BB1204A6D8477DF0481 /* ForceFeedback.framework in Frameworks */, + 46D34FBB1AE60EA458434F87 /* CoreFoundation.framework in Frameworks */, + 6CF6242256FC3EFC139206FC /* OpenGL.framework in Frameworks */, + 177F2BC3249E24E164CD7E1E /* libSDL2main.a in Frameworks */, + 09B2308925B451B75142513C /* libSDL2test.a in Frameworks */, + 2CAD3DB40BED09454E765342 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 743368A34B4F6B5F46612ABD /* testdraw2 */ = { + isa = PBXGroup; + children = ( + 02453B617F8E630254DC70B2 /* test */, + 48704837171A4361321663C5 /* Frameworks */, + 31D45CBF16B00A4231340C84 /* Products */, + 33AA14AE61EE0F092327166A /* Projects */, + ); + name = "testdraw2"; + sourceTree = ""; + }; + 02453B617F8E630254DC70B2 /* test */ = { + isa = PBXGroup; + children = ( + 3B3F36FF4D8A2DD716C440D4 /* testdraw2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 48704837171A4361321663C5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 362D61AA1F56529425652D31 /* AudioToolbox.framework */, + 34D47D841ED54D2751B771C4 /* AudioUnit.framework */, + 797B033D5B6C490E5BA75B83 /* Cocoa.framework */, + 684A6B9055540E5713A96DE1 /* CoreAudio.framework */, + 04076F4F45DE0B1B2DC833EA /* IOKit.framework */, + 07C063862A593E306BA26C60 /* Carbon.framework */, + 07F8332E3B3B280911103CCC /* ForceFeedback.framework */, + 332C0F1827311CFA0A6D15BF /* CoreFoundation.framework */, + 293C2E4D5E1B693D285E501A /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 31D45CBF16B00A4231340C84 /* Products */ = { + isa = PBXGroup; + children = ( + 23C77B2C463965F0177666B8 /* testdraw2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 33AA14AE61EE0F092327166A /* Projects */ = { + isa = PBXGroup; + children = ( + 486A432B695035F428DF7ABF /* SDL2main.xcodeproj */, + 644E4C3B5CA36B2702C76EAD /* SDL2test.xcodeproj */, + 71C277AE425D745E65B23734 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 709A16FC146E78AB389E28B2 /* Products */ = { + isa = PBXGroup; + children = ( + 43A460245E6C3EA750F733AE /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 448B2C942C3F78777583752F /* Products */ = { + isa = PBXGroup; + children = ( + 5128532F4FD46D876FE00730 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 7F4668843F6075EA15E66EAE /* Products */ = { + isa = PBXGroup; + children = ( + 3FCA07BB14A64ED71D202DC2 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 760571DE553A1046060419AF /* testdraw2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4AF14260522E507206777256 /* Build configuration list for PBXNativeTarget "testdraw2" */; + buildPhases = ( + 2885554E12050C36678F1720 /* Resources */, + 5F5E1D1D60F4401202675F17 /* Sources */, + 0954145A60A5100166C11418 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 55961288456A38F7056E167A /* PBXTargetDependency */, + 301E421E70274CB07282688E /* PBXTargetDependency */, + 3DD370C46E011FF460E30B87 /* PBXTargetDependency */, + ); + name = "testdraw2"; + productInstallPath = "$(HOME)/bin"; + productName = "testdraw2"; + productReference = 23C77B2C463965F0177666B8 /* testdraw2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testdraw2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 743368A34B4F6B5F46612ABD /* testdraw2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 709A16FC146E78AB389E28B2 /* Products */; + ProjectRef = 486A432B695035F428DF7ABF /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 448B2C942C3F78777583752F /* Products */; + ProjectRef = 644E4C3B5CA36B2702C76EAD /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 7F4668843F6075EA15E66EAE /* Products */; + ProjectRef = 71C277AE425D745E65B23734 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 760571DE553A1046060419AF /* testdraw2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 43A460245E6C3EA750F733AE /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 44CD19F82A1A1BD5563412AC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5128532F4FD46D876FE00730 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 0C4D504B1B2C6A111E1842E4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3FCA07BB14A64ED71D202DC2 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 66FA34A779DA6601017F6257 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2885554E12050C36678F1720 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5F5E1D1D60F4401202675F17 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 46A643E578D4673508D31259 /* testdraw2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 55961288456A38F7056E167A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 11001D5A40213D8B28611B1A /* PBXContainerItemProxy */; + }; + 301E421E70274CB07282688E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 3D0670FA38FC52FF7C3D1BDC /* PBXContainerItemProxy */; + }; + 3DD370C46E011FF460E30B87 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 54892FDB58722851769A007D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 23490E4A355E6ED176941E99 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Debug Universal"; + }; + 61BE161A26B87D1C766C2E32 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Debug Native"; + }; + 384C1F9A6BF9431F43C82E11 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Release Universal"; + }; + 56740DBE5084479C5D1C5B9E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Release Native"; + }; + 64A47BC169081DA211EB6FD6 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 73582B713A9717DA14E54679 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 075646D2218265927C9F53DD /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 09567873708D3A0355285D01 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4AF14260522E507206777256 /* Build configuration list for PBXNativeTarget "testdraw2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 23490E4A355E6ED176941E99 /* Debug Universal */, + 61BE161A26B87D1C766C2E32 /* Debug Native */, + 384C1F9A6BF9431F43C82E11 /* Release Universal */, + 56740DBE5084479C5D1C5B9E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testdraw2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 64A47BC169081DA211EB6FD6 /* Debug Universal */, + 73582B713A9717DA14E54679 /* Debug Native */, + 075646D2218265927C9F53DD /* Release Universal */, + 09567873708D3A0355285D01 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testerror/testerror.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testerror/testerror.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..38606ca018 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testerror/testerror.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 17F36FF223D577CE040E342A /* testerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 2AD528C05907077E1C980084 /* testerror.c */; }; + 5C7C76636FB4225049E30962 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 242A7ADB51E93AC8229B297F /* AudioToolbox.framework */; }; + 55D31CE04107687A523138C1 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F58459D51D43F875ECB6AE2 /* AudioUnit.framework */; }; + 16EF544D14414BCD300959E8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 334320CD2EB329612B4952EC /* Cocoa.framework */; }; + 312528E57525045D04E55E0B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C6C31CF3E812DF0797A394C /* CoreAudio.framework */; }; + 6164728C6E8851A346A928C0 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BD852F43C7D329A4EAD7B6D /* IOKit.framework */; }; + 699B65297DDF6A1E0BF665EE /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60376BCC588668CC65617410 /* Carbon.framework */; }; + 52D806B15DBA758E50A26743 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F297A542691370563C318DE /* ForceFeedback.framework */; }; + 187A22356B9F324B076D2730 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F607DB43672788F25274B0E /* CoreFoundation.framework */; }; + 3A0353607DF115A314423754 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 584A07DE2AED5FCA73C606FC /* OpenGL.framework */; }; + 767523933EAB5BCB243518EE /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 079A33B1695D0E942AC90EB2 /* libSDL2main.a */; }; + 3CBF24FE282A7770718F7C28 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 540A66CB408E504F2D473B0C /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5F116C1E4AB736B349E440B2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 668C7E30376F65E65FF57724 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0B9E63E70B65163F112B279B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 668C7E30376F65E65FF57724 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 5EAC27E67852613A48610EB5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 473904A730CA33A056813A82 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 453405F92872773764857EEE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 473904A730CA33A056813A82 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2AD528C05907077E1C980084 /* testerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testerror.c"; path = "../../../../../test/testerror.c"; sourceTree = ""; }; + 242A7ADB51E93AC8229B297F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 3F58459D51D43F875ECB6AE2 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 334320CD2EB329612B4952EC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 1C6C31CF3E812DF0797A394C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 4BD852F43C7D329A4EAD7B6D /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 60376BCC588668CC65617410 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 1F297A542691370563C318DE /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 0F607DB43672788F25274B0E /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 584A07DE2AED5FCA73C606FC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 430B280B15A10042050C5C68 /* testerror */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testerror"; path = "testerror"; sourceTree = BUILT_PRODUCTS_DIR; }; + 668C7E30376F65E65FF57724 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 473904A730CA33A056813A82 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 508430F81E4545FA3FA63BC6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5C7C76636FB4225049E30962 /* AudioToolbox.framework in Frameworks */, + 55D31CE04107687A523138C1 /* AudioUnit.framework in Frameworks */, + 16EF544D14414BCD300959E8 /* Cocoa.framework in Frameworks */, + 312528E57525045D04E55E0B /* CoreAudio.framework in Frameworks */, + 6164728C6E8851A346A928C0 /* IOKit.framework in Frameworks */, + 699B65297DDF6A1E0BF665EE /* Carbon.framework in Frameworks */, + 52D806B15DBA758E50A26743 /* ForceFeedback.framework in Frameworks */, + 187A22356B9F324B076D2730 /* CoreFoundation.framework in Frameworks */, + 3A0353607DF115A314423754 /* OpenGL.framework in Frameworks */, + 767523933EAB5BCB243518EE /* libSDL2main.a in Frameworks */, + 3CBF24FE282A7770718F7C28 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 247065CB755213A014F11B43 /* testerror */ = { + isa = PBXGroup; + children = ( + 65F6185108DB0AF171803A14 /* test */, + 3BA77DEF0897734D5B676A5D /* Frameworks */, + 6D166C097CD736C220776C40 /* Products */, + 1B7606265B0A10D479DE6F2C /* Projects */, + ); + name = "testerror"; + sourceTree = ""; + }; + 65F6185108DB0AF171803A14 /* test */ = { + isa = PBXGroup; + children = ( + 2AD528C05907077E1C980084 /* testerror.c */, + ); + name = "test"; + sourceTree = ""; + }; + 3BA77DEF0897734D5B676A5D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 242A7ADB51E93AC8229B297F /* AudioToolbox.framework */, + 3F58459D51D43F875ECB6AE2 /* AudioUnit.framework */, + 334320CD2EB329612B4952EC /* Cocoa.framework */, + 1C6C31CF3E812DF0797A394C /* CoreAudio.framework */, + 4BD852F43C7D329A4EAD7B6D /* IOKit.framework */, + 60376BCC588668CC65617410 /* Carbon.framework */, + 1F297A542691370563C318DE /* ForceFeedback.framework */, + 0F607DB43672788F25274B0E /* CoreFoundation.framework */, + 584A07DE2AED5FCA73C606FC /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6D166C097CD736C220776C40 /* Products */ = { + isa = PBXGroup; + children = ( + 430B280B15A10042050C5C68 /* testerror */, + ); + name = "Products"; + sourceTree = ""; + }; + 1B7606265B0A10D479DE6F2C /* Projects */ = { + isa = PBXGroup; + children = ( + 668C7E30376F65E65FF57724 /* SDL2main.xcodeproj */, + 473904A730CA33A056813A82 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 6D721818606B463A25996043 /* Products */ = { + isa = PBXGroup; + children = ( + 079A33B1695D0E942AC90EB2 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 1D7F044B59CF3F423066168C /* Products */ = { + isa = PBXGroup; + children = ( + 540A66CB408E504F2D473B0C /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6FD078CA32E570E62FAC7B55 /* testerror */ = { + isa = PBXNativeTarget; + buildConfigurationList = 34B560ED7D9E21AD23582503 /* Build configuration list for PBXNativeTarget "testerror" */; + buildPhases = ( + 164938B91D941AD539E636C6 /* Resources */, + 425B7E6F62BF27286A180D2C /* Sources */, + 508430F81E4545FA3FA63BC6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 69FF1BE85A7C0EE716D2443B /* PBXTargetDependency */, + 4FEA117D4965295E6AD34DD2 /* PBXTargetDependency */, + ); + name = "testerror"; + productInstallPath = "$(HOME)/bin"; + productName = "testerror"; + productReference = 430B280B15A10042050C5C68 /* testerror */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testerror" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 247065CB755213A014F11B43 /* testerror */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6D721818606B463A25996043 /* Products */; + ProjectRef = 668C7E30376F65E65FF57724 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 1D7F044B59CF3F423066168C /* Products */; + ProjectRef = 473904A730CA33A056813A82 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6FD078CA32E570E62FAC7B55 /* testerror */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 079A33B1695D0E942AC90EB2 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5F116C1E4AB736B349E440B2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 540A66CB408E504F2D473B0C /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 5EAC27E67852613A48610EB5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 164938B91D941AD539E636C6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 425B7E6F62BF27286A180D2C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 17F36FF223D577CE040E342A /* testerror.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 69FF1BE85A7C0EE716D2443B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0B9E63E70B65163F112B279B /* PBXContainerItemProxy */; + }; + 4FEA117D4965295E6AD34DD2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 453405F92872773764857EEE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 24386F3E596918DA291C2E96 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Debug Universal"; + }; + 118B4516471538C5115921AE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Debug Native"; + }; + 354A3B710CF9568C3616645B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Release Universal"; + }; + 51115E5604C07F0C6F3A08E8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Release Native"; + }; + 06B76729458605591CCB7F37 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 63456C690D7B2EF152151B6D /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 477F178808E30A7279936349 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 38F85370614A015F42246EB5 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 34B560ED7D9E21AD23582503 /* Build configuration list for PBXNativeTarget "testerror" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 24386F3E596918DA291C2E96 /* Debug Universal */, + 118B4516471538C5115921AE /* Debug Native */, + 354A3B710CF9568C3616645B /* Release Universal */, + 51115E5604C07F0C6F3A08E8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testerror" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 06B76729458605591CCB7F37 /* Debug Universal */, + 63456C690D7B2EF152151B6D /* Debug Native */, + 477F178808E30A7279936349 /* Release Universal */, + 38F85370614A015F42246EB5 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testfile/testfile.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testfile/testfile.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..c2b51f3631 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testfile/testfile.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 12B9553A11444429616D59C6 /* testfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 53A77FF942F927C455B84781 /* testfile.c */; }; + 7B04459A069465B17D0627A6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A07191E2C972B570F1F4316 /* AudioToolbox.framework */; }; + 54FD6F2C67247E6F40E66347 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 434A4C52501C7A1718E04D06 /* AudioUnit.framework */; }; + 6020107A580D63BD189E6A28 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 571F63057A7A7C3E52AE3182 /* Cocoa.framework */; }; + 78301A5C377D22CC050F3360 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 232161417601563F79A5546B /* CoreAudio.framework */; }; + 311E4E724881278255517458 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 054B223825BD22DF79650A2F /* IOKit.framework */; }; + 018007961E2263CE26C44CE9 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 629678825B1A17724A7227FB /* Carbon.framework */; }; + 542E30D9264242B26BB81623 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A200FB3562A0F885EE26DAE /* ForceFeedback.framework */; }; + 255B2EC65660579728091B6B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 625B5D281B274BD51A5D7669 /* CoreFoundation.framework */; }; + 68A3529974322AC63C733751 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38DA1E13099B443056592A57 /* OpenGL.framework */; }; + 501A5E9D32F573375A396E26 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C672053AE7439058CF1E06 /* libSDL2main.a */; }; + 75FA24B51AE94B583B3A7F78 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 021C28B302890B35602A095D /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 38DC1CE449A02EDB53A46F1F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 456E5690134259340D017AE0 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0A380900091C129F171F2BFD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 456E5690134259340D017AE0 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 36E065014BB04FEC2DB15E06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0F804EE2031625A5344A6F0F /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 6B5928536FA55B7D231549C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0F804EE2031625A5344A6F0F /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 53A77FF942F927C455B84781 /* testfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testfile.c"; path = "../../../../../test/testfile.c"; sourceTree = ""; }; + 7A07191E2C972B570F1F4316 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 434A4C52501C7A1718E04D06 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 571F63057A7A7C3E52AE3182 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 232161417601563F79A5546B /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 054B223825BD22DF79650A2F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 629678825B1A17724A7227FB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 6A200FB3562A0F885EE26DAE /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 625B5D281B274BD51A5D7669 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 38DA1E13099B443056592A57 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5FF3088A3FCA05760C613507 /* testfile */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testfile"; path = "testfile"; sourceTree = BUILT_PRODUCTS_DIR; }; + 456E5690134259340D017AE0 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 0F804EE2031625A5344A6F0F /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 63C5588C0B37498D6C9B4D01 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B04459A069465B17D0627A6 /* AudioToolbox.framework in Frameworks */, + 54FD6F2C67247E6F40E66347 /* AudioUnit.framework in Frameworks */, + 6020107A580D63BD189E6A28 /* Cocoa.framework in Frameworks */, + 78301A5C377D22CC050F3360 /* CoreAudio.framework in Frameworks */, + 311E4E724881278255517458 /* IOKit.framework in Frameworks */, + 018007961E2263CE26C44CE9 /* Carbon.framework in Frameworks */, + 542E30D9264242B26BB81623 /* ForceFeedback.framework in Frameworks */, + 255B2EC65660579728091B6B /* CoreFoundation.framework in Frameworks */, + 68A3529974322AC63C733751 /* OpenGL.framework in Frameworks */, + 501A5E9D32F573375A396E26 /* libSDL2main.a in Frameworks */, + 75FA24B51AE94B583B3A7F78 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 127B75A40BDB574C64C011B2 /* testfile */ = { + isa = PBXGroup; + children = ( + 7D017901635636C825861697 /* test */, + 7A3008B20E036DE23C3B513B /* Frameworks */, + 4E33258618BA1CA05A5C6978 /* Products */, + 5A025AD573D015154D736ADC /* Projects */, + ); + name = "testfile"; + sourceTree = ""; + }; + 7D017901635636C825861697 /* test */ = { + isa = PBXGroup; + children = ( + 53A77FF942F927C455B84781 /* testfile.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7A3008B20E036DE23C3B513B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7A07191E2C972B570F1F4316 /* AudioToolbox.framework */, + 434A4C52501C7A1718E04D06 /* AudioUnit.framework */, + 571F63057A7A7C3E52AE3182 /* Cocoa.framework */, + 232161417601563F79A5546B /* CoreAudio.framework */, + 054B223825BD22DF79650A2F /* IOKit.framework */, + 629678825B1A17724A7227FB /* Carbon.framework */, + 6A200FB3562A0F885EE26DAE /* ForceFeedback.framework */, + 625B5D281B274BD51A5D7669 /* CoreFoundation.framework */, + 38DA1E13099B443056592A57 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 4E33258618BA1CA05A5C6978 /* Products */ = { + isa = PBXGroup; + children = ( + 5FF3088A3FCA05760C613507 /* testfile */, + ); + name = "Products"; + sourceTree = ""; + }; + 5A025AD573D015154D736ADC /* Projects */ = { + isa = PBXGroup; + children = ( + 456E5690134259340D017AE0 /* SDL2main.xcodeproj */, + 0F804EE2031625A5344A6F0F /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 01CC07FB0EE71603201159C5 /* Products */ = { + isa = PBXGroup; + children = ( + 35C672053AE7439058CF1E06 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 1CB5571343E710DC6CBD7D10 /* Products */ = { + isa = PBXGroup; + children = ( + 021C28B302890B35602A095D /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 76920DAF18017081649264B5 /* testfile */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1FAE5CF509DF4EEA07F2584A /* Build configuration list for PBXNativeTarget "testfile" */; + buildPhases = ( + 79DD48C9121F3797402D4FB7 /* Resources */, + 01E11129246D0B0B3A757724 /* Sources */, + 63C5588C0B37498D6C9B4D01 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0642037E5B0A7E247DD625D8 /* PBXTargetDependency */, + 0FF60B471437282B2572614B /* PBXTargetDependency */, + ); + name = "testfile"; + productInstallPath = "$(HOME)/bin"; + productName = "testfile"; + productReference = 5FF3088A3FCA05760C613507 /* testfile */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfile" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 127B75A40BDB574C64C011B2 /* testfile */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 01CC07FB0EE71603201159C5 /* Products */; + ProjectRef = 456E5690134259340D017AE0 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 1CB5571343E710DC6CBD7D10 /* Products */; + ProjectRef = 0F804EE2031625A5344A6F0F /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 76920DAF18017081649264B5 /* testfile */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 35C672053AE7439058CF1E06 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 38DC1CE449A02EDB53A46F1F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 021C28B302890B35602A095D /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 36E065014BB04FEC2DB15E06 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 79DD48C9121F3797402D4FB7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 01E11129246D0B0B3A757724 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 12B9553A11444429616D59C6 /* testfile.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 0642037E5B0A7E247DD625D8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0A380900091C129F171F2BFD /* PBXContainerItemProxy */; + }; + 0FF60B471437282B2572614B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6B5928536FA55B7D231549C8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 61FD528536756017160E2A9A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Debug Universal"; + }; + 7D1456CC29F75068168B06F0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Debug Native"; + }; + 099144B44387563140BD56F3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Release Universal"; + }; + 60443F5A4CB24B6C4ADA400A /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Release Native"; + }; + 79BD72FE3C0726174BD74E5C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1DB90350172C67C955AE2FC4 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 27D533A317124927334E5EF9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6242645C6E6F54DF173B37D8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1FAE5CF509DF4EEA07F2584A /* Build configuration list for PBXNativeTarget "testfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 61FD528536756017160E2A9A /* Debug Universal */, + 7D1456CC29F75068168B06F0 /* Debug Native */, + 099144B44387563140BD56F3 /* Release Universal */, + 60443F5A4CB24B6C4ADA400A /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79BD72FE3C0726174BD74E5C /* Debug Universal */, + 1DB90350172C67C955AE2FC4 /* Debug Native */, + 27D533A317124927334E5EF9 /* Release Universal */, + 6242645C6E6F54DF173B37D8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..ff0c32dad9 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 27E66D265BFC2650651E4B38 /* testfilesystem.c in Sources */ = {isa = PBXBuildFile; fileRef = 45BB219C3EC9278B49857862 /* testfilesystem.c */; }; + 77FC574654B778A551877854 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AFD68905EC649D96E4C7A51 /* AudioToolbox.framework */; }; + 7846719321C40AE750F0553A /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0410628B1FD919E525D558CE /* AudioUnit.framework */; }; + 4CDE1E2A5C9029E91529548C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A043B22584C7EF064861EE5 /* Cocoa.framework */; }; + 71C77EC41B4C397541A20C68 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 691D0D8614D746ED17456982 /* CoreAudio.framework */; }; + 73A919636FA61D1D75C101D3 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08F2058C46B744A554905355 /* IOKit.framework */; }; + 09357EAD401D5D4E404D1FF2 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 759E092842380861577E3702 /* Carbon.framework */; }; + 096B0BDE5038152418B8738D /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 060976CA07D36B2376BC3712 /* ForceFeedback.framework */; }; + 1B334ABF5FDC0E7B537D42A3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35374492037A75A608B81AD5 /* CoreFoundation.framework */; }; + 3295050547D71A677D460AA6 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18CA7C7B228E53A519724694 /* OpenGL.framework */; }; + 5D11444E630018235EAB3E64 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A747965580349D150D57EF6 /* libSDL2main.a */; }; + 33BB585C23E73DE9408309AA /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D7560977F5615AD16180488 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 30DA764F5A5521A573D61963 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 49275E85719B264124914A2D /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 60D14612560364111E0178B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 49275E85719B264124914A2D /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 69AD0D501B3C317F0C580F4D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1FD25363099744B34525215C /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 377F77233C07298E5B4C00D8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1FD25363099744B34525215C /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 45BB219C3EC9278B49857862 /* testfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testfilesystem.c"; path = "../../../../../test/testfilesystem.c"; sourceTree = ""; }; + 0AFD68905EC649D96E4C7A51 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0410628B1FD919E525D558CE /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0A043B22584C7EF064861EE5 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 691D0D8614D746ED17456982 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 08F2058C46B744A554905355 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 759E092842380861577E3702 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 060976CA07D36B2376BC3712 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 35374492037A75A608B81AD5 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 18CA7C7B228E53A519724694 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4B6F7519691E6F53450A4308 /* testfilesystem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testfilesystem"; path = "testfilesystem"; sourceTree = BUILT_PRODUCTS_DIR; }; + 49275E85719B264124914A2D /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 1FD25363099744B34525215C /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2F8171991948033524C8557A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 77FC574654B778A551877854 /* AudioToolbox.framework in Frameworks */, + 7846719321C40AE750F0553A /* AudioUnit.framework in Frameworks */, + 4CDE1E2A5C9029E91529548C /* Cocoa.framework in Frameworks */, + 71C77EC41B4C397541A20C68 /* CoreAudio.framework in Frameworks */, + 73A919636FA61D1D75C101D3 /* IOKit.framework in Frameworks */, + 09357EAD401D5D4E404D1FF2 /* Carbon.framework in Frameworks */, + 096B0BDE5038152418B8738D /* ForceFeedback.framework in Frameworks */, + 1B334ABF5FDC0E7B537D42A3 /* CoreFoundation.framework in Frameworks */, + 3295050547D71A677D460AA6 /* OpenGL.framework in Frameworks */, + 5D11444E630018235EAB3E64 /* libSDL2main.a in Frameworks */, + 33BB585C23E73DE9408309AA /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 228378B62E4B79B824FA2CDB /* testfilesystem */ = { + isa = PBXGroup; + children = ( + 6B305B5814E6255063D41724 /* test */, + 7F57504E46CF4BD72E4E367C /* Frameworks */, + 26743E38796029944A6F72AE /* Products */, + 37992E8C18BA0C8724E741B2 /* Projects */, + ); + name = "testfilesystem"; + sourceTree = ""; + }; + 6B305B5814E6255063D41724 /* test */ = { + isa = PBXGroup; + children = ( + 45BB219C3EC9278B49857862 /* testfilesystem.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7F57504E46CF4BD72E4E367C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0AFD68905EC649D96E4C7A51 /* AudioToolbox.framework */, + 0410628B1FD919E525D558CE /* AudioUnit.framework */, + 0A043B22584C7EF064861EE5 /* Cocoa.framework */, + 691D0D8614D746ED17456982 /* CoreAudio.framework */, + 08F2058C46B744A554905355 /* IOKit.framework */, + 759E092842380861577E3702 /* Carbon.framework */, + 060976CA07D36B2376BC3712 /* ForceFeedback.framework */, + 35374492037A75A608B81AD5 /* CoreFoundation.framework */, + 18CA7C7B228E53A519724694 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 26743E38796029944A6F72AE /* Products */ = { + isa = PBXGroup; + children = ( + 4B6F7519691E6F53450A4308 /* testfilesystem */, + ); + name = "Products"; + sourceTree = ""; + }; + 37992E8C18BA0C8724E741B2 /* Projects */ = { + isa = PBXGroup; + children = ( + 49275E85719B264124914A2D /* SDL2main.xcodeproj */, + 1FD25363099744B34525215C /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 208C029A7C8D35585AA05BD1 /* Products */ = { + isa = PBXGroup; + children = ( + 6A747965580349D150D57EF6 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 32D168EC72AD7D4A2B4B7873 /* Products */ = { + isa = PBXGroup; + children = ( + 4D7560977F5615AD16180488 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 73521CE863C65C4A30CC6158 /* testfilesystem */ = { + isa = PBXNativeTarget; + buildConfigurationList = 033C0E7749924D4F25B20601 /* Build configuration list for PBXNativeTarget "testfilesystem" */; + buildPhases = ( + 33A320283E6D7E241EB93586 /* Resources */, + 1E2E1F971B4F0FDB1D765FBD /* Sources */, + 2F8171991948033524C8557A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 76BF0ECC2BBB374D47417EE8 /* PBXTargetDependency */, + 740D06C1769C3387062635BB /* PBXTargetDependency */, + ); + name = "testfilesystem"; + productInstallPath = "$(HOME)/bin"; + productName = "testfilesystem"; + productReference = 4B6F7519691E6F53450A4308 /* testfilesystem */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfilesystem" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 228378B62E4B79B824FA2CDB /* testfilesystem */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 208C029A7C8D35585AA05BD1 /* Products */; + ProjectRef = 49275E85719B264124914A2D /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 32D168EC72AD7D4A2B4B7873 /* Products */; + ProjectRef = 1FD25363099744B34525215C /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 73521CE863C65C4A30CC6158 /* testfilesystem */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6A747965580349D150D57EF6 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 30DA764F5A5521A573D61963 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4D7560977F5615AD16180488 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 69AD0D501B3C317F0C580F4D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 33A320283E6D7E241EB93586 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1E2E1F971B4F0FDB1D765FBD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 27E66D265BFC2650651E4B38 /* testfilesystem.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 76BF0ECC2BBB374D47417EE8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 60D14612560364111E0178B0 /* PBXContainerItemProxy */; + }; + 740D06C1769C3387062635BB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 377F77233C07298E5B4C00D8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 259C4DB274491080504F1823 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Debug Universal"; + }; + 488A73136F12290744F81F69 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Debug Native"; + }; + 76265D5C5AE117DA1E1501F0 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Release Universal"; + }; + 482F473C5F1570B44B3C6013 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Release Native"; + }; + 601E58756D4D6E053A6A136A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 5FCE036A5AD65182619A4EC1 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 6D097E32313C68B502EA741B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0345423E34A2156735376579 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 033C0E7749924D4F25B20601 /* Build configuration list for PBXNativeTarget "testfilesystem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 259C4DB274491080504F1823 /* Debug Universal */, + 488A73136F12290744F81F69 /* Debug Native */, + 76265D5C5AE117DA1E1501F0 /* Release Universal */, + 482F473C5F1570B44B3C6013 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfilesystem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 601E58756D4D6E053A6A136A /* Debug Universal */, + 5FCE036A5AD65182619A4EC1 /* Debug Native */, + 6D097E32313C68B502EA741B /* Release Universal */, + 0345423E34A2156735376579 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..7732b21e32 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 2B50214C1E056A12707340ED /* testgamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = 126D67D510C85A6C03E94C6D /* testgamecontroller.c */; }; + 175443B0039F66FA44F00CA2 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58953E952CAC6DD01BDB0794 /* AudioToolbox.framework */; }; + 23972E076A404C4E1C816A1F /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14AA2F4F732A6BC70AC45187 /* AudioUnit.framework */; }; + 09640528131A21A9740F1CA5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225E044C4FC8055B1E940DF1 /* Cocoa.framework */; }; + 44095B55423E7FE8090132BE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54D70ECF7998287258EE1144 /* CoreAudio.framework */; }; + 7AFC733E003B2B3754EE0E5D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F3C5314615675DD34597D63 /* IOKit.framework */; }; + 5C59745B30E671640EED2159 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0246693730305EA55EDD0E6A /* Carbon.framework */; }; + 64F52E933D7816FF7EB8688C /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76DD426A60CF71EB7C5D74C5 /* ForceFeedback.framework */; }; + 339C5AA512D653ED1946728B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EAC24372C0B341159A57E6B /* CoreFoundation.framework */; }; + 73CF32C40BC53B191F0B2690 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38835CE205EB437E2C0673F7 /* OpenGL.framework */; }; + 09203C322CAE13134E54004E /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 18FC77EF04CC142539507250 /* libSDL2main.a */; }; + 2A386E15636D434D7E381E71 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 527B47453AED59E42BB50570 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 30DA5E641EDA17C8510930B6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70002B414DB7446C17E9573F /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0D8B2DB9636F4A4038846A56 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70002B414DB7446C17E9573F /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 53C06F4B64E45CCA63FF1144 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 28C7455508C14E8E683C4B61 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 410A02AE7ED221353FBE069A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 28C7455508C14E8E683C4B61 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 126D67D510C85A6C03E94C6D /* testgamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgamecontroller.c"; path = "../../../../../test/testgamecontroller.c"; sourceTree = ""; }; + 58953E952CAC6DD01BDB0794 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 14AA2F4F732A6BC70AC45187 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 225E044C4FC8055B1E940DF1 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 54D70ECF7998287258EE1144 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 0F3C5314615675DD34597D63 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 0246693730305EA55EDD0E6A /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 76DD426A60CF71EB7C5D74C5 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 4EAC24372C0B341159A57E6B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 38835CE205EB437E2C0673F7 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 13831EFD797E6C5158677C65 /* testgamecontroller */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgamecontroller"; path = "testgamecontroller"; sourceTree = BUILT_PRODUCTS_DIR; }; + 70002B414DB7446C17E9573F /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 28C7455508C14E8E683C4B61 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2D927D1A71FE0F0E76103B07 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 175443B0039F66FA44F00CA2 /* AudioToolbox.framework in Frameworks */, + 23972E076A404C4E1C816A1F /* AudioUnit.framework in Frameworks */, + 09640528131A21A9740F1CA5 /* Cocoa.framework in Frameworks */, + 44095B55423E7FE8090132BE /* CoreAudio.framework in Frameworks */, + 7AFC733E003B2B3754EE0E5D /* IOKit.framework in Frameworks */, + 5C59745B30E671640EED2159 /* Carbon.framework in Frameworks */, + 64F52E933D7816FF7EB8688C /* ForceFeedback.framework in Frameworks */, + 339C5AA512D653ED1946728B /* CoreFoundation.framework in Frameworks */, + 73CF32C40BC53B191F0B2690 /* OpenGL.framework in Frameworks */, + 09203C322CAE13134E54004E /* libSDL2main.a in Frameworks */, + 2A386E15636D434D7E381E71 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 70D736877EDD78F474EB0928 /* testgamecontroller */ = { + isa = PBXGroup; + children = ( + 3A3461B06BA41D46778E2878 /* test */, + 269736B127155C4B4D22059A /* Frameworks */, + 6B654C6F240F62EB6D786C56 /* Products */, + 30890C4657722CB6213E1005 /* Projects */, + ); + name = "testgamecontroller"; + sourceTree = ""; + }; + 3A3461B06BA41D46778E2878 /* test */ = { + isa = PBXGroup; + children = ( + 126D67D510C85A6C03E94C6D /* testgamecontroller.c */, + ); + name = "test"; + sourceTree = ""; + }; + 269736B127155C4B4D22059A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58953E952CAC6DD01BDB0794 /* AudioToolbox.framework */, + 14AA2F4F732A6BC70AC45187 /* AudioUnit.framework */, + 225E044C4FC8055B1E940DF1 /* Cocoa.framework */, + 54D70ECF7998287258EE1144 /* CoreAudio.framework */, + 0F3C5314615675DD34597D63 /* IOKit.framework */, + 0246693730305EA55EDD0E6A /* Carbon.framework */, + 76DD426A60CF71EB7C5D74C5 /* ForceFeedback.framework */, + 4EAC24372C0B341159A57E6B /* CoreFoundation.framework */, + 38835CE205EB437E2C0673F7 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6B654C6F240F62EB6D786C56 /* Products */ = { + isa = PBXGroup; + children = ( + 13831EFD797E6C5158677C65 /* testgamecontroller */, + ); + name = "Products"; + sourceTree = ""; + }; + 30890C4657722CB6213E1005 /* Projects */ = { + isa = PBXGroup; + children = ( + 70002B414DB7446C17E9573F /* SDL2main.xcodeproj */, + 28C7455508C14E8E683C4B61 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 10BC462750667687322551BA /* Products */ = { + isa = PBXGroup; + children = ( + 18FC77EF04CC142539507250 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4D2962B104CD402751E30FD4 /* Products */ = { + isa = PBXGroup; + children = ( + 527B47453AED59E42BB50570 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 50DB78277F1369ED01D62FB3 /* testgamecontroller */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0D205F28786353DF0C9D23FA /* Build configuration list for PBXNativeTarget "testgamecontroller" */; + buildPhases = ( + 0FB81A643AA0146737222745 /* Resources */, + 5EE12B0161FD66BB3B514CB5 /* Sources */, + 2D927D1A71FE0F0E76103B07 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 6E5068B3775D048B7B762663 /* PBXTargetDependency */, + 2841674A502A31474B2B2EE5 /* PBXTargetDependency */, + ); + name = "testgamecontroller"; + productInstallPath = "$(HOME)/bin"; + productName = "testgamecontroller"; + productReference = 13831EFD797E6C5158677C65 /* testgamecontroller */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgamecontroller" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 70D736877EDD78F474EB0928 /* testgamecontroller */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 10BC462750667687322551BA /* Products */; + ProjectRef = 70002B414DB7446C17E9573F /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4D2962B104CD402751E30FD4 /* Products */; + ProjectRef = 28C7455508C14E8E683C4B61 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 50DB78277F1369ED01D62FB3 /* testgamecontroller */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 18FC77EF04CC142539507250 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 30DA5E641EDA17C8510930B6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 527B47453AED59E42BB50570 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 53C06F4B64E45CCA63FF1144 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 0FB81A643AA0146737222745 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5EE12B0161FD66BB3B514CB5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2B50214C1E056A12707340ED /* testgamecontroller.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6E5068B3775D048B7B762663 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0D8B2DB9636F4A4038846A56 /* PBXContainerItemProxy */; + }; + 2841674A502A31474B2B2EE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 410A02AE7ED221353FBE069A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 73B05ACF019855226AEE5BAB /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Debug Universal"; + }; + 1EF568B634FD7A3C2034522E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Debug Native"; + }; + 12B15B64065775074B364E9E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Release Universal"; + }; + 256607DE339B214F5B512B9B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Release Native"; + }; + 3DEF3B3319B835312459064E /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 52AF631F14793DBC2AF809CF /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 05E91BF10FB5725B6AF478F9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 686C3F5644061648739756A1 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0D205F28786353DF0C9D23FA /* Build configuration list for PBXNativeTarget "testgamecontroller" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 73B05ACF019855226AEE5BAB /* Debug Universal */, + 1EF568B634FD7A3C2034522E /* Debug Native */, + 12B15B64065775074B364E9E /* Release Universal */, + 256607DE339B214F5B512B9B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgamecontroller" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3DEF3B3319B835312459064E /* Debug Universal */, + 52AF631F14793DBC2AF809CF /* Debug Native */, + 05E91BF10FB5725B6AF478F9 /* Release Universal */, + 686C3F5644061648739756A1 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testgesture/testgesture.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testgesture/testgesture.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..c4f20f5c10 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testgesture/testgesture.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 52354162254219EE76684ABE /* testgesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 07DB579373F22595065E1C59 /* testgesture.c */; }; + 3F42123E2E697F9E0DD741EE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 713E56B060CB616F47E54128 /* AudioToolbox.framework */; }; + 35E033C81DCD1B8D0561256B /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2B2ACC49260036069E2F4A /* AudioUnit.framework */; }; + 258413E94648248B4E88698B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49DA3EB231D324B918422E8E /* Cocoa.framework */; }; + 729D22CF02EA7FB35C1035EE /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38CF4B521F3A3990392B57DF /* CoreAudio.framework */; }; + 56B506D10D0F5CA4295056D5 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EFF080F311513506C8D2AF3 /* IOKit.framework */; }; + 0510734575430553302761F0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54F47A8D654D4D3770A50937 /* Carbon.framework */; }; + 4CEE2F91710A71464A220D5A /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 693D5CF834BB16770AAD1C5F /* ForceFeedback.framework */; }; + 2ABA54F276B375AB4B0D6777 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C2A5B3D3480489954653D0D /* CoreFoundation.framework */; }; + 4D77611D7300085D4DE63CA1 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63F66CDA77B535E15D2E0416 /* OpenGL.framework */; }; + 02AB28D775B07A786BC961F7 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 392F75CE4C2078C309201BD6 /* libSDL2main.a */; }; + 381A521865952C762D012938 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DDE4FE4303847E451E94F08 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 43707FCD29B07F7C481D1A32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 075F2A1B12B8177E0F322D60 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 00771E2C5FC10F8F7C5A0D8D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 075F2A1B12B8177E0F322D60 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 63D0165D42077F622F8A2C2D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2BFF78BF47B946F273021C53 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 42482F692CC41EA42EDE23D1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2BFF78BF47B946F273021C53 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 07DB579373F22595065E1C59 /* testgesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgesture.c"; path = "../../../../../test/testgesture.c"; sourceTree = ""; }; + 713E56B060CB616F47E54128 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 1B2B2ACC49260036069E2F4A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 49DA3EB231D324B918422E8E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 38CF4B521F3A3990392B57DF /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1EFF080F311513506C8D2AF3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 54F47A8D654D4D3770A50937 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 693D5CF834BB16770AAD1C5F /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 4C2A5B3D3480489954653D0D /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 63F66CDA77B535E15D2E0416 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4724438248DC05CC154031BE /* testgesture */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgesture"; path = "testgesture"; sourceTree = BUILT_PRODUCTS_DIR; }; + 075F2A1B12B8177E0F322D60 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2BFF78BF47B946F273021C53 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5D7B67B06708403436B151AE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3F42123E2E697F9E0DD741EE /* AudioToolbox.framework in Frameworks */, + 35E033C81DCD1B8D0561256B /* AudioUnit.framework in Frameworks */, + 258413E94648248B4E88698B /* Cocoa.framework in Frameworks */, + 729D22CF02EA7FB35C1035EE /* CoreAudio.framework in Frameworks */, + 56B506D10D0F5CA4295056D5 /* IOKit.framework in Frameworks */, + 0510734575430553302761F0 /* Carbon.framework in Frameworks */, + 4CEE2F91710A71464A220D5A /* ForceFeedback.framework in Frameworks */, + 2ABA54F276B375AB4B0D6777 /* CoreFoundation.framework in Frameworks */, + 4D77611D7300085D4DE63CA1 /* OpenGL.framework in Frameworks */, + 02AB28D775B07A786BC961F7 /* libSDL2main.a in Frameworks */, + 381A521865952C762D012938 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 12DA479479947D0D648373F4 /* testgesture */ = { + isa = PBXGroup; + children = ( + 425E62093FE7074F6C3C13E4 /* test */, + 305E740B33B4757C59760F0A /* Frameworks */, + 1AFE2FCD4B25165B66341EEA /* Products */, + 4B353CAD095349231EBF3FED /* Projects */, + ); + name = "testgesture"; + sourceTree = ""; + }; + 425E62093FE7074F6C3C13E4 /* test */ = { + isa = PBXGroup; + children = ( + 07DB579373F22595065E1C59 /* testgesture.c */, + ); + name = "test"; + sourceTree = ""; + }; + 305E740B33B4757C59760F0A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 713E56B060CB616F47E54128 /* AudioToolbox.framework */, + 1B2B2ACC49260036069E2F4A /* AudioUnit.framework */, + 49DA3EB231D324B918422E8E /* Cocoa.framework */, + 38CF4B521F3A3990392B57DF /* CoreAudio.framework */, + 1EFF080F311513506C8D2AF3 /* IOKit.framework */, + 54F47A8D654D4D3770A50937 /* Carbon.framework */, + 693D5CF834BB16770AAD1C5F /* ForceFeedback.framework */, + 4C2A5B3D3480489954653D0D /* CoreFoundation.framework */, + 63F66CDA77B535E15D2E0416 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1AFE2FCD4B25165B66341EEA /* Products */ = { + isa = PBXGroup; + children = ( + 4724438248DC05CC154031BE /* testgesture */, + ); + name = "Products"; + sourceTree = ""; + }; + 4B353CAD095349231EBF3FED /* Projects */ = { + isa = PBXGroup; + children = ( + 075F2A1B12B8177E0F322D60 /* SDL2main.xcodeproj */, + 2BFF78BF47B946F273021C53 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 1610312040612DF626A67918 /* Products */ = { + isa = PBXGroup; + children = ( + 392F75CE4C2078C309201BD6 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 15D219A078967452581305C7 /* Products */ = { + isa = PBXGroup; + children = ( + 4DDE4FE4303847E451E94F08 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 66781047381973FF17D26A04 /* testgesture */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40D15D5F1F8C35FF14902558 /* Build configuration list for PBXNativeTarget "testgesture" */; + buildPhases = ( + 533F4EC70B78173C113A7938 /* Resources */, + 76602B80194C010908D63771 /* Sources */, + 5D7B67B06708403436B151AE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 35CD2C037E085207668E3370 /* PBXTargetDependency */, + 792C71B133801DF95EC01EBB /* PBXTargetDependency */, + ); + name = "testgesture"; + productInstallPath = "$(HOME)/bin"; + productName = "testgesture"; + productReference = 4724438248DC05CC154031BE /* testgesture */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgesture" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 12DA479479947D0D648373F4 /* testgesture */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 1610312040612DF626A67918 /* Products */; + ProjectRef = 075F2A1B12B8177E0F322D60 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 15D219A078967452581305C7 /* Products */; + ProjectRef = 2BFF78BF47B946F273021C53 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 66781047381973FF17D26A04 /* testgesture */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 392F75CE4C2078C309201BD6 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 43707FCD29B07F7C481D1A32 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4DDE4FE4303847E451E94F08 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 63D0165D42077F622F8A2C2D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 533F4EC70B78173C113A7938 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 76602B80194C010908D63771 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52354162254219EE76684ABE /* testgesture.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 35CD2C037E085207668E3370 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 00771E2C5FC10F8F7C5A0D8D /* PBXContainerItemProxy */; + }; + 792C71B133801DF95EC01EBB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 42482F692CC41EA42EDE23D1 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 60EC6119529B5A1737F62D9E /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Debug Universal"; + }; + 1F0A6CCD0DB571084C842C97 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Debug Native"; + }; + 5620002D3061510A046E5C00 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Release Universal"; + }; + 4F2F1BE226ED4B9E097565A5 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Release Native"; + }; + 0E787B8424FA1F024B987D9A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1D851472574840D635F16D20 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 25A1158D78146E2C2CB74B09 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 47AA0A943A447D1315B5547D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 40D15D5F1F8C35FF14902558 /* Build configuration list for PBXNativeTarget "testgesture" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 60EC6119529B5A1737F62D9E /* Debug Universal */, + 1F0A6CCD0DB571084C842C97 /* Debug Native */, + 5620002D3061510A046E5C00 /* Release Universal */, + 4F2F1BE226ED4B9E097565A5 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgesture" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0E787B8424FA1F024B987D9A /* Debug Universal */, + 1D851472574840D635F16D20 /* Debug Native */, + 25A1158D78146E2C2CB74B09 /* Release Universal */, + 47AA0A943A447D1315B5547D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testgl2/testgl2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testgl2/testgl2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..4ffa31b228 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testgl2/testgl2.xcodeproj/project.pbxproj @@ -0,0 +1,504 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 45DC11BD255127A03296336D /* testgl2.c in Sources */ = {isa = PBXBuildFile; fileRef = 141F0FF40384619134F5534A /* testgl2.c */; }; + 56AA4CF44B901545165959CE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FCF2FA52E266E6C2DF215F0 /* AudioToolbox.framework */; }; + 4DFF554A0F4F2A407D5029A8 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C3A4036543A5F4D388077F8 /* AudioUnit.framework */; }; + 23912E460FCD6BE5241A46B4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 095F66393819011805762F15 /* Cocoa.framework */; }; + 154169203C7D401344762C1D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 593D3B6D19B2200F58A33791 /* CoreAudio.framework */; }; + 403916CC66C752035BE06DED /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 580B463C369D259B765E3F8B /* IOKit.framework */; }; + 7B4041BD67D8575275737815 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DDB3420411900597E7212E8 /* Carbon.framework */; }; + 362167D64276552A3FCE0750 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 465334B02BF374DA55A82326 /* ForceFeedback.framework */; }; + 15B32480703C137461EE702C /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2202391C16A95D7017F976C7 /* CoreFoundation.framework */; }; + 44596FF238E219EE09EC7853 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EB81EF9772F48412C6E0F1B /* OpenGL.framework */; }; + 72D05F7A733D343A0BC07480 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B6555596B1273C930FE7894 /* libSDL2main.a */; }; + 034941353E8045B46B1C7D86 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 59C679F76EEB2EBB04E2191E /* libSDL2test.a */; }; + 05BD685071F731DE68AC13DC /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CE6342660EF78D43EC23884 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 622C5D1C62FC444535862021 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76A359E42D217A9505C34D0A /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 7A670E185EB0770033CB69B6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76A359E42D217A9505C34D0A /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 33B7568362751D6A45F50EE1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 14A50C9D21D625127E911EB8 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 0F66264E4AEB40445853393D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 14A50C9D21D625127E911EB8 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 292F7EEB7FEE17460AF64BF2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1B5A3E4D6F33176919BB7DA4 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 370D6ACE1AFA53D0137160E9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1B5A3E4D6F33176919BB7DA4 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 141F0FF40384619134F5534A /* testgl2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgl2.c"; path = "../../../../../test/testgl2.c"; sourceTree = ""; }; + 7FCF2FA52E266E6C2DF215F0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 1C3A4036543A5F4D388077F8 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 095F66393819011805762F15 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 593D3B6D19B2200F58A33791 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 580B463C369D259B765E3F8B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 1DDB3420411900597E7212E8 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 465334B02BF374DA55A82326 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2202391C16A95D7017F976C7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 7EB81EF9772F48412C6E0F1B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 0BC6258F61B33D4C4B5562BF /* testgl2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgl2"; path = "testgl2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 76A359E42D217A9505C34D0A /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 14A50C9D21D625127E911EB8 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 1B5A3E4D6F33176919BB7DA4 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 209532DC294B22C61B922076 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 56AA4CF44B901545165959CE /* AudioToolbox.framework in Frameworks */, + 4DFF554A0F4F2A407D5029A8 /* AudioUnit.framework in Frameworks */, + 23912E460FCD6BE5241A46B4 /* Cocoa.framework in Frameworks */, + 154169203C7D401344762C1D /* CoreAudio.framework in Frameworks */, + 403916CC66C752035BE06DED /* IOKit.framework in Frameworks */, + 7B4041BD67D8575275737815 /* Carbon.framework in Frameworks */, + 362167D64276552A3FCE0750 /* ForceFeedback.framework in Frameworks */, + 15B32480703C137461EE702C /* CoreFoundation.framework in Frameworks */, + 44596FF238E219EE09EC7853 /* OpenGL.framework in Frameworks */, + 72D05F7A733D343A0BC07480 /* libSDL2main.a in Frameworks */, + 034941353E8045B46B1C7D86 /* libSDL2test.a in Frameworks */, + 05BD685071F731DE68AC13DC /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 465B1AE8216D001D17080EC6 /* testgl2 */ = { + isa = PBXGroup; + children = ( + 0201256278614E1E16276DE2 /* test */, + 64A30E4903AE3ADF12CB5DEF /* Frameworks */, + 48E634A15AD81F141064337A /* Products */, + 4A133F5830377EFE62217CA4 /* Projects */, + ); + name = "testgl2"; + sourceTree = ""; + }; + 0201256278614E1E16276DE2 /* test */ = { + isa = PBXGroup; + children = ( + 141F0FF40384619134F5534A /* testgl2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 64A30E4903AE3ADF12CB5DEF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7FCF2FA52E266E6C2DF215F0 /* AudioToolbox.framework */, + 1C3A4036543A5F4D388077F8 /* AudioUnit.framework */, + 095F66393819011805762F15 /* Cocoa.framework */, + 593D3B6D19B2200F58A33791 /* CoreAudio.framework */, + 580B463C369D259B765E3F8B /* IOKit.framework */, + 1DDB3420411900597E7212E8 /* Carbon.framework */, + 465334B02BF374DA55A82326 /* ForceFeedback.framework */, + 2202391C16A95D7017F976C7 /* CoreFoundation.framework */, + 7EB81EF9772F48412C6E0F1B /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 48E634A15AD81F141064337A /* Products */ = { + isa = PBXGroup; + children = ( + 0BC6258F61B33D4C4B5562BF /* testgl2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 4A133F5830377EFE62217CA4 /* Projects */ = { + isa = PBXGroup; + children = ( + 76A359E42D217A9505C34D0A /* SDL2main.xcodeproj */, + 14A50C9D21D625127E911EB8 /* SDL2test.xcodeproj */, + 1B5A3E4D6F33176919BB7DA4 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 01700FE33BBA67BB27B03FA2 /* Products */ = { + isa = PBXGroup; + children = ( + 6B6555596B1273C930FE7894 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 42B52595158160F46B595B6E /* Products */ = { + isa = PBXGroup; + children = ( + 59C679F76EEB2EBB04E2191E /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 665B723C584D3457669F0662 /* Products */ = { + isa = PBXGroup; + children = ( + 4CE6342660EF78D43EC23884 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 09871A226783567418BC6E4B /* testgl2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0E3F4B724866589D377D1E2D /* Build configuration list for PBXNativeTarget "testgl2" */; + buildPhases = ( + 426727121A5156BC56462CC3 /* Resources */, + 5A026C0341E5247444CE5D1D /* Sources */, + 209532DC294B22C61B922076 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4CDD5FF708B6685E34E4230D /* PBXTargetDependency */, + 69650A577C703F645A88239C /* PBXTargetDependency */, + 12CB4F954B4949025E8F3839 /* PBXTargetDependency */, + ); + name = "testgl2"; + productInstallPath = "$(HOME)/bin"; + productName = "testgl2"; + productReference = 0BC6258F61B33D4C4B5562BF /* testgl2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgl2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 465B1AE8216D001D17080EC6 /* testgl2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 01700FE33BBA67BB27B03FA2 /* Products */; + ProjectRef = 76A359E42D217A9505C34D0A /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 42B52595158160F46B595B6E /* Products */; + ProjectRef = 14A50C9D21D625127E911EB8 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 665B723C584D3457669F0662 /* Products */; + ProjectRef = 1B5A3E4D6F33176919BB7DA4 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 09871A226783567418BC6E4B /* testgl2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6B6555596B1273C930FE7894 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 622C5D1C62FC444535862021 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 59C679F76EEB2EBB04E2191E /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 33B7568362751D6A45F50EE1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4CE6342660EF78D43EC23884 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 292F7EEB7FEE17460AF64BF2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 426727121A5156BC56462CC3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5A026C0341E5247444CE5D1D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 45DC11BD255127A03296336D /* testgl2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 4CDD5FF708B6685E34E4230D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7A670E185EB0770033CB69B6 /* PBXContainerItemProxy */; + }; + 69650A577C703F645A88239C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 0F66264E4AEB40445853393D /* PBXContainerItemProxy */; + }; + 12CB4F954B4949025E8F3839 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 370D6ACE1AFA53D0137160E9 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 04DF58A401A123F35F6227DC /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Debug Universal"; + }; + 11753A370B4E473167C3541A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Debug Native"; + }; + 336F7099534775236C4353F3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Release Universal"; + }; + 320B2B536322701915AB3BF8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Release Native"; + }; + 0E88081B45496F9753180170 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 331B700F27E012D9685B2E60 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 16DE5F1A4C99731C4E3E4AD8 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 1E812F881D9870206906114B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0E3F4B724866589D377D1E2D /* Build configuration list for PBXNativeTarget "testgl2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 04DF58A401A123F35F6227DC /* Debug Universal */, + 11753A370B4E473167C3541A /* Debug Native */, + 336F7099534775236C4353F3 /* Release Universal */, + 320B2B536322701915AB3BF8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgl2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0E88081B45496F9753180170 /* Debug Universal */, + 331B700F27E012D9685B2E60 /* Debug Native */, + 16DE5F1A4C99731C4E3E4AD8 /* Release Universal */, + 1E812F881D9870206906114B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testgles/testgles.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testgles/testgles.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..fd5ffaa55d --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testgles/testgles.xcodeproj/project.pbxproj @@ -0,0 +1,500 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 12E6555A195D655D76AB7FE7 /* testgles.c in Sources */ = {isa = PBXBuildFile; fileRef = 241A4D8509966F521DB96605 /* testgles.c */; }; + 19795BC104CB34C45E135AED /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29C434103F9900A855196701 /* AudioToolbox.framework */; }; + 1A9E278937C233991A1240D9 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F0159CE1F5A03FB737D1886 /* AudioUnit.framework */; }; + 5996326A75857CF20C70215A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71CA3644420E595D256119F7 /* Cocoa.framework */; }; + 03636CCB238052184B4F5194 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3438EA4AC101261C9110D6 /* CoreAudio.framework */; }; + 777004977662336A18A23F26 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C5761C0138F27263A284205 /* IOKit.framework */; }; + 0A7A10E41D4C175E1DB4223C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 065D03CF2E37393F5E900075 /* Carbon.framework */; }; + 7D577CE807AB7E8A3EE76B08 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 472D7ACE7C61038858644EAF /* ForceFeedback.framework */; }; + 7E2C1EBA6D820BF93F50356B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A487B7D04DC3C37426321F9 /* CoreFoundation.framework */; }; + 53DC2D0A2AE873D87B43109E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 24E345CE65080603580B49A4 /* OpenGL.framework */; }; + 7F0C00B5705C5E26218B356A /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 735A4BF97F3056123C477376 /* libSDL2main.a */; }; + 5D6D52C8514B468A1BCE3011 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 24B2285772D3379A7F433A59 /* libSDL2test.a */; }; + 6F2C31FE41BA305E014C63E4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B3551586B877E200CBA316F /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 60625E0A184039DB663474EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0996113878EF3AB7044A3085 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0D0C48787B472E550CA07A11 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0996113878EF3AB7044A3085 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 65EE288F53050FD30E024D39 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7C8120E92B5D6E196B952A4E /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 680070780FEE6D3633973F7B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7C8120E92B5D6E196B952A4E /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 6F5D71CC10306FE26D5A47FF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 48D12E4C0DF01FB13E7F1DA8 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 42B52D18274543E92B5B6F65 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 48D12E4C0DF01FB13E7F1DA8 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 241A4D8509966F521DB96605 /* testgles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgles.c"; path = "../../../../../test/testgles.c"; sourceTree = ""; }; + 29C434103F9900A855196701 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7F0159CE1F5A03FB737D1886 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 71CA3644420E595D256119F7 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 3D3438EA4AC101261C9110D6 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6C5761C0138F27263A284205 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 065D03CF2E37393F5E900075 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 472D7ACE7C61038858644EAF /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 1A487B7D04DC3C37426321F9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 24E345CE65080603580B49A4 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 688E4AA325C27C0B4DE93985 /* testgles */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgles"; path = "testgles"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0996113878EF3AB7044A3085 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7C8120E92B5D6E196B952A4E /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 48D12E4C0DF01FB13E7F1DA8 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 61195EE80F49035904F30384 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 19795BC104CB34C45E135AED /* AudioToolbox.framework in Frameworks */, + 1A9E278937C233991A1240D9 /* AudioUnit.framework in Frameworks */, + 5996326A75857CF20C70215A /* Cocoa.framework in Frameworks */, + 03636CCB238052184B4F5194 /* CoreAudio.framework in Frameworks */, + 777004977662336A18A23F26 /* IOKit.framework in Frameworks */, + 0A7A10E41D4C175E1DB4223C /* Carbon.framework in Frameworks */, + 7D577CE807AB7E8A3EE76B08 /* ForceFeedback.framework in Frameworks */, + 7E2C1EBA6D820BF93F50356B /* CoreFoundation.framework in Frameworks */, + 53DC2D0A2AE873D87B43109E /* OpenGL.framework in Frameworks */, + 7F0C00B5705C5E26218B356A /* libSDL2main.a in Frameworks */, + 5D6D52C8514B468A1BCE3011 /* libSDL2test.a in Frameworks */, + 6F2C31FE41BA305E014C63E4 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 17A905F262DF26E86D1A06ED /* testgles */ = { + isa = PBXGroup; + children = ( + 44B346220B51319C389D6B05 /* test */, + 19DE5CE602953B250C466761 /* Frameworks */, + 78B41FCF563962081FDC583E /* Products */, + 06E262DA7BF8071F1180103A /* Projects */, + ); + name = "testgles"; + sourceTree = ""; + }; + 44B346220B51319C389D6B05 /* test */ = { + isa = PBXGroup; + children = ( + 241A4D8509966F521DB96605 /* testgles.c */, + ); + name = "test"; + sourceTree = ""; + }; + 19DE5CE602953B250C466761 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 29C434103F9900A855196701 /* AudioToolbox.framework */, + 7F0159CE1F5A03FB737D1886 /* AudioUnit.framework */, + 71CA3644420E595D256119F7 /* Cocoa.framework */, + 3D3438EA4AC101261C9110D6 /* CoreAudio.framework */, + 6C5761C0138F27263A284205 /* IOKit.framework */, + 065D03CF2E37393F5E900075 /* Carbon.framework */, + 472D7ACE7C61038858644EAF /* ForceFeedback.framework */, + 1A487B7D04DC3C37426321F9 /* CoreFoundation.framework */, + 24E345CE65080603580B49A4 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 78B41FCF563962081FDC583E /* Products */ = { + isa = PBXGroup; + children = ( + 688E4AA325C27C0B4DE93985 /* testgles */, + ); + name = "Products"; + sourceTree = ""; + }; + 06E262DA7BF8071F1180103A /* Projects */ = { + isa = PBXGroup; + children = ( + 0996113878EF3AB7044A3085 /* SDL2main.xcodeproj */, + 7C8120E92B5D6E196B952A4E /* SDL2test.xcodeproj */, + 48D12E4C0DF01FB13E7F1DA8 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 5CCE03C038CE6C8007C7533F /* Products */ = { + isa = PBXGroup; + children = ( + 735A4BF97F3056123C477376 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4CA4399E75A335213A540466 /* Products */ = { + isa = PBXGroup; + children = ( + 24B2285772D3379A7F433A59 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 64D21F91171E388B512D08F4 /* Products */ = { + isa = PBXGroup; + children = ( + 0B3551586B877E200CBA316F /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6FC5723312640035258E23A7 /* testgles */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2A7B0CA6149577840FF2685B /* Build configuration list for PBXNativeTarget "testgles" */; + buildPhases = ( + 44163DE050017234528F64A1 /* Resources */, + 2C8849233F0D089127467B06 /* Sources */, + 61195EE80F49035904F30384 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 18F7300604A73072356D2120 /* PBXTargetDependency */, + 34DA5F3E1DEF6BC70000000B /* PBXTargetDependency */, + 78742F471BE7751D78371D9C /* PBXTargetDependency */, + ); + name = "testgles"; + productInstallPath = "$(HOME)/bin"; + productName = "testgles"; + productReference = 688E4AA325C27C0B4DE93985 /* testgles */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgles" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 17A905F262DF26E86D1A06ED /* testgles */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 5CCE03C038CE6C8007C7533F /* Products */; + ProjectRef = 0996113878EF3AB7044A3085 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4CA4399E75A335213A540466 /* Products */; + ProjectRef = 7C8120E92B5D6E196B952A4E /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 64D21F91171E388B512D08F4 /* Products */; + ProjectRef = 48D12E4C0DF01FB13E7F1DA8 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6FC5723312640035258E23A7 /* testgles */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 735A4BF97F3056123C477376 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 60625E0A184039DB663474EF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 24B2285772D3379A7F433A59 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 65EE288F53050FD30E024D39 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0B3551586B877E200CBA316F /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 6F5D71CC10306FE26D5A47FF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 44163DE050017234528F64A1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2C8849233F0D089127467B06 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 12E6555A195D655D76AB7FE7 /* testgles.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 18F7300604A73072356D2120 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0D0C48787B472E550CA07A11 /* PBXContainerItemProxy */; + }; + 34DA5F3E1DEF6BC70000000B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 680070780FEE6D3633973F7B /* PBXContainerItemProxy */; + }; + 78742F471BE7751D78371D9C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 42B52D18274543E92B5B6F65 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2FC47005660448E2215567B3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Debug Universal"; + }; + 45FE67EC62480E8C0EC94BA2 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Debug Native"; + }; + 4ABE2FD422AA526A4FB64D2C /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Release Universal"; + }; + 4A8D220649E453AC462559B7 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Release Native"; + }; + 2C0F3E1E519F33CD14FA482C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 15381143051326761B1C75E9 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 44A94F96103E7CAD6A624F7F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 30CA28B5385430D51A3462B8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2A7B0CA6149577840FF2685B /* Build configuration list for PBXNativeTarget "testgles" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2FC47005660448E2215567B3 /* Debug Universal */, + 45FE67EC62480E8C0EC94BA2 /* Debug Native */, + 4ABE2FD422AA526A4FB64D2C /* Release Universal */, + 4A8D220649E453AC462559B7 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgles" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2C0F3E1E519F33CD14FA482C /* Debug Universal */, + 15381143051326761B1C75E9 /* Debug Native */, + 44A94F96103E7CAD6A624F7F /* Release Universal */, + 30CA28B5385430D51A3462B8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..b52d8d3f34 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 59F50E2B39BC77DC3ECD4640 /* testhaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 1DB847C427EA0F444B4B4FC0 /* testhaptic.c */; }; + 6179774414C80B03771B4D1F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1408403C2E7331A83879467D /* AudioToolbox.framework */; }; + 45CE764402F40F97189A30FC /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BDE62C2453138766EB542CF /* AudioUnit.framework */; }; + 24D54CFC45B1005E536540FE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B1586B0BFB4A074B0F5B3B /* Cocoa.framework */; }; + 2E9633335EE7194733506087 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B1F202D013748602EA96A1F /* CoreAudio.framework */; }; + 793C655802C108DC5A1603CC /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7032139D43855B2A3DA345CC /* IOKit.framework */; }; + 68864CB73A65629C2D34335C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06AF7E814C06487468C37716 /* Carbon.framework */; }; + 27BA615E079D63396FEC23A4 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 126F3704120B219353BF4AE3 /* ForceFeedback.framework */; }; + 160736E258B964640D9D79BA /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01544B8A7A1F37C115280446 /* CoreFoundation.framework */; }; + 558E796E47515366631902B9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F3120474431725B4CF4428B /* OpenGL.framework */; }; + 541C26D102115FD4093A47F8 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CB511B1018C4FBD1F19617E /* libSDL2main.a */; }; + 60C53756713009886F8129EA /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 29897FFF7AE350C831F9065D /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 450D67A300D33EF705491E89 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0C0F4A6E7D62458863F431FF /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 645E5AAE6C712DF335755293 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0C0F4A6E7D62458863F431FF /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 71F0553C5BBA1AE570F02A60 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 03181F213C260D2457796F54 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 34C636D75FB114266D774F34 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 03181F213C260D2457796F54 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1DB847C427EA0F444B4B4FC0 /* testhaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testhaptic.c"; path = "../../../../../test/testhaptic.c"; sourceTree = ""; }; + 1408403C2E7331A83879467D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 6BDE62C2453138766EB542CF /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 29B1586B0BFB4A074B0F5B3B /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 1B1F202D013748602EA96A1F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 7032139D43855B2A3DA345CC /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 06AF7E814C06487468C37716 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 126F3704120B219353BF4AE3 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 01544B8A7A1F37C115280446 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 5F3120474431725B4CF4428B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 12140D0C4C6D44C900626222 /* testhaptic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testhaptic"; path = "testhaptic"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0C0F4A6E7D62458863F431FF /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 03181F213C260D2457796F54 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5EA00FC55C7A5EDF384F5EDD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6179774414C80B03771B4D1F /* AudioToolbox.framework in Frameworks */, + 45CE764402F40F97189A30FC /* AudioUnit.framework in Frameworks */, + 24D54CFC45B1005E536540FE /* Cocoa.framework in Frameworks */, + 2E9633335EE7194733506087 /* CoreAudio.framework in Frameworks */, + 793C655802C108DC5A1603CC /* IOKit.framework in Frameworks */, + 68864CB73A65629C2D34335C /* Carbon.framework in Frameworks */, + 27BA615E079D63396FEC23A4 /* ForceFeedback.framework in Frameworks */, + 160736E258B964640D9D79BA /* CoreFoundation.framework in Frameworks */, + 558E796E47515366631902B9 /* OpenGL.framework in Frameworks */, + 541C26D102115FD4093A47F8 /* libSDL2main.a in Frameworks */, + 60C53756713009886F8129EA /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 67B45C0D66CA748F0507306F /* testhaptic */ = { + isa = PBXGroup; + children = ( + 66DE1C0E69BF3B2849D5642A /* test */, + 14E414A5128A5A3D7B2023E1 /* Frameworks */, + 48AC304A038C162A29342369 /* Products */, + 010E474B30072FBF3CFC63E2 /* Projects */, + ); + name = "testhaptic"; + sourceTree = ""; + }; + 66DE1C0E69BF3B2849D5642A /* test */ = { + isa = PBXGroup; + children = ( + 1DB847C427EA0F444B4B4FC0 /* testhaptic.c */, + ); + name = "test"; + sourceTree = ""; + }; + 14E414A5128A5A3D7B2023E1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1408403C2E7331A83879467D /* AudioToolbox.framework */, + 6BDE62C2453138766EB542CF /* AudioUnit.framework */, + 29B1586B0BFB4A074B0F5B3B /* Cocoa.framework */, + 1B1F202D013748602EA96A1F /* CoreAudio.framework */, + 7032139D43855B2A3DA345CC /* IOKit.framework */, + 06AF7E814C06487468C37716 /* Carbon.framework */, + 126F3704120B219353BF4AE3 /* ForceFeedback.framework */, + 01544B8A7A1F37C115280446 /* CoreFoundation.framework */, + 5F3120474431725B4CF4428B /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 48AC304A038C162A29342369 /* Products */ = { + isa = PBXGroup; + children = ( + 12140D0C4C6D44C900626222 /* testhaptic */, + ); + name = "Products"; + sourceTree = ""; + }; + 010E474B30072FBF3CFC63E2 /* Projects */ = { + isa = PBXGroup; + children = ( + 0C0F4A6E7D62458863F431FF /* SDL2main.xcodeproj */, + 03181F213C260D2457796F54 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 480439CD75176D0E386C6BDC /* Products */ = { + isa = PBXGroup; + children = ( + 6CB511B1018C4FBD1F19617E /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 1F065A3302AD32D00BE23A4A /* Products */ = { + isa = PBXGroup; + children = ( + 29897FFF7AE350C831F9065D /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 312F0ABB19C846A84CB53A27 /* testhaptic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4D7D730D605E45A010DF3481 /* Build configuration list for PBXNativeTarget "testhaptic" */; + buildPhases = ( + 3A0D5AAE05F46B2A13675B25 /* Resources */, + 6E7D06AC1504471B4E3B32E5 /* Sources */, + 5EA00FC55C7A5EDF384F5EDD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3D383CDA1C2B78E100F63058 /* PBXTargetDependency */, + 107B2B3356DF78FF5A9302A6 /* PBXTargetDependency */, + ); + name = "testhaptic"; + productInstallPath = "$(HOME)/bin"; + productName = "testhaptic"; + productReference = 12140D0C4C6D44C900626222 /* testhaptic */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testhaptic" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 67B45C0D66CA748F0507306F /* testhaptic */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 480439CD75176D0E386C6BDC /* Products */; + ProjectRef = 0C0F4A6E7D62458863F431FF /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 1F065A3302AD32D00BE23A4A /* Products */; + ProjectRef = 03181F213C260D2457796F54 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 312F0ABB19C846A84CB53A27 /* testhaptic */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6CB511B1018C4FBD1F19617E /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 450D67A300D33EF705491E89 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 29897FFF7AE350C831F9065D /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 71F0553C5BBA1AE570F02A60 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3A0D5AAE05F46B2A13675B25 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6E7D06AC1504471B4E3B32E5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 59F50E2B39BC77DC3ECD4640 /* testhaptic.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 3D383CDA1C2B78E100F63058 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 645E5AAE6C712DF335755293 /* PBXContainerItemProxy */; + }; + 107B2B3356DF78FF5A9302A6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 34C636D75FB114266D774F34 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 068534B70F1E26297830190C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Debug Universal"; + }; + 26CE5B804873277736E51BD0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Debug Native"; + }; + 0A706DF51C7E14FD1AD05E03 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Release Universal"; + }; + 373D05D241F56D402BDA7F09 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Release Native"; + }; + 7E65562D5FE678C57E314BC1 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1F071C371D63041C56C5244C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 37451B5D01EF1CE448BC5895 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 528722B270F72709528E28F6 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4D7D730D605E45A010DF3481 /* Build configuration list for PBXNativeTarget "testhaptic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 068534B70F1E26297830190C /* Debug Universal */, + 26CE5B804873277736E51BD0 /* Debug Native */, + 0A706DF51C7E14FD1AD05E03 /* Release Universal */, + 373D05D241F56D402BDA7F09 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testhaptic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E65562D5FE678C57E314BC1 /* Debug Universal */, + 1F071C371D63041C56C5244C /* Debug Native */, + 37451B5D01EF1CE448BC5895 /* Release Universal */, + 528722B270F72709528E28F6 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testiconv/testiconv.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testiconv/testiconv.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..e234cc8e74 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testiconv/testiconv.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6A2279D13C4C3252465E71F6 /* testiconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 355B073267DA1C532F9C64E8 /* testiconv.c */; }; + 615F4AEB22F27C9E12B74147 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45B8718637C864472C7963C2 /* AudioToolbox.framework */; }; + 77F5772745E77D6931B04B08 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A8058CA51FA2FD227B71243 /* AudioUnit.framework */; }; + 20A4101D71B743801C3F7345 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B34592C60C4682D04025399 /* Cocoa.framework */; }; + 269E6A3E48B22839364E530B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 48C66BE91AF63E8E1D1E33EF /* CoreAudio.framework */; }; + 092226E72E097B0652F36296 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A3D521441115A9A6EA26E03 /* IOKit.framework */; }; + 28B73F0D7D2B233B355E6E43 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18DC4BE959C91D4F3FAF0A33 /* Carbon.framework */; }; + 340D737868153D614AD5246C /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28A5128C4E42708D7A4021A6 /* ForceFeedback.framework */; }; + 22160C952BAF10DE1F0D385A /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BB16CCF40D96EB61AAA453C /* CoreFoundation.framework */; }; + 1EC263FC3CCD652438CD2BE6 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 551A4C320C0A75F81A2F25F1 /* OpenGL.framework */; }; + 68CF1BFA47FF42596EFF4442 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 61784B4D50322C5908E50E60 /* libSDL2main.a */; }; + 0A8548A223350FD4357D3020 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ED33F5A5C6B1A6A48703C84 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 78FF2E00306D741745246DC5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45881B3D6A3079C84A48739B /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 45326B067C60183D7F2A2472 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45881B3D6A3079C84A48739B /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 0C29120D309D2380587255B1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7A9B013F69BB7A9E264C7EF9 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 772012CD053649584ED11159 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7A9B013F69BB7A9E264C7EF9 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 355B073267DA1C532F9C64E8 /* testiconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testiconv.c"; path = "../../../../../test/testiconv.c"; sourceTree = ""; }; + 45B8718637C864472C7963C2 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4A8058CA51FA2FD227B71243 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3B34592C60C4682D04025399 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 48C66BE91AF63E8E1D1E33EF /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1A3D521441115A9A6EA26E03 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 18DC4BE959C91D4F3FAF0A33 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 28A5128C4E42708D7A4021A6 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 6BB16CCF40D96EB61AAA453C /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 551A4C320C0A75F81A2F25F1 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7C44581E382C678639A07165 /* testiconv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testiconv"; path = "testiconv"; sourceTree = BUILT_PRODUCTS_DIR; }; + 45881B3D6A3079C84A48739B /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7A9B013F69BB7A9E264C7EF9 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4993751A0DB2391338FF263A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 615F4AEB22F27C9E12B74147 /* AudioToolbox.framework in Frameworks */, + 77F5772745E77D6931B04B08 /* AudioUnit.framework in Frameworks */, + 20A4101D71B743801C3F7345 /* Cocoa.framework in Frameworks */, + 269E6A3E48B22839364E530B /* CoreAudio.framework in Frameworks */, + 092226E72E097B0652F36296 /* IOKit.framework in Frameworks */, + 28B73F0D7D2B233B355E6E43 /* Carbon.framework in Frameworks */, + 340D737868153D614AD5246C /* ForceFeedback.framework in Frameworks */, + 22160C952BAF10DE1F0D385A /* CoreFoundation.framework in Frameworks */, + 1EC263FC3CCD652438CD2BE6 /* OpenGL.framework in Frameworks */, + 68CF1BFA47FF42596EFF4442 /* libSDL2main.a in Frameworks */, + 0A8548A223350FD4357D3020 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3F2E707864DD166F57CA4AEF /* testiconv */ = { + isa = PBXGroup; + children = ( + 241D742D6A9B10385D083E64 /* test */, + 008C68AE381B31D66E154625 /* Frameworks */, + 182B54E133F749AC417A45B8 /* Products */, + 680C0B4E60E8423466903412 /* Projects */, + ); + name = "testiconv"; + sourceTree = ""; + }; + 241D742D6A9B10385D083E64 /* test */ = { + isa = PBXGroup; + children = ( + 355B073267DA1C532F9C64E8 /* testiconv.c */, + ); + name = "test"; + sourceTree = ""; + }; + 008C68AE381B31D66E154625 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 45B8718637C864472C7963C2 /* AudioToolbox.framework */, + 4A8058CA51FA2FD227B71243 /* AudioUnit.framework */, + 3B34592C60C4682D04025399 /* Cocoa.framework */, + 48C66BE91AF63E8E1D1E33EF /* CoreAudio.framework */, + 1A3D521441115A9A6EA26E03 /* IOKit.framework */, + 18DC4BE959C91D4F3FAF0A33 /* Carbon.framework */, + 28A5128C4E42708D7A4021A6 /* ForceFeedback.framework */, + 6BB16CCF40D96EB61AAA453C /* CoreFoundation.framework */, + 551A4C320C0A75F81A2F25F1 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 182B54E133F749AC417A45B8 /* Products */ = { + isa = PBXGroup; + children = ( + 7C44581E382C678639A07165 /* testiconv */, + ); + name = "Products"; + sourceTree = ""; + }; + 680C0B4E60E8423466903412 /* Projects */ = { + isa = PBXGroup; + children = ( + 45881B3D6A3079C84A48739B /* SDL2main.xcodeproj */, + 7A9B013F69BB7A9E264C7EF9 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 5E744E323DF61B0B01916A66 /* Products */ = { + isa = PBXGroup; + children = ( + 61784B4D50322C5908E50E60 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4C4F723645B30A7A6C3D431C /* Products */ = { + isa = PBXGroup; + children = ( + 3ED33F5A5C6B1A6A48703C84 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5CCC58AE10AE326260794B34 /* testiconv */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B38692E7969686C31327012 /* Build configuration list for PBXNativeTarget "testiconv" */; + buildPhases = ( + 67090739556842CB41B439F0 /* Resources */, + 542019CC40DA68E754AE20BA /* Sources */, + 4993751A0DB2391338FF263A /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 46694D6743F9414E0A461877 /* PBXTargetDependency */, + 7797690F694945A446C73504 /* PBXTargetDependency */, + ); + name = "testiconv"; + productInstallPath = "$(HOME)/bin"; + productName = "testiconv"; + productReference = 7C44581E382C678639A07165 /* testiconv */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testiconv" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 3F2E707864DD166F57CA4AEF /* testiconv */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 5E744E323DF61B0B01916A66 /* Products */; + ProjectRef = 45881B3D6A3079C84A48739B /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4C4F723645B30A7A6C3D431C /* Products */; + ProjectRef = 7A9B013F69BB7A9E264C7EF9 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 5CCC58AE10AE326260794B34 /* testiconv */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 61784B4D50322C5908E50E60 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 78FF2E00306D741745246DC5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3ED33F5A5C6B1A6A48703C84 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 0C29120D309D2380587255B1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 67090739556842CB41B439F0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Debug/utf8.txt\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Debug/utf8.txt\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Release/utf8.txt\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Release/utf8.txt\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 542019CC40DA68E754AE20BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6A2279D13C4C3252465E71F6 /* testiconv.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 46694D6743F9414E0A461877 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 45326B067C60183D7F2A2472 /* PBXContainerItemProxy */; + }; + 7797690F694945A446C73504 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 772012CD053649584ED11159 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 505335353418205A205A15C7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Debug Universal"; + }; + 59AA33FF5426169720C71FB9 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Debug Native"; + }; + 0D6B7A9B611B597E6FAA36A9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Release Universal"; + }; + 49AE52C85A660C8C74FE05F6 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Release Native"; + }; + 75CD2181558A6BE2794B3828 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 2FD811E157882FC610344766 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 1C404FC714CD5A472B7E6828 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 71F53DA9594439794E8053E4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3B38692E7969686C31327012 /* Build configuration list for PBXNativeTarget "testiconv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 505335353418205A205A15C7 /* Debug Universal */, + 59AA33FF5426169720C71FB9 /* Debug Native */, + 0D6B7A9B611B597E6FAA36A9 /* Release Universal */, + 49AE52C85A660C8C74FE05F6 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testiconv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 75CD2181558A6BE2794B3828 /* Debug Universal */, + 2FD811E157882FC610344766 /* Debug Native */, + 1C404FC714CD5A472B7E6828 /* Release Universal */, + 71F53DA9594439794E8053E4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testime/testime.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testime/testime.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..5187681b0f --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testime/testime.xcodeproj/project.pbxproj @@ -0,0 +1,500 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 1EDB663620575F3054616AEB /* testime.c in Sources */ = {isa = PBXBuildFile; fileRef = 11A02A5F7E6943E269934106 /* testime.c */; }; + 613052B57E3162A16B241A77 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F195173606E033879915ED6 /* AudioToolbox.framework */; }; + 00EB7592040245EC40254D0F /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 310A41FA124B378F383C2325 /* AudioUnit.framework */; }; + 6441758D13DC088E29607C64 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32CA18327EB352DF5A8D0B54 /* Cocoa.framework */; }; + 57F87FD645CC7E9A3847664D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CEA64342A102110565F0FB5 /* CoreAudio.framework */; }; + 5BA21E9A38D1262366AD6CD3 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 076C5E737F3D08FD55534ADA /* IOKit.framework */; }; + 26E066AD77781CFB42535B92 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FEA59A651FA0D0340794E81 /* Carbon.framework */; }; + 59FB2D8F312B1BC342875718 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68D73105473A4CAE57B07517 /* ForceFeedback.framework */; }; + 22C6225A72AF49B066FC55B9 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73A83F313C8704897D5C5BDF /* CoreFoundation.framework */; }; + 757D798F5C211E0F24A0135C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E284413593E133B2D9D2692 /* OpenGL.framework */; }; + 113F63BE79BE46557BA72CA3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A5E09A54F041CAD5A88365B /* libSDL2main.a */; }; + 730A4F453D55402B08817501 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BF51AB17AFB19DD19A41D8A /* libSDL2test.a */; }; + 0E1B35461F512D4C7285093B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 21F827FF0C5816560BC3654A /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 54A5423C7BCA2B9C127340A5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5462094A07E20B6524FE5114 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 165D46083E8C01E053817623 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5462094A07E20B6524FE5114 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 28205901017F5224480C3D77 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E827E317C8922E833D04EF6 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 6E0A77CE119C1F6747E47D49 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E827E317C8922E833D04EF6 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 18F53753498742003FB121F9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 38710754324617266DDD04F7 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 0A861DC31CC55AAA06123397 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 38710754324617266DDD04F7 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 11A02A5F7E6943E269934106 /* testime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testime.c"; path = "../../../../../test/testime.c"; sourceTree = ""; }; + 0F195173606E033879915ED6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 310A41FA124B378F383C2325 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 32CA18327EB352DF5A8D0B54 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0CEA64342A102110565F0FB5 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 076C5E737F3D08FD55534ADA /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 2FEA59A651FA0D0340794E81 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 68D73105473A4CAE57B07517 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 73A83F313C8704897D5C5BDF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 6E284413593E133B2D9D2692 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4CA851404B43468A269B3E01 /* testime */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testime"; path = "testime"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5462094A07E20B6524FE5114 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 1E827E317C8922E833D04EF6 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 38710754324617266DDD04F7 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 279D3A6C2AD91B503BB16619 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 613052B57E3162A16B241A77 /* AudioToolbox.framework in Frameworks */, + 00EB7592040245EC40254D0F /* AudioUnit.framework in Frameworks */, + 6441758D13DC088E29607C64 /* Cocoa.framework in Frameworks */, + 57F87FD645CC7E9A3847664D /* CoreAudio.framework in Frameworks */, + 5BA21E9A38D1262366AD6CD3 /* IOKit.framework in Frameworks */, + 26E066AD77781CFB42535B92 /* Carbon.framework in Frameworks */, + 59FB2D8F312B1BC342875718 /* ForceFeedback.framework in Frameworks */, + 22C6225A72AF49B066FC55B9 /* CoreFoundation.framework in Frameworks */, + 757D798F5C211E0F24A0135C /* OpenGL.framework in Frameworks */, + 113F63BE79BE46557BA72CA3 /* libSDL2main.a in Frameworks */, + 730A4F453D55402B08817501 /* libSDL2test.a in Frameworks */, + 0E1B35461F512D4C7285093B /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 24F8548E490A51AD73F90730 /* testime */ = { + isa = PBXGroup; + children = ( + 6BB33D7558BA2E1B75BF736F /* test */, + 7BD372143CE254F05A8C5D64 /* Frameworks */, + 375B758901B86A48519C138A /* Products */, + 4EFA08CE1EBB16973AA86F38 /* Projects */, + ); + name = "testime"; + sourceTree = ""; + }; + 6BB33D7558BA2E1B75BF736F /* test */ = { + isa = PBXGroup; + children = ( + 11A02A5F7E6943E269934106 /* testime.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7BD372143CE254F05A8C5D64 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0F195173606E033879915ED6 /* AudioToolbox.framework */, + 310A41FA124B378F383C2325 /* AudioUnit.framework */, + 32CA18327EB352DF5A8D0B54 /* Cocoa.framework */, + 0CEA64342A102110565F0FB5 /* CoreAudio.framework */, + 076C5E737F3D08FD55534ADA /* IOKit.framework */, + 2FEA59A651FA0D0340794E81 /* Carbon.framework */, + 68D73105473A4CAE57B07517 /* ForceFeedback.framework */, + 73A83F313C8704897D5C5BDF /* CoreFoundation.framework */, + 6E284413593E133B2D9D2692 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 375B758901B86A48519C138A /* Products */ = { + isa = PBXGroup; + children = ( + 4CA851404B43468A269B3E01 /* testime */, + ); + name = "Products"; + sourceTree = ""; + }; + 4EFA08CE1EBB16973AA86F38 /* Projects */ = { + isa = PBXGroup; + children = ( + 5462094A07E20B6524FE5114 /* SDL2main.xcodeproj */, + 1E827E317C8922E833D04EF6 /* SDL2test.xcodeproj */, + 38710754324617266DDD04F7 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 012A701F34E341CB05904C33 /* Products */ = { + isa = PBXGroup; + children = ( + 2A5E09A54F041CAD5A88365B /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 7A720DF02CC428E4323831CD /* Products */ = { + isa = PBXGroup; + children = ( + 2BF51AB17AFB19DD19A41D8A /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 673D575107FF0F490E53262C /* Products */ = { + isa = PBXGroup; + children = ( + 21F827FF0C5816560BC3654A /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5FFB08CD6FAD6C5D5690093E /* testime */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2B8A2D5531E53AAE047B2CE3 /* Build configuration list for PBXNativeTarget "testime" */; + buildPhases = ( + 754E61862C3B58FA1A10266B /* Resources */, + 57330AF227097B7B51BF0520 /* Sources */, + 279D3A6C2AD91B503BB16619 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0E61258026E713E1306004CC /* PBXTargetDependency */, + 7865519B232C46546BCE250A /* PBXTargetDependency */, + 329A502618BD5F5E53733FD2 /* PBXTargetDependency */, + ); + name = "testime"; + productInstallPath = "$(HOME)/bin"; + productName = "testime"; + productReference = 4CA851404B43468A269B3E01 /* testime */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testime" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 24F8548E490A51AD73F90730 /* testime */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 012A701F34E341CB05904C33 /* Products */; + ProjectRef = 5462094A07E20B6524FE5114 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 7A720DF02CC428E4323831CD /* Products */; + ProjectRef = 1E827E317C8922E833D04EF6 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 673D575107FF0F490E53262C /* Products */; + ProjectRef = 38710754324617266DDD04F7 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 5FFB08CD6FAD6C5D5690093E /* testime */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2A5E09A54F041CAD5A88365B /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 54A5423C7BCA2B9C127340A5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2BF51AB17AFB19DD19A41D8A /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 28205901017F5224480C3D77 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 21F827FF0C5816560BC3654A /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 18F53753498742003FB121F9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 754E61862C3B58FA1A10266B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 57330AF227097B7B51BF0520 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1EDB663620575F3054616AEB /* testime.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 0E61258026E713E1306004CC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 165D46083E8C01E053817623 /* PBXContainerItemProxy */; + }; + 7865519B232C46546BCE250A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 6E0A77CE119C1F6747E47D49 /* PBXContainerItemProxy */; + }; + 329A502618BD5F5E53733FD2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0A861DC31CC55AAA06123397 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 23ED296C0C2A473648331D5C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Debug Universal"; + }; + 03B50744244969F6368C4505 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Debug Native"; + }; + 7BBA1C27699F4CC86AED2AF5 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Release Universal"; + }; + 0FDA5AD5740C46651330643A /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Release Native"; + }; + 359E3F731C044EE956800EDB /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 4FCB504F00B51B566B493E34 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 4B947464660212194E6646A3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4E4B20BF024641E002716FE0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2B8A2D5531E53AAE047B2CE3 /* Build configuration list for PBXNativeTarget "testime" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 23ED296C0C2A473648331D5C /* Debug Universal */, + 03B50744244969F6368C4505 /* Debug Native */, + 7BBA1C27699F4CC86AED2AF5 /* Release Universal */, + 0FDA5AD5740C46651330643A /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testime" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 359E3F731C044EE956800EDB /* Debug Universal */, + 4FCB504F00B51B566B493E34 /* Debug Native */, + 4B947464660212194E6646A3 /* Release Universal */, + 4E4B20BF024641E002716FE0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..949afe9153 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 437763EC237B697869BF2660 /* testjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 575854C968D2339B42231A76 /* testjoystick.c */; }; + 32AE52E40F9717233C0A72E3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49C3541826C0415B5BBB06CF /* AudioToolbox.framework */; }; + 713701E9165222F508951B0E /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 429764A30EF679621FE318DF /* AudioUnit.framework */; }; + 3305365658676BF47B865992 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 359B66B92AB97B052733203F /* Cocoa.framework */; }; + 454009FE1676579236A11079 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AF04ACE566B29673FCA039D /* CoreAudio.framework */; }; + 467B73597DC93C1256A86A00 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AC6150503393A7C64612020 /* IOKit.framework */; }; + 0A43432E34B77E2616FB5EC5 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35A71D31162C3E4B53563DA2 /* Carbon.framework */; }; + 6A1914AC29146C09587E6BCE /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F8038BC5C9F6E2353B93128 /* ForceFeedback.framework */; }; + 053233FE18FE0035423B3545 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5017524D691246A4654E7105 /* CoreFoundation.framework */; }; + 586778620AFF201402161485 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002668CA5F860B982D337041 /* OpenGL.framework */; }; + 45E75FAF008E7FC7028A6A19 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B5B5AA2679776D81F72795B /* libSDL2main.a */; }; + 622C508C579041352925795D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A9150BB258A36985B8F3E17 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3C0976E362EC7ACF33A80284 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45AB706D14D3355F03637630 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 3D93018001435A5871A13166 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45AB706D14D3355F03637630 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 449314BE6BB215CB4B027627 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 123161E85C4544221F2559D2 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 10334206557652C1024D3BF6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 123161E85C4544221F2559D2 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 575854C968D2339B42231A76 /* testjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testjoystick.c"; path = "../../../../../test/testjoystick.c"; sourceTree = ""; }; + 49C3541826C0415B5BBB06CF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 429764A30EF679621FE318DF /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 359B66B92AB97B052733203F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0AF04ACE566B29673FCA039D /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 7AC6150503393A7C64612020 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 35A71D31162C3E4B53563DA2 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 0F8038BC5C9F6E2353B93128 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 5017524D691246A4654E7105 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 002668CA5F860B982D337041 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7D16408B771F26DC39876A96 /* testjoystick */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testjoystick"; path = "testjoystick"; sourceTree = BUILT_PRODUCTS_DIR; }; + 45AB706D14D3355F03637630 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 123161E85C4544221F2559D2 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 42C7240B54E1220B2EA95DBD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 32AE52E40F9717233C0A72E3 /* AudioToolbox.framework in Frameworks */, + 713701E9165222F508951B0E /* AudioUnit.framework in Frameworks */, + 3305365658676BF47B865992 /* Cocoa.framework in Frameworks */, + 454009FE1676579236A11079 /* CoreAudio.framework in Frameworks */, + 467B73597DC93C1256A86A00 /* IOKit.framework in Frameworks */, + 0A43432E34B77E2616FB5EC5 /* Carbon.framework in Frameworks */, + 6A1914AC29146C09587E6BCE /* ForceFeedback.framework in Frameworks */, + 053233FE18FE0035423B3545 /* CoreFoundation.framework in Frameworks */, + 586778620AFF201402161485 /* OpenGL.framework in Frameworks */, + 45E75FAF008E7FC7028A6A19 /* libSDL2main.a in Frameworks */, + 622C508C579041352925795D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5ADA2C5D152B774B76495CA8 /* testjoystick */ = { + isa = PBXGroup; + children = ( + 507764EB352B409244866236 /* test */, + 1C29022B74A07389548728F0 /* Frameworks */, + 42A706CA6D065E781AF14932 /* Products */, + 0C0326AD32E23D863D566494 /* Projects */, + ); + name = "testjoystick"; + sourceTree = ""; + }; + 507764EB352B409244866236 /* test */ = { + isa = PBXGroup; + children = ( + 575854C968D2339B42231A76 /* testjoystick.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1C29022B74A07389548728F0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 49C3541826C0415B5BBB06CF /* AudioToolbox.framework */, + 429764A30EF679621FE318DF /* AudioUnit.framework */, + 359B66B92AB97B052733203F /* Cocoa.framework */, + 0AF04ACE566B29673FCA039D /* CoreAudio.framework */, + 7AC6150503393A7C64612020 /* IOKit.framework */, + 35A71D31162C3E4B53563DA2 /* Carbon.framework */, + 0F8038BC5C9F6E2353B93128 /* ForceFeedback.framework */, + 5017524D691246A4654E7105 /* CoreFoundation.framework */, + 002668CA5F860B982D337041 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 42A706CA6D065E781AF14932 /* Products */ = { + isa = PBXGroup; + children = ( + 7D16408B771F26DC39876A96 /* testjoystick */, + ); + name = "Products"; + sourceTree = ""; + }; + 0C0326AD32E23D863D566494 /* Projects */ = { + isa = PBXGroup; + children = ( + 45AB706D14D3355F03637630 /* SDL2main.xcodeproj */, + 123161E85C4544221F2559D2 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 2B1056A844DE7C4B5BC0272D /* Products */ = { + isa = PBXGroup; + children = ( + 6B5B5AA2679776D81F72795B /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 365E0806554E015A7B6E2842 /* Products */ = { + isa = PBXGroup; + children = ( + 1A9150BB258A36985B8F3E17 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 58136F0736694FA50E6D28C3 /* testjoystick */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6EB627E768094B9A14746E1F /* Build configuration list for PBXNativeTarget "testjoystick" */; + buildPhases = ( + 56B677F65199488F47EC0979 /* Resources */, + 012734B0155C5E2F62745B68 /* Sources */, + 42C7240B54E1220B2EA95DBD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5AB129100A9E2922059D0B90 /* PBXTargetDependency */, + 4C1110393C10473F33C77DE9 /* PBXTargetDependency */, + ); + name = "testjoystick"; + productInstallPath = "$(HOME)/bin"; + productName = "testjoystick"; + productReference = 7D16408B771F26DC39876A96 /* testjoystick */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testjoystick" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5ADA2C5D152B774B76495CA8 /* testjoystick */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 2B1056A844DE7C4B5BC0272D /* Products */; + ProjectRef = 45AB706D14D3355F03637630 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 365E0806554E015A7B6E2842 /* Products */; + ProjectRef = 123161E85C4544221F2559D2 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 58136F0736694FA50E6D28C3 /* testjoystick */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6B5B5AA2679776D81F72795B /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 3C0976E362EC7ACF33A80284 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1A9150BB258A36985B8F3E17 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 449314BE6BB215CB4B027627 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 56B677F65199488F47EC0979 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 012734B0155C5E2F62745B68 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 437763EC237B697869BF2660 /* testjoystick.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5AB129100A9E2922059D0B90 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 3D93018001435A5871A13166 /* PBXContainerItemProxy */; + }; + 4C1110393C10473F33C77DE9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 10334206557652C1024D3BF6 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1FC4190475817C1B532D5135 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Debug Universal"; + }; + 6D4424A6187F614C6441694A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Debug Native"; + }; + 032255CC0451075503F37DCF /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Release Universal"; + }; + 6C2B055D48C7415E162B1403 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Release Native"; + }; + 00B2311E41CD36C9682D0589 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 10FA3A95390A734D052D7A76 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 30FB4F30746477246A855D7B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6AF652E76AC2025066962FCC /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6EB627E768094B9A14746E1F /* Build configuration list for PBXNativeTarget "testjoystick" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1FC4190475817C1B532D5135 /* Debug Universal */, + 6D4424A6187F614C6441694A /* Debug Native */, + 032255CC0451075503F37DCF /* Release Universal */, + 6C2B055D48C7415E162B1403 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testjoystick" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00B2311E41CD36C9682D0589 /* Debug Universal */, + 10FA3A95390A734D052D7A76 /* Debug Native */, + 30FB4F30746477246A855D7B /* Release Universal */, + 6AF652E76AC2025066962FCC /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testkeys/testkeys.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testkeys/testkeys.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..0758da7571 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testkeys/testkeys.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3454339E0B591D55512979F8 /* testkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 1C720BA10F9E6CC45CFD7281 /* testkeys.c */; }; + 01935D695566534E454A30BB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C4723971A3D268A4E764B6F /* AudioToolbox.framework */; }; + 55784AE65EA93DA470B63FFA /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0340006028F116AE106E56F6 /* AudioUnit.framework */; }; + 2A210CA6216A44E314BA5FAE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 735E611957E3050F1DCE735C /* Cocoa.framework */; }; + 6DF45E5155386A7E7EB86A6E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 574A58CB100E0E6B327132F4 /* CoreAudio.framework */; }; + 0367126E1E9E340B5E9A62C6 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15992A844307099064094347 /* IOKit.framework */; }; + 59D60D784C917537297964C8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40CC2B93789450B26A7D3F43 /* Carbon.framework */; }; + 6AFE0426017553E57F8E601F /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 426E56687A8557803F7A08FC /* ForceFeedback.framework */; }; + 01640C276A89726C3BB9110E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38433C3216573B1A2C585D3F /* CoreFoundation.framework */; }; + 57B2156D3A905F2665F012B0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32E301B9385A51FC7E4911CD /* OpenGL.framework */; }; + 455F748B7ED7642360CF3C6C /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 52EA144432A502DF0D432C88 /* libSDL2main.a */; }; + 465B117334D92A6008322145 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E9B31C101CA22D041426DBB /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 207834E413575F6F720B4EEE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 74185D3003874A2E2DA539B7 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 73690F737AF63949798E7526 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 74185D3003874A2E2DA539B7 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 14EE4D1358324054597A7762 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6D464B466F934BF407A37FA3 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 5A7F5D8C3305441C1A12549A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6D464B466F934BF407A37FA3 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1C720BA10F9E6CC45CFD7281 /* testkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testkeys.c"; path = "../../../../../test/testkeys.c"; sourceTree = ""; }; + 1C4723971A3D268A4E764B6F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0340006028F116AE106E56F6 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 735E611957E3050F1DCE735C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 574A58CB100E0E6B327132F4 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 15992A844307099064094347 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 40CC2B93789450B26A7D3F43 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 426E56687A8557803F7A08FC /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 38433C3216573B1A2C585D3F /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 32E301B9385A51FC7E4911CD /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 0AA24C7E02992EAD08281BC9 /* testkeys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testkeys"; path = "testkeys"; sourceTree = BUILT_PRODUCTS_DIR; }; + 74185D3003874A2E2DA539B7 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6D464B466F934BF407A37FA3 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4484399925A71C153FBB2457 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 01935D695566534E454A30BB /* AudioToolbox.framework in Frameworks */, + 55784AE65EA93DA470B63FFA /* AudioUnit.framework in Frameworks */, + 2A210CA6216A44E314BA5FAE /* Cocoa.framework in Frameworks */, + 6DF45E5155386A7E7EB86A6E /* CoreAudio.framework in Frameworks */, + 0367126E1E9E340B5E9A62C6 /* IOKit.framework in Frameworks */, + 59D60D784C917537297964C8 /* Carbon.framework in Frameworks */, + 6AFE0426017553E57F8E601F /* ForceFeedback.framework in Frameworks */, + 01640C276A89726C3BB9110E /* CoreFoundation.framework in Frameworks */, + 57B2156D3A905F2665F012B0 /* OpenGL.framework in Frameworks */, + 455F748B7ED7642360CF3C6C /* libSDL2main.a in Frameworks */, + 465B117334D92A6008322145 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4BA5662E7F9402A340F45D34 /* testkeys */ = { + isa = PBXGroup; + children = ( + 232B617B66995F7C05013C5D /* test */, + 1ECE6F887C7C5615265A6118 /* Frameworks */, + 14081BF170B0480700B77696 /* Products */, + 0B6946B349496DA378865A56 /* Projects */, + ); + name = "testkeys"; + sourceTree = ""; + }; + 232B617B66995F7C05013C5D /* test */ = { + isa = PBXGroup; + children = ( + 1C720BA10F9E6CC45CFD7281 /* testkeys.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1ECE6F887C7C5615265A6118 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1C4723971A3D268A4E764B6F /* AudioToolbox.framework */, + 0340006028F116AE106E56F6 /* AudioUnit.framework */, + 735E611957E3050F1DCE735C /* Cocoa.framework */, + 574A58CB100E0E6B327132F4 /* CoreAudio.framework */, + 15992A844307099064094347 /* IOKit.framework */, + 40CC2B93789450B26A7D3F43 /* Carbon.framework */, + 426E56687A8557803F7A08FC /* ForceFeedback.framework */, + 38433C3216573B1A2C585D3F /* CoreFoundation.framework */, + 32E301B9385A51FC7E4911CD /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 14081BF170B0480700B77696 /* Products */ = { + isa = PBXGroup; + children = ( + 0AA24C7E02992EAD08281BC9 /* testkeys */, + ); + name = "Products"; + sourceTree = ""; + }; + 0B6946B349496DA378865A56 /* Projects */ = { + isa = PBXGroup; + children = ( + 74185D3003874A2E2DA539B7 /* SDL2main.xcodeproj */, + 6D464B466F934BF407A37FA3 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 5E403C6A13FB494E5CBB380E /* Products */ = { + isa = PBXGroup; + children = ( + 52EA144432A502DF0D432C88 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 44CB7BC95C894D3D086A0052 /* Products */ = { + isa = PBXGroup; + children = ( + 4E9B31C101CA22D041426DBB /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 50E653D558D64C982D9D385B /* testkeys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6936126963AB2FBB5E641B90 /* Build configuration list for PBXNativeTarget "testkeys" */; + buildPhases = ( + 2C727D8B50EB03F641D12A29 /* Resources */, + 6F0027DC1DF36989497A6FC8 /* Sources */, + 4484399925A71C153FBB2457 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 133B078D75777AF174FA69D7 /* PBXTargetDependency */, + 790D5BB64714334F316D7C20 /* PBXTargetDependency */, + ); + name = "testkeys"; + productInstallPath = "$(HOME)/bin"; + productName = "testkeys"; + productReference = 0AA24C7E02992EAD08281BC9 /* testkeys */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testkeys" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 4BA5662E7F9402A340F45D34 /* testkeys */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 5E403C6A13FB494E5CBB380E /* Products */; + ProjectRef = 74185D3003874A2E2DA539B7 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 44CB7BC95C894D3D086A0052 /* Products */; + ProjectRef = 6D464B466F934BF407A37FA3 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 50E653D558D64C982D9D385B /* testkeys */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 52EA144432A502DF0D432C88 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 207834E413575F6F720B4EEE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4E9B31C101CA22D041426DBB /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 14EE4D1358324054597A7762 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2C727D8B50EB03F641D12A29 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6F0027DC1DF36989497A6FC8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3454339E0B591D55512979F8 /* testkeys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 133B078D75777AF174FA69D7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 73690F737AF63949798E7526 /* PBXContainerItemProxy */; + }; + 790D5BB64714334F316D7C20 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 5A7F5D8C3305441C1A12549A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7E0867456602403176F03B62 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Debug Universal"; + }; + 59C07A0A33B2723260226019 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Debug Native"; + }; + 394241601B0515F918747F2E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Release Universal"; + }; + 0657724202310F802B2A5328 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Release Native"; + }; + 445132A8540E155B096148DD /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 498566954FA21E124B547AE0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 25A2413855CC592E744D747E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 75B36E593A0D2F56668807E7 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6936126963AB2FBB5E641B90 /* Build configuration list for PBXNativeTarget "testkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7E0867456602403176F03B62 /* Debug Universal */, + 59C07A0A33B2723260226019 /* Debug Native */, + 394241601B0515F918747F2E /* Release Universal */, + 0657724202310F802B2A5328 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 445132A8540E155B096148DD /* Debug Universal */, + 498566954FA21E124B547AE0 /* Debug Native */, + 25A2413855CC592E744D747E /* Release Universal */, + 75B36E593A0D2F56668807E7 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testloadso/testloadso.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testloadso/testloadso.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..bf8a178a4f --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testloadso/testloadso.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 709D0E441AEC092C477352FD /* testloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 5AF0642150A103830E8169CA /* testloadso.c */; }; + 73C11D8C01C7424C32362C8E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7457304B2CCA0764490908B4 /* AudioToolbox.framework */; }; + 3142055859B320113C3C393C /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B9D701C3FDF5E8E4A9103AE /* AudioUnit.framework */; }; + 06DF3A445E5D5FA3696365A0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C1C53752943263D730B6527 /* Cocoa.framework */; }; + 2DEC0C77760F5C42247441DB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F890B8A1465033937BC4A6C /* CoreAudio.framework */; }; + 56834300463A22E5102650BD /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D77605110D06D8D53F25BA7 /* IOKit.framework */; }; + 6C9A156E69E36CFF0D305907 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29761F220E835F5C24A15A95 /* Carbon.framework */; }; + 3F45690904CA0E5C49C066B1 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12BA24E22E5A3EAE29C75818 /* ForceFeedback.framework */; }; + 0A8A6B6C0186188B5ABF64CE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C4F33EF2CC42B961D507BD3 /* CoreFoundation.framework */; }; + 6AC403C37DD0780252EC29D0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177F473D2F0E456447C36532 /* OpenGL.framework */; }; + 682C610537661D2C6D2676AB /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 14041494207459CC16EE0AB2 /* libSDL2main.a */; }; + 38476ED3066556105D88291B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AA30CE873EB060A7EE52AAC /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 65CB074A244B78F80D327D0D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6182257A166140C765542595 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 1C8A683E431808AD15DE38E2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6182257A166140C765542595 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 2E6308FF2F280D5D6F0C1D92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 784D0BF318A6643969815119 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 68141F3C3D932EB24CD42CF2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 784D0BF318A6643969815119 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5AF0642150A103830E8169CA /* testloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testloadso.c"; path = "../../../../../test/testloadso.c"; sourceTree = ""; }; + 7457304B2CCA0764490908B4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 2B9D701C3FDF5E8E4A9103AE /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3C1C53752943263D730B6527 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 6F890B8A1465033937BC4A6C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3D77605110D06D8D53F25BA7 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 29761F220E835F5C24A15A95 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 12BA24E22E5A3EAE29C75818 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2C4F33EF2CC42B961D507BD3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 177F473D2F0E456447C36532 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7D043A4A56A5759D1FF324C6 /* testloadso */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testloadso"; path = "testloadso"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6182257A166140C765542595 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 784D0BF318A6643969815119 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5EE60750337B5D3838F840B7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 73C11D8C01C7424C32362C8E /* AudioToolbox.framework in Frameworks */, + 3142055859B320113C3C393C /* AudioUnit.framework in Frameworks */, + 06DF3A445E5D5FA3696365A0 /* Cocoa.framework in Frameworks */, + 2DEC0C77760F5C42247441DB /* CoreAudio.framework in Frameworks */, + 56834300463A22E5102650BD /* IOKit.framework in Frameworks */, + 6C9A156E69E36CFF0D305907 /* Carbon.framework in Frameworks */, + 3F45690904CA0E5C49C066B1 /* ForceFeedback.framework in Frameworks */, + 0A8A6B6C0186188B5ABF64CE /* CoreFoundation.framework in Frameworks */, + 6AC403C37DD0780252EC29D0 /* OpenGL.framework in Frameworks */, + 682C610537661D2C6D2676AB /* libSDL2main.a in Frameworks */, + 38476ED3066556105D88291B /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4AA746DB77735CF43A690503 /* testloadso */ = { + isa = PBXGroup; + children = ( + 395647D86D6A5CEC48037146 /* test */, + 6E35652053A10CE811924869 /* Frameworks */, + 1CD103C177E4277846715785 /* Products */, + 1E563C39637923AB67B821CA /* Projects */, + ); + name = "testloadso"; + sourceTree = ""; + }; + 395647D86D6A5CEC48037146 /* test */ = { + isa = PBXGroup; + children = ( + 5AF0642150A103830E8169CA /* testloadso.c */, + ); + name = "test"; + sourceTree = ""; + }; + 6E35652053A10CE811924869 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7457304B2CCA0764490908B4 /* AudioToolbox.framework */, + 2B9D701C3FDF5E8E4A9103AE /* AudioUnit.framework */, + 3C1C53752943263D730B6527 /* Cocoa.framework */, + 6F890B8A1465033937BC4A6C /* CoreAudio.framework */, + 3D77605110D06D8D53F25BA7 /* IOKit.framework */, + 29761F220E835F5C24A15A95 /* Carbon.framework */, + 12BA24E22E5A3EAE29C75818 /* ForceFeedback.framework */, + 2C4F33EF2CC42B961D507BD3 /* CoreFoundation.framework */, + 177F473D2F0E456447C36532 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1CD103C177E4277846715785 /* Products */ = { + isa = PBXGroup; + children = ( + 7D043A4A56A5759D1FF324C6 /* testloadso */, + ); + name = "Products"; + sourceTree = ""; + }; + 1E563C39637923AB67B821CA /* Projects */ = { + isa = PBXGroup; + children = ( + 6182257A166140C765542595 /* SDL2main.xcodeproj */, + 784D0BF318A6643969815119 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 6C270BD976786F722CD55840 /* Products */ = { + isa = PBXGroup; + children = ( + 14041494207459CC16EE0AB2 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 78856B7960315241568B618D /* Products */ = { + isa = PBXGroup; + children = ( + 6AA30CE873EB060A7EE52AAC /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 51C964DE5742612E28943988 /* testloadso */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D1B658C68B501BE702C6004 /* Build configuration list for PBXNativeTarget "testloadso" */; + buildPhases = ( + 3D166FAA3D593FCF666648E4 /* Resources */, + 7EFF2A46771F2D7B2788534A /* Sources */, + 5EE60750337B5D3838F840B7 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0686078E0DFF076716A8202B /* PBXTargetDependency */, + 67221F693EBD6A9836101193 /* PBXTargetDependency */, + ); + name = "testloadso"; + productInstallPath = "$(HOME)/bin"; + productName = "testloadso"; + productReference = 7D043A4A56A5759D1FF324C6 /* testloadso */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testloadso" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 4AA746DB77735CF43A690503 /* testloadso */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6C270BD976786F722CD55840 /* Products */; + ProjectRef = 6182257A166140C765542595 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 78856B7960315241568B618D /* Products */; + ProjectRef = 784D0BF318A6643969815119 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 51C964DE5742612E28943988 /* testloadso */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 14041494207459CC16EE0AB2 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 65CB074A244B78F80D327D0D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6AA30CE873EB060A7EE52AAC /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2E6308FF2F280D5D6F0C1D92 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3D166FAA3D593FCF666648E4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7EFF2A46771F2D7B2788534A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 709D0E441AEC092C477352FD /* testloadso.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 0686078E0DFF076716A8202B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 1C8A683E431808AD15DE38E2 /* PBXContainerItemProxy */; + }; + 67221F693EBD6A9836101193 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 68141F3C3D932EB24CD42CF2 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 07700442397405A11F8D6941 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Debug Universal"; + }; + 7B4C6EB21CE060FB1B645642 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Debug Native"; + }; + 56C07D2D38CE66232284445F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Release Universal"; + }; + 081A65A14BB6343F36B62114 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Release Native"; + }; + 68AB6E2428D3642001903429 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 0B70017A7AD16D2B5B513F9E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 3EBA440E761E43E725625504 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 3D71722D0FA113E559D546C5 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2D1B658C68B501BE702C6004 /* Build configuration list for PBXNativeTarget "testloadso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 07700442397405A11F8D6941 /* Debug Universal */, + 7B4C6EB21CE060FB1B645642 /* Debug Native */, + 56C07D2D38CE66232284445F /* Release Universal */, + 081A65A14BB6343F36B62114 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testloadso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 68AB6E2428D3642001903429 /* Debug Universal */, + 0B70017A7AD16D2B5B513F9E /* Debug Native */, + 3EBA440E761E43E725625504 /* Release Universal */, + 3D71722D0FA113E559D546C5 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testlock/testlock.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testlock/testlock.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..3f5f352af2 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testlock/testlock.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 36AF3C1A55A560982B347916 /* testlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 76075B77190A1EB068755D2D /* testlock.c */; }; + 22E4478C58A82B713F016FCB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 447C343A6839289771533949 /* AudioToolbox.framework */; }; + 182B469713534F8529BC138F /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ED5692D2C2A199B15A723FE /* AudioUnit.framework */; }; + 4B47295C58B42FF477E8506E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A1E059F372304422BC1110C /* Cocoa.framework */; }; + 094D3F3C39A65D962EFC5BF6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A2F4613182C29CB78C57988 /* CoreAudio.framework */; }; + 476744EB2434064930045AE5 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 166E18C26AA52A0A21F8428F /* IOKit.framework */; }; + 000571817CF54464025C216A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E11450E34276E6D502F5E83 /* Carbon.framework */; }; + 62431D6B7EFD372B7CE46574 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 445340194DE46B3F2C09410F /* ForceFeedback.framework */; }; + 2E542CC95DE23789289618EE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EE55097724D44B03E871B38 /* CoreFoundation.framework */; }; + 6CE6002242A10F94731E64BD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 46CD545922BB27E330BE233C /* OpenGL.framework */; }; + 24E47786013F5E9B3F37681B /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22FC0D1B23AE2964781D7549 /* libSDL2main.a */; }; + 0EB058742CA47139554E04CF /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 49ED07813E65088D227F6AAB /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 07BF0E1B3FC724B70F5F30FB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 780B4D9641C7747228861D04 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 4D4A744248F34DC219D92D7B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 780B4D9641C7747228861D04 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 6F8200BA55C653F92FC8138D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4CBF168D320F315D62BE2B41 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 114425F86F59447A44351049 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4CBF168D320F315D62BE2B41 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 76075B77190A1EB068755D2D /* testlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testlock.c"; path = "../../../../../test/testlock.c"; sourceTree = ""; }; + 447C343A6839289771533949 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0ED5692D2C2A199B15A723FE /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 4A1E059F372304422BC1110C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7A2F4613182C29CB78C57988 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 166E18C26AA52A0A21F8428F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 7E11450E34276E6D502F5E83 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 445340194DE46B3F2C09410F /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3EE55097724D44B03E871B38 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 46CD545922BB27E330BE233C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5F51544256334C254E020D3D /* testlock */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testlock"; path = "testlock"; sourceTree = BUILT_PRODUCTS_DIR; }; + 780B4D9641C7747228861D04 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 4CBF168D320F315D62BE2B41 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 78C1724731C65D0F1ED42E48 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 22E4478C58A82B713F016FCB /* AudioToolbox.framework in Frameworks */, + 182B469713534F8529BC138F /* AudioUnit.framework in Frameworks */, + 4B47295C58B42FF477E8506E /* Cocoa.framework in Frameworks */, + 094D3F3C39A65D962EFC5BF6 /* CoreAudio.framework in Frameworks */, + 476744EB2434064930045AE5 /* IOKit.framework in Frameworks */, + 000571817CF54464025C216A /* Carbon.framework in Frameworks */, + 62431D6B7EFD372B7CE46574 /* ForceFeedback.framework in Frameworks */, + 2E542CC95DE23789289618EE /* CoreFoundation.framework in Frameworks */, + 6CE6002242A10F94731E64BD /* OpenGL.framework in Frameworks */, + 24E47786013F5E9B3F37681B /* libSDL2main.a in Frameworks */, + 0EB058742CA47139554E04CF /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5E35195524CF3A97390D3A81 /* testlock */ = { + isa = PBXGroup; + children = ( + 0884482C57CC2F5A50A4647F /* test */, + 4F2934251BA43CD222944E53 /* Frameworks */, + 51AF5DF8673976F42AA95D51 /* Products */, + 7F344EEE1C2210DF289249A7 /* Projects */, + ); + name = "testlock"; + sourceTree = ""; + }; + 0884482C57CC2F5A50A4647F /* test */ = { + isa = PBXGroup; + children = ( + 76075B77190A1EB068755D2D /* testlock.c */, + ); + name = "test"; + sourceTree = ""; + }; + 4F2934251BA43CD222944E53 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 447C343A6839289771533949 /* AudioToolbox.framework */, + 0ED5692D2C2A199B15A723FE /* AudioUnit.framework */, + 4A1E059F372304422BC1110C /* Cocoa.framework */, + 7A2F4613182C29CB78C57988 /* CoreAudio.framework */, + 166E18C26AA52A0A21F8428F /* IOKit.framework */, + 7E11450E34276E6D502F5E83 /* Carbon.framework */, + 445340194DE46B3F2C09410F /* ForceFeedback.framework */, + 3EE55097724D44B03E871B38 /* CoreFoundation.framework */, + 46CD545922BB27E330BE233C /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 51AF5DF8673976F42AA95D51 /* Products */ = { + isa = PBXGroup; + children = ( + 5F51544256334C254E020D3D /* testlock */, + ); + name = "Products"; + sourceTree = ""; + }; + 7F344EEE1C2210DF289249A7 /* Projects */ = { + isa = PBXGroup; + children = ( + 780B4D9641C7747228861D04 /* SDL2main.xcodeproj */, + 4CBF168D320F315D62BE2B41 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 08F13E9D60CE31F302A80029 /* Products */ = { + isa = PBXGroup; + children = ( + 22FC0D1B23AE2964781D7549 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 50AD31CC68580A1C719E61C3 /* Products */ = { + isa = PBXGroup; + children = ( + 49ED07813E65088D227F6AAB /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4EA54D07134E169D1E0F28DC /* testlock */ = { + isa = PBXNativeTarget; + buildConfigurationList = 51AE32DA35C3568F040C36AC /* Build configuration list for PBXNativeTarget "testlock" */; + buildPhases = ( + 7EC5687F70F11B74113F52B0 /* Resources */, + 20EC6DC743DF75E202987A86 /* Sources */, + 78C1724731C65D0F1ED42E48 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 7E443D254D21665717ED4A4C /* PBXTargetDependency */, + 631F15A070EF04CA7DD12E39 /* PBXTargetDependency */, + ); + name = "testlock"; + productInstallPath = "$(HOME)/bin"; + productName = "testlock"; + productReference = 5F51544256334C254E020D3D /* testlock */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testlock" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5E35195524CF3A97390D3A81 /* testlock */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 08F13E9D60CE31F302A80029 /* Products */; + ProjectRef = 780B4D9641C7747228861D04 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 50AD31CC68580A1C719E61C3 /* Products */; + ProjectRef = 4CBF168D320F315D62BE2B41 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4EA54D07134E169D1E0F28DC /* testlock */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 22FC0D1B23AE2964781D7549 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 07BF0E1B3FC724B70F5F30FB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 49ED07813E65088D227F6AAB /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 6F8200BA55C653F92FC8138D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 7EC5687F70F11B74113F52B0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 20EC6DC743DF75E202987A86 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 36AF3C1A55A560982B347916 /* testlock.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 7E443D254D21665717ED4A4C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 4D4A744248F34DC219D92D7B /* PBXContainerItemProxy */; + }; + 631F15A070EF04CA7DD12E39 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 114425F86F59447A44351049 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 516D536738AE368857D02889 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Debug Universal"; + }; + 2BAC510956A527B830053308 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Debug Native"; + }; + 70165F1F1034683327A42087 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Release Universal"; + }; + 57383D8C507F631251D71FBD /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Release Native"; + }; + 6ECB09A631FC2F247D5F2723 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 78A61A7D2E8265180BFA68AD /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 20EC14C85871739552AB178F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 5E9A713B7EDD7EFB51D707AD /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 51AE32DA35C3568F040C36AC /* Build configuration list for PBXNativeTarget "testlock" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 516D536738AE368857D02889 /* Debug Universal */, + 2BAC510956A527B830053308 /* Debug Native */, + 70165F1F1034683327A42087 /* Release Universal */, + 57383D8C507F631251D71FBD /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testlock" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6ECB09A631FC2F247D5F2723 /* Debug Universal */, + 78A61A7D2E8265180BFA68AD /* Debug Native */, + 20EC14C85871739552AB178F /* Release Universal */, + 5E9A713B7EDD7EFB51D707AD /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testmessage/testmessage.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testmessage/testmessage.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..447c8243a1 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testmessage/testmessage.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 4C15281849B124226F1561EE /* testmessage.c in Sources */ = {isa = PBXBuildFile; fileRef = 003C0FC70ACD46B74E3E549F /* testmessage.c */; }; + 2C83524D5E1F5B2D2284306E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44F608F876FE1EF43BD6645F /* AudioToolbox.framework */; }; + 78500A063B6717677B635CB2 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E537B4E79AC2A6B106F24E2 /* AudioUnit.framework */; }; + 356239D233647095789C4AB5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DA965547C174C8E3D12061E /* Cocoa.framework */; }; + 37737999652F0C067F973403 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67064B3C571C726A4D8179C0 /* CoreAudio.framework */; }; + 12D101C8017F4AE73B935F19 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A7439B734487F783F813598 /* IOKit.framework */; }; + 53B04D0F43E23E4E105E1168 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03D0610D4C3538960F9735DF /* Carbon.framework */; }; + 515E2081040C537B3EDA0063 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 641A7C2E3AAF5AA527BC6604 /* ForceFeedback.framework */; }; + 4792740F2DC1192D0CAC1E27 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69AC3C0E43363B0158725A40 /* CoreFoundation.framework */; }; + 6A67175E3A0F49BE5C334149 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 394B263C4E116E57355B1199 /* OpenGL.framework */; }; + 089779561D582D30532670F3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 36D503B50C1D54E739233010 /* libSDL2main.a */; }; + 02AB49AD3B8618113CF067A9 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9C6AC96FE616FF78221C04 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3A8370A01DEF59E21ABE6EF5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4BD530093DB426A12BFF03A4 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 3B19724458CB04B3328C0F3A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4BD530093DB426A12BFF03A4 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 3777720073427EAC71172F6D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6F3C739637140AE21FA54330 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 49CB51255A112A94792A4C02 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6F3C739637140AE21FA54330 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 003C0FC70ACD46B74E3E549F /* testmessage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testmessage.c"; path = "../../../../../test/testmessage.c"; sourceTree = ""; }; + 44F608F876FE1EF43BD6645F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 2E537B4E79AC2A6B106F24E2 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 2DA965547C174C8E3D12061E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 67064B3C571C726A4D8179C0 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3A7439B734487F783F813598 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 03D0610D4C3538960F9735DF /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 641A7C2E3AAF5AA527BC6604 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 69AC3C0E43363B0158725A40 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 394B263C4E116E57355B1199 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 051758F7528F573051872F69 /* testmessage */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testmessage"; path = "testmessage"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BD530093DB426A12BFF03A4 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6F3C739637140AE21FA54330 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2D4931A3757F6C6C28807597 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C83524D5E1F5B2D2284306E /* AudioToolbox.framework in Frameworks */, + 78500A063B6717677B635CB2 /* AudioUnit.framework in Frameworks */, + 356239D233647095789C4AB5 /* Cocoa.framework in Frameworks */, + 37737999652F0C067F973403 /* CoreAudio.framework in Frameworks */, + 12D101C8017F4AE73B935F19 /* IOKit.framework in Frameworks */, + 53B04D0F43E23E4E105E1168 /* Carbon.framework in Frameworks */, + 515E2081040C537B3EDA0063 /* ForceFeedback.framework in Frameworks */, + 4792740F2DC1192D0CAC1E27 /* CoreFoundation.framework in Frameworks */, + 6A67175E3A0F49BE5C334149 /* OpenGL.framework in Frameworks */, + 089779561D582D30532670F3 /* libSDL2main.a in Frameworks */, + 02AB49AD3B8618113CF067A9 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6F9F406265F621D4244C08DC /* testmessage */ = { + isa = PBXGroup; + children = ( + 57F11275651F0CF06FD72B13 /* test */, + 7F4D2BCB51A800DE70F76CC6 /* Frameworks */, + 3D9671722AF1479B1257324C /* Products */, + 3C1F4B5165F437993EC45448 /* Projects */, + ); + name = "testmessage"; + sourceTree = ""; + }; + 57F11275651F0CF06FD72B13 /* test */ = { + isa = PBXGroup; + children = ( + 003C0FC70ACD46B74E3E549F /* testmessage.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7F4D2BCB51A800DE70F76CC6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 44F608F876FE1EF43BD6645F /* AudioToolbox.framework */, + 2E537B4E79AC2A6B106F24E2 /* AudioUnit.framework */, + 2DA965547C174C8E3D12061E /* Cocoa.framework */, + 67064B3C571C726A4D8179C0 /* CoreAudio.framework */, + 3A7439B734487F783F813598 /* IOKit.framework */, + 03D0610D4C3538960F9735DF /* Carbon.framework */, + 641A7C2E3AAF5AA527BC6604 /* ForceFeedback.framework */, + 69AC3C0E43363B0158725A40 /* CoreFoundation.framework */, + 394B263C4E116E57355B1199 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 3D9671722AF1479B1257324C /* Products */ = { + isa = PBXGroup; + children = ( + 051758F7528F573051872F69 /* testmessage */, + ); + name = "Products"; + sourceTree = ""; + }; + 3C1F4B5165F437993EC45448 /* Projects */ = { + isa = PBXGroup; + children = ( + 4BD530093DB426A12BFF03A4 /* SDL2main.xcodeproj */, + 6F3C739637140AE21FA54330 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 23E53B4D3CE23FBE619731A4 /* Products */ = { + isa = PBXGroup; + children = ( + 36D503B50C1D54E739233010 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 7A7C784864A918C0226E734E /* Products */ = { + isa = PBXGroup; + children = ( + 2D9C6AC96FE616FF78221C04 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1F073B18600C67C00E052683 /* testmessage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 31A77C6231AA441421915382 /* Build configuration list for PBXNativeTarget "testmessage" */; + buildPhases = ( + 04E300CD4A6A76AB139146A6 /* Resources */, + 627D1EAA5FCE59F0319B6633 /* Sources */, + 2D4931A3757F6C6C28807597 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4211010322DE412B210A430C /* PBXTargetDependency */, + 50B8172F41907753767378DC /* PBXTargetDependency */, + ); + name = "testmessage"; + productInstallPath = "$(HOME)/bin"; + productName = "testmessage"; + productReference = 051758F7528F573051872F69 /* testmessage */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmessage" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 6F9F406265F621D4244C08DC /* testmessage */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 23E53B4D3CE23FBE619731A4 /* Products */; + ProjectRef = 4BD530093DB426A12BFF03A4 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 7A7C784864A918C0226E734E /* Products */; + ProjectRef = 6F3C739637140AE21FA54330 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1F073B18600C67C00E052683 /* testmessage */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 36D503B50C1D54E739233010 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 3A8370A01DEF59E21ABE6EF5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2D9C6AC96FE616FF78221C04 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3777720073427EAC71172F6D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 04E300CD4A6A76AB139146A6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 627D1EAA5FCE59F0319B6633 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4C15281849B124226F1561EE /* testmessage.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 4211010322DE412B210A430C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 3B19724458CB04B3328C0F3A /* PBXContainerItemProxy */; + }; + 50B8172F41907753767378DC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 49CB51255A112A94792A4C02 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 19836F1F09FE0A3465864960 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Debug Universal"; + }; + 45B66F3261D1661F2BAE2E17 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Debug Native"; + }; + 08FF4C2A74D0166F73BE4F85 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Release Universal"; + }; + 3BA1761B738F3A8F116B3141 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Release Native"; + }; + 5AD835E2294F1F816A747010 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 69EA1C660146464833C70526 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 368E5A3C4929274A28C93EF6 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 3B2B0EF31AE217111D6B6D84 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 31A77C6231AA441421915382 /* Build configuration list for PBXNativeTarget "testmessage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 19836F1F09FE0A3465864960 /* Debug Universal */, + 45B66F3261D1661F2BAE2E17 /* Debug Native */, + 08FF4C2A74D0166F73BE4F85 /* Release Universal */, + 3BA1761B738F3A8F116B3141 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmessage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5AD835E2294F1F816A747010 /* Debug Universal */, + 69EA1C660146464833C70526 /* Debug Native */, + 368E5A3C4929274A28C93EF6 /* Release Universal */, + 3B2B0EF31AE217111D6B6D84 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..42044e856a --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 174815721F7146F115C335E0 /* testmultiaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 53C5423271F91FF954C36118 /* testmultiaudio.c */; }; + 1861168928E56DFD08533DC6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15CB4753539D042D37B623F2 /* AudioToolbox.framework */; }; + 530D20A412A064804AF141F2 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C46380B7B9D25571D312E68 /* AudioUnit.framework */; }; + 1D4E7FBD7210232C32B074C7 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A575BEE6A5C66D4150237F8 /* Cocoa.framework */; }; + 01A64D943EC872D24DF656A1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 721A418B1FB41307619F2528 /* CoreAudio.framework */; }; + 162643C813370716660557DA /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C5D63DF56BF25A63B0444EE /* IOKit.framework */; }; + 338D20466DEA2A9E6C995E32 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37AD46DE49E1039071A7202A /* Carbon.framework */; }; + 6ADC14B17BF057A47EFB3048 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FB92763717E0DA7067843E1 /* ForceFeedback.framework */; }; + 08F0559B59E42A2232C4230E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 782647790AF8537A750A1568 /* CoreFoundation.framework */; }; + 2BA23AB9537953747BF1113A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 290C6654453C0A1C5EE476C5 /* OpenGL.framework */; }; + 71B33AEF4EF9475873A012C7 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BC16DA8347901D000590233 /* libSDL2main.a */; }; + 395D15850C633DE5129376D8 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6410585808B95289405A6302 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5EF132686453137B162436C0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55D92D84460A6778062649E9 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 2151781404065B7A2E2C4E69 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55D92D84460A6778062649E9 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 6B113731181333027E1864B6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7B9118CD62B7789852C53B91 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 77AC6F0623E87E6F29D44BC2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7B9118CD62B7789852C53B91 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 53C5423271F91FF954C36118 /* testmultiaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testmultiaudio.c"; path = "../../../../../test/testmultiaudio.c"; sourceTree = ""; }; + 15CB4753539D042D37B623F2 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 1C46380B7B9D25571D312E68 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0A575BEE6A5C66D4150237F8 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 721A418B1FB41307619F2528 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 0C5D63DF56BF25A63B0444EE /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 37AD46DE49E1039071A7202A /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 4FB92763717E0DA7067843E1 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 782647790AF8537A750A1568 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 290C6654453C0A1C5EE476C5 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 258210DE0BA646D34B7E4568 /* testmultiaudio */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testmultiaudio"; path = "testmultiaudio"; sourceTree = BUILT_PRODUCTS_DIR; }; + 55D92D84460A6778062649E9 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7B9118CD62B7789852C53B91 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0168143D58A3681C2D88598C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1861168928E56DFD08533DC6 /* AudioToolbox.framework in Frameworks */, + 530D20A412A064804AF141F2 /* AudioUnit.framework in Frameworks */, + 1D4E7FBD7210232C32B074C7 /* Cocoa.framework in Frameworks */, + 01A64D943EC872D24DF656A1 /* CoreAudio.framework in Frameworks */, + 162643C813370716660557DA /* IOKit.framework in Frameworks */, + 338D20466DEA2A9E6C995E32 /* Carbon.framework in Frameworks */, + 6ADC14B17BF057A47EFB3048 /* ForceFeedback.framework in Frameworks */, + 08F0559B59E42A2232C4230E /* CoreFoundation.framework in Frameworks */, + 2BA23AB9537953747BF1113A /* OpenGL.framework in Frameworks */, + 71B33AEF4EF9475873A012C7 /* libSDL2main.a in Frameworks */, + 395D15850C633DE5129376D8 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1DF60B03026011DD72195588 /* testmultiaudio */ = { + isa = PBXGroup; + children = ( + 0DA025A302E9323622BB2CC1 /* test */, + 2D4746BB2B19338A51054414 /* Frameworks */, + 060A0A8A08640AD826196F76 /* Products */, + 35403DDB0B1E114F65A77089 /* Projects */, + ); + name = "testmultiaudio"; + sourceTree = ""; + }; + 0DA025A302E9323622BB2CC1 /* test */ = { + isa = PBXGroup; + children = ( + 53C5423271F91FF954C36118 /* testmultiaudio.c */, + ); + name = "test"; + sourceTree = ""; + }; + 2D4746BB2B19338A51054414 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 15CB4753539D042D37B623F2 /* AudioToolbox.framework */, + 1C46380B7B9D25571D312E68 /* AudioUnit.framework */, + 0A575BEE6A5C66D4150237F8 /* Cocoa.framework */, + 721A418B1FB41307619F2528 /* CoreAudio.framework */, + 0C5D63DF56BF25A63B0444EE /* IOKit.framework */, + 37AD46DE49E1039071A7202A /* Carbon.framework */, + 4FB92763717E0DA7067843E1 /* ForceFeedback.framework */, + 782647790AF8537A750A1568 /* CoreFoundation.framework */, + 290C6654453C0A1C5EE476C5 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 060A0A8A08640AD826196F76 /* Products */ = { + isa = PBXGroup; + children = ( + 258210DE0BA646D34B7E4568 /* testmultiaudio */, + ); + name = "Products"; + sourceTree = ""; + }; + 35403DDB0B1E114F65A77089 /* Projects */ = { + isa = PBXGroup; + children = ( + 55D92D84460A6778062649E9 /* SDL2main.xcodeproj */, + 7B9118CD62B7789852C53B91 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 696627B2256F1F070966363E /* Products */ = { + isa = PBXGroup; + children = ( + 7BC16DA8347901D000590233 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 6603008153DE29AE6FA406B5 /* Products */ = { + isa = PBXGroup; + children = ( + 6410585808B95289405A6302 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3243575279A557EB226C63CE /* testmultiaudio */ = { + isa = PBXNativeTarget; + buildConfigurationList = 66CD55C26ECC1AEF67EE69D8 /* Build configuration list for PBXNativeTarget "testmultiaudio" */; + buildPhases = ( + 08FC11C805A3259D10A01B08 /* Resources */, + 50DB7AE237756D106B0114E9 /* Sources */, + 0168143D58A3681C2D88598C /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 004D570469386A167BA279B1 /* PBXTargetDependency */, + 6C3F42866E19479F20B367D6 /* PBXTargetDependency */, + ); + name = "testmultiaudio"; + productInstallPath = "$(HOME)/bin"; + productName = "testmultiaudio"; + productReference = 258210DE0BA646D34B7E4568 /* testmultiaudio */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmultiaudio" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 1DF60B03026011DD72195588 /* testmultiaudio */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 696627B2256F1F070966363E /* Products */; + ProjectRef = 55D92D84460A6778062649E9 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 6603008153DE29AE6FA406B5 /* Products */; + ProjectRef = 7B9118CD62B7789852C53B91 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 3243575279A557EB226C63CE /* testmultiaudio */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 7BC16DA8347901D000590233 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5EF132686453137B162436C0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6410585808B95289405A6302 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 6B113731181333027E1864B6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 08FC11C805A3259D10A01B08 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 50DB7AE237756D106B0114E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 174815721F7146F115C335E0 /* testmultiaudio.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 004D570469386A167BA279B1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 2151781404065B7A2E2C4E69 /* PBXContainerItemProxy */; + }; + 6C3F42866E19479F20B367D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 77AC6F0623E87E6F29D44BC2 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 269674957F6148FD692F19BA /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Debug Universal"; + }; + 303025B74A4268AC0BEB23CD /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Debug Native"; + }; + 6BF27AEC22F65EDA3A6D4EC9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Release Universal"; + }; + 48C64B556EB35B806BD770BB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Release Native"; + }; + 2D9E7BDC31993453730A2FD2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1341319674F24336220D3D5A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 0000069D34CC40CF010B2A26 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 17EB04401F5E7A130A5376D0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 66CD55C26ECC1AEF67EE69D8 /* Build configuration list for PBXNativeTarget "testmultiaudio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 269674957F6148FD692F19BA /* Debug Universal */, + 303025B74A4268AC0BEB23CD /* Debug Native */, + 6BF27AEC22F65EDA3A6D4EC9 /* Release Universal */, + 48C64B556EB35B806BD770BB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmultiaudio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D9E7BDC31993453730A2FD2 /* Debug Universal */, + 1341319674F24336220D3D5A /* Debug Native */, + 0000069D34CC40CF010B2A26 /* Release Universal */, + 17EB04401F5E7A130A5376D0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testnative/testnative.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testnative/testnative.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..494e1a3e66 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testnative/testnative.xcodeproj/project.pbxproj @@ -0,0 +1,480 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5EC212E30AED603F72156F79 /* testnative.c in Sources */ = {isa = PBXBuildFile; fileRef = 09311D5367FC66771E7318D5 /* testnative.c */; }; + 54C15326088436A9230D5110 /* testnativecocoa.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C035895DB74E9E16235E30 /* testnativecocoa.m */; }; + 53004AB405F2758E5F973390 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 398B5D33413B2EA22832188D /* AudioToolbox.framework */; }; + 5D2E2E7061411EC95AB73306 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65EF5B09498E4845494156E5 /* AudioUnit.framework */; }; + 578965B01D175CCE5E6A3667 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61ED3686206E555C44447010 /* Cocoa.framework */; }; + 0E714C95788701897D85483A /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A2145ED01C1668742F17812 /* CoreAudio.framework */; }; + 76DF3AB76EE102CE2CA06EA1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00ED617A1D6227434FE4036B /* IOKit.framework */; }; + 24DA1FED051540F92B287CC8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 146A6DCA7E40436331FB6839 /* Carbon.framework */; }; + 59821B8B6F45341B150737E7 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E7629D50C845B0E2DF27603 /* ForceFeedback.framework */; }; + 6A5672E00D543C3552A02044 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D8D0094770E755A149D738A /* CoreFoundation.framework */; }; + 4AD6442630A52E0104FE44D7 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7061781356DF74BA7B237006 /* OpenGL.framework */; }; + 685B4AD90CD939916E816111 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40DA60C67C1300EF5B1838BA /* libSDL2main.a */; }; + 7CC725510C3049A02F9D2DF7 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DCC0E6E045C707338B77A34 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2735469863225AF730987CB3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7ED026D100095D0D18BD4051 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 01C352BF24C13C2215AB3050 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7ED026D100095D0D18BD4051 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 3E3252EC174805026BC969CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2950670A4677313F2FF316E4 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 170A1F2539EA4C7A6C3C69FA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2950670A4677313F2FF316E4 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 09311D5367FC66771E7318D5 /* testnative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testnative.c"; path = "../../../../../test/testnative.c"; sourceTree = ""; }; + 2933635A47D86E8509A140D4 /* testnative.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "testnative.h"; path = "../../../../../test/testnative.h"; sourceTree = ""; }; + 58C035895DB74E9E16235E30 /* testnativecocoa.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "testnativecocoa.m"; path = "../../../../../test/testnativecocoa.m"; sourceTree = ""; }; + 398B5D33413B2EA22832188D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 65EF5B09498E4845494156E5 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 61ED3686206E555C44447010 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5A2145ED01C1668742F17812 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 00ED617A1D6227434FE4036B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 146A6DCA7E40436331FB6839 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 6E7629D50C845B0E2DF27603 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3D8D0094770E755A149D738A /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 7061781356DF74BA7B237006 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 0D926DF4640E0E9F783911A8 /* testnative */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testnative"; path = "testnative"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7ED026D100095D0D18BD4051 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2950670A4677313F2FF316E4 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 373900501DE06E5C026B626E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 53004AB405F2758E5F973390 /* AudioToolbox.framework in Frameworks */, + 5D2E2E7061411EC95AB73306 /* AudioUnit.framework in Frameworks */, + 578965B01D175CCE5E6A3667 /* Cocoa.framework in Frameworks */, + 0E714C95788701897D85483A /* CoreAudio.framework in Frameworks */, + 76DF3AB76EE102CE2CA06EA1 /* IOKit.framework in Frameworks */, + 24DA1FED051540F92B287CC8 /* Carbon.framework in Frameworks */, + 59821B8B6F45341B150737E7 /* ForceFeedback.framework in Frameworks */, + 6A5672E00D543C3552A02044 /* CoreFoundation.framework in Frameworks */, + 4AD6442630A52E0104FE44D7 /* OpenGL.framework in Frameworks */, + 685B4AD90CD939916E816111 /* libSDL2main.a in Frameworks */, + 7CC725510C3049A02F9D2DF7 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4ADA31FF6F7A5AB540AB2A7C /* testnative */ = { + isa = PBXGroup; + children = ( + 67E37B81581E57B94BB41EB3 /* test */, + 7BC83D9325F529F07B133ACA /* Frameworks */, + 1A9A2CC746EF074819147013 /* Products */, + 0F6539B53F4A4F2651E470AF /* Projects */, + ); + name = "testnative"; + sourceTree = ""; + }; + 67E37B81581E57B94BB41EB3 /* test */ = { + isa = PBXGroup; + children = ( + 09311D5367FC66771E7318D5 /* testnative.c */, + 2933635A47D86E8509A140D4 /* testnative.h */, + 58C035895DB74E9E16235E30 /* testnativecocoa.m */, + ); + name = "test"; + sourceTree = ""; + }; + 7BC83D9325F529F07B133ACA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 398B5D33413B2EA22832188D /* AudioToolbox.framework */, + 65EF5B09498E4845494156E5 /* AudioUnit.framework */, + 61ED3686206E555C44447010 /* Cocoa.framework */, + 5A2145ED01C1668742F17812 /* CoreAudio.framework */, + 00ED617A1D6227434FE4036B /* IOKit.framework */, + 146A6DCA7E40436331FB6839 /* Carbon.framework */, + 6E7629D50C845B0E2DF27603 /* ForceFeedback.framework */, + 3D8D0094770E755A149D738A /* CoreFoundation.framework */, + 7061781356DF74BA7B237006 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1A9A2CC746EF074819147013 /* Products */ = { + isa = PBXGroup; + children = ( + 0D926DF4640E0E9F783911A8 /* testnative */, + ); + name = "Products"; + sourceTree = ""; + }; + 0F6539B53F4A4F2651E470AF /* Projects */ = { + isa = PBXGroup; + children = ( + 7ED026D100095D0D18BD4051 /* SDL2main.xcodeproj */, + 2950670A4677313F2FF316E4 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 725A2D5E32C078CE504C3C61 /* Products */ = { + isa = PBXGroup; + children = ( + 40DA60C67C1300EF5B1838BA /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5EE66A6330A730AB30CA3133 /* Products */ = { + isa = PBXGroup; + children = ( + 7DCC0E6E045C707338B77A34 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 42D82EF966E007C60AD159EA /* testnative */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4EF95E4A743605676714614B /* Build configuration list for PBXNativeTarget "testnative" */; + buildPhases = ( + 200B45E75C6636E46DB91829 /* Resources */, + 68E85E5734AC2ED06161420A /* Sources */, + 373900501DE06E5C026B626E /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 551212EB306B4C5701755CAB /* PBXTargetDependency */, + 20ED52B908931F992E0363EC /* PBXTargetDependency */, + ); + name = "testnative"; + productInstallPath = "$(HOME)/bin"; + productName = "testnative"; + productReference = 0D926DF4640E0E9F783911A8 /* testnative */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testnative" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 4ADA31FF6F7A5AB540AB2A7C /* testnative */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 725A2D5E32C078CE504C3C61 /* Products */; + ProjectRef = 7ED026D100095D0D18BD4051 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5EE66A6330A730AB30CA3133 /* Products */; + ProjectRef = 2950670A4677313F2FF316E4 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 42D82EF966E007C60AD159EA /* testnative */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 40DA60C67C1300EF5B1838BA /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2735469863225AF730987CB3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 7DCC0E6E045C707338B77A34 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3E3252EC174805026BC969CB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 200B45E75C6636E46DB91829 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 68E85E5734AC2ED06161420A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5EC212E30AED603F72156F79 /* testnative.c in Sources */, + 54C15326088436A9230D5110 /* testnativecocoa.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 551212EB306B4C5701755CAB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 01C352BF24C13C2215AB3050 /* PBXContainerItemProxy */; + }; + 20ED52B908931F992E0363EC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 170A1F2539EA4C7A6C3C69FA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5F8D5EDA7589112E1FB214A7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Debug Universal"; + }; + 64EB32DB64506BDC5F3F42EB /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Debug Native"; + }; + 395F4A027F9D310E1C6D449E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Release Universal"; + }; + 23BA406F6A802F5313C16D3D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Release Native"; + }; + 702334BF761E35DC10EE09ED /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 0AF518B073C802B9001B02A9 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 1EF44D5D482E57B747E4508A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4C9C187221FC3B8926A8741E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4EF95E4A743605676714614B /* Build configuration list for PBXNativeTarget "testnative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5F8D5EDA7589112E1FB214A7 /* Debug Universal */, + 64EB32DB64506BDC5F3F42EB /* Debug Native */, + 395F4A027F9D310E1C6D449E /* Release Universal */, + 23BA406F6A802F5313C16D3D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testnative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 702334BF761E35DC10EE09ED /* Debug Universal */, + 0AF518B073C802B9001B02A9 /* Debug Native */, + 1EF44D5D482E57B747E4508A /* Release Universal */, + 4C9C187221FC3B8926A8741E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..2520ca2153 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 49E519755DE056E56EEE7984 /* testoverlay2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D8A73571318159858096092 /* testoverlay2.c */; }; + 3AF279FE14CA692708046DB4 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0378471E362972885D2A2BEA /* AudioToolbox.framework */; }; + 301212F75420212E092E3175 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03DE051C016D34B83FB85C77 /* AudioUnit.framework */; }; + 08870BD6311A585A20D46880 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F94243942F0572202694515 /* Cocoa.framework */; }; + 65A87AC11CBF631B28F2402E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BD52FFE58E2070F14E14B19 /* CoreAudio.framework */; }; + 43E104313E9F5B9A03BE4E12 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B3C31575AA200182BE02D09 /* IOKit.framework */; }; + 159042C076D351EF319E360C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35644D2D583D110D1543751C /* Carbon.framework */; }; + 672A1AC7378321517A336148 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 790A115D0D90768E17FB642F /* ForceFeedback.framework */; }; + 21024A424BBA385B68E674EE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6BD11EC345EF7D0A2F052B0D /* CoreFoundation.framework */; }; + 069120D46A0643D372906BDA /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E2F27481BE5130F71C969D4 /* OpenGL.framework */; }; + 39E37CE74D215AD0399B0986 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AE62577644D2CA731DD52B6 /* libSDL2main.a */; }; + 2C2B5AD223BC180527FD596D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 367154F61CFE7413423C7547 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6B4B1C6C7B66128C34A969B2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 12EB05A3126210B44E43311F /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 5D2B6AD811B1074B5D53106B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 12EB05A3126210B44E43311F /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 520B0310111D0A7E6B396B34 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3E0626DF04355843419935DA /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 28A92DF74FF77AC27A840D8C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3E0626DF04355843419935DA /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0D8A73571318159858096092 /* testoverlay2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testoverlay2.c"; path = "../../../../../test/testoverlay2.c"; sourceTree = ""; }; + 0378471E362972885D2A2BEA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 03DE051C016D34B83FB85C77 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 2F94243942F0572202694515 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 4BD52FFE58E2070F14E14B19 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1B3C31575AA200182BE02D09 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 35644D2D583D110D1543751C /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 790A115D0D90768E17FB642F /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 6BD11EC345EF7D0A2F052B0D /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 4E2F27481BE5130F71C969D4 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2F71516B7E4D05B61F113853 /* testoverlay2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testoverlay2"; path = "testoverlay2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 12EB05A3126210B44E43311F /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 3E0626DF04355843419935DA /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4D66654200E36E93193B06AD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3AF279FE14CA692708046DB4 /* AudioToolbox.framework in Frameworks */, + 301212F75420212E092E3175 /* AudioUnit.framework in Frameworks */, + 08870BD6311A585A20D46880 /* Cocoa.framework in Frameworks */, + 65A87AC11CBF631B28F2402E /* CoreAudio.framework in Frameworks */, + 43E104313E9F5B9A03BE4E12 /* IOKit.framework in Frameworks */, + 159042C076D351EF319E360C /* Carbon.framework in Frameworks */, + 672A1AC7378321517A336148 /* ForceFeedback.framework in Frameworks */, + 21024A424BBA385B68E674EE /* CoreFoundation.framework in Frameworks */, + 069120D46A0643D372906BDA /* OpenGL.framework in Frameworks */, + 39E37CE74D215AD0399B0986 /* libSDL2main.a in Frameworks */, + 2C2B5AD223BC180527FD596D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 431B349B3CD57B512B55626B /* testoverlay2 */ = { + isa = PBXGroup; + children = ( + 196E118E01A7168F45B26233 /* test */, + 49964D4123AA757026994687 /* Frameworks */, + 6E417D940C1955933EA97A99 /* Products */, + 59456A9848CC619652D66D1B /* Projects */, + ); + name = "testoverlay2"; + sourceTree = ""; + }; + 196E118E01A7168F45B26233 /* test */ = { + isa = PBXGroup; + children = ( + 0D8A73571318159858096092 /* testoverlay2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 49964D4123AA757026994687 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0378471E362972885D2A2BEA /* AudioToolbox.framework */, + 03DE051C016D34B83FB85C77 /* AudioUnit.framework */, + 2F94243942F0572202694515 /* Cocoa.framework */, + 4BD52FFE58E2070F14E14B19 /* CoreAudio.framework */, + 1B3C31575AA200182BE02D09 /* IOKit.framework */, + 35644D2D583D110D1543751C /* Carbon.framework */, + 790A115D0D90768E17FB642F /* ForceFeedback.framework */, + 6BD11EC345EF7D0A2F052B0D /* CoreFoundation.framework */, + 4E2F27481BE5130F71C969D4 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6E417D940C1955933EA97A99 /* Products */ = { + isa = PBXGroup; + children = ( + 2F71516B7E4D05B61F113853 /* testoverlay2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 59456A9848CC619652D66D1B /* Projects */ = { + isa = PBXGroup; + children = ( + 12EB05A3126210B44E43311F /* SDL2main.xcodeproj */, + 3E0626DF04355843419935DA /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 27A82C4845D94C731EAA32DF /* Products */ = { + isa = PBXGroup; + children = ( + 7AE62577644D2CA731DD52B6 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 140C521F0754327726FC16E7 /* Products */ = { + isa = PBXGroup; + children = ( + 367154F61CFE7413423C7547 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 56516C2245453CCF63D7796B /* testoverlay2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 326F1CE535A62CA70B1403BC /* Build configuration list for PBXNativeTarget "testoverlay2" */; + buildPhases = ( + 37E2704B7E3C3E29090C12F2 /* Resources */, + 6C265DE42EE77B8F6DD776A5 /* Sources */, + 4D66654200E36E93193B06AD /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 19F8017F4C525C89570D3D3B /* PBXTargetDependency */, + 1F5743CD69894FA41CD6632D /* PBXTargetDependency */, + ); + name = "testoverlay2"; + productInstallPath = "$(HOME)/bin"; + productName = "testoverlay2"; + productReference = 2F71516B7E4D05B61F113853 /* testoverlay2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testoverlay2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 431B349B3CD57B512B55626B /* testoverlay2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 27A82C4845D94C731EAA32DF /* Products */; + ProjectRef = 12EB05A3126210B44E43311F /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 140C521F0754327726FC16E7 /* Products */; + ProjectRef = 3E0626DF04355843419935DA /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 56516C2245453CCF63D7796B /* testoverlay2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 7AE62577644D2CA731DD52B6 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6B4B1C6C7B66128C34A969B2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 367154F61CFE7413423C7547 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 520B0310111D0A7E6B396B34 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 37E2704B7E3C3E29090C12F2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 6C265DE42EE77B8F6DD776A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 49E519755DE056E56EEE7984 /* testoverlay2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 19F8017F4C525C89570D3D3B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5D2B6AD811B1074B5D53106B /* PBXContainerItemProxy */; + }; + 1F5743CD69894FA41CD6632D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 28A92DF74FF77AC27A840D8C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 78C214CC065610BF6ED17E71 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Debug Universal"; + }; + 766B19EC5A9A52576B3A414F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Debug Native"; + }; + 07E239E42D1A4589546C3358 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Release Universal"; + }; + 4FC5127147DC54F11B510568 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Release Native"; + }; + 354202B87F4938F833BE2648 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 52FA351172CB7BC54C0969B5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 15C35A586D7D4DEB049F216E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 226A5F246075325C433E30D3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 326F1CE535A62CA70B1403BC /* Build configuration list for PBXNativeTarget "testoverlay2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 78C214CC065610BF6ED17E71 /* Debug Universal */, + 766B19EC5A9A52576B3A414F /* Debug Native */, + 07E239E42D1A4589546C3358 /* Release Universal */, + 4FC5127147DC54F11B510568 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testoverlay2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 354202B87F4938F833BE2648 /* Debug Universal */, + 52FA351172CB7BC54C0969B5 /* Debug Native */, + 15C35A586D7D4DEB049F216E /* Release Universal */, + 226A5F246075325C433E30D3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testplatform/testplatform.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testplatform/testplatform.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..35acd2777d --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testplatform/testplatform.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 37ED5BC504E9138129A27A3D /* testplatform.c in Sources */ = {isa = PBXBuildFile; fileRef = 081E1F192C0330BC475D4296 /* testplatform.c */; }; + 7BD44B516E507E2A216E514C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5336352002CA287D43566B0A /* AudioToolbox.framework */; }; + 2F53050455B1110643DF18D2 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 004A2F7402DC5FDF324B0D91 /* AudioUnit.framework */; }; + 25233B8A6C6563AE4D186991 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 119B173F39870AD61387282E /* Cocoa.framework */; }; + 71AD2E5619C356AC5894190D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A3C48C84BAD7AE56C5421A3 /* CoreAudio.framework */; }; + 32FB005309622C0464855F76 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57172F88221944384441125B /* IOKit.framework */; }; + 64A25E472BF24B0420D676FB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 613107F83A4C04F571BD6BD6 /* Carbon.framework */; }; + 57D71FDC65420FE72D161AD7 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68A26D321038787409204CF8 /* ForceFeedback.framework */; }; + 268E67BC0E4F0C5E1C3C31B3 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26720966305148371DC9346E /* CoreFoundation.framework */; }; + 278F363354F52DDD14165A9B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 754B3F294F913CA4334D0ECE /* OpenGL.framework */; }; + 31BD7B65287525F65B00617D /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 09EB3E7646B130C359E00123 /* libSDL2main.a */; }; + 4A2D66E7747B49FA4A2504C2 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FF52E8C6A59365464646C62 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 39566DEA46E31EA517AB0D81 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29E63F1E737875EB4572421F /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 4C79492F6C66532128085612 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 29E63F1E737875EB4572421F /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 2DA534AB5941742966457012 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5BFF761378114C8623E12D8B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 464F1F1C082A20D911C27747 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5BFF761378114C8623E12D8B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 081E1F192C0330BC475D4296 /* testplatform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testplatform.c"; path = "../../../../../test/testplatform.c"; sourceTree = ""; }; + 5336352002CA287D43566B0A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 004A2F7402DC5FDF324B0D91 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 119B173F39870AD61387282E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 3A3C48C84BAD7AE56C5421A3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 57172F88221944384441125B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 613107F83A4C04F571BD6BD6 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 68A26D321038787409204CF8 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 26720966305148371DC9346E /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 754B3F294F913CA4334D0ECE /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 097A37A016343C8E1B394B02 /* testplatform */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testplatform"; path = "testplatform"; sourceTree = BUILT_PRODUCTS_DIR; }; + 29E63F1E737875EB4572421F /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5BFF761378114C8623E12D8B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3FDC37A9640D3975530C4F24 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BD44B516E507E2A216E514C /* AudioToolbox.framework in Frameworks */, + 2F53050455B1110643DF18D2 /* AudioUnit.framework in Frameworks */, + 25233B8A6C6563AE4D186991 /* Cocoa.framework in Frameworks */, + 71AD2E5619C356AC5894190D /* CoreAudio.framework in Frameworks */, + 32FB005309622C0464855F76 /* IOKit.framework in Frameworks */, + 64A25E472BF24B0420D676FB /* Carbon.framework in Frameworks */, + 57D71FDC65420FE72D161AD7 /* ForceFeedback.framework in Frameworks */, + 268E67BC0E4F0C5E1C3C31B3 /* CoreFoundation.framework in Frameworks */, + 278F363354F52DDD14165A9B /* OpenGL.framework in Frameworks */, + 31BD7B65287525F65B00617D /* libSDL2main.a in Frameworks */, + 4A2D66E7747B49FA4A2504C2 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 21624A885D57213356FA6A34 /* testplatform */ = { + isa = PBXGroup; + children = ( + 0E11168C6A10510F54A558DE /* test */, + 3AFA0F7B7A16543372D53159 /* Frameworks */, + 784B34771085434D2EF64D40 /* Products */, + 2C545EEB2A1562BB19053D80 /* Projects */, + ); + name = "testplatform"; + sourceTree = ""; + }; + 0E11168C6A10510F54A558DE /* test */ = { + isa = PBXGroup; + children = ( + 081E1F192C0330BC475D4296 /* testplatform.c */, + ); + name = "test"; + sourceTree = ""; + }; + 3AFA0F7B7A16543372D53159 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5336352002CA287D43566B0A /* AudioToolbox.framework */, + 004A2F7402DC5FDF324B0D91 /* AudioUnit.framework */, + 119B173F39870AD61387282E /* Cocoa.framework */, + 3A3C48C84BAD7AE56C5421A3 /* CoreAudio.framework */, + 57172F88221944384441125B /* IOKit.framework */, + 613107F83A4C04F571BD6BD6 /* Carbon.framework */, + 68A26D321038787409204CF8 /* ForceFeedback.framework */, + 26720966305148371DC9346E /* CoreFoundation.framework */, + 754B3F294F913CA4334D0ECE /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 784B34771085434D2EF64D40 /* Products */ = { + isa = PBXGroup; + children = ( + 097A37A016343C8E1B394B02 /* testplatform */, + ); + name = "Products"; + sourceTree = ""; + }; + 2C545EEB2A1562BB19053D80 /* Projects */ = { + isa = PBXGroup; + children = ( + 29E63F1E737875EB4572421F /* SDL2main.xcodeproj */, + 5BFF761378114C8623E12D8B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 156209E929DC61A874763026 /* Products */ = { + isa = PBXGroup; + children = ( + 09EB3E7646B130C359E00123 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 34272D02656233906FDC6D94 /* Products */ = { + isa = PBXGroup; + children = ( + 2FF52E8C6A59365464646C62 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 236D5B5F4B2838B77F863862 /* testplatform */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1C1806252870035C492C7EF1 /* Build configuration list for PBXNativeTarget "testplatform" */; + buildPhases = ( + 18FD11B714CB5486678A5437 /* Resources */, + 7E3414ED775E6BC7778136D4 /* Sources */, + 3FDC37A9640D3975530C4F24 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5ED23A6F02845C401CCB5568 /* PBXTargetDependency */, + 72EB340F4E1D121A17630010 /* PBXTargetDependency */, + ); + name = "testplatform"; + productInstallPath = "$(HOME)/bin"; + productName = "testplatform"; + productReference = 097A37A016343C8E1B394B02 /* testplatform */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testplatform" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 21624A885D57213356FA6A34 /* testplatform */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 156209E929DC61A874763026 /* Products */; + ProjectRef = 29E63F1E737875EB4572421F /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 34272D02656233906FDC6D94 /* Products */; + ProjectRef = 5BFF761378114C8623E12D8B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 236D5B5F4B2838B77F863862 /* testplatform */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 09EB3E7646B130C359E00123 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 39566DEA46E31EA517AB0D81 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2FF52E8C6A59365464646C62 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2DA534AB5941742966457012 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 18FD11B714CB5486678A5437 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7E3414ED775E6BC7778136D4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 37ED5BC504E9138129A27A3D /* testplatform.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5ED23A6F02845C401CCB5568 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 4C79492F6C66532128085612 /* PBXContainerItemProxy */; + }; + 72EB340F4E1D121A17630010 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 464F1F1C082A20D911C27747 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 26C36FEF459F70D537F476D9 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Debug Universal"; + }; + 62764F0107E56C5B56C2701A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Debug Native"; + }; + 520762EA10B3650F462F6674 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Release Universal"; + }; + 32D97D9F520A10CF30B40679 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Release Native"; + }; + 59C346A66ECA43064A79768F /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 5C672D0543DA541D76814AC5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 62F7512358B56DD550D00D18 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 1FD822281EE77BDC642D710F /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1C1806252870035C492C7EF1 /* Build configuration list for PBXNativeTarget "testplatform" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 26C36FEF459F70D537F476D9 /* Debug Universal */, + 62764F0107E56C5B56C2701A /* Debug Native */, + 520762EA10B3650F462F6674 /* Release Universal */, + 32D97D9F520A10CF30B40679 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testplatform" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59C346A66ECA43064A79768F /* Debug Universal */, + 5C672D0543DA541D76814AC5 /* Debug Native */, + 62F7512358B56DD550D00D18 /* Release Universal */, + 1FD822281EE77BDC642D710F /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testpower/testpower.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testpower/testpower.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..2f7af13b88 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testpower/testpower.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3EF228BD150B22660E004E05 /* testpower.c in Sources */ = {isa = PBXBuildFile; fileRef = 6B5938730D5F78115A727FBA /* testpower.c */; }; + 7ACC73767C0349ED131C3DFD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 717C33AB559824204B1A2C1A /* AudioToolbox.framework */; }; + 1B3A025925754C517B1C7C7B /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 414A18503CBE7CE95FFE5673 /* AudioUnit.framework */; }; + 1A7F0AAC43C225B0460C4376 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A9811AB2E94173E08F92884 /* Cocoa.framework */; }; + 40F315154D9B1C9254A4622E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 368E29A65CE578046F5A1B90 /* CoreAudio.framework */; }; + 739604C93F294BEF74C76BDD /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D5C515B325F178D5B036253 /* IOKit.framework */; }; + 28624182483D455422B25673 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 368F0BF311301C4C6A6C0874 /* Carbon.framework */; }; + 26C63B8342C71EA76DDC2D47 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FF662D46CEE1B604D0C5267 /* ForceFeedback.framework */; }; + 05C1482E62BD221E6923175B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F2074B609873ADE77FE6ADF /* CoreFoundation.framework */; }; + 01E77B2608EC66BD27286309 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DF593212465EA418476A0D /* OpenGL.framework */; }; + 5EDD2A0E7D8468627FB83BBD /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B86764A354F08580A6C5454 /* libSDL2main.a */; }; + 320051A96DED11B90B856E40 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 182809E0557B364038186E61 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 13A073B65ADF0CF531CF4A73 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11544BA13AFD75E077B1078E /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 46B523493CBC0479601E63FC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11544BA13AFD75E077B1078E /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 43F668F002E543FF40C758BD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 35B3225F3E157E356F1B0C43 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 6E8B194676DD2F48313A6A06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 35B3225F3E157E356F1B0C43 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 6B5938730D5F78115A727FBA /* testpower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testpower.c"; path = "../../../../../test/testpower.c"; sourceTree = ""; }; + 717C33AB559824204B1A2C1A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 414A18503CBE7CE95FFE5673 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0A9811AB2E94173E08F92884 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 368E29A65CE578046F5A1B90 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 5D5C515B325F178D5B036253 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 368F0BF311301C4C6A6C0874 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 3FF662D46CEE1B604D0C5267 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2F2074B609873ADE77FE6ADF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 11DF593212465EA418476A0D /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 569C4CDE26A55BBC46423C94 /* testpower */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testpower"; path = "testpower"; sourceTree = BUILT_PRODUCTS_DIR; }; + 11544BA13AFD75E077B1078E /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 35B3225F3E157E356F1B0C43 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 64CC1CB9570652B461031A69 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7ACC73767C0349ED131C3DFD /* AudioToolbox.framework in Frameworks */, + 1B3A025925754C517B1C7C7B /* AudioUnit.framework in Frameworks */, + 1A7F0AAC43C225B0460C4376 /* Cocoa.framework in Frameworks */, + 40F315154D9B1C9254A4622E /* CoreAudio.framework in Frameworks */, + 739604C93F294BEF74C76BDD /* IOKit.framework in Frameworks */, + 28624182483D455422B25673 /* Carbon.framework in Frameworks */, + 26C63B8342C71EA76DDC2D47 /* ForceFeedback.framework in Frameworks */, + 05C1482E62BD221E6923175B /* CoreFoundation.framework in Frameworks */, + 01E77B2608EC66BD27286309 /* OpenGL.framework in Frameworks */, + 5EDD2A0E7D8468627FB83BBD /* libSDL2main.a in Frameworks */, + 320051A96DED11B90B856E40 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2D8676AB61876C230226250F /* testpower */ = { + isa = PBXGroup; + children = ( + 369D04672F153C0F3AEF5637 /* test */, + 55CD1192485C19AA6BB47AB8 /* Frameworks */, + 03250FB568812580294376A1 /* Products */, + 6A0B144B4FCE60FF11E505DF /* Projects */, + ); + name = "testpower"; + sourceTree = ""; + }; + 369D04672F153C0F3AEF5637 /* test */ = { + isa = PBXGroup; + children = ( + 6B5938730D5F78115A727FBA /* testpower.c */, + ); + name = "test"; + sourceTree = ""; + }; + 55CD1192485C19AA6BB47AB8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 717C33AB559824204B1A2C1A /* AudioToolbox.framework */, + 414A18503CBE7CE95FFE5673 /* AudioUnit.framework */, + 0A9811AB2E94173E08F92884 /* Cocoa.framework */, + 368E29A65CE578046F5A1B90 /* CoreAudio.framework */, + 5D5C515B325F178D5B036253 /* IOKit.framework */, + 368F0BF311301C4C6A6C0874 /* Carbon.framework */, + 3FF662D46CEE1B604D0C5267 /* ForceFeedback.framework */, + 2F2074B609873ADE77FE6ADF /* CoreFoundation.framework */, + 11DF593212465EA418476A0D /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 03250FB568812580294376A1 /* Products */ = { + isa = PBXGroup; + children = ( + 569C4CDE26A55BBC46423C94 /* testpower */, + ); + name = "Products"; + sourceTree = ""; + }; + 6A0B144B4FCE60FF11E505DF /* Projects */ = { + isa = PBXGroup; + children = ( + 11544BA13AFD75E077B1078E /* SDL2main.xcodeproj */, + 35B3225F3E157E356F1B0C43 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 3D0C5EDC63F174F9414E7F06 /* Products */ = { + isa = PBXGroup; + children = ( + 3B86764A354F08580A6C5454 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 48327DFD06661A16561A78F3 /* Products */ = { + isa = PBXGroup; + children = ( + 182809E0557B364038186E61 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 554817E143653BEB41F80C48 /* testpower */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2FD54A0672920E44366F3F39 /* Build configuration list for PBXNativeTarget "testpower" */; + buildPhases = ( + 5FA347491FB2087951E0619C /* Resources */, + 53C604B203630DF7135B417C /* Sources */, + 64CC1CB9570652B461031A69 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3AC84E14125C5A2610A61EE6 /* PBXTargetDependency */, + 6086076E558A67E515024F25 /* PBXTargetDependency */, + ); + name = "testpower"; + productInstallPath = "$(HOME)/bin"; + productName = "testpower"; + productReference = 569C4CDE26A55BBC46423C94 /* testpower */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testpower" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2D8676AB61876C230226250F /* testpower */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 3D0C5EDC63F174F9414E7F06 /* Products */; + ProjectRef = 11544BA13AFD75E077B1078E /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 48327DFD06661A16561A78F3 /* Products */; + ProjectRef = 35B3225F3E157E356F1B0C43 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 554817E143653BEB41F80C48 /* testpower */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 3B86764A354F08580A6C5454 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 13A073B65ADF0CF531CF4A73 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 182809E0557B364038186E61 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 43F668F002E543FF40C758BD /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5FA347491FB2087951E0619C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 53C604B203630DF7135B417C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3EF228BD150B22660E004E05 /* testpower.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 3AC84E14125C5A2610A61EE6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 46B523493CBC0479601E63FC /* PBXContainerItemProxy */; + }; + 6086076E558A67E515024F25 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6E8B194676DD2F48313A6A06 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 797574996A3A4001332E3169 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Debug Universal"; + }; + 26B813830E18591328B601E6 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Debug Native"; + }; + 7F2F746B47EE618B13AA3A0D /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Release Universal"; + }; + 18336CF16D6C067E59B857E4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Release Native"; + }; + 0E3339071F5D309E09431580 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 314C0D4F4A054F2116242D3B /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 32557BD64874521F74E65003 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 40201D0E34EC167717D67C39 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2FD54A0672920E44366F3F39 /* Build configuration list for PBXNativeTarget "testpower" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 797574996A3A4001332E3169 /* Debug Universal */, + 26B813830E18591328B601E6 /* Debug Native */, + 7F2F746B47EE618B13AA3A0D /* Release Universal */, + 18336CF16D6C067E59B857E4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testpower" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0E3339071F5D309E09431580 /* Debug Universal */, + 314C0D4F4A054F2116242D3B /* Debug Native */, + 32557BD64874521F74E65003 /* Release Universal */, + 40201D0E34EC167717D67C39 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testrelative/testrelative.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testrelative/testrelative.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..f6c82957cf --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testrelative/testrelative.xcodeproj/project.pbxproj @@ -0,0 +1,500 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 4BE141385FC25AAF52EF5D0E /* testrelative.c in Sources */ = {isa = PBXBuildFile; fileRef = 23C84D8E25D43E932E076CE5 /* testrelative.c */; }; + 52A902EA6BB0203F1A3D5A56 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B6B7821495513D336363342 /* AudioToolbox.framework */; }; + 4CB4614718715F5764207380 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04C9563C37A3433E31E617E9 /* AudioUnit.framework */; }; + 0BCA393B6DD27CA7621B653D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FCE029470145A6965136097 /* Cocoa.framework */; }; + 116733C576FC23CD10F77A40 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11D0109F422B16BB5C8F3FA9 /* CoreAudio.framework */; }; + 614C738344D3225E099E0B63 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E377BED367C3032325C3776 /* IOKit.framework */; }; + 29D710204F5761C245564391 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 272E55E60D2E5F926C7175DF /* Carbon.framework */; }; + 6CC66AAE6E635E5065CA604A /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 193F338F7815345753483993 /* ForceFeedback.framework */; }; + 7B44599D5A7F788310FF7545 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20905BFD77D424365A1B22FE /* CoreFoundation.framework */; }; + 39890A111ED55C9B4DED0CEA /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12F0584071CD08201E2D59CB /* OpenGL.framework */; }; + 3E33469041386CE404C87065 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2455670C53241E4003D7355C /* libSDL2main.a */; }; + 1EC25F1D781A04BF3E5003AA /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FFF657F7BDE594C2E2B2045 /* libSDL2test.a */; }; + 0EAD05E06BDB113B3EE6263D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 348A77A855704B1A331123A6 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 11BD4F4211CD67F065100B16 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 756361F4075435AF77BE782C /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 6B42469B10CE720753732810 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 756361F4075435AF77BE782C /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 1CDE37AB4F14469920973612 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15F67762478644B17EA51421 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 015A59C06021496B36B21217 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15F67762478644B17EA51421 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 5D361A0D4E967F8856544BDE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4DFC775262036B1004707A92 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 65E80CEB298A4AE45CCF57AE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4DFC775262036B1004707A92 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 23C84D8E25D43E932E076CE5 /* testrelative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrelative.c"; path = "../../../../../test/testrelative.c"; sourceTree = ""; }; + 3B6B7821495513D336363342 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 04C9563C37A3433E31E617E9 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 5FCE029470145A6965136097 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 11D0109F422B16BB5C8F3FA9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 0E377BED367C3032325C3776 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 272E55E60D2E5F926C7175DF /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 193F338F7815345753483993 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 20905BFD77D424365A1B22FE /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 12F0584071CD08201E2D59CB /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2753719C67214549698B471C /* testrelative */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrelative"; path = "testrelative"; sourceTree = BUILT_PRODUCTS_DIR; }; + 756361F4075435AF77BE782C /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 15F67762478644B17EA51421 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 4DFC775262036B1004707A92 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2A6975C573F642F315653B7E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 52A902EA6BB0203F1A3D5A56 /* AudioToolbox.framework in Frameworks */, + 4CB4614718715F5764207380 /* AudioUnit.framework in Frameworks */, + 0BCA393B6DD27CA7621B653D /* Cocoa.framework in Frameworks */, + 116733C576FC23CD10F77A40 /* CoreAudio.framework in Frameworks */, + 614C738344D3225E099E0B63 /* IOKit.framework in Frameworks */, + 29D710204F5761C245564391 /* Carbon.framework in Frameworks */, + 6CC66AAE6E635E5065CA604A /* ForceFeedback.framework in Frameworks */, + 7B44599D5A7F788310FF7545 /* CoreFoundation.framework in Frameworks */, + 39890A111ED55C9B4DED0CEA /* OpenGL.framework in Frameworks */, + 3E33469041386CE404C87065 /* libSDL2main.a in Frameworks */, + 1EC25F1D781A04BF3E5003AA /* libSDL2test.a in Frameworks */, + 0EAD05E06BDB113B3EE6263D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 418A78AC16316F1E2E922AFA /* testrelative */ = { + isa = PBXGroup; + children = ( + 425644E27C276E66160A0B59 /* test */, + 71881C856A16603C215D1E2F /* Frameworks */, + 7D165D173F4C45A307CB5115 /* Products */, + 4B2245BE5B1C1B097ED42E2A /* Projects */, + ); + name = "testrelative"; + sourceTree = ""; + }; + 425644E27C276E66160A0B59 /* test */ = { + isa = PBXGroup; + children = ( + 23C84D8E25D43E932E076CE5 /* testrelative.c */, + ); + name = "test"; + sourceTree = ""; + }; + 71881C856A16603C215D1E2F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3B6B7821495513D336363342 /* AudioToolbox.framework */, + 04C9563C37A3433E31E617E9 /* AudioUnit.framework */, + 5FCE029470145A6965136097 /* Cocoa.framework */, + 11D0109F422B16BB5C8F3FA9 /* CoreAudio.framework */, + 0E377BED367C3032325C3776 /* IOKit.framework */, + 272E55E60D2E5F926C7175DF /* Carbon.framework */, + 193F338F7815345753483993 /* ForceFeedback.framework */, + 20905BFD77D424365A1B22FE /* CoreFoundation.framework */, + 12F0584071CD08201E2D59CB /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 7D165D173F4C45A307CB5115 /* Products */ = { + isa = PBXGroup; + children = ( + 2753719C67214549698B471C /* testrelative */, + ); + name = "Products"; + sourceTree = ""; + }; + 4B2245BE5B1C1B097ED42E2A /* Projects */ = { + isa = PBXGroup; + children = ( + 756361F4075435AF77BE782C /* SDL2main.xcodeproj */, + 15F67762478644B17EA51421 /* SDL2test.xcodeproj */, + 4DFC775262036B1004707A92 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7AEC51C57CE46F7440330A7C /* Products */ = { + isa = PBXGroup; + children = ( + 2455670C53241E4003D7355C /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 716124AE421B1CCA387A5D24 /* Products */ = { + isa = PBXGroup; + children = ( + 0FFF657F7BDE594C2E2B2045 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 6A25268B0AE00DB845FF0AD5 /* Products */ = { + isa = PBXGroup; + children = ( + 348A77A855704B1A331123A6 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 360121FD11CA1DA9461F408E /* testrelative */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7D58432F59731B495B954300 /* Build configuration list for PBXNativeTarget "testrelative" */; + buildPhases = ( + 50A91E8D60B73C660C1F5A01 /* Resources */, + 0AA10F7D1441446002E471C8 /* Sources */, + 2A6975C573F642F315653B7E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5E8C5CC51CAF43E108F52C4B /* PBXTargetDependency */, + 29896D0B1118695222B947C9 /* PBXTargetDependency */, + 09825D3C12883E7067BE230B /* PBXTargetDependency */, + ); + name = "testrelative"; + productInstallPath = "$(HOME)/bin"; + productName = "testrelative"; + productReference = 2753719C67214549698B471C /* testrelative */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrelative" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 418A78AC16316F1E2E922AFA /* testrelative */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7AEC51C57CE46F7440330A7C /* Products */; + ProjectRef = 756361F4075435AF77BE782C /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 716124AE421B1CCA387A5D24 /* Products */; + ProjectRef = 15F67762478644B17EA51421 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 6A25268B0AE00DB845FF0AD5 /* Products */; + ProjectRef = 4DFC775262036B1004707A92 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 360121FD11CA1DA9461F408E /* testrelative */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2455670C53241E4003D7355C /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 11BD4F4211CD67F065100B16 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0FFF657F7BDE594C2E2B2045 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 1CDE37AB4F14469920973612 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 348A77A855704B1A331123A6 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 5D361A0D4E967F8856544BDE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 50A91E8D60B73C660C1F5A01 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0AA10F7D1441446002E471C8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BE141385FC25AAF52EF5D0E /* testrelative.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5E8C5CC51CAF43E108F52C4B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 6B42469B10CE720753732810 /* PBXContainerItemProxy */; + }; + 29896D0B1118695222B947C9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 015A59C06021496B36B21217 /* PBXContainerItemProxy */; + }; + 09825D3C12883E7067BE230B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 65E80CEB298A4AE45CCF57AE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 43E930EB48062A1015DE5EB8 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Debug Universal"; + }; + 54B96EB40D14420F04292960 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Debug Native"; + }; + 38E3583A7176019D17E4098C /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Release Universal"; + }; + 66CF339A557E44FD6E796621 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Release Native"; + }; + 1DDB22D22994569421FB1030 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1354287A1286355450646B8A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 73ED61310132107232117A3F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0937058C5923313D3E536257 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7D58432F59731B495B954300 /* Build configuration list for PBXNativeTarget "testrelative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 43E930EB48062A1015DE5EB8 /* Debug Universal */, + 54B96EB40D14420F04292960 /* Debug Native */, + 38E3583A7176019D17E4098C /* Release Universal */, + 66CF339A557E44FD6E796621 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrelative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DDB22D22994569421FB1030 /* Debug Universal */, + 1354287A1286355450646B8A /* Debug Native */, + 73ED61310132107232117A3F /* Release Universal */, + 0937058C5923313D3E536257 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..0c94bd9cfb --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj @@ -0,0 +1,517 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6E8C5D734CF62AC02E2A628C /* testrendercopyex.c in Sources */ = {isa = PBXBuildFile; fileRef = 353209D3375F65A759A91183 /* testrendercopyex.c */; }; + 28D600651FEF07A50B9971EC /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BD538AC44230FBC1DEB5849 /* AudioToolbox.framework */; }; + 2882256265181F552134768B /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61C63DC55B95422340FB3584 /* AudioUnit.framework */; }; + 2E902AD445FA5D18136E4E8C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29425C772989211E4CB678B6 /* Cocoa.framework */; }; + 02964DEE7A5037066CE97636 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68BD73FC415D4E7C5A797E28 /* CoreAudio.framework */; }; + 16072B0D0CD72A387EAD37F5 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DC123D30BFF2A2E36FC7518 /* IOKit.framework */; }; + 6BBA355F1CED1BAC3E1B09B7 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EF14DDA3B145C9D78C17D09 /* Carbon.framework */; }; + 4FB83D6B68E3167D051134BA /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 527E6D7146EB1F876CB96FD0 /* ForceFeedback.framework */; }; + 099405A406203D7E1D2D7E21 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A82641D544A5AFE16B84383 /* CoreFoundation.framework */; }; + 5FC7220501E5043418C5420A /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60BA7B0B10B154D64A20298C /* OpenGL.framework */; }; + 291F6751239E1A4A75DB7DFA /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CE10C33796F7ED04A7D661F /* libSDL2main.a */; }; + 1CD77D1A3AC57B96363174FD /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E4A36C205D6384A3C18559E /* libSDL2test.a */; }; + 73626470290E735104D21BB4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 002D3E8461A530CE5D8A1613 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 557A4002043D621175310F7B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1F963BA70DA6400C0A6E4784 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0D933B3057FF40D6491C69FF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1F963BA70DA6400C0A6E4784 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 4DB203F95FB172A15DBE6900 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 326520CF17B318C34CA51272 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 13B63D4042FB7093495A389B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 326520CF17B318C34CA51272 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 40837EDF6B281C520A0448EE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 483C18416E0E7C197F7238B5 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 1D371817285041810DA0112A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 483C18416E0E7C197F7238B5 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 353209D3375F65A759A91183 /* testrendercopyex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrendercopyex.c"; path = "../../../../../test/testrendercopyex.c"; sourceTree = ""; }; + 5BD538AC44230FBC1DEB5849 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 61C63DC55B95422340FB3584 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 29425C772989211E4CB678B6 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 68BD73FC415D4E7C5A797E28 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6DC123D30BFF2A2E36FC7518 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 4EF14DDA3B145C9D78C17D09 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 527E6D7146EB1F876CB96FD0 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2A82641D544A5AFE16B84383 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 60BA7B0B10B154D64A20298C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5087525F0A1453AF2F9A6588 /* testrendercopyex */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrendercopyex"; path = "testrendercopyex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1F963BA70DA6400C0A6E4784 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 326520CF17B318C34CA51272 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 483C18416E0E7C197F7238B5 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3FDD6E742FAE04D07CFB6D74 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 28D600651FEF07A50B9971EC /* AudioToolbox.framework in Frameworks */, + 2882256265181F552134768B /* AudioUnit.framework in Frameworks */, + 2E902AD445FA5D18136E4E8C /* Cocoa.framework in Frameworks */, + 02964DEE7A5037066CE97636 /* CoreAudio.framework in Frameworks */, + 16072B0D0CD72A387EAD37F5 /* IOKit.framework in Frameworks */, + 6BBA355F1CED1BAC3E1B09B7 /* Carbon.framework in Frameworks */, + 4FB83D6B68E3167D051134BA /* ForceFeedback.framework in Frameworks */, + 099405A406203D7E1D2D7E21 /* CoreFoundation.framework in Frameworks */, + 5FC7220501E5043418C5420A /* OpenGL.framework in Frameworks */, + 291F6751239E1A4A75DB7DFA /* libSDL2main.a in Frameworks */, + 1CD77D1A3AC57B96363174FD /* libSDL2test.a in Frameworks */, + 73626470290E735104D21BB4 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 251C69F41B3F726174443202 /* testrendercopyex */ = { + isa = PBXGroup; + children = ( + 61DD08695F8F3DDB05493A14 /* test */, + 66BA50F11059531C60923BFE /* Frameworks */, + 332D5C542BF82FE916053248 /* Products */, + 3722498D7B70133662F40C7A /* Projects */, + ); + name = "testrendercopyex"; + sourceTree = ""; + }; + 61DD08695F8F3DDB05493A14 /* test */ = { + isa = PBXGroup; + children = ( + 353209D3375F65A759A91183 /* testrendercopyex.c */, + ); + name = "test"; + sourceTree = ""; + }; + 66BA50F11059531C60923BFE /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5BD538AC44230FBC1DEB5849 /* AudioToolbox.framework */, + 61C63DC55B95422340FB3584 /* AudioUnit.framework */, + 29425C772989211E4CB678B6 /* Cocoa.framework */, + 68BD73FC415D4E7C5A797E28 /* CoreAudio.framework */, + 6DC123D30BFF2A2E36FC7518 /* IOKit.framework */, + 4EF14DDA3B145C9D78C17D09 /* Carbon.framework */, + 527E6D7146EB1F876CB96FD0 /* ForceFeedback.framework */, + 2A82641D544A5AFE16B84383 /* CoreFoundation.framework */, + 60BA7B0B10B154D64A20298C /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 332D5C542BF82FE916053248 /* Products */ = { + isa = PBXGroup; + children = ( + 5087525F0A1453AF2F9A6588 /* testrendercopyex */, + ); + name = "Products"; + sourceTree = ""; + }; + 3722498D7B70133662F40C7A /* Projects */ = { + isa = PBXGroup; + children = ( + 1F963BA70DA6400C0A6E4784 /* SDL2main.xcodeproj */, + 326520CF17B318C34CA51272 /* SDL2test.xcodeproj */, + 483C18416E0E7C197F7238B5 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 1DF54D335F07031E66B12A6A /* Products */ = { + isa = PBXGroup; + children = ( + 2CE10C33796F7ED04A7D661F /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 50BB422B200B724E6F850FD0 /* Products */ = { + isa = PBXGroup; + children = ( + 0E4A36C205D6384A3C18559E /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 484E1DB0205361030D1B0F46 /* Products */ = { + isa = PBXGroup; + children = ( + 002D3E8461A530CE5D8A1613 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 557C7D5C52F640C955CB0F67 /* testrendercopyex */ = { + isa = PBXNativeTarget; + buildConfigurationList = 59E3072F380A3C4A325F130D /* Build configuration list for PBXNativeTarget "testrendercopyex" */; + buildPhases = ( + 5B1B6AAF180F28375ADB1C63 /* Resources */, + 62F761C96CF0025F32C158CE /* Sources */, + 3FDD6E742FAE04D07CFB6D74 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 172122C5708535651DDE65C6 /* PBXTargetDependency */, + 75D50FC35348521025404D82 /* PBXTargetDependency */, + 06264C7B60C120251C9B1488 /* PBXTargetDependency */, + ); + name = "testrendercopyex"; + productInstallPath = "$(HOME)/bin"; + productName = "testrendercopyex"; + productReference = 5087525F0A1453AF2F9A6588 /* testrendercopyex */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendercopyex" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 251C69F41B3F726174443202 /* testrendercopyex */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 1DF54D335F07031E66B12A6A /* Products */; + ProjectRef = 1F963BA70DA6400C0A6E4784 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 50BB422B200B724E6F850FD0 /* Products */; + ProjectRef = 326520CF17B318C34CA51272 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 484E1DB0205361030D1B0F46 /* Products */; + ProjectRef = 483C18416E0E7C197F7238B5 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 557C7D5C52F640C955CB0F67 /* testrendercopyex */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2CE10C33796F7ED04A7D661F /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 557A4002043D621175310F7B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0E4A36C205D6384A3C18559E /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 4DB203F95FB172A15DBE6900 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 002D3E8461A530CE5D8A1613 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 40837EDF6B281C520A0448EE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5B1B6AAF180F28375ADB1C63 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 62F761C96CF0025F32C158CE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6E8C5D734CF62AC02E2A628C /* testrendercopyex.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 172122C5708535651DDE65C6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0D933B3057FF40D6491C69FF /* PBXContainerItemProxy */; + }; + 75D50FC35348521025404D82 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 13B63D4042FB7093495A389B /* PBXContainerItemProxy */; + }; + 06264C7B60C120251C9B1488 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 1D371817285041810DA0112A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 17F645D86ABB423F50E12287 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Debug Universal"; + }; + 410818042FC736AD221E1049 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Debug Native"; + }; + 408047A8720F482E471F6286 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Release Universal"; + }; + 7E6F2C356E69538C2D745325 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Release Native"; + }; + 7CC167931CC81DA144C105A3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 3545579A69D14F791CFD4CB2 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 642E19635F9A7EFC0FB53836 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 2F2F783E37D0711E060339EB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 59E3072F380A3C4A325F130D /* Build configuration list for PBXNativeTarget "testrendercopyex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 17F645D86ABB423F50E12287 /* Debug Universal */, + 410818042FC736AD221E1049 /* Debug Native */, + 408047A8720F482E471F6286 /* Release Universal */, + 7E6F2C356E69538C2D745325 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendercopyex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CC167931CC81DA144C105A3 /* Debug Universal */, + 3545579A69D14F791CFD4CB2 /* Debug Native */, + 642E19635F9A7EFC0FB53836 /* Release Universal */, + 2F2F783E37D0711E060339EB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..49c2ef9663 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj @@ -0,0 +1,517 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3BDE770E382742407C9C7275 /* testrendertarget.c in Sources */ = {isa = PBXBuildFile; fileRef = 3D377B2F758301FB3EE53E1E /* testrendertarget.c */; }; + 021E0C863FA852C728EA21A5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65E944291E9579D473B31994 /* AudioToolbox.framework */; }; + 066B616A0F357B1350403119 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 622318275C5B0EF65EC61AFD /* AudioUnit.framework */; }; + 13447C76577A1A13163437A4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07CC15F06B1E09D103A97BCF /* Cocoa.framework */; }; + 15193EED718E39916A7C1483 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02892BC34C873ECA4BD25839 /* CoreAudio.framework */; }; + 2997079F67543FEE3875249B /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4B7F14644F8011D956DE2051 /* IOKit.framework */; }; + 0A550BAF42E407DD6A3A1FD8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 452655000EBA59503EF420A0 /* Carbon.framework */; }; + 0F702DAE7E5868BC1FAD46D8 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 308856AD13007A0847B90197 /* ForceFeedback.framework */; }; + 19FA7BAA13ED683E72FB497A /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30B350842E226D2F36C90784 /* CoreFoundation.framework */; }; + 45C9492E2BA1789A72911841 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D7875D9299727716BC76549 /* OpenGL.framework */; }; + 058D1D23740D3B8402CF1144 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 56767874260E1325074412DF /* libSDL2main.a */; }; + 0B674F36010E61E9091C25CA /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 482733D23FB6544709C50ED4 /* libSDL2test.a */; }; + 28AA6DE4175D71F470BB420D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 59D2230B5A0B1CDE43107EEF /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 27766928021C033336E5032B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 42D156B9499913F169B57314 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0254080707BB2E0C50006C25 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 42D156B9499913F169B57314 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 74BB51AB6C52216E68215FCE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 134322956CCC6439154A3F0E /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 4EDA545541D53C84205B592B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 134322956CCC6439154A3F0E /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 7C3932CF473920007BED14B6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 72532B8E33703B3E07570B89 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 396733C34AF07D6F3CBD30D2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 72532B8E33703B3E07570B89 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3D377B2F758301FB3EE53E1E /* testrendertarget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrendertarget.c"; path = "../../../../../test/testrendertarget.c"; sourceTree = ""; }; + 65E944291E9579D473B31994 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 622318275C5B0EF65EC61AFD /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 07CC15F06B1E09D103A97BCF /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 02892BC34C873ECA4BD25839 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 4B7F14644F8011D956DE2051 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 452655000EBA59503EF420A0 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 308856AD13007A0847B90197 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 30B350842E226D2F36C90784 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 0D7875D9299727716BC76549 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2C727B1464A05D8628A65406 /* testrendertarget */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrendertarget"; path = "testrendertarget"; sourceTree = BUILT_PRODUCTS_DIR; }; + 42D156B9499913F169B57314 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 134322956CCC6439154A3F0E /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 72532B8E33703B3E07570B89 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 182F540A002D452A74910B72 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 021E0C863FA852C728EA21A5 /* AudioToolbox.framework in Frameworks */, + 066B616A0F357B1350403119 /* AudioUnit.framework in Frameworks */, + 13447C76577A1A13163437A4 /* Cocoa.framework in Frameworks */, + 15193EED718E39916A7C1483 /* CoreAudio.framework in Frameworks */, + 2997079F67543FEE3875249B /* IOKit.framework in Frameworks */, + 0A550BAF42E407DD6A3A1FD8 /* Carbon.framework in Frameworks */, + 0F702DAE7E5868BC1FAD46D8 /* ForceFeedback.framework in Frameworks */, + 19FA7BAA13ED683E72FB497A /* CoreFoundation.framework in Frameworks */, + 45C9492E2BA1789A72911841 /* OpenGL.framework in Frameworks */, + 058D1D23740D3B8402CF1144 /* libSDL2main.a in Frameworks */, + 0B674F36010E61E9091C25CA /* libSDL2test.a in Frameworks */, + 28AA6DE4175D71F470BB420D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0E822AD7464B6D584977305A /* testrendertarget */ = { + isa = PBXGroup; + children = ( + 0E314AD426492160672949A2 /* test */, + 12CF719841E46665046F3E95 /* Frameworks */, + 1236373726C70594517914E9 /* Products */, + 593C7BBB72C50DE2211447BA /* Projects */, + ); + name = "testrendertarget"; + sourceTree = ""; + }; + 0E314AD426492160672949A2 /* test */ = { + isa = PBXGroup; + children = ( + 3D377B2F758301FB3EE53E1E /* testrendertarget.c */, + ); + name = "test"; + sourceTree = ""; + }; + 12CF719841E46665046F3E95 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 65E944291E9579D473B31994 /* AudioToolbox.framework */, + 622318275C5B0EF65EC61AFD /* AudioUnit.framework */, + 07CC15F06B1E09D103A97BCF /* Cocoa.framework */, + 02892BC34C873ECA4BD25839 /* CoreAudio.framework */, + 4B7F14644F8011D956DE2051 /* IOKit.framework */, + 452655000EBA59503EF420A0 /* Carbon.framework */, + 308856AD13007A0847B90197 /* ForceFeedback.framework */, + 30B350842E226D2F36C90784 /* CoreFoundation.framework */, + 0D7875D9299727716BC76549 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1236373726C70594517914E9 /* Products */ = { + isa = PBXGroup; + children = ( + 2C727B1464A05D8628A65406 /* testrendertarget */, + ); + name = "Products"; + sourceTree = ""; + }; + 593C7BBB72C50DE2211447BA /* Projects */ = { + isa = PBXGroup; + children = ( + 42D156B9499913F169B57314 /* SDL2main.xcodeproj */, + 134322956CCC6439154A3F0E /* SDL2test.xcodeproj */, + 72532B8E33703B3E07570B89 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 55097AE10B0B20BD6A302F28 /* Products */ = { + isa = PBXGroup; + children = ( + 56767874260E1325074412DF /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 6D5572D6669077FD15BB4226 /* Products */ = { + isa = PBXGroup; + children = ( + 482733D23FB6544709C50ED4 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 4940288F4A214C0F2DA54FF7 /* Products */ = { + isa = PBXGroup; + children = ( + 59D2230B5A0B1CDE43107EEF /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 65143E696F3D32C92E185878 /* testrendertarget */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1FEF3F326E341A4274F33683 /* Build configuration list for PBXNativeTarget "testrendertarget" */; + buildPhases = ( + 004E1202473233B004CF3DBA /* Resources */, + 36BC22F924372FD8195A7A55 /* Sources */, + 182F540A002D452A74910B72 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 7C8910967C946E6201153F3D /* PBXTargetDependency */, + 1A252909129B03C27273049A /* PBXTargetDependency */, + 553675717DDC133503AC233F /* PBXTargetDependency */, + ); + name = "testrendertarget"; + productInstallPath = "$(HOME)/bin"; + productName = "testrendertarget"; + productReference = 2C727B1464A05D8628A65406 /* testrendertarget */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendertarget" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 0E822AD7464B6D584977305A /* testrendertarget */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 55097AE10B0B20BD6A302F28 /* Products */; + ProjectRef = 42D156B9499913F169B57314 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 6D5572D6669077FD15BB4226 /* Products */; + ProjectRef = 134322956CCC6439154A3F0E /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 4940288F4A214C0F2DA54FF7 /* Products */; + ProjectRef = 72532B8E33703B3E07570B89 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 65143E696F3D32C92E185878 /* testrendertarget */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 56767874260E1325074412DF /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 27766928021C033336E5032B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 482733D23FB6544709C50ED4 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 74BB51AB6C52216E68215FCE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 59D2230B5A0B1CDE43107EEF /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7C3932CF473920007BED14B6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 004E1202473233B004CF3DBA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 36BC22F924372FD8195A7A55 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3BDE770E382742407C9C7275 /* testrendertarget.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 7C8910967C946E6201153F3D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0254080707BB2E0C50006C25 /* PBXContainerItemProxy */; + }; + 1A252909129B03C27273049A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 4EDA545541D53C84205B592B /* PBXContainerItemProxy */; + }; + 553675717DDC133503AC233F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 396733C34AF07D6F3CBD30D2 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 720F444D1EE3087071D6296C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Debug Universal"; + }; + 575813D33EF752B42F4B1FDE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Debug Native"; + }; + 0BD15545445C1F2558C66013 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Release Universal"; + }; + 61DD770A5FF844034B705E59 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Release Native"; + }; + 77ED6AEC477D1A0B6DAD3671 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 507826301DEE793106690AF3 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 02F6008057A6739429672D3A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 38E023561EA90EBE187269E5 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1FEF3F326E341A4274F33683 /* Build configuration list for PBXNativeTarget "testrendertarget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 720F444D1EE3087071D6296C /* Debug Universal */, + 575813D33EF752B42F4B1FDE /* Debug Native */, + 0BD15545445C1F2558C66013 /* Release Universal */, + 61DD770A5FF844034B705E59 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendertarget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77ED6AEC477D1A0B6DAD3671 /* Debug Universal */, + 507826301DEE793106690AF3 /* Debug Native */, + 02F6008057A6739429672D3A /* Release Universal */, + 38E023561EA90EBE187269E5 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testresample/testresample.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testresample/testresample.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..62507d6433 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testresample/testresample.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 76BF146D2915361C206609F5 /* testresample.c in Sources */ = {isa = PBXBuildFile; fileRef = 569306C5153013C8469245DA /* testresample.c */; }; + 574A7ADD7E8D6164004D704D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 74113BD1382E5DF879DF5182 /* AudioToolbox.framework */; }; + 4779101031F434B778E65448 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CA768C01B3407D961E44088 /* AudioUnit.framework */; }; + 419215986BFB4528763B3B70 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DBC704556B47843205405CA /* Cocoa.framework */; }; + 35F37D307ECD6C7032882DAA /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C5577F93D2C3BC657F133C4 /* CoreAudio.framework */; }; + 0C9870DA331B3DB67AC874CE /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B09143813350D77182A749B /* IOKit.framework */; }; + 27DE098722F061A277AE67C1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1238352C09A1295D46AF0F41 /* Carbon.framework */; }; + 4CB3298851D12A615E5544B1 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68FA231E3B7D0CEE1331190D /* ForceFeedback.framework */; }; + 530846550776061B08E50193 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45D6167562824A0E6F3332F2 /* CoreFoundation.framework */; }; + 088C4D0339B466941438209F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62094A9101C3606448CD26CB /* OpenGL.framework */; }; + 5D985F333D3E54D0559F53F0 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 74FE741E090E329A57072A76 /* libSDL2main.a */; }; + 7E991A6635F84F1C4A4B12A5 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 36C16BB401BA7F296E737694 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 00C73F06453266556CA1778F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 280C41556E9D2C0915937CD8 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 568F66C878FE1FB55D4657C9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 280C41556E9D2C0915937CD8 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 6C7E7391621159C07402679C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57F740F5173813BD71B0085B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 54654C1A475E706257ED1B6D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57F740F5173813BD71B0085B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 569306C5153013C8469245DA /* testresample.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testresample.c"; path = "../../../../../test/testresample.c"; sourceTree = ""; }; + 74113BD1382E5DF879DF5182 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0CA768C01B3407D961E44088 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 6DBC704556B47843205405CA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 4C5577F93D2C3BC657F133C4 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 2B09143813350D77182A749B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 1238352C09A1295D46AF0F41 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 68FA231E3B7D0CEE1331190D /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 45D6167562824A0E6F3332F2 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 62094A9101C3606448CD26CB /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4D3A34FC368C51A554200429 /* testresample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testresample"; path = "testresample"; sourceTree = BUILT_PRODUCTS_DIR; }; + 280C41556E9D2C0915937CD8 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 57F740F5173813BD71B0085B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0C6D72FC0160642278964596 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 574A7ADD7E8D6164004D704D /* AudioToolbox.framework in Frameworks */, + 4779101031F434B778E65448 /* AudioUnit.framework in Frameworks */, + 419215986BFB4528763B3B70 /* Cocoa.framework in Frameworks */, + 35F37D307ECD6C7032882DAA /* CoreAudio.framework in Frameworks */, + 0C9870DA331B3DB67AC874CE /* IOKit.framework in Frameworks */, + 27DE098722F061A277AE67C1 /* Carbon.framework in Frameworks */, + 4CB3298851D12A615E5544B1 /* ForceFeedback.framework in Frameworks */, + 530846550776061B08E50193 /* CoreFoundation.framework in Frameworks */, + 088C4D0339B466941438209F /* OpenGL.framework in Frameworks */, + 5D985F333D3E54D0559F53F0 /* libSDL2main.a in Frameworks */, + 7E991A6635F84F1C4A4B12A5 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 38433A46021F7BB00E9C34F4 /* testresample */ = { + isa = PBXGroup; + children = ( + 22107488396D576354857AD9 /* test */, + 413E0EE56103220D38B23A54 /* Frameworks */, + 546220AC13A77568176F35DB /* Products */, + 6B500C6028EF004738402E7B /* Projects */, + ); + name = "testresample"; + sourceTree = ""; + }; + 22107488396D576354857AD9 /* test */ = { + isa = PBXGroup; + children = ( + 569306C5153013C8469245DA /* testresample.c */, + ); + name = "test"; + sourceTree = ""; + }; + 413E0EE56103220D38B23A54 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 74113BD1382E5DF879DF5182 /* AudioToolbox.framework */, + 0CA768C01B3407D961E44088 /* AudioUnit.framework */, + 6DBC704556B47843205405CA /* Cocoa.framework */, + 4C5577F93D2C3BC657F133C4 /* CoreAudio.framework */, + 2B09143813350D77182A749B /* IOKit.framework */, + 1238352C09A1295D46AF0F41 /* Carbon.framework */, + 68FA231E3B7D0CEE1331190D /* ForceFeedback.framework */, + 45D6167562824A0E6F3332F2 /* CoreFoundation.framework */, + 62094A9101C3606448CD26CB /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 546220AC13A77568176F35DB /* Products */ = { + isa = PBXGroup; + children = ( + 4D3A34FC368C51A554200429 /* testresample */, + ); + name = "Products"; + sourceTree = ""; + }; + 6B500C6028EF004738402E7B /* Projects */ = { + isa = PBXGroup; + children = ( + 280C41556E9D2C0915937CD8 /* SDL2main.xcodeproj */, + 57F740F5173813BD71B0085B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 6D3E3A2E33280DEE1ECC645E /* Products */ = { + isa = PBXGroup; + children = ( + 74FE741E090E329A57072A76 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5D6E6E2804B31C6E253762F3 /* Products */ = { + isa = PBXGroup; + children = ( + 36C16BB401BA7F296E737694 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 252D5F4F68CC3DDF07376025 /* testresample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 16593BC10B1F2BC613B95D1B /* Build configuration list for PBXNativeTarget "testresample" */; + buildPhases = ( + 55394CA4557C63172A972246 /* Resources */, + 3E722EBA7478798B375B4376 /* Sources */, + 0C6D72FC0160642278964596 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 7D476F07532F53464DEC5572 /* PBXTargetDependency */, + 1D554DA605B14CC0617213FC /* PBXTargetDependency */, + ); + name = "testresample"; + productInstallPath = "$(HOME)/bin"; + productName = "testresample"; + productReference = 4D3A34FC368C51A554200429 /* testresample */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testresample" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 38433A46021F7BB00E9C34F4 /* testresample */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6D3E3A2E33280DEE1ECC645E /* Products */; + ProjectRef = 280C41556E9D2C0915937CD8 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5D6E6E2804B31C6E253762F3 /* Products */; + ProjectRef = 57F740F5173813BD71B0085B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 252D5F4F68CC3DDF07376025 /* testresample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 74FE741E090E329A57072A76 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 00C73F06453266556CA1778F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 36C16BB401BA7F296E737694 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 6C7E7391621159C07402679C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 55394CA4557C63172A972246 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 3E722EBA7478798B375B4376 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 76BF146D2915361C206609F5 /* testresample.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 7D476F07532F53464DEC5572 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 568F66C878FE1FB55D4657C9 /* PBXContainerItemProxy */; + }; + 1D554DA605B14CC0617213FC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 54654C1A475E706257ED1B6D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2BCC04AE3EA42FB868BE3848 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Debug Universal"; + }; + 47613B2D450016BD08C82BD2 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Debug Native"; + }; + 08F137D45C1375BC0FF8049B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Release Universal"; + }; + 09E6797930703AAC01A57EA4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Release Native"; + }; + 0CB700C516FC322D48077012 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 061009CA5EC043147F7A5963 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 6A5D37096F305DD241554511 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6B621C2B68195FF17E896D24 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 16593BC10B1F2BC613B95D1B /* Build configuration list for PBXNativeTarget "testresample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2BCC04AE3EA42FB868BE3848 /* Debug Universal */, + 47613B2D450016BD08C82BD2 /* Debug Native */, + 08F137D45C1375BC0FF8049B /* Release Universal */, + 09E6797930703AAC01A57EA4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testresample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0CB700C516FC322D48077012 /* Debug Universal */, + 061009CA5EC043147F7A5963 /* Debug Native */, + 6A5D37096F305DD241554511 /* Release Universal */, + 6B621C2B68195FF17E896D24 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testrumble/testrumble.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testrumble/testrumble.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..f5ce3c71ce --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testrumble/testrumble.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 124717442E7B35AD1B5650AA /* testrumble.c in Sources */ = {isa = PBXBuildFile; fileRef = 2DFA268370C4769A2F5C6FBF /* testrumble.c */; }; + 61B829E932DA38657B423F6F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69D74DF941656C4010E27051 /* AudioToolbox.framework */; }; + 1B80799E29AE683A561D2DB4 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 311E40904AC82FEF1E0024D6 /* AudioUnit.framework */; }; + 11EA2EBD273E1774610E1D63 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C95AF30CDE6D6F180D121E /* Cocoa.framework */; }; + 7BE64BB3746B20D13298487B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E802D674BE67D6516DE6B3F /* CoreAudio.framework */; }; + 23CF713628841182291540AB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 259850524A7B72D70AC5404B /* IOKit.framework */; }; + 56A91EB248F34A240B320DF0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54A81435574F3DD44B3B0EE2 /* Carbon.framework */; }; + 428016FB577550EB01B05486 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BCC0FAB5C6A6FEC10547B1D /* ForceFeedback.framework */; }; + 418474DD110F17102210799B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C0B68346EA0611D783518C1 /* CoreFoundation.framework */; }; + 25A83C2D5A4F2F0125416A3E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68D84A2617487AB2763930C2 /* OpenGL.framework */; }; + 1812540F49050067143E0FC1 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 24582C823A926F21777B61F6 /* libSDL2main.a */; }; + 2F3E1E6239A7419D35267477 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 44CF004538894E25185D1A41 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6E65490B7B3A5975262822EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6E17506B5A510B7674EE5296 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 088E3B4F509B188B0A18328D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6E17506B5A510B7674EE5296 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 700F1857105810F014265B7D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 720A00A215EA428D644D3680 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 05540490337C51A5407A38F3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 720A00A215EA428D644D3680 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2DFA268370C4769A2F5C6FBF /* testrumble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrumble.c"; path = "../../../../../test/testrumble.c"; sourceTree = ""; }; + 69D74DF941656C4010E27051 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 311E40904AC82FEF1E0024D6 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 35C95AF30CDE6D6F180D121E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5E802D674BE67D6516DE6B3F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 259850524A7B72D70AC5404B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 54A81435574F3DD44B3B0EE2 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 2BCC0FAB5C6A6FEC10547B1D /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 4C0B68346EA0611D783518C1 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 68D84A2617487AB2763930C2 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 42820EA2474110E017AC3089 /* testrumble */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrumble"; path = "testrumble"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6E17506B5A510B7674EE5296 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 720A00A215EA428D644D3680 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 20B41A2F07B5262F6DAE7A4A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 61B829E932DA38657B423F6F /* AudioToolbox.framework in Frameworks */, + 1B80799E29AE683A561D2DB4 /* AudioUnit.framework in Frameworks */, + 11EA2EBD273E1774610E1D63 /* Cocoa.framework in Frameworks */, + 7BE64BB3746B20D13298487B /* CoreAudio.framework in Frameworks */, + 23CF713628841182291540AB /* IOKit.framework in Frameworks */, + 56A91EB248F34A240B320DF0 /* Carbon.framework in Frameworks */, + 428016FB577550EB01B05486 /* ForceFeedback.framework in Frameworks */, + 418474DD110F17102210799B /* CoreFoundation.framework in Frameworks */, + 25A83C2D5A4F2F0125416A3E /* OpenGL.framework in Frameworks */, + 1812540F49050067143E0FC1 /* libSDL2main.a in Frameworks */, + 2F3E1E6239A7419D35267477 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 794130C91C19308D27BE6658 /* testrumble */ = { + isa = PBXGroup; + children = ( + 1DA903B35E6944BC40C2237C /* test */, + 5E6D7FF211280064452F49F0 /* Frameworks */, + 3B4C21335B6D0F6F411E4001 /* Products */, + 30BA1FFF51161B0E3FC0130B /* Projects */, + ); + name = "testrumble"; + sourceTree = ""; + }; + 1DA903B35E6944BC40C2237C /* test */ = { + isa = PBXGroup; + children = ( + 2DFA268370C4769A2F5C6FBF /* testrumble.c */, + ); + name = "test"; + sourceTree = ""; + }; + 5E6D7FF211280064452F49F0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 69D74DF941656C4010E27051 /* AudioToolbox.framework */, + 311E40904AC82FEF1E0024D6 /* AudioUnit.framework */, + 35C95AF30CDE6D6F180D121E /* Cocoa.framework */, + 5E802D674BE67D6516DE6B3F /* CoreAudio.framework */, + 259850524A7B72D70AC5404B /* IOKit.framework */, + 54A81435574F3DD44B3B0EE2 /* Carbon.framework */, + 2BCC0FAB5C6A6FEC10547B1D /* ForceFeedback.framework */, + 4C0B68346EA0611D783518C1 /* CoreFoundation.framework */, + 68D84A2617487AB2763930C2 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 3B4C21335B6D0F6F411E4001 /* Products */ = { + isa = PBXGroup; + children = ( + 42820EA2474110E017AC3089 /* testrumble */, + ); + name = "Products"; + sourceTree = ""; + }; + 30BA1FFF51161B0E3FC0130B /* Projects */ = { + isa = PBXGroup; + children = ( + 6E17506B5A510B7674EE5296 /* SDL2main.xcodeproj */, + 720A00A215EA428D644D3680 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 440676EE151B3F9F60F84413 /* Products */ = { + isa = PBXGroup; + children = ( + 24582C823A926F21777B61F6 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 07E146715659099073561E9D /* Products */ = { + isa = PBXGroup; + children = ( + 44CF004538894E25185D1A41 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0A26695A3BA775F1544E573C /* testrumble */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3209004474375DDF74242210 /* Build configuration list for PBXNativeTarget "testrumble" */; + buildPhases = ( + 525E1C4500F9782E333F6D5C /* Resources */, + 464C671A0921752D69745B41 /* Sources */, + 20B41A2F07B5262F6DAE7A4A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 6C6169043D7162D877D74ED8 /* PBXTargetDependency */, + 0EA714145C373CC53B724481 /* PBXTargetDependency */, + ); + name = "testrumble"; + productInstallPath = "$(HOME)/bin"; + productName = "testrumble"; + productReference = 42820EA2474110E017AC3089 /* testrumble */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrumble" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 794130C91C19308D27BE6658 /* testrumble */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 440676EE151B3F9F60F84413 /* Products */; + ProjectRef = 6E17506B5A510B7674EE5296 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 07E146715659099073561E9D /* Products */; + ProjectRef = 720A00A215EA428D644D3680 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 0A26695A3BA775F1544E573C /* testrumble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 24582C823A926F21777B61F6 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6E65490B7B3A5975262822EF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 44CF004538894E25185D1A41 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 700F1857105810F014265B7D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 525E1C4500F9782E333F6D5C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 464C671A0921752D69745B41 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 124717442E7B35AD1B5650AA /* testrumble.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6C6169043D7162D877D74ED8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 088E3B4F509B188B0A18328D /* PBXContainerItemProxy */; + }; + 0EA714145C373CC53B724481 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 05540490337C51A5407A38F3 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 6B782B6457187E425846665A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Debug Universal"; + }; + 2EC265311617661F38B64480 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Debug Native"; + }; + 04C401E9721021A577592F56 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Release Universal"; + }; + 453C130F733140BF75E919C3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Release Native"; + }; + 31B864D7174418902FAF48D9 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 3FA1669563B47E9C34373217 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 744E499246E639F1161F0573 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6AB0796B790B7BFD4BF8251B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3209004474375DDF74242210 /* Build configuration list for PBXNativeTarget "testrumble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6B782B6457187E425846665A /* Debug Universal */, + 2EC265311617661F38B64480 /* Debug Native */, + 04C401E9721021A577592F56 /* Release Universal */, + 453C130F733140BF75E919C3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrumble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 31B864D7174418902FAF48D9 /* Debug Universal */, + 3FA1669563B47E9C34373217 /* Debug Native */, + 744E499246E639F1161F0573 /* Release Universal */, + 6AB0796B790B7BFD4BF8251B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testscale/testscale.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testscale/testscale.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..f71fa2b32d --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testscale/testscale.xcodeproj/project.pbxproj @@ -0,0 +1,517 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5C7E74D2428F5D0E5D255890 /* testscale.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FD502B61D5F67B264693032 /* testscale.c */; }; + 008274C95424081325DA48B0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FF4030D762D287614DB4655 /* AudioToolbox.framework */; }; + 71D766A1037F09BE4526683F /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 370C097F7251551E65CE6817 /* AudioUnit.framework */; }; + 1D58080302756DC939006C33 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DB572FF7F6B6C1B14CE00D6 /* Cocoa.framework */; }; + 259C326672FE134A64C57099 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 355F15261C243D04044C2710 /* CoreAudio.framework */; }; + 03B04B0970D35360661A3815 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 628E6EE669DA090270846F6F /* IOKit.framework */; }; + 28F11C2C3DA535A173D823ED /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F7D0CDB3AC832BF221A6264 /* Carbon.framework */; }; + 153F06D869C50ADC1A3D574D /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41803CB46328617360EB7126 /* ForceFeedback.framework */; }; + 51D03EF609265DE579AD09E6 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D2C18455CC51ECC78C55220 /* CoreFoundation.framework */; }; + 47B33B7877E42FF4459D73DF /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F5C040571280FD63B6900AA /* OpenGL.framework */; }; + 7D61189049B1252270922C8B /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BC5668C2655352934CE638D /* libSDL2main.a */; }; + 76EE0DCB338C4C126C1918E2 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F1704E222587110735D0416 /* libSDL2test.a */; }; + 50D176EF72035A626E550F7E /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F2334F36CCA6E620E7E104D /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 65CC46BD4FDF3CCC0AE631B2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 17F90FFD39896CA2220E62DA /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 5478435D3A932BF85FEF5978 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 17F90FFD39896CA2220E62DA /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 2CAF4B5D7DDE7D0364B5662E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 67B07D395C536E7D041136EA /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 695812884A4E4E67742C271C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 67B07D395C536E7D041136EA /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 03973B8B23E47C71118E0561 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 319B4AC355290E8B7988714D /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 614474296E7608606F001FE6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 319B4AC355290E8B7988714D /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0FD502B61D5F67B264693032 /* testscale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testscale.c"; path = "../../../../../test/testscale.c"; sourceTree = ""; }; + 1FF4030D762D287614DB4655 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 370C097F7251551E65CE6817 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3DB572FF7F6B6C1B14CE00D6 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 355F15261C243D04044C2710 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 628E6EE669DA090270846F6F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 7F7D0CDB3AC832BF221A6264 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 41803CB46328617360EB7126 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3D2C18455CC51ECC78C55220 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 7F5C040571280FD63B6900AA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 1CDD1F2D74ED225651426E4F /* testscale */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testscale"; path = "testscale"; sourceTree = BUILT_PRODUCTS_DIR; }; + 17F90FFD39896CA2220E62DA /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 67B07D395C536E7D041136EA /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 319B4AC355290E8B7988714D /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 42DC02D65D8203E2001E529F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 008274C95424081325DA48B0 /* AudioToolbox.framework in Frameworks */, + 71D766A1037F09BE4526683F /* AudioUnit.framework in Frameworks */, + 1D58080302756DC939006C33 /* Cocoa.framework in Frameworks */, + 259C326672FE134A64C57099 /* CoreAudio.framework in Frameworks */, + 03B04B0970D35360661A3815 /* IOKit.framework in Frameworks */, + 28F11C2C3DA535A173D823ED /* Carbon.framework in Frameworks */, + 153F06D869C50ADC1A3D574D /* ForceFeedback.framework in Frameworks */, + 51D03EF609265DE579AD09E6 /* CoreFoundation.framework in Frameworks */, + 47B33B7877E42FF4459D73DF /* OpenGL.framework in Frameworks */, + 7D61189049B1252270922C8B /* libSDL2main.a in Frameworks */, + 76EE0DCB338C4C126C1918E2 /* libSDL2test.a in Frameworks */, + 50D176EF72035A626E550F7E /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2D9A6CE93F294BE420CB2D03 /* testscale */ = { + isa = PBXGroup; + children = ( + 5A2617995C0A195D51F46D9B /* test */, + 62C711C941A76D5919A5331A /* Frameworks */, + 45C13CF5123C598A0ECC1CD4 /* Products */, + 568416000E5979CE4A9B07B5 /* Projects */, + ); + name = "testscale"; + sourceTree = ""; + }; + 5A2617995C0A195D51F46D9B /* test */ = { + isa = PBXGroup; + children = ( + 0FD502B61D5F67B264693032 /* testscale.c */, + ); + name = "test"; + sourceTree = ""; + }; + 62C711C941A76D5919A5331A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1FF4030D762D287614DB4655 /* AudioToolbox.framework */, + 370C097F7251551E65CE6817 /* AudioUnit.framework */, + 3DB572FF7F6B6C1B14CE00D6 /* Cocoa.framework */, + 355F15261C243D04044C2710 /* CoreAudio.framework */, + 628E6EE669DA090270846F6F /* IOKit.framework */, + 7F7D0CDB3AC832BF221A6264 /* Carbon.framework */, + 41803CB46328617360EB7126 /* ForceFeedback.framework */, + 3D2C18455CC51ECC78C55220 /* CoreFoundation.framework */, + 7F5C040571280FD63B6900AA /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 45C13CF5123C598A0ECC1CD4 /* Products */ = { + isa = PBXGroup; + children = ( + 1CDD1F2D74ED225651426E4F /* testscale */, + ); + name = "Products"; + sourceTree = ""; + }; + 568416000E5979CE4A9B07B5 /* Projects */ = { + isa = PBXGroup; + children = ( + 17F90FFD39896CA2220E62DA /* SDL2main.xcodeproj */, + 67B07D395C536E7D041136EA /* SDL2test.xcodeproj */, + 319B4AC355290E8B7988714D /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 094C0168673D01ED02DA6559 /* Products */ = { + isa = PBXGroup; + children = ( + 0BC5668C2655352934CE638D /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 43BF4F6033DB2F443E3B2EB0 /* Products */ = { + isa = PBXGroup; + children = ( + 3F1704E222587110735D0416 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 2D3735827E174E0A1E0E426D /* Products */ = { + isa = PBXGroup; + children = ( + 1F2334F36CCA6E620E7E104D /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0EC34CFC45CC683D7EBB5540 /* testscale */ = { + isa = PBXNativeTarget; + buildConfigurationList = 25AD405002C3531D24703F82 /* Build configuration list for PBXNativeTarget "testscale" */; + buildPhases = ( + 199A59146CA641AA22B930A3 /* Resources */, + 208462FC4C8275FF6B437D23 /* Sources */, + 42DC02D65D8203E2001E529F /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 6C2E5EFD6B391AFE29F74168 /* PBXTargetDependency */, + 40A9274C023D14501F1E0B09 /* PBXTargetDependency */, + 739B03B657397C6C3BBA4B10 /* PBXTargetDependency */, + ); + name = "testscale"; + productInstallPath = "$(HOME)/bin"; + productName = "testscale"; + productReference = 1CDD1F2D74ED225651426E4F /* testscale */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testscale" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2D9A6CE93F294BE420CB2D03 /* testscale */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 094C0168673D01ED02DA6559 /* Products */; + ProjectRef = 17F90FFD39896CA2220E62DA /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 43BF4F6033DB2F443E3B2EB0 /* Products */; + ProjectRef = 67B07D395C536E7D041136EA /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 2D3735827E174E0A1E0E426D /* Products */; + ProjectRef = 319B4AC355290E8B7988714D /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 0EC34CFC45CC683D7EBB5540 /* testscale */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 0BC5668C2655352934CE638D /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 65CC46BD4FDF3CCC0AE631B2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3F1704E222587110735D0416 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 2CAF4B5D7DDE7D0364B5662E /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1F2334F36CCA6E620E7E104D /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 03973B8B23E47C71118E0561 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 199A59146CA641AA22B930A3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 208462FC4C8275FF6B437D23 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5C7E74D2428F5D0E5D255890 /* testscale.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6C2E5EFD6B391AFE29F74168 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5478435D3A932BF85FEF5978 /* PBXContainerItemProxy */; + }; + 40A9274C023D14501F1E0B09 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 695812884A4E4E67742C271C /* PBXContainerItemProxy */; + }; + 739B03B657397C6C3BBA4B10 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 614474296E7608606F001FE6 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 38D3412E523F2FF65E750295 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Debug Universal"; + }; + 7BB4091A16586ED03AB36A59 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Debug Native"; + }; + 16FB63191DCC7389511770EA /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Release Universal"; + }; + 067C640A78A9459B4C4A1F7F /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Release Native"; + }; + 42050D2904E37ACF6D4A536A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 7EA309485CBB312912310BE7 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 2B5E48ED6C3C057621381841 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 051B6D755DB943992EED6558 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 25AD405002C3531D24703F82 /* Build configuration list for PBXNativeTarget "testscale" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 38D3412E523F2FF65E750295 /* Debug Universal */, + 7BB4091A16586ED03AB36A59 /* Debug Native */, + 16FB63191DCC7389511770EA /* Release Universal */, + 067C640A78A9459B4C4A1F7F /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testscale" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 42050D2904E37ACF6D4A536A /* Debug Universal */, + 7EA309485CBB312912310BE7 /* Debug Native */, + 2B5E48ED6C3C057621381841 /* Release Universal */, + 051B6D755DB943992EED6558 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testsem/testsem.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testsem/testsem.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..f93e65c5fa --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testsem/testsem.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 23D727C066BC73B378660B91 /* testsem.c in Sources */ = {isa = PBXBuildFile; fileRef = 3DC63D4043E05E614C373246 /* testsem.c */; }; + 79C46DFD3D8051E940E505D3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D4B71C230540E5312A67585 /* AudioToolbox.framework */; }; + 68DE767B074D5196705C5DF9 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64486EA133A1171D30D05825 /* AudioUnit.framework */; }; + 2E1E631E63EF68CE3D6A179D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E42372420093EBA66A64A47 /* Cocoa.framework */; }; + 39FC72F1593359D42D10293E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 746C05F74057432023DF08F3 /* CoreAudio.framework */; }; + 79EE18E441E46B8A5F440449 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FD805DF7FB835B5371B626B /* IOKit.framework */; }; + 445812F25E9F286875527298 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E22DCD04214F5B1DB15F6C /* Carbon.framework */; }; + 00332AC262B35C453AE46753 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B15710922315C8E0DF36B0C /* ForceFeedback.framework */; }; + 7CE41CCD694C08B66D543266 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F0F147E6D2D32883850181A /* CoreFoundation.framework */; }; + 46AF197E50572E3056B2526C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61DD30B97AB666044A674524 /* OpenGL.framework */; }; + 1E623EDF37066D130CF14144 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 77011CA06E2E371F0E1747D3 /* libSDL2main.a */; }; + 71EA42207B42562F5E850747 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 69346C0D7A5A6336006B1CAE /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5D8150C16B4F49401E2B334B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 34CB05B5562E70E84B1975BD /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 1B10591925DA12883FA50675 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 34CB05B5562E70E84B1975BD /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 339641237FD2473A5E7362AA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0FB06F434A7D007B1B2344F7 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 0B0E63E30633081752D94589 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0FB06F434A7D007B1B2344F7 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3DC63D4043E05E614C373246 /* testsem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testsem.c"; path = "../../../../../test/testsem.c"; sourceTree = ""; }; + 6D4B71C230540E5312A67585 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 64486EA133A1171D30D05825 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0E42372420093EBA66A64A47 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 746C05F74057432023DF08F3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 5FD805DF7FB835B5371B626B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 70E22DCD04214F5B1DB15F6C /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 6B15710922315C8E0DF36B0C /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 1F0F147E6D2D32883850181A /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 61DD30B97AB666044A674524 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 740F3E5D0BEF048353CF5D3D /* testsem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testsem"; path = "testsem"; sourceTree = BUILT_PRODUCTS_DIR; }; + 34CB05B5562E70E84B1975BD /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 0FB06F434A7D007B1B2344F7 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4D0337447364434E68AC7C13 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 79C46DFD3D8051E940E505D3 /* AudioToolbox.framework in Frameworks */, + 68DE767B074D5196705C5DF9 /* AudioUnit.framework in Frameworks */, + 2E1E631E63EF68CE3D6A179D /* Cocoa.framework in Frameworks */, + 39FC72F1593359D42D10293E /* CoreAudio.framework in Frameworks */, + 79EE18E441E46B8A5F440449 /* IOKit.framework in Frameworks */, + 445812F25E9F286875527298 /* Carbon.framework in Frameworks */, + 00332AC262B35C453AE46753 /* ForceFeedback.framework in Frameworks */, + 7CE41CCD694C08B66D543266 /* CoreFoundation.framework in Frameworks */, + 46AF197E50572E3056B2526C /* OpenGL.framework in Frameworks */, + 1E623EDF37066D130CF14144 /* libSDL2main.a in Frameworks */, + 71EA42207B42562F5E850747 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7BBF483138F638271C0B3153 /* testsem */ = { + isa = PBXGroup; + children = ( + 4F2912F91AF36CB64E623EFC /* test */, + 1764508366145E0400845D87 /* Frameworks */, + 59544DA468A5578103583F02 /* Products */, + 4AEA54AE768D59E8166C3D28 /* Projects */, + ); + name = "testsem"; + sourceTree = ""; + }; + 4F2912F91AF36CB64E623EFC /* test */ = { + isa = PBXGroup; + children = ( + 3DC63D4043E05E614C373246 /* testsem.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1764508366145E0400845D87 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6D4B71C230540E5312A67585 /* AudioToolbox.framework */, + 64486EA133A1171D30D05825 /* AudioUnit.framework */, + 0E42372420093EBA66A64A47 /* Cocoa.framework */, + 746C05F74057432023DF08F3 /* CoreAudio.framework */, + 5FD805DF7FB835B5371B626B /* IOKit.framework */, + 70E22DCD04214F5B1DB15F6C /* Carbon.framework */, + 6B15710922315C8E0DF36B0C /* ForceFeedback.framework */, + 1F0F147E6D2D32883850181A /* CoreFoundation.framework */, + 61DD30B97AB666044A674524 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 59544DA468A5578103583F02 /* Products */ = { + isa = PBXGroup; + children = ( + 740F3E5D0BEF048353CF5D3D /* testsem */, + ); + name = "Products"; + sourceTree = ""; + }; + 4AEA54AE768D59E8166C3D28 /* Projects */ = { + isa = PBXGroup; + children = ( + 34CB05B5562E70E84B1975BD /* SDL2main.xcodeproj */, + 0FB06F434A7D007B1B2344F7 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 659660EA44F207D27BFC71D3 /* Products */ = { + isa = PBXGroup; + children = ( + 77011CA06E2E371F0E1747D3 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 43C27A16721169F641C46197 /* Products */ = { + isa = PBXGroup; + children = ( + 69346C0D7A5A6336006B1CAE /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 522E4E093832135C2C4025DA /* testsem */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7E62068E021B5BEA74A939B4 /* Build configuration list for PBXNativeTarget "testsem" */; + buildPhases = ( + 116843D511AA349D4B307059 /* Resources */, + 0F912A1002BD727B18D571CE /* Sources */, + 4D0337447364434E68AC7C13 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 222C22526E4E4A673B3C04E0 /* PBXTargetDependency */, + 2E2D469655C32E386F1417AB /* PBXTargetDependency */, + ); + name = "testsem"; + productInstallPath = "$(HOME)/bin"; + productName = "testsem"; + productReference = 740F3E5D0BEF048353CF5D3D /* testsem */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsem" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 7BBF483138F638271C0B3153 /* testsem */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 659660EA44F207D27BFC71D3 /* Products */; + ProjectRef = 34CB05B5562E70E84B1975BD /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 43C27A16721169F641C46197 /* Products */; + ProjectRef = 0FB06F434A7D007B1B2344F7 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 522E4E093832135C2C4025DA /* testsem */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 77011CA06E2E371F0E1747D3 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5D8150C16B4F49401E2B334B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 69346C0D7A5A6336006B1CAE /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 339641237FD2473A5E7362AA /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 116843D511AA349D4B307059 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0F912A1002BD727B18D571CE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 23D727C066BC73B378660B91 /* testsem.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 222C22526E4E4A673B3C04E0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 1B10591925DA12883FA50675 /* PBXContainerItemProxy */; + }; + 2E2D469655C32E386F1417AB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0B0E63E30633081752D94589 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7048280F2E9E372505836FCB /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Debug Universal"; + }; + 157B62A8427F2EF5665049AA /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Debug Native"; + }; + 36E32B38286B3C5915295CAB /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Release Universal"; + }; + 38FB05EE6260400735ED5DD2 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Release Native"; + }; + 2D593B3A0AA5576E212E6396 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 64490E226FA359BF46AA4F5A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 195A6625383F595B24581B85 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 2C4A3A796A7D45AD08F00038 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7E62068E021B5BEA74A939B4 /* Build configuration list for PBXNativeTarget "testsem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7048280F2E9E372505836FCB /* Debug Universal */, + 157B62A8427F2EF5665049AA /* Debug Native */, + 36E32B38286B3C5915295CAB /* Release Universal */, + 38FB05EE6260400735ED5DD2 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2D593B3A0AA5576E212E6396 /* Debug Universal */, + 64490E226FA359BF46AA4F5A /* Debug Native */, + 195A6625383F595B24581B85 /* Release Universal */, + 2C4A3A796A7D45AD08F00038 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testshader/testshader.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testshader/testshader.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..d676b84086 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testshader/testshader.xcodeproj/project.pbxproj @@ -0,0 +1,478 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 23D051A629F740B60E253CB9 /* testshader.c in Sources */ = {isa = PBXBuildFile; fileRef = 134C74B1427128EE60A172E7 /* testshader.c */; }; + 382D14F447586A74066013BE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F9638AB656E238065CF7E96 /* AudioToolbox.framework */; }; + 41763EBD74246C48267307B9 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AF068F34B7D000811A2404F /* AudioUnit.framework */; }; + 79EE2FCC7F54000829121C9F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2573329901D62DDB06FE117A /* Cocoa.framework */; }; + 3C252B7B191554CD7DAB0703 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15167E334C2E06C906711189 /* CoreAudio.framework */; }; + 40330C033C3E33FB54E51BB7 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C89263646260FAB3D7A1961 /* IOKit.framework */; }; + 5C8E6FC6322C12CB7A8F586D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21D75E275FDC0F5D55947B75 /* Carbon.framework */; }; + 3F7D384D5E783FAC44A80F2E /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65AC24DF57DF0F113C531E41 /* ForceFeedback.framework */; }; + 29FD532E2B3819D645AD0812 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 157D6BA86B493563050D502A /* CoreFoundation.framework */; }; + 7A58360130FF499B1987103B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 590216181858482E648D0B1E /* OpenGL.framework */; }; + 399C6FFC268A2F921D0F53E3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 34C72A6A21902BF629147CCC /* libSDL2main.a */; }; + 58656ADB0ADE0DEA1C053C03 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C170FF352268D645B70248 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 07355230088E4BB107E96FAB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11894E51596031A03F2138F6 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 61552AFE1253241F7EE42C10 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 11894E51596031A03F2138F6 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 018502242167787D6CB76865 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70421877319763C546797101 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 004B43E464D82EA41DA413F5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70421877319763C546797101 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 134C74B1427128EE60A172E7 /* testshader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testshader.c"; path = "../../../../../test/testshader.c"; sourceTree = ""; }; + 2F9638AB656E238065CF7E96 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 5AF068F34B7D000811A2404F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 2573329901D62DDB06FE117A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 15167E334C2E06C906711189 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6C89263646260FAB3D7A1961 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 21D75E275FDC0F5D55947B75 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 65AC24DF57DF0F113C531E41 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 157D6BA86B493563050D502A /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 590216181858482E648D0B1E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4A8247A1301F68195E500DD7 /* testshader */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testshader"; path = "testshader"; sourceTree = BUILT_PRODUCTS_DIR; }; + 11894E51596031A03F2138F6 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 70421877319763C546797101 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 36233D85791E4B556C1151C9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 382D14F447586A74066013BE /* AudioToolbox.framework in Frameworks */, + 41763EBD74246C48267307B9 /* AudioUnit.framework in Frameworks */, + 79EE2FCC7F54000829121C9F /* Cocoa.framework in Frameworks */, + 3C252B7B191554CD7DAB0703 /* CoreAudio.framework in Frameworks */, + 40330C033C3E33FB54E51BB7 /* IOKit.framework in Frameworks */, + 5C8E6FC6322C12CB7A8F586D /* Carbon.framework in Frameworks */, + 3F7D384D5E783FAC44A80F2E /* ForceFeedback.framework in Frameworks */, + 29FD532E2B3819D645AD0812 /* CoreFoundation.framework in Frameworks */, + 7A58360130FF499B1987103B /* OpenGL.framework in Frameworks */, + 399C6FFC268A2F921D0F53E3 /* libSDL2main.a in Frameworks */, + 58656ADB0ADE0DEA1C053C03 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 65182F0C69806E635014632D /* testshader */ = { + isa = PBXGroup; + children = ( + 2D9925B750835F5F69B85B8B /* test */, + 52570C4B279F559944E13D28 /* Frameworks */, + 2DC4606B317D08903A3F278E /* Products */, + 7B763C5F3B38054104171266 /* Projects */, + ); + name = "testshader"; + sourceTree = ""; + }; + 2D9925B750835F5F69B85B8B /* test */ = { + isa = PBXGroup; + children = ( + 134C74B1427128EE60A172E7 /* testshader.c */, + ); + name = "test"; + sourceTree = ""; + }; + 52570C4B279F559944E13D28 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2F9638AB656E238065CF7E96 /* AudioToolbox.framework */, + 5AF068F34B7D000811A2404F /* AudioUnit.framework */, + 2573329901D62DDB06FE117A /* Cocoa.framework */, + 15167E334C2E06C906711189 /* CoreAudio.framework */, + 6C89263646260FAB3D7A1961 /* IOKit.framework */, + 21D75E275FDC0F5D55947B75 /* Carbon.framework */, + 65AC24DF57DF0F113C531E41 /* ForceFeedback.framework */, + 157D6BA86B493563050D502A /* CoreFoundation.framework */, + 590216181858482E648D0B1E /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 2DC4606B317D08903A3F278E /* Products */ = { + isa = PBXGroup; + children = ( + 4A8247A1301F68195E500DD7 /* testshader */, + ); + name = "Products"; + sourceTree = ""; + }; + 7B763C5F3B38054104171266 /* Projects */ = { + isa = PBXGroup; + children = ( + 11894E51596031A03F2138F6 /* SDL2main.xcodeproj */, + 70421877319763C546797101 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 3D3F7D1241E953EC457A6124 /* Products */ = { + isa = PBXGroup; + children = ( + 34C72A6A21902BF629147CCC /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 56B6477D64BC2B14331D4437 /* Products */ = { + isa = PBXGroup; + children = ( + 78C170FF352268D645B70248 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1E840B4F16662F9E4EA1340A /* testshader */ = { + isa = PBXNativeTarget; + buildConfigurationList = 07E569961E9411B33C5D286D /* Build configuration list for PBXNativeTarget "testshader" */; + buildPhases = ( + 45DF56211C7F58150ACC1409 /* Resources */, + 7DD46A8703460AFF1B131FC2 /* Sources */, + 36233D85791E4B556C1151C9 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 62FA1686515F68E611693F22 /* PBXTargetDependency */, + 65A271FB45ED68A608E264B5 /* PBXTargetDependency */, + ); + name = "testshader"; + productInstallPath = "$(HOME)/bin"; + productName = "testshader"; + productReference = 4A8247A1301F68195E500DD7 /* testshader */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshader" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 65182F0C69806E635014632D /* testshader */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 3D3F7D1241E953EC457A6124 /* Products */; + ProjectRef = 11894E51596031A03F2138F6 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 56B6477D64BC2B14331D4437 /* Products */; + ProjectRef = 70421877319763C546797101 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1E840B4F16662F9E4EA1340A /* testshader */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 34C72A6A21902BF629147CCC /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 07355230088E4BB107E96FAB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 78C170FF352268D645B70248 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 018502242167787D6CB76865 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 45DF56211C7F58150ACC1409 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 7DD46A8703460AFF1B131FC2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 23D051A629F740B60E253CB9 /* testshader.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 62FA1686515F68E611693F22 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 61552AFE1253241F7EE42C10 /* PBXContainerItemProxy */; + }; + 65A271FB45ED68A608E264B5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 004B43E464D82EA41DA413F5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 01D9087D534B7CE341305890 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Debug Universal"; + }; + 1202753D23397666358A010B /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Debug Native"; + }; + 4BAF54AF4A05157B5986250E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Release Universal"; + }; + 47257A7C1DA17473369B0F99 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Release Native"; + }; + 7B0D26586A397937134463E2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 25AC4C1D043159711F660C26 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 41AE249E2B16442B1A3254CE /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 07E771BF6D7201C0194804F6 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 07E569961E9411B33C5D286D /* Build configuration list for PBXNativeTarget "testshader" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01D9087D534B7CE341305890 /* Debug Universal */, + 1202753D23397666358A010B /* Debug Native */, + 4BAF54AF4A05157B5986250E /* Release Universal */, + 47257A7C1DA17473369B0F99 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshader" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7B0D26586A397937134463E2 /* Debug Universal */, + 25AC4C1D043159711F660C26 /* Debug Native */, + 41AE249E2B16442B1A3254CE /* Release Universal */, + 07E771BF6D7201C0194804F6 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testshape/testshape.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testshape/testshape.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..28c88508eb --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testshape/testshape.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 202628995578715C6F5637E6 /* testshape.c in Sources */ = {isa = PBXBuildFile; fileRef = 43E24949641949004B330CAE /* testshape.c */; }; + 788117C91E8415DC3321536A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D8592724162CF94B460B9D /* AudioToolbox.framework */; }; + 734A25BC7D5823D04BE7375C /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54547D3A0DBE4FA7056B51EC /* AudioUnit.framework */; }; + 17E42AF547993879442C3108 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B16756D762D04AD0DB22708 /* Cocoa.framework */; }; + 709954A2023777BB558545D2 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B036C48219E21265EE27992 /* CoreAudio.framework */; }; + 506A736657DC4736575E7CBF /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B5B25FF0A8330761456538E /* IOKit.framework */; }; + 77B3169B22CF6A4F73A303DA /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65B8302030B00C5A033F3E29 /* Carbon.framework */; }; + 45062A8B0E0322773F490BAB /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DA2C82465663C7424D4E3A /* ForceFeedback.framework */; }; + 17F2356A544A561848142CE1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FB9466E6DFA48E158636096 /* CoreFoundation.framework */; }; + 26D43E2850235FEA357A5E50 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 732B1B64571C2542457D1813 /* OpenGL.framework */; }; + 5FCF2AC22A4201B734B7756F /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 005F68A0073E7FFC7B8434D6 /* libSDL2main.a */; }; + 709156165A287C716B6339E5 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D1469BB087227AB70854EA9 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2384308443B135C947953CD0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 67120B7E04F779A22B45751D /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 00853D8C601C54567F116D02 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 67120B7E04F779A22B45751D /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 20520A1452E97A671C5A0639 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55AA1BF734016AF247A5433B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 1BA16A511E0B21FE310003A3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55AA1BF734016AF247A5433B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 43E24949641949004B330CAE /* testshape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testshape.c"; path = "../../../../../test/testshape.c"; sourceTree = ""; }; + 72D8592724162CF94B460B9D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 54547D3A0DBE4FA7056B51EC /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0B16756D762D04AD0DB22708 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 3B036C48219E21265EE27992 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1B5B25FF0A8330761456538E /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 65B8302030B00C5A033F3E29 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 11DA2C82465663C7424D4E3A /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 0FB9466E6DFA48E158636096 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 732B1B64571C2542457D1813 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5C3739896E223879365B4DE4 /* testshape */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testshape"; path = "testshape"; sourceTree = BUILT_PRODUCTS_DIR; }; + 67120B7E04F779A22B45751D /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 55AA1BF734016AF247A5433B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3E8C126F5ABF48AB57426F58 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 788117C91E8415DC3321536A /* AudioToolbox.framework in Frameworks */, + 734A25BC7D5823D04BE7375C /* AudioUnit.framework in Frameworks */, + 17E42AF547993879442C3108 /* Cocoa.framework in Frameworks */, + 709954A2023777BB558545D2 /* CoreAudio.framework in Frameworks */, + 506A736657DC4736575E7CBF /* IOKit.framework in Frameworks */, + 77B3169B22CF6A4F73A303DA /* Carbon.framework in Frameworks */, + 45062A8B0E0322773F490BAB /* ForceFeedback.framework in Frameworks */, + 17F2356A544A561848142CE1 /* CoreFoundation.framework in Frameworks */, + 26D43E2850235FEA357A5E50 /* OpenGL.framework in Frameworks */, + 5FCF2AC22A4201B734B7756F /* libSDL2main.a in Frameworks */, + 709156165A287C716B6339E5 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5D7D4BAD6D647D711B6D19CE /* testshape */ = { + isa = PBXGroup; + children = ( + 5CD208E04E0E7A0851C371DC /* test */, + 6AE30425336078A52B7B221A /* Frameworks */, + 766D2A792C7D7D73113560E7 /* Products */, + 02AE6DE75BDE0A34746B344D /* Projects */, + ); + name = "testshape"; + sourceTree = ""; + }; + 5CD208E04E0E7A0851C371DC /* test */ = { + isa = PBXGroup; + children = ( + 43E24949641949004B330CAE /* testshape.c */, + ); + name = "test"; + sourceTree = ""; + }; + 6AE30425336078A52B7B221A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 72D8592724162CF94B460B9D /* AudioToolbox.framework */, + 54547D3A0DBE4FA7056B51EC /* AudioUnit.framework */, + 0B16756D762D04AD0DB22708 /* Cocoa.framework */, + 3B036C48219E21265EE27992 /* CoreAudio.framework */, + 1B5B25FF0A8330761456538E /* IOKit.framework */, + 65B8302030B00C5A033F3E29 /* Carbon.framework */, + 11DA2C82465663C7424D4E3A /* ForceFeedback.framework */, + 0FB9466E6DFA48E158636096 /* CoreFoundation.framework */, + 732B1B64571C2542457D1813 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 766D2A792C7D7D73113560E7 /* Products */ = { + isa = PBXGroup; + children = ( + 5C3739896E223879365B4DE4 /* testshape */, + ); + name = "Products"; + sourceTree = ""; + }; + 02AE6DE75BDE0A34746B344D /* Projects */ = { + isa = PBXGroup; + children = ( + 67120B7E04F779A22B45751D /* SDL2main.xcodeproj */, + 55AA1BF734016AF247A5433B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 49F435A3218F4BA0205559A6 /* Products */ = { + isa = PBXGroup; + children = ( + 005F68A0073E7FFC7B8434D6 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 487B0976429814BD155C6CAE /* Products */ = { + isa = PBXGroup; + children = ( + 6D1469BB087227AB70854EA9 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 35AA427877B403F005830AC6 /* testshape */ = { + isa = PBXNativeTarget; + buildConfigurationList = 193B2B3337325C373BD14073 /* Build configuration list for PBXNativeTarget "testshape" */; + buildPhases = ( + 5AE51D66204A1AA957ED31CB /* Resources */, + 3BE6230259D825610F5954CA /* Sources */, + 3E8C126F5ABF48AB57426F58 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 311D1281113535BC65B42833 /* PBXTargetDependency */, + 75D06A7C056D7268208F223B /* PBXTargetDependency */, + ); + name = "testshape"; + productInstallPath = "$(HOME)/bin"; + productName = "testshape"; + productReference = 5C3739896E223879365B4DE4 /* testshape */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshape" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5D7D4BAD6D647D711B6D19CE /* testshape */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 49F435A3218F4BA0205559A6 /* Products */; + ProjectRef = 67120B7E04F779A22B45751D /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 487B0976429814BD155C6CAE /* Products */; + ProjectRef = 55AA1BF734016AF247A5433B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 35AA427877B403F005830AC6 /* testshape */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 005F68A0073E7FFC7B8434D6 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2384308443B135C947953CD0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6D1469BB087227AB70854EA9 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 20520A1452E97A671C5A0639 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5AE51D66204A1AA957ED31CB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug/shapes\" ]; then mkdir -p \"./Build/Debug/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Debug/shapes\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug/shapes\" ]; then mkdir -p \"./Build/Debug/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Debug/shapes\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release/shapes\" ]; then mkdir -p \"./Build/Release/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Release/shapes\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release/shapes\" ]; then mkdir -p \"./Build/Release/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Release/shapes\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 3BE6230259D825610F5954CA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 202628995578715C6F5637E6 /* testshape.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 311D1281113535BC65B42833 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 00853D8C601C54567F116D02 /* PBXContainerItemProxy */; + }; + 75D06A7C056D7268208F223B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 1BA16A511E0B21FE310003A3 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 592F43A85686299E6E721640 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Debug Universal"; + }; + 78085C4758825991561F2095 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Debug Native"; + }; + 22E1002723CF734227D92CC2 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Release Universal"; + }; + 047130637117482F228B7442 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Release Native"; + }; + 7C8C7CFD7587313147A94909 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 31387F642C4233DB0E8B77CA /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 215701D2376A2E9B7AF05275 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 29844E000AE01A8D350A510D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 193B2B3337325C373BD14073 /* Build configuration list for PBXNativeTarget "testshape" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 592F43A85686299E6E721640 /* Debug Universal */, + 78085C4758825991561F2095 /* Debug Native */, + 22E1002723CF734227D92CC2 /* Release Universal */, + 047130637117482F228B7442 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshape" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7C8C7CFD7587313147A94909 /* Debug Universal */, + 31387F642C4233DB0E8B77CA /* Debug Native */, + 215701D2376A2E9B7AF05275 /* Release Universal */, + 29844E000AE01A8D350A510D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..46667d7b24 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj @@ -0,0 +1,517 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3EB57AB86FFE23F207D537AA /* testsprite2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2A912E101D30786C09E95794 /* testsprite2.c */; }; + 087A1944451D2DA369184F1E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C8104694537524B61B218B0 /* AudioToolbox.framework */; }; + 68546BB2759652B31B21432E /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6618588939563E5E1F43181E /* AudioUnit.framework */; }; + 44791DCF02A874A118976C9D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 064A109E14BF42380B651BDC /* Cocoa.framework */; }; + 183D70E81E9563380C4B1807 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 726B55980F35791C46607166 /* CoreAudio.framework */; }; + 5FC045FE3F3C1D5139544A77 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 243B45494B536CC32BE64580 /* IOKit.framework */; }; + 4CE77BFA714D0B841F8028EB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BBF75B02F7422997FB35CD1 /* Carbon.framework */; }; + 5F757CA42CFA6B45342F7CDB /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 198A6EF667E5219C2E8E6F70 /* ForceFeedback.framework */; }; + 08E314F563FF09A96FC63B90 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C4B69785D1400934B9D3169 /* CoreFoundation.framework */; }; + 380B6B2A16CE56B7347E45CB /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75A13ECB147671C62FD14B58 /* OpenGL.framework */; }; + 53BA19D50A584D911B761477 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71253F5D764F41F351093C58 /* libSDL2main.a */; }; + 7254112B23CE415D785955E3 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B5C4F7D3911478D04F65D64 /* libSDL2test.a */; }; + 09CB2BED55A5675D228C29D3 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C3356376A7540802F88195A /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 1E416B30527921DF534D7CB7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4A07383B4BB8387E5D8D5BC7 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 7F3F389B51573B773AE07791 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4A07383B4BB8387E5D8D5BC7 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 396811F314DA212D116460B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 42463E5A42B4529479332675 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 6EC218C470B6516954552546 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 42463E5A42B4529479332675 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 74530E532BD76A4B74FC7F15 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5DB2012E79D1214636524DBF /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 416703454AE111545D5F42B8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5DB2012E79D1214636524DBF /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2A912E101D30786C09E95794 /* testsprite2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testsprite2.c"; path = "../../../../../test/testsprite2.c"; sourceTree = ""; }; + 2C8104694537524B61B218B0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 6618588939563E5E1F43181E /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 064A109E14BF42380B651BDC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 726B55980F35791C46607166 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 243B45494B536CC32BE64580 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 5BBF75B02F7422997FB35CD1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 198A6EF667E5219C2E8E6F70 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3C4B69785D1400934B9D3169 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 75A13ECB147671C62FD14B58 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 73D147E54C5433A953971D4B /* testsprite2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testsprite2"; path = "testsprite2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4A07383B4BB8387E5D8D5BC7 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 42463E5A42B4529479332675 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5DB2012E79D1214636524DBF /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 29B6101B1E104C4613B163D4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 087A1944451D2DA369184F1E /* AudioToolbox.framework in Frameworks */, + 68546BB2759652B31B21432E /* AudioUnit.framework in Frameworks */, + 44791DCF02A874A118976C9D /* Cocoa.framework in Frameworks */, + 183D70E81E9563380C4B1807 /* CoreAudio.framework in Frameworks */, + 5FC045FE3F3C1D5139544A77 /* IOKit.framework in Frameworks */, + 4CE77BFA714D0B841F8028EB /* Carbon.framework in Frameworks */, + 5F757CA42CFA6B45342F7CDB /* ForceFeedback.framework in Frameworks */, + 08E314F563FF09A96FC63B90 /* CoreFoundation.framework in Frameworks */, + 380B6B2A16CE56B7347E45CB /* OpenGL.framework in Frameworks */, + 53BA19D50A584D911B761477 /* libSDL2main.a in Frameworks */, + 7254112B23CE415D785955E3 /* libSDL2test.a in Frameworks */, + 09CB2BED55A5675D228C29D3 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0F951D9E01DE5764063B320A /* testsprite2 */ = { + isa = PBXGroup; + children = ( + 6ADD0DB31A7C64810BF443A3 /* test */, + 1D8A702E686D5B7D11A779A8 /* Frameworks */, + 40EE4A173C0117077E861AD6 /* Products */, + 6E675BE807B31BCB59B04E8F /* Projects */, + ); + name = "testsprite2"; + sourceTree = ""; + }; + 6ADD0DB31A7C64810BF443A3 /* test */ = { + isa = PBXGroup; + children = ( + 2A912E101D30786C09E95794 /* testsprite2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1D8A702E686D5B7D11A779A8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2C8104694537524B61B218B0 /* AudioToolbox.framework */, + 6618588939563E5E1F43181E /* AudioUnit.framework */, + 064A109E14BF42380B651BDC /* Cocoa.framework */, + 726B55980F35791C46607166 /* CoreAudio.framework */, + 243B45494B536CC32BE64580 /* IOKit.framework */, + 5BBF75B02F7422997FB35CD1 /* Carbon.framework */, + 198A6EF667E5219C2E8E6F70 /* ForceFeedback.framework */, + 3C4B69785D1400934B9D3169 /* CoreFoundation.framework */, + 75A13ECB147671C62FD14B58 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 40EE4A173C0117077E861AD6 /* Products */ = { + isa = PBXGroup; + children = ( + 73D147E54C5433A953971D4B /* testsprite2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 6E675BE807B31BCB59B04E8F /* Projects */ = { + isa = PBXGroup; + children = ( + 4A07383B4BB8387E5D8D5BC7 /* SDL2main.xcodeproj */, + 42463E5A42B4529479332675 /* SDL2test.xcodeproj */, + 5DB2012E79D1214636524DBF /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7AB27AD56CB82C38517F043E /* Products */ = { + isa = PBXGroup; + children = ( + 71253F5D764F41F351093C58 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 71C168EC0C974C962B1926BC /* Products */ = { + isa = PBXGroup; + children = ( + 0B5C4F7D3911478D04F65D64 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 756E3CB600DF45B31E4B768C /* Products */ = { + isa = PBXGroup; + children = ( + 5C3356376A7540802F88195A /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 35687872140D74AE6C872222 /* testsprite2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 16886C987897338B04DA2605 /* Build configuration list for PBXNativeTarget "testsprite2" */; + buildPhases = ( + 18450EBA03DA7D8F43085EE2 /* Resources */, + 7E4517DF5BC63B2F1B251F2E /* Sources */, + 29B6101B1E104C4613B163D4 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 52B42E1E696C46266BEA61EE /* PBXTargetDependency */, + 1976183F0FB53D2149A16D9B /* PBXTargetDependency */, + 5B573B543FBA0DD522E169BD /* PBXTargetDependency */, + ); + name = "testsprite2"; + productInstallPath = "$(HOME)/bin"; + productName = "testsprite2"; + productReference = 73D147E54C5433A953971D4B /* testsprite2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsprite2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 0F951D9E01DE5764063B320A /* testsprite2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7AB27AD56CB82C38517F043E /* Products */; + ProjectRef = 4A07383B4BB8387E5D8D5BC7 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 71C168EC0C974C962B1926BC /* Products */; + ProjectRef = 42463E5A42B4529479332675 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 756E3CB600DF45B31E4B768C /* Products */; + ProjectRef = 5DB2012E79D1214636524DBF /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 35687872140D74AE6C872222 /* testsprite2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 71253F5D764F41F351093C58 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 1E416B30527921DF534D7CB7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0B5C4F7D3911478D04F65D64 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 396811F314DA212D116460B0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5C3356376A7540802F88195A /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 74530E532BD76A4B74FC7F15 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 18450EBA03DA7D8F43085EE2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 7E4517DF5BC63B2F1B251F2E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3EB57AB86FFE23F207D537AA /* testsprite2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 52B42E1E696C46266BEA61EE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7F3F389B51573B773AE07791 /* PBXContainerItemProxy */; + }; + 1976183F0FB53D2149A16D9B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 6EC218C470B6516954552546 /* PBXContainerItemProxy */; + }; + 5B573B543FBA0DD522E169BD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 416703454AE111545D5F42B8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3F753F944A4A71F8566710F3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Debug Universal"; + }; + 6D705A0801376B88684946D8 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Debug Native"; + }; + 6DE045657B7422D169846ADC /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Release Universal"; + }; + 03805B3518B951D3749643DC /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Release Native"; + }; + 6B1F452712591CF13A6E2780 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 131233112AA0233E6B222B9F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 270E39AB193A36634CAB0F08 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 60D541A3387D31F43A4F39CB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 16886C987897338B04DA2605 /* Build configuration list for PBXNativeTarget "testsprite2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3F753F944A4A71F8566710F3 /* Debug Universal */, + 6D705A0801376B88684946D8 /* Debug Native */, + 6DE045657B7422D169846ADC /* Release Universal */, + 03805B3518B951D3749643DC /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsprite2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6B1F452712591CF13A6E2780 /* Debug Universal */, + 131233112AA0233E6B222B9F /* Debug Native */, + 270E39AB193A36634CAB0F08 /* Release Universal */, + 60D541A3387D31F43A4F39CB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..b0a396991a --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 62DB4954662D1F8E3BA37ACA /* testspriteminimal.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C1B753C765F6C601B2F643D /* testspriteminimal.c */; }; + 3DC4313B3F2F64070882420C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DF550B7379E7829785514AA /* AudioToolbox.framework */; }; + 2D9F4D2153A9336D676C1734 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D61713970C95297751000A4 /* AudioUnit.framework */; }; + 6BD50E7752975A842077685E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 706E710E6B450C73763B538D /* Cocoa.framework */; }; + 42C00439481E2BC73EF40DF7 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FE229317DDE101622154306 /* CoreAudio.framework */; }; + 6C270D18477F6BFE749C39D8 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 076917E15A445E933F807F75 /* IOKit.framework */; }; + 304044844415497A0F162D57 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 171A4A4C65487EB26E3706DB /* Carbon.framework */; }; + 33C83C51201D0602135E21F6 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50530398216B348742DA7819 /* ForceFeedback.framework */; }; + 11791F8A3A541B8F0A705571 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 525E413445794C4774EB755C /* CoreFoundation.framework */; }; + 145767026A1D1F7360996A50 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C951E12551829336BFC7208 /* OpenGL.framework */; }; + 1B5059BB3DFF6E6543376759 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DEE3D6A389C0DA574361287 /* libSDL2main.a */; }; + 649855CA451F23FE1C5A6D39 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CBE7C32481C336A0C2A2FE1 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 69041C6E09B95BF621382000 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 318318FD0A800B9226A94394 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 7C122EE362272F032F4B7958 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 318318FD0A800B9226A94394 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 46BC1180082B6D3C25150D60 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2BDE2A46153C30CD6704563B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 2C5440E173DB379F53B531D5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2BDE2A46153C30CD6704563B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5C1B753C765F6C601B2F643D /* testspriteminimal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testspriteminimal.c"; path = "../../../../../test/testspriteminimal.c"; sourceTree = ""; }; + 3DF550B7379E7829785514AA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 2D61713970C95297751000A4 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 706E710E6B450C73763B538D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 2FE229317DDE101622154306 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 076917E15A445E933F807F75 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 171A4A4C65487EB26E3706DB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 50530398216B348742DA7819 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 525E413445794C4774EB755C /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 0C951E12551829336BFC7208 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 682B784310DB2802375B6DEC /* testspriteminimal */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testspriteminimal"; path = "testspriteminimal"; sourceTree = BUILT_PRODUCTS_DIR; }; + 318318FD0A800B9226A94394 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2BDE2A46153C30CD6704563B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4E1E250A414739E45532796C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3DC4313B3F2F64070882420C /* AudioToolbox.framework in Frameworks */, + 2D9F4D2153A9336D676C1734 /* AudioUnit.framework in Frameworks */, + 6BD50E7752975A842077685E /* Cocoa.framework in Frameworks */, + 42C00439481E2BC73EF40DF7 /* CoreAudio.framework in Frameworks */, + 6C270D18477F6BFE749C39D8 /* IOKit.framework in Frameworks */, + 304044844415497A0F162D57 /* Carbon.framework in Frameworks */, + 33C83C51201D0602135E21F6 /* ForceFeedback.framework in Frameworks */, + 11791F8A3A541B8F0A705571 /* CoreFoundation.framework in Frameworks */, + 145767026A1D1F7360996A50 /* OpenGL.framework in Frameworks */, + 1B5059BB3DFF6E6543376759 /* libSDL2main.a in Frameworks */, + 649855CA451F23FE1C5A6D39 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2B5C2A426B511D0B4A8D204B /* testspriteminimal */ = { + isa = PBXGroup; + children = ( + 45833D4C757D12843A930F3C /* test */, + 68EE6F8336E12B8015930A83 /* Frameworks */, + 374D3E547EB07A0F1F9E784C /* Products */, + 06B715DA20D125B67EC21AC9 /* Projects */, + ); + name = "testspriteminimal"; + sourceTree = ""; + }; + 45833D4C757D12843A930F3C /* test */ = { + isa = PBXGroup; + children = ( + 5C1B753C765F6C601B2F643D /* testspriteminimal.c */, + ); + name = "test"; + sourceTree = ""; + }; + 68EE6F8336E12B8015930A83 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3DF550B7379E7829785514AA /* AudioToolbox.framework */, + 2D61713970C95297751000A4 /* AudioUnit.framework */, + 706E710E6B450C73763B538D /* Cocoa.framework */, + 2FE229317DDE101622154306 /* CoreAudio.framework */, + 076917E15A445E933F807F75 /* IOKit.framework */, + 171A4A4C65487EB26E3706DB /* Carbon.framework */, + 50530398216B348742DA7819 /* ForceFeedback.framework */, + 525E413445794C4774EB755C /* CoreFoundation.framework */, + 0C951E12551829336BFC7208 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 374D3E547EB07A0F1F9E784C /* Products */ = { + isa = PBXGroup; + children = ( + 682B784310DB2802375B6DEC /* testspriteminimal */, + ); + name = "Products"; + sourceTree = ""; + }; + 06B715DA20D125B67EC21AC9 /* Projects */ = { + isa = PBXGroup; + children = ( + 318318FD0A800B9226A94394 /* SDL2main.xcodeproj */, + 2BDE2A46153C30CD6704563B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 78825DB3215D6EE04BCB3D13 /* Products */ = { + isa = PBXGroup; + children = ( + 5DEE3D6A389C0DA574361287 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 2CC02954759A55E144BB7D35 /* Products */ = { + isa = PBXGroup; + children = ( + 5CBE7C32481C336A0C2A2FE1 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5C453F9422E25C27178F55DE /* testspriteminimal */ = { + isa = PBXNativeTarget; + buildConfigurationList = 478778DB14BD436004C87DD2 /* Build configuration list for PBXNativeTarget "testspriteminimal" */; + buildPhases = ( + 161627C86C5A1BA45985591E /* Resources */, + 7972338A540C63530C96571F /* Sources */, + 4E1E250A414739E45532796C /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 2BE83F726BE730FC7CBF7E0F /* PBXTargetDependency */, + 32F8621364966E12740D384A /* PBXTargetDependency */, + ); + name = "testspriteminimal"; + productInstallPath = "$(HOME)/bin"; + productName = "testspriteminimal"; + productReference = 682B784310DB2802375B6DEC /* testspriteminimal */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testspriteminimal" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2B5C2A426B511D0B4A8D204B /* testspriteminimal */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 78825DB3215D6EE04BCB3D13 /* Products */; + ProjectRef = 318318FD0A800B9226A94394 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 2CC02954759A55E144BB7D35 /* Products */; + ProjectRef = 2BDE2A46153C30CD6704563B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 5C453F9422E25C27178F55DE /* testspriteminimal */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 5DEE3D6A389C0DA574361287 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 69041C6E09B95BF621382000 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5CBE7C32481C336A0C2A2FE1 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 46BC1180082B6D3C25150D60 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 161627C86C5A1BA45985591E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 7972338A540C63530C96571F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 62DB4954662D1F8E3BA37ACA /* testspriteminimal.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 2BE83F726BE730FC7CBF7E0F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7C122EE362272F032F4B7958 /* PBXContainerItemProxy */; + }; + 32F8621364966E12740D384A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 2C5440E173DB379F53B531D5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 603C388D45F018CD77F5780C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Debug Universal"; + }; + 4FED08936BDD2D3F070A420C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Debug Native"; + }; + 622F3BFF122C178B290A61E3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Release Universal"; + }; + 503A46D813DE5AAD43977E11 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Release Native"; + }; + 5F871CB005D22412470F4E84 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 589814B1177E728336BD3BB2 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 07DE20A2087426F07BA05E59 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 29247CDB151870E152C13DE2 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 478778DB14BD436004C87DD2 /* Build configuration list for PBXNativeTarget "testspriteminimal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 603C388D45F018CD77F5780C /* Debug Universal */, + 4FED08936BDD2D3F070A420C /* Debug Native */, + 622F3BFF122C178B290A61E3 /* Release Universal */, + 503A46D813DE5AAD43977E11 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testspriteminimal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5F871CB005D22412470F4E84 /* Debug Universal */, + 589814B1177E728336BD3BB2 /* Debug Native */, + 07DE20A2087426F07BA05E59 /* Release Universal */, + 29247CDB151870E152C13DE2 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..26015f1203 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj @@ -0,0 +1,474 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 47447E154FC472C43BEA16E6 /* teststreaming.c in Sources */ = {isa = PBXBuildFile; fileRef = 1EE40EB60D7479286B5813D2 /* teststreaming.c */; }; + 5317299B36F200543D5B53F3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C3E36F2711806BE347F18CF /* AudioToolbox.framework */; }; + 3B93528320F549E654071C62 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C2A7C9520D0712016AE1C0B /* AudioUnit.framework */; }; + 54A0073931161CC363455BAB /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 732727135BFC1F100E9B643E /* Cocoa.framework */; }; + 473B75407B957715044436EB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A9716F561A945765DC21491 /* CoreAudio.framework */; }; + 6B0110E4132F74FD109468C2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D97430D453817A97BA129F6 /* IOKit.framework */; }; + 300874647C6570915163763A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5614746C75256D0313E60AFE /* Carbon.framework */; }; + 3FF2589E219215586AA51263 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 782C1D3F27433FAE5F651E06 /* ForceFeedback.framework */; }; + 59A36BDC79B856023BD6784F /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 436A761C2F4E2F82380023AB /* CoreFoundation.framework */; }; + 67377FF61257162D09467EE7 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C133A541FDC30781B705A8B /* OpenGL.framework */; }; + 22B348961023745658FA4216 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A8E18482EF110D939C42DA4 /* libSDL2main.a */; }; + 02E474F453003499444E5D9D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0588479D274C013F77D818D0 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 61B8029C633B63745F043822 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70B46A1B2CE041E35E8C597E /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 7A9F66C857A744F136C82CE7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70B46A1B2CE041E35E8C597E /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 2998598A27AA0FF5471E29D5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3FBA500309AC35F8693A1524 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 76BE5E68237D14A7006F1192 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3FBA500309AC35F8693A1524 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 1EE40EB60D7479286B5813D2 /* teststreaming.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "teststreaming.c"; path = "../../../../../test/teststreaming.c"; sourceTree = ""; }; + 3C3E36F2711806BE347F18CF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 2C2A7C9520D0712016AE1C0B /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 732727135BFC1F100E9B643E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 4A9716F561A945765DC21491 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1D97430D453817A97BA129F6 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 5614746C75256D0313E60AFE /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 782C1D3F27433FAE5F651E06 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 436A761C2F4E2F82380023AB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 2C133A541FDC30781B705A8B /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 14733D757BB072E065202A98 /* teststreaming */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "teststreaming"; path = "teststreaming"; sourceTree = BUILT_PRODUCTS_DIR; }; + 70B46A1B2CE041E35E8C597E /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 3FBA500309AC35F8693A1524 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1A74422A5609234E022836C0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5317299B36F200543D5B53F3 /* AudioToolbox.framework in Frameworks */, + 3B93528320F549E654071C62 /* AudioUnit.framework in Frameworks */, + 54A0073931161CC363455BAB /* Cocoa.framework in Frameworks */, + 473B75407B957715044436EB /* CoreAudio.framework in Frameworks */, + 6B0110E4132F74FD109468C2 /* IOKit.framework in Frameworks */, + 300874647C6570915163763A /* Carbon.framework in Frameworks */, + 3FF2589E219215586AA51263 /* ForceFeedback.framework in Frameworks */, + 59A36BDC79B856023BD6784F /* CoreFoundation.framework in Frameworks */, + 67377FF61257162D09467EE7 /* OpenGL.framework in Frameworks */, + 22B348961023745658FA4216 /* libSDL2main.a in Frameworks */, + 02E474F453003499444E5D9D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 72FC3EFA16116F39330F49E8 /* teststreaming */ = { + isa = PBXGroup; + children = ( + 485153C14B3F1FA33C3D7350 /* test */, + 13D33CCC7FC91EAA5D735C35 /* Frameworks */, + 03AB10080B2408D5172A6C45 /* Products */, + 5BE001EA674300077A322759 /* Projects */, + ); + name = "teststreaming"; + sourceTree = ""; + }; + 485153C14B3F1FA33C3D7350 /* test */ = { + isa = PBXGroup; + children = ( + 1EE40EB60D7479286B5813D2 /* teststreaming.c */, + ); + name = "test"; + sourceTree = ""; + }; + 13D33CCC7FC91EAA5D735C35 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3C3E36F2711806BE347F18CF /* AudioToolbox.framework */, + 2C2A7C9520D0712016AE1C0B /* AudioUnit.framework */, + 732727135BFC1F100E9B643E /* Cocoa.framework */, + 4A9716F561A945765DC21491 /* CoreAudio.framework */, + 1D97430D453817A97BA129F6 /* IOKit.framework */, + 5614746C75256D0313E60AFE /* Carbon.framework */, + 782C1D3F27433FAE5F651E06 /* ForceFeedback.framework */, + 436A761C2F4E2F82380023AB /* CoreFoundation.framework */, + 2C133A541FDC30781B705A8B /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 03AB10080B2408D5172A6C45 /* Products */ = { + isa = PBXGroup; + children = ( + 14733D757BB072E065202A98 /* teststreaming */, + ); + name = "Products"; + sourceTree = ""; + }; + 5BE001EA674300077A322759 /* Projects */ = { + isa = PBXGroup; + children = ( + 70B46A1B2CE041E35E8C597E /* SDL2main.xcodeproj */, + 3FBA500309AC35F8693A1524 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 52EE3DCB5CB044A5688E4F3F /* Products */ = { + isa = PBXGroup; + children = ( + 6A8E18482EF110D939C42DA4 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 32DA150856EA5059045C6914 /* Products */ = { + isa = PBXGroup; + children = ( + 0588479D274C013F77D818D0 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 173C64D366191D744B872D7D /* teststreaming */ = { + isa = PBXNativeTarget; + buildConfigurationList = 16242E351F194FF65F771AE5 /* Build configuration list for PBXNativeTarget "teststreaming" */; + buildPhases = ( + 51C6293824A624077220472E /* Resources */, + 2C10687D72CD7CF4280235EF /* Sources */, + 1A74422A5609234E022836C0 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 79E557E67AA02D4E78F8139F /* PBXTargetDependency */, + 2D6224285416717E08173EAD /* PBXTargetDependency */, + ); + name = "teststreaming"; + productInstallPath = "$(HOME)/bin"; + productName = "teststreaming"; + productReference = 14733D757BB072E065202A98 /* teststreaming */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "teststreaming" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 72FC3EFA16116F39330F49E8 /* teststreaming */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 52EE3DCB5CB044A5688E4F3F /* Products */; + ProjectRef = 70B46A1B2CE041E35E8C597E /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 32DA150856EA5059045C6914 /* Products */; + ProjectRef = 3FBA500309AC35F8693A1524 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 173C64D366191D744B872D7D /* teststreaming */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6A8E18482EF110D939C42DA4 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 61B8029C633B63745F043822 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0588479D274C013F77D818D0 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2998598A27AA0FF5471E29D5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 51C6293824A624077220472E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 2C10687D72CD7CF4280235EF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 47447E154FC472C43BEA16E6 /* teststreaming.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 79E557E67AA02D4E78F8139F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7A9F66C857A744F136C82CE7 /* PBXContainerItemProxy */; + }; + 2D6224285416717E08173EAD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 76BE5E68237D14A7006F1192 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 651834BD7ABC59AE61127244 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Debug Universal"; + }; + 37C665BD71C07DAE39DB0359 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Debug Native"; + }; + 42E4297821EB03C0661F2D54 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Release Universal"; + }; + 6796467F7C06764616332AE5 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Release Native"; + }; + 05AF41094A51130770D800E4 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 00B4382A7EF269B77D616E4E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 1132085309E401543268778F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4C4C43F8535050187F2D1804 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 16242E351F194FF65F771AE5 /* Build configuration list for PBXNativeTarget "teststreaming" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 651834BD7ABC59AE61127244 /* Debug Universal */, + 37C665BD71C07DAE39DB0359 /* Debug Native */, + 42E4297821EB03C0661F2D54 /* Release Universal */, + 6796467F7C06764616332AE5 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "teststreaming" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 05AF41094A51130770D800E4 /* Debug Universal */, + 00B4382A7EF269B77D616E4E /* Debug Native */, + 1132085309E401543268778F /* Release Universal */, + 4C4C43F8535050187F2D1804 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testthread/testthread.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testthread/testthread.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..14bedda821 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testthread/testthread.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 35213261134328003C164DCC /* testthread.c in Sources */ = {isa = PBXBuildFile; fileRef = 62744D221EB054A72DBF6ECC /* testthread.c */; }; + 5FE61B50452A4F3A025A07EE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61E86E5810DA1218058D7F05 /* AudioToolbox.framework */; }; + 1CDE462B612158DC56436167 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FB53A142E7C04B131AF60B7 /* AudioUnit.framework */; }; + 32AC74004CBA5DE11B0B0F45 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54F55C097F9208C005565BD3 /* Cocoa.framework */; }; + 5D0B286037AC23DA67154CB9 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2254502358BA512C22620E25 /* CoreAudio.framework */; }; + 4BE566F378B35F5C39FF3450 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D9873DF73A16D6469231A6A /* IOKit.framework */; }; + 44F224D13B105209689A0E41 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 747A165D604F2020484870A2 /* Carbon.framework */; }; + 293822431C5B46857C012DDA /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A5D29B153AF28416A7F460B /* ForceFeedback.framework */; }; + 27297CC17F42639B5EE2035D /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C37721239B4B266D173C61 /* CoreFoundation.framework */; }; + 0EE435A85A430E423A1A2B66 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54AD5A0329425E1A7F41340C /* OpenGL.framework */; }; + 39D35C8525C2098476340C5C /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 500A69B241F07D6E00F6539A /* libSDL2main.a */; }; + 40FA75F122A8667047931606 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DE573AE3E46757763841538 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 77F70C1273611C6F52E54034 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 54FC11132A371CB4054F3547 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 177C7C892D4B4AA67FF60081 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 54FC11132A371CB4054F3547 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 46151D864AD30A2264966480 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 168B12782E8D663D59F23F4B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 4B6C53A062BB6F64479473AE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 168B12782E8D663D59F23F4B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 62744D221EB054A72DBF6ECC /* testthread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testthread.c"; path = "../../../../../test/testthread.c"; sourceTree = ""; }; + 61E86E5810DA1218058D7F05 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 3FB53A142E7C04B131AF60B7 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 54F55C097F9208C005565BD3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 2254502358BA512C22620E25 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1D9873DF73A16D6469231A6A /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 747A165D604F2020484870A2 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 6A5D29B153AF28416A7F460B /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 58C37721239B4B266D173C61 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 54AD5A0329425E1A7F41340C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 41737E465E3319127D3C2499 /* testthread */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testthread"; path = "testthread"; sourceTree = BUILT_PRODUCTS_DIR; }; + 54FC11132A371CB4054F3547 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 168B12782E8D663D59F23F4B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4700007F3E1F074D7E8B03ED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5FE61B50452A4F3A025A07EE /* AudioToolbox.framework in Frameworks */, + 1CDE462B612158DC56436167 /* AudioUnit.framework in Frameworks */, + 32AC74004CBA5DE11B0B0F45 /* Cocoa.framework in Frameworks */, + 5D0B286037AC23DA67154CB9 /* CoreAudio.framework in Frameworks */, + 4BE566F378B35F5C39FF3450 /* IOKit.framework in Frameworks */, + 44F224D13B105209689A0E41 /* Carbon.framework in Frameworks */, + 293822431C5B46857C012DDA /* ForceFeedback.framework in Frameworks */, + 27297CC17F42639B5EE2035D /* CoreFoundation.framework in Frameworks */, + 0EE435A85A430E423A1A2B66 /* OpenGL.framework in Frameworks */, + 39D35C8525C2098476340C5C /* libSDL2main.a in Frameworks */, + 40FA75F122A8667047931606 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 213340E446C96252331F6C01 /* testthread */ = { + isa = PBXGroup; + children = ( + 66AE2FF133FC20E4198240D6 /* test */, + 3B5561B61103754713F35373 /* Frameworks */, + 490A3E9940BE055277566E68 /* Products */, + 16BA26944AB42BED0563622C /* Projects */, + ); + name = "testthread"; + sourceTree = ""; + }; + 66AE2FF133FC20E4198240D6 /* test */ = { + isa = PBXGroup; + children = ( + 62744D221EB054A72DBF6ECC /* testthread.c */, + ); + name = "test"; + sourceTree = ""; + }; + 3B5561B61103754713F35373 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 61E86E5810DA1218058D7F05 /* AudioToolbox.framework */, + 3FB53A142E7C04B131AF60B7 /* AudioUnit.framework */, + 54F55C097F9208C005565BD3 /* Cocoa.framework */, + 2254502358BA512C22620E25 /* CoreAudio.framework */, + 1D9873DF73A16D6469231A6A /* IOKit.framework */, + 747A165D604F2020484870A2 /* Carbon.framework */, + 6A5D29B153AF28416A7F460B /* ForceFeedback.framework */, + 58C37721239B4B266D173C61 /* CoreFoundation.framework */, + 54AD5A0329425E1A7F41340C /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 490A3E9940BE055277566E68 /* Products */ = { + isa = PBXGroup; + children = ( + 41737E465E3319127D3C2499 /* testthread */, + ); + name = "Products"; + sourceTree = ""; + }; + 16BA26944AB42BED0563622C /* Projects */ = { + isa = PBXGroup; + children = ( + 54FC11132A371CB4054F3547 /* SDL2main.xcodeproj */, + 168B12782E8D663D59F23F4B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7EF6583068121C260D4950B0 /* Products */ = { + isa = PBXGroup; + children = ( + 500A69B241F07D6E00F6539A /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 75AC2C5538B24E912EAF7B17 /* Products */ = { + isa = PBXGroup; + children = ( + 0DE573AE3E46757763841538 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 513F117C6C4C207175DB2ABD /* testthread */ = { + isa = PBXNativeTarget; + buildConfigurationList = 01E01EA916271687051A2652 /* Build configuration list for PBXNativeTarget "testthread" */; + buildPhases = ( + 6B6D5D1B1F55322A0FDD1DA7 /* Resources */, + 4B1011D7567C14523D7F1AF2 /* Sources */, + 4700007F3E1F074D7E8B03ED /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 44CE64AC0D075A681B5E4CA5 /* PBXTargetDependency */, + 5F6D256B254653457C6E4C1D /* PBXTargetDependency */, + ); + name = "testthread"; + productInstallPath = "$(HOME)/bin"; + productName = "testthread"; + productReference = 41737E465E3319127D3C2499 /* testthread */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testthread" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 213340E446C96252331F6C01 /* testthread */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7EF6583068121C260D4950B0 /* Products */; + ProjectRef = 54FC11132A371CB4054F3547 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 75AC2C5538B24E912EAF7B17 /* Products */; + ProjectRef = 168B12782E8D663D59F23F4B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 513F117C6C4C207175DB2ABD /* testthread */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 500A69B241F07D6E00F6539A /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 77F70C1273611C6F52E54034 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0DE573AE3E46757763841538 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 46151D864AD30A2264966480 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 6B6D5D1B1F55322A0FDD1DA7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4B1011D7567C14523D7F1AF2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 35213261134328003C164DCC /* testthread.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 44CE64AC0D075A681B5E4CA5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 177C7C892D4B4AA67FF60081 /* PBXContainerItemProxy */; + }; + 5F6D256B254653457C6E4C1D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 4B6C53A062BB6F64479473AE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 41810FD36E064D052AD31709 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Debug Universal"; + }; + 019B704A23640E7260FA75B0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Debug Native"; + }; + 0D1704B65F6C5D010A855C23 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Release Universal"; + }; + 0FCC32B4651505B32E3A642F /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Release Native"; + }; + 6EEB3E43225D2C3A3D457FFE /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 30BD51C01613660E457D1E40 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 394241E765B57185689269EA /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 69103C962724337E46395806 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 01E01EA916271687051A2652 /* Build configuration list for PBXNativeTarget "testthread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 41810FD36E064D052AD31709 /* Debug Universal */, + 019B704A23640E7260FA75B0 /* Debug Native */, + 0D1704B65F6C5D010A855C23 /* Release Universal */, + 0FCC32B4651505B32E3A642F /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testthread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6EEB3E43225D2C3A3D457FFE /* Debug Universal */, + 30BD51C01613660E457D1E40 /* Debug Native */, + 394241E765B57185689269EA /* Release Universal */, + 69103C962724337E46395806 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testtimer/testtimer.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testtimer/testtimer.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..74a85997e3 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testtimer/testtimer.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 7B64021D5808756776C306BF /* testtimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 22293F957F2711D97BE30CC9 /* testtimer.c */; }; + 13F35686187C26DC67E311BA /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59DB50ED16A5452649322B1D /* AudioToolbox.framework */; }; + 08C150FB43E435D67A1239D5 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BAC239C69E54EC71F2968F0 /* AudioUnit.framework */; }; + 294C7A37608D633F4876781D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FCE587F1D867D250B9D0AF4 /* Cocoa.framework */; }; + 73EC35FD16EE11A117EC26B5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BEF55F007556CBF162825F6 /* CoreAudio.framework */; }; + 19DF001C5A3D5F540DA70DED /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 600C4147227742EE2E68407C /* IOKit.framework */; }; + 1A197D67240E52331CFC2424 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AF7093922A179FF070424A4 /* Carbon.framework */; }; + 7D9775EB412907CE0DF82667 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BAC129468810A51532E27A0 /* ForceFeedback.framework */; }; + 3B0822D6406677340EF37654 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38440E44450A17785BCB1BCD /* CoreFoundation.framework */; }; + 2EF17062498F59832B3752BF /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D37571765C244EA1A325C9C /* OpenGL.framework */; }; + 0772793F37435116345630AE /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 08006ACB69B42AA67BCF53B0 /* libSDL2main.a */; }; + 0AB1254765E46EB803F0183D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 341F7FBC474100F24D213FDE /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 32C14D2F548E6BAC03F77804 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 697F233E5B4527790BD82DE8 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 0662119B0F20094B3237701F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 697F233E5B4527790BD82DE8 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 209B3D4C017327D60F250349 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6F8E5D8A11FF021C396C63DA /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 2E5850DC3F883A377C9E1B29 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6F8E5D8A11FF021C396C63DA /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 22293F957F2711D97BE30CC9 /* testtimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testtimer.c"; path = "../../../../../test/testtimer.c"; sourceTree = ""; }; + 59DB50ED16A5452649322B1D /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4BAC239C69E54EC71F2968F0 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 7FCE587F1D867D250B9D0AF4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 4BEF55F007556CBF162825F6 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 600C4147227742EE2E68407C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 7AF7093922A179FF070424A4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 4BAC129468810A51532E27A0 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 38440E44450A17785BCB1BCD /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 0D37571765C244EA1A325C9C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2BA90F533D2C35CE0EE821BB /* testtimer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testtimer"; path = "testtimer"; sourceTree = BUILT_PRODUCTS_DIR; }; + 697F233E5B4527790BD82DE8 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6F8E5D8A11FF021C396C63DA /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 59EA1639021D3F4F7AC86D7A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 13F35686187C26DC67E311BA /* AudioToolbox.framework in Frameworks */, + 08C150FB43E435D67A1239D5 /* AudioUnit.framework in Frameworks */, + 294C7A37608D633F4876781D /* Cocoa.framework in Frameworks */, + 73EC35FD16EE11A117EC26B5 /* CoreAudio.framework in Frameworks */, + 19DF001C5A3D5F540DA70DED /* IOKit.framework in Frameworks */, + 1A197D67240E52331CFC2424 /* Carbon.framework in Frameworks */, + 7D9775EB412907CE0DF82667 /* ForceFeedback.framework in Frameworks */, + 3B0822D6406677340EF37654 /* CoreFoundation.framework in Frameworks */, + 2EF17062498F59832B3752BF /* OpenGL.framework in Frameworks */, + 0772793F37435116345630AE /* libSDL2main.a in Frameworks */, + 0AB1254765E46EB803F0183D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2A3C61D921751E2A596D0B43 /* testtimer */ = { + isa = PBXGroup; + children = ( + 0C9320211078719C5CCC7EFD /* test */, + 213A271506811AED7E1C6A94 /* Frameworks */, + 0C6224BB0611706E7C390B7D /* Products */, + 6A363F94345F4A4D427A79A1 /* Projects */, + ); + name = "testtimer"; + sourceTree = ""; + }; + 0C9320211078719C5CCC7EFD /* test */ = { + isa = PBXGroup; + children = ( + 22293F957F2711D97BE30CC9 /* testtimer.c */, + ); + name = "test"; + sourceTree = ""; + }; + 213A271506811AED7E1C6A94 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 59DB50ED16A5452649322B1D /* AudioToolbox.framework */, + 4BAC239C69E54EC71F2968F0 /* AudioUnit.framework */, + 7FCE587F1D867D250B9D0AF4 /* Cocoa.framework */, + 4BEF55F007556CBF162825F6 /* CoreAudio.framework */, + 600C4147227742EE2E68407C /* IOKit.framework */, + 7AF7093922A179FF070424A4 /* Carbon.framework */, + 4BAC129468810A51532E27A0 /* ForceFeedback.framework */, + 38440E44450A17785BCB1BCD /* CoreFoundation.framework */, + 0D37571765C244EA1A325C9C /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 0C6224BB0611706E7C390B7D /* Products */ = { + isa = PBXGroup; + children = ( + 2BA90F533D2C35CE0EE821BB /* testtimer */, + ); + name = "Products"; + sourceTree = ""; + }; + 6A363F94345F4A4D427A79A1 /* Projects */ = { + isa = PBXGroup; + children = ( + 697F233E5B4527790BD82DE8 /* SDL2main.xcodeproj */, + 6F8E5D8A11FF021C396C63DA /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 2D3E6AEA3B0428970CDF1AF4 /* Products */ = { + isa = PBXGroup; + children = ( + 08006ACB69B42AA67BCF53B0 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 62FE45F1775D285645F8488E /* Products */ = { + isa = PBXGroup; + children = ( + 341F7FBC474100F24D213FDE /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1F0F244D534C4D1B32E764E0 /* testtimer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 069B2C7817DD3A9C768A7832 /* Build configuration list for PBXNativeTarget "testtimer" */; + buildPhases = ( + 438B662D3476654319572741 /* Resources */, + 20CB29B81AA1608556B53AD0 /* Sources */, + 59EA1639021D3F4F7AC86D7A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 15C01811098725315C840603 /* PBXTargetDependency */, + 517D6C4E040B778751987EC8 /* PBXTargetDependency */, + ); + name = "testtimer"; + productInstallPath = "$(HOME)/bin"; + productName = "testtimer"; + productReference = 2BA90F533D2C35CE0EE821BB /* testtimer */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testtimer" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2A3C61D921751E2A596D0B43 /* testtimer */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 2D3E6AEA3B0428970CDF1AF4 /* Products */; + ProjectRef = 697F233E5B4527790BD82DE8 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 62FE45F1775D285645F8488E /* Products */; + ProjectRef = 6F8E5D8A11FF021C396C63DA /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1F0F244D534C4D1B32E764E0 /* testtimer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 08006ACB69B42AA67BCF53B0 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 32C14D2F548E6BAC03F77804 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 341F7FBC474100F24D213FDE /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 209B3D4C017327D60F250349 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 438B662D3476654319572741 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 20CB29B81AA1608556B53AD0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B64021D5808756776C306BF /* testtimer.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 15C01811098725315C840603 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0662119B0F20094B3237701F /* PBXContainerItemProxy */; + }; + 517D6C4E040B778751987EC8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 2E5850DC3F883A377C9E1B29 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5B5201CD5C61059315160862 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Debug Universal"; + }; + 447031E408EE5E531E0D7235 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Debug Native"; + }; + 7E9248C5328360650A786F20 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Release Universal"; + }; + 72D91F3A3DA959814FCD588B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Release Native"; + }; + 677744B358021FD634594C31 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 010A4E8334CB0D2C617372DC /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 40E1047F345201CA036918EE /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 2D81007B408A511C0D1500B4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 069B2C7817DD3A9C768A7832 /* Build configuration list for PBXNativeTarget "testtimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5B5201CD5C61059315160862 /* Debug Universal */, + 447031E408EE5E531E0D7235 /* Debug Native */, + 7E9248C5328360650A786F20 /* Release Universal */, + 72D91F3A3DA959814FCD588B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testtimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 677744B358021FD634594C31 /* Debug Universal */, + 010A4E8334CB0D2C617372DC /* Debug Native */, + 40E1047F345201CA036918EE /* Release Universal */, + 2D81007B408A511C0D1500B4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testver/testver.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testver/testver.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..6f5c576154 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testver/testver.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6014781151E5187D528723EF /* testver.c in Sources */ = {isa = PBXBuildFile; fileRef = 6B6E22E11F8848E33DA408B5 /* testver.c */; }; + 5E694906601863BD26484E1A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EEC3B2E5C516CF444E07100 /* AudioToolbox.framework */; }; + 40844E75202C46C674FC6E3D /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B6C2F9222654F643FB72B39 /* AudioUnit.framework */; }; + 51EA10F0387055E76C16517F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C8064FA612620554B384DB7 /* Cocoa.framework */; }; + 0AA62A9A179074774C2A62A5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 729D379958F428DF503A3419 /* CoreAudio.framework */; }; + 354E4CAD736522D764C841F4 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D8F1F80456F146E54A12F69 /* IOKit.framework */; }; + 76F75A2345D94CCE0894324B /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9547275EFD3F9E40524AB9 /* Carbon.framework */; }; + 3D412E44067570B904B5148F /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F10718F74EE72460B2B53E0 /* ForceFeedback.framework */; }; + 52E8289C257550997213758F /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6359786E2B1D1C053CEB0D3B /* CoreFoundation.framework */; }; + 1B8633BE3CF116D51EA17524 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37D30F5260F713FE171022A9 /* OpenGL.framework */; }; + 139738C34B68369115722D3C /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 55F14A235AE31CD4262346F7 /* libSDL2main.a */; }; + 0B984D0D20527570170D79FC /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F5645B120637F3775D905E5 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 685F569F02837F954ADE743D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 22B66475709B098C69197BD2 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 72786455348A513E6CED7348 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 22B66475709B098C69197BD2 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 2E48267038BB153158527C71 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A2F6D7A044147804F6F120F /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 65C432673F726D01098111FA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A2F6D7A044147804F6F120F /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 6B6E22E11F8848E33DA408B5 /* testver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testver.c"; path = "../../../../../test/testver.c"; sourceTree = ""; }; + 7EEC3B2E5C516CF444E07100 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 3B6C2F9222654F643FB72B39 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0C8064FA612620554B384DB7 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 729D379958F428DF503A3419 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 4D8F1F80456F146E54A12F69 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3A9547275EFD3F9E40524AB9 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 0F10718F74EE72460B2B53E0 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 6359786E2B1D1C053CEB0D3B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 37D30F5260F713FE171022A9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5DB74E8116BC4C6530217502 /* testver */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testver"; path = "testver"; sourceTree = BUILT_PRODUCTS_DIR; }; + 22B66475709B098C69197BD2 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6A2F6D7A044147804F6F120F /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 49B25FDC134C7A2A5B927661 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5E694906601863BD26484E1A /* AudioToolbox.framework in Frameworks */, + 40844E75202C46C674FC6E3D /* AudioUnit.framework in Frameworks */, + 51EA10F0387055E76C16517F /* Cocoa.framework in Frameworks */, + 0AA62A9A179074774C2A62A5 /* CoreAudio.framework in Frameworks */, + 354E4CAD736522D764C841F4 /* IOKit.framework in Frameworks */, + 76F75A2345D94CCE0894324B /* Carbon.framework in Frameworks */, + 3D412E44067570B904B5148F /* ForceFeedback.framework in Frameworks */, + 52E8289C257550997213758F /* CoreFoundation.framework in Frameworks */, + 1B8633BE3CF116D51EA17524 /* OpenGL.framework in Frameworks */, + 139738C34B68369115722D3C /* libSDL2main.a in Frameworks */, + 0B984D0D20527570170D79FC /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 11F833D43F53101770FD0C7B /* testver */ = { + isa = PBXGroup; + children = ( + 63294E297CC854C77B0271BB /* test */, + 3B4C1DD744AD6900191D4CA3 /* Frameworks */, + 27183CDE4E6371D435C25B93 /* Products */, + 334122EF372B062A59BA520E /* Projects */, + ); + name = "testver"; + sourceTree = ""; + }; + 63294E297CC854C77B0271BB /* test */ = { + isa = PBXGroup; + children = ( + 6B6E22E11F8848E33DA408B5 /* testver.c */, + ); + name = "test"; + sourceTree = ""; + }; + 3B4C1DD744AD6900191D4CA3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 7EEC3B2E5C516CF444E07100 /* AudioToolbox.framework */, + 3B6C2F9222654F643FB72B39 /* AudioUnit.framework */, + 0C8064FA612620554B384DB7 /* Cocoa.framework */, + 729D379958F428DF503A3419 /* CoreAudio.framework */, + 4D8F1F80456F146E54A12F69 /* IOKit.framework */, + 3A9547275EFD3F9E40524AB9 /* Carbon.framework */, + 0F10718F74EE72460B2B53E0 /* ForceFeedback.framework */, + 6359786E2B1D1C053CEB0D3B /* CoreFoundation.framework */, + 37D30F5260F713FE171022A9 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 27183CDE4E6371D435C25B93 /* Products */ = { + isa = PBXGroup; + children = ( + 5DB74E8116BC4C6530217502 /* testver */, + ); + name = "Products"; + sourceTree = ""; + }; + 334122EF372B062A59BA520E /* Projects */ = { + isa = PBXGroup; + children = ( + 22B66475709B098C69197BD2 /* SDL2main.xcodeproj */, + 6A2F6D7A044147804F6F120F /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 40322E461BBE73D46D320F6F /* Products */ = { + isa = PBXGroup; + children = ( + 55F14A235AE31CD4262346F7 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 589E74AE7AAF144F04001D06 /* Products */ = { + isa = PBXGroup; + children = ( + 2F5645B120637F3775D905E5 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0D77082F710F18C534BE6183 /* testver */ = { + isa = PBXNativeTarget; + buildConfigurationList = 23716C682BE236F146315787 /* Build configuration list for PBXNativeTarget "testver" */; + buildPhases = ( + 0CED4AD569D07AE1532321B5 /* Resources */, + 204748170CFF76D3407221CB /* Sources */, + 49B25FDC134C7A2A5B927661 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3AD528CE0FF40F5F633541C8 /* PBXTargetDependency */, + 3FFF326116C8557B360861AA /* PBXTargetDependency */, + ); + name = "testver"; + productInstallPath = "$(HOME)/bin"; + productName = "testver"; + productReference = 5DB74E8116BC4C6530217502 /* testver */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testver" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 11F833D43F53101770FD0C7B /* testver */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 40322E461BBE73D46D320F6F /* Products */; + ProjectRef = 22B66475709B098C69197BD2 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 589E74AE7AAF144F04001D06 /* Products */; + ProjectRef = 6A2F6D7A044147804F6F120F /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 0D77082F710F18C534BE6183 /* testver */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 55F14A235AE31CD4262346F7 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 685F569F02837F954ADE743D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2F5645B120637F3775D905E5 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2E48267038BB153158527C71 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 0CED4AD569D07AE1532321B5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 204748170CFF76D3407221CB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6014781151E5187D528723EF /* testver.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 3AD528CE0FF40F5F633541C8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 72786455348A513E6CED7348 /* PBXContainerItemProxy */; + }; + 3FFF326116C8557B360861AA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 65C432673F726D01098111FA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 200B57382D1F088E4FF70905 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Debug Universal"; + }; + 458E1E8567FA792871804B05 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Debug Native"; + }; + 0E280C7B0045494B6BEB19AC /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Release Universal"; + }; + 424C1D7523CE3B8E02B2147F /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Release Native"; + }; + 43BA739D4B48008676B82CB7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 40E86CA3015C4F544D593DA0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 05DF7BBB62432ED070FD00CB /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 47D77AC87E84335A01275818 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 23716C682BE236F146315787 /* Build configuration list for PBXNativeTarget "testver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 200B57382D1F088E4FF70905 /* Debug Universal */, + 458E1E8567FA792871804B05 /* Debug Native */, + 0E280C7B0045494B6BEB19AC /* Release Universal */, + 424C1D7523CE3B8E02B2147F /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 43BA739D4B48008676B82CB7 /* Debug Universal */, + 40E86CA3015C4F544D593DA0 /* Debug Native */, + 05DF7BBB62432ED070FD00CB /* Release Universal */, + 47D77AC87E84335A01275818 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/testwm2/testwm2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/testwm2/testwm2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..d5a9d25254 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/testwm2/testwm2.xcodeproj/project.pbxproj @@ -0,0 +1,500 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 0BE42EAB72F36C7702866C3E /* testwm2.c in Sources */ = {isa = PBXBuildFile; fileRef = 35B30B9D2BA973305B431C79 /* testwm2.c */; }; + 02BA178200D8732B480340AA /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F3B433238510A9201395B14 /* AudioToolbox.framework */; }; + 2531497A26C41FFB2DFE1CAA /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A9723A216397B73732E783F /* AudioUnit.framework */; }; + 294839F8023630471AC87C9A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B7D416035FC73F2499D780B /* Cocoa.framework */; }; + 75960A7B1E35508958204E07 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 14494572789E5DD835710F4A /* CoreAudio.framework */; }; + 0FEA07E415674BD44CE2221A /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67A17B15236238841E225074 /* IOKit.framework */; }; + 78B22C7E3EC4657C3ED53157 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D43CA29AD40A458D50CFF /* Carbon.framework */; }; + 49B245B2311E458D631105B5 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70BD41BC43D1767C493D4B07 /* ForceFeedback.framework */; }; + 30654A5B510B5FDD26F012DC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62A5002E6CDE23C3601931E1 /* CoreFoundation.framework */; }; + 495C760C1F090E551CD30744 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4FF1117D3E08144A1FB75727 /* OpenGL.framework */; }; + 15B73C417E775E8C789C760E /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F4656C1319D435B3942325F /* libSDL2main.a */; }; + 2DBD575800C87AB24B62371A /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D85368D023A6C344FD93913 /* libSDL2test.a */; }; + 19B3571E22DD01C53F4F6318 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B047E5801E928BC78040BE3 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 49F65F4954892A3468AF59B9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6B0400622E6E3A5B64172CE7 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 11E6192A46CF465107FD024B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6B0400622E6E3A5B64172CE7 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 21E806AD668806325D1D568C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 281E6FEE01AD198860124328 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1E1175156F97314C291323CB; + remoteInfo = "libSDL2test.a"; + }; + 099722936B22291412D24925 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 281E6FEE01AD198860124328 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7CD70F5D43DA554D66287CFC; + remoteInfo = "libSDL2test.a"; + }; + 2C01777530B566FF16C02CE9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2C011B767D7601FD42D544E2 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 0CAA140978155CF111F45286 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2C011B767D7601FD42D544E2 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 35B30B9D2BA973305B431C79 /* testwm2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testwm2.c"; path = "../../../../../test/testwm2.c"; sourceTree = ""; }; + 3F3B433238510A9201395B14 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 5A9723A216397B73732E783F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 1B7D416035FC73F2499D780B /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 14494572789E5DD835710F4A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 67A17B15236238841E225074 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 607D43CA29AD40A458D50CFF /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 70BD41BC43D1767C493D4B07 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 62A5002E6CDE23C3601931E1 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 4FF1117D3E08144A1FB75727 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 07E01726741D59FE3E556A53 /* testwm2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testwm2"; path = "testwm2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B0400622E6E3A5B64172CE7 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 281E6FEE01AD198860124328 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2C011B767D7601FD42D544E2 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 14610380060F5C6C541555CA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 02BA178200D8732B480340AA /* AudioToolbox.framework in Frameworks */, + 2531497A26C41FFB2DFE1CAA /* AudioUnit.framework in Frameworks */, + 294839F8023630471AC87C9A /* Cocoa.framework in Frameworks */, + 75960A7B1E35508958204E07 /* CoreAudio.framework in Frameworks */, + 0FEA07E415674BD44CE2221A /* IOKit.framework in Frameworks */, + 78B22C7E3EC4657C3ED53157 /* Carbon.framework in Frameworks */, + 49B245B2311E458D631105B5 /* ForceFeedback.framework in Frameworks */, + 30654A5B510B5FDD26F012DC /* CoreFoundation.framework in Frameworks */, + 495C760C1F090E551CD30744 /* OpenGL.framework in Frameworks */, + 15B73C417E775E8C789C760E /* libSDL2main.a in Frameworks */, + 2DBD575800C87AB24B62371A /* libSDL2test.a in Frameworks */, + 19B3571E22DD01C53F4F6318 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1D09699575D57C337D881716 /* testwm2 */ = { + isa = PBXGroup; + children = ( + 62B85D0C5D6D45B730F13A95 /* test */, + 678A4C923DF9534372032E2D /* Frameworks */, + 2CAC771F4C957321357F4473 /* Products */, + 68737EBC1D3C666D219A2090 /* Projects */, + ); + name = "testwm2"; + sourceTree = ""; + }; + 62B85D0C5D6D45B730F13A95 /* test */ = { + isa = PBXGroup; + children = ( + 35B30B9D2BA973305B431C79 /* testwm2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 678A4C923DF9534372032E2D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3F3B433238510A9201395B14 /* AudioToolbox.framework */, + 5A9723A216397B73732E783F /* AudioUnit.framework */, + 1B7D416035FC73F2499D780B /* Cocoa.framework */, + 14494572789E5DD835710F4A /* CoreAudio.framework */, + 67A17B15236238841E225074 /* IOKit.framework */, + 607D43CA29AD40A458D50CFF /* Carbon.framework */, + 70BD41BC43D1767C493D4B07 /* ForceFeedback.framework */, + 62A5002E6CDE23C3601931E1 /* CoreFoundation.framework */, + 4FF1117D3E08144A1FB75727 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 2CAC771F4C957321357F4473 /* Products */ = { + isa = PBXGroup; + children = ( + 07E01726741D59FE3E556A53 /* testwm2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 68737EBC1D3C666D219A2090 /* Projects */ = { + isa = PBXGroup; + children = ( + 6B0400622E6E3A5B64172CE7 /* SDL2main.xcodeproj */, + 281E6FEE01AD198860124328 /* SDL2test.xcodeproj */, + 2C011B767D7601FD42D544E2 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 6D41569C576B5436603F06AB /* Products */ = { + isa = PBXGroup; + children = ( + 2F4656C1319D435B3942325F /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 053706934CCC7FF400CE1389 /* Products */ = { + isa = PBXGroup; + children = ( + 1D85368D023A6C344FD93913 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 70CB3D756B797AAB28B10A4A /* Products */ = { + isa = PBXGroup; + children = ( + 5B047E5801E928BC78040BE3 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 040021644D381D391EC87B8B /* testwm2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7424155926126AB723AF4B82 /* Build configuration list for PBXNativeTarget "testwm2" */; + buildPhases = ( + 4B6F67D309DE6D6A712071FE /* Resources */, + 74917742401B5C89514A5EE9 /* Sources */, + 14610380060F5C6C541555CA /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0B6411B5332216224D032859 /* PBXTargetDependency */, + 2F3F521D29963DC7033E09AB /* PBXTargetDependency */, + 6DB07A415BAB464C451D7F41 /* PBXTargetDependency */, + ); + name = "testwm2"; + productInstallPath = "$(HOME)/bin"; + productName = "testwm2"; + productReference = 07E01726741D59FE3E556A53 /* testwm2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testwm2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 1D09699575D57C337D881716 /* testwm2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6D41569C576B5436603F06AB /* Products */; + ProjectRef = 6B0400622E6E3A5B64172CE7 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 053706934CCC7FF400CE1389 /* Products */; + ProjectRef = 281E6FEE01AD198860124328 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 70CB3D756B797AAB28B10A4A /* Products */; + ProjectRef = 2C011B767D7601FD42D544E2 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 040021644D381D391EC87B8B /* testwm2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2F4656C1319D435B3942325F /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 49F65F4954892A3468AF59B9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1D85368D023A6C344FD93913 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 21E806AD668806325D1D568C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5B047E5801E928BC78040BE3 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2C01777530B566FF16C02CE9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 4B6F67D309DE6D6A712071FE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 74917742401B5C89514A5EE9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BE42EAB72F36C7702866C3E /* testwm2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 0B6411B5332216224D032859 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 11E6192A46CF465107FD024B /* PBXContainerItemProxy */; + }; + 2F3F521D29963DC7033E09AB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 099722936B22291412D24925 /* PBXContainerItemProxy */; + }; + 6DB07A415BAB464C451D7F41 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0CAA140978155CF111F45286 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 21745AB753B5396747C850CC /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Debug Universal"; + }; + 1FA85E282A6B581D6B67455E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Debug Native"; + }; + 46C62A8339C80E652667525F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Release Universal"; + }; + 153152C87B3E483F379E7211 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Release Native"; + }; + 21BC41E2666D0061196139E7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 322B588A51FC7CBD74E32330 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 0F132F51083F1502419B3ED6 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 55040782070F03AE2C4847F0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7424155926126AB723AF4B82 /* Build configuration list for PBXNativeTarget "testwm2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 21745AB753B5396747C850CC /* Debug Universal */, + 1FA85E282A6B581D6B67455E /* Debug Native */, + 46C62A8339C80E652667525F /* Release Universal */, + 153152C87B3E483F379E7211 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testwm2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 21BC41E2666D0061196139E7 /* Debug Universal */, + 322B588A51FC7CBD74E32330 /* Debug Native */, + 0F132F51083F1502419B3ED6 /* Release Universal */, + 55040782070F03AE2C4847F0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode3/tests/torturethread/torturethread.xcodeproj/project.pbxproj b/premake/Xcode/Xcode3/tests/torturethread/torturethread.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..2309abff88 --- /dev/null +++ b/premake/Xcode/Xcode3/tests/torturethread/torturethread.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 0B1A6B465F267277727F1F6A /* torturethread.c in Sources */ = {isa = PBXBuildFile; fileRef = 5FA75DEA52290DD6605A4165 /* torturethread.c */; }; + 0CB40A2C6B384AFE1F85723A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79E670F651C62A887F6A3215 /* AudioToolbox.framework */; }; + 41B152CD3C1934387F884871 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 483C7AD419A54986085D3C48 /* AudioUnit.framework */; }; + 4AAE7E7E0A5653E768C911A7 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ACC6B776AC5494213B245D5 /* Cocoa.framework */; }; + 59D67481676E7E4D1C56615B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00142FCB5AC003C512F6094D /* CoreAudio.framework */; }; + 3FE91A7D412638F432DE3092 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23342F6529E525F2711B4A7C /* IOKit.framework */; }; + 3B603B2925A51C443AE06C31 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DE1115E4433107A54200280 /* Carbon.framework */; }; + 354E39343B790A977606178E /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 36EE5D451D1849841BF45B78 /* ForceFeedback.framework */; }; + 093E72445180495D2C004D65 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E321F3300CF2F895F7F1C47 /* CoreFoundation.framework */; }; + 38FF0DD1184645800F951B47 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40701A1D6AD506C4546D7276 /* OpenGL.framework */; }; + 3ED8149145C136443C2A20C4 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 774C249D69042D1A42DF6270 /* libSDL2main.a */; }; + 6F343F4955834AD4658C4DF4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6ACA22173E33236140FF5CCC /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5B10199654223EDE16005ABF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 49211B7E24B9724343D8399B /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 58DC62993160374E09FF7AD6; + remoteInfo = "libSDL2main.a"; + }; + 492C0DDD39AC709960CA1D3B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 49211B7E24B9724343D8399B /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0E7126A94A11494963D3548B; + remoteInfo = "libSDL2main.a"; + }; + 281A4C152FA91B280FFD4166 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2A972B8803A774F925DC2034 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 07D004B11E733F1F0EA93105; + remoteInfo = "libSDL2.a"; + }; + 24F701915BCC641934B646BE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2A972B8803A774F925DC2034 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 58C10ED14175754444033E0E; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5FA75DEA52290DD6605A4165 /* torturethread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "torturethread.c"; path = "../../../../../test/torturethread.c"; sourceTree = ""; }; + 79E670F651C62A887F6A3215 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 483C7AD419A54986085D3C48 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0ACC6B776AC5494213B245D5 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 00142FCB5AC003C512F6094D /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 23342F6529E525F2711B4A7C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 4DE1115E4433107A54200280 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 36EE5D451D1849841BF45B78 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 7E321F3300CF2F895F7F1C47 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 40701A1D6AD506C4546D7276 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 04C670D73B865A7F51992465 /* torturethread */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "torturethread"; path = "torturethread"; sourceTree = BUILT_PRODUCTS_DIR; }; + 49211B7E24B9724343D8399B /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2A972B8803A774F925DC2034 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 383067F53F225E3F7E2C39A1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0CB40A2C6B384AFE1F85723A /* AudioToolbox.framework in Frameworks */, + 41B152CD3C1934387F884871 /* AudioUnit.framework in Frameworks */, + 4AAE7E7E0A5653E768C911A7 /* Cocoa.framework in Frameworks */, + 59D67481676E7E4D1C56615B /* CoreAudio.framework in Frameworks */, + 3FE91A7D412638F432DE3092 /* IOKit.framework in Frameworks */, + 3B603B2925A51C443AE06C31 /* Carbon.framework in Frameworks */, + 354E39343B790A977606178E /* ForceFeedback.framework in Frameworks */, + 093E72445180495D2C004D65 /* CoreFoundation.framework in Frameworks */, + 38FF0DD1184645800F951B47 /* OpenGL.framework in Frameworks */, + 3ED8149145C136443C2A20C4 /* libSDL2main.a in Frameworks */, + 6F343F4955834AD4658C4DF4 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 52C33FFB7B7F54AF3360134B /* torturethread */ = { + isa = PBXGroup; + children = ( + 4104708A743A2F6E04606A87 /* test */, + 16FB4D0B36D6203039B60176 /* Frameworks */, + 11876D82024B38F500662D0D /* Products */, + 35307E4C3A3868B6445F5BDD /* Projects */, + ); + name = "torturethread"; + sourceTree = ""; + }; + 4104708A743A2F6E04606A87 /* test */ = { + isa = PBXGroup; + children = ( + 5FA75DEA52290DD6605A4165 /* torturethread.c */, + ); + name = "test"; + sourceTree = ""; + }; + 16FB4D0B36D6203039B60176 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 79E670F651C62A887F6A3215 /* AudioToolbox.framework */, + 483C7AD419A54986085D3C48 /* AudioUnit.framework */, + 0ACC6B776AC5494213B245D5 /* Cocoa.framework */, + 00142FCB5AC003C512F6094D /* CoreAudio.framework */, + 23342F6529E525F2711B4A7C /* IOKit.framework */, + 4DE1115E4433107A54200280 /* Carbon.framework */, + 36EE5D451D1849841BF45B78 /* ForceFeedback.framework */, + 7E321F3300CF2F895F7F1C47 /* CoreFoundation.framework */, + 40701A1D6AD506C4546D7276 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 11876D82024B38F500662D0D /* Products */ = { + isa = PBXGroup; + children = ( + 04C670D73B865A7F51992465 /* torturethread */, + ); + name = "Products"; + sourceTree = ""; + }; + 35307E4C3A3868B6445F5BDD /* Projects */ = { + isa = PBXGroup; + children = ( + 49211B7E24B9724343D8399B /* SDL2main.xcodeproj */, + 2A972B8803A774F925DC2034 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 19B4019451080CEE6B6752BA /* Products */ = { + isa = PBXGroup; + children = ( + 774C249D69042D1A42DF6270 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 51FB541E39AA5F7A55401C07 /* Products */ = { + isa = PBXGroup; + children = ( + 6ACA22173E33236140FF5CCC /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 75467BAF23EA7DA442B93066 /* torturethread */ = { + isa = PBXNativeTarget; + buildConfigurationList = 62AA34F754F6660758827B79 /* Build configuration list for PBXNativeTarget "torturethread" */; + buildPhases = ( + 59B43C746DAF04801E8356AF /* Resources */, + 7C03337571B2019A391F6075 /* Sources */, + 383067F53F225E3F7E2C39A1 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 1A5E31995684244817750D80 /* PBXTargetDependency */, + 69881AE217550B2E0BA6694F /* PBXTargetDependency */, + ); + name = "torturethread"; + productInstallPath = "$(HOME)/bin"; + productName = "torturethread"; + productReference = 04C670D73B865A7F51992465 /* torturethread */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "torturethread" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 52C33FFB7B7F54AF3360134B /* torturethread */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 19B4019451080CEE6B6752BA /* Products */; + ProjectRef = 49211B7E24B9724343D8399B /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 51FB541E39AA5F7A55401C07 /* Products */; + ProjectRef = 2A972B8803A774F925DC2034 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 75467BAF23EA7DA442B93066 /* torturethread */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 774C249D69042D1A42DF6270 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5B10199654223EDE16005ABF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6ACA22173E33236140FF5CCC /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 281A4C152FA91B280FFD4166 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 59B43C746DAF04801E8356AF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7C03337571B2019A391F6075 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B1A6B465F267277727F1F6A /* torturethread.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 1A5E31995684244817750D80 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 492C0DDD39AC709960CA1D3B /* PBXContainerItemProxy */; + }; + 69881AE217550B2E0BA6694F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 24F701915BCC641934B646BE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7AA24F003AD034440EBA0FE2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Debug Universal"; + }; + 273B1EDF6B8448E06AFE7AD5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Debug Native"; + }; + 34AD579C519045767AA1795E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Release Universal"; + }; + 6FE9381E57F51F65473054AB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Release Native"; + }; + 70CE0CB34B4406E20D7A628B /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 6BB62409012546322B45004E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 2C526089646A0EBC67F450CF /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 45FE47EA0082624D6480128B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 62AA34F754F6660758827B79 /* Build configuration list for PBXNativeTarget "torturethread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7AA24F003AD034440EBA0FE2 /* Debug Universal */, + 273B1EDF6B8448E06AFE7AD5 /* Debug Native */, + 34AD579C519045767AA1795E /* Release Universal */, + 6FE9381E57F51F65473054AB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "torturethread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 70CE0CB34B4406E20D7A628B /* Debug Universal */, + 6BB62409012546322B45004E /* Debug Native */, + 2C526089646A0EBC67F450CF /* Release Universal */, + 45FE47EA0082624D6480128B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/SDL.xcworkspace/contents.xcworkspacedata b/premake/Xcode/Xcode4/SDL.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000000..7f40a1a76d --- /dev/null +++ b/premake/Xcode/Xcode4/SDL.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/premake/Xcode/Xcode4/SDL2/SDL2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/SDL2/SDL2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..d930889b87 --- /dev/null +++ b/premake/Xcode/Xcode4/SDL2/SDL2.xcodeproj/project.pbxproj @@ -0,0 +1,1229 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 56395776433B06D125BE09F9 /* SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = 40DE5BD04661156D57675BAF /* SDL.c */; }; + 0D11631D261C2DED48367BD9 /* SDL_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 797C5E120E96465D084D1803 /* SDL_assert.c */; }; + 63957CDA535A39C9449D535D /* SDL_error.c in Sources */ = {isa = PBXBuildFile; fileRef = 62EB566114EC180710563B61 /* SDL_error.c */; }; + 396E14272C895B1B023B0EBF /* SDL_hints.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D633DEF28166D625DCD4EC6 /* SDL_hints.c */; }; + 47A824D52595733944650324 /* SDL_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 49545EB23967505C4C1F1F5F /* SDL_log.c */; }; + 0DA40BB5530E3E8A13B22B2A /* SDL_atomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 767256F16F7D79C038E41DCF /* SDL_atomic.c */; }; + 78B369711FEC690B61E878DB /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 753F026C2D846DEF73FC61B0 /* SDL_spinlock.c */; }; + 106D013A4421102300555D43 /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F143CF2601E131B5DEA62F6 /* SDL_audio.c */; }; + 2BF6538C20D269CB37087387 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 07B907294E82663A7E91738C /* SDL_audiocvt.c */; }; + 32E8550E3FC92BD73B4739B8 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = 5AAD4B726237251050431873 /* SDL_audiodev.c */; }; + 42C743FD554803F551385F5E /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 5B0759ED16B35B9A6B027892 /* SDL_audiotypecvt.c */; }; + 7D2A6B3F36BD6DD353D43953 /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = 2B8C7A19218A1FFC6D376B1D /* SDL_mixer.c */; }; + 259157355D6D2B2A7C9411BE /* SDL_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = 1D567D9642D94A6145E55558 /* SDL_wave.c */; }; + 4AA7597B1C4036EE6193174F /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D7A645338CD1BFD1E5D728F /* SDL_coreaudio.c */; }; + 5674042A21325D343ED27F33 /* SDL_diskaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 7E9A6779675D116654DA5CB0 /* SDL_diskaudio.c */; }; + 0B905C2A4B5E31B840865641 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 79AC10FC31263C0868140F20 /* SDL_dummyaudio.c */; }; + 47D9062664F05CC72A952A7A /* SDL_cpuinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 72EF5BB771227B3637235CF8 /* SDL_cpuinfo.c */; }; + 70D12B02516F0F2905AB412C /* SDL_clipboardevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 07AB1E6A616157DA448246C0 /* SDL_clipboardevents.c */; }; + 7B571F1F643422652B14420D /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D7748773CB1127031D53492 /* SDL_dropevents.c */; }; + 5D6A089F279C32D34F707938 /* SDL_events.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CD12CBF4D837A2735DA357A /* SDL_events.c */; }; + 2FF10E5E5FFE5AA7236E259D /* SDL_gesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 6E8C6A11181536B54CDA3862 /* SDL_gesture.c */; }; + 572E0DE06DA25C7C7B4641CB /* SDL_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 228F5EB207C27065272F3B1E /* SDL_keyboard.c */; }; + 4D11428427B179E3476635ED /* SDL_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D561615477231185657134D /* SDL_mouse.c */; }; + 4D633D8F070C41582A4B57C0 /* SDL_quit.c in Sources */ = {isa = PBXBuildFile; fileRef = 19351893793F509D77923EC4 /* SDL_quit.c */; }; + 4CB676BB174D5FA62B1A74F5 /* SDL_touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 406016940A0A2E5D164A56D5 /* SDL_touch.c */; }; + 4FDB4381525E3F0E54222AB7 /* SDL_windowevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 268F2B06517B6E4D1AB372BC /* SDL_windowevents.c */; }; + 104E1ED077B5263C2F767E76 /* SDL_rwops.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F7B20DF1BD236742BA56323 /* SDL_rwops.c */; }; + 054C588B4B675FE145C405FF /* SDL_rwopsbundlesupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D6F3B426BD93160262A1A0B /* SDL_rwopsbundlesupport.m */; }; + 333A606602A9304E62204041 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DFF58520B8305A67E5866F0 /* SDL_sysfilesystem.m */; }; + 7F371E9614B444B008BB61EB /* SDL_haptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 748B5BD12D28466142D36C04 /* SDL_haptic.c */; }; + 491A69413C3372F47FD526C4 /* SDL_syshaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 07875CF62CC235C2023B171E /* SDL_syshaptic.c */; }; + 323563246DB26CEE1EE57A87 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = 474463FC44D12D8266163B0C /* SDL_gamecontroller.c */; }; + 6055787753B66A4F7C7C62CC /* SDL_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 0A51682775F7695826CC3AAD /* SDL_joystick.c */; }; + 111C502964B81A6C3F8B75E9 /* SDL_sysjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 362B7F38400724D4745D17C1 /* SDL_sysjoystick.c */; }; + 76537577175D73B66E382DF3 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 3E5A3557080276B82EE540D7 /* SDL_sysloadso.c */; }; + 4A6367E166855369495907D2 /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = 295B490053604A1B5F832E31 /* SDL_power.c */; }; + 703B3B447BD5756E17974E35 /* SDL_syspower.c in Sources */ = {isa = PBXBuildFile; fileRef = 441A169052554B8C05B2780E /* SDL_syspower.c */; }; + 00F850905E8838901D684336 /* SDL_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 125E7FE947363FCE78AB3920 /* SDL_render.c */; }; + 084519B745617A795612765B /* SDL_yuv_mmx.c in Sources */ = {isa = PBXBuildFile; fileRef = 5EB1630859F568532C8C3792 /* SDL_yuv_mmx.c */; }; + 7A7F452C793B51C108155BF3 /* SDL_yuv_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 08C15C7515050FDD2A886246 /* SDL_yuv_sw.c */; }; + 0BBB364F1AA839334CA903E1 /* SDL_render_gl.c in Sources */ = {isa = PBXBuildFile; fileRef = 66021F1B50BA0B215910589A /* SDL_render_gl.c */; }; + 2FE315477EB5534A33D63088 /* SDL_shaders_gl.c in Sources */ = {isa = PBXBuildFile; fileRef = 51D64CC2780E096415426017 /* SDL_shaders_gl.c */; }; + 61F2084A5BE32DCB11E03C70 /* SDL_blendfillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 36727BCA2F1D5437708B7454 /* SDL_blendfillrect.c */; }; + 59EE3C2409372B9639821D70 /* SDL_blendline.c in Sources */ = {isa = PBXBuildFile; fileRef = 66C5268A542E341900F55A35 /* SDL_blendline.c */; }; + 485B7C4A13A54E2B21E3558A /* SDL_blendpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 5482361F3563048574A46DB9 /* SDL_blendpoint.c */; }; + 72837DD3347C47EC16E204B9 /* SDL_drawline.c in Sources */ = {isa = PBXBuildFile; fileRef = 61C21D5077C07E4904B51C90 /* SDL_drawline.c */; }; + 2CF944703D09586A2DBC5140 /* SDL_drawpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = 59D62A724BBF27CC59231297 /* SDL_drawpoint.c */; }; + 5FAA1511268914C730B15F91 /* SDL_render_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = 0FFF44745C270A0C4F730726 /* SDL_render_sw.c */; }; + 31BE4ECF1A3005304B891CAA /* SDL_rotate.c in Sources */ = {isa = PBXBuildFile; fileRef = 421F406A12633DAC795C1EB3 /* SDL_rotate.c */; }; + 671B561A4F8961200C43368D /* SDL_getenv.c in Sources */ = {isa = PBXBuildFile; fileRef = 4BC907785D5E6668627E78DE /* SDL_getenv.c */; }; + 325E5B1B5C4745827A1E6E5F /* SDL_iconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 77815DDD6F364C510AC25CB6 /* SDL_iconv.c */; }; + 467362D4600918721A582DD1 /* SDL_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F8275E71B900C7D074949FC /* SDL_malloc.c */; }; + 280E40795C183DBB6A970829 /* SDL_qsort.c in Sources */ = {isa = PBXBuildFile; fileRef = 07251EE10156492D512F75F3 /* SDL_qsort.c */; }; + 35EB063D107A51CE41391E68 /* SDL_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 57323D836A0E78552E015D8E /* SDL_stdlib.c */; }; + 751335C2100E444D570F538E /* SDL_string.c in Sources */ = {isa = PBXBuildFile; fileRef = 57F4780F2A47469D23006DD1 /* SDL_string.c */; }; + 296D670D18660CF766E818CC /* SDL_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = 08FF4C92289179BB0EDF765E /* SDL_thread.c */; }; + 11FC3C2D57D7210A3D615BA9 /* SDL_syscond.c in Sources */ = {isa = PBXBuildFile; fileRef = 04D200E634516AF92074244C /* SDL_syscond.c */; }; + 373D343B1143034962617BD7 /* SDL_sysmutex.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CC65F3A65EF32EE5C773558 /* SDL_sysmutex.c */; }; + 15337628451D793D3CAB15D4 /* SDL_syssem.c in Sources */ = {isa = PBXBuildFile; fileRef = 05D36048404E42022A7E4127 /* SDL_syssem.c */; }; + 6AB87FC5673A2BBE6C9E0DB5 /* SDL_systhread.c in Sources */ = {isa = PBXBuildFile; fileRef = 17B31E2F2CC55CBC6F0A1D9B /* SDL_systhread.c */; }; + 2D677EC478A065B220E460EC /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = 41E150D956EA3AD510743873 /* SDL_systls.c */; }; + 623F50970F234B5E09CA450B /* SDL_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 41B156D22A535379479747CB /* SDL_timer.c */; }; + 13913E6F0397429A2DEB3D40 /* SDL_systimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 459149F92FC6055B32F7153F /* SDL_systimer.c */; }; + 65946C744E79150A4C7C045C /* SDL_RLEaccel.c in Sources */ = {isa = PBXBuildFile; fileRef = 4A9716005FF9561D2C3F6284 /* SDL_RLEaccel.c */; }; + 283C240D0F085FE959BD477C /* SDL_blit.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B0568EE0EB87B3019C24A16 /* SDL_blit.c */; }; + 1BB3311C46100188199C04D0 /* SDL_blit_0.c in Sources */ = {isa = PBXBuildFile; fileRef = 3EC71493552F0AB6601B4921 /* SDL_blit_0.c */; }; + 2B76555A37F14B4D41A27593 /* SDL_blit_1.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D16555224CA08DB629F3ED1 /* SDL_blit_1.c */; }; + 49D204421C4F1B8835DE2832 /* SDL_blit_A.c in Sources */ = {isa = PBXBuildFile; fileRef = 296F6626753E62AE4A57408A /* SDL_blit_A.c */; }; + 5E613DFE79B379C26D650D96 /* SDL_blit_N.c in Sources */ = {isa = PBXBuildFile; fileRef = 02A05727533149171EF6318C /* SDL_blit_N.c */; }; + 4A4664FE74896DF45E1808EE /* SDL_blit_auto.c in Sources */ = {isa = PBXBuildFile; fileRef = 2B90062B1FBE1B1865A01BF8 /* SDL_blit_auto.c */; }; + 3059473C61AB631709347385 /* SDL_blit_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = 1DD33CE21E6B143616A13AF1 /* SDL_blit_copy.c */; }; + 50DB688039D37DD9582868D6 /* SDL_blit_slow.c in Sources */ = {isa = PBXBuildFile; fileRef = 1CA1189B180060246D2B3B37 /* SDL_blit_slow.c */; }; + 375F7D0C5126459216E47CF2 /* SDL_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F5D7EFD4E2B79D45E1B51E3 /* SDL_bmp.c */; }; + 49F101CA136501802AFA3B94 /* SDL_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 164801C9489C07724F6A784E /* SDL_clipboard.c */; }; + 54E9387C7E1D51AC31935DA3 /* SDL_egl.c in Sources */ = {isa = PBXBuildFile; fileRef = 286B34BD2239541E1ABF7B58 /* SDL_egl.c */; }; + 66E622863C5A41026F594412 /* SDL_fillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F9B71653C254E7E388808C5 /* SDL_fillrect.c */; }; + 57AE719928720E68714B209F /* SDL_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = 7F9D4C460D482A96620971F4 /* SDL_pixels.c */; }; + 2D93262C241F1433246B2085 /* SDL_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 366D6F2633EA002441056CC7 /* SDL_rect.c */; }; + 228023C6583F3DE84EF42C58 /* SDL_shape.c in Sources */ = {isa = PBXBuildFile; fileRef = 349E213D6BCD6E7D754918E0 /* SDL_shape.c */; }; + 7E1C02D05DC73D8430EE5B32 /* SDL_stretch.c in Sources */ = {isa = PBXBuildFile; fileRef = 334B22626BDE407C402A36B6 /* SDL_stretch.c */; }; + 01AC02B5766A48C8670031F2 /* SDL_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 34EE3252493E44852C6F4D1A /* SDL_surface.c */; }; + 4BD4541153E57A437BF32A86 /* SDL_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 124B099C775D350017963585 /* SDL_video.c */; }; + 51243DCF16C22BE3744032EF /* SDL_cocoaclipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 118A36F07D45647F0A084319 /* SDL_cocoaclipboard.m */; }; + 012C15875FDC21D61CD929D0 /* SDL_cocoaevents.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C224B440FCA2C1F2C3C1FAE /* SDL_cocoaevents.m */; }; + 1573379D58A7574D0DBA47AC /* SDL_cocoakeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = 4402087F5CB90F317D9208D2 /* SDL_cocoakeyboard.m */; }; + 787242E36A2735A57F59687B /* SDL_cocoamessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BFF56C82567424C3CF4591E /* SDL_cocoamessagebox.m */; }; + 2B4D04205F557192365D431C /* SDL_cocoamodes.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B60C7A316B6B5A70D13C82 /* SDL_cocoamodes.m */; }; + 310774F470EF614902A41941 /* SDL_cocoamouse.m in Sources */ = {isa = PBXBuildFile; fileRef = 309C0186189D062A37BF5FB6 /* SDL_cocoamouse.m */; }; + 24D86B472DA21C7365911852 /* SDL_cocoamousetap.m in Sources */ = {isa = PBXBuildFile; fileRef = 57283DDA43F325E829A27FBA /* SDL_cocoamousetap.m */; }; + 261C18D144B62BA517AB0CDE /* SDL_cocoaopengl.m in Sources */ = {isa = PBXBuildFile; fileRef = 361747734F387130393F605F /* SDL_cocoaopengl.m */; }; + 35B52CCD738D46A37D2A007A /* SDL_cocoashape.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DCD3646470A681D7025162E /* SDL_cocoashape.m */; }; + 11E63E4936207F26367F5238 /* SDL_cocoavideo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3617606E15EE572C173C7BE1 /* SDL_cocoavideo.m */; }; + 40BD604A40D313FF5BBF038B /* SDL_cocoawindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CE067B94CD974F17E692018 /* SDL_cocoawindow.m */; }; + 78D451890F066EED1B184E5D /* SDL_nullevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 4AC7612F064013A35D2E0F0E /* SDL_nullevents.c */; }; + 7D746673275A3D2832FC70E4 /* SDL_nullframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 137B7080251D541D4486734D /* SDL_nullframebuffer.c */; }; + 04EE66BE026750A6697D2D25 /* SDL_nullvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = 0B7016F553F306D600E0142E /* SDL_nullvideo.c */; }; + 16890198400A74D216F21D5C /* SDL_x11clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 614F0C224A9920122B861F1E /* SDL_x11clipboard.c */; }; + 5AF6069941FD62CC54180B0B /* SDL_x11dyn.c in Sources */ = {isa = PBXBuildFile; fileRef = 040245A23E4C1DB56C671C11 /* SDL_x11dyn.c */; }; + 5317393214211C5609A741CD /* SDL_x11events.c in Sources */ = {isa = PBXBuildFile; fileRef = 0D4B39C02DBE3C111ADF6469 /* SDL_x11events.c */; }; + 577A205B645529882614213E /* SDL_x11framebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 4AC63B92198A385F654F2730 /* SDL_x11framebuffer.c */; }; + 70C662D65B383C6C59FD2D53 /* SDL_x11keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 0DDF62C0484127D723E24C22 /* SDL_x11keyboard.c */; }; + 1C89094C623507F457F92E95 /* SDL_x11messagebox.c in Sources */ = {isa = PBXBuildFile; fileRef = 707F3FE15B0D494E51614B58 /* SDL_x11messagebox.c */; }; + 602E0AE6217E04A24E1B6557 /* SDL_x11modes.c in Sources */ = {isa = PBXBuildFile; fileRef = 1BA837F00E275AC823F41E55 /* SDL_x11modes.c */; }; + 43957BE84EEC1684606737A4 /* SDL_x11mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 084A624F52C129A670684094 /* SDL_x11mouse.c */; }; + 046106FA142534F231B450E8 /* SDL_x11opengl.c in Sources */ = {isa = PBXBuildFile; fileRef = 6956132B6EDD79D6109E23B6 /* SDL_x11opengl.c */; }; + 08301FE111B053194E1F0BA6 /* SDL_x11opengles.c in Sources */ = {isa = PBXBuildFile; fileRef = 23EC7FEA7AAA67186D60469D /* SDL_x11opengles.c */; }; + 2165120C077310332DB568BC /* SDL_x11shape.c in Sources */ = {isa = PBXBuildFile; fileRef = 541017773B6D0CC30C7F69F4 /* SDL_x11shape.c */; }; + 06E734A2124E48E15A4E5320 /* SDL_x11touch.c in Sources */ = {isa = PBXBuildFile; fileRef = 4FC145BC3C6D3F3C2D155C4E /* SDL_x11touch.c */; }; + 57586E4470463EE554525EAF /* SDL_x11video.c in Sources */ = {isa = PBXBuildFile; fileRef = 604D13500B247C9A6BB63264 /* SDL_x11video.c */; }; + 338D7DFE515B42686BA33874 /* SDL_x11window.c in Sources */ = {isa = PBXBuildFile; fileRef = 111D0E842DA26E0B16420249 /* SDL_x11window.c */; }; + 40DD09945F46241C46AD317A /* SDL_x11xinput2.c in Sources */ = {isa = PBXBuildFile; fileRef = 340B438574901D2053625299 /* SDL_x11xinput2.c */; }; + 1534489224852D230A1C3B61 /* edid-parse.c in Sources */ = {isa = PBXBuildFile; fileRef = 4A0D4F710FDE780140BA1A58 /* edid-parse.c */; }; + 2DE7276C55DC177D1FFD3CF4 /* imKStoUCS.c in Sources */ = {isa = PBXBuildFile; fileRef = 5E7A2C910B56578B68161E79 /* imKStoUCS.c */; }; + 7433560855935E4F3FF263F0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F7F3A2F781C7E4027BF10D0 /* AudioToolbox.framework */; }; + 6E565EE1442A3BFC4AFE75C6 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40FD602A0F7D70BA45F43D6B /* AudioUnit.framework */; }; + 3FEA46BE079446F867776B71 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A655E13466520DF29BF55A6 /* Cocoa.framework */; }; + 14D343403DC36AE437D9195D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 74AD246C59F62F2063FE6B8F /* CoreAudio.framework */; }; + 425302F6021B451911B44512 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E915DA675494CC65BAC159C /* IOKit.framework */; }; + 3ED608CE2822544E68372673 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 308A60C82BD87C2638C47377 /* Carbon.framework */; }; + 3FBE66251D11577638ED549A /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5702009549A31E003E2E5CF6 /* ForceFeedback.framework */; }; + 645E10F21FE63FE83F6652BC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F94036B274B6E9309345AF6 /* CoreFoundation.framework */; }; + 037D0C7B656434F579E54F0B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FAA70EE29303720292D57B6 /* OpenGL.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 40DE5BD04661156D57675BAF /* SDL.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL.c"; path = "../../../../src/SDL.c"; sourceTree = ""; }; + 797C5E120E96465D084D1803 /* SDL_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_assert.c"; path = "../../../../src/SDL_assert.c"; sourceTree = ""; }; + 638F519324853667452D26A6 /* SDL_assert_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_assert_c.h"; path = "../../../../src/SDL_assert_c.h"; sourceTree = ""; }; + 62EB566114EC180710563B61 /* SDL_error.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_error.c"; path = "../../../../src/SDL_error.c"; sourceTree = ""; }; + 03540C7B6E8B017734163178 /* SDL_error_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_error_c.h"; path = "../../../../src/SDL_error_c.h"; sourceTree = ""; }; + 5D633DEF28166D625DCD4EC6 /* SDL_hints.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_hints.c"; path = "../../../../src/SDL_hints.c"; sourceTree = ""; }; + 49545EB23967505C4C1F1F5F /* SDL_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_log.c"; path = "../../../../src/SDL_log.c"; sourceTree = ""; }; + 767256F16F7D79C038E41DCF /* SDL_atomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_atomic.c"; path = "../../../../src/atomic/SDL_atomic.c"; sourceTree = ""; }; + 753F026C2D846DEF73FC61B0 /* SDL_spinlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_spinlock.c"; path = "../../../../src/atomic/SDL_spinlock.c"; sourceTree = ""; }; + 6F143CF2601E131B5DEA62F6 /* SDL_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audio.c"; path = "../../../../src/audio/SDL_audio.c"; sourceTree = ""; }; + 11352FF17D70724A5DF0462C /* SDL_audio_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audio_c.h"; path = "../../../../src/audio/SDL_audio_c.h"; sourceTree = ""; }; + 07B907294E82663A7E91738C /* SDL_audiocvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiocvt.c"; path = "../../../../src/audio/SDL_audiocvt.c"; sourceTree = ""; }; + 5AAD4B726237251050431873 /* SDL_audiodev.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiodev.c"; path = "../../../../src/audio/SDL_audiodev.c"; sourceTree = ""; }; + 15895798549516351860492E /* SDL_audiodev_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audiodev_c.h"; path = "../../../../src/audio/SDL_audiodev_c.h"; sourceTree = ""; }; + 0D3062CE47BF5D5934AB598D /* SDL_audiomem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_audiomem.h"; path = "../../../../src/audio/SDL_audiomem.h"; sourceTree = ""; }; + 5B0759ED16B35B9A6B027892 /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_audiotypecvt.c"; path = "../../../../src/audio/SDL_audiotypecvt.c"; sourceTree = ""; }; + 2B8C7A19218A1FFC6D376B1D /* SDL_mixer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_mixer.c"; path = "../../../../src/audio/SDL_mixer.c"; sourceTree = ""; }; + 09E4653E4CD964410C0E71BA /* SDL_sysaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysaudio.h"; path = "../../../../src/audio/SDL_sysaudio.h"; sourceTree = ""; }; + 1D567D9642D94A6145E55558 /* SDL_wave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_wave.c"; path = "../../../../src/audio/SDL_wave.c"; sourceTree = ""; }; + 72EA0C2D69F77DBD33AB3C51 /* SDL_wave.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_wave.h"; path = "../../../../src/audio/SDL_wave.h"; sourceTree = ""; }; + 0D7A645338CD1BFD1E5D728F /* SDL_coreaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_coreaudio.c"; path = "../../../../src/audio/coreaudio/SDL_coreaudio.c"; sourceTree = ""; }; + 73190F7379966C4F40741823 /* SDL_coreaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_coreaudio.h"; path = "../../../../src/audio/coreaudio/SDL_coreaudio.h"; sourceTree = ""; }; + 7E9A6779675D116654DA5CB0 /* SDL_diskaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_diskaudio.c"; path = "../../../../src/audio/disk/SDL_diskaudio.c"; sourceTree = ""; }; + 05621EEA4E44078A77CB6A45 /* SDL_diskaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_diskaudio.h"; path = "../../../../src/audio/disk/SDL_diskaudio.h"; sourceTree = ""; }; + 79AC10FC31263C0868140F20 /* SDL_dummyaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dummyaudio.c"; path = "../../../../src/audio/dummy/SDL_dummyaudio.c"; sourceTree = ""; }; + 7E6F31A9587A54142A217C04 /* SDL_dummyaudio.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_dummyaudio.h"; path = "../../../../src/audio/dummy/SDL_dummyaudio.h"; sourceTree = ""; }; + 72EF5BB771227B3637235CF8 /* SDL_cpuinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_cpuinfo.c"; path = "../../../../src/cpuinfo/SDL_cpuinfo.c"; sourceTree = ""; }; + 07AB1E6A616157DA448246C0 /* SDL_clipboardevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_clipboardevents.c"; path = "../../../../src/events/SDL_clipboardevents.c"; sourceTree = ""; }; + 52A55FDD41493AD524FB1696 /* SDL_clipboardevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_clipboardevents_c.h"; path = "../../../../src/events/SDL_clipboardevents_c.h"; sourceTree = ""; }; + 5D7748773CB1127031D53492 /* SDL_dropevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dropevents.c"; path = "../../../../src/events/SDL_dropevents.c"; sourceTree = ""; }; + 13F62D526EDE359A23CC367D /* SDL_dropevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_dropevents_c.h"; path = "../../../../src/events/SDL_dropevents_c.h"; sourceTree = ""; }; + 5CD12CBF4D837A2735DA357A /* SDL_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_events.c"; path = "../../../../src/events/SDL_events.c"; sourceTree = ""; }; + 4D73610B1AC11DCF3B1E4198 /* SDL_events_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_events_c.h"; path = "../../../../src/events/SDL_events_c.h"; sourceTree = ""; }; + 6E8C6A11181536B54CDA3862 /* SDL_gesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_gesture.c"; path = "../../../../src/events/SDL_gesture.c"; sourceTree = ""; }; + 1FA64F67777D359A23951291 /* SDL_gesture_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gesture_c.h"; path = "../../../../src/events/SDL_gesture_c.h"; sourceTree = ""; }; + 228F5EB207C27065272F3B1E /* SDL_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_keyboard.c"; path = "../../../../src/events/SDL_keyboard.c"; sourceTree = ""; }; + 0E2F6FB174B949F503851218 /* SDL_keyboard_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_keyboard_c.h"; path = "../../../../src/events/SDL_keyboard_c.h"; sourceTree = ""; }; + 0D561615477231185657134D /* SDL_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_mouse.c"; path = "../../../../src/events/SDL_mouse.c"; sourceTree = ""; }; + 68F1352D56836C98215E4227 /* SDL_mouse_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_mouse_c.h"; path = "../../../../src/events/SDL_mouse_c.h"; sourceTree = ""; }; + 19351893793F509D77923EC4 /* SDL_quit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_quit.c"; path = "../../../../src/events/SDL_quit.c"; sourceTree = ""; }; + 28401483652C3C85648C2BD1 /* SDL_sysevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysevents.h"; path = "../../../../src/events/SDL_sysevents.h"; sourceTree = ""; }; + 406016940A0A2E5D164A56D5 /* SDL_touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_touch.c"; path = "../../../../src/events/SDL_touch.c"; sourceTree = ""; }; + 0678479A030E2101581305E5 /* SDL_touch_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_touch_c.h"; path = "../../../../src/events/SDL_touch_c.h"; sourceTree = ""; }; + 268F2B06517B6E4D1AB372BC /* SDL_windowevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_windowevents.c"; path = "../../../../src/events/SDL_windowevents.c"; sourceTree = ""; }; + 035A192D7417370353063DD7 /* SDL_windowevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_windowevents_c.h"; path = "../../../../src/events/SDL_windowevents_c.h"; sourceTree = ""; }; + 0470694A7E983CF449D36075 /* blank_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "blank_cursor.h"; path = "../../../../src/events/blank_cursor.h"; sourceTree = ""; }; + 591A4F1254B212904B054961 /* default_cursor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "default_cursor.h"; path = "../../../../src/events/default_cursor.h"; sourceTree = ""; }; + 001853AA40D9135D64046FB9 /* scancodes_darwin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_darwin.h"; path = "../../../../src/events/scancodes_darwin.h"; sourceTree = ""; }; + 73083A0333552D346ED96DCE /* scancodes_linux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_linux.h"; path = "../../../../src/events/scancodes_linux.h"; sourceTree = ""; }; + 230D64957D8D39B20C14260D /* scancodes_windows.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_windows.h"; path = "../../../../src/events/scancodes_windows.h"; sourceTree = ""; }; + 30CD0FD3107468C70017737E /* scancodes_xfree86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "scancodes_xfree86.h"; path = "../../../../src/events/scancodes_xfree86.h"; sourceTree = ""; }; + 5F7B20DF1BD236742BA56323 /* SDL_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rwops.c"; path = "../../../../src/file/SDL_rwops.c"; sourceTree = ""; }; + 16AF6B432BCC14366CF6238C /* SDL_rwopsbundlesupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rwopsbundlesupport.h"; path = "../../../../src/file/cocoa/SDL_rwopsbundlesupport.h"; sourceTree = ""; }; + 5D6F3B426BD93160262A1A0B /* SDL_rwopsbundlesupport.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_rwopsbundlesupport.m"; path = "../../../../src/file/cocoa/SDL_rwopsbundlesupport.m"; sourceTree = ""; }; + 3DFF58520B8305A67E5866F0 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_sysfilesystem.m"; path = "../../../../src/filesystem/cocoa/SDL_sysfilesystem.m"; sourceTree = ""; }; + 748B5BD12D28466142D36C04 /* SDL_haptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_haptic.c"; path = "../../../../src/haptic/SDL_haptic.c"; sourceTree = ""; }; + 0E4E25F2553245B308BB6B4E /* SDL_haptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_haptic_c.h"; path = "../../../../src/haptic/SDL_haptic_c.h"; sourceTree = ""; }; + 01FA4AE64BF015FF2FB464CD /* SDL_syshaptic.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_syshaptic.h"; path = "../../../../src/haptic/SDL_syshaptic.h"; sourceTree = ""; }; + 07875CF62CC235C2023B171E /* SDL_syshaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syshaptic.c"; path = "../../../../src/haptic/darwin/SDL_syshaptic.c"; sourceTree = ""; }; + 474463FC44D12D8266163B0C /* SDL_gamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_gamecontroller.c"; path = "../../../../src/joystick/SDL_gamecontroller.c"; sourceTree = ""; }; + 4C5A3AA4122614E54CF708AC /* SDL_gamecontrollerdb.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_gamecontrollerdb.h"; path = "../../../../src/joystick/SDL_gamecontrollerdb.h"; sourceTree = ""; }; + 0A51682775F7695826CC3AAD /* SDL_joystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_joystick.c"; path = "../../../../src/joystick/SDL_joystick.c"; sourceTree = ""; }; + 52A612A679915043020D2C12 /* SDL_joystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_joystick_c.h"; path = "../../../../src/joystick/SDL_joystick_c.h"; sourceTree = ""; }; + 0AE5451F199460984A49374D /* SDL_sysjoystick.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysjoystick.h"; path = "../../../../src/joystick/SDL_sysjoystick.h"; sourceTree = ""; }; + 362B7F38400724D4745D17C1 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysjoystick.c"; path = "../../../../src/joystick/darwin/SDL_sysjoystick.c"; sourceTree = ""; }; + 24E3589959C45B6570D82D57 /* SDL_sysjoystick_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysjoystick_c.h"; path = "../../../../src/joystick/darwin/SDL_sysjoystick_c.h"; sourceTree = ""; }; + 3E5A3557080276B82EE540D7 /* SDL_sysloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysloadso.c"; path = "../../../../src/loadso/dlopen/SDL_sysloadso.c"; sourceTree = ""; }; + 295B490053604A1B5F832E31 /* SDL_power.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_power.c"; path = "../../../../src/power/SDL_power.c"; sourceTree = ""; }; + 441A169052554B8C05B2780E /* SDL_syspower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syspower.c"; path = "../../../../src/power/macosx/SDL_syspower.c"; sourceTree = ""; }; + 125E7FE947363FCE78AB3920 /* SDL_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render.c"; path = "../../../../src/render/SDL_render.c"; sourceTree = ""; }; + 2A47449E0F2F77E169974EB5 /* SDL_sysrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysrender.h"; path = "../../../../src/render/SDL_sysrender.h"; sourceTree = ""; }; + 5EB1630859F568532C8C3792 /* SDL_yuv_mmx.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_yuv_mmx.c"; path = "../../../../src/render/SDL_yuv_mmx.c"; sourceTree = ""; }; + 08C15C7515050FDD2A886246 /* SDL_yuv_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_yuv_sw.c"; path = "../../../../src/render/SDL_yuv_sw.c"; sourceTree = ""; }; + 5BE06A7B5F230FFD60462447 /* SDL_yuv_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_yuv_sw_c.h"; path = "../../../../src/render/SDL_yuv_sw_c.h"; sourceTree = ""; }; + 62562839558A5DF23BDF37B0 /* mmx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "mmx.h"; path = "../../../../src/render/mmx.h"; sourceTree = ""; }; + 17FE29923E28546A02B34AF8 /* SDL_glfuncs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_glfuncs.h"; path = "../../../../src/render/opengl/SDL_glfuncs.h"; sourceTree = ""; }; + 66021F1B50BA0B215910589A /* SDL_render_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_gl.c"; path = "../../../../src/render/opengl/SDL_render_gl.c"; sourceTree = ""; }; + 51D64CC2780E096415426017 /* SDL_shaders_gl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_shaders_gl.c"; path = "../../../../src/render/opengl/SDL_shaders_gl.c"; sourceTree = ""; }; + 57AE68AC283B55A627FE263E /* SDL_shaders_gl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_shaders_gl.h"; path = "../../../../src/render/opengl/SDL_shaders_gl.h"; sourceTree = ""; }; + 36727BCA2F1D5437708B7454 /* SDL_blendfillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendfillrect.c"; path = "../../../../src/render/software/SDL_blendfillrect.c"; sourceTree = ""; }; + 778563EC2EB8351B1A7437EF /* SDL_blendfillrect.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendfillrect.h"; path = "../../../../src/render/software/SDL_blendfillrect.h"; sourceTree = ""; }; + 66C5268A542E341900F55A35 /* SDL_blendline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendline.c"; path = "../../../../src/render/software/SDL_blendline.c"; sourceTree = ""; }; + 2CC400BF23A8022D69D20E92 /* SDL_blendline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendline.h"; path = "../../../../src/render/software/SDL_blendline.h"; sourceTree = ""; }; + 5482361F3563048574A46DB9 /* SDL_blendpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blendpoint.c"; path = "../../../../src/render/software/SDL_blendpoint.c"; sourceTree = ""; }; + 6487779022F92FDD61BF4F81 /* SDL_blendpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blendpoint.h"; path = "../../../../src/render/software/SDL_blendpoint.h"; sourceTree = ""; }; + 572556393F5D7E9C59A70B85 /* SDL_draw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_draw.h"; path = "../../../../src/render/software/SDL_draw.h"; sourceTree = ""; }; + 61C21D5077C07E4904B51C90 /* SDL_drawline.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_drawline.c"; path = "../../../../src/render/software/SDL_drawline.c"; sourceTree = ""; }; + 3A534994363818EE461314CD /* SDL_drawline.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_drawline.h"; path = "../../../../src/render/software/SDL_drawline.h"; sourceTree = ""; }; + 59D62A724BBF27CC59231297 /* SDL_drawpoint.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_drawpoint.c"; path = "../../../../src/render/software/SDL_drawpoint.c"; sourceTree = ""; }; + 7F242EF90A1711F051270B6A /* SDL_drawpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_drawpoint.h"; path = "../../../../src/render/software/SDL_drawpoint.h"; sourceTree = ""; }; + 0FFF44745C270A0C4F730726 /* SDL_render_sw.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_render_sw.c"; path = "../../../../src/render/software/SDL_render_sw.c"; sourceTree = ""; }; + 5E736E9C457F4F227F0D63CF /* SDL_render_sw_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_render_sw_c.h"; path = "../../../../src/render/software/SDL_render_sw_c.h"; sourceTree = ""; }; + 421F406A12633DAC795C1EB3 /* SDL_rotate.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rotate.c"; path = "../../../../src/render/software/SDL_rotate.c"; sourceTree = ""; }; + 01921DE55298202024E96745 /* SDL_rotate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rotate.h"; path = "../../../../src/render/software/SDL_rotate.h"; sourceTree = ""; }; + 4BC907785D5E6668627E78DE /* SDL_getenv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_getenv.c"; path = "../../../../src/stdlib/SDL_getenv.c"; sourceTree = ""; }; + 77815DDD6F364C510AC25CB6 /* SDL_iconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_iconv.c"; path = "../../../../src/stdlib/SDL_iconv.c"; sourceTree = ""; }; + 3F8275E71B900C7D074949FC /* SDL_malloc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_malloc.c"; path = "../../../../src/stdlib/SDL_malloc.c"; sourceTree = ""; }; + 07251EE10156492D512F75F3 /* SDL_qsort.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_qsort.c"; path = "../../../../src/stdlib/SDL_qsort.c"; sourceTree = ""; }; + 57323D836A0E78552E015D8E /* SDL_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_stdlib.c"; path = "../../../../src/stdlib/SDL_stdlib.c"; sourceTree = ""; }; + 57F4780F2A47469D23006DD1 /* SDL_string.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_string.c"; path = "../../../../src/stdlib/SDL_string.c"; sourceTree = ""; }; + 2EB6434034986F5230BE1635 /* SDL_systhread.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_systhread.h"; path = "../../../../src/thread/SDL_systhread.h"; sourceTree = ""; }; + 08FF4C92289179BB0EDF765E /* SDL_thread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_thread.c"; path = "../../../../src/thread/SDL_thread.c"; sourceTree = ""; }; + 2CA925B6783314DA18E16F8B /* SDL_thread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_thread_c.h"; path = "../../../../src/thread/SDL_thread_c.h"; sourceTree = ""; }; + 04D200E634516AF92074244C /* SDL_syscond.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syscond.c"; path = "../../../../src/thread/pthread/SDL_syscond.c"; sourceTree = ""; }; + 5CC65F3A65EF32EE5C773558 /* SDL_sysmutex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_sysmutex.c"; path = "../../../../src/thread/pthread/SDL_sysmutex.c"; sourceTree = ""; }; + 12F254797C1631F41D3137F8 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysmutex_c.h"; path = "../../../../src/thread/pthread/SDL_sysmutex_c.h"; sourceTree = ""; }; + 05D36048404E42022A7E4127 /* SDL_syssem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_syssem.c"; path = "../../../../src/thread/pthread/SDL_syssem.c"; sourceTree = ""; }; + 17B31E2F2CC55CBC6F0A1D9B /* SDL_systhread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systhread.c"; path = "../../../../src/thread/pthread/SDL_systhread.c"; sourceTree = ""; }; + 02B428D53F1D18F262D463B0 /* SDL_systhread_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_systhread_c.h"; path = "../../../../src/thread/pthread/SDL_systhread_c.h"; sourceTree = ""; }; + 41E150D956EA3AD510743873 /* SDL_systls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systls.c"; path = "../../../../src/thread/pthread/SDL_systls.c"; sourceTree = ""; }; + 41B156D22A535379479747CB /* SDL_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_timer.c"; path = "../../../../src/timer/SDL_timer.c"; sourceTree = ""; }; + 002C537968C9193840B53AEE /* SDL_timer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_timer_c.h"; path = "../../../../src/timer/SDL_timer_c.h"; sourceTree = ""; }; + 459149F92FC6055B32F7153F /* SDL_systimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_systimer.c"; path = "../../../../src/timer/unix/SDL_systimer.c"; sourceTree = ""; }; + 4A9716005FF9561D2C3F6284 /* SDL_RLEaccel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_RLEaccel.c"; path = "../../../../src/video/SDL_RLEaccel.c"; sourceTree = ""; }; + 50AD3AC235DA7BFB41AC2EF0 /* SDL_RLEaccel_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_RLEaccel_c.h"; path = "../../../../src/video/SDL_RLEaccel_c.h"; sourceTree = ""; }; + 3B0568EE0EB87B3019C24A16 /* SDL_blit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit.c"; path = "../../../../src/video/SDL_blit.c"; sourceTree = ""; }; + 513C6936649F3988151A60EC /* SDL_blit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit.h"; path = "../../../../src/video/SDL_blit.h"; sourceTree = ""; }; + 3EC71493552F0AB6601B4921 /* SDL_blit_0.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_0.c"; path = "../../../../src/video/SDL_blit_0.c"; sourceTree = ""; }; + 7D16555224CA08DB629F3ED1 /* SDL_blit_1.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_1.c"; path = "../../../../src/video/SDL_blit_1.c"; sourceTree = ""; }; + 296F6626753E62AE4A57408A /* SDL_blit_A.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_A.c"; path = "../../../../src/video/SDL_blit_A.c"; sourceTree = ""; }; + 02A05727533149171EF6318C /* SDL_blit_N.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_N.c"; path = "../../../../src/video/SDL_blit_N.c"; sourceTree = ""; }; + 2B90062B1FBE1B1865A01BF8 /* SDL_blit_auto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_auto.c"; path = "../../../../src/video/SDL_blit_auto.c"; sourceTree = ""; }; + 690F65987ABC73935FA163B9 /* SDL_blit_auto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_auto.h"; path = "../../../../src/video/SDL_blit_auto.h"; sourceTree = ""; }; + 1DD33CE21E6B143616A13AF1 /* SDL_blit_copy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_copy.c"; path = "../../../../src/video/SDL_blit_copy.c"; sourceTree = ""; }; + 5919276F7CBC2D445BDC0505 /* SDL_blit_copy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_copy.h"; path = "../../../../src/video/SDL_blit_copy.h"; sourceTree = ""; }; + 1CA1189B180060246D2B3B37 /* SDL_blit_slow.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_blit_slow.c"; path = "../../../../src/video/SDL_blit_slow.c"; sourceTree = ""; }; + 560565CD15672ED06F9355B1 /* SDL_blit_slow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_blit_slow.h"; path = "../../../../src/video/SDL_blit_slow.h"; sourceTree = ""; }; + 6F5D7EFD4E2B79D45E1B51E3 /* SDL_bmp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_bmp.c"; path = "../../../../src/video/SDL_bmp.c"; sourceTree = ""; }; + 164801C9489C07724F6A784E /* SDL_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_clipboard.c"; path = "../../../../src/video/SDL_clipboard.c"; sourceTree = ""; }; + 286B34BD2239541E1ABF7B58 /* SDL_egl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_egl.c"; path = "../../../../src/video/SDL_egl.c"; sourceTree = ""; }; + 290B131F70BA5F6766C05FCB /* SDL_egl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_egl.h"; path = "../../../../src/video/SDL_egl.h"; sourceTree = ""; }; + 2F9B71653C254E7E388808C5 /* SDL_fillrect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_fillrect.c"; path = "../../../../src/video/SDL_fillrect.c"; sourceTree = ""; }; + 7F9D4C460D482A96620971F4 /* SDL_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_pixels.c"; path = "../../../../src/video/SDL_pixels.c"; sourceTree = ""; }; + 2FFC595E3D4133F946C128EE /* SDL_pixels_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_pixels_c.h"; path = "../../../../src/video/SDL_pixels_c.h"; sourceTree = ""; }; + 366D6F2633EA002441056CC7 /* SDL_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_rect.c"; path = "../../../../src/video/SDL_rect.c"; sourceTree = ""; }; + 0FBC1056267369394FF37EE2 /* SDL_rect_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_rect_c.h"; path = "../../../../src/video/SDL_rect_c.h"; sourceTree = ""; }; + 349E213D6BCD6E7D754918E0 /* SDL_shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_shape.c"; path = "../../../../src/video/SDL_shape.c"; sourceTree = ""; }; + 6FB7747B56EB06143A9E7D56 /* SDL_shape_internals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_shape_internals.h"; path = "../../../../src/video/SDL_shape_internals.h"; sourceTree = ""; }; + 334B22626BDE407C402A36B6 /* SDL_stretch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_stretch.c"; path = "../../../../src/video/SDL_stretch.c"; sourceTree = ""; }; + 34EE3252493E44852C6F4D1A /* SDL_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_surface.c"; path = "../../../../src/video/SDL_surface.c"; sourceTree = ""; }; + 3C320390064404981FE12D62 /* SDL_sysvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_sysvideo.h"; path = "../../../../src/video/SDL_sysvideo.h"; sourceTree = ""; }; + 124B099C775D350017963585 /* SDL_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_video.c"; path = "../../../../src/video/SDL_video.c"; sourceTree = ""; }; + 060616512B17276042FD01B1 /* SDL_cocoaclipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoaclipboard.h"; path = "../../../../src/video/cocoa/SDL_cocoaclipboard.h"; sourceTree = ""; }; + 118A36F07D45647F0A084319 /* SDL_cocoaclipboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoaclipboard.m"; path = "../../../../src/video/cocoa/SDL_cocoaclipboard.m"; sourceTree = ""; }; + 1BF249306FDF58717F8A67FE /* SDL_cocoaevents.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoaevents.h"; path = "../../../../src/video/cocoa/SDL_cocoaevents.h"; sourceTree = ""; }; + 6C224B440FCA2C1F2C3C1FAE /* SDL_cocoaevents.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoaevents.m"; path = "../../../../src/video/cocoa/SDL_cocoaevents.m"; sourceTree = ""; }; + 1DA20CF07FEB53241C877551 /* SDL_cocoakeyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoakeyboard.h"; path = "../../../../src/video/cocoa/SDL_cocoakeyboard.h"; sourceTree = ""; }; + 4402087F5CB90F317D9208D2 /* SDL_cocoakeyboard.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoakeyboard.m"; path = "../../../../src/video/cocoa/SDL_cocoakeyboard.m"; sourceTree = ""; }; + 20DB49010B275E054D963ABC /* SDL_cocoamessagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamessagebox.h"; path = "../../../../src/video/cocoa/SDL_cocoamessagebox.h"; sourceTree = ""; }; + 4BFF56C82567424C3CF4591E /* SDL_cocoamessagebox.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamessagebox.m"; path = "../../../../src/video/cocoa/SDL_cocoamessagebox.m"; sourceTree = ""; }; + 668468D44E1637670A5F108D /* SDL_cocoamodes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamodes.h"; path = "../../../../src/video/cocoa/SDL_cocoamodes.h"; sourceTree = ""; }; + 57B60C7A316B6B5A70D13C82 /* SDL_cocoamodes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamodes.m"; path = "../../../../src/video/cocoa/SDL_cocoamodes.m"; sourceTree = ""; }; + 759F34624091186A729C6F35 /* SDL_cocoamouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamouse.h"; path = "../../../../src/video/cocoa/SDL_cocoamouse.h"; sourceTree = ""; }; + 309C0186189D062A37BF5FB6 /* SDL_cocoamouse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamouse.m"; path = "../../../../src/video/cocoa/SDL_cocoamouse.m"; sourceTree = ""; }; + 21076E4577D20D1D0FAC6ABB /* SDL_cocoamousetap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoamousetap.h"; path = "../../../../src/video/cocoa/SDL_cocoamousetap.h"; sourceTree = ""; }; + 57283DDA43F325E829A27FBA /* SDL_cocoamousetap.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoamousetap.m"; path = "../../../../src/video/cocoa/SDL_cocoamousetap.m"; sourceTree = ""; }; + 6A147ACC11C6742F76C2435F /* SDL_cocoaopengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoaopengl.h"; path = "../../../../src/video/cocoa/SDL_cocoaopengl.h"; sourceTree = ""; }; + 361747734F387130393F605F /* SDL_cocoaopengl.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoaopengl.m"; path = "../../../../src/video/cocoa/SDL_cocoaopengl.m"; sourceTree = ""; }; + 783F00DE129C679D07016043 /* SDL_cocoashape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoashape.h"; path = "../../../../src/video/cocoa/SDL_cocoashape.h"; sourceTree = ""; }; + 7DCD3646470A681D7025162E /* SDL_cocoashape.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoashape.m"; path = "../../../../src/video/cocoa/SDL_cocoashape.m"; sourceTree = ""; }; + 6C2671F8747628C0054C5B51 /* SDL_cocoavideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoavideo.h"; path = "../../../../src/video/cocoa/SDL_cocoavideo.h"; sourceTree = ""; }; + 3617606E15EE572C173C7BE1 /* SDL_cocoavideo.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoavideo.m"; path = "../../../../src/video/cocoa/SDL_cocoavideo.m"; sourceTree = ""; }; + 178524292FDA124263861BDD /* SDL_cocoawindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_cocoawindow.h"; path = "../../../../src/video/cocoa/SDL_cocoawindow.h"; sourceTree = ""; }; + 7CE067B94CD974F17E692018 /* SDL_cocoawindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "SDL_cocoawindow.m"; path = "../../../../src/video/cocoa/SDL_cocoawindow.m"; sourceTree = ""; }; + 4AC7612F064013A35D2E0F0E /* SDL_nullevents.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullevents.c"; path = "../../../../src/video/dummy/SDL_nullevents.c"; sourceTree = ""; }; + 63C755A43CB542DE343127F2 /* SDL_nullevents_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullevents_c.h"; path = "../../../../src/video/dummy/SDL_nullevents_c.h"; sourceTree = ""; }; + 137B7080251D541D4486734D /* SDL_nullframebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullframebuffer.c"; path = "../../../../src/video/dummy/SDL_nullframebuffer.c"; sourceTree = ""; }; + 288F77CC00F211760DDC1D83 /* SDL_nullframebuffer_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullframebuffer_c.h"; path = "../../../../src/video/dummy/SDL_nullframebuffer_c.h"; sourceTree = ""; }; + 0B7016F553F306D600E0142E /* SDL_nullvideo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_nullvideo.c"; path = "../../../../src/video/dummy/SDL_nullvideo.c"; sourceTree = ""; }; + 6D68605324C17B1C176C6552 /* SDL_nullvideo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_nullvideo.h"; path = "../../../../src/video/dummy/SDL_nullvideo.h"; sourceTree = ""; }; + 614F0C224A9920122B861F1E /* SDL_x11clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11clipboard.c"; path = "../../../../src/video/x11/SDL_x11clipboard.c"; sourceTree = ""; }; + 399A2DE06000601936783D4A /* SDL_x11clipboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11clipboard.h"; path = "../../../../src/video/x11/SDL_x11clipboard.h"; sourceTree = ""; }; + 040245A23E4C1DB56C671C11 /* SDL_x11dyn.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11dyn.c"; path = "../../../../src/video/x11/SDL_x11dyn.c"; sourceTree = ""; }; + 059C757C2A7C42BC023E690B /* SDL_x11dyn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11dyn.h"; path = "../../../../src/video/x11/SDL_x11dyn.h"; sourceTree = ""; }; + 0D4B39C02DBE3C111ADF6469 /* SDL_x11events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11events.c"; path = "../../../../src/video/x11/SDL_x11events.c"; sourceTree = ""; }; + 2CCB7E6732185E317FD44176 /* SDL_x11events.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11events.h"; path = "../../../../src/video/x11/SDL_x11events.h"; sourceTree = ""; }; + 4AC63B92198A385F654F2730 /* SDL_x11framebuffer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11framebuffer.c"; path = "../../../../src/video/x11/SDL_x11framebuffer.c"; sourceTree = ""; }; + 206234E53298196560965544 /* SDL_x11framebuffer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11framebuffer.h"; path = "../../../../src/video/x11/SDL_x11framebuffer.h"; sourceTree = ""; }; + 0DDF62C0484127D723E24C22 /* SDL_x11keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11keyboard.c"; path = "../../../../src/video/x11/SDL_x11keyboard.c"; sourceTree = ""; }; + 5B580F5260F8682D7AA64832 /* SDL_x11keyboard.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11keyboard.h"; path = "../../../../src/video/x11/SDL_x11keyboard.h"; sourceTree = ""; }; + 707F3FE15B0D494E51614B58 /* SDL_x11messagebox.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11messagebox.c"; path = "../../../../src/video/x11/SDL_x11messagebox.c"; sourceTree = ""; }; + 60CA27DD2C8E30F264EB0997 /* SDL_x11messagebox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11messagebox.h"; path = "../../../../src/video/x11/SDL_x11messagebox.h"; sourceTree = ""; }; + 1BA837F00E275AC823F41E55 /* SDL_x11modes.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11modes.c"; path = "../../../../src/video/x11/SDL_x11modes.c"; sourceTree = ""; }; + 6AAF0AD5604B1AAB0FB6170D /* SDL_x11modes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11modes.h"; path = "../../../../src/video/x11/SDL_x11modes.h"; sourceTree = ""; }; + 084A624F52C129A670684094 /* SDL_x11mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11mouse.c"; path = "../../../../src/video/x11/SDL_x11mouse.c"; sourceTree = ""; }; + 23C57CFD064060004E6C387C /* SDL_x11mouse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11mouse.h"; path = "../../../../src/video/x11/SDL_x11mouse.h"; sourceTree = ""; }; + 6956132B6EDD79D6109E23B6 /* SDL_x11opengl.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11opengl.c"; path = "../../../../src/video/x11/SDL_x11opengl.c"; sourceTree = ""; }; + 60BB3DF13E553FAB137C4B0A /* SDL_x11opengl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11opengl.h"; path = "../../../../src/video/x11/SDL_x11opengl.h"; sourceTree = ""; }; + 23EC7FEA7AAA67186D60469D /* SDL_x11opengles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11opengles.c"; path = "../../../../src/video/x11/SDL_x11opengles.c"; sourceTree = ""; }; + 43F86B58694D59666A07115C /* SDL_x11opengles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11opengles.h"; path = "../../../../src/video/x11/SDL_x11opengles.h"; sourceTree = ""; }; + 541017773B6D0CC30C7F69F4 /* SDL_x11shape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11shape.c"; path = "../../../../src/video/x11/SDL_x11shape.c"; sourceTree = ""; }; + 3ACC5687711255007BE25E16 /* SDL_x11shape.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11shape.h"; path = "../../../../src/video/x11/SDL_x11shape.h"; sourceTree = ""; }; + 08917B4A65B374165A8D7CA7 /* SDL_x11sym.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11sym.h"; path = "../../../../src/video/x11/SDL_x11sym.h"; sourceTree = ""; }; + 4FC145BC3C6D3F3C2D155C4E /* SDL_x11touch.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11touch.c"; path = "../../../../src/video/x11/SDL_x11touch.c"; sourceTree = ""; }; + 15EC5DBC74317D5E53A73032 /* SDL_x11touch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11touch.h"; path = "../../../../src/video/x11/SDL_x11touch.h"; sourceTree = ""; }; + 604D13500B247C9A6BB63264 /* SDL_x11video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11video.c"; path = "../../../../src/video/x11/SDL_x11video.c"; sourceTree = ""; }; + 349740341E72620B45A369AF /* SDL_x11video.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11video.h"; path = "../../../../src/video/x11/SDL_x11video.h"; sourceTree = ""; }; + 111D0E842DA26E0B16420249 /* SDL_x11window.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11window.c"; path = "../../../../src/video/x11/SDL_x11window.c"; sourceTree = ""; }; + 6B743871116A4AB56E080B6B /* SDL_x11window.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11window.h"; path = "../../../../src/video/x11/SDL_x11window.h"; sourceTree = ""; }; + 340B438574901D2053625299 /* SDL_x11xinput2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_x11xinput2.c"; path = "../../../../src/video/x11/SDL_x11xinput2.c"; sourceTree = ""; }; + 44386B3D1989253225166350 /* SDL_x11xinput2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SDL_x11xinput2.h"; path = "../../../../src/video/x11/SDL_x11xinput2.h"; sourceTree = ""; }; + 4A0D4F710FDE780140BA1A58 /* edid-parse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "edid-parse.c"; path = "../../../../src/video/x11/edid-parse.c"; sourceTree = ""; }; + 1694525C1D4C0F3F7E4D2A55 /* edid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "edid.h"; path = "../../../../src/video/x11/edid.h"; sourceTree = ""; }; + 5E7A2C910B56578B68161E79 /* imKStoUCS.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "imKStoUCS.c"; path = "../../../../src/video/x11/imKStoUCS.c"; sourceTree = ""; }; + 3A4F505E5178406759050FE3 /* imKStoUCS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "imKStoUCS.h"; path = "../../../../src/video/x11/imKStoUCS.h"; sourceTree = ""; }; + 4F7F3A2F781C7E4027BF10D0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 40FD602A0F7D70BA45F43D6B /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 4A655E13466520DF29BF55A6 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 74AD246C59F62F2063FE6B8F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3E915DA675494CC65BAC159C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 308A60C82BD87C2638C47377 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 5702009549A31E003E2E5CF6 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 6F94036B274B6E9309345AF6 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 3FAA70EE29303720292D57B6 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5E6D56F6655337845A3C44C3 /* libSDL2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2.a"; path = "libSDL2.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 46BD5DD60E4D1C967C4D37B5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7433560855935E4F3FF263F0 /* AudioToolbox.framework in Frameworks */, + 6E565EE1442A3BFC4AFE75C6 /* AudioUnit.framework in Frameworks */, + 3FEA46BE079446F867776B71 /* Cocoa.framework in Frameworks */, + 14D343403DC36AE437D9195D /* CoreAudio.framework in Frameworks */, + 425302F6021B451911B44512 /* IOKit.framework in Frameworks */, + 3ED608CE2822544E68372673 /* Carbon.framework in Frameworks */, + 3FBE66251D11577638ED549A /* ForceFeedback.framework in Frameworks */, + 645E10F21FE63FE83F6652BC /* CoreFoundation.framework in Frameworks */, + 037D0C7B656434F579E54F0B /* OpenGL.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 4B82442500AD66E9511E4477 /* SDL2 */ = { + isa = PBXGroup; + children = ( + 17395AA46F54263E6227053E /* src */, + 00C87F695E6008491AE07997 /* Frameworks */, + 7350255647C236722E191910 /* Products */, + ); + name = "SDL2"; + sourceTree = ""; + }; + 17395AA46F54263E6227053E /* src */ = { + isa = PBXGroup; + children = ( + 40DE5BD04661156D57675BAF /* SDL.c */, + 797C5E120E96465D084D1803 /* SDL_assert.c */, + 638F519324853667452D26A6 /* SDL_assert_c.h */, + 62EB566114EC180710563B61 /* SDL_error.c */, + 03540C7B6E8B017734163178 /* SDL_error_c.h */, + 5D633DEF28166D625DCD4EC6 /* SDL_hints.c */, + 49545EB23967505C4C1F1F5F /* SDL_log.c */, + 5A780DF9723E73833D560303 /* atomic */, + 2DC85AA0546028D424DC6D20 /* audio */, + 78E67A6468AF4EB152A63C43 /* cpuinfo */, + 454E26BC1DF07D5F195D592A /* events */, + 122E4699249C244C209B21D0 /* file */, + 452C6BD4333446C007F91D01 /* filesystem */, + 1C9E0A4626382C686BCB725F /* haptic */, + 3CBE6794538D07AF210B5EB9 /* joystick */, + 623A006118F66E9E55E732A9 /* loadso */, + 51CF04382D3868620004229B /* power */, + 09FF04F515D7781763C9538C /* render */, + 118E17D14A6A08B06E140E8D /* stdlib */, + 1871607C2177284C38DD40C0 /* thread */, + 3B4552CF25482CBF44317F63 /* timer */, + 5A047E267DFC3D2E40315F8D /* video */, + ); + name = "src"; + sourceTree = ""; + }; + 5A780DF9723E73833D560303 /* atomic */ = { + isa = PBXGroup; + children = ( + 767256F16F7D79C038E41DCF /* SDL_atomic.c */, + 753F026C2D846DEF73FC61B0 /* SDL_spinlock.c */, + ); + name = "atomic"; + sourceTree = ""; + }; + 2DC85AA0546028D424DC6D20 /* audio */ = { + isa = PBXGroup; + children = ( + 6F143CF2601E131B5DEA62F6 /* SDL_audio.c */, + 11352FF17D70724A5DF0462C /* SDL_audio_c.h */, + 07B907294E82663A7E91738C /* SDL_audiocvt.c */, + 5AAD4B726237251050431873 /* SDL_audiodev.c */, + 15895798549516351860492E /* SDL_audiodev_c.h */, + 0D3062CE47BF5D5934AB598D /* SDL_audiomem.h */, + 5B0759ED16B35B9A6B027892 /* SDL_audiotypecvt.c */, + 2B8C7A19218A1FFC6D376B1D /* SDL_mixer.c */, + 09E4653E4CD964410C0E71BA /* SDL_sysaudio.h */, + 1D567D9642D94A6145E55558 /* SDL_wave.c */, + 72EA0C2D69F77DBD33AB3C51 /* SDL_wave.h */, + 0762522E62310E3157CD6C29 /* coreaudio */, + 549536CA29A8708A1EB63F2C /* disk */, + 63A97DAC57A8739404E36686 /* dummy */, + ); + name = "audio"; + sourceTree = ""; + }; + 0762522E62310E3157CD6C29 /* coreaudio */ = { + isa = PBXGroup; + children = ( + 0D7A645338CD1BFD1E5D728F /* SDL_coreaudio.c */, + 73190F7379966C4F40741823 /* SDL_coreaudio.h */, + ); + name = "coreaudio"; + sourceTree = ""; + }; + 549536CA29A8708A1EB63F2C /* disk */ = { + isa = PBXGroup; + children = ( + 7E9A6779675D116654DA5CB0 /* SDL_diskaudio.c */, + 05621EEA4E44078A77CB6A45 /* SDL_diskaudio.h */, + ); + name = "disk"; + sourceTree = ""; + }; + 63A97DAC57A8739404E36686 /* dummy */ = { + isa = PBXGroup; + children = ( + 79AC10FC31263C0868140F20 /* SDL_dummyaudio.c */, + 7E6F31A9587A54142A217C04 /* SDL_dummyaudio.h */, + ); + name = "dummy"; + sourceTree = ""; + }; + 78E67A6468AF4EB152A63C43 /* cpuinfo */ = { + isa = PBXGroup; + children = ( + 72EF5BB771227B3637235CF8 /* SDL_cpuinfo.c */, + ); + name = "cpuinfo"; + sourceTree = ""; + }; + 454E26BC1DF07D5F195D592A /* events */ = { + isa = PBXGroup; + children = ( + 07AB1E6A616157DA448246C0 /* SDL_clipboardevents.c */, + 52A55FDD41493AD524FB1696 /* SDL_clipboardevents_c.h */, + 5D7748773CB1127031D53492 /* SDL_dropevents.c */, + 13F62D526EDE359A23CC367D /* SDL_dropevents_c.h */, + 5CD12CBF4D837A2735DA357A /* SDL_events.c */, + 4D73610B1AC11DCF3B1E4198 /* SDL_events_c.h */, + 6E8C6A11181536B54CDA3862 /* SDL_gesture.c */, + 1FA64F67777D359A23951291 /* SDL_gesture_c.h */, + 228F5EB207C27065272F3B1E /* SDL_keyboard.c */, + 0E2F6FB174B949F503851218 /* SDL_keyboard_c.h */, + 0D561615477231185657134D /* SDL_mouse.c */, + 68F1352D56836C98215E4227 /* SDL_mouse_c.h */, + 19351893793F509D77923EC4 /* SDL_quit.c */, + 28401483652C3C85648C2BD1 /* SDL_sysevents.h */, + 406016940A0A2E5D164A56D5 /* SDL_touch.c */, + 0678479A030E2101581305E5 /* SDL_touch_c.h */, + 268F2B06517B6E4D1AB372BC /* SDL_windowevents.c */, + 035A192D7417370353063DD7 /* SDL_windowevents_c.h */, + 0470694A7E983CF449D36075 /* blank_cursor.h */, + 591A4F1254B212904B054961 /* default_cursor.h */, + 001853AA40D9135D64046FB9 /* scancodes_darwin.h */, + 73083A0333552D346ED96DCE /* scancodes_linux.h */, + 230D64957D8D39B20C14260D /* scancodes_windows.h */, + 30CD0FD3107468C70017737E /* scancodes_xfree86.h */, + ); + name = "events"; + sourceTree = ""; + }; + 122E4699249C244C209B21D0 /* file */ = { + isa = PBXGroup; + children = ( + 5F7B20DF1BD236742BA56323 /* SDL_rwops.c */, + 3427000018D029490CBA1C78 /* cocoa */, + ); + name = "file"; + sourceTree = ""; + }; + 3427000018D029490CBA1C78 /* cocoa */ = { + isa = PBXGroup; + children = ( + 16AF6B432BCC14366CF6238C /* SDL_rwopsbundlesupport.h */, + 5D6F3B426BD93160262A1A0B /* SDL_rwopsbundlesupport.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 452C6BD4333446C007F91D01 /* filesystem */ = { + isa = PBXGroup; + children = ( + 5C2B189A4755342D1C8E5F29 /* cocoa */, + ); + name = "filesystem"; + sourceTree = ""; + }; + 5C2B189A4755342D1C8E5F29 /* cocoa */ = { + isa = PBXGroup; + children = ( + 3DFF58520B8305A67E5866F0 /* SDL_sysfilesystem.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 1C9E0A4626382C686BCB725F /* haptic */ = { + isa = PBXGroup; + children = ( + 748B5BD12D28466142D36C04 /* SDL_haptic.c */, + 0E4E25F2553245B308BB6B4E /* SDL_haptic_c.h */, + 01FA4AE64BF015FF2FB464CD /* SDL_syshaptic.h */, + 01D950AF3C225E506E61367D /* darwin */, + ); + name = "haptic"; + sourceTree = ""; + }; + 01D950AF3C225E506E61367D /* darwin */ = { + isa = PBXGroup; + children = ( + 07875CF62CC235C2023B171E /* SDL_syshaptic.c */, + ); + name = "darwin"; + sourceTree = ""; + }; + 3CBE6794538D07AF210B5EB9 /* joystick */ = { + isa = PBXGroup; + children = ( + 474463FC44D12D8266163B0C /* SDL_gamecontroller.c */, + 4C5A3AA4122614E54CF708AC /* SDL_gamecontrollerdb.h */, + 0A51682775F7695826CC3AAD /* SDL_joystick.c */, + 52A612A679915043020D2C12 /* SDL_joystick_c.h */, + 0AE5451F199460984A49374D /* SDL_sysjoystick.h */, + 25E36E6139AB47A6023F0D77 /* darwin */, + ); + name = "joystick"; + sourceTree = ""; + }; + 25E36E6139AB47A6023F0D77 /* darwin */ = { + isa = PBXGroup; + children = ( + 362B7F38400724D4745D17C1 /* SDL_sysjoystick.c */, + 24E3589959C45B6570D82D57 /* SDL_sysjoystick_c.h */, + ); + name = "darwin"; + sourceTree = ""; + }; + 623A006118F66E9E55E732A9 /* loadso */ = { + isa = PBXGroup; + children = ( + 1DD26900286468133DF265A7 /* dlopen */, + ); + name = "loadso"; + sourceTree = ""; + }; + 1DD26900286468133DF265A7 /* dlopen */ = { + isa = PBXGroup; + children = ( + 3E5A3557080276B82EE540D7 /* SDL_sysloadso.c */, + ); + name = "dlopen"; + sourceTree = ""; + }; + 51CF04382D3868620004229B /* power */ = { + isa = PBXGroup; + children = ( + 295B490053604A1B5F832E31 /* SDL_power.c */, + 14B673246C873468194B4A36 /* macosx */, + ); + name = "power"; + sourceTree = ""; + }; + 14B673246C873468194B4A36 /* macosx */ = { + isa = PBXGroup; + children = ( + 441A169052554B8C05B2780E /* SDL_syspower.c */, + ); + name = "macosx"; + sourceTree = ""; + }; + 09FF04F515D7781763C9538C /* render */ = { + isa = PBXGroup; + children = ( + 125E7FE947363FCE78AB3920 /* SDL_render.c */, + 2A47449E0F2F77E169974EB5 /* SDL_sysrender.h */, + 5EB1630859F568532C8C3792 /* SDL_yuv_mmx.c */, + 08C15C7515050FDD2A886246 /* SDL_yuv_sw.c */, + 5BE06A7B5F230FFD60462447 /* SDL_yuv_sw_c.h */, + 62562839558A5DF23BDF37B0 /* mmx.h */, + 1008356C4F894076165C145B /* opengl */, + 396943EC65A070023833287B /* software */, + ); + name = "render"; + sourceTree = ""; + }; + 1008356C4F894076165C145B /* opengl */ = { + isa = PBXGroup; + children = ( + 17FE29923E28546A02B34AF8 /* SDL_glfuncs.h */, + 66021F1B50BA0B215910589A /* SDL_render_gl.c */, + 51D64CC2780E096415426017 /* SDL_shaders_gl.c */, + 57AE68AC283B55A627FE263E /* SDL_shaders_gl.h */, + ); + name = "opengl"; + sourceTree = ""; + }; + 396943EC65A070023833287B /* software */ = { + isa = PBXGroup; + children = ( + 36727BCA2F1D5437708B7454 /* SDL_blendfillrect.c */, + 778563EC2EB8351B1A7437EF /* SDL_blendfillrect.h */, + 66C5268A542E341900F55A35 /* SDL_blendline.c */, + 2CC400BF23A8022D69D20E92 /* SDL_blendline.h */, + 5482361F3563048574A46DB9 /* SDL_blendpoint.c */, + 6487779022F92FDD61BF4F81 /* SDL_blendpoint.h */, + 572556393F5D7E9C59A70B85 /* SDL_draw.h */, + 61C21D5077C07E4904B51C90 /* SDL_drawline.c */, + 3A534994363818EE461314CD /* SDL_drawline.h */, + 59D62A724BBF27CC59231297 /* SDL_drawpoint.c */, + 7F242EF90A1711F051270B6A /* SDL_drawpoint.h */, + 0FFF44745C270A0C4F730726 /* SDL_render_sw.c */, + 5E736E9C457F4F227F0D63CF /* SDL_render_sw_c.h */, + 421F406A12633DAC795C1EB3 /* SDL_rotate.c */, + 01921DE55298202024E96745 /* SDL_rotate.h */, + ); + name = "software"; + sourceTree = ""; + }; + 118E17D14A6A08B06E140E8D /* stdlib */ = { + isa = PBXGroup; + children = ( + 4BC907785D5E6668627E78DE /* SDL_getenv.c */, + 77815DDD6F364C510AC25CB6 /* SDL_iconv.c */, + 3F8275E71B900C7D074949FC /* SDL_malloc.c */, + 07251EE10156492D512F75F3 /* SDL_qsort.c */, + 57323D836A0E78552E015D8E /* SDL_stdlib.c */, + 57F4780F2A47469D23006DD1 /* SDL_string.c */, + ); + name = "stdlib"; + sourceTree = ""; + }; + 1871607C2177284C38DD40C0 /* thread */ = { + isa = PBXGroup; + children = ( + 2EB6434034986F5230BE1635 /* SDL_systhread.h */, + 08FF4C92289179BB0EDF765E /* SDL_thread.c */, + 2CA925B6783314DA18E16F8B /* SDL_thread_c.h */, + 4B3A644B2C8A56FB079F7D74 /* pthread */, + ); + name = "thread"; + sourceTree = ""; + }; + 4B3A644B2C8A56FB079F7D74 /* pthread */ = { + isa = PBXGroup; + children = ( + 04D200E634516AF92074244C /* SDL_syscond.c */, + 5CC65F3A65EF32EE5C773558 /* SDL_sysmutex.c */, + 12F254797C1631F41D3137F8 /* SDL_sysmutex_c.h */, + 05D36048404E42022A7E4127 /* SDL_syssem.c */, + 17B31E2F2CC55CBC6F0A1D9B /* SDL_systhread.c */, + 02B428D53F1D18F262D463B0 /* SDL_systhread_c.h */, + 41E150D956EA3AD510743873 /* SDL_systls.c */, + ); + name = "pthread"; + sourceTree = ""; + }; + 3B4552CF25482CBF44317F63 /* timer */ = { + isa = PBXGroup; + children = ( + 41B156D22A535379479747CB /* SDL_timer.c */, + 002C537968C9193840B53AEE /* SDL_timer_c.h */, + 725C029C7933334915615167 /* unix */, + ); + name = "timer"; + sourceTree = ""; + }; + 725C029C7933334915615167 /* unix */ = { + isa = PBXGroup; + children = ( + 459149F92FC6055B32F7153F /* SDL_systimer.c */, + ); + name = "unix"; + sourceTree = ""; + }; + 5A047E267DFC3D2E40315F8D /* video */ = { + isa = PBXGroup; + children = ( + 4A9716005FF9561D2C3F6284 /* SDL_RLEaccel.c */, + 50AD3AC235DA7BFB41AC2EF0 /* SDL_RLEaccel_c.h */, + 3B0568EE0EB87B3019C24A16 /* SDL_blit.c */, + 513C6936649F3988151A60EC /* SDL_blit.h */, + 3EC71493552F0AB6601B4921 /* SDL_blit_0.c */, + 7D16555224CA08DB629F3ED1 /* SDL_blit_1.c */, + 296F6626753E62AE4A57408A /* SDL_blit_A.c */, + 02A05727533149171EF6318C /* SDL_blit_N.c */, + 2B90062B1FBE1B1865A01BF8 /* SDL_blit_auto.c */, + 690F65987ABC73935FA163B9 /* SDL_blit_auto.h */, + 1DD33CE21E6B143616A13AF1 /* SDL_blit_copy.c */, + 5919276F7CBC2D445BDC0505 /* SDL_blit_copy.h */, + 1CA1189B180060246D2B3B37 /* SDL_blit_slow.c */, + 560565CD15672ED06F9355B1 /* SDL_blit_slow.h */, + 6F5D7EFD4E2B79D45E1B51E3 /* SDL_bmp.c */, + 164801C9489C07724F6A784E /* SDL_clipboard.c */, + 286B34BD2239541E1ABF7B58 /* SDL_egl.c */, + 290B131F70BA5F6766C05FCB /* SDL_egl.h */, + 2F9B71653C254E7E388808C5 /* SDL_fillrect.c */, + 7F9D4C460D482A96620971F4 /* SDL_pixels.c */, + 2FFC595E3D4133F946C128EE /* SDL_pixels_c.h */, + 366D6F2633EA002441056CC7 /* SDL_rect.c */, + 0FBC1056267369394FF37EE2 /* SDL_rect_c.h */, + 349E213D6BCD6E7D754918E0 /* SDL_shape.c */, + 6FB7747B56EB06143A9E7D56 /* SDL_shape_internals.h */, + 334B22626BDE407C402A36B6 /* SDL_stretch.c */, + 34EE3252493E44852C6F4D1A /* SDL_surface.c */, + 3C320390064404981FE12D62 /* SDL_sysvideo.h */, + 124B099C775D350017963585 /* SDL_video.c */, + 70AD0C8A75AB6DAB7B877BCF /* cocoa */, + 44E9255D108272B167374C3D /* dummy */, + 1254612D7A6C7D1C4A6E2304 /* x11 */, + ); + name = "video"; + sourceTree = ""; + }; + 70AD0C8A75AB6DAB7B877BCF /* cocoa */ = { + isa = PBXGroup; + children = ( + 060616512B17276042FD01B1 /* SDL_cocoaclipboard.h */, + 118A36F07D45647F0A084319 /* SDL_cocoaclipboard.m */, + 1BF249306FDF58717F8A67FE /* SDL_cocoaevents.h */, + 6C224B440FCA2C1F2C3C1FAE /* SDL_cocoaevents.m */, + 1DA20CF07FEB53241C877551 /* SDL_cocoakeyboard.h */, + 4402087F5CB90F317D9208D2 /* SDL_cocoakeyboard.m */, + 20DB49010B275E054D963ABC /* SDL_cocoamessagebox.h */, + 4BFF56C82567424C3CF4591E /* SDL_cocoamessagebox.m */, + 668468D44E1637670A5F108D /* SDL_cocoamodes.h */, + 57B60C7A316B6B5A70D13C82 /* SDL_cocoamodes.m */, + 759F34624091186A729C6F35 /* SDL_cocoamouse.h */, + 309C0186189D062A37BF5FB6 /* SDL_cocoamouse.m */, + 21076E4577D20D1D0FAC6ABB /* SDL_cocoamousetap.h */, + 57283DDA43F325E829A27FBA /* SDL_cocoamousetap.m */, + 6A147ACC11C6742F76C2435F /* SDL_cocoaopengl.h */, + 361747734F387130393F605F /* SDL_cocoaopengl.m */, + 783F00DE129C679D07016043 /* SDL_cocoashape.h */, + 7DCD3646470A681D7025162E /* SDL_cocoashape.m */, + 6C2671F8747628C0054C5B51 /* SDL_cocoavideo.h */, + 3617606E15EE572C173C7BE1 /* SDL_cocoavideo.m */, + 178524292FDA124263861BDD /* SDL_cocoawindow.h */, + 7CE067B94CD974F17E692018 /* SDL_cocoawindow.m */, + ); + name = "cocoa"; + sourceTree = ""; + }; + 44E9255D108272B167374C3D /* dummy */ = { + isa = PBXGroup; + children = ( + 4AC7612F064013A35D2E0F0E /* SDL_nullevents.c */, + 63C755A43CB542DE343127F2 /* SDL_nullevents_c.h */, + 137B7080251D541D4486734D /* SDL_nullframebuffer.c */, + 288F77CC00F211760DDC1D83 /* SDL_nullframebuffer_c.h */, + 0B7016F553F306D600E0142E /* SDL_nullvideo.c */, + 6D68605324C17B1C176C6552 /* SDL_nullvideo.h */, + ); + name = "dummy"; + sourceTree = ""; + }; + 1254612D7A6C7D1C4A6E2304 /* x11 */ = { + isa = PBXGroup; + children = ( + 614F0C224A9920122B861F1E /* SDL_x11clipboard.c */, + 399A2DE06000601936783D4A /* SDL_x11clipboard.h */, + 040245A23E4C1DB56C671C11 /* SDL_x11dyn.c */, + 059C757C2A7C42BC023E690B /* SDL_x11dyn.h */, + 0D4B39C02DBE3C111ADF6469 /* SDL_x11events.c */, + 2CCB7E6732185E317FD44176 /* SDL_x11events.h */, + 4AC63B92198A385F654F2730 /* SDL_x11framebuffer.c */, + 206234E53298196560965544 /* SDL_x11framebuffer.h */, + 0DDF62C0484127D723E24C22 /* SDL_x11keyboard.c */, + 5B580F5260F8682D7AA64832 /* SDL_x11keyboard.h */, + 707F3FE15B0D494E51614B58 /* SDL_x11messagebox.c */, + 60CA27DD2C8E30F264EB0997 /* SDL_x11messagebox.h */, + 1BA837F00E275AC823F41E55 /* SDL_x11modes.c */, + 6AAF0AD5604B1AAB0FB6170D /* SDL_x11modes.h */, + 084A624F52C129A670684094 /* SDL_x11mouse.c */, + 23C57CFD064060004E6C387C /* SDL_x11mouse.h */, + 6956132B6EDD79D6109E23B6 /* SDL_x11opengl.c */, + 60BB3DF13E553FAB137C4B0A /* SDL_x11opengl.h */, + 23EC7FEA7AAA67186D60469D /* SDL_x11opengles.c */, + 43F86B58694D59666A07115C /* SDL_x11opengles.h */, + 541017773B6D0CC30C7F69F4 /* SDL_x11shape.c */, + 3ACC5687711255007BE25E16 /* SDL_x11shape.h */, + 08917B4A65B374165A8D7CA7 /* SDL_x11sym.h */, + 4FC145BC3C6D3F3C2D155C4E /* SDL_x11touch.c */, + 15EC5DBC74317D5E53A73032 /* SDL_x11touch.h */, + 604D13500B247C9A6BB63264 /* SDL_x11video.c */, + 349740341E72620B45A369AF /* SDL_x11video.h */, + 111D0E842DA26E0B16420249 /* SDL_x11window.c */, + 6B743871116A4AB56E080B6B /* SDL_x11window.h */, + 340B438574901D2053625299 /* SDL_x11xinput2.c */, + 44386B3D1989253225166350 /* SDL_x11xinput2.h */, + 4A0D4F710FDE780140BA1A58 /* edid-parse.c */, + 1694525C1D4C0F3F7E4D2A55 /* edid.h */, + 5E7A2C910B56578B68161E79 /* imKStoUCS.c */, + 3A4F505E5178406759050FE3 /* imKStoUCS.h */, + ); + name = "x11"; + sourceTree = ""; + }; + 00C87F695E6008491AE07997 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4F7F3A2F781C7E4027BF10D0 /* AudioToolbox.framework */, + 40FD602A0F7D70BA45F43D6B /* AudioUnit.framework */, + 4A655E13466520DF29BF55A6 /* Cocoa.framework */, + 74AD246C59F62F2063FE6B8F /* CoreAudio.framework */, + 3E915DA675494CC65BAC159C /* IOKit.framework */, + 308A60C82BD87C2638C47377 /* Carbon.framework */, + 5702009549A31E003E2E5CF6 /* ForceFeedback.framework */, + 6F94036B274B6E9309345AF6 /* CoreFoundation.framework */, + 3FAA70EE29303720292D57B6 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 7350255647C236722E191910 /* Products */ = { + isa = PBXGroup; + children = ( + 5E6D56F6655337845A3C44C3 /* libSDL2.a */, + ); + name = "Products"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7E6A7BC23CFD134274963645 /* SDL2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 141F24FA3D6072A1529C26E8 /* Build configuration list for PBXNativeTarget "SDL2" */; + buildPhases = ( + 4FC7355D792703116E1F49C6 /* Resources */, + 210D600C478F33F137B03CC7 /* Sources */, + 46BD5DD60E4D1C967C4D37B5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDL2"; + productName = "SDL2"; + productReference = 5E6D56F6655337845A3C44C3 /* libSDL2.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 4B82442500AD66E9511E4477 /* SDL2 */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7E6A7BC23CFD134274963645 /* libSDL2.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 4FC7355D792703116E1F49C6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 210D600C478F33F137B03CC7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 56395776433B06D125BE09F9 /* SDL.c in Sources */, + 0D11631D261C2DED48367BD9 /* SDL_assert.c in Sources */, + 63957CDA535A39C9449D535D /* SDL_error.c in Sources */, + 396E14272C895B1B023B0EBF /* SDL_hints.c in Sources */, + 47A824D52595733944650324 /* SDL_log.c in Sources */, + 0DA40BB5530E3E8A13B22B2A /* SDL_atomic.c in Sources */, + 78B369711FEC690B61E878DB /* SDL_spinlock.c in Sources */, + 106D013A4421102300555D43 /* SDL_audio.c in Sources */, + 2BF6538C20D269CB37087387 /* SDL_audiocvt.c in Sources */, + 32E8550E3FC92BD73B4739B8 /* SDL_audiodev.c in Sources */, + 42C743FD554803F551385F5E /* SDL_audiotypecvt.c in Sources */, + 7D2A6B3F36BD6DD353D43953 /* SDL_mixer.c in Sources */, + 259157355D6D2B2A7C9411BE /* SDL_wave.c in Sources */, + 4AA7597B1C4036EE6193174F /* SDL_coreaudio.c in Sources */, + 5674042A21325D343ED27F33 /* SDL_diskaudio.c in Sources */, + 0B905C2A4B5E31B840865641 /* SDL_dummyaudio.c in Sources */, + 47D9062664F05CC72A952A7A /* SDL_cpuinfo.c in Sources */, + 70D12B02516F0F2905AB412C /* SDL_clipboardevents.c in Sources */, + 7B571F1F643422652B14420D /* SDL_dropevents.c in Sources */, + 5D6A089F279C32D34F707938 /* SDL_events.c in Sources */, + 2FF10E5E5FFE5AA7236E259D /* SDL_gesture.c in Sources */, + 572E0DE06DA25C7C7B4641CB /* SDL_keyboard.c in Sources */, + 4D11428427B179E3476635ED /* SDL_mouse.c in Sources */, + 4D633D8F070C41582A4B57C0 /* SDL_quit.c in Sources */, + 4CB676BB174D5FA62B1A74F5 /* SDL_touch.c in Sources */, + 4FDB4381525E3F0E54222AB7 /* SDL_windowevents.c in Sources */, + 104E1ED077B5263C2F767E76 /* SDL_rwops.c in Sources */, + 054C588B4B675FE145C405FF /* SDL_rwopsbundlesupport.m in Sources */, + 333A606602A9304E62204041 /* SDL_sysfilesystem.m in Sources */, + 7F371E9614B444B008BB61EB /* SDL_haptic.c in Sources */, + 491A69413C3372F47FD526C4 /* SDL_syshaptic.c in Sources */, + 323563246DB26CEE1EE57A87 /* SDL_gamecontroller.c in Sources */, + 6055787753B66A4F7C7C62CC /* SDL_joystick.c in Sources */, + 111C502964B81A6C3F8B75E9 /* SDL_sysjoystick.c in Sources */, + 76537577175D73B66E382DF3 /* SDL_sysloadso.c in Sources */, + 4A6367E166855369495907D2 /* SDL_power.c in Sources */, + 703B3B447BD5756E17974E35 /* SDL_syspower.c in Sources */, + 00F850905E8838901D684336 /* SDL_render.c in Sources */, + 084519B745617A795612765B /* SDL_yuv_mmx.c in Sources */, + 7A7F452C793B51C108155BF3 /* SDL_yuv_sw.c in Sources */, + 0BBB364F1AA839334CA903E1 /* SDL_render_gl.c in Sources */, + 2FE315477EB5534A33D63088 /* SDL_shaders_gl.c in Sources */, + 61F2084A5BE32DCB11E03C70 /* SDL_blendfillrect.c in Sources */, + 59EE3C2409372B9639821D70 /* SDL_blendline.c in Sources */, + 485B7C4A13A54E2B21E3558A /* SDL_blendpoint.c in Sources */, + 72837DD3347C47EC16E204B9 /* SDL_drawline.c in Sources */, + 2CF944703D09586A2DBC5140 /* SDL_drawpoint.c in Sources */, + 5FAA1511268914C730B15F91 /* SDL_render_sw.c in Sources */, + 31BE4ECF1A3005304B891CAA /* SDL_rotate.c in Sources */, + 671B561A4F8961200C43368D /* SDL_getenv.c in Sources */, + 325E5B1B5C4745827A1E6E5F /* SDL_iconv.c in Sources */, + 467362D4600918721A582DD1 /* SDL_malloc.c in Sources */, + 280E40795C183DBB6A970829 /* SDL_qsort.c in Sources */, + 35EB063D107A51CE41391E68 /* SDL_stdlib.c in Sources */, + 751335C2100E444D570F538E /* SDL_string.c in Sources */, + 296D670D18660CF766E818CC /* SDL_thread.c in Sources */, + 11FC3C2D57D7210A3D615BA9 /* SDL_syscond.c in Sources */, + 373D343B1143034962617BD7 /* SDL_sysmutex.c in Sources */, + 15337628451D793D3CAB15D4 /* SDL_syssem.c in Sources */, + 6AB87FC5673A2BBE6C9E0DB5 /* SDL_systhread.c in Sources */, + 2D677EC478A065B220E460EC /* SDL_systls.c in Sources */, + 623F50970F234B5E09CA450B /* SDL_timer.c in Sources */, + 13913E6F0397429A2DEB3D40 /* SDL_systimer.c in Sources */, + 65946C744E79150A4C7C045C /* SDL_RLEaccel.c in Sources */, + 283C240D0F085FE959BD477C /* SDL_blit.c in Sources */, + 1BB3311C46100188199C04D0 /* SDL_blit_0.c in Sources */, + 2B76555A37F14B4D41A27593 /* SDL_blit_1.c in Sources */, + 49D204421C4F1B8835DE2832 /* SDL_blit_A.c in Sources */, + 5E613DFE79B379C26D650D96 /* SDL_blit_N.c in Sources */, + 4A4664FE74896DF45E1808EE /* SDL_blit_auto.c in Sources */, + 3059473C61AB631709347385 /* SDL_blit_copy.c in Sources */, + 50DB688039D37DD9582868D6 /* SDL_blit_slow.c in Sources */, + 375F7D0C5126459216E47CF2 /* SDL_bmp.c in Sources */, + 49F101CA136501802AFA3B94 /* SDL_clipboard.c in Sources */, + 54E9387C7E1D51AC31935DA3 /* SDL_egl.c in Sources */, + 66E622863C5A41026F594412 /* SDL_fillrect.c in Sources */, + 57AE719928720E68714B209F /* SDL_pixels.c in Sources */, + 2D93262C241F1433246B2085 /* SDL_rect.c in Sources */, + 228023C6583F3DE84EF42C58 /* SDL_shape.c in Sources */, + 7E1C02D05DC73D8430EE5B32 /* SDL_stretch.c in Sources */, + 01AC02B5766A48C8670031F2 /* SDL_surface.c in Sources */, + 4BD4541153E57A437BF32A86 /* SDL_video.c in Sources */, + 51243DCF16C22BE3744032EF /* SDL_cocoaclipboard.m in Sources */, + 012C15875FDC21D61CD929D0 /* SDL_cocoaevents.m in Sources */, + 1573379D58A7574D0DBA47AC /* SDL_cocoakeyboard.m in Sources */, + 787242E36A2735A57F59687B /* SDL_cocoamessagebox.m in Sources */, + 2B4D04205F557192365D431C /* SDL_cocoamodes.m in Sources */, + 310774F470EF614902A41941 /* SDL_cocoamouse.m in Sources */, + 24D86B472DA21C7365911852 /* SDL_cocoamousetap.m in Sources */, + 261C18D144B62BA517AB0CDE /* SDL_cocoaopengl.m in Sources */, + 35B52CCD738D46A37D2A007A /* SDL_cocoashape.m in Sources */, + 11E63E4936207F26367F5238 /* SDL_cocoavideo.m in Sources */, + 40BD604A40D313FF5BBF038B /* SDL_cocoawindow.m in Sources */, + 78D451890F066EED1B184E5D /* SDL_nullevents.c in Sources */, + 7D746673275A3D2832FC70E4 /* SDL_nullframebuffer.c in Sources */, + 04EE66BE026750A6697D2D25 /* SDL_nullvideo.c in Sources */, + 16890198400A74D216F21D5C /* SDL_x11clipboard.c in Sources */, + 5AF6069941FD62CC54180B0B /* SDL_x11dyn.c in Sources */, + 5317393214211C5609A741CD /* SDL_x11events.c in Sources */, + 577A205B645529882614213E /* SDL_x11framebuffer.c in Sources */, + 70C662D65B383C6C59FD2D53 /* SDL_x11keyboard.c in Sources */, + 1C89094C623507F457F92E95 /* SDL_x11messagebox.c in Sources */, + 602E0AE6217E04A24E1B6557 /* SDL_x11modes.c in Sources */, + 43957BE84EEC1684606737A4 /* SDL_x11mouse.c in Sources */, + 046106FA142534F231B450E8 /* SDL_x11opengl.c in Sources */, + 08301FE111B053194E1F0BA6 /* SDL_x11opengles.c in Sources */, + 2165120C077310332DB568BC /* SDL_x11shape.c in Sources */, + 06E734A2124E48E15A4E5320 /* SDL_x11touch.c in Sources */, + 57586E4470463EE554525EAF /* SDL_x11video.c in Sources */, + 338D7DFE515B42686BA33874 /* SDL_x11window.c in Sources */, + 40DD09945F46241C46AD317A /* SDL_x11xinput2.c in Sources */, + 1534489224852D230A1C3B61 /* edid-parse.c in Sources */, + 2DE7276C55DC177D1FFD3CF4 /* imKStoUCS.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 51EE03A37C12355E46D14FAF /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Debug Universal"; + }; + 48BC3CF677A500DD43FD3AFB /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Debug Native"; + }; + 2AF54D7E346C41D50A4C21B9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Release Universal"; + }; + 741D356D2DC91E42269520DC /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2"; + }; + name = "Release Native"; + }; + 75927179491863DF5EB80932 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 51A47C782C1808DA3320138B /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 19D5095D59785C55576533F4 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4BE60CC656D352BC4FCC155A /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 141F24FA3D6072A1529C26E8 /* Build configuration list for PBXNativeTarget "libSDL2.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 51EE03A37C12355E46D14FAF /* Debug Universal */, + 48BC3CF677A500DD43FD3AFB /* Debug Native */, + 2AF54D7E346C41D50A4C21B9 /* Release Universal */, + 741D356D2DC91E42269520DC /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 75927179491863DF5EB80932 /* Debug Universal */, + 51A47C782C1808DA3320138B /* Debug Native */, + 19D5095D59785C55576533F4 /* Release Universal */, + 4BE60CC656D352BC4FCC155A /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/SDL2main/SDL2main.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/SDL2main/SDL2main.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..794690a934 --- /dev/null +++ b/premake/Xcode/Xcode4/SDL2main/SDL2main.xcodeproj/project.pbxproj @@ -0,0 +1,321 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 29BD669758D50FE722B06C79 /* SDL_dummy_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 71F856225FD74A1E14E96A1B /* SDL_dummy_main.c */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 71F856225FD74A1E14E96A1B /* SDL_dummy_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_dummy_main.c"; path = "../../../../src/main/dummy/SDL_dummy_main.c"; sourceTree = ""; }; + 0FF7291B375C79BC57696B66 /* libSDL2main.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2main.a"; path = "libSDL2main.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2C105D930723156E1E4B7E72 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 54034EA07AB7217318964A6E /* SDL2main */ = { + isa = PBXGroup; + children = ( + 370812FB4CD82A3500B44A8F /* src */, + 0EFD247D20756248746E659C /* Products */, + ); + name = "SDL2main"; + sourceTree = ""; + }; + 370812FB4CD82A3500B44A8F /* src */ = { + isa = PBXGroup; + children = ( + 24F2201B5B4B4452068D1420 /* main */, + ); + name = "src"; + sourceTree = ""; + }; + 24F2201B5B4B4452068D1420 /* main */ = { + isa = PBXGroup; + children = ( + 4A1A228C507C1C1154322017 /* dummy */, + ); + name = "main"; + sourceTree = ""; + }; + 4A1A228C507C1C1154322017 /* dummy */ = { + isa = PBXGroup; + children = ( + 71F856225FD74A1E14E96A1B /* SDL_dummy_main.c */, + ); + name = "dummy"; + sourceTree = ""; + }; + 0EFD247D20756248746E659C /* Products */ = { + isa = PBXGroup; + children = ( + 0FF7291B375C79BC57696B66 /* libSDL2main.a */, + ); + name = "Products"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1BAE4A0A77462FDC330812A3 /* SDL2main */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1A2E595E2E1C4700667043CF /* Build configuration list for PBXNativeTarget "SDL2main" */; + buildPhases = ( + 7E071A4C0BA6488545EE2589 /* Resources */, + 66FE5C800B0736B878E917F4 /* Sources */, + 2C105D930723156E1E4B7E72 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SDL2main"; + productName = "SDL2main"; + productReference = 0FF7291B375C79BC57696B66 /* libSDL2main.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2main" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 54034EA07AB7217318964A6E /* SDL2main */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1BAE4A0A77462FDC330812A3 /* libSDL2main.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7E071A4C0BA6488545EE2589 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 66FE5C800B0736B878E917F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 29BD669758D50FE722B06C79 /* SDL_dummy_main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 0E7D5D4978107C7C5649003A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Debug Universal"; + }; + 3E4560A24A540DEA2B1C479D /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Debug Native"; + }; + 36EB0A9212DE4F1F20716C6D /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Release Universal"; + }; + 16F07B73430072407B5E5B4C /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2main"; + }; + name = "Release Native"; + }; + 12BE29D8370353AC6CF23615 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1DE146FB1F8570F9015A5942 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 159852CD1A6D039F6AD57AC2 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 76CC6C406BDA4AA4680729A4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1A2E595E2E1C4700667043CF /* Build configuration list for PBXNativeTarget "libSDL2main.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0E7D5D4978107C7C5649003A /* Debug Universal */, + 3E4560A24A540DEA2B1C479D /* Debug Native */, + 36EB0A9212DE4F1F20716C6D /* Release Universal */, + 16F07B73430072407B5E5B4C /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2main" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 12BE29D8370353AC6CF23615 /* Debug Universal */, + 1DE146FB1F8570F9015A5942 /* Debug Native */, + 159852CD1A6D039F6AD57AC2 /* Release Universal */, + 76CC6C406BDA4AA4680729A4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/SDL2test/SDL2test.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/SDL2test/SDL2test.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..b039281469 --- /dev/null +++ b/premake/Xcode/Xcode4/SDL2test/SDL2test.xcodeproj/project.pbxproj @@ -0,0 +1,518 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5868442624F8572F5CE62C59 /* SDL_test_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F10534E431A6B6822D63266 /* SDL_test_assert.c */; }; + 46EB1B0B0B0A645E5A376827 /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = 33B604C931F5766D04606ABF /* SDL_test_common.c */; }; + 601B27AE37641DD811827D5E /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = 61094D4F387670CB52C71D09 /* SDL_test_compare.c */; }; + 3F921C2205E0584A674B2057 /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = 4B9E27EE056328BA616959D5 /* SDL_test_crc32.c */; }; + 156357903D46413716616A0F /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = 3E2B37E94C2C635F796D0268 /* SDL_test_font.c */; }; + 142A6CDF5A1D5D3202F96891 /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = 08DE42D5604D733E73CF2270 /* SDL_test_fuzzer.c */; }; + 189F7D33568F07DA337D05EB /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B9B75D925DA12B134B4188A /* SDL_test_harness.c */; }; + 500B1C5E1C7E42812ED21356 /* SDL_test_imageBlit.c in Sources */ = {isa = PBXBuildFile; fileRef = 12A0771F3D3B79C5016121A4 /* SDL_test_imageBlit.c */; }; + 2ABC590214650D110755751C /* SDL_test_imageBlitBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = 244136BE7E714D4836E71534 /* SDL_test_imageBlitBlend.c */; }; + 5A8836B537D0604C32AF0AB1 /* SDL_test_imageFace.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BE4CEE512F039D3E827AEB /* SDL_test_imageFace.c */; }; + 1EA30EF041A403753527392B /* SDL_test_imagePrimitives.c in Sources */ = {isa = PBXBuildFile; fileRef = 0514744719700C927E0F21F9 /* SDL_test_imagePrimitives.c */; }; + 4A4061E675BE36E6493F4E6B /* SDL_test_imagePrimitivesBlend.c in Sources */ = {isa = PBXBuildFile; fileRef = 747E18B736AF49841C90691A /* SDL_test_imagePrimitivesBlend.c */; }; + 50AF3D742EF021746C0427E1 /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = 56B53C624790591466E8233E /* SDL_test_log.c */; }; + 39D82C1B444148B640E93224 /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 604E396B42BE58277CD4659D /* SDL_test_md5.c */; }; + 7A893D2D7365187951324176 /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = 7C44617625592B7923D700C2 /* SDL_test_random.c */; }; + 63D96AAB2058276033AF4155 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D191CC3500262A4284C1602 /* AudioToolbox.framework */; }; + 02E916FA35521C0720141EB2 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 609450C972615F71305B4104 /* AudioUnit.framework */; }; + 74AE617229E1087E3A1C2DA4 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E122BC45CC80AFA471B54F0 /* Cocoa.framework */; }; + 5E5A7E2B702E1B8E33A51DE5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07E01FC5436C167B20851D15 /* CoreAudio.framework */; }; + 758B01921AC101707563405F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A0264CD5B0D595772F406A1 /* IOKit.framework */; }; + 08A9176928F7236C0BA30CCC /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 420B218F4DB67DCA0EBA5D3B /* Carbon.framework */; }; + 673A13C2276572560D1A5EC1 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 463B540272EA77F90D7A584C /* ForceFeedback.framework */; }; + 62FF69A62ABE2D851B4D7EA8 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DFE611A04855A531D2F0768 /* CoreFoundation.framework */; }; + 75BD5D6260037E7209EE7EAE /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EFA252464A93C8C30491858 /* OpenGL.framework */; }; + 007E668D465E7F3455DB3459 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 427B510D5DBD57AD5DF72748 /* libSDL2main.a */; }; + 6CD31CF2734E3FC00D2702FB /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A6F74FA7F1C3D595E101EDF /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0D3516785AC35F9F7A881E9B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 513A687F13A33FF440571450 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 727B11D13BC44B0F4B366EF9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 513A687F13A33FF440571450 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 3F5B271F6C81264B46F8004C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 701A40DB0801311E63A769D4 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 11482C2A31806F8F3ECA6A1E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 701A40DB0801311E63A769D4 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5F10534E431A6B6822D63266 /* SDL_test_assert.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_assert.c"; path = "../../../../src/test/SDL_test_assert.c"; sourceTree = ""; }; + 33B604C931F5766D04606ABF /* SDL_test_common.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_common.c"; path = "../../../../src/test/SDL_test_common.c"; sourceTree = ""; }; + 61094D4F387670CB52C71D09 /* SDL_test_compare.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_compare.c"; path = "../../../../src/test/SDL_test_compare.c"; sourceTree = ""; }; + 4B9E27EE056328BA616959D5 /* SDL_test_crc32.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_crc32.c"; path = "../../../../src/test/SDL_test_crc32.c"; sourceTree = ""; }; + 3E2B37E94C2C635F796D0268 /* SDL_test_font.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_font.c"; path = "../../../../src/test/SDL_test_font.c"; sourceTree = ""; }; + 08DE42D5604D733E73CF2270 /* SDL_test_fuzzer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_fuzzer.c"; path = "../../../../src/test/SDL_test_fuzzer.c"; sourceTree = ""; }; + 3B9B75D925DA12B134B4188A /* SDL_test_harness.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_harness.c"; path = "../../../../src/test/SDL_test_harness.c"; sourceTree = ""; }; + 12A0771F3D3B79C5016121A4 /* SDL_test_imageBlit.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageBlit.c"; path = "../../../../src/test/SDL_test_imageBlit.c"; sourceTree = ""; }; + 244136BE7E714D4836E71534 /* SDL_test_imageBlitBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageBlitBlend.c"; path = "../../../../src/test/SDL_test_imageBlitBlend.c"; sourceTree = ""; }; + 41BE4CEE512F039D3E827AEB /* SDL_test_imageFace.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imageFace.c"; path = "../../../../src/test/SDL_test_imageFace.c"; sourceTree = ""; }; + 0514744719700C927E0F21F9 /* SDL_test_imagePrimitives.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imagePrimitives.c"; path = "../../../../src/test/SDL_test_imagePrimitives.c"; sourceTree = ""; }; + 747E18B736AF49841C90691A /* SDL_test_imagePrimitivesBlend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_imagePrimitivesBlend.c"; path = "../../../../src/test/SDL_test_imagePrimitivesBlend.c"; sourceTree = ""; }; + 56B53C624790591466E8233E /* SDL_test_log.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_log.c"; path = "../../../../src/test/SDL_test_log.c"; sourceTree = ""; }; + 604E396B42BE58277CD4659D /* SDL_test_md5.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_md5.c"; path = "../../../../src/test/SDL_test_md5.c"; sourceTree = ""; }; + 7C44617625592B7923D700C2 /* SDL_test_random.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "SDL_test_random.c"; path = "../../../../src/test/SDL_test_random.c"; sourceTree = ""; }; + 5D191CC3500262A4284C1602 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 609450C972615F71305B4104 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3E122BC45CC80AFA471B54F0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 07E01FC5436C167B20851D15 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3A0264CD5B0D595772F406A1 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 420B218F4DB67DCA0EBA5D3B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 463B540272EA77F90D7A584C /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 5DFE611A04855A531D2F0768 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 4EFA252464A93C8C30491858 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 1EB6664901BC163F215A4861 /* libSDL2test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libSDL2test.a"; path = "libSDL2test.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 513A687F13A33FF440571450 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 701A40DB0801311E63A769D4 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 77AC71944901034B36864ECB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 63D96AAB2058276033AF4155 /* AudioToolbox.framework in Frameworks */, + 02E916FA35521C0720141EB2 /* AudioUnit.framework in Frameworks */, + 74AE617229E1087E3A1C2DA4 /* Cocoa.framework in Frameworks */, + 5E5A7E2B702E1B8E33A51DE5 /* CoreAudio.framework in Frameworks */, + 758B01921AC101707563405F /* IOKit.framework in Frameworks */, + 08A9176928F7236C0BA30CCC /* Carbon.framework in Frameworks */, + 673A13C2276572560D1A5EC1 /* ForceFeedback.framework in Frameworks */, + 62FF69A62ABE2D851B4D7EA8 /* CoreFoundation.framework in Frameworks */, + 75BD5D6260037E7209EE7EAE /* OpenGL.framework in Frameworks */, + 007E668D465E7F3455DB3459 /* libSDL2main.a in Frameworks */, + 6CD31CF2734E3FC00D2702FB /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0D1E4B6170B903313419073C /* SDL2test */ = { + isa = PBXGroup; + children = ( + 75D329AB2F90321D2B5D1D8C /* src */, + 2C4E3D8179E956F44E221CBF /* Frameworks */, + 02F477103EA63175237D7147 /* Products */, + 706058704ABA11F42A8646CB /* Projects */, + ); + name = "SDL2test"; + sourceTree = ""; + }; + 75D329AB2F90321D2B5D1D8C /* src */ = { + isa = PBXGroup; + children = ( + 7F866917655026BB570A53EA /* test */, + ); + name = "src"; + sourceTree = ""; + }; + 7F866917655026BB570A53EA /* test */ = { + isa = PBXGroup; + children = ( + 5F10534E431A6B6822D63266 /* SDL_test_assert.c */, + 33B604C931F5766D04606ABF /* SDL_test_common.c */, + 61094D4F387670CB52C71D09 /* SDL_test_compare.c */, + 4B9E27EE056328BA616959D5 /* SDL_test_crc32.c */, + 3E2B37E94C2C635F796D0268 /* SDL_test_font.c */, + 08DE42D5604D733E73CF2270 /* SDL_test_fuzzer.c */, + 3B9B75D925DA12B134B4188A /* SDL_test_harness.c */, + 12A0771F3D3B79C5016121A4 /* SDL_test_imageBlit.c */, + 244136BE7E714D4836E71534 /* SDL_test_imageBlitBlend.c */, + 41BE4CEE512F039D3E827AEB /* SDL_test_imageFace.c */, + 0514744719700C927E0F21F9 /* SDL_test_imagePrimitives.c */, + 747E18B736AF49841C90691A /* SDL_test_imagePrimitivesBlend.c */, + 56B53C624790591466E8233E /* SDL_test_log.c */, + 604E396B42BE58277CD4659D /* SDL_test_md5.c */, + 7C44617625592B7923D700C2 /* SDL_test_random.c */, + ); + name = "test"; + sourceTree = ""; + }; + 2C4E3D8179E956F44E221CBF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5D191CC3500262A4284C1602 /* AudioToolbox.framework */, + 609450C972615F71305B4104 /* AudioUnit.framework */, + 3E122BC45CC80AFA471B54F0 /* Cocoa.framework */, + 07E01FC5436C167B20851D15 /* CoreAudio.framework */, + 3A0264CD5B0D595772F406A1 /* IOKit.framework */, + 420B218F4DB67DCA0EBA5D3B /* Carbon.framework */, + 463B540272EA77F90D7A584C /* ForceFeedback.framework */, + 5DFE611A04855A531D2F0768 /* CoreFoundation.framework */, + 4EFA252464A93C8C30491858 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 02F477103EA63175237D7147 /* Products */ = { + isa = PBXGroup; + children = ( + 1EB6664901BC163F215A4861 /* libSDL2test.a */, + ); + name = "Products"; + sourceTree = ""; + }; + 706058704ABA11F42A8646CB /* Projects */ = { + isa = PBXGroup; + children = ( + 513A687F13A33FF440571450 /* SDL2main.xcodeproj */, + 701A40DB0801311E63A769D4 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 02857CDE0C3316980723205E /* Products */ = { + isa = PBXGroup; + children = ( + 427B510D5DBD57AD5DF72748 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4FAF2AEE7DEA304C6E5D42BB /* Products */ = { + isa = PBXGroup; + children = ( + 1A6F74FA7F1C3D595E101EDF /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1258506950476B85239A79A3 /* SDL2test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 337A3BC268F1636870DD42EB /* Build configuration list for PBXNativeTarget "SDL2test" */; + buildPhases = ( + 060354635CDC1A7D191D6671 /* Resources */, + 122A2C1050CF6F533E91543B /* Sources */, + 77AC71944901034B36864ECB /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5BBE229642D023391BD13E3B /* PBXTargetDependency */, + 17311A0969697B850B6D5F27 /* PBXTargetDependency */, + ); + name = "SDL2test"; + productName = "SDL2test"; + productReference = 1EB6664901BC163F215A4861 /* libSDL2test.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2test" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 0D1E4B6170B903313419073C /* SDL2test */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 02857CDE0C3316980723205E /* Products */; + ProjectRef = 513A687F13A33FF440571450 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4FAF2AEE7DEA304C6E5D42BB /* Products */; + ProjectRef = 701A40DB0801311E63A769D4 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1258506950476B85239A79A3 /* libSDL2test.a */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 427B510D5DBD57AD5DF72748 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 0D3516785AC35F9F7A881E9B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1A6F74FA7F1C3D595E101EDF /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3F5B271F6C81264B46F8004C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 060354635CDC1A7D191D6671 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 122A2C1050CF6F533E91543B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5868442624F8572F5CE62C59 /* SDL_test_assert.c in Sources */, + 46EB1B0B0B0A645E5A376827 /* SDL_test_common.c in Sources */, + 601B27AE37641DD811827D5E /* SDL_test_compare.c in Sources */, + 3F921C2205E0584A674B2057 /* SDL_test_crc32.c in Sources */, + 156357903D46413716616A0F /* SDL_test_font.c in Sources */, + 142A6CDF5A1D5D3202F96891 /* SDL_test_fuzzer.c in Sources */, + 189F7D33568F07DA337D05EB /* SDL_test_harness.c in Sources */, + 500B1C5E1C7E42812ED21356 /* SDL_test_imageBlit.c in Sources */, + 2ABC590214650D110755751C /* SDL_test_imageBlitBlend.c in Sources */, + 5A8836B537D0604C32AF0AB1 /* SDL_test_imageFace.c in Sources */, + 1EA30EF041A403753527392B /* SDL_test_imagePrimitives.c in Sources */, + 4A4061E675BE36E6493F4E6B /* SDL_test_imagePrimitivesBlend.c in Sources */, + 50AF3D742EF021746C0427E1 /* SDL_test_log.c in Sources */, + 39D82C1B444148B640E93224 /* SDL_test_md5.c in Sources */, + 7A893D2D7365187951324176 /* SDL_test_random.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5BBE229642D023391BD13E3B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 727B11D13BC44B0F4B366EF9 /* PBXContainerItemProxy */; + }; + 17311A0969697B850B6D5F27 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 11482C2A31806F8F3ECA6A1E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 032B32C13BE2220E063507BF /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Debug Universal"; + }; + 47F271AA0A090AA70EBA6E0F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Debug Native"; + }; + 0F203D196F3C00AA21791F73 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Release Universal"; + }; + 466D581038BF2AEB59A17C12 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/lib; + PRODUCT_NAME = "SDL2test"; + }; + name = "Release Native"; + }; + 0E76080462B43DB97DBB0EC5 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 51D86BA95CCC59B3156B2D7F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 463E19F81B166E2835502D9D /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0FBF53686EAD280A680D4787 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "..", + "../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 337A3BC268F1636870DD42EB /* Build configuration list for PBXNativeTarget "libSDL2test.a" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 032B32C13BE2220E063507BF /* Debug Universal */, + 47F271AA0A090AA70EBA6E0F /* Debug Native */, + 0F203D196F3C00AA21791F73 /* Release Universal */, + 466D581038BF2AEB59A17C12 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "SDL2test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0E76080462B43DB97DBB0EC5 /* Debug Universal */, + 51D86BA95CCC59B3156B2D7F /* Debug Native */, + 463E19F81B166E2835502D9D /* Release Universal */, + 0FBF53686EAD280A680D4787 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/SDL_config_premake.h b/premake/Xcode/Xcode4/SDL_config_premake.h new file mode 100755 index 0000000000..cb1725a275 --- /dev/null +++ b/premake/Xcode/Xcode4/SDL_config_premake.h @@ -0,0 +1,205 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_macosx_h +#define _SDL_config_macosx_h + +#include "SDL_platform.h" + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */ +#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) ) +#define HAVE_ALLOCA_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 + +#ifndef SDL_AUDIO_DRIVER_DUMMY +#define SDL_AUDIO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_AUDIO_DRIVER_DISK +#define SDL_AUDIO_DRIVER_DISK 1 +#endif +#ifndef SDL_VIDEO_DRIVER_DUMMY +#define SDL_VIDEO_DRIVER_DUMMY 1 +#endif +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_AUDIO_DRIVER_COREAUDIO +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#endif +#ifndef SDL_POWER_MACOSX +#define SDL_POWER_MACOSX 1 +#endif +#ifndef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 +#endif +#ifndef SDL_LOADSO_DLOPEN +#define SDL_LOADSO_DLOPEN 1 +#endif +#ifndef SDL_FILESYSTEM_COCOA +#define SDL_FILESYSTEM_COCOA 1 +#endif +#ifndef SDL_VIDEO_DRIVER_COCOA +#define SDL_VIDEO_DRIVER_COCOA 1 +#endif +#ifndef SDL_THREAD_PTHREAD +#define SDL_THREAD_PTHREAD 1 +#endif +#ifndef SDL_TIMER_UNIX +#define SDL_TIMER_UNIX 1 +#endif +#ifndef SDL_HAPTIC_IOKIT +#define SDL_HAPTIC_IOKIT 1 +#endif +#ifndef SDL_JOYSTICK_IOKIT +#define SDL_JOYSTICK_IOKIT 1 +#endif + +/* Enable various video drivers */ +#undef SDL_VIDEO_DRIVER_X11 +#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_XINPUT2 "/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_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* _SDL_config_macosx_h */ diff --git a/premake/Xcode/Xcode4/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..66b0397677 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/checkkeys/checkkeys.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 43D02D135F812B704E4136A3 /* checkkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 773976867BB829370CD05E01 /* checkkeys.c */; }; + 4343688F1E8F4E1825990D98 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0760667F301569FB00EF0C55 /* AudioToolbox.framework */; }; + 32F44FA37049035E1F472941 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AC65EDC7AFC56BC59862922 /* AudioUnit.framework */; }; + 744A587E6D44235D47AC097C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2016348B15CE260B43B33CC2 /* Cocoa.framework */; }; + 61D0274E10FC2FB65B2C427E /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 659A685136A712C0120E057B /* CoreAudio.framework */; }; + 31DD54C5034220C305E04E4C /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4548E141BD0A361BD95B5C /* IOKit.framework */; }; + 79DA5BB44524513268EF3B06 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CAF6C2E74634EE5591C46D3 /* Carbon.framework */; }; + 1C3221C924AC32E243E5079E /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D224D166B763D357C3E5B37 /* ForceFeedback.framework */; }; + 1FCE3E26640126126F1D0FE8 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37C2479123945F1E4F744D93 /* CoreFoundation.framework */; }; + 0514021F5403260313AC4153 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B67383C20F97B7E42CA1178 /* OpenGL.framework */; }; + 7D8B310754194985549E60A3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 425D7AD611272FFA004A11B8 /* libSDL2main.a */; }; + 7C0F65C318167FBD0CC62AEB /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CB32BF2534E4CD3676B5825 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2B4C0D3524F01F8638C52973 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7914359E3D526A935AFB405F /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 77247127415879E427243E6D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7914359E3D526A935AFB405F /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 776E76D6669E1CF32E9D662B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7B7B4ECE6C2C6D166E0810A8 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 397A03A224E224F17A45767A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7B7B4ECE6C2C6D166E0810A8 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 773976867BB829370CD05E01 /* checkkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "checkkeys.c"; path = "../../../../../test/checkkeys.c"; sourceTree = ""; }; + 0760667F301569FB00EF0C55 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7AC65EDC7AFC56BC59862922 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 2016348B15CE260B43B33CC2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 659A685136A712C0120E057B /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 7A4548E141BD0A361BD95B5C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 6CAF6C2E74634EE5591C46D3 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 2D224D166B763D357C3E5B37 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 37C2479123945F1E4F744D93 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 7B67383C20F97B7E42CA1178 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 09F73F3138895CE8117B44E7 /* checkkeys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "checkkeys"; path = "checkkeys"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7914359E3D526A935AFB405F /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7B7B4ECE6C2C6D166E0810A8 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3C6F22E43BF169E7536C03E5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4343688F1E8F4E1825990D98 /* AudioToolbox.framework in Frameworks */, + 32F44FA37049035E1F472941 /* AudioUnit.framework in Frameworks */, + 744A587E6D44235D47AC097C /* Cocoa.framework in Frameworks */, + 61D0274E10FC2FB65B2C427E /* CoreAudio.framework in Frameworks */, + 31DD54C5034220C305E04E4C /* IOKit.framework in Frameworks */, + 79DA5BB44524513268EF3B06 /* Carbon.framework in Frameworks */, + 1C3221C924AC32E243E5079E /* ForceFeedback.framework in Frameworks */, + 1FCE3E26640126126F1D0FE8 /* CoreFoundation.framework in Frameworks */, + 0514021F5403260313AC4153 /* OpenGL.framework in Frameworks */, + 7D8B310754194985549E60A3 /* libSDL2main.a in Frameworks */, + 7C0F65C318167FBD0CC62AEB /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1DB00E3B438D0BCF4D66082C /* checkkeys */ = { + isa = PBXGroup; + children = ( + 3F2A7CF343DC4B5A2BDA21B1 /* test */, + 3F091A9F766E48022C1D5E3B /* Frameworks */, + 4C9910EA317C6EC7089325BD /* Products */, + 57D252150E17207B0B9D0BCB /* Projects */, + ); + name = "checkkeys"; + sourceTree = ""; + }; + 3F2A7CF343DC4B5A2BDA21B1 /* test */ = { + isa = PBXGroup; + children = ( + 773976867BB829370CD05E01 /* checkkeys.c */, + ); + name = "test"; + sourceTree = ""; + }; + 3F091A9F766E48022C1D5E3B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0760667F301569FB00EF0C55 /* AudioToolbox.framework */, + 7AC65EDC7AFC56BC59862922 /* AudioUnit.framework */, + 2016348B15CE260B43B33CC2 /* Cocoa.framework */, + 659A685136A712C0120E057B /* CoreAudio.framework */, + 7A4548E141BD0A361BD95B5C /* IOKit.framework */, + 6CAF6C2E74634EE5591C46D3 /* Carbon.framework */, + 2D224D166B763D357C3E5B37 /* ForceFeedback.framework */, + 37C2479123945F1E4F744D93 /* CoreFoundation.framework */, + 7B67383C20F97B7E42CA1178 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 4C9910EA317C6EC7089325BD /* Products */ = { + isa = PBXGroup; + children = ( + 09F73F3138895CE8117B44E7 /* checkkeys */, + ); + name = "Products"; + sourceTree = ""; + }; + 57D252150E17207B0B9D0BCB /* Projects */ = { + isa = PBXGroup; + children = ( + 7914359E3D526A935AFB405F /* SDL2main.xcodeproj */, + 7B7B4ECE6C2C6D166E0810A8 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 521C394319F405D0271979FC /* Products */ = { + isa = PBXGroup; + children = ( + 425D7AD611272FFA004A11B8 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 46F865621ED2205025694603 /* Products */ = { + isa = PBXGroup; + children = ( + 2CB32BF2534E4CD3676B5825 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 54AB3FA030254F7A10867DEE /* checkkeys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2C2C389844093371468F0516 /* Build configuration list for PBXNativeTarget "checkkeys" */; + buildPhases = ( + 14EB094078FE24875822544E /* Resources */, + 0068458C240703BF2724388F /* Sources */, + 3C6F22E43BF169E7536C03E5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 029F4DE51ED1639028474F14 /* PBXTargetDependency */, + 4B351B17118812DC449878F6 /* PBXTargetDependency */, + ); + name = "checkkeys"; + productInstallPath = "$(HOME)/bin"; + productName = "checkkeys"; + productReference = 09F73F3138895CE8117B44E7 /* checkkeys */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "checkkeys" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 1DB00E3B438D0BCF4D66082C /* checkkeys */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 521C394319F405D0271979FC /* Products */; + ProjectRef = 7914359E3D526A935AFB405F /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 46F865621ED2205025694603 /* Products */; + ProjectRef = 7B7B4ECE6C2C6D166E0810A8 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 54AB3FA030254F7A10867DEE /* checkkeys */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 425D7AD611272FFA004A11B8 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2B4C0D3524F01F8638C52973 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2CB32BF2534E4CD3676B5825 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 776E76D6669E1CF32E9D662B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 14EB094078FE24875822544E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0068458C240703BF2724388F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 43D02D135F812B704E4136A3 /* checkkeys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 029F4DE51ED1639028474F14 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 77247127415879E427243E6D /* PBXContainerItemProxy */; + }; + 4B351B17118812DC449878F6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 397A03A224E224F17A45767A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 01FD1D8C7B7D4BCC79263DF0 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Debug Universal"; + }; + 3009502C08E1160B647A3AD5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Debug Native"; + }; + 6F471F4A53E114A830196B1B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Release Universal"; + }; + 40140EAE4AD91C1347D046C8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "checkkeys"; + }; + name = "Release Native"; + }; + 0C3103FB0D8C12D623E40BC8 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 294B28556D814C54408E45AF /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 67DC283E209E17833F1D46A0 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 295928DD45FA446D62A62923 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2C2C389844093371468F0516 /* Build configuration list for PBXNativeTarget "checkkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01FD1D8C7B7D4BCC79263DF0 /* Debug Universal */, + 3009502C08E1160B647A3AD5 /* Debug Native */, + 6F471F4A53E114A830196B1B /* Release Universal */, + 40140EAE4AD91C1347D046C8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "checkkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0C3103FB0D8C12D623E40BC8 /* Debug Universal */, + 294B28556D814C54408E45AF /* Debug Native */, + 67DC283E209E17833F1D46A0 /* Release Universal */, + 295928DD45FA446D62A62923 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/loopwave/loopwave.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/loopwave/loopwave.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..53b0b20735 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/loopwave/loopwave.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 166A40A11B46210D65765380 /* loopwave.c in Sources */ = {isa = PBXBuildFile; fileRef = 678D151462E007225B785C96 /* loopwave.c */; }; + 13D670480C8102E91EAC3F64 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FF775E052DF64213AA74EA8 /* AudioToolbox.framework */; }; + 339107F849BB41445F426738 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41911CCC2E016FAF4C7B5D0F /* AudioUnit.framework */; }; + 06757DA97D4B478C59C314CD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C9302C90E6D16843F9D6776 /* Cocoa.framework */; }; + 09893064365936E7059C57B2 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34F36C7058A772A8121150A7 /* CoreAudio.framework */; }; + 7F37228D06935DE9294F42F9 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17FA2D2641DB428349235033 /* IOKit.framework */; }; + 73BF1A9D3FD970A17E234500 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18564BEC7C24477639DE40D7 /* Carbon.framework */; }; + 4B2E46097E6B4CEC44AD44DF /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FE77A6915207D9A3DBB62F9 /* ForceFeedback.framework */; }; + 241B076B04E648B77FE801CB /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 249758AD63251B207AA517F4 /* CoreFoundation.framework */; }; + 6A8F5A5E05E915CE079345A2 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A5B421669D32F3F511B5E0E /* OpenGL.framework */; }; + 357611781ADC74A1037D2252 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6C9E31DF555A369F1C594FFE /* libSDL2main.a */; }; + 1C3E3BA915A259F63AC4528C /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A7390A447027703C897F68 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 05C02D59441030617055018A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 733C6FCB7A667D0D026B4935 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 28AE4DAC602B648038605CD9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 733C6FCB7A667D0D026B4935 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 0B214A086B073D3575D04065 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4A1C0F7C38A3012153147AAD /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 5F6652DE7E410F094C8E0D89 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4A1C0F7C38A3012153147AAD /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 678D151462E007225B785C96 /* loopwave.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "loopwave.c"; path = "../../../../../test/loopwave.c"; sourceTree = ""; }; + 3FF775E052DF64213AA74EA8 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 41911CCC2E016FAF4C7B5D0F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 4C9302C90E6D16843F9D6776 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 34F36C7058A772A8121150A7 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 17FA2D2641DB428349235033 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 18564BEC7C24477639DE40D7 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 3FE77A6915207D9A3DBB62F9 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 249758AD63251B207AA517F4 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 3A5B421669D32F3F511B5E0E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2B4350C14C8B537A2A2B708A /* loopwave */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "loopwave"; path = "loopwave"; sourceTree = BUILT_PRODUCTS_DIR; }; + 733C6FCB7A667D0D026B4935 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 4A1C0F7C38A3012153147AAD /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7D535E86374067287BDD77E5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 13D670480C8102E91EAC3F64 /* AudioToolbox.framework in Frameworks */, + 339107F849BB41445F426738 /* AudioUnit.framework in Frameworks */, + 06757DA97D4B478C59C314CD /* Cocoa.framework in Frameworks */, + 09893064365936E7059C57B2 /* CoreAudio.framework in Frameworks */, + 7F37228D06935DE9294F42F9 /* IOKit.framework in Frameworks */, + 73BF1A9D3FD970A17E234500 /* Carbon.framework in Frameworks */, + 4B2E46097E6B4CEC44AD44DF /* ForceFeedback.framework in Frameworks */, + 241B076B04E648B77FE801CB /* CoreFoundation.framework in Frameworks */, + 6A8F5A5E05E915CE079345A2 /* OpenGL.framework in Frameworks */, + 357611781ADC74A1037D2252 /* libSDL2main.a in Frameworks */, + 1C3E3BA915A259F63AC4528C /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 10DC6F522C1A71FA0DA010BE /* loopwave */ = { + isa = PBXGroup; + children = ( + 45015DB51A4E3631694E275F /* test */, + 1AA572E74EA81F7D073406F6 /* Frameworks */, + 1D2112E0415162D328FC4413 /* Products */, + 752A1EB66A882B6A563747D5 /* Projects */, + ); + name = "loopwave"; + sourceTree = ""; + }; + 45015DB51A4E3631694E275F /* test */ = { + isa = PBXGroup; + children = ( + 678D151462E007225B785C96 /* loopwave.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1AA572E74EA81F7D073406F6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3FF775E052DF64213AA74EA8 /* AudioToolbox.framework */, + 41911CCC2E016FAF4C7B5D0F /* AudioUnit.framework */, + 4C9302C90E6D16843F9D6776 /* Cocoa.framework */, + 34F36C7058A772A8121150A7 /* CoreAudio.framework */, + 17FA2D2641DB428349235033 /* IOKit.framework */, + 18564BEC7C24477639DE40D7 /* Carbon.framework */, + 3FE77A6915207D9A3DBB62F9 /* ForceFeedback.framework */, + 249758AD63251B207AA517F4 /* CoreFoundation.framework */, + 3A5B421669D32F3F511B5E0E /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1D2112E0415162D328FC4413 /* Products */ = { + isa = PBXGroup; + children = ( + 2B4350C14C8B537A2A2B708A /* loopwave */, + ); + name = "Products"; + sourceTree = ""; + }; + 752A1EB66A882B6A563747D5 /* Projects */ = { + isa = PBXGroup; + children = ( + 733C6FCB7A667D0D026B4935 /* SDL2main.xcodeproj */, + 4A1C0F7C38A3012153147AAD /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 3F7400603BBE3DEC07F71FE3 /* Products */ = { + isa = PBXGroup; + children = ( + 6C9E31DF555A369F1C594FFE /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 6A112AD1393B77300EC017FD /* Products */ = { + isa = PBXGroup; + children = ( + 15A7390A447027703C897F68 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2A6766BB350B161C222469ED /* loopwave */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1ED806CE708338FA513C70C2 /* Build configuration list for PBXNativeTarget "loopwave" */; + buildPhases = ( + 5484365116910BE1747B461F /* Resources */, + 46D61C9C656E3F097D6F05D7 /* Sources */, + 7D535E86374067287BDD77E5 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 3942471407226A9824A304CB /* PBXTargetDependency */, + 5B0B599D7B16107D3E195C73 /* PBXTargetDependency */, + ); + name = "loopwave"; + productInstallPath = "$(HOME)/bin"; + productName = "loopwave"; + productReference = 2B4350C14C8B537A2A2B708A /* loopwave */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "loopwave" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 10DC6F522C1A71FA0DA010BE /* loopwave */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 3F7400603BBE3DEC07F71FE3 /* Products */; + ProjectRef = 733C6FCB7A667D0D026B4935 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 6A112AD1393B77300EC017FD /* Products */; + ProjectRef = 4A1C0F7C38A3012153147AAD /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 2A6766BB350B161C222469ED /* loopwave */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6C9E31DF555A369F1C594FFE /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 05C02D59441030617055018A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 15A7390A447027703C897F68 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 0B214A086B073D3575D04065 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5484365116910BE1747B461F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 46D61C9C656E3F097D6F05D7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 166A40A11B46210D65765380 /* loopwave.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 3942471407226A9824A304CB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 28AE4DAC602B648038605CD9 /* PBXContainerItemProxy */; + }; + 5B0B599D7B16107D3E195C73 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 5F6652DE7E410F094C8E0D89 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 483D31E0782849AE7C847B89 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Debug Universal"; + }; + 7CD25C98405117540F606E53 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Debug Native"; + }; + 5004469E321B287B57F933E2 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Release Universal"; + }; + 0B6D4C12490C68CC41A76FF3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "loopwave"; + }; + name = "Release Native"; + }; + 70F853C55D2E318540341E7A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 4AAC74A876CA56604D861CFD /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 5C7F1C0E0870207D26967E76 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 561379AF73E40B362BB038D3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1ED806CE708338FA513C70C2 /* Build configuration list for PBXNativeTarget "loopwave" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 483D31E0782849AE7C847B89 /* Debug Universal */, + 7CD25C98405117540F606E53 /* Debug Native */, + 5004469E321B287B57F933E2 /* Release Universal */, + 0B6D4C12490C68CC41A76FF3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "loopwave" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 70F853C55D2E318540341E7A /* Debug Universal */, + 4AAC74A876CA56604D861CFD /* Debug Native */, + 5C7F1C0E0870207D26967E76 /* Release Universal */, + 561379AF73E40B362BB038D3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testatomic/testatomic.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testatomic/testatomic.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..8a88c3348a --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testatomic/testatomic.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 52BA31676736458613223958 /* testatomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 5AED20E93BB779CA4B077035 /* testatomic.c */; }; + 7A051340693E059B1F052718 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EC102744D20281F0E50361A /* AudioToolbox.framework */; }; + 32C06EDC5C2E693A69F61E84 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CEE765B57175E4403E34596 /* AudioUnit.framework */; }; + 42BE52AB77FC4E1F668A7D05 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 794D536B4E2D75B230FC1E71 /* Cocoa.framework */; }; + 00D7515204212DB030714D98 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79AF05DE336A762B3B203C4B /* CoreAudio.framework */; }; + 5F1C618119E46786166405A9 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 617E2FDD5EB618BA79E53610 /* IOKit.framework */; }; + 3FD01F3F6809493072012B8E /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 276456530578408B7ACB42B4 /* Carbon.framework */; }; + 43CE33CA2AD3394430CC61E0 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34E8738941040C3111F24E38 /* ForceFeedback.framework */; }; + 66267F67590B1651566D2F44 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 71423C110C2C3BD4120E60C9 /* CoreFoundation.framework */; }; + 0A893C19155932BA09D26E7E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FCA267A4A85153504700EBA /* OpenGL.framework */; }; + 42515E4E783F1D0348B56488 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 356045F654B16DBA56DA3A28 /* libSDL2main.a */; }; + 300323230F1348EB634A15AD /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11B523EC739A3EC715F74063 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5DAA4874399E618B03DB4317 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 480A3CAB279822AD342636AD /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 370B468A377D038B3A42641D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 480A3CAB279822AD342636AD /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 5B4C0C0D469561EF26F4004F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2F8E284C360B0C384A487BBA /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 61B760A2343C74A45A58493C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2F8E284C360B0C384A487BBA /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5AED20E93BB779CA4B077035 /* testatomic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testatomic.c"; path = "../../../../../test/testatomic.c"; sourceTree = ""; }; + 5EC102744D20281F0E50361A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 1CEE765B57175E4403E34596 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 794D536B4E2D75B230FC1E71 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 79AF05DE336A762B3B203C4B /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 617E2FDD5EB618BA79E53610 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 276456530578408B7ACB42B4 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 34E8738941040C3111F24E38 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 71423C110C2C3BD4120E60C9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 3FCA267A4A85153504700EBA /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 38292B1776EF01BD5BE20E11 /* testatomic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testatomic"; path = "testatomic"; sourceTree = BUILT_PRODUCTS_DIR; }; + 480A3CAB279822AD342636AD /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2F8E284C360B0C384A487BBA /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4D13439A5F251DA6308A5695 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7A051340693E059B1F052718 /* AudioToolbox.framework in Frameworks */, + 32C06EDC5C2E693A69F61E84 /* AudioUnit.framework in Frameworks */, + 42BE52AB77FC4E1F668A7D05 /* Cocoa.framework in Frameworks */, + 00D7515204212DB030714D98 /* CoreAudio.framework in Frameworks */, + 5F1C618119E46786166405A9 /* IOKit.framework in Frameworks */, + 3FD01F3F6809493072012B8E /* Carbon.framework in Frameworks */, + 43CE33CA2AD3394430CC61E0 /* ForceFeedback.framework in Frameworks */, + 66267F67590B1651566D2F44 /* CoreFoundation.framework in Frameworks */, + 0A893C19155932BA09D26E7E /* OpenGL.framework in Frameworks */, + 42515E4E783F1D0348B56488 /* libSDL2main.a in Frameworks */, + 300323230F1348EB634A15AD /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 74206AE430180C3F0D4363CB /* testatomic */ = { + isa = PBXGroup; + children = ( + 26216D874BA160C261CA4004 /* test */, + 51310A433DC16F926F8E55FD /* Frameworks */, + 469B159E66314A3A55881384 /* Products */, + 4D661CFC65F134784E2B1D68 /* Projects */, + ); + name = "testatomic"; + sourceTree = ""; + }; + 26216D874BA160C261CA4004 /* test */ = { + isa = PBXGroup; + children = ( + 5AED20E93BB779CA4B077035 /* testatomic.c */, + ); + name = "test"; + sourceTree = ""; + }; + 51310A433DC16F926F8E55FD /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5EC102744D20281F0E50361A /* AudioToolbox.framework */, + 1CEE765B57175E4403E34596 /* AudioUnit.framework */, + 794D536B4E2D75B230FC1E71 /* Cocoa.framework */, + 79AF05DE336A762B3B203C4B /* CoreAudio.framework */, + 617E2FDD5EB618BA79E53610 /* IOKit.framework */, + 276456530578408B7ACB42B4 /* Carbon.framework */, + 34E8738941040C3111F24E38 /* ForceFeedback.framework */, + 71423C110C2C3BD4120E60C9 /* CoreFoundation.framework */, + 3FCA267A4A85153504700EBA /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 469B159E66314A3A55881384 /* Products */ = { + isa = PBXGroup; + children = ( + 38292B1776EF01BD5BE20E11 /* testatomic */, + ); + name = "Products"; + sourceTree = ""; + }; + 4D661CFC65F134784E2B1D68 /* Projects */ = { + isa = PBXGroup; + children = ( + 480A3CAB279822AD342636AD /* SDL2main.xcodeproj */, + 2F8E284C360B0C384A487BBA /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7E7B4C7F5BF74B390D393D31 /* Products */ = { + isa = PBXGroup; + children = ( + 356045F654B16DBA56DA3A28 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 627E3FD02ABC57640F6A087D /* Products */ = { + isa = PBXGroup; + children = ( + 11B523EC739A3EC715F74063 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3C171A8678AB499912C1478B /* testatomic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DF2362C0D807BA65AAD2BDC /* Build configuration list for PBXNativeTarget "testatomic" */; + buildPhases = ( + 30BF06E131B7051F4EAA2C83 /* Resources */, + 7268103B4C4C50B27C2A2C69 /* Sources */, + 4D13439A5F251DA6308A5695 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 443F439036694F8E33F208E8 /* PBXTargetDependency */, + 4277186950AA6BD4397A0E30 /* PBXTargetDependency */, + ); + name = "testatomic"; + productInstallPath = "$(HOME)/bin"; + productName = "testatomic"; + productReference = 38292B1776EF01BD5BE20E11 /* testatomic */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testatomic" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 74206AE430180C3F0D4363CB /* testatomic */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7E7B4C7F5BF74B390D393D31 /* Products */; + ProjectRef = 480A3CAB279822AD342636AD /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 627E3FD02ABC57640F6A087D /* Products */; + ProjectRef = 2F8E284C360B0C384A487BBA /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 3C171A8678AB499912C1478B /* testatomic */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 356045F654B16DBA56DA3A28 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5DAA4874399E618B03DB4317 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11B523EC739A3EC715F74063 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 5B4C0C0D469561EF26F4004F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 30BF06E131B7051F4EAA2C83 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7268103B4C4C50B27C2A2C69 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52BA31676736458613223958 /* testatomic.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 443F439036694F8E33F208E8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 370B468A377D038B3A42641D /* PBXContainerItemProxy */; + }; + 4277186950AA6BD4397A0E30 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 61B760A2343C74A45A58493C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 476A04AA44A419371C470B5B /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Debug Universal"; + }; + 77003C4228FC3B942BF379C1 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Debug Native"; + }; + 69B43F786CA013D2523E7DA2 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Release Universal"; + }; + 5861666E7F67769F59171558 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testatomic"; + }; + name = "Release Native"; + }; + 27271AAB6EE3799531DD5C3A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 02A07859572149B3396B615A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 23C634547772703B43AB380E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4723758A6D0243837BDA4A77 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DF2362C0D807BA65AAD2BDC /* Build configuration list for PBXNativeTarget "testatomic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 476A04AA44A419371C470B5B /* Debug Universal */, + 77003C4228FC3B942BF379C1 /* Debug Native */, + 69B43F786CA013D2523E7DA2 /* Release Universal */, + 5861666E7F67769F59171558 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testatomic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 27271AAB6EE3799531DD5C3A /* Debug Universal */, + 02A07859572149B3396B615A /* Debug Native */, + 23C634547772703B43AB380E /* Release Universal */, + 4723758A6D0243837BDA4A77 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..817f66c0ed --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testaudioinfo/testaudioinfo.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 77BF40086051716945395910 /* testaudioinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 25EB152A7D48349343BF65B1 /* testaudioinfo.c */; }; + 190D2A136D1A72CC462215C8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 680157970C926BDD01AB364F /* AudioToolbox.framework */; }; + 253014CB4CAD1AED3EC03B28 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37363F6C729B48C86D394061 /* AudioUnit.framework */; }; + 591913C36AEE635E5F894732 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 775231941FAC03A8120D170D /* Cocoa.framework */; }; + 2A9E28D343280D4337DA64CA /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26CE2A4052345D382D491FDA /* CoreAudio.framework */; }; + 7AA57BBD644578FE098D1F48 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F5D23AF427A635903BC2C4F /* IOKit.framework */; }; + 27B920FE16CD08720CC04B8D /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39D20C594B603EEE090D6669 /* Carbon.framework */; }; + 37F6778402951DCA419B464F /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20A8345B5FF43EB777173621 /* ForceFeedback.framework */; }; + 7AAC493607B066E151210909 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 057C190A0EF534711B4959F7 /* CoreFoundation.framework */; }; + 029C77FA76582A0E0A9948A2 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54322B875422359D1423175F /* OpenGL.framework */; }; + 328802C6243133D3104D4E21 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0509368D68EA13027E88231E /* libSDL2main.a */; }; + 783034A429E849EA5CE54661 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DE13C126F242C9E73765C28 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 205B3AD04DFD3D5A05EF174E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4C001BCC77191595712003FF /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 37244AC37C55516031333D9A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4C001BCC77191595712003FF /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 1FD643275CA430CF1E8E2F4D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 01B34D0312EB394653A7096D /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 7A1246F041A201272FEC495D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 01B34D0312EB394653A7096D /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 25EB152A7D48349343BF65B1 /* testaudioinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testaudioinfo.c"; path = "../../../../../test/testaudioinfo.c"; sourceTree = ""; }; + 680157970C926BDD01AB364F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 37363F6C729B48C86D394061 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 775231941FAC03A8120D170D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 26CE2A4052345D382D491FDA /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3F5D23AF427A635903BC2C4F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 39D20C594B603EEE090D6669 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 20A8345B5FF43EB777173621 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 057C190A0EF534711B4959F7 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 54322B875422359D1423175F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 1667587F236E324C312A69FF /* testaudioinfo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testaudioinfo"; path = "testaudioinfo"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C001BCC77191595712003FF /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 01B34D0312EB394653A7096D /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 01AF1FB21B1F3D446EF52C08 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 190D2A136D1A72CC462215C8 /* AudioToolbox.framework in Frameworks */, + 253014CB4CAD1AED3EC03B28 /* AudioUnit.framework in Frameworks */, + 591913C36AEE635E5F894732 /* Cocoa.framework in Frameworks */, + 2A9E28D343280D4337DA64CA /* CoreAudio.framework in Frameworks */, + 7AA57BBD644578FE098D1F48 /* IOKit.framework in Frameworks */, + 27B920FE16CD08720CC04B8D /* Carbon.framework in Frameworks */, + 37F6778402951DCA419B464F /* ForceFeedback.framework in Frameworks */, + 7AAC493607B066E151210909 /* CoreFoundation.framework in Frameworks */, + 029C77FA76582A0E0A9948A2 /* OpenGL.framework in Frameworks */, + 328802C6243133D3104D4E21 /* libSDL2main.a in Frameworks */, + 783034A429E849EA5CE54661 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 44217B8965F2798B44953DE4 /* testaudioinfo */ = { + isa = PBXGroup; + children = ( + 6EC42FC819DF11B5154779E2 /* test */, + 348602B967A86BA8733E1C62 /* Frameworks */, + 394F7D4969D7540A6B9B23E2 /* Products */, + 665F200A2BD211591F457354 /* Projects */, + ); + name = "testaudioinfo"; + sourceTree = ""; + }; + 6EC42FC819DF11B5154779E2 /* test */ = { + isa = PBXGroup; + children = ( + 25EB152A7D48349343BF65B1 /* testaudioinfo.c */, + ); + name = "test"; + sourceTree = ""; + }; + 348602B967A86BA8733E1C62 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 680157970C926BDD01AB364F /* AudioToolbox.framework */, + 37363F6C729B48C86D394061 /* AudioUnit.framework */, + 775231941FAC03A8120D170D /* Cocoa.framework */, + 26CE2A4052345D382D491FDA /* CoreAudio.framework */, + 3F5D23AF427A635903BC2C4F /* IOKit.framework */, + 39D20C594B603EEE090D6669 /* Carbon.framework */, + 20A8345B5FF43EB777173621 /* ForceFeedback.framework */, + 057C190A0EF534711B4959F7 /* CoreFoundation.framework */, + 54322B875422359D1423175F /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 394F7D4969D7540A6B9B23E2 /* Products */ = { + isa = PBXGroup; + children = ( + 1667587F236E324C312A69FF /* testaudioinfo */, + ); + name = "Products"; + sourceTree = ""; + }; + 665F200A2BD211591F457354 /* Projects */ = { + isa = PBXGroup; + children = ( + 4C001BCC77191595712003FF /* SDL2main.xcodeproj */, + 01B34D0312EB394653A7096D /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 13304AB568B57BA12EA166A9 /* Products */ = { + isa = PBXGroup; + children = ( + 0509368D68EA13027E88231E /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5B48557310784A282FA77E6C /* Products */ = { + isa = PBXGroup; + children = ( + 0DE13C126F242C9E73765C28 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7E255C0F0A895768025C79FC /* testaudioinfo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 37C23DCE27C44E8C4EEA20D7 /* Build configuration list for PBXNativeTarget "testaudioinfo" */; + buildPhases = ( + 22D97E8E486B6FF42CF141AB /* Resources */, + 5DB66CF028AE76BF08280EAB /* Sources */, + 01AF1FB21B1F3D446EF52C08 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 05302FF737C0413451FE363A /* PBXTargetDependency */, + 09D736EE6FC3136E44C97DC3 /* PBXTargetDependency */, + ); + name = "testaudioinfo"; + productInstallPath = "$(HOME)/bin"; + productName = "testaudioinfo"; + productReference = 1667587F236E324C312A69FF /* testaudioinfo */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testaudioinfo" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 44217B8965F2798B44953DE4 /* testaudioinfo */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 13304AB568B57BA12EA166A9 /* Products */; + ProjectRef = 4C001BCC77191595712003FF /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5B48557310784A282FA77E6C /* Products */; + ProjectRef = 01B34D0312EB394653A7096D /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 7E255C0F0A895768025C79FC /* testaudioinfo */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 0509368D68EA13027E88231E /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 205B3AD04DFD3D5A05EF174E /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0DE13C126F242C9E73765C28 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 1FD643275CA430CF1E8E2F4D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 22D97E8E486B6FF42CF141AB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5DB66CF028AE76BF08280EAB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 77BF40086051716945395910 /* testaudioinfo.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 05302FF737C0413451FE363A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 37244AC37C55516031333D9A /* PBXContainerItemProxy */; + }; + 09D736EE6FC3136E44C97DC3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 7A1246F041A201272FEC495D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1A2A3EF20C3845F8592520F3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Debug Universal"; + }; + 35F712173DB83C252B0F0A73 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Debug Native"; + }; + 3FA56C0741656EDD75AE7E12 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Release Universal"; + }; + 18C2749517766F622A264DEE /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testaudioinfo"; + }; + name = "Release Native"; + }; + 655A2B8B6F8252807EC60085 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 082D675869A30D514B1D0D47 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 00BA5C0300A104F90ACE5EFA /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4E887B94318C7F6B6E8C29AA /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 37C23DCE27C44E8C4EEA20D7 /* Build configuration list for PBXNativeTarget "testaudioinfo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1A2A3EF20C3845F8592520F3 /* Debug Universal */, + 35F712173DB83C252B0F0A73 /* Debug Native */, + 3FA56C0741656EDD75AE7E12 /* Release Universal */, + 18C2749517766F622A264DEE /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testaudioinfo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 655A2B8B6F8252807EC60085 /* Debug Universal */, + 082D675869A30D514B1D0D47 /* Debug Native */, + 00BA5C0300A104F90ACE5EFA /* Release Universal */, + 4E887B94318C7F6B6E8C29AA /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testautomation/testautomation.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testautomation/testautomation.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..aaf1d3e8c1 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testautomation/testautomation.xcodeproj/project.pbxproj @@ -0,0 +1,568 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6C2D1B7F6FD948D813597556 /* testautomation.c in Sources */ = {isa = PBXBuildFile; fileRef = 02F07A70794F4EA017122748 /* testautomation.c */; }; + 1D59654F6543146669A50F9D /* testautomation_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 67CE10AB773967E92D9E0809 /* testautomation_audio.c */; }; + 119E2CF662CD266835173054 /* testautomation_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 1724553124845FAC540662B5 /* testautomation_clipboard.c */; }; + 1DAA2B7732526697452644E5 /* testautomation_events.c in Sources */ = {isa = PBXBuildFile; fileRef = 5ECA243A16E250343A501AE8 /* testautomation_events.c */; }; + 350F01AE62D857CB5C6F1FA7 /* testautomation_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 30E66A5E63077A5E6FDC60A4 /* testautomation_keyboard.c */; }; + 2EA572B7005449BA606066E7 /* testautomation_main.c in Sources */ = {isa = PBXBuildFile; fileRef = 2A9339AF490178CE2DAE177B /* testautomation_main.c */; }; + 261E2DC767D84AF40AB37EC7 /* testautomation_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = 76962AAE2FBA04BE14B45E7C /* testautomation_mouse.c */; }; + 51CE3D32297C32F65A570960 /* testautomation_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = 41BC3336256712D50AC92E24 /* testautomation_pixels.c */; }; + 7AEE2F2B51B41C626A2748EE /* testautomation_platform.c in Sources */ = {isa = PBXBuildFile; fileRef = 0EF30DB3124B3B5D028B0824 /* testautomation_platform.c */; }; + 4AD378CC324A23C518544AB1 /* testautomation_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = 2E225D6D5DDA53B001931162 /* testautomation_rect.c */; }; + 22C07B6D5566319C22484C40 /* testautomation_render.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B595BAA102F000579A233E3 /* testautomation_render.c */; }; + 22D63F1315BE7B28061828AC /* testautomation_rwops.c in Sources */ = {isa = PBXBuildFile; fileRef = 2A03303E50566A6F41BE45BB /* testautomation_rwops.c */; }; + 5D4F6F4A03C85B7F74CD4114 /* testautomation_sdltest.c in Sources */ = {isa = PBXBuildFile; fileRef = 37B95314610A6D537F426158 /* testautomation_sdltest.c */; }; + 31EF4FB440F804510FC824FF /* testautomation_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = 0F0F47154A363C5A6E776555 /* testautomation_stdlib.c */; }; + 7FC9661039A8605D2E5E3DB4 /* testautomation_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = 1E530E1C0EB66747054E5C23 /* testautomation_surface.c */; }; + 6C4A7BDB069474E058F60283 /* testautomation_syswm.c in Sources */ = {isa = PBXBuildFile; fileRef = 042E7203422E745A59252751 /* testautomation_syswm.c */; }; + 66F04E054CC476FA421D0BFB /* testautomation_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = 24935FE831F301295F995943 /* testautomation_timer.c */; }; + 151E1FB5282C10BD6D085EE0 /* testautomation_video.c in Sources */ = {isa = PBXBuildFile; fileRef = 2C59314151B2336963091C60 /* testautomation_video.c */; }; + 3D63515F679E516C480A12C4 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2DE67FE13D66165A7A04470B /* AudioToolbox.framework */; }; + 601271BD3CC347FE2A663A69 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AB52670094463062D5755CC /* AudioUnit.framework */; }; + 34A9541D705B096D7D690F4F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64DF76961ABE4DA72D9E04E2 /* Cocoa.framework */; }; + 2FD8149A2AE46E9B19201372 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C774CAE5EE71FFD494846EF /* CoreAudio.framework */; }; + 41C5024F150108A44C1C559F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A386FA34BC05A6126B415A7 /* IOKit.framework */; }; + 5FA21AD1355840324F3960FB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40E513B239A31F071FE03CAE /* Carbon.framework */; }; + 35024078077B44D072B14735 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 233862F97345691508BC1E73 /* ForceFeedback.framework */; }; + 08CE0D33111C4E0404375994 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C235FF82C50558D502D598A /* CoreFoundation.framework */; }; + 627C724716B909A0121E2CB8 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08B05DEB23887618495A54A0 /* OpenGL.framework */; }; + 38EC0E7959A650DD7B490359 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 189655F647DC75E80F9E01B7 /* libSDL2main.a */; }; + 357C072C66D134657A4358AF /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22C35FC727DB2D4E18402504 /* libSDL2test.a */; }; + 77E3096D6E8B6AFA639C282B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B5D0C561F7143C763071C12 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 493019283F531FA91F1B5B92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 560237CD7CB1015846F45D67 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 0EBA708404EF6A35702F41B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 560237CD7CB1015846F45D67 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 24730DD730B5791B5C937562 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 06C9331D44ED555900FD68F0 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 199C7651500E075E4F5D76B0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 06C9331D44ED555900FD68F0 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 18113D682F4D016F4F5C5C8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5685467763AD30D44F0D6738 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 009C23BA2E38797638A507B8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5685467763AD30D44F0D6738 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 02F07A70794F4EA017122748 /* testautomation.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation.c"; path = "../../../../../test/testautomation.c"; sourceTree = ""; }; + 67CE10AB773967E92D9E0809 /* testautomation_audio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_audio.c"; path = "../../../../../test/testautomation_audio.c"; sourceTree = ""; }; + 1724553124845FAC540662B5 /* testautomation_clipboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_clipboard.c"; path = "../../../../../test/testautomation_clipboard.c"; sourceTree = ""; }; + 5ECA243A16E250343A501AE8 /* testautomation_events.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_events.c"; path = "../../../../../test/testautomation_events.c"; sourceTree = ""; }; + 30E66A5E63077A5E6FDC60A4 /* testautomation_keyboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_keyboard.c"; path = "../../../../../test/testautomation_keyboard.c"; sourceTree = ""; }; + 2A9339AF490178CE2DAE177B /* testautomation_main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_main.c"; path = "../../../../../test/testautomation_main.c"; sourceTree = ""; }; + 76962AAE2FBA04BE14B45E7C /* testautomation_mouse.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_mouse.c"; path = "../../../../../test/testautomation_mouse.c"; sourceTree = ""; }; + 41BC3336256712D50AC92E24 /* testautomation_pixels.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_pixels.c"; path = "../../../../../test/testautomation_pixels.c"; sourceTree = ""; }; + 0EF30DB3124B3B5D028B0824 /* testautomation_platform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_platform.c"; path = "../../../../../test/testautomation_platform.c"; sourceTree = ""; }; + 2E225D6D5DDA53B001931162 /* testautomation_rect.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_rect.c"; path = "../../../../../test/testautomation_rect.c"; sourceTree = ""; }; + 3B595BAA102F000579A233E3 /* testautomation_render.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_render.c"; path = "../../../../../test/testautomation_render.c"; sourceTree = ""; }; + 2A03303E50566A6F41BE45BB /* testautomation_rwops.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_rwops.c"; path = "../../../../../test/testautomation_rwops.c"; sourceTree = ""; }; + 37B95314610A6D537F426158 /* testautomation_sdltest.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_sdltest.c"; path = "../../../../../test/testautomation_sdltest.c"; sourceTree = ""; }; + 0F0F47154A363C5A6E776555 /* testautomation_stdlib.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_stdlib.c"; path = "../../../../../test/testautomation_stdlib.c"; sourceTree = ""; }; + 005416F138EE3231543A5963 /* testautomation_suites.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "testautomation_suites.h"; path = "../../../../../test/testautomation_suites.h"; sourceTree = ""; }; + 1E530E1C0EB66747054E5C23 /* testautomation_surface.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_surface.c"; path = "../../../../../test/testautomation_surface.c"; sourceTree = ""; }; + 042E7203422E745A59252751 /* testautomation_syswm.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_syswm.c"; path = "../../../../../test/testautomation_syswm.c"; sourceTree = ""; }; + 24935FE831F301295F995943 /* testautomation_timer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_timer.c"; path = "../../../../../test/testautomation_timer.c"; sourceTree = ""; }; + 2C59314151B2336963091C60 /* testautomation_video.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testautomation_video.c"; path = "../../../../../test/testautomation_video.c"; sourceTree = ""; }; + 2DE67FE13D66165A7A04470B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0AB52670094463062D5755CC /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 64DF76961ABE4DA72D9E04E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 3C774CAE5EE71FFD494846EF /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3A386FA34BC05A6126B415A7 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 40E513B239A31F071FE03CAE /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 233862F97345691508BC1E73 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 0C235FF82C50558D502D598A /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 08B05DEB23887618495A54A0 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 16F069400106487D10103B58 /* testautomation */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testautomation"; path = "testautomation"; sourceTree = BUILT_PRODUCTS_DIR; }; + 560237CD7CB1015846F45D67 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 06C9331D44ED555900FD68F0 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5685467763AD30D44F0D6738 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 495043B7648F7EF948345825 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D63515F679E516C480A12C4 /* AudioToolbox.framework in Frameworks */, + 601271BD3CC347FE2A663A69 /* AudioUnit.framework in Frameworks */, + 34A9541D705B096D7D690F4F /* Cocoa.framework in Frameworks */, + 2FD8149A2AE46E9B19201372 /* CoreAudio.framework in Frameworks */, + 41C5024F150108A44C1C559F /* IOKit.framework in Frameworks */, + 5FA21AD1355840324F3960FB /* Carbon.framework in Frameworks */, + 35024078077B44D072B14735 /* ForceFeedback.framework in Frameworks */, + 08CE0D33111C4E0404375994 /* CoreFoundation.framework in Frameworks */, + 627C724716B909A0121E2CB8 /* OpenGL.framework in Frameworks */, + 38EC0E7959A650DD7B490359 /* libSDL2main.a in Frameworks */, + 357C072C66D134657A4358AF /* libSDL2test.a in Frameworks */, + 77E3096D6E8B6AFA639C282B /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 271769BD0A515E5D6612478D /* testautomation */ = { + isa = PBXGroup; + children = ( + 254A294842BB285912A60D65 /* test */, + 5CB107F16F12340D4B03546C /* Frameworks */, + 06D2659B5F2A45A211DB4770 /* Products */, + 35591A643EFF76B030C97827 /* Projects */, + ); + name = "testautomation"; + sourceTree = ""; + }; + 254A294842BB285912A60D65 /* test */ = { + isa = PBXGroup; + children = ( + 02F07A70794F4EA017122748 /* testautomation.c */, + 67CE10AB773967E92D9E0809 /* testautomation_audio.c */, + 1724553124845FAC540662B5 /* testautomation_clipboard.c */, + 5ECA243A16E250343A501AE8 /* testautomation_events.c */, + 30E66A5E63077A5E6FDC60A4 /* testautomation_keyboard.c */, + 2A9339AF490178CE2DAE177B /* testautomation_main.c */, + 76962AAE2FBA04BE14B45E7C /* testautomation_mouse.c */, + 41BC3336256712D50AC92E24 /* testautomation_pixels.c */, + 0EF30DB3124B3B5D028B0824 /* testautomation_platform.c */, + 2E225D6D5DDA53B001931162 /* testautomation_rect.c */, + 3B595BAA102F000579A233E3 /* testautomation_render.c */, + 2A03303E50566A6F41BE45BB /* testautomation_rwops.c */, + 37B95314610A6D537F426158 /* testautomation_sdltest.c */, + 0F0F47154A363C5A6E776555 /* testautomation_stdlib.c */, + 005416F138EE3231543A5963 /* testautomation_suites.h */, + 1E530E1C0EB66747054E5C23 /* testautomation_surface.c */, + 042E7203422E745A59252751 /* testautomation_syswm.c */, + 24935FE831F301295F995943 /* testautomation_timer.c */, + 2C59314151B2336963091C60 /* testautomation_video.c */, + ); + name = "test"; + sourceTree = ""; + }; + 5CB107F16F12340D4B03546C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2DE67FE13D66165A7A04470B /* AudioToolbox.framework */, + 0AB52670094463062D5755CC /* AudioUnit.framework */, + 64DF76961ABE4DA72D9E04E2 /* Cocoa.framework */, + 3C774CAE5EE71FFD494846EF /* CoreAudio.framework */, + 3A386FA34BC05A6126B415A7 /* IOKit.framework */, + 40E513B239A31F071FE03CAE /* Carbon.framework */, + 233862F97345691508BC1E73 /* ForceFeedback.framework */, + 0C235FF82C50558D502D598A /* CoreFoundation.framework */, + 08B05DEB23887618495A54A0 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 06D2659B5F2A45A211DB4770 /* Products */ = { + isa = PBXGroup; + children = ( + 16F069400106487D10103B58 /* testautomation */, + ); + name = "Products"; + sourceTree = ""; + }; + 35591A643EFF76B030C97827 /* Projects */ = { + isa = PBXGroup; + children = ( + 560237CD7CB1015846F45D67 /* SDL2main.xcodeproj */, + 06C9331D44ED555900FD68F0 /* SDL2test.xcodeproj */, + 5685467763AD30D44F0D6738 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 358C06E72FD149F46E83074C /* Products */ = { + isa = PBXGroup; + children = ( + 189655F647DC75E80F9E01B7 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 2CEE788B247B1E6240DE6C83 /* Products */ = { + isa = PBXGroup; + children = ( + 22C35FC727DB2D4E18402504 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 47676CCD085B1AA613BC1EA3 /* Products */ = { + isa = PBXGroup; + children = ( + 1B5D0C561F7143C763071C12 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 28631DD94B073E08173D5033 /* testautomation */ = { + isa = PBXNativeTarget; + buildConfigurationList = 347D3A952B0D6C0A20D53978 /* Build configuration list for PBXNativeTarget "testautomation" */; + buildPhases = ( + 32D957D9011A042E7D1707EC /* Resources */, + 3242398C52DA0C6017EF77FE /* Sources */, + 495043B7648F7EF948345825 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 6B0B54B601FF376766927C01 /* PBXTargetDependency */, + 372C60A915631FB937262818 /* PBXTargetDependency */, + 01CA05B75DA8650E11D36C56 /* PBXTargetDependency */, + ); + name = "testautomation"; + productInstallPath = "$(HOME)/bin"; + productName = "testautomation"; + productReference = 16F069400106487D10103B58 /* testautomation */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testautomation" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 271769BD0A515E5D6612478D /* testautomation */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 358C06E72FD149F46E83074C /* Products */; + ProjectRef = 560237CD7CB1015846F45D67 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 2CEE788B247B1E6240DE6C83 /* Products */; + ProjectRef = 06C9331D44ED555900FD68F0 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 47676CCD085B1AA613BC1EA3 /* Products */; + ProjectRef = 5685467763AD30D44F0D6738 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 28631DD94B073E08173D5033 /* testautomation */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 189655F647DC75E80F9E01B7 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 493019283F531FA91F1B5B92 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 22C35FC727DB2D4E18402504 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 24730DD730B5791B5C937562 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1B5D0C561F7143C763071C12 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 18113D682F4D016F4F5C5C8E /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 32D957D9011A042E7D1707EC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3242398C52DA0C6017EF77FE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C2D1B7F6FD948D813597556 /* testautomation.c in Sources */, + 1D59654F6543146669A50F9D /* testautomation_audio.c in Sources */, + 119E2CF662CD266835173054 /* testautomation_clipboard.c in Sources */, + 1DAA2B7732526697452644E5 /* testautomation_events.c in Sources */, + 350F01AE62D857CB5C6F1FA7 /* testautomation_keyboard.c in Sources */, + 2EA572B7005449BA606066E7 /* testautomation_main.c in Sources */, + 261E2DC767D84AF40AB37EC7 /* testautomation_mouse.c in Sources */, + 51CE3D32297C32F65A570960 /* testautomation_pixels.c in Sources */, + 7AEE2F2B51B41C626A2748EE /* testautomation_platform.c in Sources */, + 4AD378CC324A23C518544AB1 /* testautomation_rect.c in Sources */, + 22C07B6D5566319C22484C40 /* testautomation_render.c in Sources */, + 22D63F1315BE7B28061828AC /* testautomation_rwops.c in Sources */, + 5D4F6F4A03C85B7F74CD4114 /* testautomation_sdltest.c in Sources */, + 31EF4FB440F804510FC824FF /* testautomation_stdlib.c in Sources */, + 7FC9661039A8605D2E5E3DB4 /* testautomation_surface.c in Sources */, + 6C4A7BDB069474E058F60283 /* testautomation_syswm.c in Sources */, + 66F04E054CC476FA421D0BFB /* testautomation_timer.c in Sources */, + 151E1FB5282C10BD6D085EE0 /* testautomation_video.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6B0B54B601FF376766927C01 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0EBA708404EF6A35702F41B3 /* PBXContainerItemProxy */; + }; + 372C60A915631FB937262818 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 199C7651500E075E4F5D76B0 /* PBXContainerItemProxy */; + }; + 01CA05B75DA8650E11D36C56 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 009C23BA2E38797638A507B8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5A5F50FB4E5C0F9E647766F5 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Debug Universal"; + }; + 26C4300A16290B5325976AE5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Debug Native"; + }; + 267834F13C13090327EE346A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Release Universal"; + }; + 7F37303A34907ED0381D21B2 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testautomation"; + }; + name = "Release Native"; + }; + 79750455726D657C356F47CF /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 63421004112F357B28D5610D /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 2E0953910421209721204718 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 61CD5A4165AE233109A87695 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 347D3A952B0D6C0A20D53978 /* Build configuration list for PBXNativeTarget "testautomation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5A5F50FB4E5C0F9E647766F5 /* Debug Universal */, + 26C4300A16290B5325976AE5 /* Debug Native */, + 267834F13C13090327EE346A /* Release Universal */, + 7F37303A34907ED0381D21B2 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testautomation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79750455726D657C356F47CF /* Debug Universal */, + 63421004112F357B28D5610D /* Debug Native */, + 2E0953910421209721204718 /* Release Universal */, + 61CD5A4165AE233109A87695 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..58e659d046 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testchessboard/testchessboard.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 53F17FAF6CB316A2162E49C7 /* testdrawchessboard.c in Sources */ = {isa = PBXBuildFile; fileRef = 7A9F00264EE05DB869A34ECA /* testdrawchessboard.c */; }; + 2F7E1C6158EC7E8018BD3E97 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2210778F7A590F9E59BA7DBD /* AudioToolbox.framework */; }; + 6307663460A8744F6F5E2BEB /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D4F2B1E66207DED00E82547 /* AudioUnit.framework */; }; + 570879872CF272683856288E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57CA4AB568A953760C3064B7 /* Cocoa.framework */; }; + 69A500AB040B26864CF63AB2 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02E853780AE27CF768BB0720 /* CoreAudio.framework */; }; + 23F06F0A03A165DE520B0BAE /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 389B00D9419E24B57A9E4CBF /* IOKit.framework */; }; + 1C09222417BD7ED021DB3F2E /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4F95664412B359C466FD04B9 /* Carbon.framework */; }; + 39E116C17A8C12B0681D6EAF /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B5E3FE55A6A003B5F3D46B5 /* ForceFeedback.framework */; }; + 49D1650A7D2043F2062913F2 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53BF210E471818C95FA63D8E /* CoreFoundation.framework */; }; + 52A023DF45D46FBA238F3410 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 302E4A8E41447D293C7A76D3 /* OpenGL.framework */; }; + 171E48AD17456CB571CD51AF /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 122076B23B0A3C0261985ECD /* libSDL2main.a */; }; + 1A3C1A8D400921562C4F0D58 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0371077A141C7631256C735F /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 535F0246487315C413FD55EB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7563471568DA68AF481042F9 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 72811C971C42607A11B50EDB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7563471568DA68AF481042F9 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 14306A0259E90AD3416B7C86 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5771498F532127BA57AC04B4 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 72C647FD6C2177CB4D856347 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5771498F532127BA57AC04B4 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 7A9F00264EE05DB869A34ECA /* testdrawchessboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testdrawchessboard.c"; path = "../../../../../test/testdrawchessboard.c"; sourceTree = ""; }; + 2210778F7A590F9E59BA7DBD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4D4F2B1E66207DED00E82547 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 57CA4AB568A953760C3064B7 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 02E853780AE27CF768BB0720 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 389B00D9419E24B57A9E4CBF /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 4F95664412B359C466FD04B9 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 1B5E3FE55A6A003B5F3D46B5 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 53BF210E471818C95FA63D8E /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 302E4A8E41447D293C7A76D3 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 04D145EC31380AB3127956C9 /* testchessboard */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testchessboard"; path = "testchessboard"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7563471568DA68AF481042F9 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5771498F532127BA57AC04B4 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 13987AEC3CF32DBF70C26AD2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F7E1C6158EC7E8018BD3E97 /* AudioToolbox.framework in Frameworks */, + 6307663460A8744F6F5E2BEB /* AudioUnit.framework in Frameworks */, + 570879872CF272683856288E /* Cocoa.framework in Frameworks */, + 69A500AB040B26864CF63AB2 /* CoreAudio.framework in Frameworks */, + 23F06F0A03A165DE520B0BAE /* IOKit.framework in Frameworks */, + 1C09222417BD7ED021DB3F2E /* Carbon.framework in Frameworks */, + 39E116C17A8C12B0681D6EAF /* ForceFeedback.framework in Frameworks */, + 49D1650A7D2043F2062913F2 /* CoreFoundation.framework in Frameworks */, + 52A023DF45D46FBA238F3410 /* OpenGL.framework in Frameworks */, + 171E48AD17456CB571CD51AF /* libSDL2main.a in Frameworks */, + 1A3C1A8D400921562C4F0D58 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 00A850F72BE40A941F3173E2 /* testchessboard */ = { + isa = PBXGroup; + children = ( + 36585C8A0940497403995758 /* test */, + 49FE5992130537E550E72B1B /* Frameworks */, + 378F2435169856E21AC52CDA /* Products */, + 3A8A6C0959DB6EBE00956ED3 /* Projects */, + ); + name = "testchessboard"; + sourceTree = ""; + }; + 36585C8A0940497403995758 /* test */ = { + isa = PBXGroup; + children = ( + 7A9F00264EE05DB869A34ECA /* testdrawchessboard.c */, + ); + name = "test"; + sourceTree = ""; + }; + 49FE5992130537E550E72B1B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2210778F7A590F9E59BA7DBD /* AudioToolbox.framework */, + 4D4F2B1E66207DED00E82547 /* AudioUnit.framework */, + 57CA4AB568A953760C3064B7 /* Cocoa.framework */, + 02E853780AE27CF768BB0720 /* CoreAudio.framework */, + 389B00D9419E24B57A9E4CBF /* IOKit.framework */, + 4F95664412B359C466FD04B9 /* Carbon.framework */, + 1B5E3FE55A6A003B5F3D46B5 /* ForceFeedback.framework */, + 53BF210E471818C95FA63D8E /* CoreFoundation.framework */, + 302E4A8E41447D293C7A76D3 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 378F2435169856E21AC52CDA /* Products */ = { + isa = PBXGroup; + children = ( + 04D145EC31380AB3127956C9 /* testchessboard */, + ); + name = "Products"; + sourceTree = ""; + }; + 3A8A6C0959DB6EBE00956ED3 /* Projects */ = { + isa = PBXGroup; + children = ( + 7563471568DA68AF481042F9 /* SDL2main.xcodeproj */, + 5771498F532127BA57AC04B4 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 29430E2E133E578F03C44A98 /* Products */ = { + isa = PBXGroup; + children = ( + 122076B23B0A3C0261985ECD /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 508F00887E7C22B53BA35B81 /* Products */ = { + isa = PBXGroup; + children = ( + 0371077A141C7631256C735F /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 2D9C67FE7120053A26FF662E /* testchessboard */ = { + isa = PBXNativeTarget; + buildConfigurationList = 30F9557E489C1ECD471B5118 /* Build configuration list for PBXNativeTarget "testchessboard" */; + buildPhases = ( + 3B6901E833B473B65F6D7861 /* Resources */, + 4EC312C07D6038FB25693CD0 /* Sources */, + 13987AEC3CF32DBF70C26AD2 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 076F304D115100CF28FF08A0 /* PBXTargetDependency */, + 6EAE713D020C107255711B24 /* PBXTargetDependency */, + ); + name = "testchessboard"; + productInstallPath = "$(HOME)/bin"; + productName = "testchessboard"; + productReference = 04D145EC31380AB3127956C9 /* testchessboard */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testchessboard" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 00A850F72BE40A941F3173E2 /* testchessboard */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 29430E2E133E578F03C44A98 /* Products */; + ProjectRef = 7563471568DA68AF481042F9 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 508F00887E7C22B53BA35B81 /* Products */; + ProjectRef = 5771498F532127BA57AC04B4 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 2D9C67FE7120053A26FF662E /* testchessboard */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 122076B23B0A3C0261985ECD /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 535F0246487315C413FD55EB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0371077A141C7631256C735F /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 14306A0259E90AD3416B7C86 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3B6901E833B473B65F6D7861 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4EC312C07D6038FB25693CD0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 53F17FAF6CB316A2162E49C7 /* testdrawchessboard.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 076F304D115100CF28FF08A0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 72811C971C42607A11B50EDB /* PBXContainerItemProxy */; + }; + 6EAE713D020C107255711B24 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 72C647FD6C2177CB4D856347 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3E441F1126857E0D1D0E349C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Debug Universal"; + }; + 0DD548EC2F2140166C4D3970 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Debug Native"; + }; + 17103F6541075969282A11D6 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Release Universal"; + }; + 32F264C811686FCB349351D8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testchessboard"; + }; + name = "Release Native"; + }; + 116037FB6F93207436810D2B /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 28495AC4285713AF6FDA6CA6 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 26B837F01BFE62D91B3E03D3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 43FD26B55A9264CD52253AB2 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 30F9557E489C1ECD471B5118 /* Build configuration list for PBXNativeTarget "testchessboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E441F1126857E0D1D0E349C /* Debug Universal */, + 0DD548EC2F2140166C4D3970 /* Debug Native */, + 17103F6541075969282A11D6 /* Release Universal */, + 32F264C811686FCB349351D8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testchessboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 116037FB6F93207436810D2B /* Debug Universal */, + 28495AC4285713AF6FDA6CA6 /* Debug Native */, + 26B837F01BFE62D91B3E03D3 /* Release Universal */, + 43FD26B55A9264CD52253AB2 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..ef9d995f0a --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testdraw2/testdraw2.xcodeproj/project.pbxproj @@ -0,0 +1,498 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 10EA2EC1366605703C93729C /* testdraw2.c in Sources */ = {isa = PBXBuildFile; fileRef = 0CA5613719DE5A60091A2DF6 /* testdraw2.c */; }; + 7DB529C61D682D2E5766027D /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01300C9B4FD2039008F25175 /* AudioToolbox.framework */; }; + 6F871C446E69566E65094356 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C76D1658C3074369B42EE7 /* AudioUnit.framework */; }; + 2C3978240D3A5B18221511FC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73D95AF930D91D94120464E5 /* Cocoa.framework */; }; + 79BF795E46D176DF45CB349F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EC032CC17246D2E1C3F1D32 /* CoreAudio.framework */; }; + 17D21CBD4A457F4108382B47 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40B60D081A29348109DE6FAA /* IOKit.framework */; }; + 22B9588669B03BA7107852E8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57DA618645BB7EA9118C1EA0 /* Carbon.framework */; }; + 0F9E03063F8138F04EB03EE3 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D6C199F47601F8C2A872874 /* ForceFeedback.framework */; }; + 33C15C7B3EF7568A14611BD2 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E4F47BF010875A20EF324CD /* CoreFoundation.framework */; }; + 7BA93D54730B6B990D68411B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 211C65FF6C7B10580D0D6538 /* OpenGL.framework */; }; + 47187D80178F683C640F2BA2 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A0A13AA1C97217870DE0553 /* libSDL2main.a */; }; + 70591504619E611F3F09751F /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 57C167206EE86C725D936D85 /* libSDL2test.a */; }; + 0411230C7BC75083638749C1 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 09992EFB63AE591916385087 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2438000D62B23F780181552C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7A1C46DD6656526E346902DA /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 7BFC15721B6C7A6337F1633A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7A1C46DD6656526E346902DA /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 1AEA263A383B60A643B06B2B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33DB1CA13E8E6B620A54428B /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 6AF43A817EC363E42DAF3F2E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33DB1CA13E8E6B620A54428B /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 2D907E90266F484213D72F44 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 67713D1963734C1D290657C0 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 33C979D3343A59EC2D120DD9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 67713D1963734C1D290657C0 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0CA5613719DE5A60091A2DF6 /* testdraw2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testdraw2.c"; path = "../../../../../test/testdraw2.c"; sourceTree = ""; }; + 01300C9B4FD2039008F25175 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 78C76D1658C3074369B42EE7 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 73D95AF930D91D94120464E5 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 4EC032CC17246D2E1C3F1D32 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 40B60D081A29348109DE6FAA /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 57DA618645BB7EA9118C1EA0 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 2D6C199F47601F8C2A872874 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2E4F47BF010875A20EF324CD /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 211C65FF6C7B10580D0D6538 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 6E62014B0EFA44001B5A5758 /* testdraw2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testdraw2"; path = "testdraw2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7A1C46DD6656526E346902DA /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 33DB1CA13E8E6B620A54428B /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 67713D1963734C1D290657C0 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 504565580DAB1633030B02ED /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7DB529C61D682D2E5766027D /* AudioToolbox.framework in Frameworks */, + 6F871C446E69566E65094356 /* AudioUnit.framework in Frameworks */, + 2C3978240D3A5B18221511FC /* Cocoa.framework in Frameworks */, + 79BF795E46D176DF45CB349F /* CoreAudio.framework in Frameworks */, + 17D21CBD4A457F4108382B47 /* IOKit.framework in Frameworks */, + 22B9588669B03BA7107852E8 /* Carbon.framework in Frameworks */, + 0F9E03063F8138F04EB03EE3 /* ForceFeedback.framework in Frameworks */, + 33C15C7B3EF7568A14611BD2 /* CoreFoundation.framework in Frameworks */, + 7BA93D54730B6B990D68411B /* OpenGL.framework in Frameworks */, + 47187D80178F683C640F2BA2 /* libSDL2main.a in Frameworks */, + 70591504619E611F3F09751F /* libSDL2test.a in Frameworks */, + 0411230C7BC75083638749C1 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 21A76DA90E9C538E4E9872DE /* testdraw2 */ = { + isa = PBXGroup; + children = ( + 60321833527F10182845707C /* test */, + 7D1E74ED2C78010706EA738E /* Frameworks */, + 632F40C6159B31452A24298D /* Products */, + 0D515AF329282CDE5D017B37 /* Projects */, + ); + name = "testdraw2"; + sourceTree = ""; + }; + 60321833527F10182845707C /* test */ = { + isa = PBXGroup; + children = ( + 0CA5613719DE5A60091A2DF6 /* testdraw2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7D1E74ED2C78010706EA738E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 01300C9B4FD2039008F25175 /* AudioToolbox.framework */, + 78C76D1658C3074369B42EE7 /* AudioUnit.framework */, + 73D95AF930D91D94120464E5 /* Cocoa.framework */, + 4EC032CC17246D2E1C3F1D32 /* CoreAudio.framework */, + 40B60D081A29348109DE6FAA /* IOKit.framework */, + 57DA618645BB7EA9118C1EA0 /* Carbon.framework */, + 2D6C199F47601F8C2A872874 /* ForceFeedback.framework */, + 2E4F47BF010875A20EF324CD /* CoreFoundation.framework */, + 211C65FF6C7B10580D0D6538 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 632F40C6159B31452A24298D /* Products */ = { + isa = PBXGroup; + children = ( + 6E62014B0EFA44001B5A5758 /* testdraw2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 0D515AF329282CDE5D017B37 /* Projects */ = { + isa = PBXGroup; + children = ( + 7A1C46DD6656526E346902DA /* SDL2main.xcodeproj */, + 33DB1CA13E8E6B620A54428B /* SDL2test.xcodeproj */, + 67713D1963734C1D290657C0 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 651162A900602989646A77BF /* Products */ = { + isa = PBXGroup; + children = ( + 3A0A13AA1C97217870DE0553 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 78C216CE535B2E94001453A1 /* Products */ = { + isa = PBXGroup; + children = ( + 57C167206EE86C725D936D85 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 540315DA28A86BA20E7C082C /* Products */ = { + isa = PBXGroup; + children = ( + 09992EFB63AE591916385087 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 759C064A0A084838763730DB /* testdraw2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5C5F0B8A2E747D8941032EAC /* Build configuration list for PBXNativeTarget "testdraw2" */; + buildPhases = ( + 2634290A64DE31751724466D /* Resources */, + 24B42F4858F01FE93AEA6EEC /* Sources */, + 504565580DAB1633030B02ED /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3651275552043CF77CD03D44 /* PBXTargetDependency */, + 09A763C86CA14DEE717A1149 /* PBXTargetDependency */, + 265A7A353D4504B1180B16B6 /* PBXTargetDependency */, + ); + name = "testdraw2"; + productInstallPath = "$(HOME)/bin"; + productName = "testdraw2"; + productReference = 6E62014B0EFA44001B5A5758 /* testdraw2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testdraw2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 21A76DA90E9C538E4E9872DE /* testdraw2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 651162A900602989646A77BF /* Products */; + ProjectRef = 7A1C46DD6656526E346902DA /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 78C216CE535B2E94001453A1 /* Products */; + ProjectRef = 33DB1CA13E8E6B620A54428B /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 540315DA28A86BA20E7C082C /* Products */; + ProjectRef = 67713D1963734C1D290657C0 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 759C064A0A084838763730DB /* testdraw2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 3A0A13AA1C97217870DE0553 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2438000D62B23F780181552C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 57C167206EE86C725D936D85 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 1AEA263A383B60A643B06B2B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 09992EFB63AE591916385087 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2D907E90266F484213D72F44 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2634290A64DE31751724466D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 24B42F4858F01FE93AEA6EEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 10EA2EC1366605703C93729C /* testdraw2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 3651275552043CF77CD03D44 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7BFC15721B6C7A6337F1633A /* PBXContainerItemProxy */; + }; + 09A763C86CA14DEE717A1149 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 6AF43A817EC363E42DAF3F2E /* PBXContainerItemProxy */; + }; + 265A7A353D4504B1180B16B6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 33C979D3343A59EC2D120DD9 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 47EF595575465B96787F1242 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Debug Universal"; + }; + 4B22480F590A352277354AFA /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Debug Native"; + }; + 53DA153E45D964A1156538B7 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Release Universal"; + }; + 34853651254508A5191B4411 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testdraw2"; + }; + name = "Release Native"; + }; + 6A3406386B9B1608036E3F6D /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 77443E2174F122FE01611B27 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 23634FFB7DB0549515A40066 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 49C945AE34251CFE068D2B2E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5C5F0B8A2E747D8941032EAC /* Build configuration list for PBXNativeTarget "testdraw2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 47EF595575465B96787F1242 /* Debug Universal */, + 4B22480F590A352277354AFA /* Debug Native */, + 53DA153E45D964A1156538B7 /* Release Universal */, + 34853651254508A5191B4411 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testdraw2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6A3406386B9B1608036E3F6D /* Debug Universal */, + 77443E2174F122FE01611B27 /* Debug Native */, + 23634FFB7DB0549515A40066 /* Release Universal */, + 49C945AE34251CFE068D2B2E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testerror/testerror.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testerror/testerror.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..a437cae739 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testerror/testerror.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 06F8334C4D3B7D0D2098713F /* testerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 575536950DDD598949084500 /* testerror.c */; }; + 007D23D43CD9735E23AD393B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E8171FF38B1253019235787 /* AudioToolbox.framework */; }; + 3D513BC728A8556306D92B11 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CB20CCD23986C5E477355E1 /* AudioUnit.framework */; }; + 56F842B45D443A404DFC715D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E6669D26FD26C204D991DF3 /* Cocoa.framework */; }; + 0CF739E97499698E0DA75108 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FAC5EC44334433D69400880 /* CoreAudio.framework */; }; + 06F54B670D6459C73B523228 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16290BB1270950C617644AE7 /* IOKit.framework */; }; + 6BC919C453FE7809553D2D37 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07352FB67724762459A04FAB /* Carbon.framework */; }; + 5D4E4561238C5C625F165CA6 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 028E6BBB623A6A4C38E545BE /* ForceFeedback.framework */; }; + 1013025A1BE44285529C367D /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16EB3ED47A03649175D02ED0 /* CoreFoundation.framework */; }; + 2DA5484349C946187F6F66BF /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A732F38155324561AAC3988 /* OpenGL.framework */; }; + 2CFC0F2778007B0C7B512414 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 394F19AB471A3BB728795223 /* libSDL2main.a */; }; + 42C24F9E1D4C7A227ACD5A22 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 127A2DDF4C062E395106148F /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 25DA45D402B749CE73EC12DB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6B2D18A114EA247C7A151B3E /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 7163462134690B8034F747D5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6B2D18A114EA247C7A151B3E /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 7D63714847F7594577B31B76 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5965104D36B86BFC2CC2048E /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 6AF51FF07D852D2C37A32FBE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5965104D36B86BFC2CC2048E /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 575536950DDD598949084500 /* testerror.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testerror.c"; path = "../../../../../test/testerror.c"; sourceTree = ""; }; + 6E8171FF38B1253019235787 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0CB20CCD23986C5E477355E1 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 0E6669D26FD26C204D991DF3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 1FAC5EC44334433D69400880 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 16290BB1270950C617644AE7 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 07352FB67724762459A04FAB /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 028E6BBB623A6A4C38E545BE /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 16EB3ED47A03649175D02ED0 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 7A732F38155324561AAC3988 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 75CA5A22024322C432FD0D33 /* testerror */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testerror"; path = "testerror"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6B2D18A114EA247C7A151B3E /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5965104D36B86BFC2CC2048E /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7A9F73685BFB78CB5B4070DF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 007D23D43CD9735E23AD393B /* AudioToolbox.framework in Frameworks */, + 3D513BC728A8556306D92B11 /* AudioUnit.framework in Frameworks */, + 56F842B45D443A404DFC715D /* Cocoa.framework in Frameworks */, + 0CF739E97499698E0DA75108 /* CoreAudio.framework in Frameworks */, + 06F54B670D6459C73B523228 /* IOKit.framework in Frameworks */, + 6BC919C453FE7809553D2D37 /* Carbon.framework in Frameworks */, + 5D4E4561238C5C625F165CA6 /* ForceFeedback.framework in Frameworks */, + 1013025A1BE44285529C367D /* CoreFoundation.framework in Frameworks */, + 2DA5484349C946187F6F66BF /* OpenGL.framework in Frameworks */, + 2CFC0F2778007B0C7B512414 /* libSDL2main.a in Frameworks */, + 42C24F9E1D4C7A227ACD5A22 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 571B32EB79C3137C37CD7BA2 /* testerror */ = { + isa = PBXGroup; + children = ( + 6BF80FDC3D2A431E01A264E4 /* test */, + 794E275E1B6E11312C59088D /* Frameworks */, + 320C37C6542E25AC5DAB1DC2 /* Products */, + 574D0B606B9E6CEE0F2B575A /* Projects */, + ); + name = "testerror"; + sourceTree = ""; + }; + 6BF80FDC3D2A431E01A264E4 /* test */ = { + isa = PBXGroup; + children = ( + 575536950DDD598949084500 /* testerror.c */, + ); + name = "test"; + sourceTree = ""; + }; + 794E275E1B6E11312C59088D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6E8171FF38B1253019235787 /* AudioToolbox.framework */, + 0CB20CCD23986C5E477355E1 /* AudioUnit.framework */, + 0E6669D26FD26C204D991DF3 /* Cocoa.framework */, + 1FAC5EC44334433D69400880 /* CoreAudio.framework */, + 16290BB1270950C617644AE7 /* IOKit.framework */, + 07352FB67724762459A04FAB /* Carbon.framework */, + 028E6BBB623A6A4C38E545BE /* ForceFeedback.framework */, + 16EB3ED47A03649175D02ED0 /* CoreFoundation.framework */, + 7A732F38155324561AAC3988 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 320C37C6542E25AC5DAB1DC2 /* Products */ = { + isa = PBXGroup; + children = ( + 75CA5A22024322C432FD0D33 /* testerror */, + ); + name = "Products"; + sourceTree = ""; + }; + 574D0B606B9E6CEE0F2B575A /* Projects */ = { + isa = PBXGroup; + children = ( + 6B2D18A114EA247C7A151B3E /* SDL2main.xcodeproj */, + 5965104D36B86BFC2CC2048E /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0DEF0226168175B349F721CF /* Products */ = { + isa = PBXGroup; + children = ( + 394F19AB471A3BB728795223 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 18915E803B1247607C25758D /* Products */ = { + isa = PBXGroup; + children = ( + 127A2DDF4C062E395106148F /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 38BC4B19002F4D8A5685550A /* testerror */ = { + isa = PBXNativeTarget; + buildConfigurationList = 129667DD5F10220235855F70 /* Build configuration list for PBXNativeTarget "testerror" */; + buildPhases = ( + 51FC314F3EBE35BC56B069B0 /* Resources */, + 46DF69B233D4336C07F50329 /* Sources */, + 7A9F73685BFB78CB5B4070DF /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 101D1EA3681A28D21D95312F /* PBXTargetDependency */, + 00DE2A237CBA390D134002BD /* PBXTargetDependency */, + ); + name = "testerror"; + productInstallPath = "$(HOME)/bin"; + productName = "testerror"; + productReference = 75CA5A22024322C432FD0D33 /* testerror */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testerror" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 571B32EB79C3137C37CD7BA2 /* testerror */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0DEF0226168175B349F721CF /* Products */; + ProjectRef = 6B2D18A114EA247C7A151B3E /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 18915E803B1247607C25758D /* Products */; + ProjectRef = 5965104D36B86BFC2CC2048E /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 38BC4B19002F4D8A5685550A /* testerror */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 394F19AB471A3BB728795223 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 25DA45D402B749CE73EC12DB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 127A2DDF4C062E395106148F /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7D63714847F7594577B31B76 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 51FC314F3EBE35BC56B069B0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 46DF69B233D4336C07F50329 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 06F8334C4D3B7D0D2098713F /* testerror.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 101D1EA3681A28D21D95312F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7163462134690B8034F747D5 /* PBXContainerItemProxy */; + }; + 00DE2A237CBA390D134002BD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6AF51FF07D852D2C37A32FBE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 689F21395BDD121928B26E9B /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Debug Universal"; + }; + 77671C1213351ECE7CF9577D /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Debug Native"; + }; + 5EEF39F8539C404C7AFE3E4A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Release Universal"; + }; + 15A26F7F31EC33AD614C020D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testerror"; + }; + name = "Release Native"; + }; + 34033F4F12B34AA1440E2D04 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 6FD0465F2E91638136DD6D50 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 72317FE342AB26F2742209A4 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 242A6DBD460B09844FB92AF2 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 129667DD5F10220235855F70 /* Build configuration list for PBXNativeTarget "testerror" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 689F21395BDD121928B26E9B /* Debug Universal */, + 77671C1213351ECE7CF9577D /* Debug Native */, + 5EEF39F8539C404C7AFE3E4A /* Release Universal */, + 15A26F7F31EC33AD614C020D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testerror" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 34033F4F12B34AA1440E2D04 /* Debug Universal */, + 6FD0465F2E91638136DD6D50 /* Debug Native */, + 72317FE342AB26F2742209A4 /* Release Universal */, + 242A6DBD460B09844FB92AF2 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testfile/testfile.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testfile/testfile.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..87e4b8270c --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testfile/testfile.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 06055DF25A4832B523E519B2 /* testfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 3EFE3DDE6912420D7A1578CD /* testfile.c */; }; + 054C62F554A660A925DF0C62 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 098E080C670E074156D3693A /* AudioToolbox.framework */; }; + 01D835206EC0046732D77FDF /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177463786BA73D7A29AC7B5A /* AudioUnit.framework */; }; + 369E7B99321F159179237DDD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EED43B264027CE94ED504EC /* Cocoa.framework */; }; + 1FD85D6F5D0D33613E5228D5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 594605B7695102AC12067F0C /* CoreAudio.framework */; }; + 6FBC491B25085CC511360396 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51CB6C9B64FC62743F0D2C1C /* IOKit.framework */; }; + 3AD058507CF54794492D4C70 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FA536890D2246045B7317FA /* Carbon.framework */; }; + 7AF04448633348077DF9742A /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AB062102B1844553EEC03C5 /* ForceFeedback.framework */; }; + 561B3C9E30F277ED009169DC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FAA1D0C31BE485A171A5396 /* CoreFoundation.framework */; }; + 71011B577B1E16BD6615224D /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29612F383ADA79EB58F4334A /* OpenGL.framework */; }; + 39BB36E86BF94E331A5C4CB1 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ECD19EE7F4A76FA2A4660F0 /* libSDL2main.a */; }; + 0381174D01BB52CE6FD25A1C /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 38DA20E06D671A4407BA7958 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4DE83F7B56A045333BD11D98 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A481A29223B0BA3123E299A /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 1FAB1ACA72CD15D554574E6E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A481A29223B0BA3123E299A /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 57D644B23A9862F5683A657A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2273368C5D9F07AC44EE7F3F /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 2DC36FA5536946D4300348F7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2273368C5D9F07AC44EE7F3F /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3EFE3DDE6912420D7A1578CD /* testfile.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testfile.c"; path = "../../../../../test/testfile.c"; sourceTree = ""; }; + 098E080C670E074156D3693A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 177463786BA73D7A29AC7B5A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3EED43B264027CE94ED504EC /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 594605B7695102AC12067F0C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 51CB6C9B64FC62743F0D2C1C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 0FA536890D2246045B7317FA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 7AB062102B1844553EEC03C5 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 7FAA1D0C31BE485A171A5396 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 29612F383ADA79EB58F4334A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7D59643C433573247ACA0E73 /* testfile */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testfile"; path = "testfile"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0A481A29223B0BA3123E299A /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2273368C5D9F07AC44EE7F3F /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 797912EC486F2C5733CA28E6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 054C62F554A660A925DF0C62 /* AudioToolbox.framework in Frameworks */, + 01D835206EC0046732D77FDF /* AudioUnit.framework in Frameworks */, + 369E7B99321F159179237DDD /* Cocoa.framework in Frameworks */, + 1FD85D6F5D0D33613E5228D5 /* CoreAudio.framework in Frameworks */, + 6FBC491B25085CC511360396 /* IOKit.framework in Frameworks */, + 3AD058507CF54794492D4C70 /* Carbon.framework in Frameworks */, + 7AF04448633348077DF9742A /* ForceFeedback.framework in Frameworks */, + 561B3C9E30F277ED009169DC /* CoreFoundation.framework in Frameworks */, + 71011B577B1E16BD6615224D /* OpenGL.framework in Frameworks */, + 39BB36E86BF94E331A5C4CB1 /* libSDL2main.a in Frameworks */, + 0381174D01BB52CE6FD25A1C /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2DDD426E63847FB203063CB4 /* testfile */ = { + isa = PBXGroup; + children = ( + 65FB59544837238048E9425A /* test */, + 26DD1D45216A6360745E6E60 /* Frameworks */, + 12AA67EB240637A5417A6E3A /* Products */, + 23DF3D3A2DCF728C7D3147E8 /* Projects */, + ); + name = "testfile"; + sourceTree = ""; + }; + 65FB59544837238048E9425A /* test */ = { + isa = PBXGroup; + children = ( + 3EFE3DDE6912420D7A1578CD /* testfile.c */, + ); + name = "test"; + sourceTree = ""; + }; + 26DD1D45216A6360745E6E60 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 098E080C670E074156D3693A /* AudioToolbox.framework */, + 177463786BA73D7A29AC7B5A /* AudioUnit.framework */, + 3EED43B264027CE94ED504EC /* Cocoa.framework */, + 594605B7695102AC12067F0C /* CoreAudio.framework */, + 51CB6C9B64FC62743F0D2C1C /* IOKit.framework */, + 0FA536890D2246045B7317FA /* Carbon.framework */, + 7AB062102B1844553EEC03C5 /* ForceFeedback.framework */, + 7FAA1D0C31BE485A171A5396 /* CoreFoundation.framework */, + 29612F383ADA79EB58F4334A /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 12AA67EB240637A5417A6E3A /* Products */ = { + isa = PBXGroup; + children = ( + 7D59643C433573247ACA0E73 /* testfile */, + ); + name = "Products"; + sourceTree = ""; + }; + 23DF3D3A2DCF728C7D3147E8 /* Projects */ = { + isa = PBXGroup; + children = ( + 0A481A29223B0BA3123E299A /* SDL2main.xcodeproj */, + 2273368C5D9F07AC44EE7F3F /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 33C77AE76AAB027C261B4849 /* Products */ = { + isa = PBXGroup; + children = ( + 4ECD19EE7F4A76FA2A4660F0 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 53F10DAC309E781B6C580949 /* Products */ = { + isa = PBXGroup; + children = ( + 38DA20E06D671A4407BA7958 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 601330DC45043FC5356E4B29 /* testfile */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7316560C6DAC59E75FB42DC7 /* Build configuration list for PBXNativeTarget "testfile" */; + buildPhases = ( + 1D195EB165D93A4E692A4E89 /* Resources */, + 057C478A38BE6A563AC10C0E /* Sources */, + 797912EC486F2C5733CA28E6 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 341018B26EEF3E6E4AF25BA9 /* PBXTargetDependency */, + 6D333C4B791776B774FA63F4 /* PBXTargetDependency */, + ); + name = "testfile"; + productInstallPath = "$(HOME)/bin"; + productName = "testfile"; + productReference = 7D59643C433573247ACA0E73 /* testfile */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfile" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2DDD426E63847FB203063CB4 /* testfile */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 33C77AE76AAB027C261B4849 /* Products */; + ProjectRef = 0A481A29223B0BA3123E299A /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 53F10DAC309E781B6C580949 /* Products */; + ProjectRef = 2273368C5D9F07AC44EE7F3F /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 601330DC45043FC5356E4B29 /* testfile */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 4ECD19EE7F4A76FA2A4660F0 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 4DE83F7B56A045333BD11D98 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 38DA20E06D671A4407BA7958 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 57D644B23A9862F5683A657A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 1D195EB165D93A4E692A4E89 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 057C478A38BE6A563AC10C0E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 06055DF25A4832B523E519B2 /* testfile.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 341018B26EEF3E6E4AF25BA9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 1FAB1ACA72CD15D554574E6E /* PBXContainerItemProxy */; + }; + 6D333C4B791776B774FA63F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 2DC36FA5536946D4300348F7 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3C2E260D34E54B2444156E77 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Debug Universal"; + }; + 1F424CBB0901425C54AF63E5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Debug Native"; + }; + 76F560316C3403F77B301E22 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Release Universal"; + }; + 3DAD38AC587713FE1C55146C /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfile"; + }; + name = "Release Native"; + }; + 719E48E62EE4324772103829 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 54241D5961C22DD6643639DB /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 6FB824C25FC316EF5CD00C88 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 597A73B46A7873AC58D45F2D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7316560C6DAC59E75FB42DC7 /* Build configuration list for PBXNativeTarget "testfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3C2E260D34E54B2444156E77 /* Debug Universal */, + 1F424CBB0901425C54AF63E5 /* Debug Native */, + 76F560316C3403F77B301E22 /* Release Universal */, + 3DAD38AC587713FE1C55146C /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 719E48E62EE4324772103829 /* Debug Universal */, + 54241D5961C22DD6643639DB /* Debug Native */, + 6FB824C25FC316EF5CD00C88 /* Release Universal */, + 597A73B46A7873AC58D45F2D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..268ddb793f --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testfilesystem/testfilesystem.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 542D0843277C5761463E1641 /* testfilesystem.c in Sources */ = {isa = PBXBuildFile; fileRef = 19383D261E7C7DDD72934761 /* testfilesystem.c */; }; + 48A575560C39763339D20F5E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16933BB10707658448D07838 /* AudioToolbox.framework */; }; + 23613B9021CB3B9563577823 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 059A716B389A47C0206D066E /* AudioUnit.framework */; }; + 3DC8448939065CC930704575 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79994FC93930223151DC4634 /* Cocoa.framework */; }; + 29986B25588F4F8A7A550E6D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23DE4BC30FFD43302C6523B4 /* CoreAudio.framework */; }; + 44FF00B5143A28417A3D769C /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D3F33E924DF60FF36A60494 /* IOKit.framework */; }; + 18F73FDD63E2208B113B6BB9 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15DF6F975CB3775B2F3B0998 /* Carbon.framework */; }; + 24F15ADF225533E9197F12B7 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47FE22E4397B62A1714A4AF9 /* ForceFeedback.framework */; }; + 45AC3E91409C730F0E6D2EDE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43A608227BC95CAB7BB4671F /* CoreFoundation.framework */; }; + 4A6B44CA5DC815451CAD3F45 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27F42A26259B0B030C3D215C /* OpenGL.framework */; }; + 46124EE7538B7C3123B13D0C /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F45024C0CCA3D6B56085138 /* libSDL2main.a */; }; + 3F1D218E1A9B39B813B41DDB /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A3C038D5CB50A6B1FB9588F /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 149A208861B61E5E5AD25220 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E533149357950AE5914458E /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 6AC613431F59305338EA0D19 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5E533149357950AE5914458E /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 3F82068A076C59DA1E286BC0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 68DA4DB7486A506123D86AA9 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 3B33177258BC26F33A3729EA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 68DA4DB7486A506123D86AA9 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 19383D261E7C7DDD72934761 /* testfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testfilesystem.c"; path = "../../../../../test/testfilesystem.c"; sourceTree = ""; }; + 16933BB10707658448D07838 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 059A716B389A47C0206D066E /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 79994FC93930223151DC4634 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 23DE4BC30FFD43302C6523B4 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3D3F33E924DF60FF36A60494 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 15DF6F975CB3775B2F3B0998 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 47FE22E4397B62A1714A4AF9 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 43A608227BC95CAB7BB4671F /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 27F42A26259B0B030C3D215C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5F400B390B564255729347F6 /* testfilesystem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testfilesystem"; path = "testfilesystem"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E533149357950AE5914458E /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 68DA4DB7486A506123D86AA9 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 403E4E217E1C741D46085D32 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 48A575560C39763339D20F5E /* AudioToolbox.framework in Frameworks */, + 23613B9021CB3B9563577823 /* AudioUnit.framework in Frameworks */, + 3DC8448939065CC930704575 /* Cocoa.framework in Frameworks */, + 29986B25588F4F8A7A550E6D /* CoreAudio.framework in Frameworks */, + 44FF00B5143A28417A3D769C /* IOKit.framework in Frameworks */, + 18F73FDD63E2208B113B6BB9 /* Carbon.framework in Frameworks */, + 24F15ADF225533E9197F12B7 /* ForceFeedback.framework in Frameworks */, + 45AC3E91409C730F0E6D2EDE /* CoreFoundation.framework in Frameworks */, + 4A6B44CA5DC815451CAD3F45 /* OpenGL.framework in Frameworks */, + 46124EE7538B7C3123B13D0C /* libSDL2main.a in Frameworks */, + 3F1D218E1A9B39B813B41DDB /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 170304D27C0A765010527B9F /* testfilesystem */ = { + isa = PBXGroup; + children = ( + 1D9E28030ECB3D0C7A083D78 /* test */, + 099667962ED420EA7F100D7F /* Frameworks */, + 4FD62AFF4ED6586A49A052CA /* Products */, + 05D117E428CC7B612D965769 /* Projects */, + ); + name = "testfilesystem"; + sourceTree = ""; + }; + 1D9E28030ECB3D0C7A083D78 /* test */ = { + isa = PBXGroup; + children = ( + 19383D261E7C7DDD72934761 /* testfilesystem.c */, + ); + name = "test"; + sourceTree = ""; + }; + 099667962ED420EA7F100D7F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 16933BB10707658448D07838 /* AudioToolbox.framework */, + 059A716B389A47C0206D066E /* AudioUnit.framework */, + 79994FC93930223151DC4634 /* Cocoa.framework */, + 23DE4BC30FFD43302C6523B4 /* CoreAudio.framework */, + 3D3F33E924DF60FF36A60494 /* IOKit.framework */, + 15DF6F975CB3775B2F3B0998 /* Carbon.framework */, + 47FE22E4397B62A1714A4AF9 /* ForceFeedback.framework */, + 43A608227BC95CAB7BB4671F /* CoreFoundation.framework */, + 27F42A26259B0B030C3D215C /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 4FD62AFF4ED6586A49A052CA /* Products */ = { + isa = PBXGroup; + children = ( + 5F400B390B564255729347F6 /* testfilesystem */, + ); + name = "Products"; + sourceTree = ""; + }; + 05D117E428CC7B612D965769 /* Projects */ = { + isa = PBXGroup; + children = ( + 5E533149357950AE5914458E /* SDL2main.xcodeproj */, + 68DA4DB7486A506123D86AA9 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 702918C21BB85A7F4BCA3F94 /* Products */ = { + isa = PBXGroup; + children = ( + 0F45024C0CCA3D6B56085138 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 46FE775B0BFD38D61F425D44 /* Products */ = { + isa = PBXGroup; + children = ( + 0A3C038D5CB50A6B1FB9588F /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 68B547AF6EF613D329BE34D3 /* testfilesystem */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3507616A255D283C0D806752 /* Build configuration list for PBXNativeTarget "testfilesystem" */; + buildPhases = ( + 67410E2B2F511A6E5A6F409B /* Resources */, + 3988363B7CCA6F5151A72BFA /* Sources */, + 403E4E217E1C741D46085D32 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 205A7DC04BC2669148D26943 /* PBXTargetDependency */, + 47E749AF206848E47A2B5B3B /* PBXTargetDependency */, + ); + name = "testfilesystem"; + productInstallPath = "$(HOME)/bin"; + productName = "testfilesystem"; + productReference = 5F400B390B564255729347F6 /* testfilesystem */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfilesystem" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 170304D27C0A765010527B9F /* testfilesystem */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 702918C21BB85A7F4BCA3F94 /* Products */; + ProjectRef = 5E533149357950AE5914458E /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 46FE775B0BFD38D61F425D44 /* Products */; + ProjectRef = 68DA4DB7486A506123D86AA9 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 68B547AF6EF613D329BE34D3 /* testfilesystem */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 0F45024C0CCA3D6B56085138 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 149A208861B61E5E5AD25220 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0A3C038D5CB50A6B1FB9588F /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3F82068A076C59DA1E286BC0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 67410E2B2F511A6E5A6F409B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3988363B7CCA6F5151A72BFA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 542D0843277C5761463E1641 /* testfilesystem.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 205A7DC04BC2669148D26943 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 6AC613431F59305338EA0D19 /* PBXContainerItemProxy */; + }; + 47E749AF206848E47A2B5B3B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 3B33177258BC26F33A3729EA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3B094C7747270E2329580893 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Debug Universal"; + }; + 5B67524C1BFF261603BB212A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Debug Native"; + }; + 0F257B1E779D173C0F9866D9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Release Universal"; + }; + 6AFB10A43B5572244ECF2D67 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testfilesystem"; + }; + name = "Release Native"; + }; + 79E34F49025759AC2F191380 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 7F580FEA569A410767C001D0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 665154276D2145713D7E1EE5 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 77B80CD311163E726F757B02 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3507616A255D283C0D806752 /* Build configuration list for PBXNativeTarget "testfilesystem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B094C7747270E2329580893 /* Debug Universal */, + 5B67524C1BFF261603BB212A /* Debug Native */, + 0F257B1E779D173C0F9866D9 /* Release Universal */, + 6AFB10A43B5572244ECF2D67 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testfilesystem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79E34F49025759AC2F191380 /* Debug Universal */, + 7F580FEA569A410767C001D0 /* Debug Native */, + 665154276D2145713D7E1EE5 /* Release Universal */, + 77B80CD311163E726F757B02 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..18d686129c --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testgamecontroller/testgamecontroller.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 59AD1EAF01EC6AEB1C7B5074 /* testgamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = 48F355B62CA92CD960274AC1 /* testgamecontroller.c */; }; + 565F3431259112804AA32F99 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 639F1AD07BC614055E4B4BEF /* AudioToolbox.framework */; }; + 67CA2BDD6A8427EA0FFD477D /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7774150327CE5B4341311BA2 /* AudioUnit.framework */; }; + 001B0178066014ED54BB7624 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15C56C9162624511738950C4 /* Cocoa.framework */; }; + 7CDF4E4316217800025F2FC2 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70974CCE092D75E31B6659C4 /* CoreAudio.framework */; }; + 01AA68493002010C71842908 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00267C710FC1666C58AC1600 /* IOKit.framework */; }; + 0DF9622C522326C973225ECB /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 74B20CD506C43F592B6A4131 /* Carbon.framework */; }; + 0C1C3C646C933C042DB3554D /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7560112E76563F017A354A97 /* ForceFeedback.framework */; }; + 6A6118D426B12FA30FA73D70 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 422B1BF2412116DE6F2D7ECF /* CoreFoundation.framework */; }; + 4EA62A4A072542AE528A7116 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40EF30E9301B6096308E73FC /* OpenGL.framework */; }; + 5C59016854B35296046D46E3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 027574146203476B541C0127 /* libSDL2main.a */; }; + 711722C97B6C14AF751C3447 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 17EF57FF6417423C2AE144CD /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 78836EE2654D23445E1A0CB0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5CDE76704306652C66C6757D /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 085B22E10005062E75451D34 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5CDE76704306652C66C6757D /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 7E6D286F30E32A114225393C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6F9E23337C115CE22C5C036F /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 3D175864491D1E04458F4B6B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6F9E23337C115CE22C5C036F /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 48F355B62CA92CD960274AC1 /* testgamecontroller.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgamecontroller.c"; path = "../../../../../test/testgamecontroller.c"; sourceTree = ""; }; + 639F1AD07BC614055E4B4BEF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7774150327CE5B4341311BA2 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 15C56C9162624511738950C4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 70974CCE092D75E31B6659C4 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 00267C710FC1666C58AC1600 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 74B20CD506C43F592B6A4131 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 7560112E76563F017A354A97 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 422B1BF2412116DE6F2D7ECF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 40EF30E9301B6096308E73FC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 567D61E243EB387F4FDB388A /* testgamecontroller */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgamecontroller"; path = "testgamecontroller"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5CDE76704306652C66C6757D /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6F9E23337C115CE22C5C036F /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 473B1FDA5EE866B04B5F71BD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 565F3431259112804AA32F99 /* AudioToolbox.framework in Frameworks */, + 67CA2BDD6A8427EA0FFD477D /* AudioUnit.framework in Frameworks */, + 001B0178066014ED54BB7624 /* Cocoa.framework in Frameworks */, + 7CDF4E4316217800025F2FC2 /* CoreAudio.framework in Frameworks */, + 01AA68493002010C71842908 /* IOKit.framework in Frameworks */, + 0DF9622C522326C973225ECB /* Carbon.framework in Frameworks */, + 0C1C3C646C933C042DB3554D /* ForceFeedback.framework in Frameworks */, + 6A6118D426B12FA30FA73D70 /* CoreFoundation.framework in Frameworks */, + 4EA62A4A072542AE528A7116 /* OpenGL.framework in Frameworks */, + 5C59016854B35296046D46E3 /* libSDL2main.a in Frameworks */, + 711722C97B6C14AF751C3447 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 063100B04D77549E6A9F1112 /* testgamecontroller */ = { + isa = PBXGroup; + children = ( + 3EA955B63CF038EF091222E8 /* test */, + 789F24162918123450CF4B74 /* Frameworks */, + 7A49721B04EA5855508368C9 /* Products */, + 0250726E45B86DD8261538F8 /* Projects */, + ); + name = "testgamecontroller"; + sourceTree = ""; + }; + 3EA955B63CF038EF091222E8 /* test */ = { + isa = PBXGroup; + children = ( + 48F355B62CA92CD960274AC1 /* testgamecontroller.c */, + ); + name = "test"; + sourceTree = ""; + }; + 789F24162918123450CF4B74 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 639F1AD07BC614055E4B4BEF /* AudioToolbox.framework */, + 7774150327CE5B4341311BA2 /* AudioUnit.framework */, + 15C56C9162624511738950C4 /* Cocoa.framework */, + 70974CCE092D75E31B6659C4 /* CoreAudio.framework */, + 00267C710FC1666C58AC1600 /* IOKit.framework */, + 74B20CD506C43F592B6A4131 /* Carbon.framework */, + 7560112E76563F017A354A97 /* ForceFeedback.framework */, + 422B1BF2412116DE6F2D7ECF /* CoreFoundation.framework */, + 40EF30E9301B6096308E73FC /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 7A49721B04EA5855508368C9 /* Products */ = { + isa = PBXGroup; + children = ( + 567D61E243EB387F4FDB388A /* testgamecontroller */, + ); + name = "Products"; + sourceTree = ""; + }; + 0250726E45B86DD8261538F8 /* Projects */ = { + isa = PBXGroup; + children = ( + 5CDE76704306652C66C6757D /* SDL2main.xcodeproj */, + 6F9E23337C115CE22C5C036F /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 08767CDD2DA222DE36584C82 /* Products */ = { + isa = PBXGroup; + children = ( + 027574146203476B541C0127 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 33E47EDE42C32D6347BD7088 /* Products */ = { + isa = PBXGroup; + children = ( + 17EF57FF6417423C2AE144CD /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7B3032395DA51920424A258D /* testgamecontroller */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2B550415327F3FCB3EF824AC /* Build configuration list for PBXNativeTarget "testgamecontroller" */; + buildPhases = ( + 397953C5567E7D2048DD2FAF /* Resources */, + 13E941C92B555CA163AD7DCB /* Sources */, + 473B1FDA5EE866B04B5F71BD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 475149D56CFA4036302A4202 /* PBXTargetDependency */, + 1A2B35F31041572804F92BB3 /* PBXTargetDependency */, + ); + name = "testgamecontroller"; + productInstallPath = "$(HOME)/bin"; + productName = "testgamecontroller"; + productReference = 567D61E243EB387F4FDB388A /* testgamecontroller */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgamecontroller" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 063100B04D77549E6A9F1112 /* testgamecontroller */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 08767CDD2DA222DE36584C82 /* Products */; + ProjectRef = 5CDE76704306652C66C6757D /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 33E47EDE42C32D6347BD7088 /* Products */; + ProjectRef = 6F9E23337C115CE22C5C036F /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 7B3032395DA51920424A258D /* testgamecontroller */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 027574146203476B541C0127 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 78836EE2654D23445E1A0CB0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 17EF57FF6417423C2AE144CD /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7E6D286F30E32A114225393C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 397953C5567E7D2048DD2FAF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 13E941C92B555CA163AD7DCB /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 59AD1EAF01EC6AEB1C7B5074 /* testgamecontroller.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 475149D56CFA4036302A4202 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 085B22E10005062E75451D34 /* PBXContainerItemProxy */; + }; + 1A2B35F31041572804F92BB3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 3D175864491D1E04458F4B6B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 6FA35D3D7B0A73C6698A0408 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Debug Universal"; + }; + 4D804E61624543AF39A5003F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Debug Native"; + }; + 339937CD35543FEA59C141E8 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Release Universal"; + }; + 5E0928A929C2154035565034 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgamecontroller"; + }; + name = "Release Native"; + }; + 31BC3603012209364D2826C1 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 4C625A152EE955F75FDC052C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 180C43BC1D4944DB1279702A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 3DE24EE2789D4BDD49E441F0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2B550415327F3FCB3EF824AC /* Build configuration list for PBXNativeTarget "testgamecontroller" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6FA35D3D7B0A73C6698A0408 /* Debug Universal */, + 4D804E61624543AF39A5003F /* Debug Native */, + 339937CD35543FEA59C141E8 /* Release Universal */, + 5E0928A929C2154035565034 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgamecontroller" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 31BC3603012209364D2826C1 /* Debug Universal */, + 4C625A152EE955F75FDC052C /* Debug Native */, + 180C43BC1D4944DB1279702A /* Release Universal */, + 3DE24EE2789D4BDD49E441F0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testgesture/testgesture.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testgesture/testgesture.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..00db442937 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testgesture/testgesture.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 7F2646064E07693268BB663E /* testgesture.c in Sources */ = {isa = PBXBuildFile; fileRef = 45F239484034303C5F6D2B63 /* testgesture.c */; }; + 3E2F057A13197E857A556D8F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3182640513961B7751467F1C /* AudioToolbox.framework */; }; + 27874E3A79871D2A31350FB3 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BCB1EA2426110E4141B3A39 /* AudioUnit.framework */; }; + 04672EED0A5A2BBA4A99213F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69A55EFD5D976CCE6454697A /* Cocoa.framework */; }; + 67842EB1747D695240C55232 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 404C68025B6435340F6C0644 /* CoreAudio.framework */; }; + 17CF41A54DDC2A847E593D5E /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 78D711646B8310C841264C30 /* IOKit.framework */; }; + 282535315DBA11D0062175F9 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BD76F3F37EB3C0B104B356D /* Carbon.framework */; }; + 01150C0344D721B722512D0D /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C8C23E069BD7CFB5A6416F6 /* ForceFeedback.framework */; }; + 780D40945E486C1E61F349F8 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C856BF13E2F118A31F63FDD /* CoreFoundation.framework */; }; + 0BF93911456A4CD363B8068B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C962D4C146E60FF2B000F54 /* OpenGL.framework */; }; + 7808007B4CA1040E5FA57F65 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 528E7D3F63CE6DCA20FA02AA /* libSDL2main.a */; }; + 3D85050716D05CC44E796CAD /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FF375BB600D07591A5E2E06 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 209C70BF32E1778601AF2D24 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 643C35A707E76E8D0F197045 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 397959DD79CF0A487F925D3C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 643C35A707E76E8D0F197045 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 433D6C094E1176D805443C4C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 64ED1E0B19066DA36CBF0ACF /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 27F76BFC195C780B4D2C0753 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 64ED1E0B19066DA36CBF0ACF /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 45F239484034303C5F6D2B63 /* testgesture.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgesture.c"; path = "../../../../../test/testgesture.c"; sourceTree = ""; }; + 3182640513961B7751467F1C /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4BCB1EA2426110E4141B3A39 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 69A55EFD5D976CCE6454697A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 404C68025B6435340F6C0644 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 78D711646B8310C841264C30 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 1BD76F3F37EB3C0B104B356D /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 5C8C23E069BD7CFB5A6416F6 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3C856BF13E2F118A31F63FDD /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 4C962D4C146E60FF2B000F54 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 25894A1C1CD23C9C503E198D /* testgesture */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgesture"; path = "testgesture"; sourceTree = BUILT_PRODUCTS_DIR; }; + 643C35A707E76E8D0F197045 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 64ED1E0B19066DA36CBF0ACF /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 504D063847F279FC3FF73156 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E2F057A13197E857A556D8F /* AudioToolbox.framework in Frameworks */, + 27874E3A79871D2A31350FB3 /* AudioUnit.framework in Frameworks */, + 04672EED0A5A2BBA4A99213F /* Cocoa.framework in Frameworks */, + 67842EB1747D695240C55232 /* CoreAudio.framework in Frameworks */, + 17CF41A54DDC2A847E593D5E /* IOKit.framework in Frameworks */, + 282535315DBA11D0062175F9 /* Carbon.framework in Frameworks */, + 01150C0344D721B722512D0D /* ForceFeedback.framework in Frameworks */, + 780D40945E486C1E61F349F8 /* CoreFoundation.framework in Frameworks */, + 0BF93911456A4CD363B8068B /* OpenGL.framework in Frameworks */, + 7808007B4CA1040E5FA57F65 /* libSDL2main.a in Frameworks */, + 3D85050716D05CC44E796CAD /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C1D7CDE12BE1FFA75025933 /* testgesture */ = { + isa = PBXGroup; + children = ( + 4D9119587A8E34CD38975BF5 /* test */, + 1D500210265B5FE53E12220F /* Frameworks */, + 231E3AB81B144CE2349E7BBE /* Products */, + 30FF472A52285BBA50483323 /* Projects */, + ); + name = "testgesture"; + sourceTree = ""; + }; + 4D9119587A8E34CD38975BF5 /* test */ = { + isa = PBXGroup; + children = ( + 45F239484034303C5F6D2B63 /* testgesture.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1D500210265B5FE53E12220F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3182640513961B7751467F1C /* AudioToolbox.framework */, + 4BCB1EA2426110E4141B3A39 /* AudioUnit.framework */, + 69A55EFD5D976CCE6454697A /* Cocoa.framework */, + 404C68025B6435340F6C0644 /* CoreAudio.framework */, + 78D711646B8310C841264C30 /* IOKit.framework */, + 1BD76F3F37EB3C0B104B356D /* Carbon.framework */, + 5C8C23E069BD7CFB5A6416F6 /* ForceFeedback.framework */, + 3C856BF13E2F118A31F63FDD /* CoreFoundation.framework */, + 4C962D4C146E60FF2B000F54 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 231E3AB81B144CE2349E7BBE /* Products */ = { + isa = PBXGroup; + children = ( + 25894A1C1CD23C9C503E198D /* testgesture */, + ); + name = "Products"; + sourceTree = ""; + }; + 30FF472A52285BBA50483323 /* Projects */ = { + isa = PBXGroup; + children = ( + 643C35A707E76E8D0F197045 /* SDL2main.xcodeproj */, + 64ED1E0B19066DA36CBF0ACF /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 30DC6FF827FD602755CB0EC8 /* Products */ = { + isa = PBXGroup; + children = ( + 528E7D3F63CE6DCA20FA02AA /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 57C56BC70A01080B247514AA /* Products */ = { + isa = PBXGroup; + children = ( + 3FF375BB600D07591A5E2E06 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 13F47A185A0D4A780D0A0D69 /* testgesture */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7854590A4EE8222F470D4540 /* Build configuration list for PBXNativeTarget "testgesture" */; + buildPhases = ( + 06DD41DC579842B26A292F2E /* Resources */, + 253D4E0558C656247A8F7764 /* Sources */, + 504D063847F279FC3FF73156 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 26D05DE04696481039A31ACE /* PBXTargetDependency */, + 0B6937BC549D4FE7501E1D48 /* PBXTargetDependency */, + ); + name = "testgesture"; + productInstallPath = "$(HOME)/bin"; + productName = "testgesture"; + productReference = 25894A1C1CD23C9C503E198D /* testgesture */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgesture" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 0C1D7CDE12BE1FFA75025933 /* testgesture */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 30DC6FF827FD602755CB0EC8 /* Products */; + ProjectRef = 643C35A707E76E8D0F197045 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 57C56BC70A01080B247514AA /* Products */; + ProjectRef = 64ED1E0B19066DA36CBF0ACF /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 13F47A185A0D4A780D0A0D69 /* testgesture */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 528E7D3F63CE6DCA20FA02AA /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 209C70BF32E1778601AF2D24 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3FF375BB600D07591A5E2E06 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 433D6C094E1176D805443C4C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 06DD41DC579842B26A292F2E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 253D4E0558C656247A8F7764 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7F2646064E07693268BB663E /* testgesture.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 26D05DE04696481039A31ACE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 397959DD79CF0A487F925D3C /* PBXContainerItemProxy */; + }; + 0B6937BC549D4FE7501E1D48 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 27F76BFC195C780B4D2C0753 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7EBC1AD328FF23575F007FC1 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Debug Universal"; + }; + 7B220AE02C4168C977A9312E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Debug Native"; + }; + 1F43115A34553DD3190B2B08 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Release Universal"; + }; + 79B5705904781395367B7BEF /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgesture"; + }; + name = "Release Native"; + }; + 17F516310DBF32883D6754E8 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 79763EB775473C4A46091E29 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 2E49648B7F9814B91F862C12 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 196A212F38807BF653F57FBC /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7854590A4EE8222F470D4540 /* Build configuration list for PBXNativeTarget "testgesture" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7EBC1AD328FF23575F007FC1 /* Debug Universal */, + 7B220AE02C4168C977A9312E /* Debug Native */, + 1F43115A34553DD3190B2B08 /* Release Universal */, + 79B5705904781395367B7BEF /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgesture" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 17F516310DBF32883D6754E8 /* Debug Universal */, + 79763EB775473C4A46091E29 /* Debug Native */, + 2E49648B7F9814B91F862C12 /* Release Universal */, + 196A212F38807BF653F57FBC /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testgl2/testgl2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testgl2/testgl2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..198755eda4 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testgl2/testgl2.xcodeproj/project.pbxproj @@ -0,0 +1,502 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 1E5D7DFA3A69692D44FC27E9 /* testgl2.c in Sources */ = {isa = PBXBuildFile; fileRef = 3220018170A379082A7A5311 /* testgl2.c */; }; + 7AFA41E7540407D14A92432C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 206504F44E154FCB212C502F /* AudioToolbox.framework */; }; + 47600CC024F5725B3C1C5B21 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E4E65DE03B17C7A553C053A /* AudioUnit.framework */; }; + 196E4214385B17EB51DE792B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 151B5F9409BD6D295C07749D /* Cocoa.framework */; }; + 08A53FC92B2D20743E080AA6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 068252F97FC976C92BD069FF /* CoreAudio.framework */; }; + 414817FE664E3EBD2095428D /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AD63ED47DD00D33195F3369 /* IOKit.framework */; }; + 051464B802D923F062DC655E /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D820966416A4282130A1880 /* Carbon.framework */; }; + 68656778359613CF31ED6DCA /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12BA2FB45A84420B6A4E4123 /* ForceFeedback.framework */; }; + 1A8A7B10631F1A473D884756 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 008815B354674F43774104EB /* CoreFoundation.framework */; }; + 2523563C194273D615B744F9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04B73BBB12804A1D49EE6036 /* OpenGL.framework */; }; + 64CC19DD22B11303629D5825 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CDB408319620EE1092E5B38 /* libSDL2main.a */; }; + 1F8E59315BFC38C73688548D /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 666703DB2737213809E80478 /* libSDL2test.a */; }; + 73557D3D480038BC5EB43AC2 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 23D67491123B616E109134FB /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 4453567C1B860D8520EB652F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A2801EC45C80EEF2B6C6417 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 08A64A9D21622C6D3F0B2605 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A2801EC45C80EEF2B6C6417 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 795565F809AF458014B503B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 733675FC76935EE515592268 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 07726CEC0FA935EA51735F5B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 733675FC76935EE515592268 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 2FB6107237CE447C5542013F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2578101C505E6209700372BA /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 72197A6330DB01C5616B7311 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2578101C505E6209700372BA /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3220018170A379082A7A5311 /* testgl2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgl2.c"; path = "../../../../../test/testgl2.c"; sourceTree = ""; }; + 206504F44E154FCB212C502F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7E4E65DE03B17C7A553C053A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 151B5F9409BD6D295C07749D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 068252F97FC976C92BD069FF /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 3AD63ED47DD00D33195F3369 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 5D820966416A4282130A1880 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 12BA2FB45A84420B6A4E4123 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 008815B354674F43774104EB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 04B73BBB12804A1D49EE6036 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 6E471DDF34AF7F3526E24A3A /* testgl2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgl2"; path = "testgl2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6A2801EC45C80EEF2B6C6417 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 733675FC76935EE515592268 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2578101C505E6209700372BA /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 71B273A3094A103462FF0D1C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7AFA41E7540407D14A92432C /* AudioToolbox.framework in Frameworks */, + 47600CC024F5725B3C1C5B21 /* AudioUnit.framework in Frameworks */, + 196E4214385B17EB51DE792B /* Cocoa.framework in Frameworks */, + 08A53FC92B2D20743E080AA6 /* CoreAudio.framework in Frameworks */, + 414817FE664E3EBD2095428D /* IOKit.framework in Frameworks */, + 051464B802D923F062DC655E /* Carbon.framework in Frameworks */, + 68656778359613CF31ED6DCA /* ForceFeedback.framework in Frameworks */, + 1A8A7B10631F1A473D884756 /* CoreFoundation.framework in Frameworks */, + 2523563C194273D615B744F9 /* OpenGL.framework in Frameworks */, + 64CC19DD22B11303629D5825 /* libSDL2main.a in Frameworks */, + 1F8E59315BFC38C73688548D /* libSDL2test.a in Frameworks */, + 73557D3D480038BC5EB43AC2 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7EC97CA00B8002B3753711EE /* testgl2 */ = { + isa = PBXGroup; + children = ( + 3171242F3D656E485A376D3A /* test */, + 66AF20B448055A0463416D19 /* Frameworks */, + 3FC8215A541B43D83D181AD6 /* Products */, + 685260F641B83029561453EC /* Projects */, + ); + name = "testgl2"; + sourceTree = ""; + }; + 3171242F3D656E485A376D3A /* test */ = { + isa = PBXGroup; + children = ( + 3220018170A379082A7A5311 /* testgl2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 66AF20B448055A0463416D19 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 206504F44E154FCB212C502F /* AudioToolbox.framework */, + 7E4E65DE03B17C7A553C053A /* AudioUnit.framework */, + 151B5F9409BD6D295C07749D /* Cocoa.framework */, + 068252F97FC976C92BD069FF /* CoreAudio.framework */, + 3AD63ED47DD00D33195F3369 /* IOKit.framework */, + 5D820966416A4282130A1880 /* Carbon.framework */, + 12BA2FB45A84420B6A4E4123 /* ForceFeedback.framework */, + 008815B354674F43774104EB /* CoreFoundation.framework */, + 04B73BBB12804A1D49EE6036 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 3FC8215A541B43D83D181AD6 /* Products */ = { + isa = PBXGroup; + children = ( + 6E471DDF34AF7F3526E24A3A /* testgl2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 685260F641B83029561453EC /* Projects */ = { + isa = PBXGroup; + children = ( + 6A2801EC45C80EEF2B6C6417 /* SDL2main.xcodeproj */, + 733675FC76935EE515592268 /* SDL2test.xcodeproj */, + 2578101C505E6209700372BA /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7FD858AE07A025610A7131F6 /* Products */ = { + isa = PBXGroup; + children = ( + 4CDB408319620EE1092E5B38 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 33547620430B348928255288 /* Products */ = { + isa = PBXGroup; + children = ( + 666703DB2737213809E80478 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 038750CE1BA5226B59BD2C8E /* Products */ = { + isa = PBXGroup; + children = ( + 23D67491123B616E109134FB /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 402340AE70003AD471B13889 /* testgl2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2815302B7E0C4C5D163C70FA /* Build configuration list for PBXNativeTarget "testgl2" */; + buildPhases = ( + 505E007127AF03B71D493B1F /* Resources */, + 7EEE54660402358F59940449 /* Sources */, + 71B273A3094A103462FF0D1C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 344805864158260C1D3C0790 /* PBXTargetDependency */, + 0221786E08B35100760146EB /* PBXTargetDependency */, + 63D00F7F0B2F6A7C1EFB2547 /* PBXTargetDependency */, + ); + name = "testgl2"; + productInstallPath = "$(HOME)/bin"; + productName = "testgl2"; + productReference = 6E471DDF34AF7F3526E24A3A /* testgl2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgl2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 7EC97CA00B8002B3753711EE /* testgl2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7FD858AE07A025610A7131F6 /* Products */; + ProjectRef = 6A2801EC45C80EEF2B6C6417 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 33547620430B348928255288 /* Products */; + ProjectRef = 733675FC76935EE515592268 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 038750CE1BA5226B59BD2C8E /* Products */; + ProjectRef = 2578101C505E6209700372BA /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 402340AE70003AD471B13889 /* testgl2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 4CDB408319620EE1092E5B38 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 4453567C1B860D8520EB652F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 666703DB2737213809E80478 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 795565F809AF458014B503B3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 23D67491123B616E109134FB /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 2FB6107237CE447C5542013F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 505E007127AF03B71D493B1F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7EEE54660402358F59940449 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E5D7DFA3A69692D44FC27E9 /* testgl2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 344805864158260C1D3C0790 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 08A64A9D21622C6D3F0B2605 /* PBXContainerItemProxy */; + }; + 0221786E08B35100760146EB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 07726CEC0FA935EA51735F5B /* PBXContainerItemProxy */; + }; + 63D00F7F0B2F6A7C1EFB2547 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 72197A6330DB01C5616B7311 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 5C040CF325E2203C6C354886 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Debug Universal"; + }; + 18490D92079F16547EA4773E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Debug Native"; + }; + 168D1D9808C960990ED0124A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Release Universal"; + }; + 01DD5D0649C538FD219D0732 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgl2"; + }; + name = "Release Native"; + }; + 01CB4C66418523A9543862C3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1DCE74EC65452D5B56165C3C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 5C792ED86E2A1F39075B156A /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0FCA1E800B6F6586548F194A /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2815302B7E0C4C5D163C70FA /* Build configuration list for PBXNativeTarget "testgl2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5C040CF325E2203C6C354886 /* Debug Universal */, + 18490D92079F16547EA4773E /* Debug Native */, + 168D1D9808C960990ED0124A /* Release Universal */, + 01DD5D0649C538FD219D0732 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgl2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01CB4C66418523A9543862C3 /* Debug Universal */, + 1DCE74EC65452D5B56165C3C /* Debug Native */, + 5C792ED86E2A1F39075B156A /* Release Universal */, + 0FCA1E800B6F6586548F194A /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testgles/testgles.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testgles/testgles.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..c1d20298d6 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testgles/testgles.xcodeproj/project.pbxproj @@ -0,0 +1,498 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 71590B69376C3EAF0F5408C3 /* testgles.c in Sources */ = {isa = PBXBuildFile; fileRef = 21ED049579DB3B92756943D9 /* testgles.c */; }; + 53071187381E4A3C5A146491 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 549303AB0D8C117556EA52AE /* AudioToolbox.framework */; }; + 4BA560D00AF85DA84CFA5074 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EA062245931572804B7121F /* AudioUnit.framework */; }; + 55BF794A6CCF2CA708141A3E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FAD532261FD32C2028B2459 /* Cocoa.framework */; }; + 040721A914A36A9579543581 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 13BE56E370C875FE1C0B5043 /* CoreAudio.framework */; }; + 00A635B9081D573A58803FEA /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45306F324AF8686220157698 /* IOKit.framework */; }; + 42D810F301626B045BA62221 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44EB22070B0058364D675FDD /* Carbon.framework */; }; + 61E9080D42ED5D613B712A8D /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56793A912FF0657C58AE3A3E /* ForceFeedback.framework */; }; + 1EE16D8142517535032D0F5A /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AFE366F71A405A3161E0DEC /* CoreFoundation.framework */; }; + 4C1D1A93420D7D5D20CA56A4 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 626430487FAD66A179683ECC /* OpenGL.framework */; }; + 7D1A7393579522401B044C84 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B475365406704572B75E39 /* libSDL2main.a */; }; + 26BD42CA0FC414C87CF80454 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CB86932610E1C13256860C8 /* libSDL2test.a */; }; + 7A8F7E84426517196DCB4BC4 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 128D029A7EF46C14532547B9 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6F3D288B74C953186F411985 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 79934082264672FA7FB77D2C /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 190F607D599169AC4DF72505 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 79934082264672FA7FB77D2C /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 59EF769B4F043BCB22AF4352 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 068D3D26283F68D7226E0D35 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 676743CB696660AC408825C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 068D3D26283F68D7226E0D35 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 07941DED6B1938F43CB52BFB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43793E1A385F15D97C1E4508 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 14FB7FA72FB25F785D5E6A15 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43793E1A385F15D97C1E4508 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 21ED049579DB3B92756943D9 /* testgles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testgles.c"; path = "../../../../../test/testgles.c"; sourceTree = ""; }; + 549303AB0D8C117556EA52AE /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7EA062245931572804B7121F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 6FAD532261FD32C2028B2459 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 13BE56E370C875FE1C0B5043 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 45306F324AF8686220157698 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 44EB22070B0058364D675FDD /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 56793A912FF0657C58AE3A3E /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3AFE366F71A405A3161E0DEC /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 626430487FAD66A179683ECC /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 51845D902E9F04B601CA325E /* testgles */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testgles"; path = "testgles"; sourceTree = BUILT_PRODUCTS_DIR; }; + 79934082264672FA7FB77D2C /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 068D3D26283F68D7226E0D35 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 43793E1A385F15D97C1E4508 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 322F478F14C1119C3AB77840 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 53071187381E4A3C5A146491 /* AudioToolbox.framework in Frameworks */, + 4BA560D00AF85DA84CFA5074 /* AudioUnit.framework in Frameworks */, + 55BF794A6CCF2CA708141A3E /* Cocoa.framework in Frameworks */, + 040721A914A36A9579543581 /* CoreAudio.framework in Frameworks */, + 00A635B9081D573A58803FEA /* IOKit.framework in Frameworks */, + 42D810F301626B045BA62221 /* Carbon.framework in Frameworks */, + 61E9080D42ED5D613B712A8D /* ForceFeedback.framework in Frameworks */, + 1EE16D8142517535032D0F5A /* CoreFoundation.framework in Frameworks */, + 4C1D1A93420D7D5D20CA56A4 /* OpenGL.framework in Frameworks */, + 7D1A7393579522401B044C84 /* libSDL2main.a in Frameworks */, + 26BD42CA0FC414C87CF80454 /* libSDL2test.a in Frameworks */, + 7A8F7E84426517196DCB4BC4 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 43C138D420D717CC103F1E99 /* testgles */ = { + isa = PBXGroup; + children = ( + 7B5A76D932546A3D7C9356D8 /* test */, + 3C7F47BC201354B550A52D78 /* Frameworks */, + 52E953152E814515195D5BB7 /* Products */, + 0B1861D778A9527F1CB5300C /* Projects */, + ); + name = "testgles"; + sourceTree = ""; + }; + 7B5A76D932546A3D7C9356D8 /* test */ = { + isa = PBXGroup; + children = ( + 21ED049579DB3B92756943D9 /* testgles.c */, + ); + name = "test"; + sourceTree = ""; + }; + 3C7F47BC201354B550A52D78 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 549303AB0D8C117556EA52AE /* AudioToolbox.framework */, + 7EA062245931572804B7121F /* AudioUnit.framework */, + 6FAD532261FD32C2028B2459 /* Cocoa.framework */, + 13BE56E370C875FE1C0B5043 /* CoreAudio.framework */, + 45306F324AF8686220157698 /* IOKit.framework */, + 44EB22070B0058364D675FDD /* Carbon.framework */, + 56793A912FF0657C58AE3A3E /* ForceFeedback.framework */, + 3AFE366F71A405A3161E0DEC /* CoreFoundation.framework */, + 626430487FAD66A179683ECC /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 52E953152E814515195D5BB7 /* Products */ = { + isa = PBXGroup; + children = ( + 51845D902E9F04B601CA325E /* testgles */, + ); + name = "Products"; + sourceTree = ""; + }; + 0B1861D778A9527F1CB5300C /* Projects */ = { + isa = PBXGroup; + children = ( + 79934082264672FA7FB77D2C /* SDL2main.xcodeproj */, + 068D3D26283F68D7226E0D35 /* SDL2test.xcodeproj */, + 43793E1A385F15D97C1E4508 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 25187D402A975B324C5A4EBB /* Products */ = { + isa = PBXGroup; + children = ( + 59B475365406704572B75E39 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 2B273C956F420BE510675CC2 /* Products */ = { + isa = PBXGroup; + children = ( + 3CB86932610E1C13256860C8 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 6A6C0DE008810BCC28FD2C2E /* Products */ = { + isa = PBXGroup; + children = ( + 128D029A7EF46C14532547B9 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 512650A10BE62C81608B596F /* testgles */ = { + isa = PBXNativeTarget; + buildConfigurationList = 327A0DCF29D657C437BB14FB /* Build configuration list for PBXNativeTarget "testgles" */; + buildPhases = ( + 2C0649B662DD5C2058116FAB /* Resources */, + 61AA00D2008746EB6F5E04F4 /* Sources */, + 322F478F14C1119C3AB77840 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 76DA72C706772A4C023A63CF /* PBXTargetDependency */, + 665C47BB05D107361B761151 /* PBXTargetDependency */, + 41AF0206069876D619CE34CE /* PBXTargetDependency */, + ); + name = "testgles"; + productInstallPath = "$(HOME)/bin"; + productName = "testgles"; + productReference = 51845D902E9F04B601CA325E /* testgles */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgles" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 43C138D420D717CC103F1E99 /* testgles */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 25187D402A975B324C5A4EBB /* Products */; + ProjectRef = 79934082264672FA7FB77D2C /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 2B273C956F420BE510675CC2 /* Products */; + ProjectRef = 068D3D26283F68D7226E0D35 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 6A6C0DE008810BCC28FD2C2E /* Products */; + ProjectRef = 43793E1A385F15D97C1E4508 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 512650A10BE62C81608B596F /* testgles */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 59B475365406704572B75E39 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6F3D288B74C953186F411985 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3CB86932610E1C13256860C8 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 59EF769B4F043BCB22AF4352 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 128D029A7EF46C14532547B9 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 07941DED6B1938F43CB52BFB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2C0649B662DD5C2058116FAB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 61AA00D2008746EB6F5E04F4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 71590B69376C3EAF0F5408C3 /* testgles.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 76DA72C706772A4C023A63CF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 190F607D599169AC4DF72505 /* PBXContainerItemProxy */; + }; + 665C47BB05D107361B761151 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 676743CB696660AC408825C5 /* PBXContainerItemProxy */; + }; + 41AF0206069876D619CE34CE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 14FB7FA72FB25F785D5E6A15 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 509D1E5C5117524334FF66B8 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Debug Universal"; + }; + 232B61C17CBA44CB157D7DC5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Debug Native"; + }; + 1FC975994C49772E269B426D /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Release Universal"; + }; + 0BA47CAA0E214BB438697E9C /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testgles"; + }; + name = "Release Native"; + }; + 4E1B72F029E855ED3C0F7ED4 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 37CF039967A85400622D2DC7 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 2DC827C32D553D9714C05D13 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6B7B08B422C569A64C0B66D1 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 327A0DCF29D657C437BB14FB /* Build configuration list for PBXNativeTarget "testgles" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 509D1E5C5117524334FF66B8 /* Debug Universal */, + 232B61C17CBA44CB157D7DC5 /* Debug Native */, + 1FC975994C49772E269B426D /* Release Universal */, + 0BA47CAA0E214BB438697E9C /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testgles" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4E1B72F029E855ED3C0F7ED4 /* Debug Universal */, + 37CF039967A85400622D2DC7 /* Debug Native */, + 2DC827C32D553D9714C05D13 /* Release Universal */, + 6B7B08B422C569A64C0B66D1 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..4d6821887a --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testhaptic/testhaptic.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 259F0C4A725C2A5403467143 /* testhaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 0E6C06371F702D532D5529BA /* testhaptic.c */; }; + 30EF44E274E522070A0A45AF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 156E6FBA3A1562AB5AB00E90 /* AudioToolbox.framework */; }; + 22A872B572D32B2B3D4851B0 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D5773A44C9A134672906703 /* AudioUnit.framework */; }; + 0C345BD450EF117F34F75C13 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 36283C7C10FB571669E3505D /* Cocoa.framework */; }; + 2A8B4CFC6EDE4CE0260733BB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D3E0010262034F5429D7BDF /* CoreAudio.framework */; }; + 39957C4E747C1B836AD002B6 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 459610BE579878903E0A416E /* IOKit.framework */; }; + 53B942F10276361D5E4C07C8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1099493007CE1079342B7B67 /* Carbon.framework */; }; + 7EC20160664E415B7B3D7554 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD8033D416A189636416EA0 /* ForceFeedback.framework */; }; + 3233705B20ED4BEE0DFC3E5C /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 177718DC5361393D02D918B1 /* CoreFoundation.framework */; }; + 2D2566F45319182C20A214BC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20600B02694830C63EA0332A /* OpenGL.framework */; }; + 67DC48577E8C250C47C23D63 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1BF3114F77F23F81419F31E1 /* libSDL2main.a */; }; + 27446D037B1A10C4703878A7 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B310E30273346B1364F251D /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 037F1B9D1652681D66753BA4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55597D58463372000C5615B8 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 1D190F6E0DF753C413445EAD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55597D58463372000C5615B8 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 7156624E192C4444579525C0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 32084257624E1E0D7ED35D00 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 089918D43EFB041865DB24BE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 32084257624E1E0D7ED35D00 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0E6C06371F702D532D5529BA /* testhaptic.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testhaptic.c"; path = "../../../../../test/testhaptic.c"; sourceTree = ""; }; + 156E6FBA3A1562AB5AB00E90 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7D5773A44C9A134672906703 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 36283C7C10FB571669E3505D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7D3E0010262034F5429D7BDF /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 459610BE579878903E0A416E /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 1099493007CE1079342B7B67 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 6FD8033D416A189636416EA0 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 177718DC5361393D02D918B1 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 20600B02694830C63EA0332A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4FAD6EEE78EC5A2E248260FD /* testhaptic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testhaptic"; path = "testhaptic"; sourceTree = BUILT_PRODUCTS_DIR; }; + 55597D58463372000C5615B8 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 32084257624E1E0D7ED35D00 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 37222368225D1AF6258C317C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 30EF44E274E522070A0A45AF /* AudioToolbox.framework in Frameworks */, + 22A872B572D32B2B3D4851B0 /* AudioUnit.framework in Frameworks */, + 0C345BD450EF117F34F75C13 /* Cocoa.framework in Frameworks */, + 2A8B4CFC6EDE4CE0260733BB /* CoreAudio.framework in Frameworks */, + 39957C4E747C1B836AD002B6 /* IOKit.framework in Frameworks */, + 53B942F10276361D5E4C07C8 /* Carbon.framework in Frameworks */, + 7EC20160664E415B7B3D7554 /* ForceFeedback.framework in Frameworks */, + 3233705B20ED4BEE0DFC3E5C /* CoreFoundation.framework in Frameworks */, + 2D2566F45319182C20A214BC /* OpenGL.framework in Frameworks */, + 67DC48577E8C250C47C23D63 /* libSDL2main.a in Frameworks */, + 27446D037B1A10C4703878A7 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1403543911376E16049C4AAF /* testhaptic */ = { + isa = PBXGroup; + children = ( + 5411484B3E0546151F8A2F61 /* test */, + 2269211A4F2660BF294D0DA0 /* Frameworks */, + 58E216826F6A24CF470F69FF /* Products */, + 1DB62BF439A7251A7D9C11AA /* Projects */, + ); + name = "testhaptic"; + sourceTree = ""; + }; + 5411484B3E0546151F8A2F61 /* test */ = { + isa = PBXGroup; + children = ( + 0E6C06371F702D532D5529BA /* testhaptic.c */, + ); + name = "test"; + sourceTree = ""; + }; + 2269211A4F2660BF294D0DA0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 156E6FBA3A1562AB5AB00E90 /* AudioToolbox.framework */, + 7D5773A44C9A134672906703 /* AudioUnit.framework */, + 36283C7C10FB571669E3505D /* Cocoa.framework */, + 7D3E0010262034F5429D7BDF /* CoreAudio.framework */, + 459610BE579878903E0A416E /* IOKit.framework */, + 1099493007CE1079342B7B67 /* Carbon.framework */, + 6FD8033D416A189636416EA0 /* ForceFeedback.framework */, + 177718DC5361393D02D918B1 /* CoreFoundation.framework */, + 20600B02694830C63EA0332A /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 58E216826F6A24CF470F69FF /* Products */ = { + isa = PBXGroup; + children = ( + 4FAD6EEE78EC5A2E248260FD /* testhaptic */, + ); + name = "Products"; + sourceTree = ""; + }; + 1DB62BF439A7251A7D9C11AA /* Projects */ = { + isa = PBXGroup; + children = ( + 55597D58463372000C5615B8 /* SDL2main.xcodeproj */, + 32084257624E1E0D7ED35D00 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7AAD1A25324036572D4E778D /* Products */ = { + isa = PBXGroup; + children = ( + 1BF3114F77F23F81419F31E1 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 471B4E533FE220A228D55E58 /* Products */ = { + isa = PBXGroup; + children = ( + 3B310E30273346B1364F251D /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 427856C059AD11D134C10ADF /* testhaptic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 31347DC811FB7E1F284F633B /* Build configuration list for PBXNativeTarget "testhaptic" */; + buildPhases = ( + 3D6A31286E173C4D14F50300 /* Resources */, + 269A4E8912A24C833F881E6F /* Sources */, + 37222368225D1AF6258C317C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 342123C51B1C4CEA225B3C31 /* PBXTargetDependency */, + 4A3F7633149345C651A62318 /* PBXTargetDependency */, + ); + name = "testhaptic"; + productInstallPath = "$(HOME)/bin"; + productName = "testhaptic"; + productReference = 4FAD6EEE78EC5A2E248260FD /* testhaptic */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testhaptic" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 1403543911376E16049C4AAF /* testhaptic */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7AAD1A25324036572D4E778D /* Products */; + ProjectRef = 55597D58463372000C5615B8 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 471B4E533FE220A228D55E58 /* Products */; + ProjectRef = 32084257624E1E0D7ED35D00 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 427856C059AD11D134C10ADF /* testhaptic */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 1BF3114F77F23F81419F31E1 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 037F1B9D1652681D66753BA4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3B310E30273346B1364F251D /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7156624E192C4444579525C0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3D6A31286E173C4D14F50300 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 269A4E8912A24C833F881E6F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 259F0C4A725C2A5403467143 /* testhaptic.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 342123C51B1C4CEA225B3C31 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 1D190F6E0DF753C413445EAD /* PBXContainerItemProxy */; + }; + 4A3F7633149345C651A62318 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 089918D43EFB041865DB24BE /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7C8037DD24A50B0464D22DD3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Debug Universal"; + }; + 5D544F6D33A948326D6F5357 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Debug Native"; + }; + 422449A50B524601141A58C9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Release Universal"; + }; + 58704F2E7A8760715B1428AB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testhaptic"; + }; + name = "Release Native"; + }; + 1CFA1BBC124934E60C7036C9 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 2B2532C20414558B40351209 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 02EB12FB36A9474A70CC1DF3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 278B282A5DB753C566D348EA /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 31347DC811FB7E1F284F633B /* Build configuration list for PBXNativeTarget "testhaptic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7C8037DD24A50B0464D22DD3 /* Debug Universal */, + 5D544F6D33A948326D6F5357 /* Debug Native */, + 422449A50B524601141A58C9 /* Release Universal */, + 58704F2E7A8760715B1428AB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testhaptic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1CFA1BBC124934E60C7036C9 /* Debug Universal */, + 2B2532C20414558B40351209 /* Debug Native */, + 02EB12FB36A9474A70CC1DF3 /* Release Universal */, + 278B282A5DB753C566D348EA /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testiconv/testiconv.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testiconv/testiconv.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..9d3f6e2299 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testiconv/testiconv.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 01F67D4205694451410C3AE4 /* testiconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 5A851351608E23D3025123D3 /* testiconv.c */; }; + 28BC65452E7C060A058E444B /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BFC3DEF433703C323E928EA /* AudioToolbox.framework */; }; + 7A686194495307043C6B4218 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18A906FD6917700431D2072C /* AudioUnit.framework */; }; + 4D4E4F94227C04A5778D4F47 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64412144781354917D7E66C7 /* Cocoa.framework */; }; + 7CEF3B4B5C683E7E572015B5 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7854005411246BA537FA0971 /* CoreAudio.framework */; }; + 43783AE67501400F55252427 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1F1349EC410623931AE132F6 /* IOKit.framework */; }; + 311232347EEF21BD340076B3 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10F34F3154A6111F37DB408A /* Carbon.framework */; }; + 5E8630AE172E5A9F0DF77613 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 644229FD50ED7DD4695A1A51 /* ForceFeedback.framework */; }; + 037C01BC757B65413C4913FC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07415AF920E53EF410206478 /* CoreFoundation.framework */; }; + 72D72D63545B3BA70A624720 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C1D5877076125646C0D6053 /* OpenGL.framework */; }; + 49361E9C5361328973933806 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 16A94A053ABA231F59011001 /* libSDL2main.a */; }; + 107912681200609B01BC61B5 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C83096C342B322A1569580E /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7DEB6FD46DB920AD50586F7F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4A8A50E0634613866EF11C47 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 029A692D3CEB268A363E54E7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4A8A50E0634613866EF11C47 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 1DC90A9F5A01305F67524B5C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 483610EC19C568A969A82850 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 16C5039E16905E5E12FB32F3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 483610EC19C568A969A82850 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5A851351608E23D3025123D3 /* testiconv.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testiconv.c"; path = "../../../../../test/testiconv.c"; sourceTree = ""; }; + 2BFC3DEF433703C323E928EA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 18A906FD6917700431D2072C /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 64412144781354917D7E66C7 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7854005411246BA537FA0971 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1F1349EC410623931AE132F6 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 10F34F3154A6111F37DB408A /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 644229FD50ED7DD4695A1A51 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 07415AF920E53EF410206478 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 2C1D5877076125646C0D6053 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7822261D75FC09E354453DAB /* testiconv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testiconv"; path = "testiconv"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4A8A50E0634613866EF11C47 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 483610EC19C568A969A82850 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5E60195958B7167367850A1A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 28BC65452E7C060A058E444B /* AudioToolbox.framework in Frameworks */, + 7A686194495307043C6B4218 /* AudioUnit.framework in Frameworks */, + 4D4E4F94227C04A5778D4F47 /* Cocoa.framework in Frameworks */, + 7CEF3B4B5C683E7E572015B5 /* CoreAudio.framework in Frameworks */, + 43783AE67501400F55252427 /* IOKit.framework in Frameworks */, + 311232347EEF21BD340076B3 /* Carbon.framework in Frameworks */, + 5E8630AE172E5A9F0DF77613 /* ForceFeedback.framework in Frameworks */, + 037C01BC757B65413C4913FC /* CoreFoundation.framework in Frameworks */, + 72D72D63545B3BA70A624720 /* OpenGL.framework in Frameworks */, + 49361E9C5361328973933806 /* libSDL2main.a in Frameworks */, + 107912681200609B01BC61B5 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 70BF1E9A2C45066E2DA81659 /* testiconv */ = { + isa = PBXGroup; + children = ( + 43DE5656401756E356603A23 /* test */, + 79683FF66B073E706BF5539E /* Frameworks */, + 06B973487F9208E244A21B40 /* Products */, + 32BC61D45C4A7EC540093B9D /* Projects */, + ); + name = "testiconv"; + sourceTree = ""; + }; + 43DE5656401756E356603A23 /* test */ = { + isa = PBXGroup; + children = ( + 5A851351608E23D3025123D3 /* testiconv.c */, + ); + name = "test"; + sourceTree = ""; + }; + 79683FF66B073E706BF5539E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2BFC3DEF433703C323E928EA /* AudioToolbox.framework */, + 18A906FD6917700431D2072C /* AudioUnit.framework */, + 64412144781354917D7E66C7 /* Cocoa.framework */, + 7854005411246BA537FA0971 /* CoreAudio.framework */, + 1F1349EC410623931AE132F6 /* IOKit.framework */, + 10F34F3154A6111F37DB408A /* Carbon.framework */, + 644229FD50ED7DD4695A1A51 /* ForceFeedback.framework */, + 07415AF920E53EF410206478 /* CoreFoundation.framework */, + 2C1D5877076125646C0D6053 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 06B973487F9208E244A21B40 /* Products */ = { + isa = PBXGroup; + children = ( + 7822261D75FC09E354453DAB /* testiconv */, + ); + name = "Products"; + sourceTree = ""; + }; + 32BC61D45C4A7EC540093B9D /* Projects */ = { + isa = PBXGroup; + children = ( + 4A8A50E0634613866EF11C47 /* SDL2main.xcodeproj */, + 483610EC19C568A969A82850 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 5C0819485F56175379E94442 /* Products */ = { + isa = PBXGroup; + children = ( + 16A94A053ABA231F59011001 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 047466AD141D24A845437306 /* Products */ = { + isa = PBXGroup; + children = ( + 1C83096C342B322A1569580E /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4AD702822C1123C70BD41DCC /* testiconv */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3FC52AA428F04ADE6FF63EDA /* Build configuration list for PBXNativeTarget "testiconv" */; + buildPhases = ( + 6E1F7223645F2AA60E9F0853 /* Resources */, + 0A766D7D2AA773F77A1711BC /* Sources */, + 5E60195958B7167367850A1A /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 20776E72027628001E6E69C1 /* PBXTargetDependency */, + 09F94DD03D0120B613F34E11 /* PBXTargetDependency */, + ); + name = "testiconv"; + productInstallPath = "$(HOME)/bin"; + productName = "testiconv"; + productReference = 7822261D75FC09E354453DAB /* testiconv */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testiconv" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 70BF1E9A2C45066E2DA81659 /* testiconv */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 5C0819485F56175379E94442 /* Products */; + ProjectRef = 4A8A50E0634613866EF11C47 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 047466AD141D24A845437306 /* Products */; + ProjectRef = 483610EC19C568A969A82850 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4AD702822C1123C70BD41DCC /* testiconv */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 16A94A053ABA231F59011001 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 7DEB6FD46DB920AD50586F7F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1C83096C342B322A1569580E /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 1DC90A9F5A01305F67524B5C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 6E1F7223645F2AA60E9F0853 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Debug/utf8.txt\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Debug/utf8.txt\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Release/utf8.txt\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/utf8.txt\" \"./Build/Release/utf8.txt\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 0A766D7D2AA773F77A1711BC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 01F67D4205694451410C3AE4 /* testiconv.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 20776E72027628001E6E69C1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 029A692D3CEB268A363E54E7 /* PBXContainerItemProxy */; + }; + 09F94DD03D0120B613F34E11 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 16C5039E16905E5E12FB32F3 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 180B15F72235772335BC5EDF /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Debug Universal"; + }; + 2CBA67A12BDA771D49A85992 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Debug Native"; + }; + 262640223531332816C10B54 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Release Universal"; + }; + 4487290B3A67007306B6278D /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testiconv"; + }; + name = "Release Native"; + }; + 3EA56CB17FA80E7E262E3556 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 2B015B722AD72B4B63C120A0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 55615B5C15FB4917219B52CB /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 5767519858C43C4645703E93 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3FC52AA428F04ADE6FF63EDA /* Build configuration list for PBXNativeTarget "testiconv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 180B15F72235772335BC5EDF /* Debug Universal */, + 2CBA67A12BDA771D49A85992 /* Debug Native */, + 262640223531332816C10B54 /* Release Universal */, + 4487290B3A67007306B6278D /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testiconv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3EA56CB17FA80E7E262E3556 /* Debug Universal */, + 2B015B722AD72B4B63C120A0 /* Debug Native */, + 55615B5C15FB4917219B52CB /* Release Universal */, + 5767519858C43C4645703E93 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testime/testime.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testime/testime.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..0d81aa09f6 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testime/testime.xcodeproj/project.pbxproj @@ -0,0 +1,498 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 394F2A6761A00C864DD37E29 /* testime.c in Sources */ = {isa = PBXBuildFile; fileRef = 79AA0DF42FB806346AD1591F /* testime.c */; }; + 5E10777A103605FF3E013696 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03C6494775C36EF33B19751B /* AudioToolbox.framework */; }; + 6A9C67C13FD623E721F820F3 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44317F33060A115F02C8475A /* AudioUnit.framework */; }; + 096D12923AFA2F1B1A846CEE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B867D6C49145AA925AF2E7E /* Cocoa.framework */; }; + 7D056C54312855F4198E4DF7 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D8C1FDC44723C795F45553E /* CoreAudio.framework */; }; + 5FA22A743AB27EA51D771827 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2751676401665387040043AE /* IOKit.framework */; }; + 3B811AFA54797BC03A736D8E /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 652305D64F7F23BF60A3781B /* Carbon.framework */; }; + 292A09B838117FAE33364F13 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FC20CF54F57650D632F3936 /* ForceFeedback.framework */; }; + 6CB30ECA1DBF17E62C7C10EF /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 201502B9551224FC331936AE /* CoreFoundation.framework */; }; + 767C54E8002D305A68C50F9F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 595D09E60F8839134F750E70 /* OpenGL.framework */; }; + 7DBF3B3F54FC7694723579E4 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F310BC833587B680A015146 /* libSDL2main.a */; }; + 25A16D314598044A205D3AD9 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 416A20CA6CC903846592741F /* libSDL2test.a */; }; + 03912AC2480D57924D2C20A6 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2813134D4E980EB24DDA3264 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6EF3411958EC070E65006F51 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 37660C5C6E012B0704F50800 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 325B1E0712D96B626F4C6BAA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 37660C5C6E012B0704F50800 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 0BD57E7411E16CFA3B9D70C2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A0254215BC4336617C31D9F /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 66340F2E53D977EA41C776EE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6A0254215BC4336617C31D9F /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 14F02547192C24663BCD3EAC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1870713219E80C70154F2196 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 34076F20333E45790DF76F27 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1870713219E80C70154F2196 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 79AA0DF42FB806346AD1591F /* testime.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testime.c"; path = "../../../../../test/testime.c"; sourceTree = ""; }; + 03C6494775C36EF33B19751B /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 44317F33060A115F02C8475A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3B867D6C49145AA925AF2E7E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0D8C1FDC44723C795F45553E /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 2751676401665387040043AE /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 652305D64F7F23BF60A3781B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 1FC20CF54F57650D632F3936 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 201502B9551224FC331936AE /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 595D09E60F8839134F750E70 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 17FD149165DF326B35E60F6E /* testime */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testime"; path = "testime"; sourceTree = BUILT_PRODUCTS_DIR; }; + 37660C5C6E012B0704F50800 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6A0254215BC4336617C31D9F /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 1870713219E80C70154F2196 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 179F54385F0143A328DD5F70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5E10777A103605FF3E013696 /* AudioToolbox.framework in Frameworks */, + 6A9C67C13FD623E721F820F3 /* AudioUnit.framework in Frameworks */, + 096D12923AFA2F1B1A846CEE /* Cocoa.framework in Frameworks */, + 7D056C54312855F4198E4DF7 /* CoreAudio.framework in Frameworks */, + 5FA22A743AB27EA51D771827 /* IOKit.framework in Frameworks */, + 3B811AFA54797BC03A736D8E /* Carbon.framework in Frameworks */, + 292A09B838117FAE33364F13 /* ForceFeedback.framework in Frameworks */, + 6CB30ECA1DBF17E62C7C10EF /* CoreFoundation.framework in Frameworks */, + 767C54E8002D305A68C50F9F /* OpenGL.framework in Frameworks */, + 7DBF3B3F54FC7694723579E4 /* libSDL2main.a in Frameworks */, + 25A16D314598044A205D3AD9 /* libSDL2test.a in Frameworks */, + 03912AC2480D57924D2C20A6 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 325432B320AA344064692D64 /* testime */ = { + isa = PBXGroup; + children = ( + 35591BE0265A7D47522C7BC5 /* test */, + 6C4079D058CC76D8096A2679 /* Frameworks */, + 357E6BFF68C64972163A532B /* Products */, + 3D743F9F13CF1A624B494301 /* Projects */, + ); + name = "testime"; + sourceTree = ""; + }; + 35591BE0265A7D47522C7BC5 /* test */ = { + isa = PBXGroup; + children = ( + 79AA0DF42FB806346AD1591F /* testime.c */, + ); + name = "test"; + sourceTree = ""; + }; + 6C4079D058CC76D8096A2679 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 03C6494775C36EF33B19751B /* AudioToolbox.framework */, + 44317F33060A115F02C8475A /* AudioUnit.framework */, + 3B867D6C49145AA925AF2E7E /* Cocoa.framework */, + 0D8C1FDC44723C795F45553E /* CoreAudio.framework */, + 2751676401665387040043AE /* IOKit.framework */, + 652305D64F7F23BF60A3781B /* Carbon.framework */, + 1FC20CF54F57650D632F3936 /* ForceFeedback.framework */, + 201502B9551224FC331936AE /* CoreFoundation.framework */, + 595D09E60F8839134F750E70 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 357E6BFF68C64972163A532B /* Products */ = { + isa = PBXGroup; + children = ( + 17FD149165DF326B35E60F6E /* testime */, + ); + name = "Products"; + sourceTree = ""; + }; + 3D743F9F13CF1A624B494301 /* Projects */ = { + isa = PBXGroup; + children = ( + 37660C5C6E012B0704F50800 /* SDL2main.xcodeproj */, + 6A0254215BC4336617C31D9F /* SDL2test.xcodeproj */, + 1870713219E80C70154F2196 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 19D178A72633052168735B58 /* Products */ = { + isa = PBXGroup; + children = ( + 5F310BC833587B680A015146 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 3145455649AC64EF07E379DC /* Products */ = { + isa = PBXGroup; + children = ( + 416A20CA6CC903846592741F /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 15241B3C3A85203F0FCF6F85 /* Products */ = { + isa = PBXGroup; + children = ( + 2813134D4E980EB24DDA3264 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 28A779F01DAF51A46DFC491B /* testime */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0CF9503A35A5750D3CF53617 /* Build configuration list for PBXNativeTarget "testime" */; + buildPhases = ( + 37EE1D73281F352A5C4F6B61 /* Resources */, + 42894CF45C075D0304B85980 /* Sources */, + 179F54385F0143A328DD5F70 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 75CE562B4E0E01DF17AF0196 /* PBXTargetDependency */, + 22354EEF6778265A6E087330 /* PBXTargetDependency */, + 7FE05C75435244CB7314546C /* PBXTargetDependency */, + ); + name = "testime"; + productInstallPath = "$(HOME)/bin"; + productName = "testime"; + productReference = 17FD149165DF326B35E60F6E /* testime */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testime" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 325432B320AA344064692D64 /* testime */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 19D178A72633052168735B58 /* Products */; + ProjectRef = 37660C5C6E012B0704F50800 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 3145455649AC64EF07E379DC /* Products */; + ProjectRef = 6A0254215BC4336617C31D9F /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 15241B3C3A85203F0FCF6F85 /* Products */; + ProjectRef = 1870713219E80C70154F2196 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 28A779F01DAF51A46DFC491B /* testime */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 5F310BC833587B680A015146 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6EF3411958EC070E65006F51 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 416A20CA6CC903846592741F /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 0BD57E7411E16CFA3B9D70C2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2813134D4E980EB24DDA3264 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 14F02547192C24663BCD3EAC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 37EE1D73281F352A5C4F6B61 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 42894CF45C075D0304B85980 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 394F2A6761A00C864DD37E29 /* testime.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 75CE562B4E0E01DF17AF0196 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 325B1E0712D96B626F4C6BAA /* PBXContainerItemProxy */; + }; + 22354EEF6778265A6E087330 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 66340F2E53D977EA41C776EE /* PBXContainerItemProxy */; + }; + 7FE05C75435244CB7314546C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 34076F20333E45790DF76F27 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2F314C5D29316B9B188C4A66 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Debug Universal"; + }; + 542D68521CF11A7D3EA171FB /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Debug Native"; + }; + 4AED11725C90159D0A022BA9 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Release Universal"; + }; + 09BF6D6928B92148060B7493 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testime"; + }; + name = "Release Native"; + }; + 2A75165E3419785351B1758C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 47D6655561D7721427A41223 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 0E315AB66A55310B5A154CC6 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 683A715D4A2E136E2F5E7BDD /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0CF9503A35A5750D3CF53617 /* Build configuration list for PBXNativeTarget "testime" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2F314C5D29316B9B188C4A66 /* Debug Universal */, + 542D68521CF11A7D3EA171FB /* Debug Native */, + 4AED11725C90159D0A022BA9 /* Release Universal */, + 09BF6D6928B92148060B7493 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testime" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2A75165E3419785351B1758C /* Debug Universal */, + 47D6655561D7721427A41223 /* Debug Native */, + 0E315AB66A55310B5A154CC6 /* Release Universal */, + 683A715D4A2E136E2F5E7BDD /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..630970e8c8 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testjoystick/testjoystick.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 0C3B15681CF539CA3CC139DD /* testjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 4A9E4BD653E644777C75025C /* testjoystick.c */; }; + 71C27DCD4DF2765442EA1E63 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03E33B67177730F20A9D5AEC /* AudioToolbox.framework */; }; + 454A162C375B711355CB317E /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F78527307DA13D200AA5A54 /* AudioUnit.framework */; }; + 0995246F20D1236E1B9B17A5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 527F2B521FD35C312563275C /* Cocoa.framework */; }; + 48CB3D42589E2B150F1C2721 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0FC30264097B701715AD34AB /* CoreAudio.framework */; }; + 180706B859BE7BC377910AF8 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 036913677858077318882DAE /* IOKit.framework */; }; + 4EA011DE3F423FBB2E5623B9 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38BC7431466663E705D91F31 /* Carbon.framework */; }; + 42BE685B4CAA5ADF0F146D65 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79DA78A677084AAA11D81609 /* ForceFeedback.framework */; }; + 6D011A203DF05FBA6DD028DC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 195B41E2126C016B50707429 /* CoreFoundation.framework */; }; + 61A136E2577960DB6EEA01D4 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35B8783C675D2C6C728716BF /* OpenGL.framework */; }; + 2BE81931679D0A87404119E6 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 46F526BE1A41257B65EB2BF4 /* libSDL2main.a */; }; + 301601B7334672E66EA411B2 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4CC008126DE8282F50707623 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5323235E0A156C3D5026186E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 527E6389744769125BC36F80 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 0CC915BF634B54F600480455 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 527E6389744769125BC36F80 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 7024692B25CA1FA7259764BF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7A436A410E50308635AD1799 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 76191EFC631D36381C9717E0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7A436A410E50308635AD1799 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4A9E4BD653E644777C75025C /* testjoystick.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testjoystick.c"; path = "../../../../../test/testjoystick.c"; sourceTree = ""; }; + 03E33B67177730F20A9D5AEC /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7F78527307DA13D200AA5A54 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 527F2B521FD35C312563275C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0FC30264097B701715AD34AB /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 036913677858077318882DAE /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 38BC7431466663E705D91F31 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 79DA78A677084AAA11D81609 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 195B41E2126C016B50707429 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 35B8783C675D2C6C728716BF /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7D1714BA5AB54C650E8076B9 /* testjoystick */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testjoystick"; path = "testjoystick"; sourceTree = BUILT_PRODUCTS_DIR; }; + 527E6389744769125BC36F80 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7A436A410E50308635AD1799 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0930577343442747473E4629 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 71C27DCD4DF2765442EA1E63 /* AudioToolbox.framework in Frameworks */, + 454A162C375B711355CB317E /* AudioUnit.framework in Frameworks */, + 0995246F20D1236E1B9B17A5 /* Cocoa.framework in Frameworks */, + 48CB3D42589E2B150F1C2721 /* CoreAudio.framework in Frameworks */, + 180706B859BE7BC377910AF8 /* IOKit.framework in Frameworks */, + 4EA011DE3F423FBB2E5623B9 /* Carbon.framework in Frameworks */, + 42BE685B4CAA5ADF0F146D65 /* ForceFeedback.framework in Frameworks */, + 6D011A203DF05FBA6DD028DC /* CoreFoundation.framework in Frameworks */, + 61A136E2577960DB6EEA01D4 /* OpenGL.framework in Frameworks */, + 2BE81931679D0A87404119E6 /* libSDL2main.a in Frameworks */, + 301601B7334672E66EA411B2 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 25AC5C0F6CF6364F04E15787 /* testjoystick */ = { + isa = PBXGroup; + children = ( + 7DE642475F981AA0120A7012 /* test */, + 5FFB162C40F0749523C97550 /* Frameworks */, + 31041AE46F1E2CAF42617A9A /* Products */, + 387D1E442BF445230DC33E18 /* Projects */, + ); + name = "testjoystick"; + sourceTree = ""; + }; + 7DE642475F981AA0120A7012 /* test */ = { + isa = PBXGroup; + children = ( + 4A9E4BD653E644777C75025C /* testjoystick.c */, + ); + name = "test"; + sourceTree = ""; + }; + 5FFB162C40F0749523C97550 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 03E33B67177730F20A9D5AEC /* AudioToolbox.framework */, + 7F78527307DA13D200AA5A54 /* AudioUnit.framework */, + 527F2B521FD35C312563275C /* Cocoa.framework */, + 0FC30264097B701715AD34AB /* CoreAudio.framework */, + 036913677858077318882DAE /* IOKit.framework */, + 38BC7431466663E705D91F31 /* Carbon.framework */, + 79DA78A677084AAA11D81609 /* ForceFeedback.framework */, + 195B41E2126C016B50707429 /* CoreFoundation.framework */, + 35B8783C675D2C6C728716BF /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 31041AE46F1E2CAF42617A9A /* Products */ = { + isa = PBXGroup; + children = ( + 7D1714BA5AB54C650E8076B9 /* testjoystick */, + ); + name = "Products"; + sourceTree = ""; + }; + 387D1E442BF445230DC33E18 /* Projects */ = { + isa = PBXGroup; + children = ( + 527E6389744769125BC36F80 /* SDL2main.xcodeproj */, + 7A436A410E50308635AD1799 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 67A17E320C466E735C293C0C /* Products */ = { + isa = PBXGroup; + children = ( + 46F526BE1A41257B65EB2BF4 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 56B5333B1CBB605379E5418E /* Products */ = { + isa = PBXGroup; + children = ( + 4CC008126DE8282F50707623 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 762F2180692925D903DE7530 /* testjoystick */ = { + isa = PBXNativeTarget; + buildConfigurationList = 68EE18787A727F925A04560F /* Build configuration list for PBXNativeTarget "testjoystick" */; + buildPhases = ( + 7C9C744C6414779B070C3F27 /* Resources */, + 219F74776F723334228838F9 /* Sources */, + 0930577343442747473E4629 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 6F3800711E362B6C7D807662 /* PBXTargetDependency */, + 127B4E02081355961B21224F /* PBXTargetDependency */, + ); + name = "testjoystick"; + productInstallPath = "$(HOME)/bin"; + productName = "testjoystick"; + productReference = 7D1714BA5AB54C650E8076B9 /* testjoystick */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testjoystick" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 25AC5C0F6CF6364F04E15787 /* testjoystick */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 67A17E320C466E735C293C0C /* Products */; + ProjectRef = 527E6389744769125BC36F80 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 56B5333B1CBB605379E5418E /* Products */; + ProjectRef = 7A436A410E50308635AD1799 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 762F2180692925D903DE7530 /* testjoystick */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 46F526BE1A41257B65EB2BF4 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5323235E0A156C3D5026186E /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 4CC008126DE8282F50707623 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7024692B25CA1FA7259764BF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 7C9C744C6414779B070C3F27 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 219F74776F723334228838F9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0C3B15681CF539CA3CC139DD /* testjoystick.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6F3800711E362B6C7D807662 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0CC915BF634B54F600480455 /* PBXContainerItemProxy */; + }; + 127B4E02081355961B21224F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 76191EFC631D36381C9717E0 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 62F2238176CC4DAA7F3979F0 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Debug Universal"; + }; + 024D21AC52F5635D0E9112B0 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Debug Native"; + }; + 70AC59A42D2765BA3F2143FD /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Release Universal"; + }; + 092F1FDF2AE72C4A3DAD605E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testjoystick"; + }; + name = "Release Native"; + }; + 1CB278856A8C2BCA1C052BC8 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 211A322721AA4916028657EE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 4184652A455149FA6BDA71CF /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 3D9E60086DAE3B44266473EF /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 68EE18787A727F925A04560F /* Build configuration list for PBXNativeTarget "testjoystick" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 62F2238176CC4DAA7F3979F0 /* Debug Universal */, + 024D21AC52F5635D0E9112B0 /* Debug Native */, + 70AC59A42D2765BA3F2143FD /* Release Universal */, + 092F1FDF2AE72C4A3DAD605E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testjoystick" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1CB278856A8C2BCA1C052BC8 /* Debug Universal */, + 211A322721AA4916028657EE /* Debug Native */, + 4184652A455149FA6BDA71CF /* Release Universal */, + 3D9E60086DAE3B44266473EF /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testkeys/testkeys.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testkeys/testkeys.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..7fb699eb9d --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testkeys/testkeys.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 4DA8581B0A7C53E96C03556D /* testkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F706DD214D27DF501C14EB6 /* testkeys.c */; }; + 2FFF31A0196B5A3C5332393C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6351118072A672A26EB73B87 /* AudioToolbox.framework */; }; + 2EC4789D44AE18192829504D /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1EAA4FFC29C60E6D2B1F2E2F /* AudioUnit.framework */; }; + 31D744C24BC8645A560D071A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C047D996F284DAC578A297A /* Cocoa.framework */; }; + 37DA616365771F1E78C43FD3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 650164F7187B4307026602FB /* CoreAudio.framework */; }; + 117C249E05BD45375D0F2258 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38CD4A94444C09BE487C493E /* IOKit.framework */; }; + 2B2C00F5670B0C52053A60C9 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76BE5C3B28353CD972F2735E /* Carbon.framework */; }; + 6A200DEA22EC50FB369F3B9A /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57F47C96019E52596A543FD3 /* ForceFeedback.framework */; }; + 158F79494D65297223DE77EC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C77462947EE01E71C0262D9 /* CoreFoundation.framework */; }; + 34022ECA0B42535D320D028D /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 496E0F3247EE5CB63DED5434 /* OpenGL.framework */; }; + 449F571D5F4746E50900034B /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F465A823B8F66D0644D1F7B /* libSDL2main.a */; }; + 3CD347724C6E09F20DEE1F9A /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D652C632B4630697E6B4DC6 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5525725142D342A718BB47F0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 663876E3365D144D0A172182 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 6FD7167D733D378A697F17C6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 663876E3365D144D0A172182 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 57A7543F77245DDD600C62CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 599E52DD2B4D6F1618165507 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 7FAE06FB7B0E61DA59AF7678 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 599E52DD2B4D6F1618165507 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5F706DD214D27DF501C14EB6 /* testkeys.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testkeys.c"; path = "../../../../../test/testkeys.c"; sourceTree = ""; }; + 6351118072A672A26EB73B87 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 1EAA4FFC29C60E6D2B1F2E2F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 7C047D996F284DAC578A297A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 650164F7187B4307026602FB /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 38CD4A94444C09BE487C493E /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 76BE5C3B28353CD972F2735E /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 57F47C96019E52596A543FD3 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3C77462947EE01E71C0262D9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 496E0F3247EE5CB63DED5434 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 125E670F2EF6388760084741 /* testkeys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testkeys"; path = "testkeys"; sourceTree = BUILT_PRODUCTS_DIR; }; + 663876E3365D144D0A172182 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 599E52DD2B4D6F1618165507 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3CDF672F5B3714DA1C9B3A40 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2FFF31A0196B5A3C5332393C /* AudioToolbox.framework in Frameworks */, + 2EC4789D44AE18192829504D /* AudioUnit.framework in Frameworks */, + 31D744C24BC8645A560D071A /* Cocoa.framework in Frameworks */, + 37DA616365771F1E78C43FD3 /* CoreAudio.framework in Frameworks */, + 117C249E05BD45375D0F2258 /* IOKit.framework in Frameworks */, + 2B2C00F5670B0C52053A60C9 /* Carbon.framework in Frameworks */, + 6A200DEA22EC50FB369F3B9A /* ForceFeedback.framework in Frameworks */, + 158F79494D65297223DE77EC /* CoreFoundation.framework in Frameworks */, + 34022ECA0B42535D320D028D /* OpenGL.framework in Frameworks */, + 449F571D5F4746E50900034B /* libSDL2main.a in Frameworks */, + 3CD347724C6E09F20DEE1F9A /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 752048645A2C214960904451 /* testkeys */ = { + isa = PBXGroup; + children = ( + 471E06C672790ADE23244098 /* test */, + 01192A413E6D133854EF4C9D /* Frameworks */, + 25DE3A0F55DF524B71FC5DFC /* Products */, + 59497732228618F656124CE3 /* Projects */, + ); + name = "testkeys"; + sourceTree = ""; + }; + 471E06C672790ADE23244098 /* test */ = { + isa = PBXGroup; + children = ( + 5F706DD214D27DF501C14EB6 /* testkeys.c */, + ); + name = "test"; + sourceTree = ""; + }; + 01192A413E6D133854EF4C9D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6351118072A672A26EB73B87 /* AudioToolbox.framework */, + 1EAA4FFC29C60E6D2B1F2E2F /* AudioUnit.framework */, + 7C047D996F284DAC578A297A /* Cocoa.framework */, + 650164F7187B4307026602FB /* CoreAudio.framework */, + 38CD4A94444C09BE487C493E /* IOKit.framework */, + 76BE5C3B28353CD972F2735E /* Carbon.framework */, + 57F47C96019E52596A543FD3 /* ForceFeedback.framework */, + 3C77462947EE01E71C0262D9 /* CoreFoundation.framework */, + 496E0F3247EE5CB63DED5434 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 25DE3A0F55DF524B71FC5DFC /* Products */ = { + isa = PBXGroup; + children = ( + 125E670F2EF6388760084741 /* testkeys */, + ); + name = "Products"; + sourceTree = ""; + }; + 59497732228618F656124CE3 /* Projects */ = { + isa = PBXGroup; + children = ( + 663876E3365D144D0A172182 /* SDL2main.xcodeproj */, + 599E52DD2B4D6F1618165507 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 09F6276A3236377D09B0276A /* Products */ = { + isa = PBXGroup; + children = ( + 7F465A823B8F66D0644D1F7B /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 6E4236AF44D25A4F26447187 /* Products */ = { + isa = PBXGroup; + children = ( + 6D652C632B4630697E6B4DC6 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 08B745F63B373A742F274D82 /* testkeys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5605225A5A55358807E35C1C /* Build configuration list for PBXNativeTarget "testkeys" */; + buildPhases = ( + 35C741431D8A550C305F53F2 /* Resources */, + 421901F72356766B6C7F2112 /* Sources */, + 3CDF672F5B3714DA1C9B3A40 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 7FFF7277765562D4517F2845 /* PBXTargetDependency */, + 66C72485189A46F447046CA1 /* PBXTargetDependency */, + ); + name = "testkeys"; + productInstallPath = "$(HOME)/bin"; + productName = "testkeys"; + productReference = 125E670F2EF6388760084741 /* testkeys */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testkeys" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 752048645A2C214960904451 /* testkeys */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 09F6276A3236377D09B0276A /* Products */; + ProjectRef = 663876E3365D144D0A172182 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 6E4236AF44D25A4F26447187 /* Products */; + ProjectRef = 599E52DD2B4D6F1618165507 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 08B745F63B373A742F274D82 /* testkeys */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 7F465A823B8F66D0644D1F7B /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5525725142D342A718BB47F0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6D652C632B4630697E6B4DC6 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 57A7543F77245DDD600C62CB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 35C741431D8A550C305F53F2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 421901F72356766B6C7F2112 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4DA8581B0A7C53E96C03556D /* testkeys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 7FFF7277765562D4517F2845 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 6FD7167D733D378A697F17C6 /* PBXContainerItemProxy */; + }; + 66C72485189A46F447046CA1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 7FAE06FB7B0E61DA59AF7678 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 533C23E725B1284F671E1EDA /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Debug Universal"; + }; + 2927476F5E3F31EF7028564D /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Debug Native"; + }; + 197F04671FC35D7A1DC70A0B /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Release Universal"; + }; + 1B022EA030B142EE3BCB2FF9 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testkeys"; + }; + name = "Release Native"; + }; + 332366361A6830EE594E2AA8 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 6F1F0C12245017BB18442236 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 592856F04D5330C646106701 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0E4A335B4D9C752967CC3A7B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5605225A5A55358807E35C1C /* Build configuration list for PBXNativeTarget "testkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 533C23E725B1284F671E1EDA /* Debug Universal */, + 2927476F5E3F31EF7028564D /* Debug Native */, + 197F04671FC35D7A1DC70A0B /* Release Universal */, + 1B022EA030B142EE3BCB2FF9 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 332366361A6830EE594E2AA8 /* Debug Universal */, + 6F1F0C12245017BB18442236 /* Debug Native */, + 592856F04D5330C646106701 /* Release Universal */, + 0E4A335B4D9C752967CC3A7B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testloadso/testloadso.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testloadso/testloadso.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..7c5bdb3cfc --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testloadso/testloadso.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 675F2CA916DA7C3C032C3F70 /* testloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 32B85C9144642EF10B2A1E64 /* testloadso.c */; }; + 65E07B025319241F0D962222 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 704B06EA1084514E72465EC1 /* AudioToolbox.framework */; }; + 283A2FB343C61B5529546331 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 01DC3ECF32C531C12FF465EE /* AudioUnit.framework */; }; + 2DA26E0920675D43189920A2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 335463942EAF71CE29714330 /* Cocoa.framework */; }; + 4004622A4F0E5B84596E6A2B /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D2B18410B6057CE25F860D3 /* CoreAudio.framework */; }; + 1D9B2DF26E8C5F137A4F7681 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DAA4596177E5C87598479DB /* IOKit.framework */; }; + 69C541291AFC22604DDD6B3A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2545758C7A2878281F863BE9 /* Carbon.framework */; }; + 049A1AE677477B8E326E5785 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 342725A2671A739F55731C6A /* ForceFeedback.framework */; }; + 1F986CEB5BF06E5B1C755C56 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 150515A452E56A8D099A78C6 /* CoreFoundation.framework */; }; + 062F100568181EF02F5A6F11 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16DE51F007B93EB03EB43EC7 /* OpenGL.framework */; }; + 23241F8709F74BEB3FB677C9 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E2A4AC358FF047756347CA6 /* libSDL2main.a */; }; + 48E6195D41D116AD4B5C4592 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BDC7F4271875C68563342DF /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 536309967083618F7BD3787C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 73541FC8337D02E922714D3E /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 5475613A633363582E543E4A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 73541FC8337D02E922714D3E /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 4CAD20E12CE863DE130413F1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 69F7681A28D4137056353384 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 5ED454B4280D757E415D586A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 69F7681A28D4137056353384 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 32B85C9144642EF10B2A1E64 /* testloadso.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testloadso.c"; path = "../../../../../test/testloadso.c"; sourceTree = ""; }; + 704B06EA1084514E72465EC1 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 01DC3ECF32C531C12FF465EE /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 335463942EAF71CE29714330 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0D2B18410B6057CE25F860D3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6DAA4596177E5C87598479DB /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 2545758C7A2878281F863BE9 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 342725A2671A739F55731C6A /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 150515A452E56A8D099A78C6 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 16DE51F007B93EB03EB43EC7 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 531079513A13548502E25ED8 /* testloadso */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testloadso"; path = "testloadso"; sourceTree = BUILT_PRODUCTS_DIR; }; + 73541FC8337D02E922714D3E /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 69F7681A28D4137056353384 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2363634379F627615CDC1EAD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 65E07B025319241F0D962222 /* AudioToolbox.framework in Frameworks */, + 283A2FB343C61B5529546331 /* AudioUnit.framework in Frameworks */, + 2DA26E0920675D43189920A2 /* Cocoa.framework in Frameworks */, + 4004622A4F0E5B84596E6A2B /* CoreAudio.framework in Frameworks */, + 1D9B2DF26E8C5F137A4F7681 /* IOKit.framework in Frameworks */, + 69C541291AFC22604DDD6B3A /* Carbon.framework in Frameworks */, + 049A1AE677477B8E326E5785 /* ForceFeedback.framework in Frameworks */, + 1F986CEB5BF06E5B1C755C56 /* CoreFoundation.framework in Frameworks */, + 062F100568181EF02F5A6F11 /* OpenGL.framework in Frameworks */, + 23241F8709F74BEB3FB677C9 /* libSDL2main.a in Frameworks */, + 48E6195D41D116AD4B5C4592 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 333A601E54FF648A4146191A /* testloadso */ = { + isa = PBXGroup; + children = ( + 05045C1C4021369F31D67D4E /* test */, + 6F137E16024736972D7858E6 /* Frameworks */, + 4B3C53EF75A52B1703DF47D1 /* Products */, + 6CB8545C0BE05048370560A6 /* Projects */, + ); + name = "testloadso"; + sourceTree = ""; + }; + 05045C1C4021369F31D67D4E /* test */ = { + isa = PBXGroup; + children = ( + 32B85C9144642EF10B2A1E64 /* testloadso.c */, + ); + name = "test"; + sourceTree = ""; + }; + 6F137E16024736972D7858E6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 704B06EA1084514E72465EC1 /* AudioToolbox.framework */, + 01DC3ECF32C531C12FF465EE /* AudioUnit.framework */, + 335463942EAF71CE29714330 /* Cocoa.framework */, + 0D2B18410B6057CE25F860D3 /* CoreAudio.framework */, + 6DAA4596177E5C87598479DB /* IOKit.framework */, + 2545758C7A2878281F863BE9 /* Carbon.framework */, + 342725A2671A739F55731C6A /* ForceFeedback.framework */, + 150515A452E56A8D099A78C6 /* CoreFoundation.framework */, + 16DE51F007B93EB03EB43EC7 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 4B3C53EF75A52B1703DF47D1 /* Products */ = { + isa = PBXGroup; + children = ( + 531079513A13548502E25ED8 /* testloadso */, + ); + name = "Products"; + sourceTree = ""; + }; + 6CB8545C0BE05048370560A6 /* Projects */ = { + isa = PBXGroup; + children = ( + 73541FC8337D02E922714D3E /* SDL2main.xcodeproj */, + 69F7681A28D4137056353384 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0A142D3D2C5076C106A07C4D /* Products */ = { + isa = PBXGroup; + children = ( + 4E2A4AC358FF047756347CA6 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 098A543022881A824E783AB1 /* Products */ = { + isa = PBXGroup; + children = ( + 3BDC7F4271875C68563342DF /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 61B07FC63D83695771FE0D01 /* testloadso */ = { + isa = PBXNativeTarget; + buildConfigurationList = 794A046A04B6738725CF6838 /* Build configuration list for PBXNativeTarget "testloadso" */; + buildPhases = ( + 39DC3E662F376B6155232104 /* Resources */, + 27A76E07432162BB66CA167F /* Sources */, + 2363634379F627615CDC1EAD /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0BEF101627C91E4C36A855B3 /* PBXTargetDependency */, + 1F8704651F1B2A846BA9522D /* PBXTargetDependency */, + ); + name = "testloadso"; + productInstallPath = "$(HOME)/bin"; + productName = "testloadso"; + productReference = 531079513A13548502E25ED8 /* testloadso */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testloadso" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 333A601E54FF648A4146191A /* testloadso */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0A142D3D2C5076C106A07C4D /* Products */; + ProjectRef = 73541FC8337D02E922714D3E /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 098A543022881A824E783AB1 /* Products */; + ProjectRef = 69F7681A28D4137056353384 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 61B07FC63D83695771FE0D01 /* testloadso */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 4E2A4AC358FF047756347CA6 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 536309967083618F7BD3787C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3BDC7F4271875C68563342DF /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 4CAD20E12CE863DE130413F1 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 39DC3E662F376B6155232104 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 27A76E07432162BB66CA167F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 675F2CA916DA7C3C032C3F70 /* testloadso.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 0BEF101627C91E4C36A855B3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5475613A633363582E543E4A /* PBXContainerItemProxy */; + }; + 1F8704651F1B2A846BA9522D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 5ED454B4280D757E415D586A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 79B1708E276152A4146E5B78 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Debug Universal"; + }; + 0FF601D35A25749446BB405F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Debug Native"; + }; + 5CC925AF3E036DB47DCA6F2F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Release Universal"; + }; + 57E445787D9548AF09783FED /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testloadso"; + }; + name = "Release Native"; + }; + 307F778D66D80D3E0DA37B01 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 4DC574BC7BD43DC413E952A5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 7FC02954554609FD74546607 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0F133ADF3DFF69DF400F3F34 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 794A046A04B6738725CF6838 /* Build configuration list for PBXNativeTarget "testloadso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79B1708E276152A4146E5B78 /* Debug Universal */, + 0FF601D35A25749446BB405F /* Debug Native */, + 5CC925AF3E036DB47DCA6F2F /* Release Universal */, + 57E445787D9548AF09783FED /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testloadso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 307F778D66D80D3E0DA37B01 /* Debug Universal */, + 4DC574BC7BD43DC413E952A5 /* Debug Native */, + 7FC02954554609FD74546607 /* Release Universal */, + 0F133ADF3DFF69DF400F3F34 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testlock/testlock.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testlock/testlock.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..865a305f04 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testlock/testlock.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 464D099409B56A025D07370F /* testlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 303629951FED2A5765724870 /* testlock.c */; }; + 052351CC4F9E4B6E44250C3F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49BB451B295D277B7D765BC3 /* AudioToolbox.framework */; }; + 1C8656CF46240D9B446F58A3 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AE3122E28F11EE42BFC3028 /* AudioUnit.framework */; }; + 240C41522E7932B808AC70A5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A1C299D2BDB3B314F6B1029 /* Cocoa.framework */; }; + 04315780299C5DAC5D191450 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1435448374E91242508C1DFD /* CoreAudio.framework */; }; + 5A950F951A1906E67F99227C /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E207F6807A168120A05078F /* IOKit.framework */; }; + 55A61235013967C8177E629B /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 27FD6CD47174045B0C5139D9 /* Carbon.framework */; }; + 797644D711B31EF85DF64989 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DC43A183395100008F80EC6 /* ForceFeedback.framework */; }; + 096227602F74035F6AA86036 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AF862177E6D59C2743908B0 /* CoreFoundation.framework */; }; + 71925C9F0ABF1EF25BB43581 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 023F0A5E5AAC54C42D507C57 /* OpenGL.framework */; }; + 3BAA31AD0D3550A8471607A7 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 33890A8462A974BE26B27B2C /* libSDL2main.a */; }; + 5DFB41BC5ED63FF91FB530AA /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E2B068C783248C4409B30B1 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 17CE07D20ECC04C81F154F95 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6177061D7C0E3B8132F64583 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 5650341357E0668F5BFC25A1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6177061D7C0E3B8132F64583 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 244B3F5457477A9E34B239FE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6865724F21A644CE4DE46685 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 06771B79538D0B3D58770EE9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6865724F21A644CE4DE46685 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 303629951FED2A5765724870 /* testlock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testlock.c"; path = "../../../../../test/testlock.c"; sourceTree = ""; }; + 49BB451B295D277B7D765BC3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 3AE3122E28F11EE42BFC3028 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 4A1C299D2BDB3B314F6B1029 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 1435448374E91242508C1DFD /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1E207F6807A168120A05078F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 27FD6CD47174045B0C5139D9 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 4DC43A183395100008F80EC6 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 7AF862177E6D59C2743908B0 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 023F0A5E5AAC54C42D507C57 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 041A4BDD31554D3571F92007 /* testlock */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testlock"; path = "testlock"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6177061D7C0E3B8132F64583 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6865724F21A644CE4DE46685 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 298D01234D8636BD453C7009 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 052351CC4F9E4B6E44250C3F /* AudioToolbox.framework in Frameworks */, + 1C8656CF46240D9B446F58A3 /* AudioUnit.framework in Frameworks */, + 240C41522E7932B808AC70A5 /* Cocoa.framework in Frameworks */, + 04315780299C5DAC5D191450 /* CoreAudio.framework in Frameworks */, + 5A950F951A1906E67F99227C /* IOKit.framework in Frameworks */, + 55A61235013967C8177E629B /* Carbon.framework in Frameworks */, + 797644D711B31EF85DF64989 /* ForceFeedback.framework in Frameworks */, + 096227602F74035F6AA86036 /* CoreFoundation.framework in Frameworks */, + 71925C9F0ABF1EF25BB43581 /* OpenGL.framework in Frameworks */, + 3BAA31AD0D3550A8471607A7 /* libSDL2main.a in Frameworks */, + 5DFB41BC5ED63FF91FB530AA /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 681956225A8E3A216AC3441F /* testlock */ = { + isa = PBXGroup; + children = ( + 74E92D4B384360A84FDB3C8C /* test */, + 7A3825626F257B511FB1480C /* Frameworks */, + 3B0349C5321331C46F244294 /* Products */, + 0A166AA10BAD117458CE5FCC /* Projects */, + ); + name = "testlock"; + sourceTree = ""; + }; + 74E92D4B384360A84FDB3C8C /* test */ = { + isa = PBXGroup; + children = ( + 303629951FED2A5765724870 /* testlock.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7A3825626F257B511FB1480C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 49BB451B295D277B7D765BC3 /* AudioToolbox.framework */, + 3AE3122E28F11EE42BFC3028 /* AudioUnit.framework */, + 4A1C299D2BDB3B314F6B1029 /* Cocoa.framework */, + 1435448374E91242508C1DFD /* CoreAudio.framework */, + 1E207F6807A168120A05078F /* IOKit.framework */, + 27FD6CD47174045B0C5139D9 /* Carbon.framework */, + 4DC43A183395100008F80EC6 /* ForceFeedback.framework */, + 7AF862177E6D59C2743908B0 /* CoreFoundation.framework */, + 023F0A5E5AAC54C42D507C57 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 3B0349C5321331C46F244294 /* Products */ = { + isa = PBXGroup; + children = ( + 041A4BDD31554D3571F92007 /* testlock */, + ); + name = "Products"; + sourceTree = ""; + }; + 0A166AA10BAD117458CE5FCC /* Projects */ = { + isa = PBXGroup; + children = ( + 6177061D7C0E3B8132F64583 /* SDL2main.xcodeproj */, + 6865724F21A644CE4DE46685 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7903382F245B66083BBE3859 /* Products */ = { + isa = PBXGroup; + children = ( + 33890A8462A974BE26B27B2C /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 302212A05009225D3FCE6DE6 /* Products */ = { + isa = PBXGroup; + children = ( + 3E2B068C783248C4409B30B1 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 40470667040E6F8C50D50012 /* testlock */ = { + isa = PBXNativeTarget; + buildConfigurationList = 27716FD716A9432C32F25B23 /* Build configuration list for PBXNativeTarget "testlock" */; + buildPhases = ( + 692E549A7E3358384E3733B2 /* Resources */, + 237419BA2D383DF673523425 /* Sources */, + 298D01234D8636BD453C7009 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0A6521E6190523DB1C8C4108 /* PBXTargetDependency */, + 770F7CA47BC4167F06A21F89 /* PBXTargetDependency */, + ); + name = "testlock"; + productInstallPath = "$(HOME)/bin"; + productName = "testlock"; + productReference = 041A4BDD31554D3571F92007 /* testlock */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testlock" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 681956225A8E3A216AC3441F /* testlock */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7903382F245B66083BBE3859 /* Products */; + ProjectRef = 6177061D7C0E3B8132F64583 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 302212A05009225D3FCE6DE6 /* Products */; + ProjectRef = 6865724F21A644CE4DE46685 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 40470667040E6F8C50D50012 /* testlock */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 33890A8462A974BE26B27B2C /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 17CE07D20ECC04C81F154F95 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3E2B068C783248C4409B30B1 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 244B3F5457477A9E34B239FE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 692E549A7E3358384E3733B2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 237419BA2D383DF673523425 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 464D099409B56A025D07370F /* testlock.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 0A6521E6190523DB1C8C4108 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5650341357E0668F5BFC25A1 /* PBXContainerItemProxy */; + }; + 770F7CA47BC4167F06A21F89 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 06771B79538D0B3D58770EE9 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 325E4A39751029CC29641169 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Debug Universal"; + }; + 69C341AE0DA219DD15903D1A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Debug Native"; + }; + 555606CB31C44C8A2B111D01 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Release Universal"; + }; + 584C18712BE157D03A7D7213 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testlock"; + }; + name = "Release Native"; + }; + 30410A022775752756B93570 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 28BD44C64254571D3A1372F5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 42116BFB40A468EF3850457E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6232789A0320412B262D7583 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 27716FD716A9432C32F25B23 /* Build configuration list for PBXNativeTarget "testlock" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 325E4A39751029CC29641169 /* Debug Universal */, + 69C341AE0DA219DD15903D1A /* Debug Native */, + 555606CB31C44C8A2B111D01 /* Release Universal */, + 584C18712BE157D03A7D7213 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testlock" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 30410A022775752756B93570 /* Debug Universal */, + 28BD44C64254571D3A1372F5 /* Debug Native */, + 42116BFB40A468EF3850457E /* Release Universal */, + 6232789A0320412B262D7583 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testmessage/testmessage.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testmessage/testmessage.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..f6f8cb3407 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testmessage/testmessage.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5767529A3522703629040688 /* testmessage.c in Sources */ = {isa = PBXBuildFile; fileRef = 5DD97010395037282F665AC7 /* testmessage.c */; }; + 64D6581375BA45B03050786A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 099528AA5EC7195A0C2F07C8 /* AudioToolbox.framework */; }; + 449F286F1B840CFD37674D78 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08335297585E0D73055F48E7 /* AudioUnit.framework */; }; + 491B18A727FA0F4B3E825BD6 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35E4352875EF2AD5378A6CED /* Cocoa.framework */; }; + 21835E642D02791F0BC34864 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FAB62DA6869530B17F6431C /* CoreAudio.framework */; }; + 1099586A26E4497937283F25 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51DF3C17483B4F064A1E7CF0 /* IOKit.framework */; }; + 3DDA6F0D7C7C60B32B2654F6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EB146ED0AC2064011287456 /* Carbon.framework */; }; + 719D0ADB38901C5C77E17BCB /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7F5D45CA5E0270A21C5262E6 /* ForceFeedback.framework */; }; + 0ADF47A140B4144222C81266 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64DE6C0B73DF4EE142DE190E /* CoreFoundation.framework */; }; + 2DD50C1D71951EF04CD56180 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1137428873C74F5100FC3064 /* OpenGL.framework */; }; + 4F0563030DAF1D6E35A7732B /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 31A7773A0CCB75C4561B378A /* libSDL2main.a */; }; + 3AA41962215E2B5572E72112 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BA0171E5FA61B1B0FD52393 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2BDD56E7777C106C52E40F67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15C221FF7E40485036615184 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 6C53574F060D7AA923AE34F2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 15C221FF7E40485036615184 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 4C3209221978380E2599132C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 25B44CAC5E4B36DF7B0A066E /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 2E4879CC5CC510136E9D2205 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 25B44CAC5E4B36DF7B0A066E /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5DD97010395037282F665AC7 /* testmessage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testmessage.c"; path = "../../../../../test/testmessage.c"; sourceTree = ""; }; + 099528AA5EC7195A0C2F07C8 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 08335297585E0D73055F48E7 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 35E4352875EF2AD5378A6CED /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5FAB62DA6869530B17F6431C /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 51DF3C17483B4F064A1E7CF0 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 4EB146ED0AC2064011287456 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 7F5D45CA5E0270A21C5262E6 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 64DE6C0B73DF4EE142DE190E /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 1137428873C74F5100FC3064 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 749D7EBC738966C459E16E13 /* testmessage */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testmessage"; path = "testmessage"; sourceTree = BUILT_PRODUCTS_DIR; }; + 15C221FF7E40485036615184 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 25B44CAC5E4B36DF7B0A066E /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0A9A0819616F6BE058270798 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 64D6581375BA45B03050786A /* AudioToolbox.framework in Frameworks */, + 449F286F1B840CFD37674D78 /* AudioUnit.framework in Frameworks */, + 491B18A727FA0F4B3E825BD6 /* Cocoa.framework in Frameworks */, + 21835E642D02791F0BC34864 /* CoreAudio.framework in Frameworks */, + 1099586A26E4497937283F25 /* IOKit.framework in Frameworks */, + 3DDA6F0D7C7C60B32B2654F6 /* Carbon.framework in Frameworks */, + 719D0ADB38901C5C77E17BCB /* ForceFeedback.framework in Frameworks */, + 0ADF47A140B4144222C81266 /* CoreFoundation.framework in Frameworks */, + 2DD50C1D71951EF04CD56180 /* OpenGL.framework in Frameworks */, + 4F0563030DAF1D6E35A7732B /* libSDL2main.a in Frameworks */, + 3AA41962215E2B5572E72112 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5FC50ADD454020E5323A2AA0 /* testmessage */ = { + isa = PBXGroup; + children = ( + 0B05206B66ED595F1D7C4403 /* test */, + 530C55305C124BD1075E3E52 /* Frameworks */, + 454567E918C06F0C3AC71891 /* Products */, + 178D669B655E018F09FE1253 /* Projects */, + ); + name = "testmessage"; + sourceTree = ""; + }; + 0B05206B66ED595F1D7C4403 /* test */ = { + isa = PBXGroup; + children = ( + 5DD97010395037282F665AC7 /* testmessage.c */, + ); + name = "test"; + sourceTree = ""; + }; + 530C55305C124BD1075E3E52 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 099528AA5EC7195A0C2F07C8 /* AudioToolbox.framework */, + 08335297585E0D73055F48E7 /* AudioUnit.framework */, + 35E4352875EF2AD5378A6CED /* Cocoa.framework */, + 5FAB62DA6869530B17F6431C /* CoreAudio.framework */, + 51DF3C17483B4F064A1E7CF0 /* IOKit.framework */, + 4EB146ED0AC2064011287456 /* Carbon.framework */, + 7F5D45CA5E0270A21C5262E6 /* ForceFeedback.framework */, + 64DE6C0B73DF4EE142DE190E /* CoreFoundation.framework */, + 1137428873C74F5100FC3064 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 454567E918C06F0C3AC71891 /* Products */ = { + isa = PBXGroup; + children = ( + 749D7EBC738966C459E16E13 /* testmessage */, + ); + name = "Products"; + sourceTree = ""; + }; + 178D669B655E018F09FE1253 /* Projects */ = { + isa = PBXGroup; + children = ( + 15C221FF7E40485036615184 /* SDL2main.xcodeproj */, + 25B44CAC5E4B36DF7B0A066E /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 3E4272E8119778BF69B661A9 /* Products */ = { + isa = PBXGroup; + children = ( + 31A7773A0CCB75C4561B378A /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 704A169C1BC120CA306E3371 /* Products */ = { + isa = PBXGroup; + children = ( + 5BA0171E5FA61B1B0FD52393 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3B9021E41CC208EF36BD5070 /* testmessage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D8E5CC921A56E375F6364E0 /* Build configuration list for PBXNativeTarget "testmessage" */; + buildPhases = ( + 57C15BBC45BF101F65EE2DC8 /* Resources */, + 5FF62E3536DA423473AA21B7 /* Sources */, + 0A9A0819616F6BE058270798 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 2DDE4A26235877E376223910 /* PBXTargetDependency */, + 288D78E71FA72ED52D681195 /* PBXTargetDependency */, + ); + name = "testmessage"; + productInstallPath = "$(HOME)/bin"; + productName = "testmessage"; + productReference = 749D7EBC738966C459E16E13 /* testmessage */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmessage" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5FC50ADD454020E5323A2AA0 /* testmessage */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 3E4272E8119778BF69B661A9 /* Products */; + ProjectRef = 15C221FF7E40485036615184 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 704A169C1BC120CA306E3371 /* Products */; + ProjectRef = 25B44CAC5E4B36DF7B0A066E /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 3B9021E41CC208EF36BD5070 /* testmessage */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 31A7773A0CCB75C4561B378A /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2BDD56E7777C106C52E40F67 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5BA0171E5FA61B1B0FD52393 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 4C3209221978380E2599132C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 57C15BBC45BF101F65EE2DC8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 5FF62E3536DA423473AA21B7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5767529A3522703629040688 /* testmessage.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 2DDE4A26235877E376223910 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 6C53574F060D7AA923AE34F2 /* PBXContainerItemProxy */; + }; + 288D78E71FA72ED52D681195 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 2E4879CC5CC510136E9D2205 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 22126C6017637EF3422B2F90 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Debug Universal"; + }; + 182D5B4312F07E0A60F700F4 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Debug Native"; + }; + 0C0F487B336933774FD41CA7 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Release Universal"; + }; + 372E5E696BD86FB56EAB426F /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmessage"; + }; + name = "Release Native"; + }; + 45BE7A05094F5A2676C24204 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 37D05FA50393590C3018123D /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 34AF5D817D2E6001113D4EFE /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0886221F4C3876B5245A3E7B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2D8E5CC921A56E375F6364E0 /* Build configuration list for PBXNativeTarget "testmessage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 22126C6017637EF3422B2F90 /* Debug Universal */, + 182D5B4312F07E0A60F700F4 /* Debug Native */, + 0C0F487B336933774FD41CA7 /* Release Universal */, + 372E5E696BD86FB56EAB426F /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmessage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 45BE7A05094F5A2676C24204 /* Debug Universal */, + 37D05FA50393590C3018123D /* Debug Native */, + 34AF5D817D2E6001113D4EFE /* Release Universal */, + 0886221F4C3876B5245A3E7B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..50fc46f028 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testmultiaudio/testmultiaudio.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5B16080A7C1639D0122E149C /* testmultiaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B5A3EE66EBC7F8F3A6B5D64 /* testmultiaudio.c */; }; + 5772338C5EFB4F651F573453 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A6B3F9A2E426F67589949DD /* AudioToolbox.framework */; }; + 01F86ABF2AA954B61B9C5C7C /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4868428E0A5642B04D6B492C /* AudioUnit.framework */; }; + 37E201550652085D2AAF75D0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FD918D55698412D159B108D /* Cocoa.framework */; }; + 28D202667CC70AFE67762516 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5787692068CA6130171112C8 /* CoreAudio.framework */; }; + 684A6E04086A0CE3270D55E1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70C92EFF1F694BD107806CC8 /* IOKit.framework */; }; + 0F7C4868241B0F8453903245 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A3B08A545610DBF084E408B /* Carbon.framework */; }; + 47BB5DC56AA872264C523B06 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52767C257ADD75A4103C1475 /* ForceFeedback.framework */; }; + 483C7F9D36612C364A087BD0 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B833A9D3CD039247F914826 /* CoreFoundation.framework */; }; + 689143D979AB73DA00427A3E /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21922A7E5D1C5D220B781600 /* OpenGL.framework */; }; + 146A510744AA0C8045C8088F /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 75F96D1178CE3EDA5EDD3846 /* libSDL2main.a */; }; + 57992D096A11314075B9756B /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 35A027E7442969F6554C1C90 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 25D96D504D7B66983FA7732A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4B474D1E086F3B2A74B924D2 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 0B8763CC23F268B568D10AD5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4B474D1E086F3B2A74B924D2 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 3C6322AD183B6E8B7B532BF3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7C1E4C9B6AB6743226ED50AB /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 04BE0F9057D644014857532E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7C1E4C9B6AB6743226ED50AB /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3B5A3EE66EBC7F8F3A6B5D64 /* testmultiaudio.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testmultiaudio.c"; path = "../../../../../test/testmultiaudio.c"; sourceTree = ""; }; + 6A6B3F9A2E426F67589949DD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4868428E0A5642B04D6B492C /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 6FD918D55698412D159B108D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5787692068CA6130171112C8 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 70C92EFF1F694BD107806CC8 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3A3B08A545610DBF084E408B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 52767C257ADD75A4103C1475 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 1B833A9D3CD039247F914826 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 21922A7E5D1C5D220B781600 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 3C495F467A983F522C564E72 /* testmultiaudio */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testmultiaudio"; path = "testmultiaudio"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4B474D1E086F3B2A74B924D2 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7C1E4C9B6AB6743226ED50AB /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 487179E5445A216D1D18270C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5772338C5EFB4F651F573453 /* AudioToolbox.framework in Frameworks */, + 01F86ABF2AA954B61B9C5C7C /* AudioUnit.framework in Frameworks */, + 37E201550652085D2AAF75D0 /* Cocoa.framework in Frameworks */, + 28D202667CC70AFE67762516 /* CoreAudio.framework in Frameworks */, + 684A6E04086A0CE3270D55E1 /* IOKit.framework in Frameworks */, + 0F7C4868241B0F8453903245 /* Carbon.framework in Frameworks */, + 47BB5DC56AA872264C523B06 /* ForceFeedback.framework in Frameworks */, + 483C7F9D36612C364A087BD0 /* CoreFoundation.framework in Frameworks */, + 689143D979AB73DA00427A3E /* OpenGL.framework in Frameworks */, + 146A510744AA0C8045C8088F /* libSDL2main.a in Frameworks */, + 57992D096A11314075B9756B /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 404C48F977DC231207427E24 /* testmultiaudio */ = { + isa = PBXGroup; + children = ( + 720E022104FA4A154B7441E5 /* test */, + 13F027D51E5C4A5403494B6F /* Frameworks */, + 2CCC173728DF48C46C2D0B91 /* Products */, + 61F5554E2911207B21EF715B /* Projects */, + ); + name = "testmultiaudio"; + sourceTree = ""; + }; + 720E022104FA4A154B7441E5 /* test */ = { + isa = PBXGroup; + children = ( + 3B5A3EE66EBC7F8F3A6B5D64 /* testmultiaudio.c */, + ); + name = "test"; + sourceTree = ""; + }; + 13F027D51E5C4A5403494B6F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6A6B3F9A2E426F67589949DD /* AudioToolbox.framework */, + 4868428E0A5642B04D6B492C /* AudioUnit.framework */, + 6FD918D55698412D159B108D /* Cocoa.framework */, + 5787692068CA6130171112C8 /* CoreAudio.framework */, + 70C92EFF1F694BD107806CC8 /* IOKit.framework */, + 3A3B08A545610DBF084E408B /* Carbon.framework */, + 52767C257ADD75A4103C1475 /* ForceFeedback.framework */, + 1B833A9D3CD039247F914826 /* CoreFoundation.framework */, + 21922A7E5D1C5D220B781600 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 2CCC173728DF48C46C2D0B91 /* Products */ = { + isa = PBXGroup; + children = ( + 3C495F467A983F522C564E72 /* testmultiaudio */, + ); + name = "Products"; + sourceTree = ""; + }; + 61F5554E2911207B21EF715B /* Projects */ = { + isa = PBXGroup; + children = ( + 4B474D1E086F3B2A74B924D2 /* SDL2main.xcodeproj */, + 7C1E4C9B6AB6743226ED50AB /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 4B18394505DC300669284470 /* Products */ = { + isa = PBXGroup; + children = ( + 75F96D1178CE3EDA5EDD3846 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 7F6F72F835212A7B0DA40F61 /* Products */ = { + isa = PBXGroup; + children = ( + 35A027E7442969F6554C1C90 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 372227EB5B7A3A7F06DA7C30 /* testmultiaudio */ = { + isa = PBXNativeTarget; + buildConfigurationList = 531546CB67084D6A12E647D2 /* Build configuration list for PBXNativeTarget "testmultiaudio" */; + buildPhases = ( + 530C4B1032FF38F3783C2BAB /* Resources */, + 22FC7141111B1D420B5D31C4 /* Sources */, + 487179E5445A216D1D18270C /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 445D66D20B9E47237D9F7BC5 /* PBXTargetDependency */, + 718A534707422EA4472F146C /* PBXTargetDependency */, + ); + name = "testmultiaudio"; + productInstallPath = "$(HOME)/bin"; + productName = "testmultiaudio"; + productReference = 3C495F467A983F522C564E72 /* testmultiaudio */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmultiaudio" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 404C48F977DC231207427E24 /* testmultiaudio */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 4B18394505DC300669284470 /* Products */; + ProjectRef = 4B474D1E086F3B2A74B924D2 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 7F6F72F835212A7B0DA40F61 /* Products */; + ProjectRef = 7C1E4C9B6AB6743226ED50AB /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 372227EB5B7A3A7F06DA7C30 /* testmultiaudio */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 75F96D1178CE3EDA5EDD3846 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 25D96D504D7B66983FA7732A /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 35A027E7442969F6554C1C90 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 3C6322AD183B6E8B7B532BF3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 530C4B1032FF38F3783C2BAB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 22FC7141111B1D420B5D31C4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5B16080A7C1639D0122E149C /* testmultiaudio.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 445D66D20B9E47237D9F7BC5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0B8763CC23F268B568D10AD5 /* PBXContainerItemProxy */; + }; + 718A534707422EA4472F146C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 04BE0F9057D644014857532E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 09B3042B4C314BEB4A8D165D /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Debug Universal"; + }; + 3A362F883090674E5BF74BDC /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Debug Native"; + }; + 12AA752761CE1CDA691B177F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Release Universal"; + }; + 068D367B7719220179E744C4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testmultiaudio"; + }; + name = "Release Native"; + }; + 3D1C34306E242527591E5BFE /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 032046F12CDE3C5B12B36365 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 418E72013DAF5C4E2B131ED0 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 26865EB574F04039749C4660 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 531546CB67084D6A12E647D2 /* Build configuration list for PBXNativeTarget "testmultiaudio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09B3042B4C314BEB4A8D165D /* Debug Universal */, + 3A362F883090674E5BF74BDC /* Debug Native */, + 12AA752761CE1CDA691B177F /* Release Universal */, + 068D367B7719220179E744C4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testmultiaudio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3D1C34306E242527591E5BFE /* Debug Universal */, + 032046F12CDE3C5B12B36365 /* Debug Native */, + 418E72013DAF5C4E2B131ED0 /* Release Universal */, + 26865EB574F04039749C4660 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testnative/testnative.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testnative/testnative.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..b9a07418b9 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testnative/testnative.xcodeproj/project.pbxproj @@ -0,0 +1,478 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 264A007914BD1542267C366B /* testnative.c in Sources */ = {isa = PBXBuildFile; fileRef = 35F05D2E1FDE45767B06523F /* testnative.c */; }; + 22EB74FE0CEA619B30FB5D5A /* testnativecocoa.m in Sources */ = {isa = PBXBuildFile; fileRef = 47545DF46201658D3BD734FA /* testnativecocoa.m */; }; + 57837B986190367E182A164F /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B9C61845D897017310A3FB4 /* AudioToolbox.framework */; }; + 45DA2BE768AA201228747960 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57F91C82576B37C86BA75D44 /* AudioUnit.framework */; }; + 5D154B8477611C2F57C83D89 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EBC6544049A4AB978626A43 /* Cocoa.framework */; }; + 596D34055B4806DB279742E6 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F193DDA5F10509225B323F7 /* CoreAudio.framework */; }; + 3624766643E10D33452250A1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A2C004B705E55E47CA775F3 /* IOKit.framework */; }; + 65A210F966501CA66F593CAD /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 107328C45E365C7133065CD0 /* Carbon.framework */; }; + 02B404F1136E512E50C8323E /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 416F5EB2177049BB247C65C5 /* ForceFeedback.framework */; }; + 21B0541332C144055FAF6A4E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26A3210E2CDE553C60B53D53 /* CoreFoundation.framework */; }; + 501A5FEE0DB9014574CC3124 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5678640055847510733E7417 /* OpenGL.framework */; }; + 4EC368F2742C047D69400C94 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 748F5F2677A22EE7542F72CE /* libSDL2main.a */; }; + 735832260D367B6469B636AF /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F1A45BF1F35025E247C7810 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 5C12261A17CE7C055DB26192 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 03C45B137CAF5FB518FF293D /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 66C7140646EB22572B652F37 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 03C45B137CAF5FB518FF293D /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 005826BF56063F5B7E6F5A0C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E3D64ED39CC28C012BC257B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 733B32C55CFE45D55C6C53B5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7E3D64ED39CC28C012BC257B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 35F05D2E1FDE45767B06523F /* testnative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testnative.c"; path = "../../../../../test/testnative.c"; sourceTree = ""; }; + 6B3C62E933A5301E10121FC9 /* testnative.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "testnative.h"; path = "../../../../../test/testnative.h"; sourceTree = ""; }; + 47545DF46201658D3BD734FA /* testnativecocoa.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "testnativecocoa.m"; path = "../../../../../test/testnativecocoa.m"; sourceTree = ""; }; + 5B9C61845D897017310A3FB4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 57F91C82576B37C86BA75D44 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3EBC6544049A4AB978626A43 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 0F193DDA5F10509225B323F7 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 0A2C004B705E55E47CA775F3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 107328C45E365C7133065CD0 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 416F5EB2177049BB247C65C5 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 26A3210E2CDE553C60B53D53 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 5678640055847510733E7417 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2275520F5E5278701654067D /* testnative */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testnative"; path = "testnative"; sourceTree = BUILT_PRODUCTS_DIR; }; + 03C45B137CAF5FB518FF293D /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 7E3D64ED39CC28C012BC257B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2C3103A1556F143F538D6BD0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 57837B986190367E182A164F /* AudioToolbox.framework in Frameworks */, + 45DA2BE768AA201228747960 /* AudioUnit.framework in Frameworks */, + 5D154B8477611C2F57C83D89 /* Cocoa.framework in Frameworks */, + 596D34055B4806DB279742E6 /* CoreAudio.framework in Frameworks */, + 3624766643E10D33452250A1 /* IOKit.framework in Frameworks */, + 65A210F966501CA66F593CAD /* Carbon.framework in Frameworks */, + 02B404F1136E512E50C8323E /* ForceFeedback.framework in Frameworks */, + 21B0541332C144055FAF6A4E /* CoreFoundation.framework in Frameworks */, + 501A5FEE0DB9014574CC3124 /* OpenGL.framework in Frameworks */, + 4EC368F2742C047D69400C94 /* libSDL2main.a in Frameworks */, + 735832260D367B6469B636AF /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5D23300B2D3D3A6076EC1BC1 /* testnative */ = { + isa = PBXGroup; + children = ( + 556240E1795C0D34798D1B48 /* test */, + 6D4418531291078F76C7205B /* Frameworks */, + 4EA831642FCE1AEB548433F4 /* Products */, + 014E300F34DD242F1FB3256A /* Projects */, + ); + name = "testnative"; + sourceTree = ""; + }; + 556240E1795C0D34798D1B48 /* test */ = { + isa = PBXGroup; + children = ( + 35F05D2E1FDE45767B06523F /* testnative.c */, + 6B3C62E933A5301E10121FC9 /* testnative.h */, + 47545DF46201658D3BD734FA /* testnativecocoa.m */, + ); + name = "test"; + sourceTree = ""; + }; + 6D4418531291078F76C7205B /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5B9C61845D897017310A3FB4 /* AudioToolbox.framework */, + 57F91C82576B37C86BA75D44 /* AudioUnit.framework */, + 3EBC6544049A4AB978626A43 /* Cocoa.framework */, + 0F193DDA5F10509225B323F7 /* CoreAudio.framework */, + 0A2C004B705E55E47CA775F3 /* IOKit.framework */, + 107328C45E365C7133065CD0 /* Carbon.framework */, + 416F5EB2177049BB247C65C5 /* ForceFeedback.framework */, + 26A3210E2CDE553C60B53D53 /* CoreFoundation.framework */, + 5678640055847510733E7417 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 4EA831642FCE1AEB548433F4 /* Products */ = { + isa = PBXGroup; + children = ( + 2275520F5E5278701654067D /* testnative */, + ); + name = "Products"; + sourceTree = ""; + }; + 014E300F34DD242F1FB3256A /* Projects */ = { + isa = PBXGroup; + children = ( + 03C45B137CAF5FB518FF293D /* SDL2main.xcodeproj */, + 7E3D64ED39CC28C012BC257B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 68EF3A6B73AF1BBA684D57E8 /* Products */ = { + isa = PBXGroup; + children = ( + 748F5F2677A22EE7542F72CE /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 7135050D597C723F253159C0 /* Products */ = { + isa = PBXGroup; + children = ( + 6F1A45BF1F35025E247C7810 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1159111E07D8364B1F101020 /* testnative */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2F901AF56BE134F826357402 /* Build configuration list for PBXNativeTarget "testnative" */; + buildPhases = ( + 46646EE25C6C5C0E2880000A /* Resources */, + 1B7E099E11A4506455DA750B /* Sources */, + 2C3103A1556F143F538D6BD0 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 7C4A02F2701929797C3B471B /* PBXTargetDependency */, + 4DA6676B54600FE11A995F8A /* PBXTargetDependency */, + ); + name = "testnative"; + productInstallPath = "$(HOME)/bin"; + productName = "testnative"; + productReference = 2275520F5E5278701654067D /* testnative */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testnative" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5D23300B2D3D3A6076EC1BC1 /* testnative */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 68EF3A6B73AF1BBA684D57E8 /* Products */; + ProjectRef = 03C45B137CAF5FB518FF293D /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 7135050D597C723F253159C0 /* Products */; + ProjectRef = 7E3D64ED39CC28C012BC257B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1159111E07D8364B1F101020 /* testnative */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 748F5F2677A22EE7542F72CE /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 5C12261A17CE7C055DB26192 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6F1A45BF1F35025E247C7810 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 005826BF56063F5B7E6F5A0C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 46646EE25C6C5C0E2880000A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 1B7E099E11A4506455DA750B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 264A007914BD1542267C366B /* testnative.c in Sources */, + 22EB74FE0CEA619B30FB5D5A /* testnativecocoa.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 7C4A02F2701929797C3B471B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 66C7140646EB22572B652F37 /* PBXContainerItemProxy */; + }; + 4DA6676B54600FE11A995F8A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 733B32C55CFE45D55C6C53B5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 090423E26BEA756C2CED31AC /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Debug Universal"; + }; + 356938A7784656EC48E33998 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Debug Native"; + }; + 2C4E647D0117492C72E476AD /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Release Universal"; + }; + 7419418059076FE25F8350C4 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testnative"; + }; + name = "Release Native"; + }; + 419E17746C1A5930662A71E2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 64B96E2C399E657E685750D6 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 7B2207AF006B7974610E760D /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 2C24024F18B2060E41765B21 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2F901AF56BE134F826357402 /* Build configuration list for PBXNativeTarget "testnative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 090423E26BEA756C2CED31AC /* Debug Universal */, + 356938A7784656EC48E33998 /* Debug Native */, + 2C4E647D0117492C72E476AD /* Release Universal */, + 7419418059076FE25F8350C4 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testnative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 419E17746C1A5930662A71E2 /* Debug Universal */, + 64B96E2C399E657E685750D6 /* Debug Native */, + 7B2207AF006B7974610E760D /* Release Universal */, + 2C24024F18B2060E41765B21 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..7b21786a18 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testoverlay2/testoverlay2.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 33525EF938E9736171BA07B3 /* testoverlay2.c in Sources */ = {isa = PBXBuildFile; fileRef = 05717071110057FE08606B4F /* testoverlay2.c */; }; + 3CE7229C49DA217B1C50681A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 759D52855ACF6E64694C2F61 /* AudioToolbox.framework */; }; + 1D6E2F5B17A628557DD125B5 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EFC5EB948A012BC11B9247F /* AudioUnit.framework */; }; + 570540D57F0139D3042C0B1C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2295249631582B41516137E5 /* Cocoa.framework */; }; + 08A94B0C053657D76B027E95 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4B10AE13D33A702DDF45B7 /* CoreAudio.framework */; }; + 485562961C9B34D874720F97 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 124F370878B41DC705F413B2 /* IOKit.framework */; }; + 2A657AC92603347C409236D4 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41D262501BE562466EFE0BC6 /* Carbon.framework */; }; + 625817E3546604B52E826F18 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30FA05F07FB769A16587294E /* ForceFeedback.framework */; }; + 39F45AA10CDC68344A9A7622 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50A125727A5B7A7753964D01 /* CoreFoundation.framework */; }; + 101F21A76CFA33E32A3C6845 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 710506A6223E4A0F40614806 /* OpenGL.framework */; }; + 1879660E213D66FB0477597B /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B4E35BC69F17DB124DC0A67 /* libSDL2main.a */; }; + 4BB840221DC71D7176807CF6 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 44FB6C117FB973CF5C4C2084 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 62AE4378358351554E2A4071 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 514E70E5701A6B5728950C10 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 4BE764F9547433EF474B4BDD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 514E70E5701A6B5728950C10 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 239C6405453E71491B3B7E51 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5074102C6EF52DCC3B9542CB /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 0C06609F75337585241B7464 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5074102C6EF52DCC3B9542CB /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 05717071110057FE08606B4F /* testoverlay2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testoverlay2.c"; path = "../../../../../test/testoverlay2.c"; sourceTree = ""; }; + 759D52855ACF6E64694C2F61 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0EFC5EB948A012BC11B9247F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 2295249631582B41516137E5 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7A4B10AE13D33A702DDF45B7 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 124F370878B41DC705F413B2 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 41D262501BE562466EFE0BC6 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 30FA05F07FB769A16587294E /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 50A125727A5B7A7753964D01 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 710506A6223E4A0F40614806 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 0FA8057B75397DDB5EE716BE /* testoverlay2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testoverlay2"; path = "testoverlay2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 514E70E5701A6B5728950C10 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5074102C6EF52DCC3B9542CB /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5F787BAC7D3C2A36520B6588 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3CE7229C49DA217B1C50681A /* AudioToolbox.framework in Frameworks */, + 1D6E2F5B17A628557DD125B5 /* AudioUnit.framework in Frameworks */, + 570540D57F0139D3042C0B1C /* Cocoa.framework in Frameworks */, + 08A94B0C053657D76B027E95 /* CoreAudio.framework in Frameworks */, + 485562961C9B34D874720F97 /* IOKit.framework in Frameworks */, + 2A657AC92603347C409236D4 /* Carbon.framework in Frameworks */, + 625817E3546604B52E826F18 /* ForceFeedback.framework in Frameworks */, + 39F45AA10CDC68344A9A7622 /* CoreFoundation.framework in Frameworks */, + 101F21A76CFA33E32A3C6845 /* OpenGL.framework in Frameworks */, + 1879660E213D66FB0477597B /* libSDL2main.a in Frameworks */, + 4BB840221DC71D7176807CF6 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 69FD15FC791C21B509D3018E /* testoverlay2 */ = { + isa = PBXGroup; + children = ( + 39F069DA7F1D0996030628A1 /* test */, + 25423C1F495373D0031828B2 /* Frameworks */, + 466B35EF0D6454526C3C6D52 /* Products */, + 2A4A6DAD05444FDC1F646865 /* Projects */, + ); + name = "testoverlay2"; + sourceTree = ""; + }; + 39F069DA7F1D0996030628A1 /* test */ = { + isa = PBXGroup; + children = ( + 05717071110057FE08606B4F /* testoverlay2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 25423C1F495373D0031828B2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 759D52855ACF6E64694C2F61 /* AudioToolbox.framework */, + 0EFC5EB948A012BC11B9247F /* AudioUnit.framework */, + 2295249631582B41516137E5 /* Cocoa.framework */, + 7A4B10AE13D33A702DDF45B7 /* CoreAudio.framework */, + 124F370878B41DC705F413B2 /* IOKit.framework */, + 41D262501BE562466EFE0BC6 /* Carbon.framework */, + 30FA05F07FB769A16587294E /* ForceFeedback.framework */, + 50A125727A5B7A7753964D01 /* CoreFoundation.framework */, + 710506A6223E4A0F40614806 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 466B35EF0D6454526C3C6D52 /* Products */ = { + isa = PBXGroup; + children = ( + 0FA8057B75397DDB5EE716BE /* testoverlay2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 2A4A6DAD05444FDC1F646865 /* Projects */ = { + isa = PBXGroup; + children = ( + 514E70E5701A6B5728950C10 /* SDL2main.xcodeproj */, + 5074102C6EF52DCC3B9542CB /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 6D5A6CA342044EF837BA3F03 /* Products */ = { + isa = PBXGroup; + children = ( + 1B4E35BC69F17DB124DC0A67 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 141B31EF59DE1C5A149905E9 /* Products */ = { + isa = PBXGroup; + children = ( + 44FB6C117FB973CF5C4C2084 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4E1D094D3EF0204547C6583C /* testoverlay2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2E9435955894696F368F7836 /* Build configuration list for PBXNativeTarget "testoverlay2" */; + buildPhases = ( + 5AAA05337B8B02654CDF57C8 /* Resources */, + 20135C8F717226863D27763F /* Sources */, + 5F787BAC7D3C2A36520B6588 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 34EF3DA325510C7966731AAA /* PBXTargetDependency */, + 6FB10E502872596C7DD405C1 /* PBXTargetDependency */, + ); + name = "testoverlay2"; + productInstallPath = "$(HOME)/bin"; + productName = "testoverlay2"; + productReference = 0FA8057B75397DDB5EE716BE /* testoverlay2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testoverlay2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 69FD15FC791C21B509D3018E /* testoverlay2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6D5A6CA342044EF837BA3F03 /* Products */; + ProjectRef = 514E70E5701A6B5728950C10 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 141B31EF59DE1C5A149905E9 /* Products */; + ProjectRef = 5074102C6EF52DCC3B9542CB /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4E1D094D3EF0204547C6583C /* testoverlay2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 1B4E35BC69F17DB124DC0A67 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 62AE4378358351554E2A4071 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 44FB6C117FB973CF5C4C2084 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 239C6405453E71491B3B7E51 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5AAA05337B8B02654CDF57C8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 20135C8F717226863D27763F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33525EF938E9736171BA07B3 /* testoverlay2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 34EF3DA325510C7966731AAA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 4BE764F9547433EF474B4BDD /* PBXContainerItemProxy */; + }; + 6FB10E502872596C7DD405C1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0C06609F75337585241B7464 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 7CAE0400271775FB6EF94023 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Debug Universal"; + }; + 72D053456CB56C4942E509B5 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Debug Native"; + }; + 497A7D3544A36A004A7B7308 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Release Universal"; + }; + 7DF7201C1807341172001945 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testoverlay2"; + }; + name = "Release Native"; + }; + 7062495650922CA724732D77 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 5A54620678545A2771794005 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 1A9B695570E3524E11A10FA8 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 187329EA6CC536F4052767E3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2E9435955894696F368F7836 /* Build configuration list for PBXNativeTarget "testoverlay2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7CAE0400271775FB6EF94023 /* Debug Universal */, + 72D053456CB56C4942E509B5 /* Debug Native */, + 497A7D3544A36A004A7B7308 /* Release Universal */, + 7DF7201C1807341172001945 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testoverlay2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7062495650922CA724732D77 /* Debug Universal */, + 5A54620678545A2771794005 /* Debug Native */, + 1A9B695570E3524E11A10FA8 /* Release Universal */, + 187329EA6CC536F4052767E3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testplatform/testplatform.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testplatform/testplatform.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..093cf2e071 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testplatform/testplatform.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 4A0A00501EA31CDE45DB5C09 /* testplatform.c in Sources */ = {isa = PBXBuildFile; fileRef = 03277A1D0D2274C56C4D6643 /* testplatform.c */; }; + 06D678F05C406EE5000D6B51 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 105E357008492B435291680E /* AudioToolbox.framework */; }; + 4B24642D675F3AD8714D0C7D /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30737F6E2CC6372227DA043F /* AudioUnit.framework */; }; + 454A3BD52A912D595A335A4B /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C1101984640178935E578B1 /* Cocoa.framework */; }; + 3F4D61E8767E07AF1E165A0D /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D15717F67AB414819DF268A /* CoreAudio.framework */; }; + 3BE3371A4350494F72617C19 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 42B261B26FE93685020A67BB /* IOKit.framework */; }; + 3F9D6AC7386304860E2E025F /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 713D6BD920243A0F4337710B /* Carbon.framework */; }; + 3465100C410C2B055DBA7779 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A6370AA3A5A28BD435724D1 /* ForceFeedback.framework */; }; + 287938301066563D42F65885 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 432D653D37B21D9B5DB80423 /* CoreFoundation.framework */; }; + 742545264FBE455562894A10 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 21BE57B40867280109E87EA2 /* OpenGL.framework */; }; + 07F379E564114ED877D55AD3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 368A4B60205E7DFF04C72D3F /* libSDL2main.a */; }; + 0DBA37055A1E1250791645BA /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6B2813FF4D641C823C1F25A7 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0FF9373841E070571FE85DB6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D345A42365C085C0229586A /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 7E212FF72E01054A6F0E1121 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D345A42365C085C0229586A /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 5781564303AD6AD23E812AE0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1273701248BB15BE2E516831 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 0CF009641A995B987F582809 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1273701248BB15BE2E516831 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 03277A1D0D2274C56C4D6643 /* testplatform.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testplatform.c"; path = "../../../../../test/testplatform.c"; sourceTree = ""; }; + 105E357008492B435291680E /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 30737F6E2CC6372227DA043F /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 7C1101984640178935E578B1 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7D15717F67AB414819DF268A /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 42B261B26FE93685020A67BB /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 713D6BD920243A0F4337710B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 3A6370AA3A5A28BD435724D1 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 432D653D37B21D9B5DB80423 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 21BE57B40867280109E87EA2 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5A92586E240C3E8539D77BED /* testplatform */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testplatform"; path = "testplatform"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3D345A42365C085C0229586A /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 1273701248BB15BE2E516831 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 37B42607462A2EBB25455737 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 06D678F05C406EE5000D6B51 /* AudioToolbox.framework in Frameworks */, + 4B24642D675F3AD8714D0C7D /* AudioUnit.framework in Frameworks */, + 454A3BD52A912D595A335A4B /* Cocoa.framework in Frameworks */, + 3F4D61E8767E07AF1E165A0D /* CoreAudio.framework in Frameworks */, + 3BE3371A4350494F72617C19 /* IOKit.framework in Frameworks */, + 3F9D6AC7386304860E2E025F /* Carbon.framework in Frameworks */, + 3465100C410C2B055DBA7779 /* ForceFeedback.framework in Frameworks */, + 287938301066563D42F65885 /* CoreFoundation.framework in Frameworks */, + 742545264FBE455562894A10 /* OpenGL.framework in Frameworks */, + 07F379E564114ED877D55AD3 /* libSDL2main.a in Frameworks */, + 0DBA37055A1E1250791645BA /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7F9951CA436D444B2C3C26C8 /* testplatform */ = { + isa = PBXGroup; + children = ( + 2CAC7309549D425F1AA363B3 /* test */, + 7901499C44CF2C9B0543186E /* Frameworks */, + 1D0B45C30DB43DCD60AE589A /* Products */, + 6E7238BB0DF6528B23D05132 /* Projects */, + ); + name = "testplatform"; + sourceTree = ""; + }; + 2CAC7309549D425F1AA363B3 /* test */ = { + isa = PBXGroup; + children = ( + 03277A1D0D2274C56C4D6643 /* testplatform.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7901499C44CF2C9B0543186E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 105E357008492B435291680E /* AudioToolbox.framework */, + 30737F6E2CC6372227DA043F /* AudioUnit.framework */, + 7C1101984640178935E578B1 /* Cocoa.framework */, + 7D15717F67AB414819DF268A /* CoreAudio.framework */, + 42B261B26FE93685020A67BB /* IOKit.framework */, + 713D6BD920243A0F4337710B /* Carbon.framework */, + 3A6370AA3A5A28BD435724D1 /* ForceFeedback.framework */, + 432D653D37B21D9B5DB80423 /* CoreFoundation.framework */, + 21BE57B40867280109E87EA2 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1D0B45C30DB43DCD60AE589A /* Products */ = { + isa = PBXGroup; + children = ( + 5A92586E240C3E8539D77BED /* testplatform */, + ); + name = "Products"; + sourceTree = ""; + }; + 6E7238BB0DF6528B23D05132 /* Projects */ = { + isa = PBXGroup; + children = ( + 3D345A42365C085C0229586A /* SDL2main.xcodeproj */, + 1273701248BB15BE2E516831 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 29F515F878816DF0630163F3 /* Products */ = { + isa = PBXGroup; + children = ( + 368A4B60205E7DFF04C72D3F /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 764614AF76400C991BD47CE5 /* Products */ = { + isa = PBXGroup; + children = ( + 6B2813FF4D641C823C1F25A7 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1C965D735D5179C9107B1347 /* testplatform */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6C7D37D669AB5DEE7234480E /* Build configuration list for PBXNativeTarget "testplatform" */; + buildPhases = ( + 1BE247971FD96A374FBE7392 /* Resources */, + 039426215758798D31926FE3 /* Sources */, + 37B42607462A2EBB25455737 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3E3C6D00434921916D961D6D /* PBXTargetDependency */, + 0DA23DFA0D88064D53E865EA /* PBXTargetDependency */, + ); + name = "testplatform"; + productInstallPath = "$(HOME)/bin"; + productName = "testplatform"; + productReference = 5A92586E240C3E8539D77BED /* testplatform */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testplatform" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 7F9951CA436D444B2C3C26C8 /* testplatform */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 29F515F878816DF0630163F3 /* Products */; + ProjectRef = 3D345A42365C085C0229586A /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 764614AF76400C991BD47CE5 /* Products */; + ProjectRef = 1273701248BB15BE2E516831 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1C965D735D5179C9107B1347 /* testplatform */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 368A4B60205E7DFF04C72D3F /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 0FF9373841E070571FE85DB6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6B2813FF4D641C823C1F25A7 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 5781564303AD6AD23E812AE0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 1BE247971FD96A374FBE7392 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 039426215758798D31926FE3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4A0A00501EA31CDE45DB5C09 /* testplatform.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 3E3C6D00434921916D961D6D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7E212FF72E01054A6F0E1121 /* PBXContainerItemProxy */; + }; + 0DA23DFA0D88064D53E865EA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0CF009641A995B987F582809 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 38103F0B28D339C01D096823 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Debug Universal"; + }; + 3981520157C9572030EE16A1 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Debug Native"; + }; + 305E7FB228F42E83211A5DDA /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Release Universal"; + }; + 69BB0CDB3C436797068A53A8 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testplatform"; + }; + name = "Release Native"; + }; + 7D70702858506EA74C0E65B2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 35A059C469B70A977D055B30 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 4CAC6D3550DC542F7CC502C7 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 5FFB6BBF01BC63F973DB60DE /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6C7D37D669AB5DEE7234480E /* Build configuration list for PBXNativeTarget "testplatform" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 38103F0B28D339C01D096823 /* Debug Universal */, + 3981520157C9572030EE16A1 /* Debug Native */, + 305E7FB228F42E83211A5DDA /* Release Universal */, + 69BB0CDB3C436797068A53A8 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testplatform" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7D70702858506EA74C0E65B2 /* Debug Universal */, + 35A059C469B70A977D055B30 /* Debug Native */, + 4CAC6D3550DC542F7CC502C7 /* Release Universal */, + 5FFB6BBF01BC63F973DB60DE /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testpower/testpower.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testpower/testpower.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..747cf8027b --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testpower/testpower.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 008C185F36905E3F2DD93B89 /* testpower.c in Sources */ = {isa = PBXBuildFile; fileRef = 49A3000D7344326D1E1453F5 /* testpower.c */; }; + 07EC4A215DB31AFF67F07B7C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C5B42C20E7408BA06DD1FB0 /* AudioToolbox.framework */; }; + 2BC5370E7A5913575040489E /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 260146A4423E07BA6D5A5367 /* AudioUnit.framework */; }; + 6DC268343BF8574C417D010A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1638423F48726D3344473784 /* Cocoa.framework */; }; + 35C467A920046D5C58414F67 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55AA3AF82F450845294D11B9 /* CoreAudio.framework */; }; + 3962559010D93F3632B05EEE /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25FB1C0A569A473643DF6D63 /* IOKit.framework */; }; + 4ECE657D7C0A79900CB15491 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65041FD715E4370069961399 /* Carbon.framework */; }; + 1AE629A921C125FF0EDF0C0C /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 013F56686DB51785462D3CF9 /* ForceFeedback.framework */; }; + 2B6850504807751A33A54FCE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08404EC725FD1FFB42632AAA /* CoreFoundation.framework */; }; + 51951E87459A3BEF614C0382 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 660F666F0F4E58E554F46E4A /* OpenGL.framework */; }; + 6E391DB8495F37096ED25C60 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2333699804C61D4A07A63693 /* libSDL2main.a */; }; + 3CCF418C7125528539FA5B0F /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 08EA69CA6E2B5109416610BC /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2EB029411A09653647804BBF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 556A383665AE387A0F9A6457 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 0A805F015B2255B51CAE65F3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 556A383665AE387A0F9A6457 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 5A296055216932417A1260AF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5B7310EF4F0303B31A84561C /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 152D6923121A1CA9460242EC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5B7310EF4F0303B31A84561C /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 49A3000D7344326D1E1453F5 /* testpower.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testpower.c"; path = "../../../../../test/testpower.c"; sourceTree = ""; }; + 0C5B42C20E7408BA06DD1FB0 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 260146A4423E07BA6D5A5367 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 1638423F48726D3344473784 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 55AA3AF82F450845294D11B9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 25FB1C0A569A473643DF6D63 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 65041FD715E4370069961399 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 013F56686DB51785462D3CF9 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 08404EC725FD1FFB42632AAA /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 660F666F0F4E58E554F46E4A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 442A4F9763E40EE22EA17EB1 /* testpower */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testpower"; path = "testpower"; sourceTree = BUILT_PRODUCTS_DIR; }; + 556A383665AE387A0F9A6457 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5B7310EF4F0303B31A84561C /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 70A828D347C61D6822011FA5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 07EC4A215DB31AFF67F07B7C /* AudioToolbox.framework in Frameworks */, + 2BC5370E7A5913575040489E /* AudioUnit.framework in Frameworks */, + 6DC268343BF8574C417D010A /* Cocoa.framework in Frameworks */, + 35C467A920046D5C58414F67 /* CoreAudio.framework in Frameworks */, + 3962559010D93F3632B05EEE /* IOKit.framework in Frameworks */, + 4ECE657D7C0A79900CB15491 /* Carbon.framework in Frameworks */, + 1AE629A921C125FF0EDF0C0C /* ForceFeedback.framework in Frameworks */, + 2B6850504807751A33A54FCE /* CoreFoundation.framework in Frameworks */, + 51951E87459A3BEF614C0382 /* OpenGL.framework in Frameworks */, + 6E391DB8495F37096ED25C60 /* libSDL2main.a in Frameworks */, + 3CCF418C7125528539FA5B0F /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2AC97BC82E2458D05BB444FC /* testpower */ = { + isa = PBXGroup; + children = ( + 0EA7790274B31ED738E84013 /* test */, + 28693F173C192F1F2B3263BE /* Frameworks */, + 7770631C6675287952BC7094 /* Products */, + 1B7D603602FD574D2F0B7D85 /* Projects */, + ); + name = "testpower"; + sourceTree = ""; + }; + 0EA7790274B31ED738E84013 /* test */ = { + isa = PBXGroup; + children = ( + 49A3000D7344326D1E1453F5 /* testpower.c */, + ); + name = "test"; + sourceTree = ""; + }; + 28693F173C192F1F2B3263BE /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0C5B42C20E7408BA06DD1FB0 /* AudioToolbox.framework */, + 260146A4423E07BA6D5A5367 /* AudioUnit.framework */, + 1638423F48726D3344473784 /* Cocoa.framework */, + 55AA3AF82F450845294D11B9 /* CoreAudio.framework */, + 25FB1C0A569A473643DF6D63 /* IOKit.framework */, + 65041FD715E4370069961399 /* Carbon.framework */, + 013F56686DB51785462D3CF9 /* ForceFeedback.framework */, + 08404EC725FD1FFB42632AAA /* CoreFoundation.framework */, + 660F666F0F4E58E554F46E4A /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 7770631C6675287952BC7094 /* Products */ = { + isa = PBXGroup; + children = ( + 442A4F9763E40EE22EA17EB1 /* testpower */, + ); + name = "Products"; + sourceTree = ""; + }; + 1B7D603602FD574D2F0B7D85 /* Projects */ = { + isa = PBXGroup; + children = ( + 556A383665AE387A0F9A6457 /* SDL2main.xcodeproj */, + 5B7310EF4F0303B31A84561C /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 4CA90F02616B6E8A4FD206A2 /* Products */ = { + isa = PBXGroup; + children = ( + 2333699804C61D4A07A63693 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5D2344DF466D41AE0CCA4A15 /* Products */ = { + isa = PBXGroup; + children = ( + 08EA69CA6E2B5109416610BC /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4A6675C15AB53FFA383B581B /* testpower */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6DDA0E5903CA710858473C38 /* Build configuration list for PBXNativeTarget "testpower" */; + buildPhases = ( + 240820776B126F2856CE05D1 /* Resources */, + 77792E3E278807ED5E4F47C7 /* Sources */, + 70A828D347C61D6822011FA5 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 697523D1774F7B803B8C1D22 /* PBXTargetDependency */, + 30085FD60A2D2F4906B64D80 /* PBXTargetDependency */, + ); + name = "testpower"; + productInstallPath = "$(HOME)/bin"; + productName = "testpower"; + productReference = 442A4F9763E40EE22EA17EB1 /* testpower */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testpower" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 2AC97BC82E2458D05BB444FC /* testpower */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 4CA90F02616B6E8A4FD206A2 /* Products */; + ProjectRef = 556A383665AE387A0F9A6457 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5D2344DF466D41AE0CCA4A15 /* Products */; + ProjectRef = 5B7310EF4F0303B31A84561C /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4A6675C15AB53FFA383B581B /* testpower */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2333699804C61D4A07A63693 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2EB029411A09653647804BBF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 08EA69CA6E2B5109416610BC /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 5A296055216932417A1260AF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 240820776B126F2856CE05D1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 77792E3E278807ED5E4F47C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 008C185F36905E3F2DD93B89 /* testpower.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 697523D1774F7B803B8C1D22 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 0A805F015B2255B51CAE65F3 /* PBXContainerItemProxy */; + }; + 30085FD60A2D2F4906B64D80 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 152D6923121A1CA9460242EC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0A9A45A902BC2688540B55F7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Debug Universal"; + }; + 009743F92ED93F8E14DF7BD6 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Debug Native"; + }; + 0EC0110A5ED4599551C51A31 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Release Universal"; + }; + 768B43DB75A671F27B0404B3 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testpower"; + }; + name = "Release Native"; + }; + 055D578241616B4C58390E60 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 53F51C5B247461B13E773070 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 1C1819CF11DF06157A6D12D3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 0B962CF741C917EF71CB5FCD /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6DDA0E5903CA710858473C38 /* Build configuration list for PBXNativeTarget "testpower" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0A9A45A902BC2688540B55F7 /* Debug Universal */, + 009743F92ED93F8E14DF7BD6 /* Debug Native */, + 0EC0110A5ED4599551C51A31 /* Release Universal */, + 768B43DB75A671F27B0404B3 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testpower" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 055D578241616B4C58390E60 /* Debug Universal */, + 53F51C5B247461B13E773070 /* Debug Native */, + 1C1819CF11DF06157A6D12D3 /* Release Universal */, + 0B962CF741C917EF71CB5FCD /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testrelative/testrelative.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testrelative/testrelative.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..144c7f8653 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testrelative/testrelative.xcodeproj/project.pbxproj @@ -0,0 +1,498 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 377D15C6170424D6062E69BB /* testrelative.c in Sources */ = {isa = PBXBuildFile; fileRef = 71667C8878823B3471B92D20 /* testrelative.c */; }; + 524E14E1598534C2539D79D7 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56254B8921C07B07194455D7 /* AudioToolbox.framework */; }; + 72C56E3176E81D7E554E06D0 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3EE73A6960BA131A44AD4605 /* AudioUnit.framework */; }; + 053E5D6D2AAF6AE6395A5F73 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A856D19217D56C75D923C13 /* Cocoa.framework */; }; + 47D039401FAE0BB1177A6CB2 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EF55D1D33514638345833DA /* CoreAudio.framework */; }; + 7EC14E3B22706B1204FD0251 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50E85FD316EE139340397757 /* IOKit.framework */; }; + 0DEB62F21B3A14D965D65032 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3873306F723253011B07705D /* Carbon.framework */; }; + 6C874CCA69E801B409C25D8B /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D681779212506AB7F6364A2 /* ForceFeedback.framework */; }; + 47ED4E9555B16F007D8B6849 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E0E53FE4E4C019826A473A8 /* CoreFoundation.framework */; }; + 30B819AD31D06F95329306E1 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45B123385C1D2173187D586C /* OpenGL.framework */; }; + 32C751180F0B4CE9749C5533 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 28225BD47689342B079F1376 /* libSDL2main.a */; }; + 581573D564633E495E4A6F49 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11610A86186C6EC1690E4331 /* libSDL2test.a */; }; + 3D3B067048DB33A11637107F /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E6B65B70DCF252A2999061E /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7CDD318747A73B312F756764 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7D062F4103B832B91E98184F /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 7AF653B002E71484200D5E72 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7D062F4103B832B91E98184F /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 4C854940436C039554C17D14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A9B728F134121E37D6259B7 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 6BFF66467F0755F5788A5054 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A9B728F134121E37D6259B7 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 6E56507D7F00195E09D25C00 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 553061607A071DB64A5345B6 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 1DC37832544314FC3B3954B6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 553061607A071DB64A5345B6 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 71667C8878823B3471B92D20 /* testrelative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrelative.c"; path = "../../../../../test/testrelative.c"; sourceTree = ""; }; + 56254B8921C07B07194455D7 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 3EE73A6960BA131A44AD4605 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 4A856D19217D56C75D923C13 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 2EF55D1D33514638345833DA /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 50E85FD316EE139340397757 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3873306F723253011B07705D /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 1D681779212506AB7F6364A2 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 0E0E53FE4E4C019826A473A8 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 45B123385C1D2173187D586C /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 47B623680BB61214074C274F /* testrelative */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrelative"; path = "testrelative"; sourceTree = BUILT_PRODUCTS_DIR; }; + 7D062F4103B832B91E98184F /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 0A9B728F134121E37D6259B7 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 553061607A071DB64A5345B6 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6EAB401D473F05276903491F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 524E14E1598534C2539D79D7 /* AudioToolbox.framework in Frameworks */, + 72C56E3176E81D7E554E06D0 /* AudioUnit.framework in Frameworks */, + 053E5D6D2AAF6AE6395A5F73 /* Cocoa.framework in Frameworks */, + 47D039401FAE0BB1177A6CB2 /* CoreAudio.framework in Frameworks */, + 7EC14E3B22706B1204FD0251 /* IOKit.framework in Frameworks */, + 0DEB62F21B3A14D965D65032 /* Carbon.framework in Frameworks */, + 6C874CCA69E801B409C25D8B /* ForceFeedback.framework in Frameworks */, + 47ED4E9555B16F007D8B6849 /* CoreFoundation.framework in Frameworks */, + 30B819AD31D06F95329306E1 /* OpenGL.framework in Frameworks */, + 32C751180F0B4CE9749C5533 /* libSDL2main.a in Frameworks */, + 581573D564633E495E4A6F49 /* libSDL2test.a in Frameworks */, + 3D3B067048DB33A11637107F /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 29DE426641CD17502546186D /* testrelative */ = { + isa = PBXGroup; + children = ( + 38A22B441348613571F92F06 /* test */, + 05AD5EA7316773EA27C83C14 /* Frameworks */, + 5BDA535110A550C34EEB6273 /* Products */, + 2B7B2DFD6D963B800AA1599F /* Projects */, + ); + name = "testrelative"; + sourceTree = ""; + }; + 38A22B441348613571F92F06 /* test */ = { + isa = PBXGroup; + children = ( + 71667C8878823B3471B92D20 /* testrelative.c */, + ); + name = "test"; + sourceTree = ""; + }; + 05AD5EA7316773EA27C83C14 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 56254B8921C07B07194455D7 /* AudioToolbox.framework */, + 3EE73A6960BA131A44AD4605 /* AudioUnit.framework */, + 4A856D19217D56C75D923C13 /* Cocoa.framework */, + 2EF55D1D33514638345833DA /* CoreAudio.framework */, + 50E85FD316EE139340397757 /* IOKit.framework */, + 3873306F723253011B07705D /* Carbon.framework */, + 1D681779212506AB7F6364A2 /* ForceFeedback.framework */, + 0E0E53FE4E4C019826A473A8 /* CoreFoundation.framework */, + 45B123385C1D2173187D586C /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 5BDA535110A550C34EEB6273 /* Products */ = { + isa = PBXGroup; + children = ( + 47B623680BB61214074C274F /* testrelative */, + ); + name = "Products"; + sourceTree = ""; + }; + 2B7B2DFD6D963B800AA1599F /* Projects */ = { + isa = PBXGroup; + children = ( + 7D062F4103B832B91E98184F /* SDL2main.xcodeproj */, + 0A9B728F134121E37D6259B7 /* SDL2test.xcodeproj */, + 553061607A071DB64A5345B6 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 39CF6C433A553F4633AC7FA6 /* Products */ = { + isa = PBXGroup; + children = ( + 28225BD47689342B079F1376 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 3FF5181128A11277002860FA /* Products */ = { + isa = PBXGroup; + children = ( + 11610A86186C6EC1690E4331 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 4C170DD27CCE3EEB6F8B1B33 /* Products */ = { + isa = PBXGroup; + children = ( + 3E6B65B70DCF252A2999061E /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6D02378C4F000F6F7A111482 /* testrelative */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33213F157BE31B3A2C114A0A /* Build configuration list for PBXNativeTarget "testrelative" */; + buildPhases = ( + 05FA694754CA25C139E25C5E /* Resources */, + 42571475349D6E16106631BE /* Sources */, + 6EAB401D473F05276903491F /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 1F397B32370D5C5B161E284C /* PBXTargetDependency */, + 44BC519333775A56548F38E9 /* PBXTargetDependency */, + 0AA55E24372649FE552063A6 /* PBXTargetDependency */, + ); + name = "testrelative"; + productInstallPath = "$(HOME)/bin"; + productName = "testrelative"; + productReference = 47B623680BB61214074C274F /* testrelative */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrelative" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 29DE426641CD17502546186D /* testrelative */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 39CF6C433A553F4633AC7FA6 /* Products */; + ProjectRef = 7D062F4103B832B91E98184F /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 3FF5181128A11277002860FA /* Products */; + ProjectRef = 0A9B728F134121E37D6259B7 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 4C170DD27CCE3EEB6F8B1B33 /* Products */; + ProjectRef = 553061607A071DB64A5345B6 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6D02378C4F000F6F7A111482 /* testrelative */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 28225BD47689342B079F1376 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 7CDD318747A73B312F756764 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 11610A86186C6EC1690E4331 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 4C854940436C039554C17D14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3E6B65B70DCF252A2999061E /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 6E56507D7F00195E09D25C00 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 05FA694754CA25C139E25C5E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 42571475349D6E16106631BE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 377D15C6170424D6062E69BB /* testrelative.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 1F397B32370D5C5B161E284C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 7AF653B002E71484200D5E72 /* PBXContainerItemProxy */; + }; + 44BC519333775A56548F38E9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 6BFF66467F0755F5788A5054 /* PBXContainerItemProxy */; + }; + 0AA55E24372649FE552063A6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 1DC37832544314FC3B3954B6 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0AC807AA663F599C341D7845 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Debug Universal"; + }; + 28470117178A0F7B7C81077C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Debug Native"; + }; + 558B20072DD178567D98343F /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Release Universal"; + }; + 64AF24EF4901175A3C2F4E5B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrelative"; + }; + name = "Release Native"; + }; + 2DFC238C51B9064E29EE576C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 161E0DDC1BD561BD452D355C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 21CE669E3E2C79251A270508 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 38840CD878D513C706DD225F /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33213F157BE31B3A2C114A0A /* Build configuration list for PBXNativeTarget "testrelative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0AC807AA663F599C341D7845 /* Debug Universal */, + 28470117178A0F7B7C81077C /* Debug Native */, + 558B20072DD178567D98343F /* Release Universal */, + 64AF24EF4901175A3C2F4E5B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrelative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2DFC238C51B9064E29EE576C /* Debug Universal */, + 161E0DDC1BD561BD452D355C /* Debug Native */, + 21CE669E3E2C79251A270508 /* Release Universal */, + 38840CD878D513C706DD225F /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..8cb696b7ed --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testrendercopyex/testrendercopyex.xcodeproj/project.pbxproj @@ -0,0 +1,515 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 65F577E704295C1E66CB1E56 /* testrendercopyex.c in Sources */ = {isa = PBXBuildFile; fileRef = 7BF05D4A5DE71E2922256A9A /* testrendercopyex.c */; }; + 311717F228EB5CBF3F84738C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 79B91476551510CF06AF595A /* AudioToolbox.framework */; }; + 7FF54AC418B12B6468603435 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A2731232A8C6BEE08C21FDF /* AudioUnit.framework */; }; + 230069AF769C23FF68AA229E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12FA71F71C5D3ECE6BD8528A /* Cocoa.framework */; }; + 259023F5535C6AFA677C2EBA /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 688839EE6B304F226CB21BEF /* CoreAudio.framework */; }; + 231D795214B1164668156D90 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4D24378312A11BA928DB53E6 /* IOKit.framework */; }; + 1F2A2B73100763FF1D6F7396 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 250431D67F6971C000B64EF6 /* Carbon.framework */; }; + 175C44B7512E30994E055CD5 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BC56B4317A644E92E43394B /* ForceFeedback.framework */; }; + 5B3E0120616A13D1155D1561 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 550155CB3108333922B617EB /* CoreFoundation.framework */; }; + 3EA15261674F7A3C228F1341 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 510129574D22250244413C56 /* OpenGL.framework */; }; + 1AC71544306009AB71A9107C /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 517F04D221F249E55F3E1A1F /* libSDL2main.a */; }; + 1083318C01B525E110655A78 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2575308E4303103406C9036F /* libSDL2test.a */; }; + 3EA146EA2DB506A902765090 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 30697A6733BC012824EC220D /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 66541B9B143128AD17145D95 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6BB34D2A2B2A00ED019D1CC9 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 6A14614D0DC33E2373F7003C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6BB34D2A2B2A00ED019D1CC9 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 7FAD76D067AB44FD507F43C9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57601DB4507C216D7EC33C76 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 4A967815518303F956A05EEE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57601DB4507C216D7EC33C76 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 48FB706900AC4A140DCA7C13 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 364775DD3538721628530BB1 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 583B199338BF336D5C0C48EB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 364775DD3538721628530BB1 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 7BF05D4A5DE71E2922256A9A /* testrendercopyex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrendercopyex.c"; path = "../../../../../test/testrendercopyex.c"; sourceTree = ""; }; + 79B91476551510CF06AF595A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 0A2731232A8C6BEE08C21FDF /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 12FA71F71C5D3ECE6BD8528A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 688839EE6B304F226CB21BEF /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 4D24378312A11BA928DB53E6 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 250431D67F6971C000B64EF6 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 0BC56B4317A644E92E43394B /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 550155CB3108333922B617EB /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 510129574D22250244413C56 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5B78608170F51822749D7CFB /* testrendercopyex */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrendercopyex"; path = "testrendercopyex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6BB34D2A2B2A00ED019D1CC9 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 57601DB4507C216D7EC33C76 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 364775DD3538721628530BB1 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6540542C485D0502521F0BB4 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 311717F228EB5CBF3F84738C /* AudioToolbox.framework in Frameworks */, + 7FF54AC418B12B6468603435 /* AudioUnit.framework in Frameworks */, + 230069AF769C23FF68AA229E /* Cocoa.framework in Frameworks */, + 259023F5535C6AFA677C2EBA /* CoreAudio.framework in Frameworks */, + 231D795214B1164668156D90 /* IOKit.framework in Frameworks */, + 1F2A2B73100763FF1D6F7396 /* Carbon.framework in Frameworks */, + 175C44B7512E30994E055CD5 /* ForceFeedback.framework in Frameworks */, + 5B3E0120616A13D1155D1561 /* CoreFoundation.framework in Frameworks */, + 3EA15261674F7A3C228F1341 /* OpenGL.framework in Frameworks */, + 1AC71544306009AB71A9107C /* libSDL2main.a in Frameworks */, + 1083318C01B525E110655A78 /* libSDL2test.a in Frameworks */, + 3EA146EA2DB506A902765090 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3744566C7D555DFC52311FE1 /* testrendercopyex */ = { + isa = PBXGroup; + children = ( + 289A49BE0A815B3C4A7143D7 /* test */, + 587912452CA45F3D26683496 /* Frameworks */, + 4AEA7D34617158BD040E3900 /* Products */, + 43E705EF37080CEE6CAD7B2F /* Projects */, + ); + name = "testrendercopyex"; + sourceTree = ""; + }; + 289A49BE0A815B3C4A7143D7 /* test */ = { + isa = PBXGroup; + children = ( + 7BF05D4A5DE71E2922256A9A /* testrendercopyex.c */, + ); + name = "test"; + sourceTree = ""; + }; + 587912452CA45F3D26683496 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 79B91476551510CF06AF595A /* AudioToolbox.framework */, + 0A2731232A8C6BEE08C21FDF /* AudioUnit.framework */, + 12FA71F71C5D3ECE6BD8528A /* Cocoa.framework */, + 688839EE6B304F226CB21BEF /* CoreAudio.framework */, + 4D24378312A11BA928DB53E6 /* IOKit.framework */, + 250431D67F6971C000B64EF6 /* Carbon.framework */, + 0BC56B4317A644E92E43394B /* ForceFeedback.framework */, + 550155CB3108333922B617EB /* CoreFoundation.framework */, + 510129574D22250244413C56 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 4AEA7D34617158BD040E3900 /* Products */ = { + isa = PBXGroup; + children = ( + 5B78608170F51822749D7CFB /* testrendercopyex */, + ); + name = "Products"; + sourceTree = ""; + }; + 43E705EF37080CEE6CAD7B2F /* Projects */ = { + isa = PBXGroup; + children = ( + 6BB34D2A2B2A00ED019D1CC9 /* SDL2main.xcodeproj */, + 57601DB4507C216D7EC33C76 /* SDL2test.xcodeproj */, + 364775DD3538721628530BB1 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 5D21351041786AF10F905297 /* Products */ = { + isa = PBXGroup; + children = ( + 517F04D221F249E55F3E1A1F /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4BE1510349544A7F5CEA2AEA /* Products */ = { + isa = PBXGroup; + children = ( + 2575308E4303103406C9036F /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 264B2BA37F3438CE09C16A94 /* Products */ = { + isa = PBXGroup; + children = ( + 30697A6733BC012824EC220D /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4A3C5E744D8B7E0508AE71E0 /* testrendercopyex */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C7746B813C912AD3C5921CC /* Build configuration list for PBXNativeTarget "testrendercopyex" */; + buildPhases = ( + 67B152F160461DC63715542F /* Resources */, + 5E2A349329F670AD73103190 /* Sources */, + 6540542C485D0502521F0BB4 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 209110D73CD5605E5ABF3CBD /* PBXTargetDependency */, + 01F87A1A56882AFB6E8A4179 /* PBXTargetDependency */, + 7D6E749B220E68695DB4126B /* PBXTargetDependency */, + ); + name = "testrendercopyex"; + productInstallPath = "$(HOME)/bin"; + productName = "testrendercopyex"; + productReference = 5B78608170F51822749D7CFB /* testrendercopyex */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendercopyex" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 3744566C7D555DFC52311FE1 /* testrendercopyex */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 5D21351041786AF10F905297 /* Products */; + ProjectRef = 6BB34D2A2B2A00ED019D1CC9 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4BE1510349544A7F5CEA2AEA /* Products */; + ProjectRef = 57601DB4507C216D7EC33C76 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 264B2BA37F3438CE09C16A94 /* Products */; + ProjectRef = 364775DD3538721628530BB1 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4A3C5E744D8B7E0508AE71E0 /* testrendercopyex */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 517F04D221F249E55F3E1A1F /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 66541B9B143128AD17145D95 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2575308E4303103406C9036F /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 7FAD76D067AB44FD507F43C9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 30697A6733BC012824EC220D /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 48FB706900AC4A140DCA7C13 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 67B152F160461DC63715542F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 5E2A349329F670AD73103190 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 65F577E704295C1E66CB1E56 /* testrendercopyex.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 209110D73CD5605E5ABF3CBD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 6A14614D0DC33E2373F7003C /* PBXContainerItemProxy */; + }; + 01F87A1A56882AFB6E8A4179 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 4A967815518303F956A05EEE /* PBXContainerItemProxy */; + }; + 7D6E749B220E68695DB4126B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 583B199338BF336D5C0C48EB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2E543E906F8D533D0826131F /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Debug Universal"; + }; + 72783D940057663336F32A9A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Debug Native"; + }; + 4B716C8F4915063E0DF23DF3 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Release Universal"; + }; + 6514230B643424116FC24F87 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendercopyex"; + }; + name = "Release Native"; + }; + 7DF03B9B5CE4369240CC4284 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1F0938F176021BE50EBA0F4E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 48501FE85BEA11AE49867FF7 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 524F4573278E77D6270615F0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4C7746B813C912AD3C5921CC /* Build configuration list for PBXNativeTarget "testrendercopyex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2E543E906F8D533D0826131F /* Debug Universal */, + 72783D940057663336F32A9A /* Debug Native */, + 4B716C8F4915063E0DF23DF3 /* Release Universal */, + 6514230B643424116FC24F87 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendercopyex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7DF03B9B5CE4369240CC4284 /* Debug Universal */, + 1F0938F176021BE50EBA0F4E /* Debug Native */, + 48501FE85BEA11AE49867FF7 /* Release Universal */, + 524F4573278E77D6270615F0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..909dff3f5e --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testrendertarget/testrendertarget.xcodeproj/project.pbxproj @@ -0,0 +1,515 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 3B704B3B412169616F405AB4 /* testrendertarget.c in Sources */ = {isa = PBXBuildFile; fileRef = 2CD6573D176B2ECC08A5178B /* testrendertarget.c */; }; + 3AAC0DD33E947FF533ED21A6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04D077D81951397E3F482225 /* AudioToolbox.framework */; }; + 1B2063BD172B0CBF52C85BCA /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2589068A6C7F0C8328FA6478 /* AudioUnit.framework */; }; + 2D810F1E11E422CB42D019DD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3467176C5E2A27217AC6735C /* Cocoa.framework */; }; + 4670167E5CBE6E5D35E76126 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 10690E167F73144403B8656E /* CoreAudio.framework */; }; + 75566B897D0D6720699630D8 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 419F3A784EE610063A391E2C /* IOKit.framework */; }; + 36DA590E34C0302E2CED0224 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BBF3633711D3ED67A557E59 /* Carbon.framework */; }; + 295A6EDA486C53F86910518F /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38387D1F22C93EAD6BBB61C4 /* ForceFeedback.framework */; }; + 70F629FD5A1132CD3D156C61 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 38D4221E61EE625147985AC5 /* CoreFoundation.framework */; }; + 72C573C852C87F9A02296A18 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62D94D09415003812F1E7705 /* OpenGL.framework */; }; + 6FC642555C230ED021206607 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 44952EDF3A6609265F272595 /* libSDL2main.a */; }; + 00A7797F41FD55DB4AAC7756 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DA230660E3568D853951172 /* libSDL2test.a */; }; + 41811AE95C22521A564D6C83 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 567D609F072E71E8522D1C3A /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2EB723783DF000AE22377789 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 275635C11F9B24871D135BC0 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 70CA17E14C0C588337927538 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 275635C11F9B24871D135BC0 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 0A9222342A42685C293626B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70BD3C0C436C6BE872F40021 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 58B634CC6256177716181B33 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 70BD3C0C436C6BE872F40021 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 555176BD01CA0A9236A47B67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 547D14EB049F6C4C0F9D2CAC /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 566A59D968E672FE1BBE7BAC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 547D14EB049F6C4C0F9D2CAC /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2CD6573D176B2ECC08A5178B /* testrendertarget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrendertarget.c"; path = "../../../../../test/testrendertarget.c"; sourceTree = ""; }; + 04D077D81951397E3F482225 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 2589068A6C7F0C8328FA6478 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 3467176C5E2A27217AC6735C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 10690E167F73144403B8656E /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 419F3A784EE610063A391E2C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3BBF3633711D3ED67A557E59 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 38387D1F22C93EAD6BBB61C4 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 38D4221E61EE625147985AC5 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 62D94D09415003812F1E7705 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5DC743EB37AA06C502E07413 /* testrendertarget */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrendertarget"; path = "testrendertarget"; sourceTree = BUILT_PRODUCTS_DIR; }; + 275635C11F9B24871D135BC0 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 70BD3C0C436C6BE872F40021 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 547D14EB049F6C4C0F9D2CAC /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 163234BB65884C0854210017 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3AAC0DD33E947FF533ED21A6 /* AudioToolbox.framework in Frameworks */, + 1B2063BD172B0CBF52C85BCA /* AudioUnit.framework in Frameworks */, + 2D810F1E11E422CB42D019DD /* Cocoa.framework in Frameworks */, + 4670167E5CBE6E5D35E76126 /* CoreAudio.framework in Frameworks */, + 75566B897D0D6720699630D8 /* IOKit.framework in Frameworks */, + 36DA590E34C0302E2CED0224 /* Carbon.framework in Frameworks */, + 295A6EDA486C53F86910518F /* ForceFeedback.framework in Frameworks */, + 70F629FD5A1132CD3D156C61 /* CoreFoundation.framework in Frameworks */, + 72C573C852C87F9A02296A18 /* OpenGL.framework in Frameworks */, + 6FC642555C230ED021206607 /* libSDL2main.a in Frameworks */, + 00A7797F41FD55DB4AAC7756 /* libSDL2test.a in Frameworks */, + 41811AE95C22521A564D6C83 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 10ED6B1E2C0060B87FDC4B0B /* testrendertarget */ = { + isa = PBXGroup; + children = ( + 53C155344CF637493657351B /* test */, + 7E5E621C4AD30FC446F5279E /* Frameworks */, + 77E022337C09658B3958526B /* Products */, + 2C396D63169E05A60ED0355F /* Projects */, + ); + name = "testrendertarget"; + sourceTree = ""; + }; + 53C155344CF637493657351B /* test */ = { + isa = PBXGroup; + children = ( + 2CD6573D176B2ECC08A5178B /* testrendertarget.c */, + ); + name = "test"; + sourceTree = ""; + }; + 7E5E621C4AD30FC446F5279E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 04D077D81951397E3F482225 /* AudioToolbox.framework */, + 2589068A6C7F0C8328FA6478 /* AudioUnit.framework */, + 3467176C5E2A27217AC6735C /* Cocoa.framework */, + 10690E167F73144403B8656E /* CoreAudio.framework */, + 419F3A784EE610063A391E2C /* IOKit.framework */, + 3BBF3633711D3ED67A557E59 /* Carbon.framework */, + 38387D1F22C93EAD6BBB61C4 /* ForceFeedback.framework */, + 38D4221E61EE625147985AC5 /* CoreFoundation.framework */, + 62D94D09415003812F1E7705 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 77E022337C09658B3958526B /* Products */ = { + isa = PBXGroup; + children = ( + 5DC743EB37AA06C502E07413 /* testrendertarget */, + ); + name = "Products"; + sourceTree = ""; + }; + 2C396D63169E05A60ED0355F /* Projects */ = { + isa = PBXGroup; + children = ( + 275635C11F9B24871D135BC0 /* SDL2main.xcodeproj */, + 70BD3C0C436C6BE872F40021 /* SDL2test.xcodeproj */, + 547D14EB049F6C4C0F9D2CAC /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 042D4774112A022979095876 /* Products */ = { + isa = PBXGroup; + children = ( + 44952EDF3A6609265F272595 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 60417E0308DA22FA03683E98 /* Products */ = { + isa = PBXGroup; + children = ( + 0DA230660E3568D853951172 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 593F46C26F7B0D81107B265F /* Products */ = { + isa = PBXGroup; + children = ( + 567D609F072E71E8522D1C3A /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4C732B57010B030438401115 /* testrendertarget */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2746168E78B9662A546F4CEB /* Build configuration list for PBXNativeTarget "testrendertarget" */; + buildPhases = ( + 74DB003875D669C13D5C19B5 /* Resources */, + 4ACA243C7DBD441B5F2303D1 /* Sources */, + 163234BB65884C0854210017 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 5F96190A675504D97D2935E1 /* PBXTargetDependency */, + 5AD762CF14193438725F46EA /* PBXTargetDependency */, + 1823637736006BD7103F3FA5 /* PBXTargetDependency */, + ); + name = "testrendertarget"; + productInstallPath = "$(HOME)/bin"; + productName = "testrendertarget"; + productReference = 5DC743EB37AA06C502E07413 /* testrendertarget */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendertarget" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 10ED6B1E2C0060B87FDC4B0B /* testrendertarget */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 042D4774112A022979095876 /* Products */; + ProjectRef = 275635C11F9B24871D135BC0 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 60417E0308DA22FA03683E98 /* Products */; + ProjectRef = 70BD3C0C436C6BE872F40021 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 593F46C26F7B0D81107B265F /* Products */; + ProjectRef = 547D14EB049F6C4C0F9D2CAC /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4C732B57010B030438401115 /* testrendertarget */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 44952EDF3A6609265F272595 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 2EB723783DF000AE22377789 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0DA230660E3568D853951172 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 0A9222342A42685C293626B3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 567D609F072E71E8522D1C3A /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 555176BD01CA0A9236A47B67 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 74DB003875D669C13D5C19B5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 4ACA243C7DBD441B5F2303D1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B704B3B412169616F405AB4 /* testrendertarget.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5F96190A675504D97D2935E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 70CA17E14C0C588337927538 /* PBXContainerItemProxy */; + }; + 5AD762CF14193438725F46EA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 58B634CC6256177716181B33 /* PBXContainerItemProxy */; + }; + 1823637736006BD7103F3FA5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 566A59D968E672FE1BBE7BAC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 58421254788B78CE5BA4118F /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Debug Universal"; + }; + 05D50592395E6E1B6D09740B /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Debug Native"; + }; + 6291441C453149691C506D28 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Release Universal"; + }; + 3AE663B44A376CCF3D1A169E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrendertarget"; + }; + name = "Release Native"; + }; + 44AF61D42E85363414780EFE /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 0F0E0052129063A118C95B2C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 7E8023D92FF302E51CDC5C12 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 60B80DA96425507E3E87448B /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2746168E78B9662A546F4CEB /* Build configuration list for PBXNativeTarget "testrendertarget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58421254788B78CE5BA4118F /* Debug Universal */, + 05D50592395E6E1B6D09740B /* Debug Native */, + 6291441C453149691C506D28 /* Release Universal */, + 3AE663B44A376CCF3D1A169E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrendertarget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 44AF61D42E85363414780EFE /* Debug Universal */, + 0F0E0052129063A118C95B2C /* Debug Native */, + 7E8023D92FF302E51CDC5C12 /* Release Universal */, + 60B80DA96425507E3E87448B /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testresample/testresample.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testresample/testresample.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..5107e324e2 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testresample/testresample.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 35E60F6354AB3B1641465D4A /* testresample.c in Sources */ = {isa = PBXBuildFile; fileRef = 5A48300878B47D4E1FE31A8B /* testresample.c */; }; + 52942F2C730C29A932CC23F0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CBB537361507EF0681B4F6C /* AudioToolbox.framework */; }; + 08AB19601F297D224DB60FF8 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E1948A3487A7E585B603A21 /* AudioUnit.framework */; }; + 62914E683E3457AE1D175136 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FF878A65DD1637B46D77963 /* Cocoa.framework */; }; + 02C4386A74BB2A155E332002 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39B466FE5F826A607FE12D44 /* CoreAudio.framework */; }; + 078B3B13743C1DB3765C2A8F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70556D2864B9465D11B804CA /* IOKit.framework */; }; + 3C7D390E7D95497131487DA0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 19D846FD2D7C3FA30DC53116 /* Carbon.framework */; }; + 62CC72E140B6273E13AC2AD6 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3306598066372C43058C2E68 /* ForceFeedback.framework */; }; + 162C37EE209550E918BA75C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 499D657658771ED837751255 /* CoreFoundation.framework */; }; + 748233240B166CB259FA588B /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 66A91A435AD843B471796928 /* OpenGL.framework */; }; + 745C51343A092ED47243453E /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 10BB19FD31EF6637365E7F8E /* libSDL2main.a */; }; + 42637B8B669979FF548C45A2 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B6A64F67EF874F943BD3FB3 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 64E44CA37FAD415158941B7D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 778746EA661A49E246EB7B37 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 5B1D612A14C260B921664D2E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 778746EA661A49E246EB7B37 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 34E93D6E2174487A011853A8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09D460E647E34821027B192E /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 6AE64D450E4708A308B534B9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09D460E647E34821027B192E /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5A48300878B47D4E1FE31A8B /* testresample.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testresample.c"; path = "../../../../../test/testresample.c"; sourceTree = ""; }; + 0CBB537361507EF0681B4F6C /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 7E1948A3487A7E585B603A21 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 7FF878A65DD1637B46D77963 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 39B466FE5F826A607FE12D44 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 70556D2864B9465D11B804CA /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 19D846FD2D7C3FA30DC53116 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 3306598066372C43058C2E68 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 499D657658771ED837751255 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 66A91A435AD843B471796928 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 5FF03E8E660B6D2731A74F95 /* testresample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testresample"; path = "testresample"; sourceTree = BUILT_PRODUCTS_DIR; }; + 778746EA661A49E246EB7B37 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 09D460E647E34821027B192E /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 74F318313E175C9156720941 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 52942F2C730C29A932CC23F0 /* AudioToolbox.framework in Frameworks */, + 08AB19601F297D224DB60FF8 /* AudioUnit.framework in Frameworks */, + 62914E683E3457AE1D175136 /* Cocoa.framework in Frameworks */, + 02C4386A74BB2A155E332002 /* CoreAudio.framework in Frameworks */, + 078B3B13743C1DB3765C2A8F /* IOKit.framework in Frameworks */, + 3C7D390E7D95497131487DA0 /* Carbon.framework in Frameworks */, + 62CC72E140B6273E13AC2AD6 /* ForceFeedback.framework in Frameworks */, + 162C37EE209550E918BA75C7 /* CoreFoundation.framework in Frameworks */, + 748233240B166CB259FA588B /* OpenGL.framework in Frameworks */, + 745C51343A092ED47243453E /* libSDL2main.a in Frameworks */, + 42637B8B669979FF548C45A2 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 52D3223A1F8C4E0D63875238 /* testresample */ = { + isa = PBXGroup; + children = ( + 1BA57A417A706E945B447221 /* test */, + 38D5462C2B0903561B281109 /* Frameworks */, + 370162B7169131C4775306B2 /* Products */, + 4F3145E22225682F00293278 /* Projects */, + ); + name = "testresample"; + sourceTree = ""; + }; + 1BA57A417A706E945B447221 /* test */ = { + isa = PBXGroup; + children = ( + 5A48300878B47D4E1FE31A8B /* testresample.c */, + ); + name = "test"; + sourceTree = ""; + }; + 38D5462C2B0903561B281109 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0CBB537361507EF0681B4F6C /* AudioToolbox.framework */, + 7E1948A3487A7E585B603A21 /* AudioUnit.framework */, + 7FF878A65DD1637B46D77963 /* Cocoa.framework */, + 39B466FE5F826A607FE12D44 /* CoreAudio.framework */, + 70556D2864B9465D11B804CA /* IOKit.framework */, + 19D846FD2D7C3FA30DC53116 /* Carbon.framework */, + 3306598066372C43058C2E68 /* ForceFeedback.framework */, + 499D657658771ED837751255 /* CoreFoundation.framework */, + 66A91A435AD843B471796928 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 370162B7169131C4775306B2 /* Products */ = { + isa = PBXGroup; + children = ( + 5FF03E8E660B6D2731A74F95 /* testresample */, + ); + name = "Products"; + sourceTree = ""; + }; + 4F3145E22225682F00293278 /* Projects */ = { + isa = PBXGroup; + children = ( + 778746EA661A49E246EB7B37 /* SDL2main.xcodeproj */, + 09D460E647E34821027B192E /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 310B4B41283E0C277FC51DB1 /* Products */ = { + isa = PBXGroup; + children = ( + 10BB19FD31EF6637365E7F8E /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 6FC711341BA778FB4F2458AC /* Products */ = { + isa = PBXGroup; + children = ( + 3B6A64F67EF874F943BD3FB3 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4FCF4C2A06B55A04436403D4 /* testresample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 481C528600225942153760DE /* Build configuration list for PBXNativeTarget "testresample" */; + buildPhases = ( + 28A520392EC1339B392D4CF4 /* Resources */, + 519913DE564E1DF6018B6D6E /* Sources */, + 74F318313E175C9156720941 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 09BF5D88172F33C4433E3E03 /* PBXTargetDependency */, + 0E9B660622D90178791A35AC /* PBXTargetDependency */, + ); + name = "testresample"; + productInstallPath = "$(HOME)/bin"; + productName = "testresample"; + productReference = 5FF03E8E660B6D2731A74F95 /* testresample */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testresample" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 52D3223A1F8C4E0D63875238 /* testresample */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 310B4B41283E0C277FC51DB1 /* Products */; + ProjectRef = 778746EA661A49E246EB7B37 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 6FC711341BA778FB4F2458AC /* Products */; + ProjectRef = 09D460E647E34821027B192E /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4FCF4C2A06B55A04436403D4 /* testresample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 10BB19FD31EF6637365E7F8E /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 64E44CA37FAD415158941B7D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3B6A64F67EF874F943BD3FB3 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 34E93D6E2174487A011853A8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 28A520392EC1339B392D4CF4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Debug/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.wav\" \"./Build/Release/sample.wav\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 519913DE564E1DF6018B6D6E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 35E60F6354AB3B1641465D4A /* testresample.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 09BF5D88172F33C4433E3E03 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5B1D612A14C260B921664D2E /* PBXContainerItemProxy */; + }; + 0E9B660622D90178791A35AC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6AE64D450E4708A308B534B9 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 6C99352C60BE006164D65852 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Debug Universal"; + }; + 2AAB6D3C0DB3127023080924 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Debug Native"; + }; + 1D8D19C100D347D84C7F5423 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Release Universal"; + }; + 656157FA6260106C2CED0CF6 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testresample"; + }; + name = "Release Native"; + }; + 01EB74C024E077CD3EBB0FE3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 534512B356FF2ECF26527BFE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 7104478B05B41C546B4071FE /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 753861341E056BE930E26639 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 481C528600225942153760DE /* Build configuration list for PBXNativeTarget "testresample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6C99352C60BE006164D65852 /* Debug Universal */, + 2AAB6D3C0DB3127023080924 /* Debug Native */, + 1D8D19C100D347D84C7F5423 /* Release Universal */, + 656157FA6260106C2CED0CF6 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testresample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 01EB74C024E077CD3EBB0FE3 /* Debug Universal */, + 534512B356FF2ECF26527BFE /* Debug Native */, + 7104478B05B41C546B4071FE /* Release Universal */, + 753861341E056BE930E26639 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testrumble/testrumble.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testrumble/testrumble.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..4cef097600 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testrumble/testrumble.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6F9008572AAF5CAA25E64C0B /* testrumble.c in Sources */ = {isa = PBXBuildFile; fileRef = 7D125FE5399D06F9596F1F9C /* testrumble.c */; }; + 4BD25BA164DB688456373A73 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 499970FD2BA1097174F51466 /* AudioToolbox.framework */; }; + 205403867CA67EA7304135DD /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 799A2065621B670930C61937 /* AudioUnit.framework */; }; + 623461621C14061F67875A87 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51AA0654008F2F3619EE7E1D /* Cocoa.framework */; }; + 454D70D417BE6DB51E063EEB /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7DA1090811CD670055C86B86 /* CoreAudio.framework */; }; + 0B0F0B9D27CD2C87703E7AFB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6EDC622706725F955AF12729 /* IOKit.framework */; }; + 78A129B337E341B301463E1F /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3400138E5D584509064E2BF1 /* Carbon.framework */; }; + 6FA6094F357D593933F121B2 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72E8708B7402562922B27994 /* ForceFeedback.framework */; }; + 51D245A3018028126FEA2701 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58DC7F2843985EB218C013A9 /* CoreFoundation.framework */; }; + 72D7390E67D560E0380C1D3D /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F1B5AD43A715DC349DD0323 /* OpenGL.framework */; }; + 051F53FE5DF93941628128E5 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 735E5D7810073D9F458F57C0 /* libSDL2main.a */; }; + 194255B23AF87165510B2E12 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BF74F9C3F8823E067FE7C0C /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 48BC504841350CC511F52C0E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 201B54242D4E03BC32984F78 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 05FC1724492D4F7E02344DAA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 201B54242D4E03BC32984F78 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 38E5732A537D57FB3CC331B4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6B100D996F7235E825286974 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 2D1B5D0573E1651B76ED628B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6B100D996F7235E825286974 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 7D125FE5399D06F9596F1F9C /* testrumble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testrumble.c"; path = "../../../../../test/testrumble.c"; sourceTree = ""; }; + 499970FD2BA1097174F51466 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 799A2065621B670930C61937 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 51AA0654008F2F3619EE7E1D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7DA1090811CD670055C86B86 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6EDC622706725F955AF12729 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3400138E5D584509064E2BF1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 72E8708B7402562922B27994 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 58DC7F2843985EB218C013A9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 6F1B5AD43A715DC349DD0323 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 104F354F123A382518D83425 /* testrumble */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testrumble"; path = "testrumble"; sourceTree = BUILT_PRODUCTS_DIR; }; + 201B54242D4E03BC32984F78 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 6B100D996F7235E825286974 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1CCE52CC6B595625563D4E84 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BD25BA164DB688456373A73 /* AudioToolbox.framework in Frameworks */, + 205403867CA67EA7304135DD /* AudioUnit.framework in Frameworks */, + 623461621C14061F67875A87 /* Cocoa.framework in Frameworks */, + 454D70D417BE6DB51E063EEB /* CoreAudio.framework in Frameworks */, + 0B0F0B9D27CD2C87703E7AFB /* IOKit.framework in Frameworks */, + 78A129B337E341B301463E1F /* Carbon.framework in Frameworks */, + 6FA6094F357D593933F121B2 /* ForceFeedback.framework in Frameworks */, + 51D245A3018028126FEA2701 /* CoreFoundation.framework in Frameworks */, + 72D7390E67D560E0380C1D3D /* OpenGL.framework in Frameworks */, + 051F53FE5DF93941628128E5 /* libSDL2main.a in Frameworks */, + 194255B23AF87165510B2E12 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 57303EE34AB6176C387F3E10 /* testrumble */ = { + isa = PBXGroup; + children = ( + 197A54012758205821907AAF /* test */, + 79670D717ED505B55EE44D34 /* Frameworks */, + 3E9B702B34D941C86B661F5F /* Products */, + 47756CA0355E5B12395C01C2 /* Projects */, + ); + name = "testrumble"; + sourceTree = ""; + }; + 197A54012758205821907AAF /* test */ = { + isa = PBXGroup; + children = ( + 7D125FE5399D06F9596F1F9C /* testrumble.c */, + ); + name = "test"; + sourceTree = ""; + }; + 79670D717ED505B55EE44D34 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 499970FD2BA1097174F51466 /* AudioToolbox.framework */, + 799A2065621B670930C61937 /* AudioUnit.framework */, + 51AA0654008F2F3619EE7E1D /* Cocoa.framework */, + 7DA1090811CD670055C86B86 /* CoreAudio.framework */, + 6EDC622706725F955AF12729 /* IOKit.framework */, + 3400138E5D584509064E2BF1 /* Carbon.framework */, + 72E8708B7402562922B27994 /* ForceFeedback.framework */, + 58DC7F2843985EB218C013A9 /* CoreFoundation.framework */, + 6F1B5AD43A715DC349DD0323 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 3E9B702B34D941C86B661F5F /* Products */ = { + isa = PBXGroup; + children = ( + 104F354F123A382518D83425 /* testrumble */, + ); + name = "Products"; + sourceTree = ""; + }; + 47756CA0355E5B12395C01C2 /* Projects */ = { + isa = PBXGroup; + children = ( + 201B54242D4E03BC32984F78 /* SDL2main.xcodeproj */, + 6B100D996F7235E825286974 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 60F642923925395F36795F9F /* Products */ = { + isa = PBXGroup; + children = ( + 735E5D7810073D9F458F57C0 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 53AA6E2757A342AC34311DA1 /* Products */ = { + isa = PBXGroup; + children = ( + 7BF74F9C3F8823E067FE7C0C /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0183499B688451FC2EFF25D5 /* testrumble */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4E79069B65D9450B63387937 /* Build configuration list for PBXNativeTarget "testrumble" */; + buildPhases = ( + 2825253C3BC10D0E1ADF3C76 /* Resources */, + 7609740B18523B637DD52FF9 /* Sources */, + 1CCE52CC6B595625563D4E84 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 616678770C8F3BF768D45AA6 /* PBXTargetDependency */, + 211D2AD250037C05698F3765 /* PBXTargetDependency */, + ); + name = "testrumble"; + productInstallPath = "$(HOME)/bin"; + productName = "testrumble"; + productReference = 104F354F123A382518D83425 /* testrumble */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrumble" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 57303EE34AB6176C387F3E10 /* testrumble */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 60F642923925395F36795F9F /* Products */; + ProjectRef = 201B54242D4E03BC32984F78 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 53AA6E2757A342AC34311DA1 /* Products */; + ProjectRef = 6B100D996F7235E825286974 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 0183499B688451FC2EFF25D5 /* testrumble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 735E5D7810073D9F458F57C0 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 48BC504841350CC511F52C0E /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 7BF74F9C3F8823E067FE7C0C /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 38E5732A537D57FB3CC331B4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2825253C3BC10D0E1ADF3C76 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7609740B18523B637DD52FF9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F9008572AAF5CAA25E64C0B /* testrumble.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 616678770C8F3BF768D45AA6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 05FC1724492D4F7E02344DAA /* PBXContainerItemProxy */; + }; + 211D2AD250037C05698F3765 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 2D1B5D0573E1651B76ED628B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 77685791061D714C5FE01936 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Debug Universal"; + }; + 2E2853B06D9A448729AF304E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Debug Native"; + }; + 6E56703214E40DA62D3C66A2 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Release Universal"; + }; + 4E4064F451AF51C4568D5408 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testrumble"; + }; + name = "Release Native"; + }; + 52003DC23AF1417C73D75457 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 0A3355EA1B75307C53726793 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 253773595D0172953F164054 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 7CC24FE209134E7E52E2269A /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4E79069B65D9450B63387937 /* Build configuration list for PBXNativeTarget "testrumble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 77685791061D714C5FE01936 /* Debug Universal */, + 2E2853B06D9A448729AF304E /* Debug Native */, + 6E56703214E40DA62D3C66A2 /* Release Universal */, + 4E4064F451AF51C4568D5408 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testrumble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 52003DC23AF1417C73D75457 /* Debug Universal */, + 0A3355EA1B75307C53726793 /* Debug Native */, + 253773595D0172953F164054 /* Release Universal */, + 7CC24FE209134E7E52E2269A /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testscale/testscale.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testscale/testscale.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..d57e7b6e15 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testscale/testscale.xcodeproj/project.pbxproj @@ -0,0 +1,515 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 52A221D55B3035AA48E47AFE /* testscale.c in Sources */ = {isa = PBXBuildFile; fileRef = 00535F4809701A374C8D4F16 /* testscale.c */; }; + 6E950B652E48203B26DA56F6 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2828778559057C4275791684 /* AudioToolbox.framework */; }; + 642549FE569F735F77A22EDC /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 37B234F173D66DDD4917203A /* AudioUnit.framework */; }; + 79E21AC86E0C750B4C7260C1 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6F5D533C37A4306622FE7B89 /* Cocoa.framework */; }; + 2C0848C857713D0814FE5DC7 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5006786347D501D573DA12F9 /* CoreAudio.framework */; }; + 61822DDF3B123D4523CF7108 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 520C30BD4CB0740C7EC62E0B /* IOKit.framework */; }; + 42F31FB012D41E435EC31458 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0465328411E81A4C73EB6A5E /* Carbon.framework */; }; + 720A7D5C48CE5B426A883439 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39AE0EEA2A4E28617D632101 /* ForceFeedback.framework */; }; + 7A4426FB44DA7415350B77CE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 355C2D5C228003A43DDE57FA /* CoreFoundation.framework */; }; + 6B4051E407734A7159BB19A9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1FD3621E4CF31CB2742F558E /* OpenGL.framework */; }; + 5B1F0D2C5CFF1B1F295E6F31 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 52AC2AEA6E120291253826F2 /* libSDL2main.a */; }; + 1C823D8B2BA249FC50AF2647 /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EFA1AA6315E42C921515D01 /* libSDL2test.a */; }; + 63686B8779ED58B571C01A84 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C0643315CBB1EC265804FC6 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 01A129B75F6168F7529011C3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2A9D69F103BE41AE368E42A6 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 53624E8942002E5825A2412F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2A9D69F103BE41AE368E42A6 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 28044D84291474F73DBB68DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1F443D607BF72841046529A0 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 79A365D807CE0037464E3EAF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1F443D607BF72841046529A0 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 7A6320CC6DC956590E800F44 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 40646BF671F8674E48E6152E /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 6E5C0D395563144B7BEE4D26 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 40646BF671F8674E48E6152E /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 00535F4809701A374C8D4F16 /* testscale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testscale.c"; path = "../../../../../test/testscale.c"; sourceTree = ""; }; + 2828778559057C4275791684 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 37B234F173D66DDD4917203A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 6F5D533C37A4306622FE7B89 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5006786347D501D573DA12F9 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 520C30BD4CB0740C7EC62E0B /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 0465328411E81A4C73EB6A5E /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 39AE0EEA2A4E28617D632101 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 355C2D5C228003A43DDE57FA /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 1FD3621E4CF31CB2742F558E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 4B66367B5F7C5415696F1E3F /* testscale */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testscale"; path = "testscale"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2A9D69F103BE41AE368E42A6 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 1F443D607BF72841046529A0 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 40646BF671F8674E48E6152E /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 4A680D2877B935F038DF43E1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6E950B652E48203B26DA56F6 /* AudioToolbox.framework in Frameworks */, + 642549FE569F735F77A22EDC /* AudioUnit.framework in Frameworks */, + 79E21AC86E0C750B4C7260C1 /* Cocoa.framework in Frameworks */, + 2C0848C857713D0814FE5DC7 /* CoreAudio.framework in Frameworks */, + 61822DDF3B123D4523CF7108 /* IOKit.framework in Frameworks */, + 42F31FB012D41E435EC31458 /* Carbon.framework in Frameworks */, + 720A7D5C48CE5B426A883439 /* ForceFeedback.framework in Frameworks */, + 7A4426FB44DA7415350B77CE /* CoreFoundation.framework in Frameworks */, + 6B4051E407734A7159BB19A9 /* OpenGL.framework in Frameworks */, + 5B1F0D2C5CFF1B1F295E6F31 /* libSDL2main.a in Frameworks */, + 1C823D8B2BA249FC50AF2647 /* libSDL2test.a in Frameworks */, + 63686B8779ED58B571C01A84 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 73B23D0F4A5F541B793A6E75 /* testscale */ = { + isa = PBXGroup; + children = ( + 73FA2E7E6DD4348D251601FC /* test */, + 5A4644114B722F7B584B6025 /* Frameworks */, + 3AF9594D5DC35F3A670255B2 /* Products */, + 1F0A00E54FD148FC5495102D /* Projects */, + ); + name = "testscale"; + sourceTree = ""; + }; + 73FA2E7E6DD4348D251601FC /* test */ = { + isa = PBXGroup; + children = ( + 00535F4809701A374C8D4F16 /* testscale.c */, + ); + name = "test"; + sourceTree = ""; + }; + 5A4644114B722F7B584B6025 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2828778559057C4275791684 /* AudioToolbox.framework */, + 37B234F173D66DDD4917203A /* AudioUnit.framework */, + 6F5D533C37A4306622FE7B89 /* Cocoa.framework */, + 5006786347D501D573DA12F9 /* CoreAudio.framework */, + 520C30BD4CB0740C7EC62E0B /* IOKit.framework */, + 0465328411E81A4C73EB6A5E /* Carbon.framework */, + 39AE0EEA2A4E28617D632101 /* ForceFeedback.framework */, + 355C2D5C228003A43DDE57FA /* CoreFoundation.framework */, + 1FD3621E4CF31CB2742F558E /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 3AF9594D5DC35F3A670255B2 /* Products */ = { + isa = PBXGroup; + children = ( + 4B66367B5F7C5415696F1E3F /* testscale */, + ); + name = "Products"; + sourceTree = ""; + }; + 1F0A00E54FD148FC5495102D /* Projects */ = { + isa = PBXGroup; + children = ( + 2A9D69F103BE41AE368E42A6 /* SDL2main.xcodeproj */, + 1F443D607BF72841046529A0 /* SDL2test.xcodeproj */, + 40646BF671F8674E48E6152E /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 273E13C701DD143B3F030CAA /* Products */ = { + isa = PBXGroup; + children = ( + 52AC2AEA6E120291253826F2 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4EAB5A273F057F3E63B0385A /* Products */ = { + isa = PBXGroup; + children = ( + 5EFA1AA6315E42C921515D01 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 676F64AF31104FF028C41749 /* Products */ = { + isa = PBXGroup; + children = ( + 2C0643315CBB1EC265804FC6 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 74B1378C7D2B26BD44A07C03 /* testscale */ = { + isa = PBXNativeTarget; + buildConfigurationList = 03E1517B155B1AC915BE0CB4 /* Build configuration list for PBXNativeTarget "testscale" */; + buildPhases = ( + 3AA36239437419615A2003AD /* Resources */, + 03392D574E91389F57AD32C7 /* Sources */, + 4A680D2877B935F038DF43E1 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 2A2E618162F62A1569752B8B /* PBXTargetDependency */, + 61985AF927E471BF61950A41 /* PBXTargetDependency */, + 24CB1AA7778A0B06514A7003 /* PBXTargetDependency */, + ); + name = "testscale"; + productInstallPath = "$(HOME)/bin"; + productName = "testscale"; + productReference = 4B66367B5F7C5415696F1E3F /* testscale */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testscale" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 73B23D0F4A5F541B793A6E75 /* testscale */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 273E13C701DD143B3F030CAA /* Products */; + ProjectRef = 2A9D69F103BE41AE368E42A6 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4EAB5A273F057F3E63B0385A /* Products */; + ProjectRef = 1F443D607BF72841046529A0 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 676F64AF31104FF028C41749 /* Products */; + ProjectRef = 40646BF671F8674E48E6152E /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 74B1378C7D2B26BD44A07C03 /* testscale */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 52AC2AEA6E120291253826F2 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 01A129B75F6168F7529011C3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5EFA1AA6315E42C921515D01 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 28044D84291474F73DBB68DE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2C0643315CBB1EC265804FC6 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 7A6320CC6DC956590E800F44 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 3AA36239437419615A2003AD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Debug/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/sample.bmp\" \"./Build/Release/sample.bmp\"\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 03392D574E91389F57AD32C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 52A221D55B3035AA48E47AFE /* testscale.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 2A2E618162F62A1569752B8B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 53624E8942002E5825A2412F /* PBXContainerItemProxy */; + }; + 61985AF927E471BF61950A41 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 79A365D807CE0037464E3EAF /* PBXContainerItemProxy */; + }; + 24CB1AA7778A0B06514A7003 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 6E5C0D395563144B7BEE4D26 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2CE4638609AA08631BCE316D /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Debug Universal"; + }; + 274B38691BF232E7794600CA /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Debug Native"; + }; + 04B6504B0E4216675D0B0829 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Release Universal"; + }; + 53485C2C7372770C5C3F39D0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testscale"; + }; + name = "Release Native"; + }; + 08675BEB3FA11B3B4ED5091E /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 64357811288810543A7109A8 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 498223CF7F1C33A114900BB7 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 1A934A23712621042E0156BD /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 03E1517B155B1AC915BE0CB4 /* Build configuration list for PBXNativeTarget "testscale" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2CE4638609AA08631BCE316D /* Debug Universal */, + 274B38691BF232E7794600CA /* Debug Native */, + 04B6504B0E4216675D0B0829 /* Release Universal */, + 53485C2C7372770C5C3F39D0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testscale" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 08675BEB3FA11B3B4ED5091E /* Debug Universal */, + 64357811288810543A7109A8 /* Debug Native */, + 498223CF7F1C33A114900BB7 /* Release Universal */, + 1A934A23712621042E0156BD /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testsem/testsem.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testsem/testsem.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..0ec38acb85 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testsem/testsem.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 15293CD565D673E00A306949 /* testsem.c in Sources */ = {isa = PBXBuildFile; fileRef = 46376D2A0F3E63E642A9008A /* testsem.c */; }; + 34F7559F3D8051541B8765AF /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CBE69624E0C3240370D5F75 /* AudioToolbox.framework */; }; + 59443F4965D456B869BA5CFB /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 62196DFD3419728651E6592D /* AudioUnit.framework */; }; + 041D157E105405606E396C24 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7151150264850DF30448381F /* Cocoa.framework */; }; + 76387C39291762BE512642A1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 517A622C67F444E81A496C71 /* CoreAudio.framework */; }; + 65BB6C54313B558D50153BB6 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6D1A61B40F3023663DF871AE /* IOKit.framework */; }; + 725767564E534EF6258A3914 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6614396D4B0C1F865432485F /* Carbon.framework */; }; + 1D1176447BFC01B7391546E1 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 661450B9615D2DFD3DF01107 /* ForceFeedback.framework */; }; + 21C402C842603E0B5C063117 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E99322466F15BB75C5306F2 /* CoreFoundation.framework */; }; + 6D3E2D397AAB2D4F4CF2384F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 034758F94B1C45A1751279C4 /* OpenGL.framework */; }; + 794073935E046F9479F74B8E /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4455588F1B4354006CAB6923 /* libSDL2main.a */; }; + 605D79D6047D2D9D53AE6694 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78797F4731811A7A48E27B04 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 599556D13FAA589D40A54FB4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 338C316705D43C191A142099 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 40E669BD1D8F177E5ABC6D11 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 338C316705D43C191A142099 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 4E40097511B1343866F3614D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 798D351331A7679B03FF6215 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 24860312212444345CEF7130 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 798D351331A7679B03FF6215 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 46376D2A0F3E63E642A9008A /* testsem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testsem.c"; path = "../../../../../test/testsem.c"; sourceTree = ""; }; + 6CBE69624E0C3240370D5F75 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 62196DFD3419728651E6592D /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 7151150264850DF30448381F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 517A622C67F444E81A496C71 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6D1A61B40F3023663DF871AE /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 6614396D4B0C1F865432485F /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 661450B9615D2DFD3DF01107 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 6E99322466F15BB75C5306F2 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 034758F94B1C45A1751279C4 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 119B0F9946CA27055E0C1E00 /* testsem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testsem"; path = "testsem"; sourceTree = BUILT_PRODUCTS_DIR; }; + 338C316705D43C191A142099 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 798D351331A7679B03FF6215 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 50C6081943C07DE36B0870A3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 34F7559F3D8051541B8765AF /* AudioToolbox.framework in Frameworks */, + 59443F4965D456B869BA5CFB /* AudioUnit.framework in Frameworks */, + 041D157E105405606E396C24 /* Cocoa.framework in Frameworks */, + 76387C39291762BE512642A1 /* CoreAudio.framework in Frameworks */, + 65BB6C54313B558D50153BB6 /* IOKit.framework in Frameworks */, + 725767564E534EF6258A3914 /* Carbon.framework in Frameworks */, + 1D1176447BFC01B7391546E1 /* ForceFeedback.framework in Frameworks */, + 21C402C842603E0B5C063117 /* CoreFoundation.framework in Frameworks */, + 6D3E2D397AAB2D4F4CF2384F /* OpenGL.framework in Frameworks */, + 794073935E046F9479F74B8E /* libSDL2main.a in Frameworks */, + 605D79D6047D2D9D53AE6694 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0D8207B92FE70FD441786A5E /* testsem */ = { + isa = PBXGroup; + children = ( + 01BA18E9748100B710E73A47 /* test */, + 45610B86390929E3259635D9 /* Frameworks */, + 626F7C3136760CDC4C4C2AD6 /* Products */, + 0342221460A45C5907422F2D /* Projects */, + ); + name = "testsem"; + sourceTree = ""; + }; + 01BA18E9748100B710E73A47 /* test */ = { + isa = PBXGroup; + children = ( + 46376D2A0F3E63E642A9008A /* testsem.c */, + ); + name = "test"; + sourceTree = ""; + }; + 45610B86390929E3259635D9 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6CBE69624E0C3240370D5F75 /* AudioToolbox.framework */, + 62196DFD3419728651E6592D /* AudioUnit.framework */, + 7151150264850DF30448381F /* Cocoa.framework */, + 517A622C67F444E81A496C71 /* CoreAudio.framework */, + 6D1A61B40F3023663DF871AE /* IOKit.framework */, + 6614396D4B0C1F865432485F /* Carbon.framework */, + 661450B9615D2DFD3DF01107 /* ForceFeedback.framework */, + 6E99322466F15BB75C5306F2 /* CoreFoundation.framework */, + 034758F94B1C45A1751279C4 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 626F7C3136760CDC4C4C2AD6 /* Products */ = { + isa = PBXGroup; + children = ( + 119B0F9946CA27055E0C1E00 /* testsem */, + ); + name = "Products"; + sourceTree = ""; + }; + 0342221460A45C5907422F2D /* Projects */ = { + isa = PBXGroup; + children = ( + 338C316705D43C191A142099 /* SDL2main.xcodeproj */, + 798D351331A7679B03FF6215 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 6BD6360A535250756CF217E9 /* Products */ = { + isa = PBXGroup; + children = ( + 4455588F1B4354006CAB6923 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 79433183264A520502492116 /* Products */ = { + isa = PBXGroup; + children = ( + 78797F4731811A7A48E27B04 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 18C935D7602B31BD035777EB /* testsem */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2C4E68B156C94A493CF52D2D /* Build configuration list for PBXNativeTarget "testsem" */; + buildPhases = ( + 236E2EBD14B875816E1C2A3D /* Resources */, + 2B6E4A4A58710BCC2787373C /* Sources */, + 50C6081943C07DE36B0870A3 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 13696F900DBB228A32266024 /* PBXTargetDependency */, + 2A1A47952961593B614862EE /* PBXTargetDependency */, + ); + name = "testsem"; + productInstallPath = "$(HOME)/bin"; + productName = "testsem"; + productReference = 119B0F9946CA27055E0C1E00 /* testsem */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsem" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 0D8207B92FE70FD441786A5E /* testsem */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 6BD6360A535250756CF217E9 /* Products */; + ProjectRef = 338C316705D43C191A142099 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 79433183264A520502492116 /* Products */; + ProjectRef = 798D351331A7679B03FF6215 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 18C935D7602B31BD035777EB /* testsem */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 4455588F1B4354006CAB6923 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 599556D13FAA589D40A54FB4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 78797F4731811A7A48E27B04 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 4E40097511B1343866F3614D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 236E2EBD14B875816E1C2A3D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 2B6E4A4A58710BCC2787373C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 15293CD565D673E00A306949 /* testsem.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 13696F900DBB228A32266024 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 40E669BD1D8F177E5ABC6D11 /* PBXContainerItemProxy */; + }; + 2A1A47952961593B614862EE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 24860312212444345CEF7130 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 133A7169340607BC74A8451A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Debug Universal"; + }; + 7DF578DA40E864AE1A5D6C60 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Debug Native"; + }; + 49E90593292B4DF114A85C27 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Release Universal"; + }; + 7E2275970D556D854BEC7648 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsem"; + }; + name = "Release Native"; + }; + 54F00BE30C7237C44E96094A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 45ED5B0C757A360863CC75EB /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 3CAF08882F85613C2D092FE5 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 772133E278EA577209F21ED1 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2C4E68B156C94A493CF52D2D /* Build configuration list for PBXNativeTarget "testsem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 133A7169340607BC74A8451A /* Debug Universal */, + 7DF578DA40E864AE1A5D6C60 /* Debug Native */, + 49E90593292B4DF114A85C27 /* Release Universal */, + 7E2275970D556D854BEC7648 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 54F00BE30C7237C44E96094A /* Debug Universal */, + 45ED5B0C757A360863CC75EB /* Debug Native */, + 3CAF08882F85613C2D092FE5 /* Release Universal */, + 772133E278EA577209F21ED1 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testshader/testshader.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testshader/testshader.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..b893a7764f --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testshader/testshader.xcodeproj/project.pbxproj @@ -0,0 +1,476 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 470C1B0B2EED6E5F608B04C8 /* testshader.c in Sources */ = {isa = PBXBuildFile; fileRef = 557E7D2E0A541B16566C02F9 /* testshader.c */; }; + 166B0AC3120A67612E387AF8 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 790E2E6D0D5B5ADE257F36F9 /* AudioToolbox.framework */; }; + 6A5317FF02547F9466AF2B87 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 34161F8824266DFF21F44BBB /* AudioUnit.framework */; }; + 5F2435E54ED52EE620980C37 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A0B02673EBC337F0DB62D8A /* Cocoa.framework */; }; + 212E74471F5E777C76447768 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AA15B657F20259D15354D0D /* CoreAudio.framework */; }; + 501D54264959234E627F1686 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6089497A08314AE243BF61B3 /* IOKit.framework */; }; + 010A4B095B4B521429FE1093 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A512C430FDD19D440DB7F37 /* Carbon.framework */; }; + 0BEE76332FEC3295742C7B68 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 619B1D64302C1E3469FE2CAA /* ForceFeedback.framework */; }; + 70A30E6000F62A70590853EE /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 15A6032D33E7180F130561E6 /* CoreFoundation.framework */; }; + 62370A7B33A27ACD499D1BFC /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 68EC19C50E030A4826E24463 /* OpenGL.framework */; }; + 233449FB3C62689E755960EB /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CD942FD27675F6E37CD33BE /* libSDL2main.a */; }; + 640659372D4D5BA80C196FEA /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 381C64BA0E3C06E9370C7F67 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0506771A72B1769A23BA18B9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 25FF16D668E6103A712765EE /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 457335A766F836B46B3025CE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 25FF16D668E6103A712765EE /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 0A69131702E32CF24A545F54 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 729268B820F3534F0A70743C /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 26D971DD15775F9B62560F54 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 729268B820F3534F0A70743C /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 557E7D2E0A541B16566C02F9 /* testshader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testshader.c"; path = "../../../../../test/testshader.c"; sourceTree = ""; }; + 790E2E6D0D5B5ADE257F36F9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 34161F8824266DFF21F44BBB /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 6A0B02673EBC337F0DB62D8A /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 1AA15B657F20259D15354D0D /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 6089497A08314AE243BF61B3 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3A512C430FDD19D440DB7F37 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 619B1D64302C1E3469FE2CAA /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 15A6032D33E7180F130561E6 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 68EC19C50E030A4826E24463 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 43821E2F33B54FD537993116 /* testshader */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testshader"; path = "testshader"; sourceTree = BUILT_PRODUCTS_DIR; }; + 25FF16D668E6103A712765EE /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 729268B820F3534F0A70743C /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 783D02DD3A1B438A3FF8692D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 166B0AC3120A67612E387AF8 /* AudioToolbox.framework in Frameworks */, + 6A5317FF02547F9466AF2B87 /* AudioUnit.framework in Frameworks */, + 5F2435E54ED52EE620980C37 /* Cocoa.framework in Frameworks */, + 212E74471F5E777C76447768 /* CoreAudio.framework in Frameworks */, + 501D54264959234E627F1686 /* IOKit.framework in Frameworks */, + 010A4B095B4B521429FE1093 /* Carbon.framework in Frameworks */, + 0BEE76332FEC3295742C7B68 /* ForceFeedback.framework in Frameworks */, + 70A30E6000F62A70590853EE /* CoreFoundation.framework in Frameworks */, + 62370A7B33A27ACD499D1BFC /* OpenGL.framework in Frameworks */, + 233449FB3C62689E755960EB /* libSDL2main.a in Frameworks */, + 640659372D4D5BA80C196FEA /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 418A55677ED642091AE1555C /* testshader */ = { + isa = PBXGroup; + children = ( + 339D187D402018EA409A5FAE /* test */, + 0A1830805C366D0D0A7A5D7F /* Frameworks */, + 515007C33BBD000303726B8C /* Products */, + 3BBF2B646D5102A604E03F40 /* Projects */, + ); + name = "testshader"; + sourceTree = ""; + }; + 339D187D402018EA409A5FAE /* test */ = { + isa = PBXGroup; + children = ( + 557E7D2E0A541B16566C02F9 /* testshader.c */, + ); + name = "test"; + sourceTree = ""; + }; + 0A1830805C366D0D0A7A5D7F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 790E2E6D0D5B5ADE257F36F9 /* AudioToolbox.framework */, + 34161F8824266DFF21F44BBB /* AudioUnit.framework */, + 6A0B02673EBC337F0DB62D8A /* Cocoa.framework */, + 1AA15B657F20259D15354D0D /* CoreAudio.framework */, + 6089497A08314AE243BF61B3 /* IOKit.framework */, + 3A512C430FDD19D440DB7F37 /* Carbon.framework */, + 619B1D64302C1E3469FE2CAA /* ForceFeedback.framework */, + 15A6032D33E7180F130561E6 /* CoreFoundation.framework */, + 68EC19C50E030A4826E24463 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 515007C33BBD000303726B8C /* Products */ = { + isa = PBXGroup; + children = ( + 43821E2F33B54FD537993116 /* testshader */, + ); + name = "Products"; + sourceTree = ""; + }; + 3BBF2B646D5102A604E03F40 /* Projects */ = { + isa = PBXGroup; + children = ( + 25FF16D668E6103A712765EE /* SDL2main.xcodeproj */, + 729268B820F3534F0A70743C /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7D6462327CDF40E3125B4DA0 /* Products */ = { + isa = PBXGroup; + children = ( + 7CD942FD27675F6E37CD33BE /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 763455E764173830123E492E /* Products */ = { + isa = PBXGroup; + children = ( + 381C64BA0E3C06E9370C7F67 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1F9925314B933D6D7CF36D7D /* testshader */ = { + isa = PBXNativeTarget; + buildConfigurationList = 12736C0C38D5350F70D76073 /* Build configuration list for PBXNativeTarget "testshader" */; + buildPhases = ( + 5BA622D37B3D6C8056BF4444 /* Resources */, + 53430D4F72D23F4F199070A3 /* Sources */, + 783D02DD3A1B438A3FF8692D /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 31D33CF71209402B5AC00751 /* PBXTargetDependency */, + 0AFA59413C3D59DA1AAE33ED /* PBXTargetDependency */, + ); + name = "testshader"; + productInstallPath = "$(HOME)/bin"; + productName = "testshader"; + productReference = 43821E2F33B54FD537993116 /* testshader */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshader" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 418A55677ED642091AE1555C /* testshader */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7D6462327CDF40E3125B4DA0 /* Products */; + ProjectRef = 25FF16D668E6103A712765EE /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 763455E764173830123E492E /* Products */; + ProjectRef = 729268B820F3534F0A70743C /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1F9925314B933D6D7CF36D7D /* testshader */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 7CD942FD27675F6E37CD33BE /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 0506771A72B1769A23BA18B9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 381C64BA0E3C06E9370C7F67 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 0A69131702E32CF24A545F54 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5BA622D37B3D6C8056BF4444 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 53430D4F72D23F4F199070A3 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 470C1B0B2EED6E5F608B04C8 /* testshader.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 31D33CF71209402B5AC00751 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 457335A766F836B46B3025CE /* PBXContainerItemProxy */; + }; + 0AFA59413C3D59DA1AAE33ED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 26D971DD15775F9B62560F54 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 59791E272FC33A0F41CC71C2 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Debug Universal"; + }; + 772C1CBA178C6E884543338A /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Debug Native"; + }; + 198E58DF4FA24C0B20487A3E /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Release Universal"; + }; + 13D949011F78183C43633663 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshader"; + }; + name = "Release Native"; + }; + 091826C50DC736A94B7B0D4A /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 6845108D406139B54A903590 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 2390661773D818592A2D78C6 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4A4E79C527AE1B9776C92AAF /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + "HAVE_OPENGL", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 12736C0C38D5350F70D76073 /* Build configuration list for PBXNativeTarget "testshader" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 59791E272FC33A0F41CC71C2 /* Debug Universal */, + 772C1CBA178C6E884543338A /* Debug Native */, + 198E58DF4FA24C0B20487A3E /* Release Universal */, + 13D949011F78183C43633663 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshader" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 091826C50DC736A94B7B0D4A /* Debug Universal */, + 6845108D406139B54A903590 /* Debug Native */, + 2390661773D818592A2D78C6 /* Release Universal */, + 4A4E79C527AE1B9776C92AAF /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testshape/testshape.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testshape/testshape.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..2df30446d0 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testshape/testshape.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 408F106907F630850F6E3BAD /* testshape.c in Sources */ = {isa = PBXBuildFile; fileRef = 06F1518872D849DE23A129A5 /* testshape.c */; }; + 685069D73E480D2E05A06B09 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 703A1F11388C11C40CD923AF /* AudioToolbox.framework */; }; + 28D61F7221B105FA79C90159 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E447E4E35D554877889777A /* AudioUnit.framework */; }; + 503F080F2D1A24E2289019C3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33B150B2104E278728300852 /* Cocoa.framework */; }; + 1F1923805A2216ED2F5D41C1 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76BC58620CC21E460F4D2316 /* CoreAudio.framework */; }; + 51ED1EE17305511A42F17267 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C41266F6B602BFE6F4A6BFB /* IOKit.framework */; }; + 55B37DAA55FF6AF1249220BC /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 007511CB2DCD12E92A0C3769 /* Carbon.framework */; }; + 043811DD74E057C174A3062A /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D58035C2D162A38666670E3 /* ForceFeedback.framework */; }; + 0DE950AB4BA7591C44DB0AF4 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39D5008468FA198059DA251C /* CoreFoundation.framework */; }; + 5F9A2E955F80612E2FB81757 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57B475561300743D704C2C66 /* OpenGL.framework */; }; + 53D755BD0FED3F5428477F40 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 77476C792D8647470D493640 /* libSDL2main.a */; }; + 79F1721C416A429612A44F07 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 16FB778C2826097B07822140 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6A4E33E2490B13323D1B5276 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3FD36F344E2B76664E737AAB /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 47AF3A8E4FDE09FF56107181 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3FD36F344E2B76664E737AAB /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 738E7B5A02DE7D366CBB1DE3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C82B9F67787B504D026A0B /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 35847F444F2200F559CC1556 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C82B9F67787B504D026A0B /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 06F1518872D849DE23A129A5 /* testshape.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testshape.c"; path = "../../../../../test/testshape.c"; sourceTree = ""; }; + 703A1F11388C11C40CD923AF /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4E447E4E35D554877889777A /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 33B150B2104E278728300852 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 76BC58620CC21E460F4D2316 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1C41266F6B602BFE6F4A6BFB /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 007511CB2DCD12E92A0C3769 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 2D58035C2D162A38666670E3 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 39D5008468FA198059DA251C /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 57B475561300743D704C2C66 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 2B58287A011A6BE672AC3A54 /* testshape */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testshape"; path = "testshape"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3FD36F344E2B76664E737AAB /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 78C82B9F67787B504D026A0B /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 197577442FB076C67D38038E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 685069D73E480D2E05A06B09 /* AudioToolbox.framework in Frameworks */, + 28D61F7221B105FA79C90159 /* AudioUnit.framework in Frameworks */, + 503F080F2D1A24E2289019C3 /* Cocoa.framework in Frameworks */, + 1F1923805A2216ED2F5D41C1 /* CoreAudio.framework in Frameworks */, + 51ED1EE17305511A42F17267 /* IOKit.framework in Frameworks */, + 55B37DAA55FF6AF1249220BC /* Carbon.framework in Frameworks */, + 043811DD74E057C174A3062A /* ForceFeedback.framework in Frameworks */, + 0DE950AB4BA7591C44DB0AF4 /* CoreFoundation.framework in Frameworks */, + 5F9A2E955F80612E2FB81757 /* OpenGL.framework in Frameworks */, + 53D755BD0FED3F5428477F40 /* libSDL2main.a in Frameworks */, + 79F1721C416A429612A44F07 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 441F6DE57740364E749A4B70 /* testshape */ = { + isa = PBXGroup; + children = ( + 54FB6A2070536399674D2E25 /* test */, + 6D7816A733B00DF64D9573CC /* Frameworks */, + 06966B1349AB30B13FAE71EE /* Products */, + 792E5AC9518C42C72CC02057 /* Projects */, + ); + name = "testshape"; + sourceTree = ""; + }; + 54FB6A2070536399674D2E25 /* test */ = { + isa = PBXGroup; + children = ( + 06F1518872D849DE23A129A5 /* testshape.c */, + ); + name = "test"; + sourceTree = ""; + }; + 6D7816A733B00DF64D9573CC /* Frameworks */ = { + isa = PBXGroup; + children = ( + 703A1F11388C11C40CD923AF /* AudioToolbox.framework */, + 4E447E4E35D554877889777A /* AudioUnit.framework */, + 33B150B2104E278728300852 /* Cocoa.framework */, + 76BC58620CC21E460F4D2316 /* CoreAudio.framework */, + 1C41266F6B602BFE6F4A6BFB /* IOKit.framework */, + 007511CB2DCD12E92A0C3769 /* Carbon.framework */, + 2D58035C2D162A38666670E3 /* ForceFeedback.framework */, + 39D5008468FA198059DA251C /* CoreFoundation.framework */, + 57B475561300743D704C2C66 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 06966B1349AB30B13FAE71EE /* Products */ = { + isa = PBXGroup; + children = ( + 2B58287A011A6BE672AC3A54 /* testshape */, + ); + name = "Products"; + sourceTree = ""; + }; + 792E5AC9518C42C72CC02057 /* Projects */ = { + isa = PBXGroup; + children = ( + 3FD36F344E2B76664E737AAB /* SDL2main.xcodeproj */, + 78C82B9F67787B504D026A0B /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0F633E601C1E227276E21EF7 /* Products */ = { + isa = PBXGroup; + children = ( + 77476C792D8647470D493640 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 511D7BF05B661048121F3582 /* Products */ = { + isa = PBXGroup; + children = ( + 16FB778C2826097B07822140 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0B7162915DE3702B457C6A4C /* testshape */ = { + isa = PBXNativeTarget; + buildConfigurationList = 72D3237A54E26D962EDB3590 /* Build configuration list for PBXNativeTarget "testshape" */; + buildPhases = ( + 176C4269176655AC3A9F4936 /* Resources */, + 09526869007925AD3C2B4B18 /* Sources */, + 197577442FB076C67D38038E /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 06CB2EF768BF54FD6BA07310 /* PBXTargetDependency */, + 78203361408C2A9C0A9A06A1 /* PBXTargetDependency */, + ); + name = "testshape"; + productInstallPath = "$(HOME)/bin"; + productName = "testshape"; + productReference = 2B58287A011A6BE672AC3A54 /* testshape */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshape" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 441F6DE57740364E749A4B70 /* testshape */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0F633E601C1E227276E21EF7 /* Products */; + ProjectRef = 3FD36F344E2B76664E737AAB /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 511D7BF05B661048121F3582 /* Products */; + ProjectRef = 78C82B9F67787B504D026A0B /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 0B7162915DE3702B457C6A4C /* testshape */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 77476C792D8647470D493640 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6A4E33E2490B13323D1B5276 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 16FB778C2826097B07822140 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 738E7B5A02DE7D366CBB1DE3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 176C4269176655AC3A9F4936 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug/shapes\" ]; then mkdir -p \"./Build/Debug/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Debug/shapes\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug/shapes\" ]; then mkdir -p \"./Build/Debug/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Debug/shapes\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release/shapes\" ]; then mkdir -p \"./Build/Release/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Release/shapes\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release/shapes\" ]; then mkdir -p \"./Build/Release/shapes\"; fi\ncp ./../../../../../test/shapes/*.bmp \"./Build/Release/shapes\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 09526869007925AD3C2B4B18 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 408F106907F630850F6E3BAD /* testshape.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 06CB2EF768BF54FD6BA07310 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 47AF3A8E4FDE09FF56107181 /* PBXContainerItemProxy */; + }; + 78203361408C2A9C0A9A06A1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 35847F444F2200F559CC1556 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 4690463A12906609605B3469 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Debug Universal"; + }; + 288426993A2C411614FD7CA4 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Debug Native"; + }; + 296407E573244AA74B9A1462 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Release Universal"; + }; + 1DBD119B757A5A4572B2375E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testshape"; + }; + name = "Release Native"; + }; + 092E5203696E377E68A93E10 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 1AFF6EE3061C55056A7B5CDE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 64614535252A70333AB6286D /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 2A116A9A5DBB2D4A5E0E7455 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 72D3237A54E26D962EDB3590 /* Build configuration list for PBXNativeTarget "testshape" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4690463A12906609605B3469 /* Debug Universal */, + 288426993A2C411614FD7CA4 /* Debug Native */, + 296407E573244AA74B9A1462 /* Release Universal */, + 1DBD119B757A5A4572B2375E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testshape" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 092E5203696E377E68A93E10 /* Debug Universal */, + 1AFF6EE3061C55056A7B5CDE /* Debug Native */, + 64614535252A70333AB6286D /* Release Universal */, + 2A116A9A5DBB2D4A5E0E7455 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..674586dda1 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testsprite2/testsprite2.xcodeproj/project.pbxproj @@ -0,0 +1,515 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5F7866E97EA1152149AE5CCC /* testsprite2.c in Sources */ = {isa = PBXBuildFile; fileRef = 337010CB340D69B428EC29F0 /* testsprite2.c */; }; + 15D763183E0353B475B010F5 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 55365DEC4DC4257730ED3779 /* AudioToolbox.framework */; }; + 5DC35F8743BC6E5F609F738B /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DEF2CB34A4E047C7CD05456 /* AudioUnit.framework */; }; + 724D3B7A6EF955434EC302DD /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FE7638B56C7230F4E1B5299 /* Cocoa.framework */; }; + 5BF3608C3A5352305D280E3F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 17A767E23D1331480F027CA7 /* CoreAudio.framework */; }; + 41974A0F591F028C470A0B14 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5D301D9E1BEC4B0209C440A1 /* IOKit.framework */; }; + 0935152E2ED152CD4F392A99 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09196925126807623A224C6E /* Carbon.framework */; }; + 1F1A72FA2096104D306B4D1E /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F885E810A0046976F3535E0 /* ForceFeedback.framework */; }; + 44DA704156A7019824D743DC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C844ADE491D297B5D7C7D8F /* CoreFoundation.framework */; }; + 6CA750E648806F5F792A4848 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9D35B724B432E23888728A /* OpenGL.framework */; }; + 35AD1A177FA361E1382B2F90 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CA309A8251B4799319A75CC /* libSDL2main.a */; }; + 6E997F372C0303FD145F72DA /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 588B349C6F5420EB30B13E65 /* libSDL2test.a */; }; + 440A17BF155D250C71227EC0 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 443F1DE8176376DF55143514 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 211F118744B633C976F83267 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A15222A271436721E4503E1 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 3C625ECB182A06036A4F0486 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A15222A271436721E4503E1 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 6FC529AD5A6B36512B3A76CD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4F15022D08F4641D6CF43797 /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 41D05FC32C2604D6053232FE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4F15022D08F4641D6CF43797 /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 46316BD46C43574E6A4502AA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 74AC4D2764EA67BF3CCB6945 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 09C655B30FF117934B3C7D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 74AC4D2764EA67BF3CCB6945 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 337010CB340D69B428EC29F0 /* testsprite2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testsprite2.c"; path = "../../../../../test/testsprite2.c"; sourceTree = ""; }; + 55365DEC4DC4257730ED3779 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 5DEF2CB34A4E047C7CD05456 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 5FE7638B56C7230F4E1B5299 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 17A767E23D1331480F027CA7 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 5D301D9E1BEC4B0209C440A1 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 09196925126807623A224C6E /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 5F885E810A0046976F3535E0 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 2C844ADE491D297B5D7C7D8F /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 5E9D35B724B432E23888728A /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 62C31964189A3F01086350DA /* testsprite2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testsprite2"; path = "testsprite2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0A15222A271436721E4503E1 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 4F15022D08F4641D6CF43797 /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 74AC4D2764EA67BF3CCB6945 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 470F590D701B019B00F57785 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 15D763183E0353B475B010F5 /* AudioToolbox.framework in Frameworks */, + 5DC35F8743BC6E5F609F738B /* AudioUnit.framework in Frameworks */, + 724D3B7A6EF955434EC302DD /* Cocoa.framework in Frameworks */, + 5BF3608C3A5352305D280E3F /* CoreAudio.framework in Frameworks */, + 41974A0F591F028C470A0B14 /* IOKit.framework in Frameworks */, + 0935152E2ED152CD4F392A99 /* Carbon.framework in Frameworks */, + 1F1A72FA2096104D306B4D1E /* ForceFeedback.framework in Frameworks */, + 44DA704156A7019824D743DC /* CoreFoundation.framework in Frameworks */, + 6CA750E648806F5F792A4848 /* OpenGL.framework in Frameworks */, + 35AD1A177FA361E1382B2F90 /* libSDL2main.a in Frameworks */, + 6E997F372C0303FD145F72DA /* libSDL2test.a in Frameworks */, + 440A17BF155D250C71227EC0 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5D091CFB4E0149ED776459E0 /* testsprite2 */ = { + isa = PBXGroup; + children = ( + 13DE70EA22DB13FF7D3B67A7 /* test */, + 79EE32A57A7517D521B170C0 /* Frameworks */, + 27B02A282AB704E032D77819 /* Products */, + 3F66429B5E98517B06FF7067 /* Projects */, + ); + name = "testsprite2"; + sourceTree = ""; + }; + 13DE70EA22DB13FF7D3B67A7 /* test */ = { + isa = PBXGroup; + children = ( + 337010CB340D69B428EC29F0 /* testsprite2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 79EE32A57A7517D521B170C0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 55365DEC4DC4257730ED3779 /* AudioToolbox.framework */, + 5DEF2CB34A4E047C7CD05456 /* AudioUnit.framework */, + 5FE7638B56C7230F4E1B5299 /* Cocoa.framework */, + 17A767E23D1331480F027CA7 /* CoreAudio.framework */, + 5D301D9E1BEC4B0209C440A1 /* IOKit.framework */, + 09196925126807623A224C6E /* Carbon.framework */, + 5F885E810A0046976F3535E0 /* ForceFeedback.framework */, + 2C844ADE491D297B5D7C7D8F /* CoreFoundation.framework */, + 5E9D35B724B432E23888728A /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 27B02A282AB704E032D77819 /* Products */ = { + isa = PBXGroup; + children = ( + 62C31964189A3F01086350DA /* testsprite2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 3F66429B5E98517B06FF7067 /* Projects */ = { + isa = PBXGroup; + children = ( + 0A15222A271436721E4503E1 /* SDL2main.xcodeproj */, + 4F15022D08F4641D6CF43797 /* SDL2test.xcodeproj */, + 74AC4D2764EA67BF3CCB6945 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 7CAD5A9369602FFB276F7D1F /* Products */ = { + isa = PBXGroup; + children = ( + 2CA309A8251B4799319A75CC /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 1DE9382939AA66E9091809E4 /* Products */ = { + isa = PBXGroup; + children = ( + 588B349C6F5420EB30B13E65 /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 47BC3C9A4C2661136598672F /* Products */ = { + isa = PBXGroup; + children = ( + 443F1DE8176376DF55143514 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 38C60FC159C2070E290A5671 /* testsprite2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7202626507081FE5777B6B70 /* Build configuration list for PBXNativeTarget "testsprite2" */; + buildPhases = ( + 33B676B77895396725840F1E /* Resources */, + 22DA3C1D3735087578B74375 /* Sources */, + 470F590D701B019B00F57785 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 2E69306F6810341363234647 /* PBXTargetDependency */, + 64FE137229B817422166691A /* PBXTargetDependency */, + 7F724DCA1B6919E807063BE1 /* PBXTargetDependency */, + ); + name = "testsprite2"; + productInstallPath = "$(HOME)/bin"; + productName = "testsprite2"; + productReference = 62C31964189A3F01086350DA /* testsprite2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsprite2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5D091CFB4E0149ED776459E0 /* testsprite2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 7CAD5A9369602FFB276F7D1F /* Products */; + ProjectRef = 0A15222A271436721E4503E1 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 1DE9382939AA66E9091809E4 /* Products */; + ProjectRef = 4F15022D08F4641D6CF43797 /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 47BC3C9A4C2661136598672F /* Products */; + ProjectRef = 74AC4D2764EA67BF3CCB6945 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 38C60FC159C2070E290A5671 /* testsprite2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 2CA309A8251B4799319A75CC /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 211F118744B633C976F83267 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 588B349C6F5420EB30B13E65 /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 6FC529AD5A6B36512B3A76CD /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 443F1DE8176376DF55143514 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 46316BD46C43574E6A4502AA /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 33B676B77895396725840F1E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 22DA3C1D3735087578B74375 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F7866E97EA1152149AE5CCC /* testsprite2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 2E69306F6810341363234647 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 3C625ECB182A06036A4F0486 /* PBXContainerItemProxy */; + }; + 64FE137229B817422166691A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 41D05FC32C2604D6053232FE /* PBXContainerItemProxy */; + }; + 7F724DCA1B6919E807063BE1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 09C655B30FF117934B3C7D9F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0CE60A962FFD0E9D0DA50C41 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Debug Universal"; + }; + 1EA71160727E4CB4726166EC /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Debug Native"; + }; + 53C96EF2737748C258000959 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Release Universal"; + }; + 3FC3274740D8461E1533542E /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testsprite2"; + }; + name = "Release Native"; + }; + 17733F9561A537250D0B524C /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 382E6DBB26FD68EC153A3A1F /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 55E06771539C480366A252E5 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 26F46B2572B36B1F7B9255D6 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7202626507081FE5777B6B70 /* Build configuration list for PBXNativeTarget "testsprite2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0CE60A962FFD0E9D0DA50C41 /* Debug Universal */, + 1EA71160727E4CB4726166EC /* Debug Native */, + 53C96EF2737748C258000959 /* Release Universal */, + 3FC3274740D8461E1533542E /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testsprite2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 17733F9561A537250D0B524C /* Debug Universal */, + 382E6DBB26FD68EC153A3A1F /* Debug Native */, + 55E06771539C480366A252E5 /* Release Universal */, + 26F46B2572B36B1F7B9255D6 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..9514fcf4e4 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testspriteminimal/testspriteminimal.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 27E623027D5B166949572CEC /* testspriteminimal.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C5B5F3F5D113E1300624B8F /* testspriteminimal.c */; }; + 6B45343040343F29544C6DDB /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03643FF645B37F635C747C98 /* AudioToolbox.framework */; }; + 139A193A4D4311004E006C17 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70AE63B30CFD64B073852859 /* AudioUnit.framework */; }; + 331965BA5395700418E510FF /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75B774206D920DCB4ACA445C /* Cocoa.framework */; }; + 43DA1D9951D8457073494A34 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E0A509B211574C774350093 /* CoreAudio.framework */; }; + 06EB5CA91BC95C2D0E6E0416 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2F8E4F8D5D7F3EB9649439B4 /* IOKit.framework */; }; + 7196486228C613B372D5323B /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5A52536869B83B5F09F41438 /* Carbon.framework */; }; + 060C063729C36CED6EF95B99 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44770D3A0BD9579536ED242B /* ForceFeedback.framework */; }; + 20FD6C135BAE02BE1F56555E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AEB3C375817040B16677295 /* CoreFoundation.framework */; }; + 64AF57D654DF2229636916F3 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2E5019F146AA4A417363273E /* OpenGL.framework */; }; + 1F3B752E4301229D0A81286C /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BAA4FEB744A2D98123C5F62 /* libSDL2main.a */; }; + 1E45472A1E760D4670D01155 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 71FF47C026D978E118FF3F69 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 48002E643D870A0C255D02CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1454539D12F401915CF253F3 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 018F682D1BBB3BE67E997B02 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1454539D12F401915CF253F3 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 31534DBB5A7A3C8A22ED35A4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5C665BC2287B5AC157C704F1 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 3CD438D60C53443666650D6F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 5C665BC2287B5AC157C704F1 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 5C5B5F3F5D113E1300624B8F /* testspriteminimal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testspriteminimal.c"; path = "../../../../../test/testspriteminimal.c"; sourceTree = ""; }; + 03643FF645B37F635C747C98 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 70AE63B30CFD64B073852859 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 75B774206D920DCB4ACA445C /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 7E0A509B211574C774350093 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 2F8E4F8D5D7F3EB9649439B4 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 5A52536869B83B5F09F41438 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 44770D3A0BD9579536ED242B /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 3AEB3C375817040B16677295 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 2E5019F146AA4A417363273E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 1C5511B03C132C43210F754C /* testspriteminimal */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testspriteminimal"; path = "testspriteminimal"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1454539D12F401915CF253F3 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 5C665BC2287B5AC157C704F1 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 35376CE42553238D237E4771 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6B45343040343F29544C6DDB /* AudioToolbox.framework in Frameworks */, + 139A193A4D4311004E006C17 /* AudioUnit.framework in Frameworks */, + 331965BA5395700418E510FF /* Cocoa.framework in Frameworks */, + 43DA1D9951D8457073494A34 /* CoreAudio.framework in Frameworks */, + 06EB5CA91BC95C2D0E6E0416 /* IOKit.framework in Frameworks */, + 7196486228C613B372D5323B /* Carbon.framework in Frameworks */, + 060C063729C36CED6EF95B99 /* ForceFeedback.framework in Frameworks */, + 20FD6C135BAE02BE1F56555E /* CoreFoundation.framework in Frameworks */, + 64AF57D654DF2229636916F3 /* OpenGL.framework in Frameworks */, + 1F3B752E4301229D0A81286C /* libSDL2main.a in Frameworks */, + 1E45472A1E760D4670D01155 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0F6B6860307D70A30AAC5B2D /* testspriteminimal */ = { + isa = PBXGroup; + children = ( + 6DE9087401F329EF23822C5E /* test */, + 46F8039C3260525007AE6630 /* Frameworks */, + 6D2256153A304CFA3C8F769B /* Products */, + 4C1B2CC81E6712DB0F3C3A02 /* Projects */, + ); + name = "testspriteminimal"; + sourceTree = ""; + }; + 6DE9087401F329EF23822C5E /* test */ = { + isa = PBXGroup; + children = ( + 5C5B5F3F5D113E1300624B8F /* testspriteminimal.c */, + ); + name = "test"; + sourceTree = ""; + }; + 46F8039C3260525007AE6630 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 03643FF645B37F635C747C98 /* AudioToolbox.framework */, + 70AE63B30CFD64B073852859 /* AudioUnit.framework */, + 75B774206D920DCB4ACA445C /* Cocoa.framework */, + 7E0A509B211574C774350093 /* CoreAudio.framework */, + 2F8E4F8D5D7F3EB9649439B4 /* IOKit.framework */, + 5A52536869B83B5F09F41438 /* Carbon.framework */, + 44770D3A0BD9579536ED242B /* ForceFeedback.framework */, + 3AEB3C375817040B16677295 /* CoreFoundation.framework */, + 2E5019F146AA4A417363273E /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6D2256153A304CFA3C8F769B /* Products */ = { + isa = PBXGroup; + children = ( + 1C5511B03C132C43210F754C /* testspriteminimal */, + ); + name = "Products"; + sourceTree = ""; + }; + 4C1B2CC81E6712DB0F3C3A02 /* Projects */ = { + isa = PBXGroup; + children = ( + 1454539D12F401915CF253F3 /* SDL2main.xcodeproj */, + 5C665BC2287B5AC157C704F1 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 0BF118363A3435F4478723A1 /* Products */ = { + isa = PBXGroup; + children = ( + 0BAA4FEB744A2D98123C5F62 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 4519225B3E52096222F910B8 /* Products */ = { + isa = PBXGroup; + children = ( + 71FF47C026D978E118FF3F69 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5BB421E23666669E17F1566E /* testspriteminimal */ = { + isa = PBXNativeTarget; + buildConfigurationList = 76CC57F73B940B14084C6D59 /* Build configuration list for PBXNativeTarget "testspriteminimal" */; + buildPhases = ( + 15DB070627286F1043E23739 /* Resources */, + 24C461884AC96B555168132C /* Sources */, + 35376CE42553238D237E4771 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 68863D8D1E5C3561275A2F77 /* PBXTargetDependency */, + 1CBA13C305CC4F550A6246C0 /* PBXTargetDependency */, + ); + name = "testspriteminimal"; + productInstallPath = "$(HOME)/bin"; + productName = "testspriteminimal"; + productReference = 1C5511B03C132C43210F754C /* testspriteminimal */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testspriteminimal" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 0F6B6860307D70A30AAC5B2D /* testspriteminimal */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0BF118363A3435F4478723A1 /* Products */; + ProjectRef = 1454539D12F401915CF253F3 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 4519225B3E52096222F910B8 /* Products */; + ProjectRef = 5C665BC2287B5AC157C704F1 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 5BB421E23666669E17F1566E /* testspriteminimal */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 0BAA4FEB744A2D98123C5F62 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 48002E643D870A0C255D02CB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 71FF47C026D978E118FF3F69 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 31534DBB5A7A3C8A22ED35A4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 15DB070627286F1043E23739 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Debug/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/icon.bmp\" \"./Build/Release/icon.bmp\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 24C461884AC96B555168132C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 27E623027D5B166949572CEC /* testspriteminimal.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 68863D8D1E5C3561275A2F77 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 018F682D1BBB3BE67E997B02 /* PBXContainerItemProxy */; + }; + 1CBA13C305CC4F550A6246C0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 3CD438D60C53443666650D6F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 61E93CA267A85941468D6040 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Debug Universal"; + }; + 719032A11639081F3AA80A3C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Debug Native"; + }; + 234D54AD3D850FF267800898 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Release Universal"; + }; + 62F02A43161A1A583E2D1987 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testspriteminimal"; + }; + name = "Release Native"; + }; + 346E600568B3510822545FE9 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 6B5D3D9B3D661C8F7B0F248E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 386D3D55302837AB48117594 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 04111CE518C33A761A826D22 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 76CC57F73B940B14084C6D59 /* Build configuration list for PBXNativeTarget "testspriteminimal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 61E93CA267A85941468D6040 /* Debug Universal */, + 719032A11639081F3AA80A3C /* Debug Native */, + 234D54AD3D850FF267800898 /* Release Universal */, + 62F02A43161A1A583E2D1987 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testspriteminimal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 346E600568B3510822545FE9 /* Debug Universal */, + 6B5D3D9B3D661C8F7B0F248E /* Debug Native */, + 386D3D55302837AB48117594 /* Release Universal */, + 04111CE518C33A761A826D22 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..775b0a1dba --- /dev/null +++ b/premake/Xcode/Xcode4/tests/teststreaming/teststreaming.xcodeproj/project.pbxproj @@ -0,0 +1,472 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 7C0C26F2003C06A170CF2EAD /* teststreaming.c in Sources */ = {isa = PBXBuildFile; fileRef = 2E3143AA555B555A23284972 /* teststreaming.c */; }; + 548774F11E955BF3435E6144 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 204B4FE357957BBA767465C6 /* AudioToolbox.framework */; }; + 57423C720B7274EE476F4E2A /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DF51FEE4D033935692E71C9 /* AudioUnit.framework */; }; + 587A61EE5A903A7A2977771A /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 575B31B640A46955763603C4 /* Cocoa.framework */; }; + 25DC1D202D8463D611820231 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5AD57AD222C2083B0BD81FE7 /* CoreAudio.framework */; }; + 4B4331FE3B1502776AF701A1 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AA908092E0C54383E64286A /* IOKit.framework */; }; + 12B55B6554D84E140B316841 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 02817B12149959F903F1774B /* Carbon.framework */; }; + 552F0B172B98379E10521E53 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2481422D570A62764519246A /* ForceFeedback.framework */; }; + 0DBF2BEB66EE52A904AC5856 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C295FB710E810F02DA01F99 /* CoreFoundation.framework */; }; + 586363501DD116660D556EB9 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B6D11685B2C27C71E576BCE /* OpenGL.framework */; }; + 467126A541103E501E5C4857 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 642B02FC291817F157B33709 /* libSDL2main.a */; }; + 4AD51DF34A614F036565075D /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3BC23F4831096240172F295B /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 14DD41DA702B47A811652A1C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2FA532766F555D455F171655 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 335E21AE675856FD32C21E7C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2FA532766F555D455F171655 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 6BEE09CA4CFA423F447E3488 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 65547A8479E335E841143848 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 52F21CB87AD61277583C6C30 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 65547A8479E335E841143848 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2E3143AA555B555A23284972 /* teststreaming.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "teststreaming.c"; path = "../../../../../test/teststreaming.c"; sourceTree = ""; }; + 204B4FE357957BBA767465C6 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 6DF51FEE4D033935692E71C9 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 575B31B640A46955763603C4 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 5AD57AD222C2083B0BD81FE7 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 1AA908092E0C54383E64286A /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 02817B12149959F903F1774B /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 2481422D570A62764519246A /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 0C295FB710E810F02DA01F99 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 2B6D11685B2C27C71E576BCE /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 14E901A456637F181C2F7A96 /* teststreaming */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "teststreaming"; path = "teststreaming"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2FA532766F555D455F171655 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 65547A8479E335E841143848 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0D165C2E0F8319DD3CA64721 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 548774F11E955BF3435E6144 /* AudioToolbox.framework in Frameworks */, + 57423C720B7274EE476F4E2A /* AudioUnit.framework in Frameworks */, + 587A61EE5A903A7A2977771A /* Cocoa.framework in Frameworks */, + 25DC1D202D8463D611820231 /* CoreAudio.framework in Frameworks */, + 4B4331FE3B1502776AF701A1 /* IOKit.framework in Frameworks */, + 12B55B6554D84E140B316841 /* Carbon.framework in Frameworks */, + 552F0B172B98379E10521E53 /* ForceFeedback.framework in Frameworks */, + 0DBF2BEB66EE52A904AC5856 /* CoreFoundation.framework in Frameworks */, + 586363501DD116660D556EB9 /* OpenGL.framework in Frameworks */, + 467126A541103E501E5C4857 /* libSDL2main.a in Frameworks */, + 4AD51DF34A614F036565075D /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 19F12D1B068B34711223727B /* teststreaming */ = { + isa = PBXGroup; + children = ( + 04C9470736C7767114EF5B78 /* test */, + 1BF03721079159D417707948 /* Frameworks */, + 48F633FA627F212075121785 /* Products */, + 327609B2344E010C3C294F19 /* Projects */, + ); + name = "teststreaming"; + sourceTree = ""; + }; + 04C9470736C7767114EF5B78 /* test */ = { + isa = PBXGroup; + children = ( + 2E3143AA555B555A23284972 /* teststreaming.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1BF03721079159D417707948 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 204B4FE357957BBA767465C6 /* AudioToolbox.framework */, + 6DF51FEE4D033935692E71C9 /* AudioUnit.framework */, + 575B31B640A46955763603C4 /* Cocoa.framework */, + 5AD57AD222C2083B0BD81FE7 /* CoreAudio.framework */, + 1AA908092E0C54383E64286A /* IOKit.framework */, + 02817B12149959F903F1774B /* Carbon.framework */, + 2481422D570A62764519246A /* ForceFeedback.framework */, + 0C295FB710E810F02DA01F99 /* CoreFoundation.framework */, + 2B6D11685B2C27C71E576BCE /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 48F633FA627F212075121785 /* Products */ = { + isa = PBXGroup; + children = ( + 14E901A456637F181C2F7A96 /* teststreaming */, + ); + name = "Products"; + sourceTree = ""; + }; + 327609B2344E010C3C294F19 /* Projects */ = { + isa = PBXGroup; + children = ( + 2FA532766F555D455F171655 /* SDL2main.xcodeproj */, + 65547A8479E335E841143848 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 2574031249C871D7706E6E45 /* Products */ = { + isa = PBXGroup; + children = ( + 642B02FC291817F157B33709 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5EF95D9221C0608438E36BDA /* Products */ = { + isa = PBXGroup; + children = ( + 3BC23F4831096240172F295B /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3FC20E8C2EB0566076D86200 /* teststreaming */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6D9638E60ADA102C3E421651 /* Build configuration list for PBXNativeTarget "teststreaming" */; + buildPhases = ( + 5E1A0A46186A02770E564E57 /* Resources */, + 38C472E61606136D168E5294 /* Sources */, + 0D165C2E0F8319DD3CA64721 /* Frameworks */, + 9607AE3710C85E8F00CD1376 /* Postbuild */, + ); + buildRules = ( + ); + dependencies = ( + 6FBA404C59915D3A0F6E1199 /* PBXTargetDependency */, + 7C2D73F41C1A248A718E450A /* PBXTargetDependency */, + ); + name = "teststreaming"; + productInstallPath = "$(HOME)/bin"; + productName = "teststreaming"; + productReference = 14E901A456637F181C2F7A96 /* teststreaming */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "teststreaming" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 19F12D1B068B34711223727B /* teststreaming */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 2574031249C871D7706E6E45 /* Products */; + ProjectRef = 2FA532766F555D455F171655 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5EF95D9221C0608438E36BDA /* Products */; + ProjectRef = 65547A8479E335E841143848 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 3FC20E8C2EB0566076D86200 /* teststreaming */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 642B02FC291817F157B33709 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 14DD41DA702B47A811652A1C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 3BC23F4831096240172F295B /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 6BEE09CA4CFA423F447E3488 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 5E1A0A46186A02770E564E57 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 9607AE3710C85E8F00CD1376 /* Postbuild */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = Postbuild; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug Universal\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Debug Native\" ]; then\nif [ ! -d \"./Build/Debug\" ]; then mkdir -p \"./Build/Debug\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Debug/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Universal\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release Native\" ]; then\nif [ ! -d \"./Build/Release\" ]; then mkdir -p \"./Build/Release\"; fi\ncp \"./../../../../../test/moose.dat\" \"./Build/Release/moose.dat\"\nfi"; + }; +/* End PBXShellScriptBuildPhase section */ +/* Begin PBXSourcesBuildPhase section */ + 38C472E61606136D168E5294 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7C0C26F2003C06A170CF2EAD /* teststreaming.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 6FBA404C59915D3A0F6E1199 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 335E21AE675856FD32C21E7C /* PBXContainerItemProxy */; + }; + 7C2D73F41C1A248A718E450A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 52F21CB87AD61277583C6C30 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 6C54282C638735BF423B3149 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Debug Universal"; + }; + 155A5986705456F463944A43 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Debug Native"; + }; + 1903457F3535440A19F55DEF /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Release Universal"; + }; + 684F55C57F6B65BA43D427EB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "teststreaming"; + }; + name = "Release Native"; + }; + 5F3602A61E375F0A2AAF5DE3 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 7F1630FB5A2973F04B262C15 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 35F705606FC04927585B5563 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 45C9334E57F3238837A80AFB /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6D9638E60ADA102C3E421651 /* Build configuration list for PBXNativeTarget "teststreaming" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6C54282C638735BF423B3149 /* Debug Universal */, + 155A5986705456F463944A43 /* Debug Native */, + 1903457F3535440A19F55DEF /* Release Universal */, + 684F55C57F6B65BA43D427EB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "teststreaming" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5F3602A61E375F0A2AAF5DE3 /* Debug Universal */, + 7F1630FB5A2973F04B262C15 /* Debug Native */, + 35F705606FC04927585B5563 /* Release Universal */, + 45C9334E57F3238837A80AFB /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testthread/testthread.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testthread/testthread.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..9667fb1b5b --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testthread/testthread.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 6C987FEA78D241A403C65BEB /* testthread.c in Sources */ = {isa = PBXBuildFile; fileRef = 332759AD2E381543230E716A /* testthread.c */; }; + 3325006B1B387CF80B52656E /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F62096E179D02202D0F36C4 /* AudioToolbox.framework */; }; + 18220A9D094458FE43C42718 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2ED62374359A430A7A982656 /* AudioUnit.framework */; }; + 49EA57F52A73680320A36AB7 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A202D893CB54CA51BB80290 /* Cocoa.framework */; }; + 186B2D4C122222F73E887263 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A9863ED67D7598B693B5571 /* CoreAudio.framework */; }; + 24D07A6C51CA2E427041726B /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EDA4BB35BA752366A755E14 /* IOKit.framework */; }; + 6C9F6DEA52D8124B2ACF0C24 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DE074B46D3541D25FEA2881 /* Carbon.framework */; }; + 6B4658704BA82B5F251051CC /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16546CC12985732E5B911DB7 /* ForceFeedback.framework */; }; + 657B15E4597E66B7333232FD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 49A51D5F6DCE151D48D53E84 /* CoreFoundation.framework */; }; + 047E70EB136773461B6128A4 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 403579F55F170B8C41F235DE /* OpenGL.framework */; }; + 04665DC831BA47073B534A55 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF646AE0959510A228A4E7B /* libSDL2main.a */; }; + 310F0AD946A32CC21DC372F7 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 48162B9E446C303F215D6F79 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 03205F5D6C706E6554870590 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 735E20C715F05275123D0625 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 5B615C663982378A6A396828 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 735E20C715F05275123D0625 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 469460076D9E2A393F2D2EDD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4B6D13677F1D5D1E07D67FA3 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 41412B4E12DD188D6E97005A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4B6D13677F1D5D1E07D67FA3 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 332759AD2E381543230E716A /* testthread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testthread.c"; path = "../../../../../test/testthread.c"; sourceTree = ""; }; + 0F62096E179D02202D0F36C4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 2ED62374359A430A7A982656 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 1A202D893CB54CA51BB80290 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 4A9863ED67D7598B693B5571 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 7EDA4BB35BA752366A755E14 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 0DE074B46D3541D25FEA2881 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 16546CC12985732E5B911DB7 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 49A51D5F6DCE151D48D53E84 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 403579F55F170B8C41F235DE /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 624337703627624F3F6F2D93 /* testthread */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testthread"; path = "testthread"; sourceTree = BUILT_PRODUCTS_DIR; }; + 735E20C715F05275123D0625 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 4B6D13677F1D5D1E07D67FA3 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 156A08572003290109DB115A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3325006B1B387CF80B52656E /* AudioToolbox.framework in Frameworks */, + 18220A9D094458FE43C42718 /* AudioUnit.framework in Frameworks */, + 49EA57F52A73680320A36AB7 /* Cocoa.framework in Frameworks */, + 186B2D4C122222F73E887263 /* CoreAudio.framework in Frameworks */, + 24D07A6C51CA2E427041726B /* IOKit.framework in Frameworks */, + 6C9F6DEA52D8124B2ACF0C24 /* Carbon.framework in Frameworks */, + 6B4658704BA82B5F251051CC /* ForceFeedback.framework in Frameworks */, + 657B15E4597E66B7333232FD /* CoreFoundation.framework in Frameworks */, + 047E70EB136773461B6128A4 /* OpenGL.framework in Frameworks */, + 04665DC831BA47073B534A55 /* libSDL2main.a in Frameworks */, + 310F0AD946A32CC21DC372F7 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5BF409406B027173576138DA /* testthread */ = { + isa = PBXGroup; + children = ( + 051753BB3EEC3311530718E0 /* test */, + 5A75768F3DB217182C55317F /* Frameworks */, + 55BF28F4572E47D846E02AF9 /* Products */, + 55CB13EF4FA01A0963633622 /* Projects */, + ); + name = "testthread"; + sourceTree = ""; + }; + 051753BB3EEC3311530718E0 /* test */ = { + isa = PBXGroup; + children = ( + 332759AD2E381543230E716A /* testthread.c */, + ); + name = "test"; + sourceTree = ""; + }; + 5A75768F3DB217182C55317F /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0F62096E179D02202D0F36C4 /* AudioToolbox.framework */, + 2ED62374359A430A7A982656 /* AudioUnit.framework */, + 1A202D893CB54CA51BB80290 /* Cocoa.framework */, + 4A9863ED67D7598B693B5571 /* CoreAudio.framework */, + 7EDA4BB35BA752366A755E14 /* IOKit.framework */, + 0DE074B46D3541D25FEA2881 /* Carbon.framework */, + 16546CC12985732E5B911DB7 /* ForceFeedback.framework */, + 49A51D5F6DCE151D48D53E84 /* CoreFoundation.framework */, + 403579F55F170B8C41F235DE /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 55BF28F4572E47D846E02AF9 /* Products */ = { + isa = PBXGroup; + children = ( + 624337703627624F3F6F2D93 /* testthread */, + ); + name = "Products"; + sourceTree = ""; + }; + 55CB13EF4FA01A0963633622 /* Projects */ = { + isa = PBXGroup; + children = ( + 735E20C715F05275123D0625 /* SDL2main.xcodeproj */, + 4B6D13677F1D5D1E07D67FA3 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 3992349C26424D857CE75DCE /* Products */ = { + isa = PBXGroup; + children = ( + 6AF646AE0959510A228A4E7B /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5ADD79772BFD291F349402AB /* Products */ = { + isa = PBXGroup; + children = ( + 48162B9E446C303F215D6F79 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 4258427C05EC737B222F74C0 /* testthread */ = { + isa = PBXNativeTarget; + buildConfigurationList = 732313046CD80AC272D90ECA /* Build configuration list for PBXNativeTarget "testthread" */; + buildPhases = ( + 0A017C5B511541CF3A23063A /* Resources */, + 01AD078B5CFD0F5920074330 /* Sources */, + 156A08572003290109DB115A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 299B2A9C1F857A4B6B486CB4 /* PBXTargetDependency */, + 54A9579A4FD628F22DD57BBB /* PBXTargetDependency */, + ); + name = "testthread"; + productInstallPath = "$(HOME)/bin"; + productName = "testthread"; + productReference = 624337703627624F3F6F2D93 /* testthread */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testthread" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 5BF409406B027173576138DA /* testthread */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 3992349C26424D857CE75DCE /* Products */; + ProjectRef = 735E20C715F05275123D0625 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5ADD79772BFD291F349402AB /* Products */; + ProjectRef = 4B6D13677F1D5D1E07D67FA3 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 4258427C05EC737B222F74C0 /* testthread */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 6AF646AE0959510A228A4E7B /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 03205F5D6C706E6554870590 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 48162B9E446C303F215D6F79 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 469460076D9E2A393F2D2EDD /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 0A017C5B511541CF3A23063A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 01AD078B5CFD0F5920074330 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C987FEA78D241A403C65BEB /* testthread.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 299B2A9C1F857A4B6B486CB4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 5B615C663982378A6A396828 /* PBXContainerItemProxy */; + }; + 54A9579A4FD628F22DD57BBB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 41412B4E12DD188D6E97005A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 67AE7EDA1D5A203B28A86BC7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Debug Universal"; + }; + 46E36A2810C4345C1523598C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Debug Native"; + }; + 56F83AF0646F3EE61E39677C /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Release Universal"; + }; + 45FB12D56B5C243E67DA4537 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testthread"; + }; + name = "Release Native"; + }; + 65512E0E3DFD5223323C1F57 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 21745991422F210449313DA7 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 380D7A6C4DD421671B563216 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 3D9E0B0E015038EF793C5484 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 732313046CD80AC272D90ECA /* Build configuration list for PBXNativeTarget "testthread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 67AE7EDA1D5A203B28A86BC7 /* Debug Universal */, + 46E36A2810C4345C1523598C /* Debug Native */, + 56F83AF0646F3EE61E39677C /* Release Universal */, + 45FB12D56B5C243E67DA4537 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testthread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 65512E0E3DFD5223323C1F57 /* Debug Universal */, + 21745991422F210449313DA7 /* Debug Native */, + 380D7A6C4DD421671B563216 /* Release Universal */, + 3D9E0B0E015038EF793C5484 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testtimer/testtimer.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testtimer/testtimer.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..88201cbbd5 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testtimer/testtimer.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 4D44492615DE623266847D33 /* testtimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 6442519A624B2FC0276A2D6E /* testtimer.c */; }; + 5DF67CF22C9A56833A17643C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35EA536E769F4D4F134E70D7 /* AudioToolbox.framework */; }; + 618B07F71CA256DE32403051 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56562CDE5DA90F58700F7C17 /* AudioUnit.framework */; }; + 64B96DA775A00FB06DE107A7 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35673D56150057DA49517791 /* Cocoa.framework */; }; + 2C4B10447EDF0C3464682071 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 225B232E28F6544076170FB0 /* CoreAudio.framework */; }; + 4B31152154DF111A68EA7CF7 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72B960476F742E9478046318 /* IOKit.framework */; }; + 5AC958B30C4D51B831FD070B /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FEF16F166393D430AFD1814 /* Carbon.framework */; }; + 04F1787640B27D7809425668 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7276533F072069DF3C1F24C3 /* ForceFeedback.framework */; }; + 396E7D3D686640E062C454DC /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54396E64797435604E4A007B /* CoreFoundation.framework */; }; + 3BFA396347B810161DA33F77 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44E95E203A326155263E648E /* OpenGL.framework */; }; + 06C3114A3F5424D7258E18F3 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 457927A15E136D0770A63EB1 /* libSDL2main.a */; }; + 7355645C0AD53F860A632008 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 196A2F0B32FA430845022EC6 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7067393434765B3E79CE0128 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3CD61DE153E054F545D35610 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 1B5517DA6AE62D6F5AC4165D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3CD61DE153E054F545D35610 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 30176C0147AB4FA8525B5EFE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2B0A2490075D06744DB33CE3 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 31D94FFE40652C334F4C1F12 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2B0A2490075D06744DB33CE3 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 6442519A624B2FC0276A2D6E /* testtimer.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testtimer.c"; path = "../../../../../test/testtimer.c"; sourceTree = ""; }; + 35EA536E769F4D4F134E70D7 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 56562CDE5DA90F58700F7C17 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 35673D56150057DA49517791 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 225B232E28F6544076170FB0 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 72B960476F742E9478046318 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 3FEF16F166393D430AFD1814 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 7276533F072069DF3C1F24C3 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 54396E64797435604E4A007B /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 44E95E203A326155263E648E /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 65E53F103F173EF4201B6804 /* testtimer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testtimer"; path = "testtimer"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3CD61DE153E054F545D35610 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 2B0A2490075D06744DB33CE3 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 2DEC05406CD52E65007D4B92 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5DF67CF22C9A56833A17643C /* AudioToolbox.framework in Frameworks */, + 618B07F71CA256DE32403051 /* AudioUnit.framework in Frameworks */, + 64B96DA775A00FB06DE107A7 /* Cocoa.framework in Frameworks */, + 2C4B10447EDF0C3464682071 /* CoreAudio.framework in Frameworks */, + 4B31152154DF111A68EA7CF7 /* IOKit.framework in Frameworks */, + 5AC958B30C4D51B831FD070B /* Carbon.framework in Frameworks */, + 04F1787640B27D7809425668 /* ForceFeedback.framework in Frameworks */, + 396E7D3D686640E062C454DC /* CoreFoundation.framework in Frameworks */, + 3BFA396347B810161DA33F77 /* OpenGL.framework in Frameworks */, + 06C3114A3F5424D7258E18F3 /* libSDL2main.a in Frameworks */, + 7355645C0AD53F860A632008 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 052627BD6A8154B96D626EF7 /* testtimer */ = { + isa = PBXGroup; + children = ( + 31237EC1559B64112DE20A39 /* test */, + 265474AB22EC358C002C59F2 /* Frameworks */, + 5122502E09D714E54E8E7992 /* Products */, + 7DAD13367A5E43DD01463F6F /* Projects */, + ); + name = "testtimer"; + sourceTree = ""; + }; + 31237EC1559B64112DE20A39 /* test */ = { + isa = PBXGroup; + children = ( + 6442519A624B2FC0276A2D6E /* testtimer.c */, + ); + name = "test"; + sourceTree = ""; + }; + 265474AB22EC358C002C59F2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 35EA536E769F4D4F134E70D7 /* AudioToolbox.framework */, + 56562CDE5DA90F58700F7C17 /* AudioUnit.framework */, + 35673D56150057DA49517791 /* Cocoa.framework */, + 225B232E28F6544076170FB0 /* CoreAudio.framework */, + 72B960476F742E9478046318 /* IOKit.framework */, + 3FEF16F166393D430AFD1814 /* Carbon.framework */, + 7276533F072069DF3C1F24C3 /* ForceFeedback.framework */, + 54396E64797435604E4A007B /* CoreFoundation.framework */, + 44E95E203A326155263E648E /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 5122502E09D714E54E8E7992 /* Products */ = { + isa = PBXGroup; + children = ( + 65E53F103F173EF4201B6804 /* testtimer */, + ); + name = "Products"; + sourceTree = ""; + }; + 7DAD13367A5E43DD01463F6F /* Projects */ = { + isa = PBXGroup; + children = ( + 3CD61DE153E054F545D35610 /* SDL2main.xcodeproj */, + 2B0A2490075D06744DB33CE3 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 4238796D0B3160732BDF6B90 /* Products */ = { + isa = PBXGroup; + children = ( + 457927A15E136D0770A63EB1 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 3C502B7E09A42DCA414F45D5 /* Products */ = { + isa = PBXGroup; + children = ( + 196A2F0B32FA430845022EC6 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 77503DD8471218546A930631 /* testtimer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 73290F065E5D508178F73012 /* Build configuration list for PBXNativeTarget "testtimer" */; + buildPhases = ( + 7B06520D63F23548178A6795 /* Resources */, + 694A263511AB7E9F095A7CFE /* Sources */, + 2DEC05406CD52E65007D4B92 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 5AA544A62FA4560722E7256D /* PBXTargetDependency */, + 06792A7970FF1B611F6F38B5 /* PBXTargetDependency */, + ); + name = "testtimer"; + productInstallPath = "$(HOME)/bin"; + productName = "testtimer"; + productReference = 65E53F103F173EF4201B6804 /* testtimer */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testtimer" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 052627BD6A8154B96D626EF7 /* testtimer */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 4238796D0B3160732BDF6B90 /* Products */; + ProjectRef = 3CD61DE153E054F545D35610 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 3C502B7E09A42DCA414F45D5 /* Products */; + ProjectRef = 2B0A2490075D06744DB33CE3 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 77503DD8471218546A930631 /* testtimer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 457927A15E136D0770A63EB1 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 7067393434765B3E79CE0128 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 196A2F0B32FA430845022EC6 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 30176C0147AB4FA8525B5EFE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 7B06520D63F23548178A6795 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 694A263511AB7E9F095A7CFE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4D44492615DE623266847D33 /* testtimer.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 5AA544A62FA4560722E7256D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 1B5517DA6AE62D6F5AC4165D /* PBXContainerItemProxy */; + }; + 06792A7970FF1B611F6F38B5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 31D94FFE40652C334F4C1F12 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 13EE7E3B610A6C0A0CC24819 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Debug Universal"; + }; + 7C6911BF531741893C7812CE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Debug Native"; + }; + 17DC777461D574F90A6E4EC6 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Release Universal"; + }; + 06E555887FB438F310CA7EBA /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testtimer"; + }; + name = "Release Native"; + }; + 693E65EE7167279E2006255B /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 20A56EF54FC25D3026201E57 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 4D707BC964A27A3A30885D76 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 780A58AD761301AB319B60F0 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 73290F065E5D508178F73012 /* Build configuration list for PBXNativeTarget "testtimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 13EE7E3B610A6C0A0CC24819 /* Debug Universal */, + 7C6911BF531741893C7812CE /* Debug Native */, + 17DC777461D574F90A6E4EC6 /* Release Universal */, + 06E555887FB438F310CA7EBA /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testtimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 693E65EE7167279E2006255B /* Debug Universal */, + 20A56EF54FC25D3026201E57 /* Debug Native */, + 4D707BC964A27A3A30885D76 /* Release Universal */, + 780A58AD761301AB319B60F0 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testver/testver.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testver/testver.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..05eadc4aac --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testver/testver.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 7BC7626F7E8A2D7F7C7B25E4 /* testver.c in Sources */ = {isa = PBXBuildFile; fileRef = 324E37B818E82DEC6D30172C /* testver.c */; }; + 352B4714224A58677ED64ABD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12CE2D9F56827D4B4FC51DAE /* AudioToolbox.framework */; }; + 38EE37E93CE458C51B1F12A4 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ECF0CAF63CA232B14AC6379 /* AudioUnit.framework */; }; + 23B973975995520E47DA67DC /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 778C2B34002912641CD869E2 /* Cocoa.framework */; }; + 7DD06AB733C57A456D772306 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AA939071DB0289778EA6C53 /* CoreAudio.framework */; }; + 149203E60DC477AE598D3DCB /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 64A10F682FC763B85DA7151C /* IOKit.framework */; }; + 1C6F612F71AE725B4EFC23A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04842C7276E40B7C072B4F31 /* Carbon.framework */; }; + 1726779C628D4658428331C7 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B0BAA012B59B317206124 /* ForceFeedback.framework */; }; + 60BD2DA3364C3BF567560046 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 36D764FD3BAB7E12058D2B0E /* CoreFoundation.framework */; }; + 74B547D86526342F08134807 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D532497545351992FD23FE9 /* OpenGL.framework */; }; + 3F2F5A877A754F9B72425BF4 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 219E2C42503E2F2762574A94 /* libSDL2main.a */; }; + 6CFF777C18A23BEE46720342 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0893027903D127E0653A5BA4 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 34CD34D04768339B35A973A8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1A8D22DB0BA04AF33AF20085 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 3B3D258954A357FA71560517 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1A8D22DB0BA04AF33AF20085 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 4DD7725C35774C103AF07FF4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76ED4EC04C914C43443C4F48 /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 0C7B1CDE6C264F4A1A020245 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76ED4EC04C914C43443C4F48 /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 324E37B818E82DEC6D30172C /* testver.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testver.c"; path = "../../../../../test/testver.c"; sourceTree = ""; }; + 12CE2D9F56827D4B4FC51DAE /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4ECF0CAF63CA232B14AC6379 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 778C2B34002912641CD869E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 3AA939071DB0289778EA6C53 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 64A10F682FC763B85DA7151C /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 04842C7276E40B7C072B4F31 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 049B0BAA012B59B317206124 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 36D764FD3BAB7E12058D2B0E /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 2D532497545351992FD23FE9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 096561696DEB1CA92FC82DB2 /* testver */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testver"; path = "testver"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1A8D22DB0BA04AF33AF20085 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 76ED4EC04C914C43443C4F48 /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 12AE190A76F7795D5AE4496A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 352B4714224A58677ED64ABD /* AudioToolbox.framework in Frameworks */, + 38EE37E93CE458C51B1F12A4 /* AudioUnit.framework in Frameworks */, + 23B973975995520E47DA67DC /* Cocoa.framework in Frameworks */, + 7DD06AB733C57A456D772306 /* CoreAudio.framework in Frameworks */, + 149203E60DC477AE598D3DCB /* IOKit.framework in Frameworks */, + 1C6F612F71AE725B4EFC23A6 /* Carbon.framework in Frameworks */, + 1726779C628D4658428331C7 /* ForceFeedback.framework in Frameworks */, + 60BD2DA3364C3BF567560046 /* CoreFoundation.framework in Frameworks */, + 74B547D86526342F08134807 /* OpenGL.framework in Frameworks */, + 3F2F5A877A754F9B72425BF4 /* libSDL2main.a in Frameworks */, + 6CFF777C18A23BEE46720342 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 062A41333B73260D49151A3E /* testver */ = { + isa = PBXGroup; + children = ( + 5E0C0F98571268762E63190D /* test */, + 457A4DF132E77D197A28161E /* Frameworks */, + 6C8A13343B7E5B791E8D5673 /* Products */, + 4D55341775276899391E0BC8 /* Projects */, + ); + name = "testver"; + sourceTree = ""; + }; + 5E0C0F98571268762E63190D /* test */ = { + isa = PBXGroup; + children = ( + 324E37B818E82DEC6D30172C /* testver.c */, + ); + name = "test"; + sourceTree = ""; + }; + 457A4DF132E77D197A28161E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 12CE2D9F56827D4B4FC51DAE /* AudioToolbox.framework */, + 4ECF0CAF63CA232B14AC6379 /* AudioUnit.framework */, + 778C2B34002912641CD869E2 /* Cocoa.framework */, + 3AA939071DB0289778EA6C53 /* CoreAudio.framework */, + 64A10F682FC763B85DA7151C /* IOKit.framework */, + 04842C7276E40B7C072B4F31 /* Carbon.framework */, + 049B0BAA012B59B317206124 /* ForceFeedback.framework */, + 36D764FD3BAB7E12058D2B0E /* CoreFoundation.framework */, + 2D532497545351992FD23FE9 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 6C8A13343B7E5B791E8D5673 /* Products */ = { + isa = PBXGroup; + children = ( + 096561696DEB1CA92FC82DB2 /* testver */, + ); + name = "Products"; + sourceTree = ""; + }; + 4D55341775276899391E0BC8 /* Projects */ = { + isa = PBXGroup; + children = ( + 1A8D22DB0BA04AF33AF20085 /* SDL2main.xcodeproj */, + 76ED4EC04C914C43443C4F48 /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 704355D31AB02E372A373456 /* Products */ = { + isa = PBXGroup; + children = ( + 219E2C42503E2F2762574A94 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 5B161EDC118F5099232A443E /* Products */ = { + isa = PBXGroup; + children = ( + 0893027903D127E0653A5BA4 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 22B54C3B51B561432F0E7EF1 /* testver */ = { + isa = PBXNativeTarget; + buildConfigurationList = 16A21974388F72B848C11DAF /* Build configuration list for PBXNativeTarget "testver" */; + buildPhases = ( + 7F662FDB6EEF1A7841561ECD /* Resources */, + 499025DB7B640AB524170165 /* Sources */, + 12AE190A76F7795D5AE4496A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 4AA9355E3246492E7E565CB2 /* PBXTargetDependency */, + 04286C1623230ED346DF0F33 /* PBXTargetDependency */, + ); + name = "testver"; + productInstallPath = "$(HOME)/bin"; + productName = "testver"; + productReference = 096561696DEB1CA92FC82DB2 /* testver */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testver" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 062A41333B73260D49151A3E /* testver */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 704355D31AB02E372A373456 /* Products */; + ProjectRef = 1A8D22DB0BA04AF33AF20085 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 5B161EDC118F5099232A443E /* Products */; + ProjectRef = 76ED4EC04C914C43443C4F48 /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 22B54C3B51B561432F0E7EF1 /* testver */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 219E2C42503E2F2762574A94 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 34CD34D04768339B35A973A8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 0893027903D127E0653A5BA4 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 4DD7725C35774C103AF07FF4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 7F662FDB6EEF1A7841561ECD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 499025DB7B640AB524170165 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BC7626F7E8A2D7F7C7B25E4 /* testver.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 4AA9355E3246492E7E565CB2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 3B3D258954A357FA71560517 /* PBXContainerItemProxy */; + }; + 04286C1623230ED346DF0F33 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0C7B1CDE6C264F4A1A020245 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1CC7791166B85BBA13BD6410 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Debug Universal"; + }; + 57FC7077395D3477049A4F74 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Debug Native"; + }; + 4D96383466CC7F8E74254EF5 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Release Universal"; + }; + 6F8D3CA92AAF47D03BFA3663 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testver"; + }; + name = "Release Native"; + }; + 028A384B5ED86C5376FB0129 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 7716057D01DB645D51CA28AE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 4136563134E6738A07341455 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 4D640B3A49856DD16CF15D28 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 16A21974388F72B848C11DAF /* Build configuration list for PBXNativeTarget "testver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1CC7791166B85BBA13BD6410 /* Debug Universal */, + 57FC7077395D3477049A4F74 /* Debug Native */, + 4D96383466CC7F8E74254EF5 /* Release Universal */, + 6F8D3CA92AAF47D03BFA3663 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 028A384B5ED86C5376FB0129 /* Debug Universal */, + 7716057D01DB645D51CA28AE /* Debug Native */, + 4136563134E6738A07341455 /* Release Universal */, + 4D640B3A49856DD16CF15D28 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/testwm2/testwm2.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/testwm2/testwm2.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..5cdfd29b6c --- /dev/null +++ b/premake/Xcode/Xcode4/tests/testwm2/testwm2.xcodeproj/project.pbxproj @@ -0,0 +1,498 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 5D503E553F0C5D7B6EEB3028 /* testwm2.c in Sources */ = {isa = PBXBuildFile; fileRef = 2F40387F4F270D14438435C2 /* testwm2.c */; }; + 32D6075C2E9C39FC5B1C45B0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E3E4F4A240E1AE87FC652C3 /* AudioToolbox.framework */; }; + 519602B751A9473B2E0F0A17 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DAB4315294576E073643E16 /* AudioUnit.framework */; }; + 05E84C474A4130A9578850B5 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 054A5A6A07C85FF82436760D /* Cocoa.framework */; }; + 1D4A7CE21799519B3F6242D2 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 480D6B5057E11B5521632B42 /* CoreAudio.framework */; }; + 35AF28611D7056C35D22040F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 775B358F7FE52D4C655A22AF /* IOKit.framework */; }; + 047A1E3131BE64CA3410442A /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 763E0BED7D2600BC69BC759E /* Carbon.framework */; }; + 28F24E0015E91D2514D00FC0 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 254919F135163E4625BF2FB5 /* ForceFeedback.framework */; }; + 77DA228838B7221F3F0E5382 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45543C9A40BA7B7630DF237F /* CoreFoundation.framework */; }; + 46746AA04123089A709D7153 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 315E245C3A947F1902552B7F /* OpenGL.framework */; }; + 06DA7B8442421C96584A6442 /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 011662001B92336F7AFD7AF3 /* libSDL2main.a */; }; + 052F0377001C3FD1489762CE /* libSDL2test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 309F1C1F50A10ABD1448426B /* libSDL2test.a */; }; + 7C1759420E7D4E58177A6FF8 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 59105C2C723733696B2E1D59 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 29F51E3750821F87761B7E76 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4C504D6207E61DE141765E39 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 305D53EB2004154C5A6E2B3A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4C504D6207E61DE141765E39 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 2C647B0A098C07DD4FEB0882 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 47E31F7C225663880E362D9F /* SDL2test.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1EB6664901BC163F215A4861; + remoteInfo = "libSDL2test.a"; + }; + 1779432957240AE615990332 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 47E31F7C225663880E362D9F /* SDL2test.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1258506950476B85239A79A3; + remoteInfo = "libSDL2test.a"; + }; + 02B82848508446AA47223651 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55CA60F71F094206499C254C /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 0DB9011E1746058568933C42 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 55CA60F71F094206499C254C /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2F40387F4F270D14438435C2 /* testwm2.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "testwm2.c"; path = "../../../../../test/testwm2.c"; sourceTree = ""; }; + 6E3E4F4A240E1AE87FC652C3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 4DAB4315294576E073643E16 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 054A5A6A07C85FF82436760D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 480D6B5057E11B5521632B42 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 775B358F7FE52D4C655A22AF /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 763E0BED7D2600BC69BC759E /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 254919F135163E4625BF2FB5 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 45543C9A40BA7B7630DF237F /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 315E245C3A947F1902552B7F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 35E44B6A5873714451E67831 /* testwm2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "testwm2"; path = "testwm2"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4C504D6207E61DE141765E39 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 47E31F7C225663880E362D9F /* SDL2test.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2test.xcodeproj"; path = "../../SDL2test/SDL2test.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 55CA60F71F094206499C254C /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3DBD598F73182CBF440C06E1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 32D6075C2E9C39FC5B1C45B0 /* AudioToolbox.framework in Frameworks */, + 519602B751A9473B2E0F0A17 /* AudioUnit.framework in Frameworks */, + 05E84C474A4130A9578850B5 /* Cocoa.framework in Frameworks */, + 1D4A7CE21799519B3F6242D2 /* CoreAudio.framework in Frameworks */, + 35AF28611D7056C35D22040F /* IOKit.framework in Frameworks */, + 047A1E3131BE64CA3410442A /* Carbon.framework in Frameworks */, + 28F24E0015E91D2514D00FC0 /* ForceFeedback.framework in Frameworks */, + 77DA228838B7221F3F0E5382 /* CoreFoundation.framework in Frameworks */, + 46746AA04123089A709D7153 /* OpenGL.framework in Frameworks */, + 06DA7B8442421C96584A6442 /* libSDL2main.a in Frameworks */, + 052F0377001C3FD1489762CE /* libSDL2test.a in Frameworks */, + 7C1759420E7D4E58177A6FF8 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 401151A607EA22F449860502 /* testwm2 */ = { + isa = PBXGroup; + children = ( + 68E11E2115A05982728532CC /* test */, + 1BB3361757A75191089A3E99 /* Frameworks */, + 1B8A31DB4EA9448F2CAE5BEC /* Products */, + 771C741865A9497F3EA34F49 /* Projects */, + ); + name = "testwm2"; + sourceTree = ""; + }; + 68E11E2115A05982728532CC /* test */ = { + isa = PBXGroup; + children = ( + 2F40387F4F270D14438435C2 /* testwm2.c */, + ); + name = "test"; + sourceTree = ""; + }; + 1BB3361757A75191089A3E99 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6E3E4F4A240E1AE87FC652C3 /* AudioToolbox.framework */, + 4DAB4315294576E073643E16 /* AudioUnit.framework */, + 054A5A6A07C85FF82436760D /* Cocoa.framework */, + 480D6B5057E11B5521632B42 /* CoreAudio.framework */, + 775B358F7FE52D4C655A22AF /* IOKit.framework */, + 763E0BED7D2600BC69BC759E /* Carbon.framework */, + 254919F135163E4625BF2FB5 /* ForceFeedback.framework */, + 45543C9A40BA7B7630DF237F /* CoreFoundation.framework */, + 315E245C3A947F1902552B7F /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 1B8A31DB4EA9448F2CAE5BEC /* Products */ = { + isa = PBXGroup; + children = ( + 35E44B6A5873714451E67831 /* testwm2 */, + ); + name = "Products"; + sourceTree = ""; + }; + 771C741865A9497F3EA34F49 /* Projects */ = { + isa = PBXGroup; + children = ( + 4C504D6207E61DE141765E39 /* SDL2main.xcodeproj */, + 47E31F7C225663880E362D9F /* SDL2test.xcodeproj */, + 55CA60F71F094206499C254C /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 195737D65DCB4EE759E61769 /* Products */ = { + isa = PBXGroup; + children = ( + 011662001B92336F7AFD7AF3 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 6CCC5F765A214B6E57560C5E /* Products */ = { + isa = PBXGroup; + children = ( + 309F1C1F50A10ABD1448426B /* libSDL2test.a */, + ); + name = Products; + sourceTree = ""; + }; + 3D2D59DA7D22596C776E640A /* Products */ = { + isa = PBXGroup; + children = ( + 59105C2C723733696B2E1D59 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6C10431257D90AF62EA7111B /* testwm2 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2EDA27D54B685A0C6BB35045 /* Build configuration list for PBXNativeTarget "testwm2" */; + buildPhases = ( + 6BAF6FAF74925E6F7C736415 /* Resources */, + 31AD04CF361A25922E393F96 /* Sources */, + 3DBD598F73182CBF440C06E1 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 2698067776130AC26A3A2EA5 /* PBXTargetDependency */, + 660429241C7B78DF0C7A584D /* PBXTargetDependency */, + 43CA13A96A50417667336CD1 /* PBXTargetDependency */, + ); + name = "testwm2"; + productInstallPath = "$(HOME)/bin"; + productName = "testwm2"; + productReference = 35E44B6A5873714451E67831 /* testwm2 */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testwm2" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 401151A607EA22F449860502 /* testwm2 */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 195737D65DCB4EE759E61769 /* Products */; + ProjectRef = 4C504D6207E61DE141765E39 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 6CCC5F765A214B6E57560C5E /* Products */; + ProjectRef = 47E31F7C225663880E362D9F /* SDL2test.xcodeproj */; + }, + { + ProductGroup = 3D2D59DA7D22596C776E640A /* Products */; + ProjectRef = 55CA60F71F094206499C254C /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6C10431257D90AF62EA7111B /* testwm2 */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 011662001B92336F7AFD7AF3 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 29F51E3750821F87761B7E76 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 309F1C1F50A10ABD1448426B /* libSDL2test.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2test.a"; + remoteRef = 2C647B0A098C07DD4FEB0882 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 59105C2C723733696B2E1D59 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 02B82848508446AA47223651 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 6BAF6FAF74925E6F7C736415 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 31AD04CF361A25922E393F96 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5D503E553F0C5D7B6EEB3028 /* testwm2.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 2698067776130AC26A3A2EA5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 305D53EB2004154C5A6E2B3A /* PBXContainerItemProxy */; + }; + 660429241C7B78DF0C7A584D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2test.a"; + targetProxy = 1779432957240AE615990332 /* PBXContainerItemProxy */; + }; + 43CA13A96A50417667336CD1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 0DB9011E1746058568933C42 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 73DD49E7084D31E13432407B /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Debug Universal"; + }; + 0727396E6F8269E1365C06F2 /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Debug Native"; + }; + 0FB16A083403571729DC50C4 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Release Universal"; + }; + 6C683E915ECA2BEF7BD55F12 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "testwm2"; + }; + name = "Release Native"; + }; + 527334560B90546C084B0906 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 02DF21E5728920C452813B4C /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 068E0EB312F46F67576C0294 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 323A20BE3BA01A771C3B7987 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 2EDA27D54B685A0C6BB35045 /* Build configuration list for PBXNativeTarget "testwm2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 73DD49E7084D31E13432407B /* Debug Universal */, + 0727396E6F8269E1365C06F2 /* Debug Native */, + 0FB16A083403571729DC50C4 /* Release Universal */, + 6C683E915ECA2BEF7BD55F12 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "testwm2" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 527334560B90546C084B0906 /* Debug Universal */, + 02DF21E5728920C452813B4C /* Debug Native */, + 068E0EB312F46F67576C0294 /* Release Universal */, + 323A20BE3BA01A771C3B7987 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/Xcode4/tests/torturethread/torturethread.xcodeproj/project.pbxproj b/premake/Xcode/Xcode4/tests/torturethread/torturethread.xcodeproj/project.pbxproj new file mode 100755 index 0000000000..ac86a712b5 --- /dev/null +++ b/premake/Xcode/Xcode4/tests/torturethread/torturethread.xcodeproj/project.pbxproj @@ -0,0 +1,455 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 246F01AC730219D51AFB7615 /* torturethread.c in Sources */ = {isa = PBXBuildFile; fileRef = 3F07011E7F67723501261B67 /* torturethread.c */; }; + 694D772C7FFC7C2F23D83F16 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BE767C5431A064F3A6B54EC /* AudioToolbox.framework */; }; + 4BF34AF8671F52814F494843 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B2D1BFD239A6B3833153839 /* AudioUnit.framework */; }; + 37E61203407B0A0A386A5099 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5537326739E5001721F16149 /* Cocoa.framework */; }; + 77CE7A3D3C00250E55EB3D8F /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 13E328CE0ED147E4536E03AD /* CoreAudio.framework */; }; + 595E520A46AA6D0E324423D2 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28EC5CA8515B6DB473BA59FE /* IOKit.framework */; }; + 1316135A3ADF40D63CA110AF /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AB13E5F0B0A46606DD420EA /* Carbon.framework */; }; + 7A610E714A6E007E5A3C364C /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CC0344355184FD213643FCE /* ForceFeedback.framework */; }; + 0E8F550006B0403503517B55 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A7D035548C67EEB11F10CC3 /* CoreFoundation.framework */; }; + 767675A2127D4ED6587660F5 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C694CE410B91AB641CF1239 /* OpenGL.framework */; }; + 664E46D4145E42C734DE0D3A /* libSDL2main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20D069B22630310D5EBB05B1 /* libSDL2main.a */; }; + 6D646A4E39546FC310DB4EF3 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22A454FE6FBE31A0353F47E4 /* libSDL2.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6E7C218C79AE1C3E5B845689 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 072E01F247EF3B1A400C6828 /* SDL2main.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0FF7291B375C79BC57696B66; + remoteInfo = "libSDL2main.a"; + }; + 57B6142405BB3E3C77255EC5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 072E01F247EF3B1A400C6828 /* SDL2main.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 1BAE4A0A77462FDC330812A3; + remoteInfo = "libSDL2main.a"; + }; + 25A1255C5E3308BE274E17CE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 159427C84FD2135D685F664A /* SDL2.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E6D56F6655337845A3C44C3; + remoteInfo = "libSDL2.a"; + }; + 01BB50803BEF489E3B326B91 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 159427C84FD2135D685F664A /* SDL2.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7E6A7BC23CFD134274963645; + remoteInfo = "libSDL2.a"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3F07011E7F67723501261B67 /* torturethread.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "torturethread.c"; path = "../../../../../test/torturethread.c"; sourceTree = ""; }; + 2BE767C5431A064F3A6B54EC /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioToolbox.framework"; path = "/System/Library/Frameworks/AudioToolbox.framework"; sourceTree = ""; }; + 5B2D1BFD239A6B3833153839 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "AudioUnit.framework"; path = "/System/Library/Frameworks/AudioUnit.framework"; sourceTree = ""; }; + 5537326739E5001721F16149 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Cocoa.framework"; path = "/System/Library/Frameworks/Cocoa.framework"; sourceTree = ""; }; + 13E328CE0ED147E4536E03AD /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreAudio.framework"; path = "/System/Library/Frameworks/CoreAudio.framework"; sourceTree = ""; }; + 28EC5CA8515B6DB473BA59FE /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "IOKit.framework"; path = "/System/Library/Frameworks/IOKit.framework"; sourceTree = ""; }; + 6AB13E5F0B0A46606DD420EA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "Carbon.framework"; path = "/System/Library/Frameworks/Carbon.framework"; sourceTree = ""; }; + 6CC0344355184FD213643FCE /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "ForceFeedback.framework"; path = "/System/Library/Frameworks/ForceFeedback.framework"; sourceTree = ""; }; + 4A7D035548C67EEB11F10CC3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "CoreFoundation.framework"; path = "/System/Library/Frameworks/CoreFoundation.framework"; sourceTree = ""; }; + 1C694CE410B91AB641CF1239 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "OpenGL.framework"; path = "/System/Library/Frameworks/OpenGL.framework"; sourceTree = ""; }; + 7A1676731649440872F55D0B /* torturethread */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = "torturethread"; path = "torturethread"; sourceTree = BUILT_PRODUCTS_DIR; }; + 072E01F247EF3B1A400C6828 /* SDL2main.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2main.xcodeproj"; path = "../../SDL2main/SDL2main.xcodeproj"; sourceTree = SOURCE_ROOT; }; + 159427C84FD2135D685F664A /* SDL2.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "SDL2.xcodeproj"; path = "../../SDL2/SDL2.xcodeproj"; sourceTree = SOURCE_ROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 22F24EE735AA3B060AA96E2E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 694D772C7FFC7C2F23D83F16 /* AudioToolbox.framework in Frameworks */, + 4BF34AF8671F52814F494843 /* AudioUnit.framework in Frameworks */, + 37E61203407B0A0A386A5099 /* Cocoa.framework in Frameworks */, + 77CE7A3D3C00250E55EB3D8F /* CoreAudio.framework in Frameworks */, + 595E520A46AA6D0E324423D2 /* IOKit.framework in Frameworks */, + 1316135A3ADF40D63CA110AF /* Carbon.framework in Frameworks */, + 7A610E714A6E007E5A3C364C /* ForceFeedback.framework in Frameworks */, + 0E8F550006B0403503517B55 /* CoreFoundation.framework in Frameworks */, + 767675A2127D4ED6587660F5 /* OpenGL.framework in Frameworks */, + 664E46D4145E42C734DE0D3A /* libSDL2main.a in Frameworks */, + 6D646A4E39546FC310DB4EF3 /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 542708782B8F5A45218D4B11 /* torturethread */ = { + isa = PBXGroup; + children = ( + 5F622DD864F5259F077E0B96 /* test */, + 65F54082534442FE5F3C6FB2 /* Frameworks */, + 14834D0F1D054E0E166621A2 /* Products */, + 4E0F5570346F6A4857C42910 /* Projects */, + ); + name = "torturethread"; + sourceTree = ""; + }; + 5F622DD864F5259F077E0B96 /* test */ = { + isa = PBXGroup; + children = ( + 3F07011E7F67723501261B67 /* torturethread.c */, + ); + name = "test"; + sourceTree = ""; + }; + 65F54082534442FE5F3C6FB2 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 2BE767C5431A064F3A6B54EC /* AudioToolbox.framework */, + 5B2D1BFD239A6B3833153839 /* AudioUnit.framework */, + 5537326739E5001721F16149 /* Cocoa.framework */, + 13E328CE0ED147E4536E03AD /* CoreAudio.framework */, + 28EC5CA8515B6DB473BA59FE /* IOKit.framework */, + 6AB13E5F0B0A46606DD420EA /* Carbon.framework */, + 6CC0344355184FD213643FCE /* ForceFeedback.framework */, + 4A7D035548C67EEB11F10CC3 /* CoreFoundation.framework */, + 1C694CE410B91AB641CF1239 /* OpenGL.framework */, + ); + name = "Frameworks"; + sourceTree = ""; + }; + 14834D0F1D054E0E166621A2 /* Products */ = { + isa = PBXGroup; + children = ( + 7A1676731649440872F55D0B /* torturethread */, + ); + name = "Products"; + sourceTree = ""; + }; + 4E0F5570346F6A4857C42910 /* Projects */ = { + isa = PBXGroup; + children = ( + 072E01F247EF3B1A400C6828 /* SDL2main.xcodeproj */, + 159427C84FD2135D685F664A /* SDL2.xcodeproj */, + ); + name = "Projects"; + sourceTree = ""; + }; + 71A114B313501D3A60DA451E /* Products */ = { + isa = PBXGroup; + children = ( + 20D069B22630310D5EBB05B1 /* libSDL2main.a */, + ); + name = Products; + sourceTree = ""; + }; + 019764BE0ADA2A9358711668 /* Products */ = { + isa = PBXGroup; + children = ( + 22A454FE6FBE31A0353F47E4 /* libSDL2.a */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1E4162C874937D7C0F0B4321 /* torturethread */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6A8E214A249E25280BC54424 /* Build configuration list for PBXNativeTarget "torturethread" */; + buildPhases = ( + 2F7F51D51407692531B62CDC /* Resources */, + 4DFD3F8B7DC519DF353D67E1 /* Sources */, + 22F24EE735AA3B060AA96E2E /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 043808470C59457650923B9C /* PBXTargetDependency */, + 3C1D45FD04D353DE2F2608C5 /* PBXTargetDependency */, + ); + name = "torturethread"; + productInstallPath = "$(HOME)/bin"; + productName = "torturethread"; + productReference = 7A1676731649440872F55D0B /* torturethread */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "torturethread" */; + compatibilityVersion = "Xcode 3.2"; + hasScannedForEncodings = 1; + mainGroup = 542708782B8F5A45218D4B11 /* torturethread */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 71A114B313501D3A60DA451E /* Products */; + ProjectRef = 072E01F247EF3B1A400C6828 /* SDL2main.xcodeproj */; + }, + { + ProductGroup = 019764BE0ADA2A9358711668 /* Products */; + ProjectRef = 159427C84FD2135D685F664A /* SDL2.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 1E4162C874937D7C0F0B4321 /* torturethread */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 20D069B22630310D5EBB05B1 /* libSDL2main.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2main.a"; + remoteRef = 6E7C218C79AE1C3E5B845689 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 22A454FE6FBE31A0353F47E4 /* libSDL2.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "Build/Debug/libSDL2.a"; + remoteRef = 25A1255C5E3308BE274E17CE /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 2F7F51D51407692531B62CDC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 4DFD3F8B7DC519DF353D67E1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 246F01AC730219D51AFB7615 /* torturethread.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ +/* End PBXVariantGroup section */ + +/* Begin PBXTargetDependency section */ + 043808470C59457650923B9C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2main.a"; + targetProxy = 57B6142405BB3E3C77255EC5 /* PBXContainerItemProxy */; + }; + 3C1D45FD04D353DE2F2608C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "libSDL2.a"; + targetProxy = 01BB50803BEF489E3B326B91 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 54D52C945FE276636B5D49F9 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Debug Universal"; + }; + 5A9A570E5C8B510F4C6E0ACE /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = Build/Debug; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Debug Native"; + }; + 1A6B1E1B2922781534683B59 /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Release Universal"; + }; + 21EF707D34E75E587A910298 /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + CONFIGURATION_BUILD_DIR = Build/Release; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = "torturethread"; + }; + name = "Release Native"; + }; + 067A546E0A3C1DA571CC2AA7 /* Debug Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Universal"; + }; + 0CC627EB5385752D65556A2E /* Debug Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "_DEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Debug"; + ONLY_ACTIVE_ARCH = YES; + SYMROOT = "Build/Debug"; + }; + name = "Debug Native"; + }; + 09A54A2843B1442F71C423BC /* Release Universal */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Universal/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Universal"; + }; + 6D7B39FA55641C8450AF4E3C /* Release Native */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(NATIVE_ARCH_ACTUAL)"; + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_ENABLE_CPP_EXCEPTIONS = NO; + GCC_ENABLE_OBJC_EXCEPTIONS = NO; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_PREPROCESSOR_DEFINITIONS = ( + "USING_PREMAKE_CONFIG_H", + "NDEBUG", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "../..", + "../../../../../include", + ); + OBJROOT = "obj/Release"; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = "Build/Release"; + }; + name = "Release Native"; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6A8E214A249E25280BC54424 /* Build configuration list for PBXNativeTarget "torturethread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 54D52C945FE276636B5D49F9 /* Debug Universal */, + 5A9A570E5C8B510F4C6E0ACE /* Debug Native */, + 1A6B1E1B2922781534683B59 /* Release Universal */, + 21EF707D34E75E587A910298 /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; + 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "torturethread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 067A546E0A3C1DA571CC2AA7 /* Debug Universal */, + 0CC627EB5385752D65556A2E /* Debug Native */, + 09A54A2843B1442F71C423BC /* Release Universal */, + 6D7B39FA55641C8450AF4E3C /* Release Native */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = "Debug Universal"; + }; +/* End XCConfigurationList section */ + + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/premake/Xcode/build-scripts/build.all.xcode3.i386.command b/premake/Xcode/build-scripts/build.all.xcode3.i386.command new file mode 100755 index 0000000000..4fb4e2cc84 --- /dev/null +++ b/premake/Xcode/build-scripts/build.all.xcode3.i386.command @@ -0,0 +1,35 @@ +#!/bin/sh + +testsTotal=0 +testsPassed=0 +testsFailed=0 +testsSkipped=0 + +function build() { + testsTotal=$(($testsTotal + 1)) + if [ -d "tests/$1" ]; then + cd tests/$1 + "xcodebuild" ARCHS=i386 ONLY_ACTIVE_ARCH=NO -project "$1.xcodeproj/" + if [ $? -ne 0 ]; then + testsFailed=$(($testsFailed + 1)) + else + testsPassed=$(($testsPassed + 1)) + fi + cd ../.. + echo "\033]0;Building: $1\007" + else + testsSkipped=$(($testsSkipped + 1)) + fi +} + +# change to directory above command file +cd `dirname $0`/.. + +# build all of the tests +for d in ./tests/*; do + build `basename $d` +done + +echo "Build Summary: Total=$testsTotal Passed=$testsPassed Failed=$testsFailed Skipped=$testsSkipped" + +cd .. \ No newline at end of file diff --git a/premake/Xcode/build-scripts/build.all.xcode3.x86_64.command b/premake/Xcode/build-scripts/build.all.xcode3.x86_64.command new file mode 100755 index 0000000000..35bea5ef8e --- /dev/null +++ b/premake/Xcode/build-scripts/build.all.xcode3.x86_64.command @@ -0,0 +1,35 @@ +#!/bin/sh + +testsTotal=0 +testsPassed=0 +testsFailed=0 +testsSkipped=0 + +function build() { + testsTotal=$(($testsTotal + 1)) + if [ -d "tests/$1" ]; then + cd tests/$1 + "xcodebuild" ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO -project "$1.xcodeproj/" + if [ $? -ne 0 ]; then + testsFailed=$(($testsFailed + 1)) + else + testsPassed=$(($testsPassed + 1)) + fi + cd ../.. + echo "\033]0;Building: $1\007" + else + testsSkipped=$(($testsSkipped + 1)) + fi +} + +# change to directory above command file +cd `dirname $0`/.. + +# build all of the tests +for d in ./tests/*; do + build `basename $d` +done + +echo "Build Summary: Total=$testsTotal Passed=$testsPassed Failed=$testsFailed Skipped=$testsSkipped" + +cd .. \ No newline at end of file diff --git a/premake/Xcode/build-scripts/build.all.xcode4.i386.command b/premake/Xcode/build-scripts/build.all.xcode4.i386.command new file mode 100755 index 0000000000..4a991445a7 --- /dev/null +++ b/premake/Xcode/build-scripts/build.all.xcode4.i386.command @@ -0,0 +1,33 @@ +#!/bin/sh + +testsTotal=0 +testsPassed=0 +testsFailed=0 +testsSkipped=0 + +function build() { + testsTotal=$(($testsTotal + 1)) + if [ -d "tests/$1" ]; then + "xcodebuild" ARCHS=i386 ONLY_ACTIVE_ARCH=NO -workspace ./SDL.xcworkspace/ -scheme "$1" + if [ $? -ne 0 ]; then + testsFailed=$(($testsFailed + 1)) + else + testsPassed=$(($testsPassed + 1)) + fi + echo "\033]0;Building: $1\007" + else + testsSkipped=$(($testsSkipped + 1)) + fi +} + +# change to directory above command file +cd `dirname $0`/.. + +# build all of the tests +for d in ./tests/*; do + build `basename $d` +done + +echo "Build Summary: Total=$testsTotal Passed=$testsPassed Failed=$testsFailed Skipped=$testsSkipped" + +cd .. \ No newline at end of file diff --git a/premake/Xcode/build-scripts/build.all.xcode4.x86_64.command b/premake/Xcode/build-scripts/build.all.xcode4.x86_64.command new file mode 100755 index 0000000000..6299f15ca0 --- /dev/null +++ b/premake/Xcode/build-scripts/build.all.xcode4.x86_64.command @@ -0,0 +1,33 @@ +#!/bin/sh + +testsTotal=0 +testsPassed=0 +testsFailed=0 +testsSkipped=0 + +function build() { + testsTotal=$(($testsTotal + 1)) + if [ -d "tests/$1" ]; then + "xcodebuild" ARCHS=x86_64 ONLY_ACTIVE_ARCH=NO -workspace ./SDL.xcworkspace/ -scheme "$1" + if [ $? -ne 0 ]; then + testsFailed=$(($testsFailed + 1)) + else + testsPassed=$(($testsPassed + 1)) + fi + echo "\033]0;Building: $1\007" + else + testsSkipped=$(($testsSkipped + 1)) + fi +} + +# change to directory above command file +cd `dirname $0`/.. + +# build all of the tests +for d in ./tests/*; do + build `basename $d` +done + +echo "Build Summary: Total=$testsTotal Passed=$testsPassed Failed=$testsFailed Skipped=$testsSkipped" + +cd .. \ No newline at end of file diff --git a/premake/Xcode/build-scripts/clean_premake.command b/premake/Xcode/build-scripts/clean_premake.command new file mode 100755 index 0000000000..c600fd9a82 --- /dev/null +++ b/premake/Xcode/build-scripts/clean_premake.command @@ -0,0 +1,4 @@ +#!/bin/sh +# change to directory above command file +cd `dirname $0`/.. +`dirname $0`/premake4 --file=../premake4.lua --to=./Xcode clean \ No newline at end of file diff --git a/premake/Xcode/build-scripts/premake4 b/premake/Xcode/build-scripts/premake4 new file mode 100755 index 0000000000000000000000000000000000000000..dc3bb9abfa7766e96f1be5e63c9d98a04cd253f9 GIT binary patch literal 419580 zcmeFadwf*Y)%ZO_5=bC0Q9+`32@-7(tBHb=1|(x<$QhVGETU+Ms1d5I7bG(f<(70v z;cz@kTkTb=t+tQtQ?0#d5tSx@1e7A6Raz|J(KACc|8L?`WxKToBYb(j2V%c%@O^s zzk9+fE~GLCJj2TUl=uJ)Opkwjd@qMp?_d6Fz>N}Mo--XxP z4bbpr+%ogF*)!)T_&xEv_dyMBNv_Ty-(QYjrVCEv%Wij zn5*d5?h;78zwB?ujG4F0m^J6d+h^)j$K$8rO}k0QKl*U4$F2Ga!3y7P0O=Vs0{*M~ z*-7#gUY?Rvn9G0exA2?5r7Nhv88c?jx$~RgHDm6Lb6}S*f>-9I7q0!Xn$DQ<%{w!# zdOW-`@(blhyYS>YyPiT$;jh%+j2U;_Hlyk8+i$w_wi&Y{bB@FB1{a?6Z~2q&W8vMc zqtyQyGj6-_%izs+;idRazO&&8{pR<8cPt+t(;m6HzAJogCceL%emCD3xiM3~vF)+q z6b+2Sij-4^%rlyQkIUe3L7ha0L zB;%LC%gEtyXwt-BAe54!B^obJy^8_g^7q+z{VnZ~joUdMPfNKZAYDB__59A3Z}+dA z?-nvum*shOovdYNF>%J_d7gG;>1X}nylXw4euPPW`MZD*dCs69gEY-L_=NwBzP&vk zo*-rbVI@3d_goZhnsd=@x88Ko&3E5+GvD$zgh%k`I(NzPbz3W(Up4F={g*SI+EGea z5s#-&U-d}sSMo?(pU?CE_g`u}`k(NSdf&n$b<{F;6mMS7MN{r>ip;$IqVTOZ&AD;T z-4~4)(KzqUIp1!&sOHW&GpEd)GxyfUnN1fektyL9T|IM7)2)md7x{an0Gj+sIiq>f z<#-?Ai*iylhwi$_3$M5k`rqox+2imVG#@m7_&?z{{?6zfbX4&9Vhl5Bz~nq0Y0r|X zJWm-NVz~P){P%zV{x1doF9rU;p}@C1hWT$J_Fk7^EzCFUXpwn1w#M7>PLAQ-ZW~bAz)a&`rRLN=$Fs#}l!_2oP<(mdcYm15+)=HHB8voT( z>O*B(&dC+;h+2auqp^m+|A#W$IW#P)^qNd!i*<569H)8AZzu~{$ zKSP&qR33~NVL`6(Wy9QHbnMCv4Q~&dwMA_k7hU9kPKM+}ekj&aq!I~gwgGyRiY8j& z{BEjLV--rBk}pU9p+U~FYHyfjj=#Yzz?xiQSgk(>j$!^mesuVhdc!U_h31l7fcxpWz+I+sEkj|hIFwNnBNvpZ2|#5$YhCD3}b zOEULc`KUzY)RrVFRtnhRFzsZ(g#cIJd-lqHm0K1S7|7LfUej&O$?aYZyun9{cfeE z($r-}RZV^LB*Pwc$$hl0xwE|8S;#zzx7AW}=b58YW{r?p2mt1Sb%kM$r!i}aV$I#T z3$8b;`mO_46y!w5C%#V3fO)`KsPfSo3Qe%-1{+HL5TJ{{n$9{bl{Ipj!bXv}{J{8v z+=$}6+kXHqa9J1qBbyXwDe!_7Y;zL1Og}{E$&JpT&%xd7SP9vZMpb`rSFR_LWBKzn zpxDu5RH%NXEmRip%Qsfl z=SNQ=p<(VY%r(x8sa}s;?~O<<>4_P+mO}kaLA?Q}Ay5%+IqFR2D_k{dh5#1Sujb_# z)JYi@_Fa>K8lO1DtFTuM(GM7^83v}B;qggckMEjxS|XCW-&X`9rCLH|_~#Kf!zrl@ zO=O^|q|e)L_%470r4Fgq`z`6MdMe$vEz+MRKkSY6j*afY5vif$P2JO+dAf+)NIB?3 zd1pE$0Dc_IevFiTWVz~f(s%sig5B!cl94`$;-Zl0L(&yzD!#U&T_QgUb;|U~llXV0 z2}5Sm@k)MktyLrJ6|6WA>&~4w2JQ}s7;4OIHM|>=yA&(za9*iX2%TwIIbmydQDUHB zRXKmD^m@XLT?tB;(2}s(l~wqPm*`Kg^ZbkFW1jbU1OsQ;VJWzyqCIvuT?ScQ&~kTQ zPbAl{{3ULenn@Cf7(3i6nujb;45-)`JKQHqNg~9`ptzfG3<+t@d`ad>^r~pr;VC9M zAQdeZV04uZhU(a%-t*2g>_Jtkl7-6+@7CmQDk%i*I+W^Ch&l`Dojv5z#iAcdXl!j+ z;=Rq( zswpA!jga)F6AZ(P7+}IyBSq2?j)u+s&bq!{Psq$I^>+qJvGZw3S@aG6^sGL2^%TSW zgidX=y%jl~tj?>8Y1>qX6{#9uNYz9;$*NY!91k2<;-;AT3o(0dsbXD?RfbXG*KWxY zE=KDI+d(m;hM*37;4nCd1 z_9CI2J+)mC_JH%)tD>y=jHFkNV$K5#w7}6MF<+ytpe@A9>dd0>ZTqfL z_{u_6N6d?0W}9UQI#sS_8Tw=g`0v zA2h^|hO#Jz*ewp3TK0LS(dIHG#|eE@$mUq_$iw;mR(hCZII-REg9`y7^P7!e|i|zq>FiQ?_c+ zqeIYF8HD{`&{wxDN%vKTw*Y;0_yt*gRcVZ(t@P-tx()%sq){d$hx$bFVu$ijQbg%A ziV}sIx$oVui)LV4Z`&AAN*EeHZIuSPQa5$FmKyE{|8Zqteq^W%x_7i(>x+OFomSL( zfs!aq2iK#?o@BMO5Q>JC=m!QFInh(y(#5no3ton)Y_>>=uB7wfCklATx-?|XV8S#-20&-E zYU_z`ZN4>8G}I8RuXNh8p?KE;e?d-U5P6hB%2Y1t>|%BxiRenZLdbVjpG>!t0u^g0 zCT~s`>I&|FdDwZb0#2~PrBbM$Uny3|`h~?p2}4Ptiq%*m0@xOliE!+C(ArtC zO~hyXJ{B-kONfmHLY9Th&4#(fFd@y6u)VNdb$QGl9nM2H(d+F&&!ex@wH*lgf(UAn z2+m)0P0F&wzYD^;rYLq#x0-rK9v-AEW)omvoFW3mlNFDw+U0qTe;n26rbO#(p~3m!AP9)EIks8JhX zhSwA&&JVU7h@Kl(j5O*wtszuwbG9aF7PGg%b9}bK>nf@SN)sa#nu;3E=!EJuqoBhA z^^BN=nzK*P5spE(ze4xRx`${aKV)$t(=lW|=ISTy!k}s9g4c`OS^G^NLSK8TgQY<9 zjju=+=7bnP>Krkx2!+gx#eOpZEkF;l84<+fYB7_mYYoe%CRgWScntfVy}MuK!3BYg zu}f@6hS>||U4YJ-IGZVB;VA~@zk$I1c>R_t~ zxXal-S$OV6nN$#I66ySAj!b!@dH&?9k+5Oew@6&uMwETKf1Of1bdWu2u~tJEwd>3- zEMrqaCNUB?!_yIA^J5~$NW>7sdQic#N0sS#9f<`QlnYClQEZPEF{5Z9Ag%d1)w8oT zzqJ`<^qiZ{DcVsH(p9;fL!B^es_O?ht#YRWg>l1wdvYMBWxz7J0 zr~z%9f&J#(u(`(>Li78RFNI>A`7q_b1E!<os`x}}KIU6>+ zQ^~THMsyPvBE}F37^0%5gU@Q2sX32PN(wnA7b7hYj_uni)nm0-$Hk8Ew#!sP8s`dy zXC#*avyH$u$5DdSIGB;WDZ@&N5K)D<5?ujJ z3}+D_5g(%jtcG;hsm(%al|o{n#>^+FL;-MyfEB#r67;Y$kWh3_#92?GNrlxc^XLCo z<>V>kXxG{E6pulJ@^%S}|A(HGYQQP=m}51mFQk@%%I;{tEK)*cv7BB^REpr4*tnVE zgsZ1$5D5o!T6Z!!2$iZo#i~52%zH7SWvHdJvLc=57gQL7RnVE`yJq7o--R8~^Y1BB z8J*7o2fM0<7ju{MTLMyeIAV&$;7VUa;XD?$f~X6)T0vQKvd-wHjf=W+g4}9Al6*<0 z62$cA69u0nwv^k`_#{^=d`?&R5G51H`H=O*gN*dpH#E?Vv?d*7paPgh%Eh4b#hI1C z{BpWv#anPtEj1ApwN;BZ&Aik1Dbi?$ZKM$4aA=4Te5*9!HN$r&2~eaX|I_&w9WwRp)PQHKJ1=szgs5)!%)2^TR?bKsFyqb| z$`zFfOaG{AG<;%^jeqXW0<{^+3KZ$9QqD5B9Te2Zfr=bF_y#GQpFloUiTafi85q9H z489&@CHUaKf^F{w%y$?0NER?Za_#{p#Ng(UAX&Hh4?>ws{K~fXVQ4FZG{G_vw>XDBA8rHElQF=?&h1jK( ztn>x85RDpjwrYtKz?sT4G87_EKHjhmmW;_A`}GAovHN^!(1fu?_$I3%|r=so{Unj^a4gB5u`Hem)F_tI{$=$ESMHkAPv|O& z3*XE88FsxlWDZ`IZzR`}KKkadW1G9aK#e2cR7BEMRb$Ii+Frz$o>*Q1Osk10!TciU z6^7T&ntWB)%oI|mJDqg&ZY&BrodECHbf}76v&l@T#9q+EZ0?ls@clA*nh%d1aGpkf zgw0EmHTjCQW#K3@0EsH#s%c04u|@g47F=IvEmFJ*qAYfc957$^#QBtgK$VLK@q5QJear6k zn#=VFtJGGpl1z2rE8Ue=A(IT-lGb1q&KQ2ku$U!QzC8Clp+qhiLY4lKT%?rq?oR&K zC@P)BTjC5cv|a%V7#1V1Hz%F2X$Nq7jKuEbP8QMp_IERb3BZ%i#Uu~fk>1|tfeJBQ zDe{|Ls{9G6s-lRk(nIWON#*>SPOsLCT_KSCm&(dqk%gyok-qop)C7=qD+74qGy#27 zGH)YsVz6_m)Zbj2WaSxZ9w5_iNcRO}VM;j)wk4aV95*1|0mSrxNPz=X>8!el1$K(4 z4~=x@gU$@vmS1y6#kQ;=|6&qkK93VlWzs;>fj&bXS+Az$k<PWd zzMr8Cf>VHkX{=EZMsX62^+z}jK%WQ<`#}+sifSFs8ircG`I2EhtgwMzzq*mx6PAe- zrm8nAArQ8Z`PE)ARy4h(;C&OsRLFj3ETH`_3i%R9JC*1MlE}(?;cvP*tAbmigJd$+ zx=xxqTgu*lL)NVCswt^eKxZc5)@bJ@s>@8z%E}(a_M(>dalVy(j@H zSxThF2Y`f9_uMJNC$TC|M!(g;O?TPhWQWYC|X4iVT8=L$Cgnz3doqf z!sepwM0{i|7nFcl`w#N;7yt}_VR|nx%*_q)A5ul<%^CP^WbBw$-r-lIC5ux`)v!ag z!#9=ww3D%z2Kb)Jqk4M7+7&BY$|IUri?Zq1v_{w-H5PIUO(jgGtJN|X+k^H?hZCLR zfU}X6E6^RR6Rzq5+Rj%L6A$W_mD%a7a*pyym_4Xn#E9MB%OZzV@>}Y2)cb;2+hv+9u+z*W=6tLS&%7xkC=$>$A4R||hDBax z$=aaw7$I79AGBHNZfyX47#` zAu{-I8bAz31I2_poO|g>%E77at>)8p!cN-D+@a?KCM}&@n>Y=Qe41bZrpBqe2!CFx zoz;u9%JLG)QYy>eK}RV8E@Ne}m2_a|Oyb?ytDyS~dSbfb;!DGaFx4v}^6><;``@Bu z(#Q@XoUg#f3V53G8i8gIgat370Fr5{eVukc77?9#GV~-F4W)Fi_yyOvb3N6HtHnvr znag0No6;%K$-xR0ww@vwb?HuM=*rwVRN|d!2q6xJPEG@d3EE1DBL&`{*FIk|J@b z(YThD*r8;~zz!(=$8_q`Xiu5oNP129OUd%Q&_(#<7;l`E)$$XpmXkZhBHLR8rL5)b zj7%27G}46`oP~_BL*7Ugvi)M$s7W+D8KIR)Ak=KzxOj*nrmBW^&9DO=Zz6A{3>va< zS5dx>nE^};AlNVt(0P%i48FphKxC?<>(XC;s}6wlQw*aFlkw5;d|J6zt-cCr z;&G~&MFK%{QAo3nW{NTTgDUK$gDVVs_7MyVno0V~8kB1MEWq!;Q^~bP<6F>LCTG6{ z2(Kyy4Rtgs6Een`TA>dwCQFl7e(pB_2b`S2?Jx>+AR%eAw*NHSwVKk3kM3t8O zkz&(fA)>XoF<8xS%hj(hryWcadT8`ZlE{Ip}Q^Z1q& z`Nev17Xxo%%86xP}e5Ufw zbp@KYRgIc;A=I}}D`cO+3z$h&EZKnu+EI~l(L8kO^Q{&O};Eb>q*;S7d>UGehmjxVP;+T zift?#I&acHRS}A+HCY8Ht^J4?4m2;{oPjT`fsBTM4v63o>w(fG#GRt=e_Vjh0W3mv zmW*LOi~bwj!TCZ^vS$khin)OJIWht1BhG)SA%EnK=}KZvdsP84&&;ZCjTk#lJO{IIQ4>D@}*$qr;C;` z3*7uynLCt|?N$VWb0C>!#!O{yU@XT1Br0CitBsF&Rj#g#8+f0Sp#{Uz$*v0X3a zX?N85H|&n3UzK7JuK==zJd!Z8Jw*&UZOgkHBWJNr&xFj z{FOTczR5=tIeza>0v5~Yvz_T%I`K<8MeH5%i?BL&$x$=7P)pNK?ESDd11yfi>0!lr z7$zWC6K@E3BQwUO1AYMOr5D1=?ol?m&F=WBcxZ}CBlXb@jab4|*;T-Q0~{3qL#8{9 zzCj9C%|pXOHjSDGuMv#``T>Yz2k-{uDqBwrjoMW{e}*w@H;6yo$IofvuJXEY6R=4w7Vu%J(jLwpR>n# zNKse}d5W5`BYmS6INt`rREYCD)Dmsx`_kdvWX?qpJ^mOWu*bcOB-l~xnxh!8=16st z({+zk)sa~i`!-kv*o*FW=9OaQSZ`PjTSAp@N2)PaBSrQ;pNmNGRLdGX7Ktr{`ktMi ztX`6A?(4S#FN_Hcbr?@1f%Bx=nGxOIG9QCiUodj|!=H(vvqHW**3a_Yly}b6Ue7Gw z^t|)c?}Bzol0%YAI~}u}k)_eyB}276=u9dglvT7pSL=k$=>UU{BU?4fOy(DPe}xJe zpEG;Z!EdO%t5n~78D30Wp3XUdoO~cXhVhm)*f<*@D2=;XXBPckc~{Iz;jJ1n4QG&a z0K0#yq{jP&AF&z*@y*-mJS9cGl1fVZ6iQ;$G)n!x#Qi=M=S+oX5|7SWF#*Z?1kVjT zC=|(kJjaN|XqH+Z*-V0P7SsVzOpZSNs-E3g&2dLQgcfX|i%B3lZ z1J|uYA0hR^Q^jPRo`?LBP{dXA{eZbEJ^h28xz{OiB}@H!P8iQ)?8*>Cv30GeN~tcp zYQ6qY2>z#2eYonLUP`@1&vMd(axdC7-3)y;s1J8go(?RfqljM23fnTsq<1N?fnxp2 zv}=&2#tY;XyUodIXf1@qA0ZPWCKVVd)P#Ntq!W40RDNJS65K7_^=+n^sg%xns9;QD zZ-E5}6Mgb2Y<>ttN%^GBlwI*9?$woVHfa>okPs`Jx zB2QDD`KEN^sJ6Nvc28qFn>d8*#p!@99dNz`D8_7X+gU#7qe|s_5@yBZONdALBh~4O zQp;B%kh`j-ZI)JTc~$MmMb}Ztq~wM$HX|1DETg!_%560}V!Ox14&_A0m>nJQ-o9ry zR(`y=+;6V&cf3E?Z%^=6e!O6)ebuS(@wP>yJKh<5F8eb*1zT#&+}1=H{;?A(yB3vr z+0i_>b&bccKmp>|O%o-J zVm??8{gr9H-@1M@UYw()J=s4apjMySl3eUeASrVF12f2?+Ce%QP7WR`_yO&a(OBJ* z1{7>g7jd#%MC@=fQeX{WStFWjo+_Td>@BM<#?82KvsJjPBR-(D!|OSkly#2+J3PQE zDR(!-KcyH!k@}_T>XC}F3&*X*)3{Sh3dn8Nj?|LK?5ez`JnA#A8EM$_Mw@FI;>}dZ zT>qRbIs45m4e??ZuGwWxE;lEq)76tM)gQHz9Kh+oZ*FE`%Wr;)0Sxsu8Tops@g?Ov zXoZSt&JJe)n<0*B>k{iJkvzXWJx?rIXveb8WDjJ}Uv!W>YwGKX95IUx28-AcbcTOL zpE^d5O(8L*-uxuo_{qW7ysw$t4{rB`A)PO5-CfLLNiPpuq^-rp^vl+3P>7$x1$$+3 zoX1l$EcY)R?+$2P>uFCeE?8S*p79qAKE0bAX(LNzNBue1kHOaEd)8>Gd}YyDtw#=n z(t=Y$)*^xWF9ua-8c<2HY+6%BzexEn{Q+|Mz1NRP$D~#-I)mLZ2Zv>tmh5+=!w9Qn z4HT|=@}^;SLDi5IDP^0-g3=PhT)0Kn!|{V5diX^&lLf|zcPu}w{t#1C}akU z{8n8!Wbs?MdEr^1#?3~@?p(tT=jV5d!~o|GwhF8dR9&**BfLpMjp5R2mBbv#E|F{U z&8zbB{doT7E;xf|d$Dh-HHDeMN#Jc;lRMp6$l7+8!i1nFqEy-acTRYwvfPkrH zOa42ab|lb#b6~5gfNn{RO{vc4lZ;GE!De7@6q4WF=Rf z2li_>$GaQArIw#qIkEP`vF?1|(jQ8CyZ?_=Hg}V(xH4!9xpeE!9D$jb?Meh(89Me1 zj&06O)Mtkbh;7bGTyE7A9$4p%_VYbEc|v8!;+*8{cpaE`BZynUJYp~T+*s*6o z!TQ){aak8p=mZ8};;qT=%#kX&WLVJx4$F9c%JVy(?yP4H@A9bLobs@A1`*Ug)exubP+uWAkOwEmDPxFMCU z^_5i0c6enRD%h2rrcR2@nmmE~&nF_RC{np@HWksZ8M z;|E52H^k2dSVR106qYI^_CblZ@jJ}0ac1dl8w`Lsb556;IZZS^f2<5xi!V@zUx+)` zIj!@nRnTejH53t8G(KM>$F9zxBa$OwXhv}^0b=4hF+dON3`#p91;r~xrIZB$WXvwi zRS3qNi8JN21GRxv$BXP!@iLLv?-)W@I;g+1w+QwA9^&Etl5{0gW(IdJvft{Xx^Iqe z>5~dle_^xq9``S1ePLFOzv^6iLE|Lo=2q%@$lI~2H@qNyT)Jkyn#;?=+!fhzs@wKS z40H2YDsF(^nvB$*SJ<(;cR_~$*c{u;HqIL1U{X3WnIwNPav7A?t{4k-XY<_4^8}A- z(NuSI*KTC7>`8D}5aD0l(|zzyxK#Q&I~~HMV}jOgrDISHwDx)P9DOgvvCK4i}wNC2a^ z?D_RuR~K0|!LhQ*BPeoFML4(Fug#PV|)7G?IufgrwT zKXylq)0LOJG~TzQUFZ+pO4{p|$(Htha=82)C^*o%`7OriESB7c*Md+_=?tR1#V2Ah zmg=i<(lFm}o;rd=t|{!yp`_HHlqF&CYeLWK3<}wjND2M3U5Nm8a+Aly#<0lf*immZ z?254nY-r^qH^jR8`If#SVD0`N%1`Q;iq0GnHu0zV=VnfMM=)(m_INXNy*CZW#vGJrU&+W*#hvrOOWvq7@6-vEFH7^*jq%6Elom$) zvMD=1QKr8JtFIHKMXUM(I82BF1xHZq3bu!=x?<}}(PuDa-N~5dj&816$DZD_nlNjH zIG@XM#5$grdEVw3K%1Y*a}m!}dFYVJ*GBqU?C5}bUr{?$UxEl}YoYXmBGnK2NHm}r#vYh z(59Cu4q-FgoCU@io;o`ICH!(gPb$R-%KUb&5!i99lxP5iwe*WXCXv zK%24_z8*^suJ%2EZS+0ggKMhu_hYW{1-tyd;7hBjsi7~pwcxO7KQ*prjmuxtG+CD6L;~QOLfkv|bD*xY^Gy!NzfI(Cc|lG;_ZkjkegSn+Nlnq8&~w#}i)k zL`n{rW0qy$T&3Y$C2-1II42zgC(ngbmWETN;EY^`T8BBqoLHVRny0<7#a@LBG&iGP zvnl#e(idEB?hy0j`sB;8&F9E2`&--3ZcALrnupO5A7^xQmj>(w`Cfl(GD)vnT;T86 zJHTIXFyV6tb`eV=cr%~kJf`*pt@WGNkI8UgPfb>}zq_lCegkZe5WxSWaqR!_qpHoxd*B`;NzH)3PONartRQR6g*sumQ} zSB=u%9vF}SwAqpUhFo2M%4d4{*dq$>wvU=zxY}&2RtNMrayDK*YDS8uRC+cxAaTAZBDHEZDn|sl zb}W3G)f_UHjw0q~^MK-o*k*6yYgvl5YpQD1@flN9Yhsva$AL;#1$1$0;+NGEpTJ-@f}ApMSeeoojr9%(&J8;M{#Vq#$whwZ#SpadC>N86H% zPPVRkj)vS~FcA1##&BYFjy3SP*gNACu zUzSh?o%X9-k8|DzcNs0yZc6mA5+s{&XgJ&+{`zxqd*Fk;Ro1!B@#Q*CTv~&9_STD8 zzp}piTNOMN$S-c8udEh3t}~oCyu^J={=^r%o+Ku0j~xLE!qwp75eOGuA}fl%CHF}p z`dSU&O29H5T!U7*o8i*Ak>xXN*D^GTLmRFq-&v&=P?U2iq)Rdfy#HzGr8su5dtj?N zP-kSREXcmZyUOS+`foRdJ+@iE{j4qUCY}6evOc!|Ru+W(2Rglxg7v|j zjfzY7>=o&=K9IL_PEz7>BYp8Emhaotxi|7g8%F6fJDsf*DA=7O*l9AqW;#y@)fWfIg4V@glgf3eJrQatY7b-h0IP_ zI~7ylZ+|B^?1MHJ@^v+nahCt4kr%{Jo)<$2*aBDIeNGdt|GY@q_)W~;NZp^jELZy4 z#_Pg=%?j&%&OP8st(R$Rw5L%oX*oN(Lh5myj=wWI z{vB!N#^^GM@A$pSe{FXB8XbSH#Q#Fa2eadUDe=}bvt1Mp>LeFuCs|Aq!TmPD{Xsb+ z4WgG&Xo~<1>l}I6IqKXTQOVJmm1BwII9=!1dATCGuI3Oo#~qTR!p$)r#BOjAyIyDd zeRifj5S1jN>kHf}o#cDjN!Ge_4-4FX$njm^&cUmLB081ylqa!INd0C>nrBF(ctsLk zO2TV0373#CK~Eg?rjk>_mmF6D6Q-C;&OWW<}_cB z@v2UVR!M^kDpK=i@?(^yGY7ZO{F|J!Fab#SXxK#GU;z)q+aBi>x&-W3uLvMqZ-OCs zPmQhZMG_GDn8BDHmP)b4=^%x>Wu}In0?TSn{^PGyBa7kqlP7h1E6K4E4p$4@iJ{cg zWPa_Iy#y(nP#XXTl3vLWX0OOYceClS^<6f?m4(uhmy zq5<|HK0bXx#0O$sl4xhn31Agln?sQ7BXk~B6%MYXHC8tY1ulj&Txa$<@_i29dWV?q zf+tJ7-T$8oiMkE4wO&pc-e_OhtFG<6ur+g~FR<0z8rzsFLMHICED~domaXZ&NgvBT zN`>yd*fNdI;0B6dSN?nIBnmnwq$B~JQSHJDIY>V@{ZqeIuXA z=myr5WgX;6pePSW4mC=%yi#LNI2_F779CfSP|RMzoB^T*tc9C`_BS(X;!iz>TKR%-6lkX9^`>9SysT5&Mq2DOlK1Exi|A#*>f#0G?*neIS}<)>??o2S{CcfBz3gCr3(2_Nbwv5t;`%yX<_w9i>?hIs+A4-;z@(G?Q=`iXO3AGWGwB%KUrw zz)P6eNt{E75AFPG*bj?vOK_gRLFd1I!D;DY>4j83QIem-eqJ<)r-{rqd8spx+D1Rq zRz@TH20_AlMk28ChEQ#4VLchY@yN!O@)-i|lLfPa?Eb$I!dlNrwvf4lvjfE{d^(9a z!-6JV$?jD}Pqy`es1`p{z|vBs!ZdZ}LBAa-mEH1^btg@OvzW>q-4hpkL)cPH0!Gm4 zO;|*h{b+3W#UXxgLxN|YShaRCBAC;o%*kv(-8GVFON^Fh%l+O{n^Nk{*XXrdk! zKvtWKs4b&C*2B^&(enwpg_q@?F*T9gF_EY^tWo~bbon-7E&g-b*|1Xj74hRW%rG$H ztwfHwJ$kCndAW|cSYp0Oj8)g7BQ7Jt#d45DPEar(R%C~}Ej%ZV?qIi8fvLE)m z?)#aZHdssN)^)w>VZf@N@%@(QJK<{A)eJ2XpUa4PswDD zssS2FobS5;RaL5hk%I1uw5fz>MPpAl^t_AxRCSBvEQou0iro0?kdHZ zXM5X$#XIpZEaLwOM6!xa@u?X0F+hpqO@tLi zGi;C9AQO=?pdh2s2qFWO$Gn^=8p^p026WE^4Ibt2JJX_UBO?{2je4WREYetDILBvL|zOMsNe?kAy}HkXumX+-iI5 zIV08Hh{}(B4|kxrJhEoV%OvYO4i(IGUsSV6G@kUOvpGbL(18FzW~bg@TrN6KvSwB!24M~HRFiVqWK z8I3g&DRHV{=eEdUy!B!Gf)2w9bmWJvayb^I%D=qN`ruzYOVZ|wg->v#j~6cy3{7?D z@NBj>>)QFH*t(US!A&Ad;$qssd%KU~eojASX^_u^m`BW-;?9~f>WZzkT>pr0q_fPI za~?LSG)*O|u=jYJAQn*C*`C{+sr#Bh{_NurGD>xRZI~<`6}&0 z#QRpWkoWa@17h7_-x7;}_+tLWx@XRt6ziViYrBgtf6F4SwrFc16MRx)ShK4+x3$V{^U`cqa?P@98TKEKAQO{dH zKO4HjqBsr0xGf9+;*Az?%D3c7_`>Sgb{XnatZ=YgJj9vdMT_yQ+N(#)ufi899{y*| zMLGk})y(-34c)ioQD6Yv6YZmTATmH@NEI|4SZY`4w_XJlizF~ZtobU>qKm@TEoH2_ zT30qN87;JuZ#2KWE??mv|vW|b?g=6ZACI?K4K@(|-u+eUSx3p(w>2YgHRgLG`+ zI*;!@hc{f!P&^GfUfl*OxX!M|1MYR$Fyjq!7Cfu6{27blI^TVNBOw<^hTfW_E#o-v4|9C=Y5Ud>U%a#P3 z+cpNxzeVo~mW{634_FOPqwF!ieJGkAKTGOEF_mx9(&mn3YugjO zm;3`?)4JDv!B@<>*O#>4U1m@0MM+h4Qh(%!J<-dGm&~}W!uwRCor=E(5zzTjA)o=@WvujitLgVG?lQP-?xB-58 zPUtxl$D4C}ZC6UxTO@1c-+d3Y3*wJ(=@3WVDt@dk3N`*soRKLjwje(rZa-UcTq-$a zM14>3(^nLLH?837zQ9`eHhx%f%6q}ezxnR{NO&WU6f*THskb!Wv|L^pUuD|pnJtd^ilF6U(m~?JCyUe&mO44sM|h3CD-aMO=RU--@R`W z6qn(TZ=rLb>XvCf`yB#s`Ip|M2c29jLB{NWoqL+@EFC1ES1f^7f*T^|!7)!5_8Ctr ziEripDYhY3c@O0J+I~bzBe}kE^P;`Fesl{KoVO=tQlb@HF{W2^9tcM-Jf7$xRKL-a z+D#M3il4!}fDrX)W%t6W#F_r&#z-OGKGl}p3(MdfY5qyl{K>Ud4S)9Cd#m_@G$O@d zyMR^Nnvg~i150e(v@D4}5q18%Je52@B?(;am>)rH6_?5N0l$Avt5X#O0nV7gvZ0b@4d(d|@;cbX2z>`7qQHn z2iQ{6*#7F%R61P^Gx2!F4k2+ zeX6?9DLw0S-alCzkYv`Y?$|SYSM105`%0A%AuZ32cHwM>7X!gp%DUer)!i3wYOdK&u5B=qjEHNUzhw&3#o-rUcD0R)B8CpDs z_tBB1Fb3-^X`@C!k&1%kC(eaLVn!45ck>x^QfgeF2dpd0Y<>xxQYKYYCWkjqr;E?Ui&dhC`)2oD(^T z3*;gtZQG*fsk86SO`L^`X2jRJJE=%oH95SXFyZq(drebCd*#cE^0MtLvM*aq5%zd? zmiKC63mP|-C|dTjs=Jx6Co0)Mua=T-9;VuT)nICy7#KU68$FBG8{>wGQ=c>LVWCzI zGj3=Kz1A|*x<0d0Q8%l*(bj%mM4Vy8)DPlxPGDIRwdA6V*vcOh<%wL)7X+@MBS8hu zH-#4;$ITg$ChxLw_A;nG%c{9)mRWPd`kI*{shv9t>4KfLYI^A23aG%EJCiE}@L%B> zk29mliz55_CyF2XTx+ZFAR8GMh=G}hYcj+`(+!!UJK>=*0# za{e1Q)QVI27|)LSlW$;)&Prwl-(y)tfFJ8mAl_->JjCKqZ|?l4MwgDY_kpn*r%Y29 zqcv{Qo8f?az*%x7t-*X{r?Z7Oh(-FwX`#kfRT?knq%oi{ZiI(_Y{YhVachgdn!*xF z$gzPJb1Nya9A@*Etl++&HXE2io?n@t=p+vI18E?3n=?rH%hCQ&Q zu5s@KJNMtJQS8DNMeGC4o%Il0G?Lw#7-bXf!p99eumM?D zW2B{~npSsN^QKjy~%r^L76O48d3JzHciGcX3OqL9b<;u(EQol2;f`t zYtU<%KhvX~kEu441PSX#e&<)4&rE|~%&9G$wi_D$d1&}&(zgm+tB81?zRV>t^;{B@ zbL%!`DxJEC9)KiUW3(QwhM5-+qN>XO-x)8A=oVn)Nu)F=J%e#Xl|xE@@=fU~;he^5 zl9q+d8;Zg?->wdu-^LMDu6ED|Dlb#KnO@*@9xu#v3|()mjJSy+0a-eZ%}0n8)Y%KG zm4B^TXWXIJv-WP29@HuRx2!JJjfhrbv{!x#=btGeMQxM&F^<<5s?Zd-%YD9C(i}C1 z`+T?0dtailL8Xm5ECB7(eYT#aQL%PiwYHQPN_@{YHHnfe*F3XXA|Dve?^X7}6YN5EzVBE*evX(@uTvQtidZo-hQBPA z0NE3gzGoNRRr%_ok#?8BxM8;Ssl zQ?MC*B4EyB-L3rz=B2NZ*kp>mVfYbq;U=&zfv)ad)`C^R6wd`hBq0-J@g#G%-FHu=7dBQZ;dgH&VdLIyD*qfFNGF%IsLoyVSa9=1K4AAFo$5UGnp zX+Uh&U}r6Sn&om%ibdV6UcxrTnd>4=Mk8l~aNm{*-NmbwJ;a)l7DT?p`g*=OCEqys zkIq0pLD^H?lI%6-az#=x4=U;rr2^mr#{W6MLPfD=Q-h1Ga&u08vO{bzsVRR)XZ=F0wSxeUc+W<23sMow_1{yzLxo$sm|u!ugJ zafSUf4aMyHY0~4#KlC^-iQu~O&gxQ3okS14-hS>KvDT~Z##QB}jU zn0A0bU3mq^7N+a^`@_^V7A*fvooaimX;bNeR@3y>qeCZoJPR-L;vc!wdHYZ@**br^ z1T7Fhm(UO|Oe@C)z4D2YfMrrG1UkRz6*{FcHXY2UyGo4Jvl~?Q3V~s-$jCZtW;M7e zxq`(#m#@DR5`DWy6oN?S)WF$9oXwtt7FV_XVk>K9nkzZqH9?IEOU&}XN%@P`~ za#j>_iGJeceub#q`6t9V-iak^GoJ4+H8&*NMZKCec7tcm5Ou8eU8kj}-LM}mzW1!L zyFE>lpg)?9Oo#tYWlReag; zsK#5-RgWyM={v?78N8%jZXu_2xw4&;kL^+WikXR?ges`<6pO(t1Odfis^rlJQYNl- zt76vNl)B|!ZWyyiJxdyOr`%2_NqNlJ<@BhbS|ufg);87I#;MVjaW#>L0lBHK)U3z( zm1_E;HyNuD)?$;79LdkoyL}W+Xl^3&eBY;^ntj+ltrcbsIy1lt4HW(EglU0PB!e4F z&9AguT2oSeq-8!M*hNy_`kKC;EKbGK4=Us{1i?{UsV4e#wF1LdU40{==FzjTVvuA& zs>`76sWm1tj6f0ZaB^<#5(NZsI!XL?40mqZXtiE7Kvm66bEQ+Z4olPn}BbtO;${%fHER2ubH_l_$t?jQURG51lwl?tZ&~CHdP8| z{D0C7cV#$del=*yTFe~e5wFY^#IK|`;$c?6B-eM}jE?*(H*?a!=NUv7acn54qF4uuGXAWJL--Nvi}0o%2}f!~4GTCgRx?5%%F2 z%}zbTx&)22gb5wm40Drz`jcBkqhoDowtI)Ob3f8mmgG%N6Y;k!p6!VY5h;Jrc~?aQ z-Y#Pej2yMIE7vaAEAz~-S;E+<7w%*a)T9jKlTS1LT-sF4N!6;IT*RGygs{}hbzd~N zZHzl(Amfjt%!5{!lPkxChLg{S((5Y(Y~F7toAvP&5ARy(XC?2$RK;jpF~rc z`luOv0W08-ITNpha5kP;1c>h^ch9d=Qv~-uGUtBp@k%jj;or62LUl#bsO*aLtH3XB zVX-U?cgwzeLJzAqv>8mL!hGOeDA%a#(zUpgh zKs%sn)2P~)w-41?bXLV%(%nMV+-k!bvt3BD4v8#%g5%L}P<>Cah%D-OqPc!+E_=il zF*kePSqhFSE}9#(W=%)IUwHyTt~`d2?=8BE?q@H2fl|vUk;eE)ZSIg zLP+wFI-1EPi9=T_J61PQ;*z236S*=lAe{`)j0mQPTC|{cMuc6l`Db{dljO=6bwz7* zmum7Pr-Rf;M`IOF#~?5ngzmJ=#t0 zo&j*i`ao%4Z=K1$ME|ns;(>WW&nGNcBK<$JbN^LFZBszUE1=9C@LD*afu5^?j_>QK zGZz)Nz2#qaeZRvRh)qW;5Gw?^`KlTBjH$jKmVQ z0b}2{UEyJrU@c*4^Ii4Xvw1KN7aNu1i{zSl-thmCw3&CKWR=ueZj0+;9X6%SNM+FV zju_UTq&{*jZv?|oNw{)u(VTB_c?e2{L@>pY8r7B@+%j~-6FE^h=ES8aJgiAfQ!!y* zT`X7Q3Mz8J^iF3PvCJkOhPtJiDcudNuB3Dty`#6znpIL~{jT(B zkU>9?eFw5SD4)Ed6QlO{m)91kZ4yu9u%9~r<;d5Tb+qixk6se87UO1>jFcXz?TfWu z#vj94F`Ds2`~IGWLyH)62MdJ4eE+iA0-2PyZLBjtkN!F_A!J>HDmS@+BjS8aNNEOi zU^`I6R2VNo(na&?%yBH@;09^ptthU8W~FF=4F4n-M+UKNCURBIh>*!38nq;DKEVGur)eV*%=YcFsdZ-L!IO6fdGxZE40C6!o14;z|~4B zSlaDMg8UBuvdPp`6DOjGbB8KBn>e4nsE8A}iYAyHSpMyqVnk&`Y&N_b*{DC8E1cC3 zW1fVG#`M#UaR<8mihVlav-ykB(ezU z7KeW|w#u3UR=q#YX{&oZ%GK97Li4JIGTfr&J;;%nEP%FuhPij%B`hufPUw<4%tqYW zN|ItuVR{`~b6R4oG*F$0>imvn6XB?x8o%gui5uNz(`V2P6LI(B+pJqA-X=Rdvj$B` z7FOx)O$egIOKzH$g?y}ZKYoZ!E%D#($8fAViJym(>wRsfQ5AhPZ}yyyeaxcZE$8_W z54(WWxkwxM{X0*p$wa=Z7UKYi=Fo`Av;E&*`T+Ip8}i=2OzQhQvo!fztd0*x%Q@)a z&Wg9=hxiaF zmxB|^g;$$_q6S>&3}A>uCz2M7+IBMG2wB&cunfz&gSfUGKD*=nv%LKFs@&RiYOLG8 z;3RW>$46&-*KftfdC*z2m`YkxZZTqq{l4$~RI+mm%+`G&Oz=?SbKlargfRq7BQNy=!O!ue)!CjU&|cVuHOBL1O}spI0}V-~U=D&0Oq>?ODpT$b;N zjG1UJxU5JU97+_ZsBfY@<}x6kq#>VP(-|Nof0Cs*cR_&!6tia?`mNuNF8p*{c26n( zW$}4QsdQxdOWfjbiIkS)fLdv(1fWNkVj+NERpMUCYbK{|i_7#I=z}RfNn9XY)qM$+ zGHc+z`M0PnxhiRRxRdE0D^xd>qyDqH;o3=vf^YCF~JB zOaKp*U5VgE*~4QIG6aP{aFQiYW=GMVxTmh`uDf`xxVs`KU;>x~ybxUF@Bk0!aS#y| zf++KTtNWQF0e$!V>*eza^E~}jcUMrppI*i)NH$RI^iXNIeU;*UcT6 z5g;DTAyvkAVJa>VHt7y_s6xRyl8-C3yj8)t)S}86$pt_Hx9`IOONi{|E8Bt+zIFq@qsl4alZyU>d5@s|j*m5LzIJ4#k z+b=A(3xSf;JA<#XB5%MjAjTq&5h=TOM>gaIr9x0s?9biA@M03qk@Db`j^)UcH z$JJtFilk2n5gKcRNN*|rN?klUNq8K~nfAbIb>n(wMB5hso^(!?#>6x2Y5v3_{3d_G zFQ};bb<=yYhVhnpt?`9kYerezhh8>h6S|XVUo5xXFw*q7J{A923d6GE&c!359)KDXdxJ#eTG!a2M})p_{(+ zEw(OrWJq9FqWAQg+O`m)_b}DnKGIcJ(KCbju0r}meCC<&GLWOVHaX=d9?pyXo1zaeS*w! zHF?FmQM{4x+*YF6fF}00m;?b|*SLUj_x#tmAsG*L}C?oSuVyDv{ z%fi5mDOBTWHt#2LCot5hIgS4~E5#<~A;0sAqoNYZZNYoR2Oxsyg0zhxqPw$$gSjM*#8+!`dcjt^~ z9Fmll{~Mdqb0? zy-5Rj2tw8_)O}^%2YA97R_?NbZ;oKdcRZ{8dP^#*YDY3ksz=C4Xrpa(z&?4w5@!CB z;fy@P8G5>NPzPi}-FPFgy>LTg#oL0Cx!}jOWsk3_O&a454}O{TA2eV%SOi%PRpwt2 zoHuB{BXHss!ID84^Tu7#mN7^aiYN%a;|TOM$tRBuRS!z3?miT+y4ttXs?X5b!AAg8 zk|;9(Kz?i$e16~Ld8e1>?UFRs-|c}+J+hk2W#C(Oit_-N!6YLMo!u>ET@(n`KoVW< zGuUDu$WLYvY~WAk1Y!mwJHN@8H{2V#ylFzuKvvzZZ&_AH`!7p7*pePNxsb0t0=>B$ zk1tuxk@UuPh@aT@LKu6){hye^=2E!mUQ1SBoSj!s-XgQ#MZ%1}U+P4ymhr{Q%!GK! z)BH=RZzP1gwjxlVbwoO4drncV1OE`Dhx3E2FvJzAG+^*9WS5mV?6Hs~c zC7}o(TS-tK&;KxdCse3TAr@;fH-F7KL?#Pw5rD~8s z^aUZKIREKR$xnEgQ7UH-*~~@FOfmXG7TvqLh)+OM7)bY;dhTaZQPIxBx}q2Q3QZ1^ zcFeUSvStS#%qFCEG~MF@1(^f3lG@BVhs7XdCOh8c*w4 zES;j4Br>DZ1nzqH1-6Ju{;EP!)L*9y;)m2ZR3Jj=bjb5UhqM$MJsut{__+KV3gH+S zE_&!I{Q+MBQXe8!LmgBPP>3wv_2s;&b|CFTpI~@ zrv%;p3Q4rB-`-HxeP?k0GrT2n_#{M`Cc261@Px^(#;|_ki($OTgRJ8deQ#`#*|HAg zwAsFo^;yLD?LGDt^p%n2^p#|xA09;!GL;_gL4xneF4h|ee^K$W5o2=GNW=%TDv73S;!DZ0RDfoZAk zyyl7C?wOuBK{J3#Pu9PbAL2Jdk0V`zO+zeo+N zTxaPIZGz)q-5@r!CEk%*|B*B%W3Z?=eRL&p#+D!joF7c#^q<)4L1-I07&i((gzcsa zZME+}0w+fTrxQElbPoq3gtFkYn38b@7!gyaf{%^bd;cF$d&!<=QaDW?_<@zIR=p)_ zv($MI#2&386He0=x2j8ZpUO?|)xB&gz`L3PcEpEDy9OOV*yfzKX&Nx54}XlXV0=KF zqOT3@^}rZK=gE15(P-`38!)^fwTT@9?YwW zFykt~R4OrW-l>#voE|7B6B+arkb;~Y2O#j>xMOcv!Z;4H6 zACkmm!*n%ilPq+kLa~+I0lat=bDS`?4ri%dTr3#~lU2grZB|>g^7K7EXnHBFN1C-= z{rG0V#J!_cZB=fGmj(Yo-n&%LS%a{g@Y4@0&*7&N>CC(Z+ z0Dh}R|3u=OQHeTzC*)Lot-r2kJI^-e-V|OZye8DXce{uNjfdj=+3`M$OyN} z)tMpynTkk}@Gb@F>x1$x8$>c)E}=kns-)Wj1Avi+m&u4YN&SYOcsc4G&0mM&(x^Y{ z0{JFdrnOy9MW~O)DJ=3&hO0d#nZ18?-41R$7^$uiQiY55nrYLVa%I$fB3%t@$shya zX2g)Z3jPd8tu%jyI+ZArg;VaMlwqc+!CH+)Cl%w5+#py~Wb_(Jepb}@P?(KS{4^;&`K&`Xs8mfCCqO)lgH?GP= zwn7ghR+y|Ls#k2yUb;d}qyG^cjKQ;X$iEmG*urb1uWX!JuhlQQ(b{Db`CZUIF=nrH% zms!IU7n#fwK2A_mD$yToU1alTLY3_MCg`Q8(V-iJo>d*fG@|pE0fZ(eDUr7tKcu9h#gc}!K>z40qq_RI6pTvgR zzovIm@OeRmhKV&UwPBuXOS@hLtop|nyQS&4Ufl2}LJ6@y$Vu`&*&z|d!n(fG*d zCF^7M1leSTz4}5z9ko&7btMWV!*z)a+w^e3*t@x!S-t4Wy_y&>Y&o>hidvybGLea| zgxQi5I>vtk*~+FH;_RM!TPV415x*p?3 z*1{u8>BIn$%a7HI>^SKQk2sJH3;G6+ET}nO;+%wXv)mbu72Hke802m$i4Iw~P7Z$> z&8VS5#Ct}I76USc0i`y+jo=H-AIVS=_jv~mi}tV|tnG3yE6e?JhIgGjf_o-WD5TgqH6 z2ie47cXH}{`2K%QlS0?!R7Ua{*PR9$o>?QMlV<-^aKp8l&9Kl6?0k%l1FG^~)SEe3 zjzD&&*gmX`yNnSTv|qNCPd?vk%^isg6o=y(R#%s?rBw)3aDU1W>5h@r2>EdnO*5%% zV$RBZKB=cTW{ZD`S7Hqa3EIkXBwY>+N|bat7h>V6BllHvu8wz9(g|74<&J2kQY|d} z(=|>htR5=Q;5_fbxf&ah$mT$;n2qpJA*fs!5AP7Q`4}&34v`o~T{tnh)Q-Dc0}|Mz zqp1<&2TyJaV)J77d>0o@uW^*YP(nC$7av@q0o+z@4Uo|OLxV?ZYeoc*{G{fR;E_?z zMGzHbn;24$>W5y{8-qu(1B0ULT&sj`&idV~_M;~UkIWDBiR2^Tf=8}**1yPBjj(?< zJdOuJ1J_sYkM`gA5)ptovmrqSynjCW?JRPyCTm>^KLOPuvr zlQ(#z)LAdFXoE*C3oMRIVr?8ea&}Fx;E}Te3nSyZ$?G}JdXIh>Ufm~nos z{Yf8j5J4l|gFi^3qawdxEO9k~bPM-n^>WrvCV}fBo%Iv+1Lsyp^KiU2G`>U|+PkzN z`n<2|a__=ejAqn$=#teX2iFsMv2?I@P`j2KOggJPY&EF$D&CsNHLhPvv08f*L2zuPYq%scVosTmsLut&uk_ zu-5fF#?>ZMtN*NNg&9|0^%hfaqoA|$n$}Ae$75UzUlr6Me#v(ib?FW)0p(yvsk5Po zyE;2wW?%X8315yW&sqN@T-T+{$e&0% z4(Pv*11jN>prQ4;8m@Vx%P8q8ShAu$)V=t`SuHNh3D<<2#oL_qFN2@l9-JRM+^ae> zcsM(7K4l`K^L7(V^i0007tv;-n*tA*bcdwNxK@9a^cBIwQ=AQ$U5?9W1E}wKgGFw6 zCehwM9C}pgPSY(KYCfPxz4yyCeC(3v&PC!R_JsA#kj_Of0|FPh4!Xmo9JF1|t1+se zbQd>mJ%!{`&#v;FDv}((4bfCVYDcV=lBYLvFq$%2a4P%AbVT~A>C@Yc) zJik_Jq+O6T}OSY&|7;aW8xob}M!PVzAbI_n?jd)J}x2hv=t zuGcx~{zu3O{R%(Qtv9ThkM4L(X~%2sgD>djx>l9O5xMesh#W8L_3^BESzYQe zlNEyX|IiF4qL_;zW&}yS?4+PhGB&B5$i!1=NpzI@MZ8*0i8`Xgd{s;!ZJtmtwkVX;wN0OlQN@%p;LUHF}j! z9bQ~YDl`Q<8_wsmDV!D7v4uP9>vVD_{V!Tg5oY%Ki+rU#H{3&eoel3(u)PA%N?k;P zwi03KqxS&}7k$YOaD*A&Pc}2N`dBtc{;t7_q5{STk%OvGK7{$8UVcvcLI^rk3U`Gk zbn{ky;Y}|j8sX(cGbWtXuSXMSj%BmTzIF_Ub+5j^jztwm+S9zn zn`Re#S5S}qTi`8TJChh;MSI^9Ng})aOTQ4gdtHt!K=H>s$rn6&6s^1uQ&W`09#LW} zpx=F={?3ff)?9^ELo)XQhObQXS=VJX_T%8Ytd5h|Xx}h~5W%t;MXzpT|9x&r)Lh7!fC6J@0QIM5xq~1_`vpXyO ztkARyac^lx;Q3(3`71<5RzD4)o)XI!gdYUPh+K4uqCeS5IV6SB8SbcEz&1<&a3$--*9ht4Fc zaeSSKN&#j=%9>_PZu0klA1B7@4xb;$ENiUhtzk14b_I5uMJ)^JgX+FKtz2KD>e~?W zP34pSb-omk$0BV|JP{Q&|JYe2n8tIMqJnUGI- zaZ|_@8nuCCO>-&rq$Yniu$vJp8+ka8+3M~Vqh4LoZm8*RdrOAYLV&!eh%R3bd*=&fopyk_Q+&l zzg%x%hyF0^8^FqOTaiG^3apT-}@b;46km=|2qq1mJ4_Is^L-&f-7NQS${> z*|1OkFzi(tja1^7k&+<(QoEF!f4G$1ZVNf?Bq~3-vS?!tj_IJL&}_^XF#c?_wj03 z$=dVywfvbc2b`6iYgvCqDt(f*#P88Fw7!X~^wWMdf31W|I?b_v z+}RE5Q3}H7E4hVo>VEy+<|#fpUrG+xCF^fhlzhx0R|m z?zAV`+iWlH(TJ#RWy!8iMzml)8f>a4Y(~3De27G;OC-5z?ziZl46FC4C>}0T?-7}= zZoaBje3S0GBc-0W0XGFUPhgvDSkDi`?!8JVd1bQ{+xLe-TL4v0+Qsg>JlWLaps++> z@3djp9tT#lkM?MBTkCw*Yx-IgZFRP`wL}J_ZF}>uE7ZNXz1Er5{9=Yf)(jcWimlNT zi?_~```i51>ufbV|F~=me(Y^)MyqCz)pzJ?JH|M7mdIAm%WvsLE}*{wG}_-+b*j(# z%zxQh;pesZLKS@jZFIfMI+IiOMgfg)`X<&!CZrVZA^Mahr;L7;Puzq&0!YCBa$yOc za(HP7ZaO-Y`sgW)F9l!v(kka1zf{mW8}z_!|I)4@Qf2=>Ty#F4)zcG1G8EmzxH3xi zG`b14or77E1f!eWhbRN++)Xe@IJe{yqBbMoPK6N!1lq*Z--^wP@qZnuU+@tX+Nu*6 z;GAu_n0$KZXf0h7`mgA^cqKUN9Hkl`5jEvFMrL3eRXu<~J`SKxFjzT@Zj9yR3q zMt;oB?JCno*#j{t;->KrNklzEiI1s&7s2Gl*O9v_n7rav!Ku!>YcjD(Fs`%5j{ z+o;EYTyy&HIkK%t6`oDHRZ#B})LORmB(~1si)G>!@3|LHI3*UE_MZFhGDc!}dKw9M zfQchbloa`_neWO=Ma*Yb-ykU()pe93FG764b+kV9Iy9H|;}%m?Ws2t;BcvG}n(01r zuO0<p1eHs9SU{Vcb}Oic4R-S7AdzOi$rnVf@DbMDjw%Wg<~>Nb1l(A;d3Z@bVQYJI>b-5hCGsYK_&ivv8^ut)940(|L+f0}Xfm*=A)K>at;bul=r@?}oQ% z{v}d^PMD*Ia(4G-$X49$Y*=R`Pqqk0al$(Qd49zLFY<)`kh|%1{XskZsEbpJ{sTNB zY%8Qa{Dy`i??rlXSd_I^CqRpQM5{R%;tvn`5;(R|V&X5W39h}>Q%iLV=QRh;iUUx> z--H7MH-^pu;|u;8Ycrj6P@P8k0xa}-K@;g@VfJ`?zoHK%@+#3WZ3@hy241MdY5IH; zof^TRIc7xCg$U{hi$)Rp?5rBH996HNj7b@BGLI4oY}^(f5Sn&EVe#cAMU(svP@oTT zQgeUTrPH?CrRxlD(O^IJx^v@&s$r?04+#^bVDc;;0$DR}yUuakc#~Z)i-l-j0 zm0Iow%8hsEYl#m1DJwjwO)wMoDooAtAXy-!IAE(?}_KV8byYmt=U@)L^HZtl4&DH*IqHi_2( zO*dvglQfY|)L)rf)~d&OqkrOV@Z8gz;u@Bm&dijQQrljbP^->|jEwUyXYdpGoCAhI z8H)vC8o*{Fb@Vkntf@$Mya`JnPER&i>h_ZZ)aCGl+hkLE1Zsq(gmi=DIkF&#&th_K zj*Px|V-GOtF$OIv({qL$dcAWS;_*M<(s$qHUMN;WuH3?!qH6S1#$w=eJ>KzJQ7(E? z-lh9NJP*VTn!3~PBo|)+q}q{2!^vjMkOuG&nQ_y(--=tVB=#?JfTLto^*)&uM)9or zVvw~JM4WMB>SFsn?ORGr&Jpi1V#SYfehMP@!g;(xI_UU2woJux`aG5+m`K2mg0E^G zu6Y*{T@O;~p?}j<*mbOA3>R(JWW()8O-_~NAu>q`GSJnK%c#TZ1iKTGbF~0F2AvIB zLdojfG~@7j(u}R0&9b&DH>Zs8djCrIWzj2Ql?mr=;Ky(6qND|sByG`Zh+o8t-IeOy z^YsgS@6>&(rb1A9HdoWZ<9#=k``z*`UM7d|$1epWyj%3ns7n=GFW^0(GDngesL<8g0_0Kx=rF*}jW+DTwU@56~Et5qKi{P*% za$^𝔡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%0A8oQuDRJ+Q`giifmJAS)pF;;6|0(8tXRq4m8)Va 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 literal 0 HcmV?d00001 diff --git a/premake/Xcode/build-scripts/run.tests.command b/premake/Xcode/build-scripts/run.tests.command new file mode 100755 index 0000000000..1426e4d0c2 --- /dev/null +++ b/premake/Xcode/build-scripts/run.tests.command @@ -0,0 +1,93 @@ +#!/bin/sh + +function pause() { + read -p "$*" +} + +function pass() { + if [ -d "$1/Build/Debug" ]; then + cd $1/Build/Debug + echo "Testing:" $1 + echo "\033]0;Testing: $1\007" + "./$@" + cd ../../.. + pause "Press any key to continue..." + fi +} + +function randomfile() { + fcount=($1/*.*) + fcount=${#fcount[@]} + fpick=$(($RANDOM % $fcount)) + for d in $1/*.*; do + if [[ $fpick -eq 0 ]]; then + RETURN=$d + echo $d + return + fi + fpick=$(($fpick - 1)) + done +} + +function testspecial() { + if [ -d "$1/Build/Debug" ]; then + cd $1/Build/Debug + randomfile $2 + cd ../../.. + pass $1 $RETURN + fi +} + +# change to directory above command file +cd `dirname $0`/.. +cd tests + +pass "checkkeys" +pass "loopwave" +#pass "testatomic" +pass "testaudioinfo" +pass "testautomation" +pass "testdraw2" +pass "testchessboard" +pass "testerror" +pass "testfile" +pass "testfilesystem" +pass "testgamecontroller" +pass "testgesture" +pass "testgl2" +pass "testgles" +pass "testhaptic" +pass "testiconv" +pass "testime" +pass "testintersection" +pass "testjoystick" +pass "testkeys" +#pass "testloadso" +pass "testlock" +pass "testmessage" +#pass "testmultiaudio" +pass "testnative" +pass "testoverlay2" +pass "testplatform" +pass "testpower" +pass "testrelative" +pass "testrendercopyex" +pass "testrendertarget" +pass "testresample" "sample.wav" "newsample.wav" "44100" +pass "testrumble" +pass "testscale" +pass "testsem" 1 +pass "testshader" +#testspecial "testshape" ./shapes +#testspecial "testshape" ./shapes +#testspecial "testshape" ./shapes +pass "testsprite2" +pass "testspriteminimal" +pass "teststreaming" +pass "testthread" +pass "testtimer" +pass "testver" +pass "testwm2" +pass "torturethread" + +cd .. \ No newline at end of file diff --git a/premake/Xcode/build-scripts/xcode3.command b/premake/Xcode/build-scripts/xcode3.command new file mode 100755 index 0000000000..87c51b029a --- /dev/null +++ b/premake/Xcode/build-scripts/xcode3.command @@ -0,0 +1,4 @@ +#!/bin/sh +# change to directory above command file +cd `dirname $0`/.. +`dirname $0`/premake4 --file=../premake4.lua --to=./Xcode/Xcode3 xcode3 \ No newline at end of file diff --git a/premake/Xcode/build-scripts/xcode4.command b/premake/Xcode/build-scripts/xcode4.command new file mode 100755 index 0000000000..3d2d285233 --- /dev/null +++ b/premake/Xcode/build-scripts/xcode4.command @@ -0,0 +1,4 @@ +#!/bin/sh +# change to directory above command file +cd `dirname $0`/.. +`dirname $0`/premake4 --file=../premake4.lua --to=./Xcode/Xcode4 xcode4 \ No newline at end of file diff --git a/premake/changelog b/premake/changelog new file mode 100755 index 0000000000..0cee4a515f --- /dev/null +++ b/premake/changelog @@ -0,0 +1,828 @@ +This file contains a log of most of the changes and evolutions of the meta-build +system for Simple DirectMedia Layer 2.0 and related projects. + +Changes as of 09/18/2013: + -Enabled executable bits on the Mac OS X build-scripts command files. + -Replaced the Xcode directory structure with two folders for Xcode 3 + and Xcode 4. It now looks like the VisualC folder, wherein there is + premake/Xcode/Xcode3 and premake/Xcode/Xcode4 default workspaces. + -Updated premake/Xcode/build-scripts/xcode3.command and the + xcode4.command files to properly generate the workspaces in the above + mentioned directories. + -Regenerated the Visual Studio projects to push the 'current working + directory' fix to the repository. + -Verified the projects are building and running properly across all platforms. + +Changes as of 09/13/2013-09/14/2013: + -Analyzed structure and existing problems to be fixed in the system. + -Updated the OpenGL dependency to not include "C:\Windows\System32" since that + is implicitly included for any compiler building the project on Windows + anyway. + -Removed the build.all.vs2012.bat script since it hasn't been working and + trying to get it to work or figure out why it doesn't is beyond the scope of + the project at this point. + -The above also applies to check.bin.compatibility.vs2010.bat. + -Updated typo in run.tests.bat to make testchessboard run properly (it was + looking for testdrawchessboard instead). + -Corrected OpenGL dependency to properly look for "libGL" instead of + "OpenGL32" on Linux. + -Updated OpenGL dependency to link to "libGL" instead of "OpenGL32" on Linux. + -Updated OpenGL dependency to properly notify the dependency system whether + OpenGL support has been found or not (it was always indicating OpenGL + support accidentally). + -Modified the vs2008/vs2010/vs2012 generation scripts to generate to specific + subfolders (ie, ./VS2008, etc.) so they can all be generated at once. Updated + the clean script appropriately. Originally, it was desired to generate + something more like SDL_VS2008.sln, etc., but premake has troubles correcting + interproject dependencies without renaming the binary files to similar names + (like SDL_main_VS2008.lib), which seemed much worse than just separating by + directory. + -Altered the working directories for the Visual Studio debugger to run from + the path of the binary for each test application, rather than from the + project directory. This allows the tests to utilize any locally copied + resource files from both inside and outside Visual Studio. + -Added execution bits to Linux build scripts. + -Clarified the second paragraph in README-windows.txt. + -Fixed typos in README.txt and added a plethora of code examples and + explanations to demonstrate how to add on to the current system. + -Regenerated default projects for MinGW, Linux, and Windows (this time serving + VS2008, VS2010, and VS2012). + +Changes as of 08/30/2013: + -Updated README-windows.txt, README-macosx.txt, and README-mingw.txt. + -Created README-linux.txt, README-ios.txt, README-linux.txt. + -Modified premake4.lua to not generate any files if simply printing help text. + -Created the entire primary README.txt help file. + -Updated the automated test command file for OS X to randomly select a file + for testshape, just like the windows version. However, there is an issue + with it so that test is currently commented out. + -Updated all 4 OS X build scripts to automatically build all of the generated + test projects, rather than maintaining a list. + -Generated an initial Xcode 4 workspace for iOS. + -Generated an initial Xcode 4 workspace for Mac OS X. + -Updated a bug in the windows automated test batch file within the label for + handling the specially randomized arguments passed to an application, such as + for testshape (it was hardcoded for testshape, rather than using a variable + as intended). + -Fixed a typo in the windows automated test batch file wherein it was not able + to run the chess board application correctly. + -Updated the automated test bash script for Linux targets to run the new + chessboard test and to randomly pick an image to send to testshape. It runs + testresample and testatomic now, too. + +Changes as of 08/28/2013 & 08/29/2013: + -Removed TODO.txt. It's no longer necessary; a lot of what was in it is no + longer relevant, completed, or replaced by something different and thus + implemented in some variety. + -Stopped the premake engine from executing the project definitions if simply + executing the help procedure, listing available options and acitons for the + target premake file. + -Modified the dependency function handling so that the function names are case + insensitive both for registering functions and checking or testing them. + -Created a function in sdl_projects.lua that can be used to retrieve all of + the known names of the dependencies registered with the system at that point. + -Implemented automated generation of options to forcibly enable certain + dependencies, even if they are explicitly defined to not work on a given + platform or if they simply cannot be found. This is useful, for instance, to + force on the DirectX dependency for MinGW if the user has successfully setup + the environment to work with it. + -Modified the behavior of the dependency functions to provide the libraries, + library paths, and include paths for platforms that don't support that + dependency, allowing the override command line options to properly work on + those platforms for those dependencies (again, the DirectX dependency on + MinGW comes to mind). + -Cleaned up premake4.lua. + -Removed hardcoded links in Linux from premake4.lua to its proper locations in + SDL2.lua and dependency functions. + -Renamed the 'reset_links' function in sdl_check_compile.lua to be + 'reset_link_flags' since it fits the functionality better. + -Corrected a mistake in 'check_include_directory' in sdl_check_compile.lua + where it simply checked for files existing in a directory, rather than + specifically header files. + -Removed the 'projects' table declaration in premake4.lua, since its defined + in sdl_projects.lua anyway. + -Removed directive for copying the Info.plist file from the Xcode-iOS + directory for the testsprite2.lua project, since it makes no sense. + -Modified 'addConfig' in sdl_gen_config.lua to be extra cautious about + ensuring that keys and values in the supplied config table are, indeed, + strings as they need to be for concatenation. + -Added documentation for premake4.lua, sdl_check_compile.lua, + sdl_dependency_checkers.lua, sdl_depends.lua, sdl_file.lua, + sdl_gen_config.lua, sdl_string.lua, and sdl_projects.lua. + -Implemented file headers for every single project definition file. + -Significantly cleaned up the commenting in SDL2.lua and added a file header + description. + -Added a print line in premake4.lua to indicate when the generation of the + premake Lua file begins. + -Added initial sample projects for VS2010, Linux make, and MinGW make. + +Changes as of 08/27/2013: + -Updated the Linux premake executable based on all the patches applied to + premake thus far, as documented in the patches folder. + -Updated the Linux definition of SDL2.lua to have all of the subsequent source + files associated with each dependency to be within that dependency using the + SDL_paths directive. + -Implemented a function for modifying the search path for libraries during + the various compiler test functions in sdl_check_compile.lua. + -sdl_check_compile.lua: implemented a function for checking wether a library + exists using os.findlib, adding its directory to the library path, then + using check_library_exists to see if it can be linked to properly. + -sdl_check_compile.lua: implemented check_include_directory and + check_include_directories functions to see whether specified directories + exist and contains .h files. This could be modified later on for other types + of files that would exist in include directories (such as hpp, hxx, etc.). + -sdl_projects.lua: implemented a function that checks whether a dependency + exists and was found (the function must have been executed already). This is + used by many of the dependencies for Linux (specifically that most of its + dependencies depend on DLOpen for shared library binding). + -Modified the dependency order for Linux in SDL2.lua so that DLOpen is listed + first, as to help the dependency resolution process. + -Corrected the link order in sdl_check_compile.lua, fixing the + check_library_exists, check_library_exists_multiple, and + check_library_exists_lookup functions. + -Corrected the size definitions for SDL_config_linux.template.h so that it + will work cross-platform. + -Implemented better dependency support for the following Linux dependencies: + DLOpen, ALSA, PulseAudio, ESD, NAS, OSS, and X11. The dependency code is + based on CMake's definitions for those dependencies. The dependency function + for D-Bus is improved. + -Removed the commented code for the Windows SDK in the + sdl_dependency_checkers.lua file. + -Re-enabled the ifndef checks for the generate premake header file. + -Moved the clean action in premake4.lua to before the project definitions, so + that cleaning is immediate and doesn't have to wait on unnecessary dependency + checks. + -Renamed the macro defining whether to use the premake config header from + USING_PREMAKE_HEADER_H to USING_PREMAKE_CONFIG_H, which involved changes in + premake4.lua and include/SDL_config.h in the root source tree. + -Corrected a mistake in the OpenGL dependency function that would mishandle + forbidding desktop GL functionality on iOS. + -Corrected a bug that would properly setup MinGW targets to work with OpenGL, + but it would not link to WGL so there was no way for SDL to actually load the + OpenGL library and attach it to a window. + -Blocked support for OpenGL on Cygwin. + -Blocked support for testfilesystem on Cygwin due to lack of support, though + unix file system support is now enabled on Cygwin. The test accesses some + windows functions that do not link properly in the Cygwin environment. + +Changes as of 08/26/2013: + -Implemented the testdrawchessboard test application. + -Disabled the path-searching functionality for the DirectX dependency so it + would be significantly sped up. It makes the assumption that DirectX is only + installed if its DXSDK_DIR variable is set. The code is still there if users + wish to implement the functionality again. + -Modified the clean action to remove the 'ipch' directory since it sometimes + shows up in various Visual Studio solution builds. + -Fixed a bug in the post-build copy step that wouldn't correctly create nested + directories during the copy stage in Visual Studio on Windows targets. This + reflects an earlier bug fix that would stop the non-nested files from being + copied correctly; both work now. + -Modified the testshape project to copy all of the shape images instead of the + sample image. + -Updated the automated test batch file on Windows to randomly pick one of the + intended shapes while running testshape. It also runs testshape three times, + to demonstrate both the randomness and adequate testing of testshape over + multiple shapes. + -Changed the resample test to copy the sample.wav. + -Updated the 'pass' label in the windows run.tests.bat file to accept a + variable-number of arguments to be passed to the executable. + -Re-enabeld the testresample test to try and resample sample.wav at 44.1Khz. + -Updated testoverlay to copy moose.dat, since it depends on it now. + -Updated testshader to properly depend on OpenGL and link to it, as well as + copy the file it needs (icon.bmp). + -Moved the dependency checker file over to the util directory. + -Updated premake4.lua to recursively execute all the files in the projects + folder, so they don't have to be hardcoded into premake4.lua and can be + organized in whichever way desired (so long as their internal paths are + correct). + -Implemented text-based file writing in the sdl_file.lua utility file, as to + prep for going around generating a lua file and loading the generated file + from memory, instead. + -Updated all of the current SDL dependency functions to properly check for + MinGW and Cygwin support. + -Fixed a few bugs in premake4.lua that would break Cygwin and MinGW support + due to improper checking. + -Fixed bugs that made it tricky to do wildcard copying on *nix systems (needed + by testshape). Tested to work on MinGW and Windows. + +Changes as of 08/23/2013: + -Removed hardcoded definitions for the Linux config template. + -Moved definitions over to SDL2.lua. + -Added definition for enabling the file system module on Linux. + -Separated the OpenGL dependency into one for Windows (WGL) and Linux (GLX). + The core dependency is still there, but the windowing part is separate. + -Separated the library-based dependencies from the Linux implementation into + a series of dependency functions. + -Changed the dependency function to return a named table instead of variable + returns. + +Changes as of 08/22/2013: + -Rearranged a few more things in the top 'dofile' section in premake4.lua. + -Reverted accidental changs to include/SDL_config.h which rendered it specific + to a single platform, per cmake generation. All building was broken due to + this accidental change, but it should be fixed after this commit. + -Merged repository with the latest version from live SDL repository. + -Implemented new file system source tree on Windows. + -Implemented file system test. + -Removed files accidentally committed from the Linux directory. + -Implemented tests for the file system test for windows and Mac OS X. + -Implemented cocoa file system support. + -Implemented cocoa filesystem support on iOS. + -Fixed a bug that was leading to the Xcode-iOS trying to build the + OpenGL renderer on iOS, which isn't supported. + +Changes as of 08/21/2013: + -Changed names of generated files in check_compile.lua to more readable names, + within the format "premakecheck.*" + -Updated the check build function in check_compile.lua to support executing + the build and redirecting all output to "./premakecheck.stdout". + -Implemented a function for checking the size of a given type by generating a + program that prints it to the screen, then reads the result from a file and + converts it to an integer. This function is dependent on the existence of + stdio.h and the printf function. + -Tested the size function on Linux using various types. + -Clumped the "dofile" directives for all utility scripts together in + premake4.lua. + -Removed the *Mode variables for MinGW, Cygwin, and iOS. All checking for + these systems should be done using SDL_getos(). + -Updated SDL_getos() to check the _OPTIONS table directly. + -From depends.lua, moved dirpathsearch and getenvpath to sdl_file.lua. + -Created a sdl_string.lua file to contain various string-related functions. + -From depends.lua, moved indexOf and explode to sdl_string.lua. + -From premake4.lua, moved implode to sdl_string.lua. + -Renamed depends.lua to sdl_depends.lua. Indicated that the file is + particularly for windows dependency testing. + -Rename check_compile.lua to sdl_check_compile.lua. + -Updated premake4.lua to reflect file changes and modified the order of doing + the util files, since their interdependencies have changed slightly. + -Added sdl_string.lua to the list of utility files done in the beginning of + premake4.lua. + -Updated header in every file to reflect that I did not create premake (old + wording was a bit vague). + -Added header to new files. + +Changes as of 08/20/2013: + -Fixed logical mistakes in the check build sources function. + -Added a check_function_exists function. + -Whenever an include header or headers are checked, if they are found + and build properly then they will be added to an internal list that + will be prepended whenever doing future check_function_exists and + check_library_exists calls. + -Added a function which will check if a function exists in any of a set + of libraries, rather than just one. + -Added support for linking libraries for the check_library_exists + function. + -Silenced building and linking commands. + -Incorporated check_compile.lua in premake4.lua. + -Tested the various functions with X11, DLOpen, and ALSA dependency + compatibility. some future tweaking may be necessary, but the + dependency checking happening in cmake should be reproducable using + these functions with some tweaking of the implementation itself. + +Changes as of 08/16/2013: + -Updated Cygwin build to foster a very trimmed down version of the Linux + build, with no audio, video, haptic, joystick, or input support. + -Cygwin uses a shared library. Read SDL2.lua for more information. + -Slimmed and trimmed the cygwin config template to its bare minimum. + -Implemented the configurations needed for Cygwin in SDL2.lua. + -Updated many projects to be excluded if building on Cygwin, since many of + them are incompatible without the aforementioned support. + -Implemented a Cygwin directory and separate build-scripts, working similarly + to that of MinGW. + -Implemented a check_compile.lua utility file emulating a lot of the same + functions used in cmake to check for dependencies and various libraries. + These will be added to a Linux-specific dependency checker function later on, + allowing all the Linux dependencies to follow a similar routine to that of + autotools and cmake. + +Changes as of 08/15/2013: + -Created a separate template configuration file for Cygwin. + -Created separate SDL2 project definitions for Cygwin, alongside Linux. + -Added various other side definitions for Cygwin support, though it is still + not building correctly due to some misunderstandings with library support. + -Patched premake to support custom source trees for Xcode projects to fix + issues finding the correct iOS frameworks in Xcode. + -Updated all Win32 premake executables containing the patch. + -Updated executables for Xcode and Xcode-iOS for above patch. + -Updated SDL2.lua for iOS to use the SDKROOT source tree for the frameworks, + as per the new patch. + -Successfully built and ran all the iOS demos. + +Changes as of 08/14/2013: + -Fixed a mistake in the windows-side copy command that was changed yesterday; + without parentheses it was inhibiting the ability to copy the SDL2.dll file + to the built directories if the directories already existed; this has been + fixed. + -Reintegrated MinGW support on Windows with a few slight changes to various + OS dependencies, since "MinGW" is now considered the target OS, versus + Windows. This involved changes in SDL2.lua, SDL2main.lua, testnative.lua. + -Reenabled both debug and release configurations. + -Separated post-build commands to being separate for debug and release. + -Setup temporary hardcoded linkoptions for MinGW on the release configuration. + -Verified both configurations build correctly for VS2010 and MinGW. + -Updated the premake executables for VS and MinGW to reflect the recent + patch. + -Updated premake executables for Xcode and Xcode-iOS to contain features + added from the latest patch. + -Verified working debug/release builds on Xcode, though the target + directories for the binaries clash, so they override each other. This + will be fixed in the future as the system starts to get cleaned up. + +Changes as of 08/13/2013: + -Implemented special SDL_getos function which gets the current build + platform, taking into consideration Cygwin, iOS, and MinGW modes. + Although it's invalid to consider Cygwin and MinGW operating systems, + for all intensive purposes they are considered separate for the build + system. This may be renamed later on. + -Updated OS-compatibility functions for SDL projects to use the new + SDL_getos function, so they can be dependent on Cygwin, MinGW, iOS, etc. + -Removed the iOS dependency function and updated the iOS portion of the + SDL2 project to depend on iOS rather than Mac OS X. + -Changed the explode function in depends.lua to be part of the string + table. + -Modified SDL_isos to accept patterns, such as "macosx|ios". + -Updated SDL2 and SDL2main to be compatible on Mac OS X and iOS + simultaneously. + -Updated SDL_os to work with the patterns, as well, by merging the + functionalities of SDL_os and SDL_isos to a local function. + -Updated SDL_notos similarly. + -Updated SDL_os to work on projects as well as dependencies, and updated + premake4.lua to check for overall project compatibility. + -Implemented SDL_notos to inhibit compatibility for projects that simply + cannot work on specific platforms. + -Added exclusions for every single current test project to not be added + to the iOS solution, since none of them are designed to run on iOS. + -Removed hacked override for info.plist and properly implemented plist + inclusion for Xcode projects. Premake already supported this well. + -Changed a few references in premake4.lua of os.get to SDL_getos to + avoid some of the hardcoding that was going on in various places. + -Advanced the SDL_copy feature for project resources to being able to + copy files to more complicated destination paths, with scripted support + to create the destination directories if they do not yet exist during + post-build execution. + -Patched premake to allow BMPamd WAV files to be considered as assets + for Xcode projects. + -Updated the premake executables for Xcode and Xcode-iOS, respectively. + -Successfully ported, built, and ran all working Xcode-iOS demos using + project files generated by the meta-build system for those demos. There + are a few hiccups that need to be ironed out yet, but overall it's a + hopeful step forward to decent iOS support. + -Upgraded the clean action to also delete the demos folder for iOS. + -Unhardcoded a lot of the iOS stuff added in previous commits, which + included switching a lot more references to os.get() to SDL_getos() + in premake4.lua. + -Preliminarily fixed some potential bugs stemming from SDL_getos() + versus os.get(). + -Moved hardcoded iOS links from premake4.lua to their correct location + in SDL2.lua. + -Reinstated correct platforms directives, versus hardcoded iOS, etc. + -Double checked Xcode projects still are generated, built, and run + properly. + -Updated the patches listing and files portion appropriately for the + aforementioned premake modification. + +Changes as of 08/09/2013: + -More bruteforcing on trying to hack premake into generating a correct + iOS-compatible Xcode project. + -Added code to convert all ConsoleApps to WindowedApps in iOS mode + because ConsoleApps translate to 'tool' on Mac OS X and tools are + not supported on iOS. + -Forcefully implemented a list of links taken from the Demos SDL + iOS Xcode project for all generated SDL2 projects so they can + correctly link to the iOS system. + -Successfully built SDL2 and tests for iOS, though the test projects will + not run correctly on iOS due to not being built for iOS. + -Fixed a bug in the testgles project where it was not linking to SDL2test, + on which it was dependent. + +Changes as of 08/08/2013: + -Implemented template header for iOS configurations. + -Successfully built SDL2 library for iOS on Xcode. + -Implemented configuration for iOS similar to that of Cygwin and MinGW. + -Implemented command-line option for selecting iOS mode on Mac OS X. + -Currently, iOS projects will have some issues regarding correct + project types, so building and running are a bit off yet for iOS. + -Added a new folder for iOS generation. + -Added scripts for iOS generation and such. + -Added exclusion for the OpenGL dependency checker for always failing + on iOS, since iOS uses OpenGL ES 1.1/2.0, not desktop GL. + -Fixed a bug in sdl_projects.lua that led to excluded dependency + function calls to give a false positive if they lead to invoking + the function rather than using a cached result. + +Changes as of 08/07/2013: + -Created a fork for premake-stable to try and implement some of the necessary + changes in order to support many new features to the meta-build system. + -Created a directory for patches as part of the meta-build system. This may be + removed later on. + -Restored linking to MinGW32 in MinGW mode after temporarily removing it and + forgetting to restore it. + -Submitted a ticket and patch to premake for fixing the linker order that + prevented proper linking to SDL2main on the MinGW project. + -Created a manifest of patches made to premake needed for MinGW. + -Added a patch for adding iOS support on Xcode, though currently untested. + -Updated all Mac OS X, Windows, and MinGW binaries to reflect the above + patches. + +Changes as of 08/06/2013: + -Corrected a mistake in the Linux template config header that was preventing + it from being built on Linux. It was using the same header guard as + SDL_config.h, rendering it completely blank during compile time. + -Added a dependency function for checking for D-Bus support on Linux. + -Implemented a summary implementation for the Linux project in SDL2.lua, + making use of the D-Bus dependency function. + -Added temporary global links in premake4.lua for all projects on Linux. + -Successfully built SDL2.lua on 64-bit Linux Mint 15. + -Updated the testnative test project to have a Linux dependency, binding to + testnativex11.c. + -Implemented an X11 dependency function for testnative and related projects, + though only testnative currently uses it. + -Had to switch over to using a static library instead of a shared library on + Linux for now, because Linux requires the end executable to be aware of + where the shared library is, and we have no way currently to generate any + sort of install rule for the generated SDL2 makefile. Premake will have to + be patched to proceed on that route. + -Successfully built all test projects on 64-bit Linux Mint 15. + -Added a shell script to automatically run through the compatible tests in + Linux/build-scripts, similar to those of the other platforms. + -Successfully ran through many of the tests, though without OpenGL support. + -Added clean shell script for Linux targets. + +Changes as of 08/05/2013: + -Implemented global flags for checking if the current premake system is + targeting MinGW or Cygwin. + -Corrected previous checks that were directly using _OPTIONS to using the + MinGWMode flag, instead. + -Corrected typos where I was misspelling 'targeted' as 'targetted' + -Moved the options declarations a bit earlier in premake4.lua. + -Corrected a mistake in the clean batch file for MinGW where it wasn't + actually cleaning in MinGW mode. + -Started working on a Cygwin implementation. + -Started working on a Linux implementation (using Linux Mint 15). + -Setup a basic SDL_config_linux.template.h based on a SDL_config.h production + on 64bit Linux Mint 15 using the configure script. + -Setup the Linux directory and a basic build script. The system completely + does not build at this point, it's simply a step in the right direction. + -Fixed a bug in the testnative project where it was trying to build the X11 + implementation on Mac OS X instead of the cocoa implementation. The test + now builds and runs correctly on Mac OS X. + +Changes as of 08/02/2013: + -Actually added a README file for MinGW. + -Changed all the README files to be named similar to those in the top level + directory. + -Updated the READMEs for more accurate and up-to-date information. + -Split this primary README.txt into three files: README.txt, TODO.txt, and + changelog. + -Updated the depends.lua file to automatically fail on the windows dependency + search if the current OS is not windows and corrected a bug that would result + in an infinite loop if the main search path provided is empty but not nil. + -Implemented a utility function in depends.lua for joining together a series + of evaluated environmental variables, taking into consideration of they do + not exist. This function is cross-platform. + -Fixed a bug where the recently added code for surrounding paths with spaces + in quotes would lead to premake placing a "../" before the path. Besides the + convention of using double quotes is not universal, this bug existed both + with Visual Studio and MinGW gmakefiles. The code has been completely + removed, as it was found unnecessary. + -Modified DirectX dependency function to fail if targeting MinGW. + -After fully testing support for MinGW, I found there were a few differences + in execution between that and VS builds (without DirectX), one of which is + torturethread crashing on MinGW builds. + -Changed testshape.lua to copy sample.bmp and changed the run test scripts + to use the local sample.bmp as the shape for the window. This was just to + make the built environment independent of the top-level SDL directory. + -Changed the test run scripts to properly run the semaphore test. + -Edited the build scripts for Visual Studio to parallelize builds when + possible. + -Moved build scripts for VS and MinGW projects into respective build-scripts + folders, similar to the top level SDL directory. Tested all the tests for + builds using VS2008, VS2010, VS2012, and MinGW. + -Moved the build scripts for Xcode 3 and 4 to their own build-scripts folder. + -Updated the build scripts for Mac OS X to run the semaphore test. + -Tested the build environment and tests with Xcode 3 and 4 with architectures + i386 and x86_64. + +Changes as of 08/01/2013: + -Implemented the SDL_notdepfunc function in sdl_projects.lua so dependencies + can depend on the absence of a dependency. For example, the haptic and + joystick systems have dummy systems that cannot be built alongside the Dinput + implementations, so they have to be added only in the absence of DirectX. + -Implement a dependency for handling the situation where DirectX is not found + on the windows platform. + -Tested SDL and its tests without DirectX support. Properly built SDL and ran + through the tests. Most of the tests ran great. There were a few tests that + did not work quite right, though. + -Began working on MinGW gmakefile support. + -Implemented custom option for specifying mingw mode (using --mingw); this is + used to ensure -lmingw32 is specified to gcc for proper linking with + SDL2main. + -Had to change make_cpp.lua as part of premake in order to ensure the linker + flags were specified before input, so that I could properly ensure the order + of library linking. The premake in the VisualC folder is now customized. + -Changed all of the projects' dependency orders to be logically correct, since + gcc requires linking order to be exact. + -Successfully built the entire project using MinGW and a generated GNU + makefile. + -Modified MinGW setup to statically link to libgcc so it can run independently + of the MinGW system. + -Successfully ran all tests with MinGW-built executables and library. + -Setup a directory, README, and generation script for MinGW builds. + -Updated clean action for makefiles. + -Implemented quoted libpath and incpaths incase they have spaces. + -DirectX and OpenGL currently not supported on MinGW due to build errors. This + will be fixed and should be supported soon. + +Changes as of 07/31/2013: + -Implemented functions for checking whether the current system is 64bit + per-project specification. This is similar to SDL_isos. There is a + negated version implemented, too. + -Implemented native and universal build platforms for the Mac OS X + projects. This translates to x32 and x64 build targets within Xcode. + -Modified the SDL_defines function to add table values instead of replace. + -Corrected a mistake that was defining _WINDOWS on the Mac OS X project. + -Changed the dependency and custom links listing functions for sdl_projects + to prevent duplicates. + -Upgraded the premake4.lua handling of dependency lists and custom links + to support prevented duplicates. + -Reimplemented OpenGL support on Mac OS X. + -Separated frameworks on Mac OS X into proper SDL_dependency declarations + so they are no longer hardcoded. + -Upgraded project dependency system so that when a project is dependent + on a static library, it inherits all of the dependencies of that project + as well. + -Created build scripts for i386 and x86_64 for both Xcode 3 and Xcode 4. + -Tested all of the above (including with OpenGL and without OpenGL) on all + tests for Xcode 3 and 4, on architecture targets i386 and x86_64. + -Removed the old premake4 executable in Xcode. + +Changes as of 07/30/2013: + -Began investigating different architectures for Windows, MacOSX, etc. + -Implemented functionality for specifying which platforms a project is + supported on, so as to start providing preliminary support for multiple + build platforms. + -Changed function declaration requirement for dependency functions. + -Changed the dependency function invocation to be table-based. + -Implemented features to cleanup using dependency functions for projects and + allowed possibility for multiple dependency functions on one project. + -Moved invocation of dependency functions from premake4.lua to + sdl_projects.lua. + -Some nested statements have been cleaned up in premake4.lua due to changing + the dependency function calling location. + -Moved all dependency functions to a unified location for order-independent + referencing of them. Ie, this allows SDL2 and testgl2 to both reference the + OpenGL checker function. + -Ensured all dependencies are invoked exactly one time even if referenced + multiple times. + -Implemented opengl dependencies for SDL2 so that opengl support should now be + reenabled in the SDL project. + +Changes as of 07/29/2013: + -Implemented scripts to automatically build all of the projects in the VS2010 + and VS2012 solutions. + -Implemented scripts to automatically perform binary compatibility testing for + premake VS2010 and VS2012 libraries against the manual projects' test + executables. + -Tested binary compatibility for VS2010 and VS2012 solutions on Windows. The + usual lack of standard output is still ocurring. The testgl2 application + currently crashes on both, but that's because it's not linking to OpenGL + currently. The test shouldn't actually crash, but it reports no OpenGL + when it runs correctly. The other visual tests seem to run fine. + -Cleaned up this README a bit, adding the rest of the points discussed with + Gabriel. + +Changes as of 07/26/2013: + -Corrected a bug in SDL2.lua that didn't correctly define the compile-time + defines for Mac OS X. + -Added template configuration headers for minimal builds and Mac OS X + -Added template config selection based on current platform, defaulting to + minimal if on an unknown system + -Corrected bug in sdl_gen_config.lua to allow using templates that have no + area to paste generated tokens, thereby ignoring the tokens and just + copying the template right into the generated header + -Upgraded build.all.xcode4.command in the Xcode directory to give some + information regarding how many tests were attempted to be built, how + many passed, failed, and were skipped. + -Added support in the clean option to correctly remove the Xcode 4 workspace + file. It almost perfectly cleans Xcode projects now. It actually will only + miss folders if the user goes into those folders with Finder, otherwise it + cleans up properly right now. + -Added support build.all.xcode3.command for Xcode 3 projects, rather than + having to manually go into each project and build it individually. + +Changes as of 07/25/2013: + -Moved file-based operations to a separate utility sdl_file.lua file + -Began the configuration generation system using sdl_gen_config.lua + -Created a config folder for *config.h templates and added the + SDL_config_windows.template.h file, omitting everything premake will add + itself + -Fixed a bug where the base location would have a backslash on windows in the + final generated Lua file, where it wasn't supposed to + -Implemented clean option for the generated header file + -Modified SDL_config.h to include SDL_config_premake.h (generated) if the + preprocessor value 'USING_PREMAKE_HEADER_H' is defined, which the meta-build + system ensures it is + -Merged winmm dependency back into the windows dependency for SDL2.lua, + because the windows timer module depends on winmm, as well + -Partially tested configuration system via Visual Studio 2008; Mac OS X + projects will be broken until that side is upgraded + +Changes as of 07/24/2013: + -Updated mac os x test file to include all the new tests + -Added script to automatically batch together all the scheme builds for + the tests, so they don't have to be manually built through Xcode + -Tested new tests and build environment on Xcode 4 successfully (weren't + tested on here yet) + -Began investigating implementing iOS Xcode projects using meta-build + system + -Began investigating implementing gmakefile generation support for + GNU/Linux, Cygwin, and MinGW. + +Changes as of 07/23/2013: + -Latest changes tested on Xcode 3 and 4; test suites running as expected + -Implemented the entire test suite and tested it in Visual Studio on Windows; + incompatible tests will build and run, but they will fail if there are no + appropriate devices or settings for them to run correctly; this is correct + behavior. Tested most suites on VS2008, VS2010, and VS2012. Only testerror + crashed. + +Changes as of 07/22/2013: + -Cleaned up the mixture of forward/back slashes in the generated LUA file. The + only backslashes that exist are for copy commands, since they are copied as + text into the generated projects. The rest use forward slashes, since premake + actions handle per-system translation of directory paths. + -Implemented SDL_isos function for projects so that they can have some control + over certain functions where arguments or function calls changed with + different operating systems (such as SDL_kind for SDL2 project) + -Documented the new project functions. The documentation could be formatted a + bit better and the arguments could be explicitly formatted. + -Cleaned up SDL2.lua + -Implemented project-level files and paths directives for projects, so that + SDL_dependency isn't needed to specify files and file search paths for + projects + -Applied the above changes to all the project files and named a few other + dependencies such as for SDL_main and testgl2. No projects should have + unnamed dependencies at this point. + -Tested the changes of the last few days on VS2008, VS2010, and VS2012. All + the test suites run as expected. + +Changes as of 07/19/2013: + -Updated generation backend to be more concise and less like it was before; + this also fixed the duplicate dependency function calls bug + -Implemented config function for constants to set in a generated SDL config + header + -Preliminarily set the config values for the SDL2 project + -Updated generation code so that it won't generate empty projects, which stems + from projects in which all of its dependencies are not compatible with the + current system + -Updated windows automated tests batch file to work more like Xcode's shell + command file wherein it uses a labeled batch of commands as a sort of + procedure; it's cleaner now and it will work if some projects aren't there + (such as if they aren't supported on that platform) + -Separated the winmm portion of the SDL2 project from the windows portion, so + it has its own dependence now and uses a dependency check function that's + dependent on premake's os.findlib + +Changes as of 07/18/2013: + -Converted all projects over to the new, simpler format and tested on VS2008, + VS2010, and VS2012 + -Corrected a mistake in the SDL2main project that always built the main file + for windows, even on mac os x + -Added some more features to the new project definition system to support + project locations, custom defines, copy tables, and project dependencies + -Moved new project definition system to a separate lua file + -Fixed using 'copy' on windows for post-build commands and 'cp' on all + other systems + -Tested projects on Xcode 3; everything working correctly + -Modified SDL2main project to use the dummy main for macosx + -Changed the convenience scripts on macosx to .command files for the ability + to conveniently double-click-execute them like an application or windows batch + file + +Changes as of 07/17/2013: + -Tested that the generated Xcode 3 projects correctly work as expected + -Implemented a new backend system for defining projects that majorly cleans + up the syntax and eases the process of defining projects; currently only + tested with VS2010 on Windows. + +Changes as of 07/09/2013-07/10/2013: + -Fixed a bug that premake was causing where the mac project wouldn't execute + any of its post-build options because premake was incorrectly generating the + project in specific situations; the generated lua file now works around it + correctly + +Changes as of 07/08/2013: + -Unified SDL2.lua a bit by pulling out the source commonalities (generic + interfaces and dummy implementations) and keeping the platform-specific + implementations separate + -Converted absolute paths to relative paths where appropriate, so now + the generated VS solutions (and possibly Xcode) should be more portable + -Modified premake script to support different base locations, so now the + Visual Studio project directory structure is built within the VisualC + directory, and similarly for Xcode (better organization and separation) + -Fixed a minor bug in the cleanup action for VS2008 and VS2012 solutions + +Changes as of 07/05/2013: + -Setup proper dependencies for XCode and successfully built the library + -Ran test suites to ensure working Mac OSX binaries (64 bit, on Mac OS X 10.8 + Mountain Lion) + -Redid the entire build environment to run out of a root premake folder, + instead of separate premake folders for VisualC and Xcode + -Setup convenient scripts for both Xcode and VisualC in the generic + premake folder + -Consolidated the premake scripts into a singular script for both targets + +Changes as of 07/02/2013 & 07/03/2013: + -Finished implementing base setup for XCode + -Configured the premake projects for XCode (using a parallel directory tree + for now) + -Implemented base XCode project using premake, though it still doesn't link + properly + +Changes as of 06/30/2013 & 07/01/2013: + -Implemented release configurations for projects + -Began setting up environment for implementing the XCode projects + +Changes as of 06/29/2013: + -Implemented copying intra-solution project dependencies shared libraries to + the binary folders of other projects (such as copying SDL2.dll to subsequent + directories of applications that depend on it). + -Fixed a bug in the testscale and testrendertarget project lua files: they + were copying sample.bmp for usage, but they depended on both icon.bmp and + sample.bmp. + -Added temporary batch script to simplify the process of running through all + the currently available tests on windows. + -Ensured binary compatibility for using SDL2.dll built with manual solutions + with test suite applications built with automatic premake solution. This was + tested successfully for VS2008, VS2010, and VS2012. + -Binary compatibility has been ensured to not currently work vice versa, + that is, using hand-rolled test suite applications with a generated-built + SDL2.dll shared library. + +Changes as of 06/27/2013 & 06/28/2013: + -Added premake5-dev to the repository, though it's still called premake4.exe + and the main lua file is named similarly because it's still not officially + premake5. + -Setup generated project to nearly exactly match the flags of the manual + project. Binary compatibility has been tested for SDL2.dll built with the + manual projects against the applications built with the generated project. + All seems to work so far. Only tested on VS2010. Much more testing to + happen later. + +Changes as of 06/24/2013 & 06/25/2013: + -Implemented basic meta-meta building system, where premake4.lua now + generates a lua file and executes that to generate the project, allowing + forward compatibility for premake5 + -Began working on binary compatibility verification by testing the test + executables built by the manual VS solution using the SDL2.dll built + from the premake solution. There are some issues, but nothing crashes + that didn't crash before. + +Changes as of 06/21/2013: + -Fixed multiple linker problem by adding an exclusion filter for + src/thread/generic so that the duplicate objects wouldn't be doubly linked + -Above linker fix also fixed the execution of all VS2008 project builds. All + the projects run the same in terms of success or failure. + -Added rudimentary clean action to premake files + -Organized the project and build directory structures for the VS projects + similar to that of the manually-built VS projects (though they no longer run + out of the box, since SDL2.dll is now in a different directory; soon to be + fixed) + +Changes as of 06/20/2013: + -Implemented an optional copy table for projects that allow automatic copying + of each file in the copy table from the source directory to the destination + directory. These copy strings can actually be relative paths, as they will + be made absolute and normalized in the handler code (but not validated!) + -Implemented custom, per-project defines (needed for testgl2) + -Fixed many warnings from VS2008 project by making sure shared libraries + weren't being linked into shared library projects (such as SDLtest). + -Tested all builds on VS2008, VS2010, and VS2012. Everything works as expected + on the latter two. + +Changes as of 06/19/2013: + -Implemented all of the currently supported projects in the hand-built + Visual Studio solution, which successful building + -Updated the dependency system to handle cross-linking of projects, such as + the testing suite applications being dependent on SDL2 and SDL2main (and + some even on SDL2test, which further emphasizes the capabilities) + -Organized the folder structure to be less cluttered than before: only + premake4.lua needs to exist at the root directory + -Hardcoded the build path for all the projects to ./bin/Debug + -Implemented support for adding input library links from dependency + resolutions (for opengl in testgl2 in this case) + +Changes as of 06/18/2013: + -Implemented a dependency for handling complex building scenarios, though + it's only very simple right now + -Implemented utility depends.lua for handling dependency searching on windows + -Ported over hardcoded solution for SDL2 library to using dependency tree and + a separate lua file + -Implemented SDL2main static library, which involved more flexibility in the + existing system + +Initial: + -Built premake 4 binary and pasted it into secluded directory in SDL's build + folder for Visual Studio + -Created the initial premake script which recreated the SDL2.dll shared binary + library, as based on the manually-created SDL project \ No newline at end of file diff --git a/premake/config/SDL_config_cygwin.template.h b/premake/config/SDL_config_cygwin.template.h new file mode 100755 index 0000000000..1beb3ae535 --- /dev/null +++ b/premake/config/SDL_config_cygwin.template.h @@ -0,0 +1,173 @@ +/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_linux_h +#define _SDL_config_linux_h + +/** + * \file SDL_config.h.in + * + * This is a set of defines to configure the SDL features + */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +/* Make sure that this isn't included by Visual C++ */ +#ifdef _MSC_VER +#error You should run hg revert SDL_config.h +#endif + +/* C language features */ +/* #undef const */ +/* #undef inline */ +/* #undef volatile */ + +/* C datatypes */ +#define SIZEOF_VOIDP 4 +#define HAVE_GCC_ATOMICS 1 +/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */ +#define HAVE_PTHREAD_SPINLOCK 1 + +/* Comment this if you want to build without any C library requirements */ +#define HAVE_LIBC 0 +#if HAVE_LIBC + +/* Useful headers */ +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 1 +/* #undef HAVE_ALTIVEC_H */ +/* #undef HAVE_PTHREAD_NP_H */ +/* #undef HAVE_LIBUDEV_H */ +#define HAVE_DBUS_DBUS_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */ +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#endif +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +/* #undef HAVE_STRLCPY */ +/* #undef HAVE_STRLCAT */ +#define HAVE_STRDUP 1 +/* #undef HAVE__STRREV */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ +/* #undef HAVE_INDEX */ +/* #undef HAVE_RINDEX */ +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +/* #undef HAVE_ITOA */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__UITOA */ +/* #undef HAVE__ULTOA */ +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +/* #undef HAVE__I64TOA */ +/* #undef HAVE__UI64TOA */ +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +/* #undef HAVE__STRICMP */ +#define HAVE_STRCASECMP 1 +/* #undef HAVE__STRNICMP */ +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI /**/ +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_FSEEKO 1 +#define HAVE_FSEEKO64 1 +#define HAVE_SIGACTION 1 +#define HAVE_SA_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +/* #undef HAVE_SYSCTLBYNAME */ +#define HAVE_CLOCK_GETTIME 1 +/* #undef HAVE_GETPAGESIZE */ +#define HAVE_MPROTECT 1 +#define HAVE_ICONV 1 +#define HAVE_PTHREAD_SETNAME_NP 1 +/* #undef HAVE_PTHREAD_SET_NAME_NP */ +#define HAVE_SEM_TIMEDWAIT 1 + +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDINT_H 1 +#endif /* HAVE_LIBC */ + +/* Paste generated code here */ + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +/* #undef SDL_ALTIVEC_BLITTERS */ + +#endif /* _SDL_config_h */ diff --git a/premake/config/SDL_config_iphoneos.template.h b/premake/config/SDL_config_iphoneos.template.h new file mode 100755 index 0000000000..6383cabbb8 --- /dev/null +++ b/premake/config/SDL_config_iphoneos.template.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_iphoneos_h +#define _SDL_config_iphoneos_h + +#include "SDL_platform.h" + +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif + +#define HAVE_GCC_ATOMICS 1 + +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_SETENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +/* Paste generated code here */ + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDLUIAccelerationDelegate.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + +#endif /* _SDL_config_iphoneos_h */ diff --git a/premake/config/SDL_config_linux.template.h b/premake/config/SDL_config_linux.template.h new file mode 100755 index 0000000000..5a58f7d168 --- /dev/null +++ b/premake/config/SDL_config_linux.template.h @@ -0,0 +1,180 @@ +/* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_linux_h +#define _SDL_config_linux_h + +/** + * \file SDL_config.h.in + * + * This is a set of defines to configure the SDL features + */ + +/* General platform specific identifiers */ +#include "SDL_platform.h" + +/* Make sure that this isn't included by Visual C++ */ +#ifdef _MSC_VER +#error You should run hg revert SDL_config.h +#endif + +/* C language features */ +/* #undef const */ +/* #undef inline */ +/* #undef volatile */ + +/* C datatypes */ +#ifdef __LP64__ +#define SIZEOF_VOIDP 8 +#else +#define SIZEOF_VOIDP 4 +#endif +#define HAVE_GCC_ATOMICS 1 +/* #undef HAVE_GCC_SYNC_LOCK_TEST_AND_SET */ +#define HAVE_PTHREAD_SPINLOCK 1 + +/* Comment this if you want to build without any C library requirements */ +#define HAVE_LIBC 1 +#if HAVE_LIBC + +/* Useful headers */ +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 1 +/* #undef HAVE_ALTIVEC_H */ +/* #undef HAVE_PTHREAD_NP_H */ +/* #undef HAVE_LIBUDEV_H */ +#define HAVE_DBUS_DBUS_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#ifndef __WIN32__ /* Don't use C runtime versions of these on Windows */ +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#endif +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +/* #undef HAVE_STRLCPY */ +/* #undef HAVE_STRLCAT */ +#define HAVE_STRDUP 1 +/* #undef HAVE__STRREV */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ +/* #undef HAVE_INDEX */ +/* #undef HAVE_RINDEX */ +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +/* #undef HAVE_ITOA */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__UITOA */ +/* #undef HAVE__ULTOA */ +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +/* #undef HAVE__I64TOA */ +/* #undef HAVE__UI64TOA */ +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +/* #undef HAVE__STRICMP */ +#define HAVE_STRCASECMP 1 +/* #undef HAVE__STRNICMP */ +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI /**/ +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_FSEEKO 1 +#define HAVE_FSEEKO64 1 +#define HAVE_SIGACTION 1 +#define HAVE_SA_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +/* #undef HAVE_SYSCTLBYNAME */ +#define HAVE_CLOCK_GETTIME 1 +/* #undef HAVE_GETPAGESIZE */ +#define HAVE_MPROTECT 1 +#define HAVE_ICONV 1 +#define HAVE_PTHREAD_SETNAME_NP 1 +/* #undef HAVE_PTHREAD_SET_NAME_NP */ +#define HAVE_SEM_TIMEDWAIT 1 + +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#define HAVE_STDINT_H 1 +#endif /* HAVE_LIBC */ + +/* SDL internal assertion support */ +/* #undef SDL_DEFAULT_ASSERT_LEVEL */ + +/* Paste generated code here */ + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +/* #undef SDL_ALTIVEC_BLITTERS */ + +#endif /* _SDL_config_h */ diff --git a/premake/config/SDL_config_macosx.template.h b/premake/config/SDL_config_macosx.template.h new file mode 100755 index 0000000000..a22843f556 --- /dev/null +++ b/premake/config/SDL_config_macosx.template.h @@ -0,0 +1,161 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_macosx_h +#define _SDL_config_macosx_h + +#include "SDL_platform.h" + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +/* If we specified an SDK or have a post-PowerPC chip, then alloca.h exists. */ +#if ( (MAC_OS_X_VERSION_MIN_REQUIRED >= 1030) || (!defined(__POWERPC__)) ) +#define HAVE_ALLOCA_H 1 +#endif +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRDUP 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 + +/* Paste generated code here */ + +/* Enable various video drivers */ +#undef SDL_VIDEO_DRIVER_X11 +#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_XINPUT2 "/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_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#define SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* _SDL_config_macosx_h */ diff --git a/premake/config/SDL_config_minimal.template.h b/premake/config/SDL_config_minimal.template.h new file mode 100755 index 0000000000..fe3cebc7ed --- /dev/null +++ b/premake/config/SDL_config_minimal.template.h @@ -0,0 +1,78 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_minimal_h +#define _SDL_config_minimal_h + +#include "SDL_platform.h" + +/** + * \file SDL_config_minimal.h + * + * This is the minimal configuration that can be used to build SDL. + */ + +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 + +/* Most everything except Visual Studio 2008 and earlier has stdint.h now */ +#if defined(_MSC_VER) && (_MSC_VER < 1600) +/* Here are some reasonable defaults */ +typedef unsigned int size_t; +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +typedef unsigned long uintptr_t; +#else +#define HAVE_STDINT_H 1 +#endif /* Visual Studio 2008 */ + +#ifdef __GNUC__ +#define HAVE_GCC_SYNC_LOCK_TEST_AND_SET 1 +#endif + +/* Enable the dummy audio driver (src/audio/dummy/\*.c) */ +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ +#define SDL_JOYSTICK_DISABLED 1 + +/* Enable the stub haptic driver (src/haptic/dummy/\*.c) */ +#define SDL_HAPTIC_DISABLED 1 + +/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ +#define SDL_LOADSO_DISABLED 1 + +/* Enable the stub thread support (src/thread/generic/\*.c) */ +#define SDL_THREADS_DISABLED 1 + +/* Enable the stub timer support (src/timer/dummy/\*.c) */ +#define SDL_TIMERS_DISABLED 1 + +/* Enable the dummy video driver (src/video/dummy/\*.c) */ +#define SDL_VIDEO_DRIVER_DUMMY 1 + +#endif /* _SDL_config_minimal_h */ diff --git a/premake/config/SDL_config_windows.template.h b/premake/config/SDL_config_windows.template.h new file mode 100755 index 0000000000..915ac89d21 --- /dev/null +++ b/premake/config/SDL_config_windows.template.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_config_windows_h +#define _SDL_config_windows_h + +#include "SDL_platform.h" + +/* This is a set of defines to configure the SDL features */ + +#if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) +#if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) +#define HAVE_STDINT_H 1 +#elif defined(_MSC_VER) +typedef signed __int8 int8_t; +typedef unsigned __int8 uint8_t; +typedef signed __int16 int16_t; +typedef unsigned __int16 uint16_t; +typedef signed __int32 int32_t; +typedef unsigned __int32 uint32_t; +typedef signed __int64 int64_t; +typedef unsigned __int64 uint64_t; +#ifndef _UINTPTR_T_DEFINED +#ifdef _WIN64 +typedef unsigned __int64 uintptr_t; +#else +typedef unsigned int uintptr_t; +#endif +#define _UINTPTR_T_DEFINED +#endif +/* Older Visual C++ headers don't have the Win64-compatible typedefs... */ +#if ((_MSC_VER <= 1200) && (!defined(DWORD_PTR))) +#define DWORD_PTR DWORD +#endif +#if ((_MSC_VER <= 1200) && (!defined(LONG_PTR))) +#define LONG_PTR LONG +#endif +#else /* !__GNUC__ && !_MSC_VER */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef signed short int16_t; +typedef unsigned short uint16_t; +typedef signed int int32_t; +typedef unsigned int uint32_t; +typedef signed long long int64_t; +typedef unsigned long long uint64_t; +#ifndef _SIZE_T_DEFINED_ +#define _SIZE_T_DEFINED_ +typedef unsigned int size_t; +#endif +typedef unsigned int uintptr_t; +#endif /* __GNUC__ || _MSC_VER */ +#endif /* !_STDINT_H_ && !HAVE_STDINT_H */ + +#ifdef _WIN64 +# define SIZEOF_VOIDP 8 +#else +# define SIZEOF_VOIDP 4 +#endif + +/* This is disabled by default to avoid C runtime dependencies and manifest requirements */ +#ifdef HAVE_LIBC +/* Useful headers */ +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STRING_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE__STRREV 1 +#define HAVE__STRUPR 1 +#define HAVE__STRLWR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_ITOA 1 +#define HAVE__LTOA 1 +#define HAVE__ULTOA 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE__STRICMP 1 +#define HAVE__STRNICMP 1 +#define HAVE_SSCANF 1 +#define HAVE_M_PI 1 +#define HAVE_ATAN 1 +#define HAVE_ATAN2 1 +#define HAVE_CEIL 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FLOOR 1 +#define HAVE_LOG 1 +#define HAVE_POW 1 +#define HAVE_SCALBN 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#else +#define HAVE_STDARG_H 1 +#define HAVE_STDDEF_H 1 +#endif + +/* Paste generated code here */ + +/* Enable assembly routines (Win64 doesn't have inline asm) */ +#ifndef _WIN64 +#define SDL_ASSEMBLY_ROUTINES 1 +#endif + +#endif /* _SDL_config_windows_h */ diff --git a/premake/patches/709.patch b/premake/patches/709.patch new file mode 100755 index 0000000000..6e882f4ff2 --- /dev/null +++ b/premake/patches/709.patch @@ -0,0 +1,29 @@ +# HG changeset patch +# User Ben Henning +# Date 1375901577 25200 +# Wed Aug 07 11:52:57 2013 -0700 +# Node ID 1d820b5754a9bc79b5c4c6a26d1acc170ebf4784 +# Parent 0af3bf0e3755477eafb247935db77b2765df2d19 +Updated the GCC make option to handle its linker cmomand generation a bit +differently. Rather than putting the sibling libraries before the linker +flags, they are put after. This allows for some extra flexibility in putting +custom linker libraries before the list of sibling libraries, in case one of +them depends on it. + +diff --git a/src/actions/make/make_cpp.lua b/src/actions/make/make_cpp.lua +--- a/src/actions/make/make_cpp.lua ++++ b/src/actions/make/make_cpp.lua +@@ -267,11 +267,12 @@ + _p(' LINKCMD = $(AR) -rcs $(TARGET) $(OBJECTS)') + end + else ++ -- Ben: changed order of ALL_LDFLAGS and LIBS (switched them) + -- this was $(TARGET) $(LDFLAGS) $(OBJECTS) + -- but had trouble linking to certain static libs so $(OBJECTS) moved up + -- then $(LDFLAGS) moved to end + -- https://sourceforge.net/tracker/?func=detail&aid=3430158&group_id=71616&atid=531880 +- _p(' LINKCMD = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(LIBS) $(ALL_LDFLAGS)', iif(cfg.language == "C", "CC", "CXX")) ++ _p(' LINKCMD = $(%s) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)', iif(cfg.language == "C", "CC", "CXX")) + end + end + diff --git a/premake/patches/711.patch b/premake/patches/711.patch new file mode 100755 index 0000000000..6f33a5a2f6 --- /dev/null +++ b/premake/patches/711.patch @@ -0,0 +1,30 @@ +# HG changeset patch +# User Ben Henning +# Date 1376453463 25200 +# Tue Aug 13 21:11:03 2013 -0700 +# Node ID a5f8b4f709722222e02fa481873d76ad25255e09 +# Parent 8b24d45e6a5d717876a7b32b64e99043c95328e5 +Implemented Xcode recognizing bitmap and wave files as resources, plus properly +set their types recognizable by Xcode itself. + +diff --git a/src/actions/xcode/xcode_common.lua b/src/actions/xcode/xcode_common.lua +--- a/src/actions/xcode/xcode_common.lua ++++ b/src/actions/xcode/xcode_common.lua +@@ -32,6 +32,8 @@ + [".nib"] = "Resources", + [".xib"] = "Resources", + [".icns"] = "Resources", ++ [".bmp"] = "Resources", ++ [".wav"] = "Resources", + } + return categories[path.getextension(node.name)] + end +@@ -85,6 +87,8 @@ + [".strings"] = "text.plist.strings", + [".xib"] = "file.xib", + [".icns"] = "image.icns", ++ [".bmp"] = "image.bmp", ++ [".wav"] = "audio.wav", + } + return types[path.getextension(node.path)] or "text" + end diff --git a/premake/patches/712.patch b/premake/patches/712.patch new file mode 100755 index 0000000000..c91602831a --- /dev/null +++ b/premake/patches/712.patch @@ -0,0 +1,58 @@ +# HG changeset patch +# User Ben Henning +# Date 1376509869 25200 +# Wed Aug 14 12:51:09 2013 -0700 +# Node ID e8558df4fbdb173a2b9ed0d354d6c3e76b376698 +# Parent a5f8b4f709722222e02fa481873d76ad25255e09 +Fixed a bug in Xcode project generation wherein pre/prelink/post-build commands +would not be properly executed if the premake script only had the commands +in configuration blocks, rather than in the project block. According to the +website, these commands can exist in both blocks and the Xcode script does +properly generate the commands, it just doesn't add a single line which allows +Xcode to execute the commands at the correct stage. This patch fixes those +issues. + +diff --git a/src/actions/xcode/xcode_common.lua b/src/actions/xcode/xcode_common.lua +--- a/src/actions/xcode/xcode_common.lua ++++ b/src/actions/xcode/xcode_common.lua +@@ -432,20 +432,37 @@ + for _, node in ipairs(tr.products.children) do + local name = tr.project.name + ++ -- This function checks whether there are build commands of a specific ++ -- type to be executed; they will be generated correctly, but the project ++ -- commands will not contain any per-configuration commands, so the logic ++ -- has to be extended a bit to account for that. ++ local function hasBuildCommands(which) ++ -- standard check...this is what existed before ++ if #tr.project[which] > 0 then ++ return true ++ end ++ -- what if there are no project-level commands? check configs... ++ for _, cfg in ipairs(tr.configs) do ++ if #cfg[which] > 0 then ++ return true ++ end ++ end ++ end ++ + _p(2,'%s /* %s */ = {', node.targetid, name) + _p(3,'isa = PBXNativeTarget;') + _p(3,'buildConfigurationList = %s /* Build configuration list for PBXNativeTarget "%s" */;', node.cfgsection, name) + _p(3,'buildPhases = (') +- if #tr.project.prebuildcommands > 0 then ++ if hasBuildCommands('prebuildcommands') then + _p(4,'9607AE1010C857E500CD1376 /* Prebuild */,') + end + _p(4,'%s /* Resources */,', node.resstageid) + _p(4,'%s /* Sources */,', node.sourcesid) +- if #tr.project.prelinkcommands > 0 then ++ if hasBuildCommands('prelinkcommands') then + _p(4,'9607AE3510C85E7E00CD1376 /* Prelink */,') + end + _p(4,'%s /* Frameworks */,', node.fxstageid) +- if #tr.project.postbuildcommands > 0 then ++ if hasBuildCommands('postbuildcommands') then + _p(4,'9607AE3710C85E8F00CD1376 /* Postbuild */,') + end + _p(3,');') diff --git a/premake/patches/713.patch b/premake/patches/713.patch new file mode 100755 index 0000000000..2d53abdc4b --- /dev/null +++ b/premake/patches/713.patch @@ -0,0 +1,64 @@ +# HG changeset patch +# User Ben Henning +# Date 1376606083 25200 +# Thu Aug 15 15:34:43 2013 -0700 +# Node ID 8c9cd352c70012a64779356bff3c81998c3fb6a0 +# Parent e8558df4fbdb173a2b9ed0d354d6c3e76b376698 +Implemented the option to set custom source trees for Xcode frameworks (links) +using Visual Studio-esque variables, such as "$(SDKROOT)/OpenGLES.framework". + +diff --git a/src/actions/xcode/xcode_common.lua b/src/actions/xcode/xcode_common.lua +--- a/src/actions/xcode/xcode_common.lua ++++ b/src/actions/xcode/xcode_common.lua +@@ -318,18 +318,36 @@ + local pth, src + if xcode.isframework(node.path) then + --respect user supplied paths +- if string.find(node.path,'/') then +- if string.find(node.path,'^%.')then ++ -- look for special variable-starting paths for different sources ++ local nodePath = node.path ++ local _, matchEnd, variable = string.find(nodePath, "^%$%((.+)%)/") ++ if variable then ++ -- by skipping the last '/' we support the same absolute/relative ++ -- paths as before ++ nodePath = string.sub(nodePath, matchEnd + 1) ++ end ++ if string.find(nodePath,'/') then ++ if string.find(nodePath,'^%.')then + error('relative paths are not currently supported for frameworks') + end +- pth = node.path ++ pth = nodePath + else +- pth = "/System/Library/Frameworks/" .. node.path ++ pth = "/System/Library/Frameworks/" .. nodePath + end +- src = "absolute" ++ -- if it starts with a variable, use that as the src instead ++ if variable then ++ src = variable ++ -- if we are using a different source tree, it has to be relative ++ -- to that source tree, so get rid of any leading '/' ++ if string.find(pth, '^/') then ++ pth = string.sub(pth, 2) ++ end ++ else ++ src = "" ++ end + else + -- something else; probably a source code file +- src = "group" ++ src = "" + + -- if the parent node is virtual, it won't have a local path + -- of its own; need to use full relative path from project +@@ -340,7 +358,7 @@ + end + end + +- _p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = %s; name = "%s"; path = "%s"; sourceTree = "<%s>"; };', ++ _p(2,'%s /* %s */ = {isa = PBXFileReference; lastKnownFileType = %s; name = "%s"; path = "%s"; sourceTree = "%s"; };', + node.id, node.name, xcode.getfiletype(node), node.name, pth, src) + end + end diff --git a/premake/patches/iOS.patch b/premake/patches/iOS.patch new file mode 100755 index 0000000000..ecaf04f4ee --- /dev/null +++ b/premake/patches/iOS.patch @@ -0,0 +1,71 @@ +# HG changeset patch +# User Guido Lorenz +# Date 1314134634 -7200 +# Node ID 5552b57a6b3e541edac2cf0ef3f66a361e9c774e +# Parent 60bda91095e1b823134fc7341e2c34ca7c198341 +Added iOS platform (Xcode only). + +diff -r 60bda91095e1 -r 5552b57a6b3e src/actions/xcode/_xcode.lua +--- a/src/actions/xcode/_xcode.lua Fri Aug 19 08:58:23 2011 -0400 ++++ b/src/actions/xcode/_xcode.lua Tue Aug 23 23:23:54 2011 +0200 +@@ -28,6 +28,7 @@ + Universal32 = "32-bit Universal", + Universal64 = "64-bit Universal", + Universal = "Universal", ++ iOS = "iOS", + }, + + default_platform = "Universal", +@@ -79,6 +80,7 @@ + Universal32 = "32-bit Universal", + Universal64 = "64-bit Universal", + Universal = "Universal", ++ iOS = "iOS", + }, + + default_platform = "Universal", +diff -r 60bda91095e1 -r 5552b57a6b3e src/actions/xcode/xcode_common.lua +--- a/src/actions/xcode/xcode_common.lua Fri Aug 19 08:58:23 2011 -0400 ++++ b/src/actions/xcode/xcode_common.lua Tue Aug 23 23:23:54 2011 +0200 +@@ -724,9 +724,15 @@ + Universal32 = "$(ARCHS_STANDARD_32_BIT)", + Universal64 = "$(ARCHS_STANDARD_64_BIT)", + Universal = "$(ARCHS_STANDARD_32_64_BIT)", ++ iOS = "$(ARCHS_UNIVERSAL_IPHONE_OS)", + } + _p(4,'ARCHS = "%s";', archs[cfg.platform]) + ++ if cfg.platform == "iOS" then ++ _p(4,'SDKROOT = %s;', "iphoneos") ++ _p(4,'CODE_SIGN_IDENTITY = "%s";', "iPhone Developer") ++ end ++ + local targetdir = path.getdirectory(cfg.buildtarget.bundlepath) + if targetdir ~= "." then + _p(4,'CONFIGURATION_BUILD_DIR = "$(SYMROOT)";'); +diff -r 60bda91095e1 -r 5552b57a6b3e src/base/cmdline.lua +--- a/src/base/cmdline.lua Fri Aug 19 08:58:23 2011 -0400 ++++ b/src/base/cmdline.lua Tue Aug 23 23:23:54 2011 +0200 +@@ -71,6 +71,7 @@ + { "universal", "Mac OS X Universal, 32- and 64-bit" }, + { "universal32", "Mac OS X Universal, 32-bit only" }, + { "universal64", "Mac OS X Universal, 64-bit only" }, ++ { "ios", "iOS" }, + { "ps3", "Playstation 3 (experimental)" }, + { "xbox360", "Xbox 360 (experimental)" }, + } +diff -r 60bda91095e1 -r 5552b57a6b3e src/base/globals.lua +--- a/src/base/globals.lua Fri Aug 19 08:58:23 2011 -0400 ++++ b/src/base/globals.lua Tue Aug 23 23:23:54 2011 +0200 +@@ -38,6 +38,11 @@ + { + cfgsuffix = "univ64", + }, ++ iOS = ++ { ++ cfgsuffix = "ios", ++ iscrosscompiler = true, ++ }, + PS3 = + { + cfgsuffix = "ps3", diff --git a/premake/patches/premake.patches.txt b/premake/patches/premake.patches.txt new file mode 100755 index 0000000000..308d7d4ed4 --- /dev/null +++ b/premake/patches/premake.patches.txt @@ -0,0 +1,26 @@ +The patches in this directory are targeted to the premake4 stable branch, based +on the date of these files and the repository. + +1. 709.patch: this patch corrects the linking order for generated GNU makefiles. + More information on this patch can be found at: + https://sourceforge.net/p/premake/bugs/279/ +2. iOS.patch: this patch adds a iOS as a platform option for premake, allowing + for potential iOS Xcode project generation. +3. 711.patch: this patch adds support for Xcode recognizing files added to + Xcode projects with the extensions of .bmp or .wav as resource files with + the respective file types of image and audio. This is needed to properly + bundle the Xcode-iOS resources with the app package. See the following for + more information: + https://sourceforge.net/p/premake/patches/165/ +4. 712.patch: this patch fixes an issue in Xcode that prevents post-build + commands from working for multiple configurations. This is why I had to have + debug and release configurations disabled for so long. They are now reenabled + and should be working fine. For more information: + https://sourceforge.net/p/premake/bugs/280/ +5. 713.patch: this patch allows custom source trees to be set in Xcode links + using variables similar to Visual Studio variables. This is necessary to + properly link to frameworks for iOS projects. For more information: + https://sourceforge.net/p/premake/patches/166/ + +The repository containing these changes can be found at: +https://bitbucket.org/gsocben/premake-stable-sdlgsoc2013 \ No newline at end of file diff --git a/premake/premake4.lua b/premake/premake4.lua new file mode 100755 index 0000000000..9fedcdc181 --- /dev/null +++ b/premake/premake4.lua @@ -0,0 +1,482 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +premake4.lua + + This script sets up the entire premake system. It's responsible for executing + all of the definition scripts for the SDL2 library and the entire test suite, + or demos for the iOS platform. It handles each specific platform and uses the + setup state to generate both the configuration header file needed to build + SDL2 and the premake lua script to generate the target project files. +]] + +-- string utility functions +dofile "util/sdl_string.lua" +-- utility file wrapper for some useful functions +dofile "util/sdl_file.lua" +-- system for defining SDL projects +dofile "util/sdl_projects.lua" +-- offers a utility function for finding dependencies specifically on windows +dofile "util/sdl_depends.lua" +-- system for generating a *config.h file used to build the SDL2 library +dofile "util/sdl_gen_config.lua" +-- functions to handle complicated dependency checks using CMake-esque functions +dofile "util/sdl_check_compile.lua" +-- a list of dependency functions for the SDL2 project and any other projects +dofile "util/sdl_dependency_checkers.lua" + +-- the following are various options for configuring the meta-build system +newoption { + trigger = "to", + value = "path", + description = "Set the base output directory for the generated and executed lua file." +} + +newoption { + trigger = "mingw", + description = "Runs the premake generation script targeted to MinGW." +} + +newoption { + trigger = "cygwin", + description = "Runs the premake generation script targeted to Cygwin." +} + +newoption { + trigger = "ios", + description = "Runs the premake generation script targeted to iOS." +} + +-- determine the localized destination path +local baseLoc = "./" +if _OPTIONS["to"] then + baseLoc = _OPTIONS["to"]:gsub("\\", "/") +end + +local deps = SDL_getDependencies() +for _,v in ipairs(deps) do + newoption { + trigger = v:lower(), + description = "Force on the dependency: " .. v + } +end + +-- clean action +if _ACTION == "clean" then + -- this is kept the way it is because premake's default method of cleaning the + -- build tree is not very good standalone, whereas the following correctly + -- cleans every build option + print("Cleaning the build environment...") + os.rmdir(baseLoc .. "/SDL2") + os.rmdir(baseLoc .. "/SDL2main") + os.rmdir(baseLoc .. "/SDL2test") + os.rmdir(baseLoc .. "/tests") + os.rmdir(baseLoc .. "/Demos") + os.rmdir(baseLoc .. "/ipch") -- sometimes shows up + os.remove(baseLoc .. "/SDL.sln") + os.remove(baseLoc .. "/SDL.suo") + os.remove(baseLoc .. "/SDL.v11.suo") + os.remove(baseLoc .. "/SDL.sdf") + os.remove(baseLoc .. "/SDL.ncb") + os.remove(baseLoc .. "/SDL-gen.lua") + os.remove(baseLoc .. "/SDL_config_premake.h") + os.remove(baseLoc .. "/Makefile") + os.rmdir(baseLoc .. "/SDL.xcworkspace") + os.exit() +end + +-- only run through standard execution if not in help mode +if _OPTIONS["help"] == nil then + -- load all of the project definitions + local results = os.matchfiles("projects/**.lua") + for _,dir in ipairs(results) do + dofile(dir) + end + + -- figure out which configuration template to use + local premakeConfigHeader = baseLoc .. "/SDL_config_premake.h" + -- minimal configuration is the default + local premakeTemplateHeader = "./config/SDL_config_minimal.template.h" + if SDL_getos() == "windows" or SDL_getos() == "mingw" then + premakeTemplateHeader = "./config/SDL_config_windows.template.h" + elseif SDL_getos() == "macosx" then + premakeTemplateHeader = "./config/SDL_config_macosx.template.h" + elseif SDL_getos() == "ios" then + premakeTemplateHeader = "./config/SDL_config_iphoneos.template.h" + elseif os.get() == "linux" then + premakeTemplateHeader = "./config/SDL_config_linux.template.h" + elseif SDL_getos() == "cygwin" then + premakeTemplateHeader = "./config/SDL_config_cygwin.template.h" + end + + local genFile = baseLoc .. "/SDL-gen.lua" + local file = fileopen(genFile, "wt") + print("Generating " .. genFile .. "...") + -- begin generating the config header file + startGeneration(premakeConfigHeader, premakeTemplateHeader) + + -- begin generating the actual premake script + file:print(0, "-- Premake script generated by Simple DirectMedia Layer meta-build script") + file:print(1, 'solution "SDL"') + local platforms = { } + local platformsIndexed = { } + for n,p in pairs(projects) do + if p.platforms and #p.platforms ~= 0 then + for k,v in pairs(p.platforms) do + platforms[v] = true + end + end + end + for n,v in pairs(platforms) do + platformsIndexed[#platformsIndexed + 1] = n + end + file:print(2, implode(platformsIndexed, 'platforms {', '"', '"', ', ', '}')) + file:print(2, 'configurations { "Debug", "Release" }') + for n,p in pairs(projects) do + if p.compat then + local proj = {} + if p.projectLocation ~= nil then + proj.location = p.projectLocation .. "/" .. p.name + else + proj.location = p.name .. "/" + end + proj.includedirs = { path.getrelative(baseLoc, + path.getdirectory(premakeConfigHeader)), + path.getrelative(baseLoc, "../include") } + proj.libdirs = { } + proj.files = { } + local links = { } + local dbgCopyTable = { } + local relCopyTable = { } + -- custom links that shouldn't exist... + -- (these should always happen before dependencies) + if p.customLinks ~= nil then + for k,lnk in pairs(p.customLinks) do + table.insert(links, lnk) + end + end + -- setup project dependencies + local dependencyLocs = { } + if p.projectDependencies ~= nil and #p.projectDependencies ~= 0 then + for k,projname in pairs(p.projectDependencies) do + local depproj = projects[projname] + -- validation that it exists and can be linked to + if depproj ~= nil and (depproj.kind == "SharedLib" or depproj.kind == "StaticLib") then + if depproj.kind == "SharedLib" then + local deplocation = nil + if depproj.projectLocation ~= nil then + deplocation = depproj.projectLocation .. "/" .. p.name + else + deplocation = depproj.name .. "/" + end + table.insert(dependencyLocs, { location = deplocation, name = projname }) + else -- static lib + -- we are now dependent on everything the static lib is dependent on + if depproj.customLinks ~= nil then + for k,lnk in pairs(depproj.customLinks) do + table.insert(links, lnk) + end + end + -- also include links from dependencies + for i,d in pairs(depproj.dependencyTree) do + if d.links then + for k,v in pairs(d.links) do + local propPath = v:gsub("\\", "/") + table.insert(links, propPath) + end + end + end + end + -- finally, depend on the project itself + table.insert(links, projname) + elseif depproj == nil then + print("Warning: Missing external dependency for project: ".. p.name .. + ". Be sure you setup project dependencies in a logical order.") + else + print("Warning: Cannot link " .. p.name .. " to second project " .. + projname .. " because the second project is not a library.") + end + end + end + -- iterate across all root directories, matching source directories + local dirs = createDirTable(p.sourcedir) + -- but first, handle any files specifically set in the project, rather than + -- its dependencies + -- register c and h files in this directory + if (p.files ~= nil and #p.files ~= 0) or (p.paths ~= nil and #p.paths ~= 0) then + -- handle all lists of files + if p.files ~= nil and #p.files ~= 0 then + for k,filepat in pairs(p.files) do + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat)) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + end + end -- end props files if + -- add all .c/.h files from each path + -- handle all related paths + if p.paths ~= nil and #p.paths ~= 0 then + for j,filepat in ipairs(p.paths) do + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat .. "*.c")) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat .. "*.h")) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + -- mac osx + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat .. "*.m")) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + end + end -- end of props paths if + end -- end of check for files/paths in main project + -- if this project has any configuration flags, add them to the current file + if p.config then + addConfig(p.config) + end + -- now, handle files and paths for dependencies + for i,props in ipairs(p.dependencyTree) do + if props.compat then + -- register c and h files in this directory + -- handle all lists of files + if props.files ~= nil and #props.files ~= 0 then + for k,filepat in pairs(props.files) do + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat)) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + end + end -- end props files if + -- add all .c/.h files from each path + -- handle all related paths + if props.paths ~= nil and #props.paths ~= 0 then + for j,filepat in ipairs(props.paths) do + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat .. "*.c")) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat .. "*.h")) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + -- mac osx + for k,f in pairs(os.matchfiles(p.sourcedir .. filepat .. "*.m")) do + table.insert(proj.files, path.getrelative(baseLoc, f)) + end + end + end -- end of props paths if + -- if this dependency has any special configuration flags, add 'em + if props.config then + addConfig(props.config) + end -- end of props config if check + end -- end check for compatibility + end -- end of props loop + --local debugConfig = configuration("Debug") + local debugConfig = {} + local releaseConfig = {} + debugConfig.defines = { "USING_PREMAKE_CONFIG_H", "_DEBUG" } + releaseConfig.defines = { "USING_PREMAKE_CONFIG_H", "NDEBUG" } + -- setup per-project defines + if p.defines ~= nil then + for k,def in pairs(p.defines) do + table.insert(debugConfig.defines, def) + table.insert(releaseConfig.defines, def) + end + end + debugConfig.buildoptions = { } + if SDL_getos() == "windows" then + table.insert(debugConfig.buildoptions, "/MDd") + end + debugConfig.linkoptions = { } + releaseConfig.buildoptions = {} + releaseConfig.linkoptions = {} + local baseBuildDir = "/Build" + if os.get() == "windows" then + baseBuildDir = "/Win32" + end + debugConfig.flags = { "Symbols" } + debugConfig.targetdir = proj.location .. baseBuildDir .. "/Debug" + releaseConfig.flags = { "OptimizeSpeed" } + releaseConfig.targetdir = proj.location .. baseBuildDir .. "/Release" + -- setup postbuild options + local dbgPostbuildcommands = { } + local relPostbuildcommands = { } + -- handle copying depended shared libraries to correct folders + if os.get() == "windows" then + for k,deploc in pairs(dependencyLocs) do + table.insert(dbgCopyTable, { src = deploc.location .. baseBuildDir .. "/Debug/" .. deploc.name .. ".dll", + dst = debugConfig.targetdir .. "/" .. deploc.name .. ".dll" }) + table.insert(relCopyTable, { src = deploc.location .. baseBuildDir .. "/Release/" .. deploc.name .. ".dll", + dst = releaseConfig.targetdir .. "/" .. deploc.name .. ".dll" }) + end + end + if p.copy ~= nil then + for k,file in pairs(p.copy) do + -- the following builds relative paths native to the current system for copying, other + -- than the copy command itself, this is essentially cross-platform for paths + + -- all custom copies should be relative to the current working directory + table.insert(dbgCopyTable, { src = path.getrelative(baseLoc, p.sourcedir .. "/" .. file), dst = debugConfig.targetdir .. "/" .. file }) + table.insert(relCopyTable, { src = path.getrelative(baseLoc, p.sourcedir .. "/" .. file), dst = releaseConfig.targetdir .. "/" .. file }) + end + end + for k,file in pairs(dbgCopyTable) do + -- all copies should be relative to project location, based on platform + local relLocation = "./" + --if os.get() == "windows" then + relLocation = proj.location + --end + local fromPath = "./" .. path.getrelative(relLocation, file.src) + local toPath = "./" .. path.getrelative(relLocation, file.dst) + local toPathParent = path.getdirectory(toPath) + local copyCommand = "cp" + local destCheck = "if [ ! -d \\\"" .. toPathParent .. "\\\" ]; then mkdir -p \\\"" .. toPathParent .. "\\\"; fi" + if SDL_getos() ~= "windows" and fromPath:find("*") ~= nil then + -- to path must be a directory for * copies + toPath = path.getdirectory(toPath) + end + if SDL_getos() == "windows" then + fromPath = path.translate(fromPath, "/"):gsub("/", "\\\\") + toPath = path.translate(toPath, "/"):gsub("/", "\\\\") + toPathParent = path.translate(toPathParent, "/"):gsub("/", "\\\\") + copyCommand = "copy" + destCheck = "if not exist \\\"" .. toPathParent .. "\\\" ( mkdir \\\"" .. toPathParent .. "\\\" )" + else + fromPath = path.translate(fromPath, nil):gsub("\\", "/") + toPath = path.translate(toPath, nil):gsub("\\", "/") + end + -- command will check for destination directory to exist and, if it doesn't, + -- it will make the directory and then copy over any assets + local quotedFromPath = fromPath + if SDL_getos() == "windows" or fromPath:find("*") == nil then + quotedFromPath = '\\"' .. quotedFromPath .. '\\"' + end + table.insert(dbgPostbuildcommands, destCheck) + table.insert(dbgPostbuildcommands, + copyCommand .. " " .. + quotedFromPath .. " \\\"" .. + toPath .. "\\\"") + end + for k,file in pairs(relCopyTable) do + -- all copies should be relative to project location, based on platform + local relLocation = "./" + relLocation = proj.location + local fromPath = "./" .. path.getrelative(relLocation, file.src) + local toPath = "./" .. path.getrelative(relLocation, file.dst) + local toPathParent = path.getdirectory(toPath) + local copyCommand = "cp" + local destCheck = "if [ ! -d \\\"" .. toPathParent .. "\\\" ]; then mkdir -p \\\"" .. toPathParent .. "\\\"; fi" + if SDL_getos() ~= "windows" and fromPath:find("*") ~= nil then + -- to path must be a directory for * copies + toPath = path.getdirectory(toPath) + end + if SDL_getos() == "windows" then + fromPath = path.translate(fromPath, "/"):gsub("/", "\\\\") + toPath = path.translate(toPath, "/"):gsub("/", "\\\\") + toPathParent = path.translate(toPathParent, "/"):gsub("/", "\\\\") + copyCommand = "copy" + destCheck = "if not exist \\\"" .. toPathParent .. "\\\" ( mkdir \\\"" .. toPathParent .. "\\\" )" + else + fromPath = path.translate(fromPath, nil):gsub("\\", "/") + toPath = path.translate(toPath, nil):gsub("\\", "/") + end + -- command will check for destination directory to exist and, if it doesn't, + -- it will make the directory and then copy over any assets + local quotedFromPath = fromPath + if SDL_getos() == "windows" or fromPath:find("*") == nil then + quotedFromPath = '\\"' .. quotedFromPath .. '\\"' + end + table.insert(relPostbuildcommands, destCheck) + table.insert(relPostbuildcommands, + copyCommand .. " " .. + quotedFromPath .. " \\\"" .. + toPath .. "\\\"") + end + debugConfig.postbuildcommands = dbgPostbuildcommands + debugConfig.links = links + releaseConfig.postbuildcommands = relPostbuildcommands + releaseConfig.links = links -- release links? + for i,d in pairs(p.dependencyTree) do + if d.includes then + for k,v in pairs(d.includes) do + local propPath = v:gsub("\\", "/") + proj.includedirs[propPath] = propPath + end + end + if d.libs then + for k,v in pairs(d.libs) do + local propPath = v:gsub("\\", "/") + proj.libdirs[propPath] = propPath + end + end + if d.links then + for k,v in pairs(d.links) do + local propPath = v:gsub("\\", "/") + debugConfig.links[#debugConfig.links + 1] = propPath + end + end + end + if #proj.files > 0 then + file:print(1, 'project "' .. p.name .. '"') + file:print(2, 'targetname "' .. p.name .. '"') + -- note: commented out because I think this hack is unnecessary + --if iOSMode and p.kind == "ConsoleApp" then + -- hack for iOS where we cannot build "tools"/ConsoleApps in + -- Xcode for iOS, so we convert them over to WindowedApps + -- p.kind = "WindowedApp" + --end + file:print(2, 'kind "' .. p.kind .. '"') + file:print(2, 'language "' .. p.language .. '"') + file:print(2, 'location "' .. proj.location .. '"') + file:print(2, 'flags { "NoExceptions" }') -- NoRTTI + file:print(2, 'buildoptions { }')--"/GS-" }') + file:print(2, implode(proj.includedirs, 'includedirs {', '"', '"', ', ', '}')) + file:print(2, implode(proj.libdirs, 'libdirs {', '"', '"', ', ', '}')) + file:print(2, implode(proj.files, 'files {', '"', '"', ', ', '}')) + -- debug configuration + file:print(2, 'configuration "Debug"') + file:print(3, 'targetdir "' .. debugConfig.targetdir .. '"') + -- debug dir is relative to the solution's location + file:print(3, 'debugdir "' .. debugConfig.targetdir .. '"') + file:print(3, implode(debugConfig.defines, 'defines {', '"', '"', ', ', '}')) + file:print(3, implode(debugConfig.links, "links {", '"', '"', ', ', "}")) + if SDL_getos() == "mingw" then + -- static runtime + file:print(3, 'linkoptions { "-lmingw32 -static-libgcc" }') + end + if SDL_getos() == "cygwin" then + file:print(3, 'linkoptions { "-static-libgcc" }') + end + file:print(3, implode(debugConfig.flags, "flags {", '"', '"', ', ', "}")) + file:print(3, implode(debugConfig.postbuildcommands, "postbuildcommands {", '"', '"', ', ', "}")) + -- release configuration + file:print(2, 'configuration "Release"') + file:print(3, 'targetdir "' .. releaseConfig.targetdir .. '"') + -- debug dir is relative to the solution's location + file:print(3, 'debugdir "' .. releaseConfig.targetdir .. '"') + file:print(3, implode(releaseConfig.defines, 'defines {', '"', '"', ', ', '}')) + file:print(3, implode(releaseConfig.links, "links {", '"', '"', ', ', "}")) + if SDL_getos() == "mingw" then + -- static runtime + file:print(3, 'linkoptions { "-lmingw32 -static-libgcc" }') + end + file:print(3, implode(releaseConfig.flags, "flags {", '"', '"', ', ', "}")) + file:print(3, implode(releaseConfig.postbuildcommands, "postbuildcommands {", '"', '"', ', ', "}")) + end -- end check for valid project (files to build) + end -- end compatibility check for projects + end -- end for loop for projects + + endGeneration() -- finish generating the config header file + file:close() + + -- generation is over, now execute the generated file, setup the premake + -- solution, and let premake execute the action and generate the project files + dofile(genFile) +end -- end check for not being in help mode \ No newline at end of file diff --git a/premake/projects/SDL2.lua b/premake/projects/SDL2.lua new file mode 100755 index 0000000000..56dee8e219 --- /dev/null +++ b/premake/projects/SDL2.lua @@ -0,0 +1,404 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +SDL2.lua + + This file provides the project definition for the entire SDL2 library, on all + platforms supported by the meta-build system. That includes Windows, MinGW, + Cygwin, Mac OS X, iOS, and Linux. This project is responsible for setting up + the source trees and the complicated dependencies required to build the + final SDL2 library. In order to simplify this process, the library is split + into several different segments. Each segment focuses on a different + dependency and series of configurations which are thrown into the generated + config header file, used to build this project. +]] + +SDL_project "SDL2" + SDL_isos "windows|mingw" -- all other bindings should be a shared library + SDL_kind "SharedLib" + SDL_isos "macosx|ios" -- macosx employs a static linking + SDL_kind "StaticLib" + -- the way premake generates project dependencies and how that affects linkage + -- makes it difficult to use shared libraries on Linux. Cygwin has issues + -- binding to GetProcAddress, so a static library is an easy fix. + SDL_isos "linux|cygwin" + SDL_kind "StaticLib" + + SDL_language "C++" + SDL_sourcedir "../src" + -- primary platforms + SDL_isos "ios" + SDL_platforms { "iOS" } + SDL_isnotos "ios" + SDL_platforms { "native" } + -- additional platforms + SDL_isos "macosx" + SDL_platforms { "universal" } + SDL_isos "windows|mingw" + SDL_defines { "_WINDOWS" } + + -- Following is the dependency tree for SDL2 + -- (no SDL_os call means platform-independent) + + -- The core and minimal of the SDL2 library. This will not quite build + -- standalone, but it's doable with a bit of tweaking to build this using the + -- minimal configuration header. This is a good start to adding SDL support to + -- new platforms. + SDL_config + { + ["SDL_AUDIO_DRIVER_DISK"] = 1, + ["SDL_AUDIO_DRIVER_DUMMY"] = 1, + ["SDL_VIDEO_DRIVER_DUMMY"] = 1 + } + SDL_paths + { + "/", + "/atomic/", + "/audio/", + "/audio/disk/", + "/audio/dummy/", + "/cpuinfo/", + "/events/", + "/file/", + "/haptic/", + "/joystick/", + "/power/", + "/render/", + "/render/software/", + "/stdlib/", + "/thread/", + "/timer/", + "/video/", + "/video/dummy/" + } + + -- SDL2 on Windows + SDL_dependency "windows" + SDL_os "windows|mingw" + SDL_links { "imm32", "oleaut32", "winmm", "version" } + -- these are the links that Visual Studio includes by default + SDL_links { "kernel32", "user32", "gdi32", "winspool", + "comdlg32", "advapi32", "shell32", "ole32", + "oleaut32", "uuid", "odbc32", "odbccp32" } + SDL_config + { + ["SDL_LOADSO_WINDOWS"] = 1, + ["SDL_THREAD_WINDOWS"] = 1, + ["SDL_TIMER_WINDOWS"] = 1, + ["SDL_VIDEO_DRIVER_WINDOWS"] = 1, + ["SDL_POWER_WINDOWS"] = 1, + ["SDL_AUDIO_DRIVER_WINMM"] = 1, + ["SDL_FILESYSTEM_WINDOWS"] = 1 + } + SDL_paths + { + "/audio/winmm/", + "/core/windows/", + "/libm/", + "/loadso/windows/", + "/power/windows/", + "/thread/windows/", + "/timer/windows/", + "/video/windows/", + "/filesystem/windows/" + } + SDL_files + { + -- these files have to be specified uniquely to avoid double + -- and incorrect linking + "/thread/generic/SDL_syscond.c", + "/thread/generic/SDL_sysmutex_c.h" + } + + -- DirectX dependency + SDL_dependency "directx" + SDL_os "windows|mingw" + SDL_depfunc "DirectX" + SDL_config + { + ["SDL_AUDIO_DRIVER_DSOUND"] = 1, + ["SDL_AUDIO_DRIVER_XAUDIO2"] = 1, + ["SDL_JOYSTICK_DINPUT"] = 1, + ["SDL_HAPTIC_DINPUT"] = 1, + ["SDL_VIDEO_RENDER_D3D"] = 1 + } + SDL_paths + { + "/audio/directsound/", + "/audio/xaudio2/", + "/render/direct3d/", + -- these two depend on Xinput + "/haptic/windows/", + "/joystick/windows/", + } + -- in case DirectX was not found + SDL_dependency "notdirectx" + SDL_os "windows|mingw" + SDL_notdepfunc "DirectX" + SDL_config + { + -- enable dummy systems (same as disabling them) + ["SDL_HAPTIC_DUMMY"] = 1, + ["SDL_JOYSTICK_DUMMY"] = 1 + } + SDL_paths + { + -- since we don't have Xinput + "/haptic/dummy/", + "/joystick/dummy/", + } + + -- OpenGL dependency + SDL_dependency "opengl" + SDL_depfunc "OpenGL" + SDL_config + { + ["SDL_VIDEO_OPENGL"] = 1, + ["SDL_VIDEO_RENDER_OGL"] = 1 + } + SDL_paths { "/render/opengl/" } + -- WGL dependency for OpenGL on Windows + SDL_dependency "opengl-windows" + SDL_os "windows|mingw" + SDL_depfunc "OpenGL" + SDL_config { ["SDL_VIDEO_OPENGL_WGL"] = 1 } + -- GLX dependency for OpenGL on Linux + SDL_dependency "opengl-linux" + SDL_os "linux" + SDL_depfunc "OpenGL" + SDL_config { ["SDL_VIDEO_OPENGL_GLX"] = 1 } + + -- SDL2 on Mac OS X + SDL_dependency "macosx" + SDL_os "macosx" + SDL_config + { + ["SDL_AUDIO_DRIVER_COREAUDIO"] = 1, + ["SDL_JOYSTICK_IOKIT"] = 1, + ["SDL_HAPTIC_IOKIT"] = 1, + ["SDL_LOADSO_DLOPEN"] = 1, + ["SDL_THREAD_PTHREAD"] = 1, + ["SDL_THREAD_PTHREAD_RECURSIVE_MUTEX"] = 1, + ["SDL_TIMER_UNIX"] = 1, + ["SDL_VIDEO_DRIVER_COCOA"] = 1, + ["SDL_POWER_MACOSX"] = 1, + ["SDL_FILESYSTEM_COCOA"] = 1 + } + SDL_paths + { + "/audio/coreaudio/", + "/file/cocoa/", + "/haptic/darwin/", + "/joystick/darwin/", + "/loadso/dlopen/", + "/power/macosx/", + "/render/opengl/", + "/thread/pthread/", + "/timer/unix/", + "/video/cocoa/", + "/video/x11/", + "/filesystem/cocoa/" + } + SDL_links + { + "AudioToolbox.framework", + "AudioUnit.framework", + "Cocoa.framework", + "CoreAudio.framework", + "IOKit.framework", + "Carbon.framework", + "ForceFeedback.framework", + "CoreFoundation.framework" + } + + -- Linux dependency: DLOpen + SDL_dependency "linux-dlopen" + SDL_os "linux" + SDL_depfunc "DLOpen" + SDL_paths { "/loadso/dlopen/" } + SDL_config { ["SDL_LOADSO_DLOPEN"] = 1 } + -- Linux dependency: ALSA + SDL_dependency "linux-alsa" + SDL_os "linux" + SDL_depfunc "ALSA" + SDL_paths { "/audio/alsa/" } + SDL_config + { + ["SDL_AUDIO_DRIVER_ALSA"] = 1, + ["SDL_AUDIO_DRIVER_ALSA_DYNAMIC"] = '"libasound.so"' + } + -- Linux dependency: PulseAudio + SDL_dependency "linux-pulseaudio" + SDL_os "linux" + SDL_depfunc "PulseAudio" + SDL_paths { "/audio/pulseaudio/" } + SDL_config + { + ["SDL_AUDIO_DRIVER_PULSEAUDIO"] = 1, + ["SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC"] = '"libpulse-simple.so"' + } + -- Linux dependency: ESD + SDL_dependency "linux-esd" + SDL_os "linux" + SDL_depfunc "ESD" + SDL_paths { "/audio/esd/" } + SDL_config + { + ["SDL_AUDIO_DRIVER_ESD"] = 1, + ["SDL_AUDIO_DRIVER_ESD_DYNAMIC"] = '"libesd.so"' + } + -- Linux dependency: NAS + SDL_dependency "linux-nas" + SDL_os "linux" + SDL_depfunc "NAS" + SDL_paths { "/audio/nas/" } + SDL_config + { + ["SDL_AUDIO_DRIVER_NAS"] = 1, + ["SDL_AUDIO_DRIVER_NAS_DYNAMIC"] = '"libaudio.so"' + } + -- Linux dependency: OSS + SDL_dependency "linux-oss" + SDL_os "linux" + SDL_depfunc "OSS" + SDL_paths { "/audio/dsp/" } + SDL_config { ["SDL_AUDIO_DRIVER_OSS"] = 1 } + -- Linux dependency: X11 + SDL_dependency "linux-x11" + SDL_os "linux" + SDL_depfunc "X11" + SDL_paths { "/video/x11/" } + SDL_config + { + ["SDL_VIDEO_DRIVER_X11"] = 1, + ["SDL_VIDEO_DRIVER_X11_DYNAMIC"] = '"libX11.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT"] = '"libXext.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR"] = '"libXcursor.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA"] = '"libXinerama.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2"] = '"libXi.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR"] = '"libXrandr.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS"] = '"libXss.so"', + ["SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE"] = '"libXxf86vm.so"', + ["SDL_VIDEO_DRIVER_X11_XCURSOR"] = 1, + ["SDL_VIDEO_DRIVER_X11_XINERAMA"] = 1, + ["SDL_VIDEO_DRIVER_X11_XINPUT2"] = 1, + ["SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH"] = 1, + ["SDL_VIDEO_DRIVER_X11_XRANDR"] = 1, + ["SDL_VIDEO_DRIVER_X11_XSCRNSAVER"] = 1, + ["SDL_VIDEO_DRIVER_X11_XSHAPE"] = 1, + ["SDL_VIDEO_DRIVER_X11_XVIDMODE"] = 1, + ["SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS"] = 1, + ["SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY"] = 1, + ["SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM"] = 1 + } + -- SDL2 on Linux + SDL_dependency "linux" + SDL_os "linux" + SDL_depfunc "DBus" + SDL_config + { + ["SDL_INPUT_LINUXEV"] = 1, + ["SDL_JOYSTICK_LINUX"] = 1, + ["SDL_HAPTIC_LINUX"] = 1, + ["SDL_THREAD_PTHREAD"] = 1, + ["SDL_THREAD_PTHREAD_RECURSIVE_MUTEX"] = 1, + ["SDL_TIMER_UNIX"] = 1, + ["SDL_POWER_LINUX"] = 1, + ["SDL_FILESYSTEM_UNIX"] = 1, + } + SDL_paths + { + "/haptic/linux/", + "/joystick/linux/", + "/power/linux/", + "/thread/pthread/", + "/timer/unix/", + "/filesystem/unix/" + } + SDL_links + { + "m", + "pthread", + "rt" + } + + -- SDL2 on Cygwin (not quite working yet) + SDL_dependency "cygwin" + SDL_os "cygwin" + SDL_config + { + ['SDL_JOYSTICK_DISABLED'] = 1, + ['SDL_HAPTIC_DISABLED'] = 1, + ['SDL_LOADSO_DLOPEN'] = 1, + ['SDL_THREAD_PTHREAD'] = 1, + ['SDL_THREAD_PTHREAD_RECURSIVE_MUTEX'] = 1, + ['SDL_TIMER_UNIX'] = 1, + ['SDL_FILESYSTEM_UNIX'] = 1, + ['SDL_POWER_LINUX'] = 1 + } + SDL_paths + { + "/loadso/dlopen/", + "/power/linux/", + "/render/opengl/", + "/thread/pthread/", + "/timer/unix/", + "/filesystem/unix/", + "/libm/" + } + + -- SDL2 on iOS + SDL_dependency "iphoneos" + SDL_os "ios" + SDL_config + { + ["SDL_AUDIO_DRIVER_COREAUDIO"] = 1, + ["SDL_JOYSTICK_DISABLED"] = 0, + ["SDL_HAPTIC_DISABLED"] = 1, + ["SDL_LOADSO_DISABLED"] = 1, + ["SDL_THREAD_PTHREAD"] = 1, + ["SDL_THREAD_PTHREAD_RECURSIVE_MUTEX"] = 1, + ["SDL_TIMER_UNIX"] = 1, + ["SDL_VIDEO_DRIVER_UIKIT"] = 1, + ["SDL_VIDEO_OPENGL_ES"] = 1, + ["SDL_VIDEO_RENDER_OGL_ES"] = 1, + ["SDL_VIDEO_RENDER_OGL_ES2"] = 1, + ["SDL_POWER_UIKIT"] = 1, + ["SDL_IPHONE_KEYBOARD"] = 1, + ["SDL_FILESYSTEM_COCOA"] = 1 + } + SDL_paths + { + "/audio/coreaudio/", + "/file/cocoa/", + "/joystick/iphoneos/", + "/loadso/dlopen/", + "/power/uikit/", + "/render/opengles/", + "/render/opengles2/", + "/thread/pthread/", + "/timer/unix/", + "/video/uikit/", + "/filesystem/cocoa/" + } + SDL_links + { + "$(SDKROOT)/AudioToolbox.framework", + "$(SDKROOT)/QuartzCore.framework", + "$(SDKROOT)/OpenGLES.framework", + "$(SDKROOT)/CoreGraphics.framework", + "$(SDKROOT)/UIKit.framework", + "$(SDKROOT)/Foundation.framework", + "$(SDKROOT)/CoreAudio.framework" + } \ No newline at end of file diff --git a/premake/projects/SDL2main.lua b/premake/projects/SDL2main.lua new file mode 100755 index 0000000000..f5c556f1c1 --- /dev/null +++ b/premake/projects/SDL2main.lua @@ -0,0 +1,31 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +SDL2main.lua + + This file defines the SDL2main project which builds the SDL2main static + library for Windows and Mac. This project is primarily for everything but + Linux. +]] + +SDL_project "SDL2main" + SDL_kind "StaticLib" + SDL_language "C" + SDL_sourcedir "../src" + SDL_dependency "windows" + SDL_os "windows|mingw" + SDL_paths { "/main/windows/" } + SDL_dependency "macosx or ios" + SDL_os "macosx|ios|cygwin" + SDL_paths { "/main/dummy/" } \ No newline at end of file diff --git a/premake/projects/SDL2test.lua b/premake/projects/SDL2test.lua new file mode 100755 index 0000000000..f2d9c2b56b --- /dev/null +++ b/premake/projects/SDL2test.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +SDL2test.lua + + This file defines the SDL2test library. It depends on the SDL2main and SDL2 + projects. This library contains a series of test functions used by many of the + other test projects, so it is one of the main dependencies for much of the + test suite. +]] + +SDL_project "SDL2test" + SDL_kind "StaticLib" + SDL_language "C" + SDL_sourcedir "../src" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_paths { "/test/" } \ No newline at end of file diff --git a/premake/projects/accelerometer.lua b/premake/projects/accelerometer.lua new file mode 100755 index 0000000000..bef7942c61 --- /dev/null +++ b/premake/projects/accelerometer.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +accelerometer.lua + + This file defines the accelerometer demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "accelerometer" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/accelerometer.*", "/Info.plist", "/data/ship.bmp", "/data/space.bmp" } \ No newline at end of file diff --git a/premake/projects/checkkeys.lua b/premake/projects/checkkeys.lua new file mode 100755 index 0000000000..a2740ed2c3 --- /dev/null +++ b/premake/projects/checkkeys.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +checkkeys.lua + + This file defines the checkkeys test application. This application will not be + builts on iOS or Cygwin. It depends on the SDL2 and SDL2main projects. +]] + +SDL_project "checkkeys" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/checkkeys.*" } \ No newline at end of file diff --git a/premake/projects/fireworks.lua b/premake/projects/fireworks.lua new file mode 100755 index 0000000000..68dc0ce537 --- /dev/null +++ b/premake/projects/fireworks.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +fireworks.lua + + This file defines the fireworks demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "fireworks" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/fireworks.*", "/Info.plist", "/data/stroke.bmp" } \ No newline at end of file diff --git a/premake/projects/happy.lua b/premake/projects/happy.lua new file mode 100755 index 0000000000..ca9bc319ae --- /dev/null +++ b/premake/projects/happy.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +happy.lua + + This file defines the happy demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "happy" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/happy.*", "/Info.plist", "/data/icon.bmp" } \ No newline at end of file diff --git a/premake/projects/keyboard.lua b/premake/projects/keyboard.lua new file mode 100755 index 0000000000..4dc6ba8270 --- /dev/null +++ b/premake/projects/keyboard.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +keyboard.lua + + This file defines the keyboard demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "keyboard" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/keyboard.*", "/Info.plist", "/data/bitmapfont/kromasky_16x16.bmp" } \ No newline at end of file diff --git a/premake/projects/loopwave.lua b/premake/projects/loopwave.lua new file mode 100755 index 0000000000..1ca1f2da07 --- /dev/null +++ b/premake/projects/loopwave.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +loopwave.lua + + This file defines the loopwave test application. This project will not build + on iOS or Cygwin. It depends on the SDL2 and SDL2main projects. +]] + +SDL_project "loopwave" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "sample.wav" } + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/loopwave.*" } \ No newline at end of file diff --git a/premake/projects/mixer.lua b/premake/projects/mixer.lua new file mode 100755 index 0000000000..cb146a5e69 --- /dev/null +++ b/premake/projects/mixer.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +mixer.lua + + This file defines the mixer demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "mixer" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/mixer.*", "/Info.plist", + "/data/drums/ds_kick_big_amb.wav", "/data/drums/ds_brush_snare.wav", + "/data/drums/ds_loose_skin_mute.wav", "/data/drums/ds_china.wav" } \ No newline at end of file diff --git a/premake/projects/rectangles.lua b/premake/projects/rectangles.lua new file mode 100755 index 0000000000..200ee4bd61 --- /dev/null +++ b/premake/projects/rectangles.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +rectangles.lua + + This file defines the rectangles demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "rectangles" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/rectangles.*", "/Info.plist", } \ No newline at end of file diff --git a/premake/projects/testatomic.lua b/premake/projects/testatomic.lua new file mode 100755 index 0000000000..ac6bff99a8 --- /dev/null +++ b/premake/projects/testatomic.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testatomic.lua + + This file defines the testatomic test project. It depends on the SDL2main and + SDL2 projects. It will not build on iOS. +]] + +SDL_project "testatomic" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testatomic.*" } \ No newline at end of file diff --git a/premake/projects/testaudioinfo.lua b/premake/projects/testaudioinfo.lua new file mode 100755 index 0000000000..a0e8a66c6a --- /dev/null +++ b/premake/projects/testaudioinfo.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testaudioinfo.lua + + This file defines the testaudioinfo test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testaudioinfo" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testaudioinfo.*" } \ No newline at end of file diff --git a/premake/projects/testautomation.lua b/premake/projects/testautomation.lua new file mode 100755 index 0000000000..b654f8a41e --- /dev/null +++ b/premake/projects/testautomation.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testautomation.lua + + This file defines the testautomation test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testautomation" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testautomation*" } \ No newline at end of file diff --git a/premake/projects/testdraw2.lua b/premake/projects/testdraw2.lua new file mode 100755 index 0000000000..51d66cb5e7 --- /dev/null +++ b/premake/projects/testdraw2.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testdraw2.lua + + This file defines the testdraw2 test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testdraw2" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testdraw2.*" } \ No newline at end of file diff --git a/premake/projects/testdrawchessboard.lua b/premake/projects/testdrawchessboard.lua new file mode 100755 index 0000000000..d1f66aeb18 --- /dev/null +++ b/premake/projects/testdrawchessboard.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testchessboard.lua + + This file defines the testchessboard test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testchessboard" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testdrawchessboard.*" } \ No newline at end of file diff --git a/premake/projects/testerror.lua b/premake/projects/testerror.lua new file mode 100755 index 0000000000..5d7e9aafb7 --- /dev/null +++ b/premake/projects/testerror.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testerror.lua + + This file defines the testerror test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testerror" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testerror.*" } \ No newline at end of file diff --git a/premake/projects/testfile.lua b/premake/projects/testfile.lua new file mode 100755 index 0000000000..d878140cb4 --- /dev/null +++ b/premake/projects/testfile.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testfile.lua + + This file defines the testfile test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testfile" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testfile.*" } \ No newline at end of file diff --git a/premake/projects/testfilesystem.lua b/premake/projects/testfilesystem.lua new file mode 100755 index 0000000000..44b28a2b56 --- /dev/null +++ b/premake/projects/testfilesystem.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testfilesystem.lua + + This file defines the testfilesystem test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testfilesystem" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testfilesystem.*" } \ No newline at end of file diff --git a/premake/projects/testgamecontroller.lua b/premake/projects/testgamecontroller.lua new file mode 100755 index 0000000000..ae562591eb --- /dev/null +++ b/premake/projects/testgamecontroller.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testgamecontroller.lua + + This file defines the testgamecontroller test project. It depends on the + SDL2main and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testgamecontroller" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testgamecontroller.*" } \ No newline at end of file diff --git a/premake/projects/testgesture.lua b/premake/projects/testgesture.lua new file mode 100755 index 0000000000..aa2d2370ea --- /dev/null +++ b/premake/projects/testgesture.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testgesture.lua + + This file defines the testgesture test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testgesture" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testgesture.*" } \ No newline at end of file diff --git a/premake/projects/testgl2.lua b/premake/projects/testgl2.lua new file mode 100755 index 0000000000..d8da8f0930 --- /dev/null +++ b/premake/projects/testgl2.lua @@ -0,0 +1,34 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testgl2.lua + + This file defines the testgl2 test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. This project + has a dependency on OpenGL and will specially supply a preprocessor definition + for indicating OpenGL support. +]] + +SDL_project "testgl2" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_defines { "HAVE_OPENGL" } + SDL_dependency "OpenGL" + -- opengl is platform independent + SDL_depfunc "OpenGL" + SDL_files { "/testgl2.*" } \ No newline at end of file diff --git a/premake/projects/testgles.lua b/premake/projects/testgles.lua new file mode 100755 index 0000000000..cfae1daf2a --- /dev/null +++ b/premake/projects/testgles.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testgles.lua + + This file defines the testgles test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testgles" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testgles.*" } \ No newline at end of file diff --git a/premake/projects/testhaptic.lua b/premake/projects/testhaptic.lua new file mode 100755 index 0000000000..992ea7ecb4 --- /dev/null +++ b/premake/projects/testhaptic.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testhaptic.lua + + This file defines the testhaptic test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testhaptic" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testhaptic.*" } \ No newline at end of file diff --git a/premake/projects/testiconv.lua b/premake/projects/testiconv.lua new file mode 100755 index 0000000000..89a5406cb3 --- /dev/null +++ b/premake/projects/testiconv.lua @@ -0,0 +1,29 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testiconv.lua + + This file defines the testiconv test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testiconv" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testiconv.*" } + SDL_copy { "utf8.txt" } \ No newline at end of file diff --git a/premake/projects/testime.lua b/premake/projects/testime.lua new file mode 100755 index 0000000000..1584fbd663 --- /dev/null +++ b/premake/projects/testime.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testime.lua + + This file defines the testime test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testime" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testime.*" } \ No newline at end of file diff --git a/premake/projects/testintersection.lua b/premake/projects/testintersection.lua new file mode 100755 index 0000000000..73cf8e6c79 --- /dev/null +++ b/premake/projects/testintersection.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testintersection.lua + + This file defines the testintersection test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testintersection" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testintersection.*" } \ No newline at end of file diff --git a/premake/projects/testjoystick.lua b/premake/projects/testjoystick.lua new file mode 100755 index 0000000000..7ce8f70acd --- /dev/null +++ b/premake/projects/testjoystick.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testjoystick.lua + + This file defines the testjoystick test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testjoystick" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testjoystick.*" } \ No newline at end of file diff --git a/premake/projects/testkeys.lua b/premake/projects/testkeys.lua new file mode 100755 index 0000000000..d385d23bfa --- /dev/null +++ b/premake/projects/testkeys.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testkeys.lua + + This file defines the testkeys test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testkeys" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testkeys.*" } \ No newline at end of file diff --git a/premake/projects/testloadso.lua b/premake/projects/testloadso.lua new file mode 100755 index 0000000000..5a761147a8 --- /dev/null +++ b/premake/projects/testloadso.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testloadso.lua + + This file defines the testloadso test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testloadso" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testloadso.*" } \ No newline at end of file diff --git a/premake/projects/testlock.lua b/premake/projects/testlock.lua new file mode 100755 index 0000000000..3db3c732dc --- /dev/null +++ b/premake/projects/testlock.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testlock.lua + + This file defines the testlock test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testlock" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testlock.*" } \ No newline at end of file diff --git a/premake/projects/testmessage.lua b/premake/projects/testmessage.lua new file mode 100755 index 0000000000..96c3e85a85 --- /dev/null +++ b/premake/projects/testmessage.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testmessage.lua + + This file defines the testmessage test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testmessage" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testmessage.*" } \ No newline at end of file diff --git a/premake/projects/testmultiaudio.lua b/premake/projects/testmultiaudio.lua new file mode 100755 index 0000000000..6b7ac0ac2e --- /dev/null +++ b/premake/projects/testmultiaudio.lua @@ -0,0 +1,29 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testmultiaudio.lua + + This file defines the testmultiaudio test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testmultiaudio" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testmultiaudio.*" } + SDL_copy { "sample.wav" } \ No newline at end of file diff --git a/premake/projects/testnative.lua b/premake/projects/testnative.lua new file mode 100755 index 0000000000..01f5dbb1e7 --- /dev/null +++ b/premake/projects/testnative.lua @@ -0,0 +1,40 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testnative.lua + + This file defines the testnative test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. This project has + specialized dependencies separate to Windows/MinGW, Mac OS X, and Linux. +]] + +SDL_project "testnative" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testnative.*" } + SDL_copy { "icon.bmp" } + SDL_dependency "windows" + SDL_os "windows|mingw" + SDL_files { "/testnativew32.*" } + SDL_dependency "macosx" + SDL_os "macosx" + SDL_files { "/testnativecocoa.*" } + SDL_dependency "linux" + SDL_os "linux" + SDL_depfunc "X11" + SDL_files { "/testnativex11.*" } \ No newline at end of file diff --git a/premake/projects/testoverlay2.lua b/premake/projects/testoverlay2.lua new file mode 100755 index 0000000000..d2806b3e6b --- /dev/null +++ b/premake/projects/testoverlay2.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testoverlay2.lua + + This file defines the testoverlay2 test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testoverlay2" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "moose.dat" } + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testoverlay2.*" } \ No newline at end of file diff --git a/premake/projects/testplatform.lua b/premake/projects/testplatform.lua new file mode 100755 index 0000000000..ab9e886de9 --- /dev/null +++ b/premake/projects/testplatform.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testplatform.lua + + This file defines the testplatform test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testplatform" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testplatform.*" } \ No newline at end of file diff --git a/premake/projects/testpower.lua b/premake/projects/testpower.lua new file mode 100755 index 0000000000..5be61e9dd0 --- /dev/null +++ b/premake/projects/testpower.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testpower.lua + + This file defines the testpower test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testpower" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testpower.*" } \ No newline at end of file diff --git a/premake/projects/testrelative.lua b/premake/projects/testrelative.lua new file mode 100755 index 0000000000..f04c4c7d1b --- /dev/null +++ b/premake/projects/testrelative.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testrelative.lua + + This file defines the testrelative test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testrelative" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testrelative.*" } \ No newline at end of file diff --git a/premake/projects/testrendercopyex.lua b/premake/projects/testrendercopyex.lua new file mode 100755 index 0000000000..ef1c36ac39 --- /dev/null +++ b/premake/projects/testrendercopyex.lua @@ -0,0 +1,29 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testrendercopyex.lua + + This file defines the testrendercopyx test project. It depends on the + SDL2main, SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testrendercopyex" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testrendercopyex.*" } + SDL_copy { "icon.bmp", "sample.bmp" } \ No newline at end of file diff --git a/premake/projects/testrendertarget.lua b/premake/projects/testrendertarget.lua new file mode 100755 index 0000000000..5dcd71a0c6 --- /dev/null +++ b/premake/projects/testrendertarget.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testrendertarget.lua + + This file defines the testrendertarget test project. It depends on the + SDL2main, SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testrendertarget" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "sample.bmp", "icon.bmp" } + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testrendertarget.*" } \ No newline at end of file diff --git a/premake/projects/testresample.lua b/premake/projects/testresample.lua new file mode 100755 index 0000000000..c42aeaa423 --- /dev/null +++ b/premake/projects/testresample.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testresample.lua + + This file defines the testresample test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testresample" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "sample.wav" } + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testresample.*" } \ No newline at end of file diff --git a/premake/projects/testrumble.lua b/premake/projects/testrumble.lua new file mode 100755 index 0000000000..a4a9f68791 --- /dev/null +++ b/premake/projects/testrumble.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testrumble.lua + + This file defines the testrumble test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testrumble" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testrumble.*" } \ No newline at end of file diff --git a/premake/projects/testscale.lua b/premake/projects/testscale.lua new file mode 100755 index 0000000000..18e1418b25 --- /dev/null +++ b/premake/projects/testscale.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testscale.lua + + This file defines the testscale test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testscale" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "sample.bmp", "icon.bmp" } + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testscale.*" } \ No newline at end of file diff --git a/premake/projects/testsem.lua b/premake/projects/testsem.lua new file mode 100755 index 0000000000..a527991957 --- /dev/null +++ b/premake/projects/testsem.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testsem.lua + + This file defines the testsem test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testsem" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testsem.*" } \ No newline at end of file diff --git a/premake/projects/testshader.lua b/premake/projects/testshader.lua new file mode 100755 index 0000000000..9066578524 --- /dev/null +++ b/premake/projects/testshader.lua @@ -0,0 +1,35 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testshader.lua + + This file defines the testshader test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. This project has a + dependency on OpenGL. +]] + +SDL_project "testshader" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "icon.bmp" } + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_defines { "HAVE_OPENGL" } + SDL_dependency "OpenGL" + -- opengl is platform independent + SDL_depfunc "OpenGL" + SDL_files { "/testshader.*" } \ No newline at end of file diff --git a/premake/projects/testshape.lua b/premake/projects/testshape.lua new file mode 100755 index 0000000000..22e9846c4b --- /dev/null +++ b/premake/projects/testshape.lua @@ -0,0 +1,32 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testshape.lua + + This file defines the testshape test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. This project has a + unique SDL_copy directive, since it copies from a subdirectory and it copies + all the files of a specific type. +]] + +SDL_project "testshape" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "shapes/*.bmp" } + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testshape.*" } \ No newline at end of file diff --git a/premake/projects/testsprite2.lua b/premake/projects/testsprite2.lua new file mode 100755 index 0000000000..b4e09265ad --- /dev/null +++ b/premake/projects/testsprite2.lua @@ -0,0 +1,30 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testsprite2.lua + + This file defines the testsprite2 test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testsprite2" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + -- a list of items to copy from the sourcedir to the destination + SDL_copy { "icon.bmp" } + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testsprite2.*" } \ No newline at end of file diff --git a/premake/projects/testspriteminimal.lua b/premake/projects/testspriteminimal.lua new file mode 100755 index 0000000000..26f891bc9c --- /dev/null +++ b/premake/projects/testspriteminimal.lua @@ -0,0 +1,29 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testspriteminimal.lua + + This file defines the testspriteminimal test project. It depends on the + SDL2main and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testspriteminimal" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testspriteminimal.*" } + SDL_copy { "icon.bmp" } \ No newline at end of file diff --git a/premake/projects/teststreaming.lua b/premake/projects/teststreaming.lua new file mode 100755 index 0000000000..8f76b06f89 --- /dev/null +++ b/premake/projects/teststreaming.lua @@ -0,0 +1,29 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +teststreaming.lua + + This file defines the teststreaming test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "teststreaming" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/teststreaming.*" } + SDL_copy { "moose.dat" } \ No newline at end of file diff --git a/premake/projects/testthread.lua b/premake/projects/testthread.lua new file mode 100755 index 0000000000..43e018f1b7 --- /dev/null +++ b/premake/projects/testthread.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testthread.lua + + This file defines the testthread test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testthread" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testthread.*" } \ No newline at end of file diff --git a/premake/projects/testtimer.lua b/premake/projects/testtimer.lua new file mode 100755 index 0000000000..54e4d50fa3 --- /dev/null +++ b/premake/projects/testtimer.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testtimer.lua + + This file defines the testtimer test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testtimer" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testtimer.*" } \ No newline at end of file diff --git a/premake/projects/testver.lua b/premake/projects/testver.lua new file mode 100755 index 0000000000..4b2152a91d --- /dev/null +++ b/premake/projects/testver.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testver.lua + + This file defines the testver test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "testver" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/testver.*" } \ No newline at end of file diff --git a/premake/projects/testwm2.lua b/premake/projects/testwm2.lua new file mode 100755 index 0000000000..53a4911c09 --- /dev/null +++ b/premake/projects/testwm2.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +testwm2.lua + + This file defines the testwm2 test project. It depends on the SDL2main, + SDL2test, and SDL2 projects. It will not build on iOS or Cygwin. +]] + +SDL_project "testwm2" + SDL_kind "ConsoleApp" + SDL_notos "ios|cygwin" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } + SDL_files { "/testwm2.*" } \ No newline at end of file diff --git a/premake/projects/torturethread.lua b/premake/projects/torturethread.lua new file mode 100755 index 0000000000..3f3e7001dd --- /dev/null +++ b/premake/projects/torturethread.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +torturethread.lua + + This file defines the torturethread test project. It depends on the SDL2main + and SDL2 projects. It will not build on iOS. +]] + +SDL_project "torturethread" + SDL_kind "ConsoleApp" + SDL_notos "ios" + SDL_language "C" + SDL_sourcedir "../test" + SDL_projectLocation "tests" + SDL_projectDependencies { "SDL2main", "SDL2" } + SDL_files { "/torturethread.*" } \ No newline at end of file diff --git a/premake/projects/touch.lua b/premake/projects/touch.lua new file mode 100755 index 0000000000..9868700383 --- /dev/null +++ b/premake/projects/touch.lua @@ -0,0 +1,28 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +touch.lua + + This file defines the touch demo project for iOS. This project is only + compatible on iOS and depends on SDL2. It is a windowed application. +]] + +SDL_project "touch" + SDL_kind "WindowedApp" + SDL_os "ios" + SDL_language "C" + SDL_sourcedir "../Xcode-iOS/Demos" + SDL_projectLocation "Demos" + SDL_projectDependencies { "SDL2" } + SDL_files { "/src/common.*", "/src/touch.*", "/Info.plist", "/data/stroke.bmp" } \ No newline at end of file diff --git a/premake/util/sdl_check_compile.lua b/premake/util/sdl_check_compile.lua new file mode 100755 index 0000000000..3371359cf7 --- /dev/null +++ b/premake/util/sdl_check_compile.lua @@ -0,0 +1,307 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +sdl_check_compile.lua + + This file provides various utility functions which allow the meta-build + system to perform more complex dependency checking than premake initially + allows. This is done using the (currently) GCC toolchain to build generated + C files which try to import certain headers, link to certain functions, link + to certain libraries, or a combination of the above. It supports providing a + custom source to try and build, link, and/or run per the implementation's + choice, so the possibilities are nearly endless with that this system is + capable of, though it could always do with more flexibility. +]] + + +local cxx = "gcc" +local cxx_flags = "" +local cxx_io_flags = "-o premakecheck.o -c premakecheck.c 2> /dev/null" +local cxx_includes = { } + +local link = "gcc" +local link_flags = "" +local link_io_flags = "-o premakecheck.out premakecheck.o" +local link_end = " 2> /dev/null" + +local run = "./premakecheck.out" +local run_flags = "" +local run_io_flags = " > ./premakecheck.stdout" + +local checked_printf = false +local has_printf = false + +-- Set the application used to compile the generated files. +function set_cxx(compiler) + cxx = compiler +end + +-- Set custom flags for the compiler. +function set_cxx_flags(flags) + cxx_flags = flags +end + +-- Include a search directory for libraries. +local function include_library_dir(dir) + link_flags = link_flags .. "-L" .. dir .. " " +end + +-- Include a library to be linked durnig the link step. +local function link_library(lib) + link_flags = link_flags .. "-l" .. lib .. " " +end + +-- Reset the link flags. +local function reset_link_flags() + link_flags = "" +end + +-- Creates the build command line to be executed. +local function build_compile_line() + return cxx .. " " .. cxx_flags .. " " .. cxx_io_flags +end + +-- Creates the link command line to be executed. +local function build_link_line() + return link .. " " .. link_io_flags .. " " .. link_flags .. link_end +end + +-- Create the run line to be executed. +local function build_run_line() + return run .. " " .. run_flags .. " " .. run_io_flags +end + +-- Builds a list of preprocessor include directives for all the include files +-- successfully found so far by these functions, so as to perform automatic +-- feature checking for the clientside code. +local function build_includes() + local includes = "" + for _,v in ipairs(cxx_includes) do + includes = includes .. '#include "' .. v .. '"\n' + end + return includes +end + +-- Cleanup the generated build environment. +local function cleanup_build() + os.remove("./premakecheck.c") + os.remove("./premakecheck.o") + os.remove("./premakecheck.out") + os.remove("./premakecheck.stdout") +end + +-- Check if a source builds, links, and or/runs, where running depends on +-- linking and linking depends on building. The return from this function is +-- a triple, where the first is a boolean value indicating if it successfully +-- was built, the second is a boolean value indicating if it successfully +-- linked, and the third represents nil if it was not run or run correctly, or +-- the output from the program executed (may be empty for no output). +local function check_build_source(source, link, run) + local file = fileopen("./premakecheck.c", "wt") + file:write(source) + file:close() + local result = os.execute(build_compile_line()) + if not link then + cleanup_build() + if result == 0 then + return true, false, nil -- compile, no link, no run + end + return false, false, nil -- no compile, no link, no run + end + -- try linking, too + if result ~= 0 then + -- can't link if it doesn't compile + cleanup_build() + return false, false, nil -- no compile, no link, no run + end + result = os.execute(build_link_line()) + if not run or result ~= 0 then -- have to link to run + cleanup_build() + return true, result == 0, nil -- compile, maybe link, no run + end + result = os.execute(build_run_line()) + local output = readfile("./premakecheck.stdout", "rt") + cleanup_build() + return true, true, output -- compile, link, ran +end + +-- Given C source code, determine whether the source code will compile in the +-- present environment. Returns true if the source was successfully compiled, or +-- false if otherwise. +function check_cxx_source_compiles(source) + local r1, _, __ = check_build_source(source, false, false) + return r1 +end + +-- Given C source code, determine whether the source code can be built into a +-- working executable. That is, it will check if the code both compiles and +-- links. Returns true if the code was successfully built (compiled and linked), +-- or false if otherwise. +function check_cxx_source_builds(source) + local r1, r2, _ = check_build_source(source, true, false) + return r1 and r2 +end + +-- Given C source code, attempt to compile, link, and execute the source code. +-- This function will return two values. The first is a boolean indicating +-- whether the source code was successfully run (meaning it was compiled, built, +-- and ran successfully), and the second value returned is the actual output +-- from running the application, or nil if it did not run correctly or was not +-- built. The output may be an empty string if the code does not print anything +-- to stdout. +function check_cxx_source_runs(source) + local r1, r2, r3 = check_build_source(source, true, true) + return r1 and r2 and (r3 ~= nil), r3 +end + +-- Given a header file, check whether the header file is visible to the compiler +-- in the given environment. Returns a boolean indicating thus. If a header file +-- is found in either of these functions, it will be added to a list of headers +-- that can be used in subsequent dependency checks. +function check_include_file(inc) + return check_include_files(inc) +end + +-- Given a variable list of header files, check whether all of the includes are +-- visible in the given environment. Every file must be included in order for +-- this function to return true. +function check_include_files(...) + local source = "" + for _, v in ipairs{...} do + source = source .. '#include "' .. v .. '"\n' + end + local result = check_cxx_source_compiles(source) + if result then + for _, v in ipairs{...} do + table.insert(cxx_includes, v) + end + end + return result +end + +-- Given a directory, determine whether the directory contains any header files. +-- Unfortunately it does assume the extension is .h, but this can be altered in +-- future versions of this software. The function returns true if the directory +-- (or any of its subdirectories) contain .h files, or false if otherwise (such +-- as if the directory does not exist). +function check_include_directory(incDir) + incDir = incDir:gsub("\\", "/"):gsub("//", "/") + if incDir:sub(#incDir, #incDir) ~= "/" then + incDir = incDir .. "/" + end + return #os.matchfiles(incDir .. "**.h") > 0 +end + +-- Given a variable list of directories, iteratively check if each one contains +-- header files, per the functionality of check_include_directory. This function +-- returns true if and only if every listed directory or its subdirectories +-- contain .h files. +function check_include_directories(...) + for _, v in ipairs{...} do + if not check_include_directory(v) then + return false + end + end + return true +end + +-- Given a function name, attempt to determine whether the function can be found +-- within all of the known include files. Known include files are derived from +-- the check_include_file(s) functions. +function check_function_exists(func) + local source = build_includes() + source = source .. 'int main(int argc, char **argv) {\n' + source = source .. '\tvoid *check = (void *) ' .. func .. ';\n' + source = source .. '\treturn 0;\n' + return check_cxx_source_builds(source .. '}') +end + +-- Given a library, a function that must exist within the library, and an +-- include file prototyping the function, this function determines whether those +-- three variables are able to build a working executable. That is, if a +-- function can be properly linked to using a given library, then the library +-- can be assumed to exist. Returns true if and only if the function was +-- correctly linked to. +function check_library_exists(lib, func, inc) + local source = build_includes() + if inc ~= nil then + source = source .. '#include "' .. inc .. '"\n' + end + source = source .. 'int main(int argc, char **argv) {\n' + source = source .. '\tvoid *check = (void *) ' .. func .. ';\n' + source = source .. '\treturn 0;\n' + if lib ~= nil then + link_library(lib) + end + local result = check_cxx_source_builds(source .. '}') + reset_link_flags() + return result +end + +-- This is a merge variable list version of the check_library_exists function. +-- The thing to note with this function is that it will return true for the +-- first library found to correctly link to the function. This function is used +-- to determine whether the function is found in a list of libraries, not if it +-- is found in every one of the libraries. +function check_library_exists_multiple(func, inc, ...) + for _,v in ipairs{...} do + if check_library_exists(v, func, inc) then + return true + end + end + return false +end + +-- This is a wrapper for the check_library_exists function that will also +-- attempt to locate the library in question, in case it's not in a path the +-- compiler is already aware of. This function has the same return consequences +-- as check_library_exists. +function check_library_exists_lookup(lib, func, inc) + local dir = os.findlib(lib) + if dir == nil then + return false + end + include_library_dir(dir) + return check_library_exists(lib, func, inc) +end + +-- Given a valid C type name, this function generates a program that will print +-- the size of the type using the sizeof operator to the console, then parse the +-- size to indicate the byte size of the type on this platform. The resulting +-- executable is dependent on stdio and the printf function, which it safely +-- checks for behind the scenes. If these dependencies are not found for +-- whatever reason, this function returns 0, otherwise it returns a proper +-- numerical value representing the size of the specified type. +function check_type_size(typename) + if not checked_printf then + checked_printf = true + has_printf = check_include_file("stdio.h") and check_function_exists("printf") + if not has_printf then + print("Warning: cannot check the size of a type without stdio and printf.") + end + end + if not has_printf then + return 0 + end + local source = '#include "stdio.h"\n' + source = source .. 'int main(int argc, char **argv) {\n' + source = source .. '\tprintf("%d", sizeof(' .. typename .. '));\n' + source = source .. '\treturn 0;\n' + local success, result = check_cxx_source_runs(source .. '}'); + if not success then + print("Warning: could not get the size of type: " .. typename) + return 0 + end + return tonumber(result) +end \ No newline at end of file diff --git a/premake/util/sdl_dependency_checkers.lua b/premake/util/sdl_dependency_checkers.lua new file mode 100755 index 0000000000..4f771e2010 --- /dev/null +++ b/premake/util/sdl_dependency_checkers.lua @@ -0,0 +1,204 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +sdl_dependency_checkers.lua + + This script contains a bunch of functions which determine whether certain + dependencies exist on the current platform. These functions are able to use + any and all available utilities for trying to determine both whether the + dependency is available on this platform, and how to build to the dependency. + There are a few limitations with these functions, but many of the limitations + can be mitigated by using the dependency definition functions in the project + definition files. + + Each function in this file, in order to be a valid dependency function, must + return a table with the following entries: + + 'found' = boolean value indicating whether the dependency was found + 'incDirs' = table of include directory strings, or nil if none are needed + 'libDirs' = table of library directory strings, or nil if none are needed + 'libs' = table of libraries to link to, or nil if none are needed + + All functions must be properly registered with the project definition system + in order to be properly referenced by projects. +]] + +-- dependency functions must return the following: +-- table with an element found, incDirs, libDirs, and libs +function openGLDep() + print("Checking OpenGL dependencies...") + if SDL_getos() == "macosx" then + -- mac should always have support for OpenGL... + return { found = true, libs = { "OpenGL.framework" } } + elseif SDL_getos() == "ios" then + --...unless on iOS + print("Desktop OpenGL is not supported on iOS targets.") + return { found = false, libs = { "OpenGL.framework" } } + elseif SDL_getos() == "cygwin" then + print("OpenGL is not currently supported on Cygwin.") + return { found = false, libDirs = { }, libs = { "OpenGL32" } } + end + local libpath = nil + local libname = nil + if SDL_getos() == "windows" or SDL_getos() == "mingw" then + libpath = os.findlib("OpenGL32") + libname = "OpenGL32" + else -- *nix + libpath = os.findlib("libGL") + libname = "GL" + end + local foundLib = libpath ~= nil + -- another way to possibly find the dependency on windows + --if not foundLib then + -- foundLib, libpath = find_dependency_dir_windows(nil, "C:/Program Files (x86);C:/Program Files", "Microsoft SDKs", "Lib") + --end + if not foundLib then return { found = false } end + if SDL_getos() == "mingw" then + libpath = libpath:gsub("\\", "/"):gsub("//", "/") + end + return { found = foundLib, libDirs = { }, libs = { libname } } +end + +function directXDep() + print("Checking DirectX dependencies...") + -- enable this for more correct searching, but it's much slower + local searchPath = nil --os.getenvpath("ProgramFiles", "ProgramFiles(x86)") + local foundInc, incpath = find_dependency_dir_windows("DXSDK_DIR", searchPath, "DirectX", "Include") + local foundLib, libpath = find_dependency_dir_windows("DXSDK_DIR", searchPath, "DirectX", "Lib/x86") + if not foundInc or not foundLib then return { found = false } end + -- XXX: hacked mingw check... + if foundInc and SDL_getos() == "mingw" then + incpath = incpath:gsub("%$%(DXSDK_DIR%)", os.getenv("DXSDK_DIR")):gsub("\\", "/"):gsub("//", "/") + libpath = libpath:gsub("%$%(DXSDK_DIR%)", os.getenv("DXSDK_DIR")):gsub("\\", "/"):gsub("//", "/") + end + if SDL_getos() == "mingw" then + print("DirectX is not currently supported on MinGW targets.") + return { found = false, incDirs = { incpath }, libDirs = { libpath } } + end + if SDL_getos() == "cygwin" then + print("DirectX is not currently supported on Cygwin targets.") + return { found = false, incDirs = { incpath }, libDirs = { libpath } } + end + return { found = true, incDirs = { incpath }, libDirs = { libpath } } +end + +function dbusDep() + print("Checking for D-Bus support...") + if not check_include_directories("/usr/include/dbus-1.0", "/usr/lib/x86_64-linux-gnu/dbus-1.0/include") then + print("Warning: D-Bus unsupported!") + return { found = false } + end + return { found = true, incDirs = { "/usr/include/dbus-1.0", "/usr/lib/x86_64-linux-gnu/dbus-1.0/include" } } +end + +function alsaDep() + print("Checking for ALSA support...") + if not check_include_files("alsa/asoundlib.h") + or os.findlib("asound") == nil + or not check_library_exists_lookup("asound", "snd_pcm_open", "alsa/asoundlib.h") + or not SDL_assertdepfunc("DLOpen") then + print("Warning: ALSA unsupported!") + return { found = false } + end + return { found = true } +end + +function pulseAudioDep() + print("Checking for PulseAudio support...") + if os.findlib("libpulse-simple") == nil + or not SDL_assertdepfunc("DLOpen") then + print("Warning: PulseAudio unsupported!") + return { found = false } + end + return { found = true } +end + +function esdDep() + print("Checking for ESD support...") + if os.findlib("esd") == nil + or not SDL_assertdepfunc("DLOpen") then + print("Warning: ESD unsupported!") + return { found = false } + end + return { found = true } +end + +function nasDep() + print("Checking for NAS support...") + if not check_include_file("audio/audiolib.h") + or not SDL_assertdepfunc("DLOpen") then + print("Warning: NAS unsupported!") + return { found = false } + end + return { found = true } +end + +function ossDep() + print("Checking for OSS support...") + if not check_cxx_source_compiles([[ + #include + int main() { int arg = SNDCTL_DSP_SETFRAGMENT; return 0; }]]) + and not check_cxx_source_compiles([[ + #include + int main() { int arg = SNDCTL_DSP_SETFRAGMENT; return 0; }]]) then + print("Warning: OSS unsupported!") + return { found = false } + end + return { found = true } +end + +function dlOpenDep() + print("Checking for DLOpen support...") + if not check_library_exists_multiple("dlopen", "dlfcn.h", "dl", "tdl") then + print("Warning: DLOpen unsupported!") + return { found = false } + end + return { found = true, libs = { "dl" } } +end + +function x11Dep() + print("Checking for X11 support...") + for _, v in ipairs { "X11", "Xext", "Xcursor", "Xinerama", "Xi", "Xrandr", "Xrender", "Xss", "Xxf86vm" } do + if os.findlib(v) == nil then + print("Warning: X11 unsupported!") + return { found = false } + end + end + if not check_include_files("X11/Xcursor/Xcursor.h", "X11/extensions/Xinerama.h", + "X11/extensions/XInput2.h", "X11/extensions/Xrandr.h", "X11/extensions/Xrender.h", + "X11/extensions/scrnsaver.h", "X11/extensions/shape.h", "X11/Xlib.h", + "X11/extensions/xf86vmode.h") then + print("Warning: X11 unsupported!") + return { found = false } + end + if not SDL_assertdepfunc("DLOpen") then + print("Warning: X11 unsupported!") + return { found = false } + end + -- XXX: shared memory check... + -- there's a LOT more to check to properly configure X11... + return { found = true, libs = { "X11" } } +end + +-- register all of these dependency functions with the definition system +SDL_registerDependencyChecker("OpenGL", openGLDep) +SDL_registerDependencyChecker("DirectX", directXDep) +SDL_registerDependencyChecker("DBus", dbusDep) +SDL_registerDependencyChecker("ALSA", alsaDep) +SDL_registerDependencyChecker("PulseAudio", pulseAudioDep) +SDL_registerDependencyChecker("ESD", esdDep) +SDL_registerDependencyChecker("NAS", nasDep) +SDL_registerDependencyChecker("OSS", ossDep) +SDL_registerDependencyChecker("DLOpen", dlOpenDep) +SDL_registerDependencyChecker("X11", x11Dep) \ No newline at end of file diff --git a/premake/util/sdl_depends.lua b/premake/util/sdl_depends.lua new file mode 100755 index 0000000000..fb25ddb095 --- /dev/null +++ b/premake/util/sdl_depends.lua @@ -0,0 +1,74 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +-- This is kept just for windows because the other platforms use different means +-- for determining dependence or compatibility. + +--[[ +sdl_depends.lua + + This file simply contains a function for determining whether a dependency + exists on the Windows platform, given a possible environmental variable, + delimited search paths, and a main and/or sub-directory paths for more + elaborate pattern matching. +]] + +-- find_dependency_dir_windows(env, main_search_path, main_dir_path) +-- Attempt to resolve a dependency (true or false) folder based on either an +-- environmental variable, start search path, or both. If both are present, +-- the environmental variable will be preferred. If neither are present, this +-- function returns false. +-- +-- Arguments: +-- env The name of the environmental variable to treat as a path +-- main_search_paths Paths to look for the main directory in +-- main_dir_path The a path that must be contained between main_search_path and sub_dir_path +-- sub_dir_path The path of the directories that should exist at the searched path +function find_dependency_dir_windows(env, main_search_paths, main_dir_path, sub_dir_path) + if not os.is("windows") then -- if not windows, then fail + return false + end + if env == nil and (main_search_paths == nil or #main_search_paths == 0) then + return false + end + local env_path = nil + local main_path = nil + if env ~= nil then env_path = os.getenv(env) end + local search_table = { n = 0 } + if main_search_paths ~= nil then + for k,main_search_path in ipairs(explode(main_search_paths, ";")) do + local directories = os.matchdirs(main_search_path .. "/**" .. main_dir_path .. "*") + for k,v in pairs(directories) do + table.insert(search_table, v) + end + end + end + if env_path ~= nil then table.insert(search_table, env_path) end + local search_path = table.concat(search_table, ";") + local result_path = os.dirpathsearch(sub_dir_path, search_path, ";") + if result_path == nil then + return false + end + local found_dir = os.isdir(result_path) + local abs_path = path.getabsolute(result_path) + if found_dir and env_path ~= nil then + abs_path = abs_path:gsub("\\", "/") + env_path = env_path:gsub("\\", "/") + local pos = abs_path:indexOf(env_path) + if pos ~= nil then + abs_path = abs_path:sub(1, pos - 1) .. "$(" .. env .. ")/" .. abs_path:sub(pos + #env_path) + end + end + -- we want the path in terms of '/' + return found_dir, abs_path +end \ No newline at end of file diff --git a/premake/util/sdl_file.lua b/premake/util/sdl_file.lua new file mode 100755 index 0000000000..015897e50a --- /dev/null +++ b/premake/util/sdl_file.lua @@ -0,0 +1,141 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +sdl_file.lua + + This function contains a wrapper for the I/O file operations, providing a few + custom functions which simplify the file I/O process (especially useful for + the vast amount of generation used by the meta-build system). +]] + +-- Given a filename and open mode (look at io.open for more information), opens +-- the file with various contained functions for printing to the file, writing +-- to the file, reading from the file, or closing the file. If the filename is +-- nil, then this will open a file in a special text mode. In that case, the +-- mode is ignored. Returned is an instanced table with all of the +-- aforementioned functions. +-- +-- The print function is associated with textprint/fileprint, the write function +-- with textwrite/filewrite, the read function with fileread, and the close +-- function with textclose/fileclose. +function fileopen(file, mode) + if file == nil then + return { texth = "", print = textprint, write = textwrite, read = nil, close = textclose } + else + return { fileh = io.open(file, mode), print = fileprint, write = filewrite, read = fileread, close = fileclose } + end +end + +-- Given a filename and file mode, reads the entire contents of the file and +-- returns the contents as a string. +function readfile(file, mode) + local file = fileopen(file, mode) + local content = file:read() + file:close() + return content +end + +-- Given a file, the number of tabs to indent, and a line to print, append the +-- line tabbed n times with an appended newline to the end of the input text. +function textprint(f, tabs, line) + for i = 0, tabs - 1, 1 do + f.texth = f.texth .. "\t" + end + f.texth = f.texth .. line .. "\n" +end + +-- Given a file, the number of tabs to indent, and a line to print, append the +-- line tabbed n times with an appended newline to the end of the input file. +function fileprint(f, tabs, line) + for i = 0, tabs - 1, 1 do + f.fileh:write("\t") + end + f.fileh:write(line .. "\n") +end + +-- Given a file and some text, append the text to the end of the input text. +function textwrite(f, text) + f.texth = f.texth .. text +end + +-- Given a file and some text, append the text to the end of the input file. +function filewrite(f, text) + f.fileh:write(text) +end + +-- Given a file, read all the contents of the file and return them as a string. +function fileread(file) + return file.fileh:read("*all") +end + +-- Given a file opened in text mode, return the result of the current file +-- operations as a text string. +function textclose(file) + return file.texth +end + +-- Given a file opened regularly, close the file handle resource, preventing +-- any future I/O operations. +function fileclose(file) + file.fileh:close() +end + +-- Given a source path, builds a table containing all directories and recursive +-- subdirectories which contain files, and returns the table. Each entry in the +-- table will have a '/' at the end of its path, plus they will all be relative +-- to the parent source path. The table will contain a single entry with the +-- value '/' to indicate the source path itself. +function createDirTable(sourcePath) + local dirs = os.matchdirs(sourcePath.."/**") + for k,d in pairs(dirs) do + dirs[k] = string.sub(d, #sourcePath + 1) .. "/" + end + table.insert(dirs, "/") + return dirs +end + +-- This works like os.pathsearch, but for directories. Look at the premake +-- documentation for os.pathsearch for more information. +os.dirpathsearch = function(subdir, path, path_delimiter) + for i,p in ipairs(explode(path, path_delimiter)) do + local needle = p .. "/" .. subdir + if os.isdir(needle) then + return needle + end + end + return nil +end + +-- Given a variable number of environmental variable names, this will join them +-- together based on the current OS path delimeter and quietly ignoring those +-- variables which do not exist on this system. The resulting path is always +-- normalized for Unix-based path separators, regardless of the system. +os.getenvpath = function(...) + local path = "" + local pathDelimeter = ":" + if os.is("windows") then + pathDelimeter = ";" + end + for i,a in ipairs(arg) do + local value = os.getenv(a) + if value then + if #path > 0 then + path = path .. pathDelimeter + end + path = path .. value + end + end + -- normalize path to unix + return path:gsub("\\", "/"):gsub("//", "/") +end \ No newline at end of file diff --git a/premake/util/sdl_gen_config.lua b/premake/util/sdl_gen_config.lua new file mode 100755 index 0000000000..8e59e67d3a --- /dev/null +++ b/premake/util/sdl_gen_config.lua @@ -0,0 +1,68 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +sdl_gen_config.lua + + Given a series of set configuration values from the project definitions, + this file contains a series of functions that generate valid preprocessor + definitions to enable or disable various features of the SDL2 library. These + definitions are pasted into a template SDL config header file, which is then + saved in the local directory and referenced to in generated project files. + + This file depends on sdl_file.lua. +]] + +-- The line that must exist in the template file in order to properly paste +-- the generated definitions. +local searchKey = "/%* Paste generated code here %*/\n" + +local configFile, templateFileContents +local insertLocation + +-- This function begins config header generation given the name of the generated +-- file and the name of the template file to use. +function startGeneration(file, template) + configFile = fileopen(file, "wt") + templateFileContents = readfile(template, "rt") + insertLocation = templateFileContents:find(searchKey) + if insertLocation then + configFile:write(templateFileContents:sub(1, insertLocation - 1)) + end +end + +-- Adds a table of configuration values to the generated file. Each +-- configuration line is wrapped around a preprocessor definition check, so they +-- can be manually overwritten by the developer if necessary. The definition +-- pastes string versions of both the key and the value on the line, where +-- either is allowed to be empty. That means the table stores key-value pairs. +function addConfig(tbl) + -- if no insert location, don't paste anything + if not insertLocation then return end + for k,v in pairs(tbl) do + configFile:print(0, "#ifndef " .. k) + configFile:print(0, "#define " .. tostring(k) .. " " .. tostring(v)) + configFile:print(0, "#endif") + end +end + +-- Finishes the generation and writes the remains of the template file into the +-- generated config file. +function endGeneration() + if insertLocation then + configFile:write(templateFileContents:sub(insertLocation + #searchKey - 2)) + else -- write entire file since nothing is being pasted + configFile:write(templateFileContents) + end + configFile:close() +end \ No newline at end of file diff --git a/premake/util/sdl_projects.lua b/premake/util/sdl_projects.lua new file mode 100755 index 0000000000..0a891700dc --- /dev/null +++ b/premake/util/sdl_projects.lua @@ -0,0 +1,461 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +sdl_projects.lua + + This file contains all the functions which are needed to define any project + within the meta-build system. Many of these functions serve as + pseudo-replacements for many similarly named premake functions, and that is + intentional. Even the implementation of these functions are intended to look + similar to regular premake code. These functions serve to dramatically + simplify the project definition process to just a few lines of code, versus + the many more needed for projects defined purely with premake. + + This approach is possible because this meta-build system adds another layer of + indirection to the premake system, creating a sort of 'meta-meta-build' + system. Nevertheless, there is a lot more flexibility because the meta-build + system itself can be used to check for dependencies in a much more complex way + than premake originally intended. All of the functions useful to the project + definition system are contained in this file and are documented. +]] + +projects = { } + +local currentProject = nil +local currentDep = nil +local nextFuncCompat = true -- by default, unless state otherwise changed +local dependencyFunctions = { } +local dependencyResults = { } -- for when the dependencies are executed + +-- query whether this function is compatible; resets internal state of +-- compatibility to true until SDL_isos is called again +local function oscompat() + local compat = nextFuncCompat + nextFuncCompat = true + return compat +end + +-- determine whether the specific OS name is within a pattern. +local function osmatch(name, pattern) + local checks = pattern:explode('|') + for i,v in pairs(checks) do + if name == v then + return true + end + end + return false +end + +-- Registers a dependency checker function based on a name. This function is +-- used in order to determine compatibility with the current system for a given +-- SDL_dependency. See SDL_depfunc for more information. +-- +-- Specifies a function which will be invoked upon determining whether this +-- dependency is valid for the current system setup (ie, whether the system +-- has the right architecture, operating system, or even if it's installed). +-- The dependency function takes no arguments, but it must return the following +-- values: +-- +-- [includePaths] [libPaths] [inputLibLibraries] +-- +-- The last three are optional, unless foundDep is true. The name should be +-- descriptive of the outside dependency, since it may be shown to the user. +-- This function is intended to be used only after invoking SDL_dependency. +function SDL_registerDependencyChecker(name, func) + dependencyFunctions[name:lower()] = func +end + +-- Initializes the definition of a SDL project given the name of the project. +function SDL_project(name) + if not oscompat() then return end + currentProject = { } + currentProject.name = name + currentProject.compat = true + projects[name] = currentProject + currentProject.dependencyTree = { } + -- stores which dependencies have already been checked on behalf of this + -- project + currentProject.dependencyValues = { } + currentDep = nil +end + +-- Specifies the build kind of the SDL project (e.g. StaticLib, SharedLib, +-- ConsoleApp, etc.), based on premake presets. +function SDL_kind(k) + if not oscompat() then return end + currentProject.kind = k +end + +-- Specifies which platforms this project supports. Note: this list is not the +-- exact list of supported platforms in the generated project. The list of +-- platforms this project supports will be the unique list of all combined +-- projects for this SDL solution. Thus, only one project needs to actually +-- maintain a list. This function is additive, that is, everytime it is called +-- it adds it to a unique list of platforms +function SDL_platforms(tbl) + if not oscompat() then return end + if not currentProject.platforms then + currentProject.platforms = { } + end + for k,v in pairs(tbl) do + currentProject.platforms[#currentProject.platforms + 1] = v + end +end + +-- Specifies the programming language of the project, such as C or C++. +function SDL_language(k) + if not oscompat() then return end + currentProject.language = k +end + +-- Specifies the root directory in which the meta-build system should search for +-- source files, given the paths and files added. +function SDL_sourcedir(src) + if not oscompat() then return end + currentProject.sourcedir = src +end + +-- Specifies the destination location of where the IDE files related to the +-- project should be saved after generation. +function SDL_projectLocation(loc) + if not oscompat() then return end + currentProject.projectLocation = loc +end + +-- Specifies a table of files that should be copied from the source directory +-- to the end result build directory of the binary file. +function SDL_copy(tbl) + if not oscompat() then return end + currentProject.copy = tbl +end + +-- Specifies a list of other SDL projects in this workspace the currently active +-- project is dependent on. If the dependent project is a library, the binary +-- result will be copied from its directory to the build directory of the +-- currently active project automatically. +function SDL_projectDependencies(tbl) + if not oscompat() then return end + currentProject.projectDependencies = tbl +end + +-- Specifies a list of compiler-level preprocessor definitions that should be +-- set in the resulting project upon compile time. This adds to the current +-- table of defines. +function SDL_defines(tbl) + if not oscompat() then return end + if not currentProject.defines then + currentProject.defines = { } + end + for k,v in pairs(tbl) do + currentProject.defines[#currentProject.defines + 1] = v + end +end + +-- Initializes an outside dependency this project has, such as X11 or DirectX. +-- This function, once invoked, may change the behavior of other SDL +-- project-related functions, so be sure to be familiar with all the functions +-- and any specified behavior when used around SDL_dependency. +function SDL_dependency(name) + if not oscompat() then return end + currentDep = { nil, compat = true, } + currentDep.name = name + table.insert(currentProject.dependencyTree, currentDep) +end + +-- Special function for getting the current OS. This factors in whether the +-- metabuild system is in MinGW, Cygwin, or iOS mode. +function SDL_getos() + if _OPTIONS["ios"] ~= nil then + return "ios" + elseif _OPTIONS["mingw"] ~= nil then + return "mingw" + elseif _OPTIONS["cygwin"] ~= nil then + return "cygwin" + end + return os.get() +end + +-- Specifies which operating system this dependency targets, such as windows or +-- macosx, as per premake presets. +function SDL_os(name) + if not oscompat() then return end + if not currentProject then return end + if not currentDep then + currentProject.opsys = name + currentProject.compat = osmatch(SDL_getos(), name) + else + currentDep.opsys = name + currentDep.compat = osmatch(SDL_getos(), name) + end +end + +-- Specifies which operating system this dependency does not targets. This is +-- for nearly platform-independent projects or dependencies that will not work +-- on specific systems, such as ios. +function SDL_notos(name) + if not oscompat() then return end + if not currentProject then return end + if not currentDep then + currentProject.opsys = "~" .. name + currentProject.compat = not osmatch(SDL_getos(), name) + else + currentDep.opsys = "~" .. name + currentDep.compat = not osmatch(SDL_getos(), name) + end +end + +-- Changes the internal state of function compatibility based on whether the +-- current os is the one expected; the next function will be affected by this +-- change, but no others. The name can be a pattern using '|' to separate +-- multiple operating systems, such as: +-- SDL_isos("windows|macosx") +function SDL_isos(name) + nextFuncCompat = osmatch(SDL_getos(), name) +end + +-- Same as SDL_isos, except it negates the internal state for exclusion +-- checking. +function SDL_isnotos(name) + nextFuncCompat = not osmatch(SDL_getos(), name) +end + +-- Changes the internal state of function compatibility based on whether the +-- current system is running a 64bit Operating System and architecture; the +-- next function will be affected by this change, but none thereafter. +function SDL_is64bit() + nextFuncCompat = os.is64bit() +end + +-- Same as SDL_is64bit, except it negates the internal state for +-- exclusion checking. +function SDL_isnot64bit() + nextFuncCompat = not os.is64bit() +end + +-- Look at SDL_depfunc and SDL_notdepfunc for detailed information about this +-- function. +local function SDL_depfunc0(funcname, exclude) + if not oscompat() then return end + if not currentDep.compat then return end + local force = _OPTIONS[funcname:lower()] ~= nil + local func = dependencyFunctions[funcname:lower()] + if not func then + print("Warning: could not find dependency function named: " .. funcname) + currentDep.compat = false + return + end + local cachedFuncResults = dependencyResults[funcname:lower()] + local depFound, depInc, depLib, depInput + if cachedFuncResults then + depFound = cachedFuncResults.depFound + -- just skip the rest of the function, the user was already warned + -- exclude mode varies the compatibility slightly + if force then + depFound = true + end + if not depFound and not exclude then + currentDep.compat = false + return + elseif depFound and exclude then + currentDep.compat = false + return + end + depInc = cachedFuncResults.depInc + depLib = cachedFuncResults.depLib + depInput = cachedFuncResults.depInput + else + local result = func() + if result.found then + depFound = result.found + else + depFound = false + end + if force then + depFound = true + end + if result.incDirs then + depInc = result.incDirs + else + depInc = { } + end + if result.libDirs then + depLib = result.libDirs + else + depLib = { } + end + if result.libs then + depInput = result.libs + else + depInput = { } + end + cachedFuncResults = { } + cachedFuncResults.depFound = depFound + cachedFuncResults.depInc = depInc + cachedFuncResults.depLib = depLib + cachedFuncResults.depInput = depInput + dependencyResults[funcname:lower()] = cachedFuncResults + if not depFound and not exclude then + currentDep.compat = false + return + elseif depFound and exclude then + currentDep.compat = false + return + end + end + -- we only want to embed this dependency if we're not in exclude mode + if depFound and not exclude then + local dependency = { } + if not currentDep.includes then + currentDep.includes = { } + end + for k,v in pairs(depInc) do + currentDep.includes[v] = v + end + if not currentDep.libs then + currentDep.libs = { } + end + for k,v in pairs(depLib) do + currentDep.libs[v] = v + end + if not currentDep.links then + currentDep.links = { } + end + for k,v in pairs(depInput) do + currentDep.links[v] = v + end + else -- end of dependency found check + -- if we are not excluding this dependency, then print a warning + -- if not found + if not exclude then + print("Warning: could not find dependency: " .. funcname) + end + currentDep.compat = exclude + end +end + +-- Given a dependency name, this function will register the dependency and try +-- to pair it with a dependency function that was registered through +-- SDL_registerDependencyChecker. If the function is not found, compatibility +-- will automatically be dropped for this project and a warning will be printed +-- to the standard output. Otherwise, the dependency function will be invoked +-- and compatibility for the project will be updated. If the project currently +-- is not compatible based on the Operating System or previous dependency, the +-- dependency function will not be checked at all and this function will +-- silently return. +function SDL_depfunc(funcname) + SDL_depfunc0(funcname, false) +end + +-- Same as SDL_depfunc, except this forces dependency on the function failing, +-- rather than succeeding. This is useful for situations where two different +-- files are required based on whether a dependency is found (such as the +-- joystick and haptic systems). +function SDL_notdepfunc(funcname) + SDL_depfunc0(funcname, true) +end + +-- Determines whether the specified dependency is supported without actually +-- executing the dependency or changing the internal states of the current +-- project or dependency definition. This function will only work if the +-- dependency has already been checked and its results cached within the +-- definition system. This function returns true if the dependency is known to +-- be supported, or false if otherwise (or if it cannot be known at this time). +function SDL_assertdepfunc(funcname) + -- if forced, then of course it's on + if _OPTIONS[funcname:lower()] then + return true + end + local results = dependencyResults[funcname:lower()] + if not results or not results.depFound then + -- either not excuted yet, doesn't exist, or wasn't found + print("Warning: required dependency not found: " .. funcname .. + ". Make sure your dependencies are in a logical order.") + return false + end + return true +end + +-- Returns a list of currently registered dependencies. The values within the +-- table will be sorted, but their names will be lowercased due to internal +-- handling of case-insensitive dependency names. +function SDL_getDependencies() + local deps = { } + for k,_ in pairs(dependencyFunctions) do + deps[#deps + 1] = k + end + table.sort(deps) + return deps +end + +-- Specifies a list of libraries that should always be linked to in this +-- project, regardless of a dependency function. If after a dependency +-- declaration, these files will only be included in the project if the +-- dependency is compatible with the native system, given SDL_os usage and any +-- sort of custom dependency function. +function SDL_links(tbl) + if not oscompat() then return end + if currentDep and not currentDep.compat then return end + if currentProject.customLinks == nil then + currentProject.customLinks = { } + end + for i,v in ipairs(tbl) do + currentProject.customLinks[#currentProject.customLinks + 1] = v + end +end + +-- Specifies a list of configuration values that are assigned as preprocessor +-- definitions in the SDL configuration header, used to globally configure +-- features during the building of the SDL library. If after a dependency +-- declaration, these files will only be included in the project if the +-- dependency is compatible with the native system, given SDL_os usage and any +-- sort of custom dependency function. +function SDL_config(tbl) + if not oscompat() then return end + if not currentDep then + currentProject.config = tbl + return + end + if not currentDep.compat then return end + currentDep.config = tbl +end + +-- Specifies a list of paths where all .c, .h, and .m files should be included +-- for compiling, where the source directory is the root. If after a dependency +-- declaration, these files will only be included in the project if the +-- dependency is compatible with the native system, given SDL_os usage and any +-- sort of custom dependency function. +function SDL_paths(tbl) + if not oscompat() then return end + if not currentDep then + currentProject.paths = tbl + return + end + if not currentDep.compat then return end + currentDep.paths = tbl +end + +-- Specifies a list of files found within the source directory that this project +-- should include during compile time. If after a dependency declaration, these +-- files will only be included in the project if the dependency is compatible +-- with the native system, given SDL_os usage and any sort of custom dependency +-- function. +function SDL_files(tbl) + if not oscompat() then return end + if not currentDep then + currentProject.files = tbl + return + end + if not currentDep.compat then return end + currentDep.files = tbl +end \ No newline at end of file diff --git a/premake/util/sdl_string.lua b/premake/util/sdl_string.lua new file mode 100755 index 0000000000..d05e5a7f23 --- /dev/null +++ b/premake/util/sdl_string.lua @@ -0,0 +1,103 @@ +-- Copyright (C) 1997-2011 Sam Lantinga +-- +-- This software is provided 'as-is', without any express or implied +-- warranty. In no event will the authors be held liable for any damages +-- arising from the use of this software. +-- +-- Permission is granted to anyone to use this software for any purpose, +-- including commercial applications, and to alter it and redistribute it +-- freely. +-- +-- Meta-build system using premake created and maintained by +-- Benjamin Henning + +--[[ +sdl_string.lua + + Contains a few convenient string utility functions which are not supported in + Lua or not supported as intended. +]] + +-- Performs a non-pattern based substring search of one string in another +-- string. It's of O(n^2) complexity. It returns nil if the result cannot be +-- found, otherwise it returns the starting index of the first found occurrence. +string.indexOf = function(str, substr) + local pos = 1 + local i = 1 + for i = 1, str:len(), 1 do + if str:sub(i, i) == substr:sub(pos, pos) then + -- have we matched the complete string? + if pos == substr:len() then + return i - pos + 1-- starting pos + end + -- matched character...keep going + pos = pos + 1 + else + -- restart, no match + pos = 0 + end + end + if pos == substr:len() then + return i - pos + 1 + end + return nil -- no match +end + +-- This is a public-access version of the explode function defined below. +function explode(str, delim) + return str:explode(delim) +end + +-- Explodes a string into an array of elements, separated by a non-pattern +-- delimiter. This function is part of the string table, allowing for a +-- member-based invocation for strings. +string.explode = function(str, delim) + local exploded = { } + local needle = string.find(str, delim) + while needle ~= nil do + table.insert(exploded, string.sub(str, 0, needle - 1)) + str = string.sub(str, needle + 1) + needle = string.find(str, delim) + end + table.insert(exploded, str) + return exploded +end + +-- Similar to table.concat, except it supports more advanced token pasting. This +-- function is vastly used by the main meta-build script (premake4.lua) to +-- generate all the main lines of code for various tables that need to be in the +-- generated lua file. +-- - tbl: table of values to implode into a string +-- - prefix: string to paste before entire result +-- - pre: string to always paste before each entry in table +-- - post: string to always paste after each entry in table +-- - join: string to paste between entries (inclusive) +-- - suffix: string to paste after entire result +-- Returns the imploded string. +function implode(tbl, prefix, pre, post, join, suffix) + local result = "" + -- not the most efficient way to do this, but... + local itbl = { } + for k,v in pairs(tbl) do + itbl[#itbl + 1] = v + end + for i = 1, #itbl, 1 do + if pre ~= nil then + result = result .. pre + end + result = result .. itbl[i] + if post ~= nil then + result = result .. post + end + if i ~= #itbl then + result = result .. join + end + end + if prefix ~= nil then + result = prefix .. result + end + if suffix ~= nil then + result = result .. suffix + end + return result +end \ No newline at end of file From 627e35fd44a591cc4557f3f5e2e8ce5ee3a8a1d8 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:36:41 +0100 Subject: [PATCH 034/402] Corrected source comment. --- src/core/android/SDL_android.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 4c47ae558d..f36831cce9 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -162,7 +162,7 @@ void Java_org_libsdl_app_SDLActivity_onNativePadUp( Android_OnPadUp(padId, keycode); } -// Padup +/* Joy */ void Java_org_libsdl_app_SDLActivity_onNativeJoy( JNIEnv* env, jclass jcls, jint joyId, jint axis, jfloat value) From d3b44da74f02a7f2d75f905b5ead63b84bf67c72 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:39:38 +0100 Subject: [PATCH 035/402] Fixed implicit function declarations by including the missing header. --- src/core/android/SDL_android.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index f36831cce9..6feb48b1e8 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -34,6 +34,7 @@ #include "../../video/android/SDL_androidtouch.h" #include "../../video/android/SDL_androidvideo.h" #include "../../video/android/SDL_androidwindow.h" +#include "../../joystick/android/SDL_sysjoystick.h" #include #include From f0c5b0b9d25812fe057b39d2d2161e9117e27314 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:42:41 +0100 Subject: [PATCH 036/402] Removed unused local variable to fix warning. --- src/joystick/android/SDL_sysjoystick.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 0c7f81001a..7b7799e764 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -48,7 +48,6 @@ static SDL_bool SYS_accelAsJoy; int keycode_to_SDL(int keycode) { - int final = 0; /* D-Pad key codes (API 1): * KEYCODE_DPAD_UP=19, KEYCODE_DPAD_DOWN * KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHT, KEYCODE_DPAD_CENTER From 6b320d26883235caee8e082cb0ae274243ca6642 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:44:50 +0100 Subject: [PATCH 037/402] Changed function to be static. The function keycode_to_SDL() is only used in this file. --- src/joystick/android/SDL_sysjoystick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 7b7799e764..4fda0f452c 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -45,7 +45,7 @@ static SDL_bool SYS_accelAsJoy; /* Function to convert Android keyCodes into SDL ones. * This code manipulation is done to get a sequential list of codes. */ -int +static int keycode_to_SDL(int keycode) { /* D-Pad key codes (API 1): From 9ed87b0cac7b67edd28909120052a8a77d62d02a Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:47:05 +0100 Subject: [PATCH 038/402] Changed function to return -1 through SDL_Error() instead of plain -1. --- src/joystick/android/SDL_sysjoystick.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 4fda0f452c..012512991e 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -170,8 +170,7 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index) SYS_Joysticks[device_index] = joystick; return 0; } else { - SDL_SetError("No joystick available with that index"); - return (-1); + return SDL_SetError("No joystick available with that index"); } } From 946ec92eafe1080f85bc0c994169b92611ead4d9 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:50:37 +0100 Subject: [PATCH 039/402] Added a new unused key code from Android 4.4 (API 19). --- src/video/android/SDL_androidkeyboard.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video/android/SDL_androidkeyboard.c b/src/video/android/SDL_androidkeyboard.c index 5381de64d4..97152b503f 100644 --- a/src/video/android/SDL_androidkeyboard.c +++ b/src/video/android/SDL_androidkeyboard.c @@ -262,6 +262,7 @@ static SDL_Scancode Android_Keycodes[] = { SDL_SCANCODE_UNKNOWN, /* AKEYCODE_ASSIST */ SDL_SCANCODE_BRIGHTNESSDOWN, /* AKEYCODE_BRIGHTNESS_DOWN */ SDL_SCANCODE_BRIGHTNESSUP, /* AKEYCODE_BRIGHTNESS_UP */ + SDL_SCANCODE_UNKNOWN, /* AKEYCODE_MEDIA_AUDIO_TRACK */ }; static SDL_Scancode From fdc591b4eef140c8897634acfe679b1fd31f7538 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 14:58:48 +0100 Subject: [PATCH 040/402] Moved two function calls so they are only called if needed. If the MotionEvent is not from joystick the return values are not needed. --- android-project/src/org/libsdl/app/SDLActivity.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 773ec43bc7..426dd971fc 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -890,10 +890,9 @@ class SDLGenericMotionHandler_API12 extends Activity implements View.OnGenericMo // We only have joysticks yet @Override public boolean onGenericMotion(View v, MotionEvent event) { - int actionPointerIndex = event.getActionIndex(); - int action = event.getActionMasked(); - if ( (event.getSource() & InputDevice.SOURCE_JOYSTICK) != 0) { + int actionPointerIndex = event.getActionIndex(); + int action = event.getActionMasked(); switch(action) { case MotionEvent.ACTION_MOVE: int id = SDLActivity.getJoyId( event.getDeviceId() ); @@ -906,4 +905,4 @@ public boolean onGenericMotion(View v, MotionEvent event) { } return true; } -} \ No newline at end of file +} From eb4af1336e7ee721bbef5bd0a0642c08b223470a Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 15:04:58 +0100 Subject: [PATCH 041/402] Changed motion listener implementation not to inherit from Activity class. --- android-project/src/org/libsdl/app/SDLActivity.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 426dd971fc..bd96e4de80 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -885,7 +885,7 @@ public int getJoyId(int devId) { } -class SDLGenericMotionHandler_API12 extends Activity implements View.OnGenericMotionListener { +class SDLGenericMotionHandler_API12 implements View.OnGenericMotionListener { // Generic Motion (mouse hover, joystick...) events go here // We only have joysticks yet @Override From 38f9a311d22f75ce7636f536aa145591feb58483 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 17:35:07 +0100 Subject: [PATCH 042/402] Added missing @Override annotations in Java file. --- android-project/src/org/libsdl/app/SDLActivity.java | 4 ++++ 1 file changed, 4 insertions(+) mode change 100644 => 100755 android-project/src/org/libsdl/app/SDLActivity.java diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java old mode 100644 new mode 100755 index bd96e4de80..915483b104 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -853,22 +853,26 @@ private void createJoystickList() { } } + @Override public int getNumJoysticks() { createJoystickList(); return mJoyIdList.size(); } + @Override public String getJoystickName(int joy) { createJoystickList(); return InputDevice.getDevice(mJoyIdList.get(joy)).getName(); } + @Override public int getJoystickAxes(int joy) { createJoystickList(); return InputDevice.getDevice(mJoyIdList.get(joy)).getMotionRanges().size(); } + @Override public int getJoyId(int devId) { int i=0; From 13d34fae4ca6e75d72a5a79e5b755f21595a5b80 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 17:38:03 +0100 Subject: [PATCH 043/402] Removed not needed imports from Java file. --- android-project/src/org/libsdl/app/SDLActivity.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 915483b104..8fa0cd8fd4 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -1,5 +1,6 @@ package org.libsdl.app; +import java.util.ArrayList; import java.util.Arrays; import android.app.*; @@ -16,10 +17,6 @@ import android.media.*; import android.hardware.*; -import java.lang.*; -import java.util.List; -import java.util.ArrayList; - /** SDL Activity @@ -836,7 +833,7 @@ public int getJoyId(int devId) { /* Actual joystick functionality available for API >= 12 devices */ class SDLJoystickHandler_API12 extends SDLJoystickHandler { - private List mJoyIdList; + private ArrayList mJoyIdList; // Create a list of valid ID's the first time this function is called private void createJoystickList() { From b8e0f654beac81f6d20829fadc99464fe945d9e0 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 17:40:26 +0100 Subject: [PATCH 044/402] Renamed a class in Java file for consistency. --- android-project/src/org/libsdl/app/SDLActivity.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 8fa0cd8fd4..104abe8ad1 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -483,7 +483,7 @@ public SDLSurface(Context context) { mSensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); if(Build.VERSION.SDK_INT >= 12) { - setOnGenericMotionListener(new SDLGenericMotionHandler_API12()); + setOnGenericMotionListener(new SDLGenericMotionListener_API12()); } // Some arbitrary defaults to avoid a potential division by zero @@ -886,7 +886,7 @@ public int getJoyId(int devId) { } -class SDLGenericMotionHandler_API12 implements View.OnGenericMotionListener { +class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener { // Generic Motion (mouse hover, joystick...) events go here // We only have joysticks yet @Override From df24d15d7c127c447ba18ad808654d01efcfef2a Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 10 Nov 2013 17:42:01 +0100 Subject: [PATCH 045/402] Replaced implicit boxing with explicit boxing in Java file. --- android-project/src/org/libsdl/app/SDLActivity.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 104abe8ad1..61ed7ed3d8 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -845,7 +845,7 @@ private void createJoystickList() { int[] deviceIds = InputDevice.getDeviceIds(); for(int i=0; i Date: Sun, 10 Nov 2013 17:44:51 +0100 Subject: [PATCH 046/402] Replaced search loop with indexOf() in Java file. --- android-project/src/org/libsdl/app/SDLActivity.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 61ed7ed3d8..e55b872109 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -853,7 +853,6 @@ private void createJoystickList() { @Override public int getNumJoysticks() { createJoystickList(); - return mJoyIdList.size(); } @@ -871,17 +870,8 @@ public int getJoystickAxes(int joy) { @Override public int getJoyId(int devId) { - int i=0; - createJoystickList(); - - for(i=0; i Date: Sun, 10 Nov 2013 17:50:40 +0100 Subject: [PATCH 047/402] Fixed joystick crash on Android if joystick subsystem not initialized. --- .../src/org/libsdl/app/SDLActivity.java | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index e55b872109..60b6aa0d6b 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -433,6 +433,10 @@ public static int getJoystickAxes(int joy) { return mJoystickHandler.getJoystickAxes(joy); } + /** + * @param devId the device id to get opened joystick id for. + * @return joystick id for device id or -1 if there is none. + */ public static int getJoyId(int devId) { return mJoystickHandler.getJoyId(devId); } @@ -606,11 +610,14 @@ else if (event.getAction() == KeyEvent.ACTION_UP) { } else if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ (event.getSource() & InputDevice.SOURCE_DPAD) != 0 ) { int id = SDLActivity.getJoyId( event.getDeviceId() ); - if (event.getAction() == KeyEvent.ACTION_DOWN) { - SDLActivity.onNativePadDown(id, keyCode); - } else if (event.getAction() == KeyEvent.ACTION_UP) { - SDLActivity.onNativePadUp(id, keyCode); + if (id != -1) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + SDLActivity.onNativePadDown(id, keyCode); + } else if (event.getAction() == KeyEvent.ACTION_UP) { + SDLActivity.onNativePadUp(id, keyCode); + } } + return true; } return false; @@ -826,8 +833,12 @@ public int getJoystickAxes(int joy) { return 0; } + /** + * @param devId the device id to get opened joystick id for. + * @return joystick id for device id or -1 if there is none. + */ public int getJoyId(int devId) { - return 0; + return -1; } } @@ -887,10 +898,12 @@ public boolean onGenericMotion(View v, MotionEvent event) { switch(action) { case MotionEvent.ACTION_MOVE: int id = SDLActivity.getJoyId( event.getDeviceId() ); - float x = event.getAxisValue(MotionEvent.AXIS_X, actionPointerIndex); - float y = event.getAxisValue(MotionEvent.AXIS_Y, actionPointerIndex); - SDLActivity.onNativeJoy(id, 0, x); - SDLActivity.onNativeJoy(id, 1, y); + if (id != -1) { + float x = event.getAxisValue(MotionEvent.AXIS_X, actionPointerIndex); + float y = event.getAxisValue(MotionEvent.AXIS_Y, actionPointerIndex); + SDLActivity.onNativeJoy(id, 0, x); + SDLActivity.onNativeJoy(id, 1, y); + } break; } } From 6456f0e48c6081606d2ec207829be90399cb12bb Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 11:51:06 -0800 Subject: [PATCH 048/402] Added project files for Visual Studio 2013 Added /arch:SSE code generation option to prevent SSE2 floating point functions from being implicitly called (which aren't linked in SDL) --- VisualC/SDL/SDL_VS2013.vcxproj | 472 ++++++++++++++++++ VisualC/SDL_VS2013.sln | 278 +++++++++++ VisualC/SDLmain/SDLmain_VS2013.vcxproj | 168 +++++++ VisualC/SDLtest/SDLtest_VS2013.vcxproj | 196 ++++++++ .../tests/checkkeys/checkkeys_VS2013.vcxproj | 231 +++++++++ .../tests/loopwave/loopwave_VS2013.vcxproj | 235 +++++++++ .../testatomic/testatomic_VS2013.vcxproj | 235 +++++++++ .../testautomation_vs2013.vcxproj | 213 ++++++++ .../tests/testdraw2/testdraw2_VS2013.vcxproj | 232 +++++++++ .../tests/testfile/testfile_VS2013.vcxproj | 231 +++++++++ .../testgamecontroller_VS2013.vcxproj | 231 +++++++++ .../testgesture/testgesture_VS2013.vcxproj | 231 +++++++++ VisualC/tests/testgl2/testgl2_VS2013.vcxproj | 236 +++++++++ .../testjoystick/testjoystick_VS2013.vcxproj | 231 +++++++++ .../testoverlay2/testoverlay2_VS2013.vcxproj | 235 +++++++++ .../testplatform/testplatform_VS2013.vcxproj | 249 +++++++++ .../tests/testpower/testpower_VS2013.vcxproj | 231 +++++++++ .../testrendertarget_VS2013.vcxproj | 245 +++++++++ .../tests/testscale/testscale_VS2013.vcxproj | 246 +++++++++ .../tests/testshape/testshape_VS2013.vcxproj | 231 +++++++++ .../testsprite2/testsprite2_VS2013.vcxproj | 236 +++++++++ 21 files changed, 5093 insertions(+) create mode 100644 VisualC/SDL/SDL_VS2013.vcxproj create mode 100644 VisualC/SDL_VS2013.sln create mode 100644 VisualC/SDLmain/SDLmain_VS2013.vcxproj create mode 100644 VisualC/SDLtest/SDLtest_VS2013.vcxproj create mode 100644 VisualC/tests/checkkeys/checkkeys_VS2013.vcxproj create mode 100644 VisualC/tests/loopwave/loopwave_VS2013.vcxproj create mode 100644 VisualC/tests/testatomic/testatomic_VS2013.vcxproj create mode 100644 VisualC/tests/testautomation/testautomation_vs2013.vcxproj create mode 100644 VisualC/tests/testdraw2/testdraw2_VS2013.vcxproj create mode 100644 VisualC/tests/testfile/testfile_VS2013.vcxproj create mode 100644 VisualC/tests/testgamecontroller/testgamecontroller_VS2013.vcxproj create mode 100644 VisualC/tests/testgesture/testgesture_VS2013.vcxproj create mode 100644 VisualC/tests/testgl2/testgl2_VS2013.vcxproj create mode 100644 VisualC/tests/testjoystick/testjoystick_VS2013.vcxproj create mode 100644 VisualC/tests/testoverlay2/testoverlay2_VS2013.vcxproj create mode 100644 VisualC/tests/testplatform/testplatform_VS2013.vcxproj create mode 100644 VisualC/tests/testpower/testpower_VS2013.vcxproj create mode 100644 VisualC/tests/testrendertarget/testrendertarget_VS2013.vcxproj create mode 100644 VisualC/tests/testscale/testscale_VS2013.vcxproj create mode 100644 VisualC/tests/testshape/testshape_VS2013.vcxproj create mode 100644 VisualC/tests/testsprite2/testsprite2_VS2013.vcxproj diff --git a/VisualC/SDL/SDL_VS2013.vcxproj b/VisualC/SDL/SDL_VS2013.vcxproj new file mode 100644 index 0000000000..2f961674e7 --- /dev/null +++ b/VisualC/SDL/SDL_VS2013.vcxproj @@ -0,0 +1,472 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SDL2 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + SDL + + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + false + + + Level3 + true + EditAndContinue + Default + false + StreamingSIMDExtensions + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + true + Windows + false + $(DXSDK_DIR)\lib\x86 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + Disabled + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + false + + + Level3 + EditAndContinue + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + true + Windows + false + $(DXSDK_DIR)\lib\x64 + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + false + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + + + Level3 + true + Default + false + ProgramDatabase + StreamingSIMDExtensions + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + $(DXSDK_DIR)\lib\x86 + true + true + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + OnlyExplicitInline + false + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + + + Level3 + false + ProgramDatabase + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + $(DXSDK_DIR)\lib\x64 + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/SDL_VS2013.sln b/VisualC/SDL_VS2013.sln new file mode 100644 index 0000000000..3ccb1cca44 --- /dev/null +++ b/VisualC/SDL_VS2013.sln @@ -0,0 +1,278 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2013.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "SDLmain\SDLmain_VS2013.vcxproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{CE748C1F-3C21-4825-AA6A-F895A023F7E7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loopwave", "tests\loopwave\loopwave_VS2013.vcxproj", "{AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplatform", "tests\testplatform\testplatform_VS2013.vcxproj", "{26932B24-EFC6-4E3A-B277-ED653DA37968}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "tests\testfile\testfile_VS2013.vcxproj", "{CAE4F1D0-314F-4B10-805B-0EFD670133A0}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl2", "tests\testgl2\testgl2_VS2013.vcxproj", "{8B5CFB38-CCBA-40A8-AD7A-89C57B070884}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "tests\checkkeys\checkkeys_VS2013.vcxproj", "{26828762-C95D-4637-9CB1-7F0979523813}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsprite2", "tests\testsprite2\testsprite2_VS2013.vcxproj", "{40FB7794-D3C3-4CFE-BCF4-A80C96635682}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshape", "tests\testshape\testshape_VS2013.vcxproj", "{EDEA9D00-AF64-45DE-8F60-5957048F2F0F}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdraw2", "tests\testdraw2\testdraw2_VS2013.vcxproj", "{8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testpower", "tests\testpower\testpower_VS2013.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2test", "SDLtest\SDLtest_VS2013.vcxproj", "{DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testautomation", "tests\testautomation\testautomation_vs2013.vcxproj", "{FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testatomic", "tests\testatomic\testatomic_VS2013.vcxproj", "{2271060E-98B4-4596-8172-A041E4B2EC7A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testscale", "tests\testscale\testscale_VS2013.vcxproj", "{E7A6C41C-E059-4C9C-8CCC-73586A540B62}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendertarget", "tests\testrendertarget\testrendertarget_VS2013.vcxproj", "{43A06713-A52D-4008-AD7E-A69DF3FCFFA8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgamecontroller", "tests\testgamecontroller\testgamecontroller_VS2013.vcxproj", "{55812185-D13C-4022-9C81-32E0F4A08336}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgesture", "tests\testgesture\testgesture_VS2013.vcxproj", "{55812185-D13C-4022-9C81-32E0F4A08996}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testjoystick\testjoystick_VS2013.vcxproj", "{55812185-D13C-4022-9C81-32E0F4A08BCC}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.ActiveCfg = Debug|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.Build.0 = Debug|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.ActiveCfg = Debug|x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.Build.0 = Debug|x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.ActiveCfg = Release|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.Build.0 = Release|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.ActiveCfg = Release|x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.Build.0 = Release|x64 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|Win32.ActiveCfg = Debug|Win32 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|Win32.Build.0 = Debug|Win32 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|x64.ActiveCfg = Debug|x64 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|x64.Build.0 = Debug|x64 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|Win32.ActiveCfg = Release|Win32 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|Win32.Build.0 = Release|Win32 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|x64.ActiveCfg = Release|x64 + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|x64.Build.0 = Release|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|Win32.ActiveCfg = Debug|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|Win32.Build.0 = Debug|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|x64.ActiveCfg = Debug|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|x64.Build.0 = Debug|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|Win32.ActiveCfg = Release|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|Win32.Build.0 = Release|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|x64.ActiveCfg = Release|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|Win32.ActiveCfg = Debug|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|Win32.Build.0 = Debug|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|x64.ActiveCfg = Debug|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|x64.Build.0 = Debug|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|Win32.ActiveCfg = Release|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|Win32.Build.0 = Release|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|x64.ActiveCfg = Release|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|Win32.ActiveCfg = Debug|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|Win32.Build.0 = Debug|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|x64.ActiveCfg = Debug|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|x64.Build.0 = Debug|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|Win32.ActiveCfg = Release|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|Win32.Build.0 = Release|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|x64.ActiveCfg = Release|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|Win32.Build.0 = Debug|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|x64.ActiveCfg = Debug|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|x64.Build.0 = Debug|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|Win32.ActiveCfg = Release|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|Win32.Build.0 = Release|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|x64.ActiveCfg = Release|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.ActiveCfg = Debug|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.Build.0 = Debug|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|x64.ActiveCfg = Debug|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|x64.Build.0 = Debug|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.ActiveCfg = Release|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.Build.0 = Release|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|x64.ActiveCfg = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Win32.ActiveCfg = Debug|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Win32.Build.0 = Debug|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|x64.ActiveCfg = Debug|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|x64.Build.0 = Debug|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Win32.ActiveCfg = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Win32.Build.0 = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|x64.ActiveCfg = Release|Win32 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|Win32.ActiveCfg = Debug|Win32 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|Win32.Build.0 = Debug|Win32 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|x64.ActiveCfg = Debug|x64 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|x64.Build.0 = Debug|x64 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|Win32.ActiveCfg = Release|Win32 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|x64.ActiveCfg = Release|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|Win32.Build.0 = Debug|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|x64.ActiveCfg = Debug|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|x64.Build.0 = Debug|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|Win32.ActiveCfg = Release|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|Win32.Build.0 = Release|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|x64.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|Win32.Build.0 = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|x64.ActiveCfg = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|x64.Build.0 = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|Win32.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|Win32.Build.0 = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|x64.ActiveCfg = Release|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Win32.ActiveCfg = Debug|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Win32.Build.0 = Debug|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|x64.ActiveCfg = Debug|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|x64.Build.0 = Debug|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Win32.ActiveCfg = Release|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Win32.Build.0 = Release|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|x64.ActiveCfg = Release|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|x64.Build.0 = Release|x64 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Debug|Win32.ActiveCfg = Debug|Win32 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Debug|Win32.Build.0 = Debug|Win32 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Debug|x64.ActiveCfg = Debug|x64 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Debug|x64.Build.0 = Debug|x64 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Release|Win32.ActiveCfg = Release|Win32 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Release|Win32.Build.0 = Release|Win32 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Release|x64.ActiveCfg = Release|x64 + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0}.Release|x64.Build.0 = Release|x64 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Debug|Win32.ActiveCfg = Debug|Win32 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Debug|Win32.Build.0 = Debug|Win32 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Debug|x64.ActiveCfg = Debug|x64 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Debug|x64.Build.0 = Debug|x64 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Release|Win32.ActiveCfg = Release|Win32 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Release|Win32.Build.0 = Release|Win32 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Release|x64.ActiveCfg = Release|x64 + {2271060E-98B4-4596-8172-A041E4B2EC7A}.Release|x64.Build.0 = Release|x64 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Debug|Win32.ActiveCfg = Debug|Win32 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Debug|Win32.Build.0 = Debug|Win32 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Debug|x64.ActiveCfg = Debug|x64 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Debug|x64.Build.0 = Debug|x64 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Release|Win32.ActiveCfg = Release|Win32 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Release|Win32.Build.0 = Release|Win32 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Release|x64.ActiveCfg = Release|x64 + {E7A6C41C-E059-4C9C-8CCC-73586A540B62}.Release|x64.Build.0 = Release|x64 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Debug|Win32.ActiveCfg = Debug|Win32 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Debug|Win32.Build.0 = Debug|Win32 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Debug|x64.ActiveCfg = Debug|x64 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Debug|x64.Build.0 = Debug|x64 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Release|Win32.ActiveCfg = Release|Win32 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Release|Win32.Build.0 = Release|Win32 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Release|x64.ActiveCfg = Release|x64 + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8}.Release|x64.Build.0 = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08336}.Debug|Win32.ActiveCfg = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08336}.Debug|Win32.Build.0 = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08336}.Debug|x64.ActiveCfg = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08336}.Debug|x64.Build.0 = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08336}.Release|Win32.ActiveCfg = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08336}.Release|Win32.Build.0 = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08336}.Release|x64.ActiveCfg = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08336}.Release|x64.Build.0 = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08996}.Debug|Win32.ActiveCfg = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08996}.Debug|Win32.Build.0 = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08996}.Debug|x64.ActiveCfg = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08996}.Debug|x64.Build.0 = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08996}.Release|Win32.ActiveCfg = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08996}.Release|Win32.Build.0 = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08996}.Release|x64.ActiveCfg = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08996}.Release|x64.Build.0 = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Debug|Win32.ActiveCfg = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Debug|Win32.Build.0 = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Debug|x64.ActiveCfg = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Debug|x64.Build.0 = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|Win32.ActiveCfg = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|Win32.Build.0 = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|x64.ActiveCfg = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {26932B24-EFC6-4E3A-B277-ED653DA37968} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {CAE4F1D0-314F-4B10-805B-0EFD670133A0} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {26828762-C95D-4637-9CB1-7F0979523813} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {2271060E-98B4-4596-8172-A041E4B2EC7A} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {E7A6C41C-E059-4C9C-8CCC-73586A540B62} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {55812185-D13C-4022-9C81-32E0F4A08336} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {55812185-D13C-4022-9C81-32E0F4A08996} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {55812185-D13C-4022-9C81-32E0F4A08BCC} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + EndGlobalSection +EndGlobal diff --git a/VisualC/SDLmain/SDLmain_VS2013.vcxproj b/VisualC/SDLmain/SDLmain_VS2013.vcxproj new file mode 100644 index 0000000000..f4e12630cd --- /dev/null +++ b/VisualC/SDLmain/SDLmain_VS2013.vcxproj @@ -0,0 +1,168 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SDL2main + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + + + + StaticLibrary + false + v120 + + + StaticLibrary + false + v120 + + + StaticLibrary + false + MultiByte + v120 + + + StaticLibrary + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + OnlyExplicitInline + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + OldStyle + false + + + true + + + + + X64 + + + OnlyExplicitInline + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + OldStyle + false + + + true + + + + + + Disabled + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + OldStyle + Default + false + + + true + + + + + X64 + + + Disabled + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + OldStyle + Default + false + + + true + + + + + + + + + \ No newline at end of file diff --git a/VisualC/SDLtest/SDLtest_VS2013.vcxproj b/VisualC/SDLtest/SDLtest_VS2013.vcxproj new file mode 100644 index 0000000000..c876d7413e --- /dev/null +++ b/VisualC/SDLtest/SDLtest_VS2013.vcxproj @@ -0,0 +1,196 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SDL2test + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + + + + StaticLibrary + false + v120 + + + StaticLibrary + false + v120 + + + StaticLibrary + false + MultiByte + v120 + + + StaticLibrary + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + OnlyExplicitInline + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + OldStyle + false + + + true + + + + + X64 + + + OnlyExplicitInline + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + OldStyle + false + + + true + + + + + + Disabled + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + OldStyle + Default + false + + + true + + + + + X64 + + + Disabled + ..\..\include;..\..\include\SDL;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + OldStyle + Default + false + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/checkkeys/checkkeys_VS2013.vcxproj b/VisualC/tests/checkkeys/checkkeys_VS2013.vcxproj new file mode 100644 index 0000000000..15e8421658 --- /dev/null +++ b/VisualC/tests/checkkeys/checkkeys_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + checkkeys + checkkeys + {26828762-C95D-4637-9CB1-7F0979523813} + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/loopwave/loopwave_VS2013.vcxproj b/VisualC/tests/loopwave/loopwave_VS2013.vcxproj new file mode 100644 index 0000000000..1a815bfa75 --- /dev/null +++ b/VisualC/tests/loopwave/loopwave_VS2013.vcxproj @@ -0,0 +1,235 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + loopwave + loopwave + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\sample.wav" "$(TargetDir)\sample.wav" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\sample.wav" "$(TargetDir)\sample.wav" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\sample.wav" "$(TargetDir)\sample.wav" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\sample.wav" "$(TargetDir)\sample.wav" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testatomic/testatomic_VS2013.vcxproj b/VisualC/tests/testatomic/testatomic_VS2013.vcxproj new file mode 100644 index 0000000000..cd02898296 --- /dev/null +++ b/VisualC/tests/testatomic/testatomic_VS2013.vcxproj @@ -0,0 +1,235 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testatomic + {2271060E-98B4-4596-8172-A041E4B2EC7A} + testatomic + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + {da956fd3-e142-46f2-9dd5-c78bebb56b7a} + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testautomation/testautomation_vs2013.vcxproj b/VisualC/tests/testautomation/testautomation_vs2013.vcxproj new file mode 100644 index 0000000000..7fb12228f9 --- /dev/null +++ b/VisualC/tests/testautomation/testautomation_vs2013.vcxproj @@ -0,0 +1,213 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testautomation + {FEE710DB-EC7B-4CCB-BD75-535D401A2FE0} + testautomation + Win32Proj + + + + Application + Unicode + true + v120 + + + Application + Unicode + true + v120 + + + Application + Unicode + v120 + + + Application + MultiByte + v120 + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + Disabled + $(SolutionDir)..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + EditAndContinue + + + true + Windows + MachineX86 + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + Disabled + $(SolutionDir)..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + MaxSpeed + true + $(SolutionDir)..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Windows + true + true + MachineX86 + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + MaxSpeed + true + $(SolutionDir)..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + + Level3 + ProgramDatabase + + + true + Windows + true + true + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testdraw2/testdraw2_VS2013.vcxproj b/VisualC/tests/testdraw2/testdraw2_VS2013.vcxproj new file mode 100644 index 0000000000..790d628c4f --- /dev/null +++ b/VisualC/tests/testdraw2/testdraw2_VS2013.vcxproj @@ -0,0 +1,232 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testdraw2 + testdraw2 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testfile/testfile_VS2013.vcxproj b/VisualC/tests/testfile/testfile_VS2013.vcxproj new file mode 100644 index 0000000000..4a8f0284bd --- /dev/null +++ b/VisualC/tests/testfile/testfile_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testfile + testfile + {CAE4F1D0-314F-4B10-805B-0EFD670133A0} + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testgamecontroller/testgamecontroller_VS2013.vcxproj b/VisualC/tests/testgamecontroller/testgamecontroller_VS2013.vcxproj new file mode 100644 index 0000000000..6039abd2e3 --- /dev/null +++ b/VisualC/tests/testgamecontroller/testgamecontroller_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testgamecontroller + testgamecontroller + {55812185-D13C-4022-9C81-32E0F4A08336} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testgesture/testgesture_VS2013.vcxproj b/VisualC/tests/testgesture/testgesture_VS2013.vcxproj new file mode 100644 index 0000000000..351ffbd92a --- /dev/null +++ b/VisualC/tests/testgesture/testgesture_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testgesture + testgesture + {55812185-D13C-4022-9C81-32E0F4A08996} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testgl2/testgl2_VS2013.vcxproj b/VisualC/tests/testgl2/testgl2_VS2013.vcxproj new file mode 100644 index 0000000000..4fd807787d --- /dev/null +++ b/VisualC/tests/testgl2/testgl2_VS2013.vcxproj @@ -0,0 +1,236 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testgl2 + testgl2 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884} + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testjoystick/testjoystick_VS2013.vcxproj b/VisualC/tests/testjoystick/testjoystick_VS2013.vcxproj new file mode 100644 index 0000000000..e1967c79ec --- /dev/null +++ b/VisualC/tests/testjoystick/testjoystick_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testjoystick + testjoystick + {55812185-D13C-4022-9C81-32E0F4A08BCC} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testoverlay2/testoverlay2_VS2013.vcxproj b/VisualC/tests/testoverlay2/testoverlay2_VS2013.vcxproj new file mode 100644 index 0000000000..d51d495e90 --- /dev/null +++ b/VisualC/tests/testoverlay2/testoverlay2_VS2013.vcxproj @@ -0,0 +1,235 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testoverlay2 + testoverlay2 + {55812185-D13C-4022-9C81-32E0F4A08AAD} + + + + Application + false + v110 + + + Application + false + MultiByte + v110 + + + Application + false + v110 + + + Application + false + v110 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\moose.dat" "$(TargetDir)\moose.dat" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\moose.dat" "$(TargetDir)\moose.dat" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\moose.dat" "$(TargetDir)\moose.dat" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\moose.dat" "$(TargetDir)\moose.dat" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testplatform/testplatform_VS2013.vcxproj b/VisualC/tests/testplatform/testplatform_VS2013.vcxproj new file mode 100644 index 0000000000..e3347537d3 --- /dev/null +++ b/VisualC/tests/testplatform/testplatform_VS2013.vcxproj @@ -0,0 +1,249 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testplatform + testplatform + {26932B24-EFC6-4E3A-B277-ED653DA37968} + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDebugDLL + Level3 + true + EditAndContinue + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + true + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + true + ProgramDatabase + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + true + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testplatform.tlb + + + + + MaxSpeed + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + $(IntDir) + $(IntDir) + $(IntDir)vc$(PlatformToolsetVersion).pdb + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + true + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + MaxSpeed + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + Level3 + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + true + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + %(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories) + %(PreprocessorDefinitions) + %(PreprocessorDefinitions) + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testpower/testpower_VS2013.vcxproj b/VisualC/tests/testpower/testpower_VS2013.vcxproj new file mode 100644 index 0000000000..7a3860fd35 --- /dev/null +++ b/VisualC/tests/testpower/testpower_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testpower + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3} + testpower + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testrendertarget/testrendertarget_VS2013.vcxproj b/VisualC/tests/testrendertarget/testrendertarget_VS2013.vcxproj new file mode 100644 index 0000000000..29756b06f0 --- /dev/null +++ b/VisualC/tests/testrendertarget/testrendertarget_VS2013.vcxproj @@ -0,0 +1,245 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testrendertarget + {43A06713-A52D-4008-AD7E-A69DF3FCFFA8} + testrendertarget + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + + + + {da956fd3-e142-46f2-9dd5-c78bebb56b7a} + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testscale/testscale_VS2013.vcxproj b/VisualC/tests/testscale/testscale_VS2013.vcxproj new file mode 100644 index 0000000000..5fb8adde06 --- /dev/null +++ b/VisualC/tests/testscale/testscale_VS2013.vcxproj @@ -0,0 +1,246 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testscale + {E7A6C41C-E059-4C9C-8CCC-73586A540B62} + testscale + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" +copy "$(SolutionDir)\..\test\sample.bmp" "$(TargetDir)\sample.bmp" + + + Copy SDL and data files + + + + + + + + {da956fd3-e142-46f2-9dd5-c78bebb56b7a} + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testshape/testshape_VS2013.vcxproj b/VisualC/tests/testshape/testshape_VS2013.vcxproj new file mode 100644 index 0000000000..948cd2aca5 --- /dev/null +++ b/VisualC/tests/testshape/testshape_VS2013.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testshape + testshape + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testsprite2/testsprite2_VS2013.vcxproj b/VisualC/tests/testsprite2/testsprite2_VS2013.vcxproj new file mode 100644 index 0000000000..e3ea0ef847 --- /dev/null +++ b/VisualC/tests/testsprite2/testsprite2_VS2013.vcxproj @@ -0,0 +1,236 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testsprite2 + testsprite2 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} + + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + Application + false + v120 + + + Application + false + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" + + + Copy SDL and data files + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" + + + Copy SDL and data files + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" +copy "$(SolutionDir)\..\test\icon.bmp" "$(TargetDir)\icon.bmp" + + + Copy SDL and data files + + + + + + + + + + + + + + \ No newline at end of file From 16f87519ebad6b6088a05784ca0ea2adb04f135c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 14:10:00 -0800 Subject: [PATCH 049/402] Fixed bug 2067 - Window size limit calculation issue when exiting fullscreen on Windows Also fixed minimize and maximize state detection for Windows. --- src/video/SDL_video.c | 27 ++++++++++++-- src/video/windows/SDL_windowsevents.c | 54 +++++++++++++++++---------- src/video/windows/SDL_windowswindow.c | 18 +++++++-- src/video/windows/SDL_windowswindow.h | 1 + 4 files changed, 73 insertions(+), 27 deletions(-) mode change 100644 => 100755 src/video/SDL_video.c mode change 100644 => 100755 src/video/windows/SDL_windowsevents.c mode change 100644 => 100755 src/video/windows/SDL_windowswindow.c mode change 100644 => 100755 src/video/windows/SDL_windowswindow.h diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c old mode 100644 new mode 100755 index 613bf4cf6b..66aa2556dc --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -621,9 +621,9 @@ SDL_GetIndexOfDisplay(SDL_VideoDisplay *display) void * SDL_GetDisplayDriverData( int displayIndex ) { - CHECK_DISPLAY_INDEX( displayIndex, NULL ); + CHECK_DISPLAY_INDEX( displayIndex, NULL ); - return _this->displays[displayIndex].driverdata; + return _this->displays[displayIndex].driverdata; } const char * @@ -1627,8 +1627,29 @@ SDL_SetWindowSize(SDL_Window * window, int w, int h) return; } + /* Make sure we don't exceed any window size limits */ + if (window->min_w && w < window->min_w) + { + w = window->min_w; + } + if (window->max_w && w > window->max_w) + { + w = window->max_w; + } + if (window->min_h && h < window->min_h) + { + h = window->min_h; + } + if (window->max_h && h > window->max_h) + { + h = window->max_h; + } + /* FIXME: Should this change fullscreen modes? */ - if (!(window->flags & SDL_WINDOW_FULLSCREEN)) { + if (window->flags & SDL_WINDOW_FULLSCREEN) { + window->windowed.w = w; + window->windowed.h = h; + } else { window->w = w; window->h = h; if (_this->SetWindowSize) { diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c old mode 100644 new mode 100755 index ec278d26e5..6a0dd44d76 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -312,15 +312,15 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) } #ifdef WMMSG_DEBUG - { - char message[1024]; - if (msg > MAX_WMMSG) { - SDL_snprintf(message, sizeof(message), "Received windows message: %p UNKNOWN (%d) -- 0x%X, 0x%X\n", hwnd, msg, wParam, lParam); - } else { - SDL_snprintf(message, sizeof(message), "Received windows message: %p %s -- 0x%X, 0x%X\n", hwnd, wmtab[msg], wParam, lParam); - } - OutputDebugStringA(message); - } + { + char message[1024]; + if (msg > MAX_WMMSG) { + SDL_snprintf(message, sizeof(message), "Received windows message: %p UNKNOWN (%d) -- 0x%X, 0x%X\n", hwnd, msg, wParam, lParam); + } else { + SDL_snprintf(message, sizeof(message), "Received windows message: %p %s -- 0x%X, 0x%X\n", hwnd, wmtab[msg], wParam, lParam); + } + OutputDebugStringA(message); + } #endif /* WMMSG_DEBUG */ if (IME_HandleMessage(hwnd, msg, wParam, &lParam, data->videodata)) @@ -348,12 +348,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) SHORT keyState; SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_SHOWN, 0, 0); - SDL_SendWindowEvent(data->window, - SDL_WINDOWEVENT_RESTORED, 0, 0); - if (IsZoomed(hwnd)) { - SDL_SendWindowEvent(data->window, - SDL_WINDOWEVENT_MAXIMIZED, 0, 0); - } if (SDL_GetKeyboardFocus() != data->window) { SDL_SetKeyboardFocus(data->window); } @@ -400,10 +394,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) if (SDL_GetKeyboardFocus() == data->window) { SDL_SetKeyboardFocus(NULL); } - if (minimized) { - SDL_SendWindowEvent(data->window, - SDL_WINDOWEVENT_MINIMIZED, 0, 0); - } } } returnCode = 0; @@ -596,10 +586,14 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) BOOL menu; BOOL constrain_max_size; - /* If we allow resizing, let the resize happen naturally */ if (SDL_IsShapedWindow(data->window)) Win32_ResizeWindowShape(data->window); + /* If this is an expected size change, allow it */ + if (data->expected_resize) { + break; + } + /* Get the current position of our window */ GetWindowRect(hwnd, &size); x = size.left; @@ -693,6 +687,26 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) } break; + case WM_SIZE: + { + switch (wParam) + { + case SIZE_MAXIMIZED: + SDL_SendWindowEvent(data->window, + SDL_WINDOWEVENT_MAXIMIZED, 0, 0); + break; + case SIZE_MINIMIZED: + SDL_SendWindowEvent(data->window, + SDL_WINDOWEVENT_MINIMIZED, 0, 0); + break; + default: + SDL_SendWindowEvent(data->window, + SDL_WINDOWEVENT_RESTORED, 0, 0); + break; + } + } + break; + case WM_SETCURSOR: { Uint16 hittest; diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c old mode 100644 new mode 100755 index 1a6849d261..c7055e46d1 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -79,7 +79,8 @@ GetWindowStyle(SDL_Window * window) static void WIN_SetWindowPositionInternal(_THIS, SDL_Window * window, UINT flags) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + HWND hwnd = data->hwnd; RECT rect; DWORD style; HWND top; @@ -105,7 +106,9 @@ WIN_SetWindowPositionInternal(_THIS, SDL_Window * window, UINT flags) x = window->x + rect.left; y = window->y + rect.top; + data->expected_resize = TRUE; SetWindowPos(hwnd, top, x, y, w, h, flags); + data->expected_resize = FALSE; } static int @@ -410,8 +413,11 @@ WIN_RaiseWindow(_THIS, SDL_Window * window) void WIN_MaximizeWindow(_THIS, SDL_Window * window) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + HWND hwnd = data->hwnd; + data->expected_resize = TRUE; ShowWindow(hwnd, SW_MAXIMIZE); + data->expected_resize = FALSE; } void @@ -442,9 +448,11 @@ WIN_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered) void WIN_RestoreWindow(_THIS, SDL_Window * window) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; - + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + HWND hwnd = data->hwnd; + data->expected_resize = TRUE; ShowWindow(hwnd, SW_RESTORE); + data->expected_resize = FALSE; } void @@ -490,7 +498,9 @@ WIN_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, y = window->windowed.y + rect.top; } SetWindowLong(hwnd, GWL_STYLE, style); + data->expected_resize = TRUE; SetWindowPos(hwnd, top, x, y, w, h, SWP_NOCOPYBITS); + data->expected_resize = FALSE; } int diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h old mode 100644 new mode 100755 index e85c201817..a4c035f53a --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -33,6 +33,7 @@ typedef struct WNDPROC wndproc; SDL_bool created; WPARAM mouse_button_flags; + BOOL expected_resize; struct SDL_VideoData *videodata; } SDL_WindowData; From d5109eea3d93b83d6bf479902b9fe78ac8d49a94 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 14:33:01 -0800 Subject: [PATCH 050/402] Hopefully fixed focus problems when handling a global hotkey on X11. See this thread for details: https://bugzilla.mozilla.org/show_bug.cgi?id=578265 --- src/video/x11/SDL_x11events.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index afee2345fc..f7090dd0c1 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -408,6 +408,13 @@ X11_DispatchEvent(_THIS) /* Losing input focus? */ case FocusOut:{ + if (xevent.xfocus.mode == NotifyGrab) { + /* Someone is handling a global hotkey, ignore it */ +#ifdef DEBUG_XEVENTS + printf("window %p: FocusOut (NotifyGrab, ignoring)\n", data); +#endif + break; + } if (xevent.xfocus.detail == NotifyInferior) { /* We still have focus if a child gets focus */ #ifdef DEBUG_XEVENTS From 316aba602cd05808dac8e8f429246be13eddaa77 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 14:48:44 -0800 Subject: [PATCH 051/402] Fixed issue with dead key press/release events being filtered out. --- src/video/x11/SDL_x11events.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index f7090dd0c1..59642f308d 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -280,19 +280,39 @@ X11_DispatchEvent(_THIS) Display *display = videodata->display; SDL_WindowData *data; XEvent xevent; - int i; + int orig_event_type; + KeyCode orig_keycode; XClientMessageEvent m; + int i; SDL_zero(xevent); /* valgrind fix. --ryan. */ X11_XNextEvent(display, &xevent); - /* filter events catchs XIM events and sends them to the correct - handler */ + /* Save the original keycode for dead keys, which are filtered out by + the XFilterEvent() call below. + */ + orig_event_type = xevent.type; + if (orig_event_type == KeyPress || orig_event_type == KeyRelease) { + orig_keycode = xevent.xkey.keycode; + } else { + orig_keycode = 0; + } + + /* filter events catchs XIM events and sends them to the correct handler */ if (X11_XFilterEvent(&xevent, None) == True) { #if 0 printf("Filtered event type = %d display = %d window = %d\n", xevent.type, xevent.xany.display, xevent.xany.window); #endif + if (orig_keycode) { + /* Make sure dead key press/release events are sent */ + SDL_Scancode scancode = videodata->key_layout[orig_keycode]; + if (orig_event_type == KeyPress) { + SDL_SendKeyboardKey(SDL_PRESSED, scancode); + } else { + SDL_SendKeyboardKey(SDL_RELEASED, scancode); + } + } return; } From 49980b286e92c1ffb3f2dba5a06b5e69b85af49d Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Sun, 10 Nov 2013 20:13:27 -0300 Subject: [PATCH 052/402] Fixes bugs #2213 and #2214, improves the Android joystick code button handling --- README-android.txt | 4 +- src/joystick/android/SDL_sysjoystick.c | 112 ++++++++++++++++++++----- 2 files changed, 93 insertions(+), 23 deletions(-) diff --git a/README-android.txt b/README-android.txt index 4a1cfc29fc..ae8de0d8a5 100644 --- a/README-android.txt +++ b/README-android.txt @@ -433,4 +433,6 @@ Reference: http://www.khronos.org/registry/egl/specs/EGLTechNote0001.html Known issues ================================================================================ -- TODO. I'm sure there's a bunch more stuff I haven't thought of +- The number of buttons reported for each joystick is hardcoded to be 36, which +is the current maximum number of buttons Android can report. + diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 012512991e..e29aced54f 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -30,12 +30,35 @@ #include "SDL_events.h" #include "SDL_joystick.h" #include "SDL_hints.h" +#include "SDL_assert.h" #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" +#include "android/keycodes.h" + +/* As of platform android-14, android/keycodes.h is missing these defines */ +#ifndef AKEYCODE_BUTTON_1 +#define AKEYCODE_BUTTON_1 188 +#define AKEYCODE_BUTTON_2 189 +#define AKEYCODE_BUTTON_3 190 +#define AKEYCODE_BUTTON_4 191 +#define AKEYCODE_BUTTON_5 192 +#define AKEYCODE_BUTTON_6 193 +#define AKEYCODE_BUTTON_7 194 +#define AKEYCODE_BUTTON_8 195 +#define AKEYCODE_BUTTON_9 196 +#define AKEYCODE_BUTTON_10 197 +#define AKEYCODE_BUTTON_11 198 +#define AKEYCODE_BUTTON_12 199 +#define AKEYCODE_BUTTON_13 200 +#define AKEYCODE_BUTTON_14 201 +#define AKEYCODE_BUTTON_15 202 +#define AKEYCODE_BUTTON_16 203 +#endif #define ANDROID_ACCELEROMETER_INDEX (SYS_numjoysticks - 1) #define ANDROID_ACCELEROMETER_NAME "Android Accelerometer" +#define ANDROID_MAX_NBUTTONS 36 static SDL_Joystick **SYS_Joysticks; static char **SYS_JoystickNames; @@ -44,31 +67,76 @@ static SDL_bool SYS_accelAsJoy; /* Function to convert Android keyCodes into SDL ones. * This code manipulation is done to get a sequential list of codes. + * FIXME: This is only suited for the case where we use a fixed number of buttons determined by ANDROID_MAX_NBUTTONS */ static int keycode_to_SDL(int keycode) { - /* D-Pad key codes (API 1): - * KEYCODE_DPAD_UP=19, KEYCODE_DPAD_DOWN - * KEYCODE_DPAD_LEFT, KEYCODE_DPAD_RIGHT, KEYCODE_DPAD_CENTER - */ - if(keycode < 96) - return keycode-19; - /* Some gamepad buttons (API 9): - * KEYCODE_BUTTON_A=96, KEYCODE_BUTTON_B, KEYCODE_BUTTON_C, - * KEYCODE_BUTTON_X, KEYCODE_BUTTON_Y, KEYCODE_BUTTON_Z, - * KEYCODE_BUTTON_L1, KEYCODE_BUTTON_L2, - * KEYCODE_BUTTON_R1, KEYCODE_BUTTON_R2, - * KEYCODE_BUTTON_THUMBL, KEYCODE_BUTTON_THUMBR, - * KEYCODE_BUTTON_START, KEYCODE_BUTTON_SELECT, KEYCODE_BUTTON_MODE - */ - else if(keycode < 188) - return keycode-91; - /* More gamepad buttons (API 12): - * KEYCODE_BUTTON_1=188 to KEYCODE_BUTTON_16 + /* FIXME: If this function gets too unwiedly in the future, replace with a lookup table */ + int button = 0; + switch(keycode) + { + /* D-Pad key codes (API 1), these get mapped to 0...4 */ + case AKEYCODE_DPAD_UP: + case AKEYCODE_DPAD_DOWN: + case AKEYCODE_DPAD_LEFT: + case AKEYCODE_DPAD_RIGHT: + case AKEYCODE_DPAD_CENTER: + button = keycode - AKEYCODE_DPAD_UP; + break; + + /* Some gamepad buttons (API 9), these get mapped to 5...19*/ + case AKEYCODE_BUTTON_A: + case AKEYCODE_BUTTON_B: + case AKEYCODE_BUTTON_C: + case AKEYCODE_BUTTON_X: + case AKEYCODE_BUTTON_Y: + case AKEYCODE_BUTTON_Z: + case AKEYCODE_BUTTON_L1: + case AKEYCODE_BUTTON_L2: + case AKEYCODE_BUTTON_R1: + case AKEYCODE_BUTTON_R2: + case AKEYCODE_BUTTON_THUMBL: + case AKEYCODE_BUTTON_THUMBR: + case AKEYCODE_BUTTON_START: + case AKEYCODE_BUTTON_SELECT: + case AKEYCODE_BUTTON_MODE: + button = keycode - AKEYCODE_BUTTON_A + 5; + break; + + + /* More gamepad buttons (API 12), these get mapped to 20...35*/ + case AKEYCODE_BUTTON_1: + case AKEYCODE_BUTTON_2: + case AKEYCODE_BUTTON_3: + case AKEYCODE_BUTTON_4: + case AKEYCODE_BUTTON_5: + case AKEYCODE_BUTTON_6: + case AKEYCODE_BUTTON_7: + case AKEYCODE_BUTTON_8: + case AKEYCODE_BUTTON_9: + case AKEYCODE_BUTTON_10: + case AKEYCODE_BUTTON_11: + case AKEYCODE_BUTTON_12: + case AKEYCODE_BUTTON_13: + case AKEYCODE_BUTTON_14: + case AKEYCODE_BUTTON_15: + case AKEYCODE_BUTTON_16: + button = keycode - AKEYCODE_BUTTON_1 + 20; + break; + + default: + SDL_Log("The button you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL mailing list Android KeyCode %d", keycode); + return -1; + break; + } + + /* This is here in case future generations, probably with six fingers per hand, + * happily add new cases up above and forget to update the max number of buttons. */ - else - return keycode-168; + SDL_assert(button < ANDROID_MAX_NBUTTONS); + return button; + } /* Function to scan the system for joysticks. @@ -162,8 +230,8 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index) joystick->nbuttons = 0; joystick->naxes = 3; } else { - /* TODO: Get the real number of buttons in the device */ - joystick->nbuttons = 36; + /* FIXME: Get the real number of buttons in the device? */ + joystick->nbuttons = ANDROID_MAX_NBUTTONS; joystick->naxes = Android_JNI_GetJoystickAxes(device_index); } From 82f49b838cc6887c98130c2960e3f07e34fe25ec Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Sun, 10 Nov 2013 20:38:50 -0300 Subject: [PATCH 053/402] [X11] Ignore both NotifyGrab and NotifyUngrab modes in FocusIn/FocusOut events --- src/video/x11/SDL_x11events.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 59642f308d..423bd87d39 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -399,6 +399,14 @@ X11_DispatchEvent(_THIS) /* Gaining input focus? */ case FocusIn:{ + if (xevent.xfocus.mode == NotifyGrab || xevent.xfocus.mode == NotifyUngrab) { + /* Someone is handling a global hotkey, ignore it */ +#ifdef DEBUG_XEVENTS + printf("window %p: FocusIn (NotifyGrab/NotifyUngrab, ignoring)\n", data); +#endif + break; + } + if (xevent.xfocus.detail == NotifyInferior) { #ifdef DEBUG_XEVENTS printf("window %p: FocusIn (NotifierInferior, ignoring)\n", data); @@ -428,10 +436,10 @@ X11_DispatchEvent(_THIS) /* Losing input focus? */ case FocusOut:{ - if (xevent.xfocus.mode == NotifyGrab) { + if (xevent.xfocus.mode == NotifyGrab || xevent.xfocus.mode == NotifyUngrab) { /* Someone is handling a global hotkey, ignore it */ #ifdef DEBUG_XEVENTS - printf("window %p: FocusOut (NotifyGrab, ignoring)\n", data); + printf("window %p: FocusOut (NotifyGrab/NotifyUngrab, ignoring)\n", data); #endif break; } From c87f18378052fc29b783d782e1c5530659682e3c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 17:40:35 -0800 Subject: [PATCH 054/402] Fixed bug 2176 - SDL_CreateWindow(w=INT_MAX, h=INT_MAX) causes program to hang Catch exceptions generated when trying to create a Cocoa window. --- src/video/cocoa/SDL_cocoawindow.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index b73a837a6e..6b4eca4610 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -748,7 +748,14 @@ - (void)resetCursorRects rect.origin.y -= screenRect.origin.y; } } - nswindow = [[SDLWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:NO screen:screen]; + + @try { + nswindow = [[SDLWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:NO screen:screen]; + } + @catch (NSException *e) { + SDL_SetError("%s", [[e reason] UTF8String]); + return -1; + } [nswindow setBackgroundColor:[NSColor blackColor]]; /* Create a default view for this window */ From f36a2fe81de113b9a66367393e8ffcf9c8b65442 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 17:56:07 -0800 Subject: [PATCH 055/402] Fixed bug 1965 - Mac: dead code for supporting OS 10.4 Alex Szpakowski The new patch removes all the truly obsolete code I could find. I tested on OS 10.8 and OS 10.5. --- src/joystick/darwin/SDL_sysjoystick.c | 5 --- src/video/cocoa/SDL_cocoakeyboard.m | 49 +-------------------------- 2 files changed, 1 insertion(+), 53 deletions(-) diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index 55ec41ed8a..125fdc0e25 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -32,12 +32,7 @@ #include #include #include -#ifdef MACOS_10_0_4 -#include -#else -/* The header was moved here in Mac OS X 10.1 */ #include -#endif #include #include #include diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index 8a6b87422b..f8764fb25c 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -198,45 +198,6 @@ - (NSArray *) validAttributesForMarkedText @end -/* This is the original behavior, before support was added for - * differentiating between left and right versions of the keys. - */ -static void -DoUnsidedModifiers(unsigned short scancode, - unsigned int oldMods, unsigned int newMods) -{ - const int mapping[] = { - SDL_SCANCODE_CAPSLOCK, - SDL_SCANCODE_LSHIFT, - SDL_SCANCODE_LCTRL, - SDL_SCANCODE_LALT, - SDL_SCANCODE_LGUI - }; - unsigned int i, bit; - - /* Iterate through the bits, testing each against the current modifiers */ - for (i = 0, bit = NSAlphaShiftKeyMask; bit <= NSCommandKeyMask; bit <<= 1, ++i) { - unsigned int oldMask, newMask; - - oldMask = oldMods & bit; - newMask = newMods & bit; - - if (oldMask && oldMask != newMask) { /* modifier up event */ - /* If this was Caps Lock, we need some additional voodoo to make SDL happy */ - if (bit == NSAlphaShiftKeyMask) { - SDL_SendKeyboardKey(SDL_PRESSED, mapping[i]); - } - SDL_SendKeyboardKey(SDL_RELEASED, mapping[i]); - } else if (newMask && oldMask != newMask) { /* modifier down event */ - SDL_SendKeyboardKey(SDL_PRESSED, mapping[i]); - /* If this was Caps Lock, we need some additional voodoo to make SDL happy */ - if (bit == NSAlphaShiftKeyMask) { - SDL_SendKeyboardKey(SDL_RELEASED, mapping[i]); - } - } - } -} - /* This is a helper function for HandleModifierSide. This * function reverts back to behavior before the distinction between * sides was made. @@ -458,15 +419,7 @@ - (NSArray *) validAttributesForMarkedText return; } - /* - * Starting with Panther (10.3.0), the ability to distinguish between - * left side and right side modifiers is available. - */ - if (data->osversion >= 0x1030) { - DoSidedModifiers(scancode, data->modifierFlags, modifierFlags); - } else { - DoUnsidedModifiers(scancode, data->modifierFlags, modifierFlags); - } + DoSidedModifiers(scancode, data->modifierFlags, modifierFlags); data->modifierFlags = modifierFlags; } From 0a8e198f5a562d2dfd7a6f76a1b2111415556ee3 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 10 Nov 2013 19:19:44 -0800 Subject: [PATCH 056/402] Fixed pool memory leak --- src/video/cocoa/SDL_cocoawindow.m | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 6b4eca4610..00ee08f325 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -754,6 +754,7 @@ - (void)resetCursorRects } @catch (NSException *e) { SDL_SetError("%s", [[e reason] UTF8String]); + [pool release]; return -1; } [nswindow setBackgroundColor:[NSColor blackColor]]; From 838957c581be725b826ba9d07fed523f95020298 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 01:59:20 -0800 Subject: [PATCH 057/402] Toggling fullscreen now takes fullscreen flags --- src/test/SDL_test_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index c4d72db32f..f06c49ea57 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1338,7 +1338,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) if (flags & SDL_WINDOW_FULLSCREEN) { SDL_SetWindowFullscreen(window, SDL_FALSE); } else { - SDL_SetWindowFullscreen(window, SDL_TRUE); + SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN); } } } else if (event->key.keysym.mod & KMOD_ALT) { From fefa9ad9795438404ac9e650ea018bc88d487a69 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 01:59:40 -0800 Subject: [PATCH 058/402] Fixed whitespace style --- src/video/SDL_video.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 66aa2556dc..46796e8055 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1118,11 +1118,11 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) } /* only do the mode change if we want exclusive fullscreen */ - if ( ( window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP ) != SDL_WINDOW_FULLSCREEN_DESKTOP ) + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP) { SDL_SetDisplayModeForDisplay(display, &fullscreen_mode); - else + } else { SDL_SetDisplayModeForDisplay(display, NULL); - + } if (_this->SetWindowFullscreen) { _this->SetWindowFullscreen(_this, other, display, SDL_TRUE); From da149038d74250b810b53b82e7452f407eba66c6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 02:00:58 -0800 Subject: [PATCH 059/402] Turn off resizable flag by default, you can always pass the --resize command line option if you need it. --- test/testsprite2.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/testsprite2.c b/test/testsprite2.c index e0e1cf4931..e61081036f 100644 --- a/test/testsprite2.c +++ b/test/testsprite2.c @@ -248,8 +248,6 @@ main(int argc, char *argv[]) return 1; } - state->window_flags |= SDL_WINDOW_RESIZABLE; - for (i = 1; i < argc;) { int consumed; From ebdab6cc583aaeed9737c1a7430053d11c86bb45 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 02:53:00 -0800 Subject: [PATCH 060/402] Added support for new style fullscreen transitions on Mac OS X --- src/video/cocoa/SDL_cocoaevents.m | 20 ++++ src/video/cocoa/SDL_cocoawindow.h | 7 ++ src/video/cocoa/SDL_cocoawindow.m | 165 +++++++++++++++++++++++++----- 3 files changed, 166 insertions(+), 26 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index e6b292b0bd..30a63d8f74 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -147,6 +147,7 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam NSMenu *appleMenu; NSMenu *serviceMenu; NSMenu *windowMenu; + NSMenu *viewMenu; NSMenuItem *menuItem; if (NSApp == nil) { @@ -220,6 +221,25 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam /* Tell the application object that this is now the window menu */ [NSApp setWindowsMenu:windowMenu]; [windowMenu release]; + + + /* Add the fullscreen view toggle menu option, if supported */ + if ([NSApp respondsToSelector:@selector(setPresentationOptions:)]) { + /* Create the view menu */ + viewMenu = [[NSMenu alloc] initWithTitle:@"View"]; + + /* Add menu items */ + menuItem = [viewMenu addItemWithTitle:@"Toggle Full Screen" action:@selector(toggleFullScreen:) keyEquivalent:@"f"]; + [menuItem setKeyEquivalentModifierMask:NSControlKeyMask | NSCommandKeyMask]; + + /* Put menu into the menubar */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:viewMenu]; + [[NSApp mainMenu] addItem:menuItem]; + [menuItem release]; + + [viewMenu release]; + } } void diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index c08c55c11b..1ec3d3c544 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -32,11 +32,14 @@ typedef struct SDL_WindowData SDL_WindowData; BOOL observingVisible; BOOL wasCtrlLeft; BOOL wasVisible; + BOOL isFullscreen; + BOOL inFullscreenTransition; } -(void) listen:(SDL_WindowData *) data; -(void) pauseVisibleObservation; -(void) resumeVisibleObservation; +-(BOOL) isToggledFullscreen; -(void) close; /* Window delegate functionality */ @@ -48,6 +51,10 @@ typedef struct SDL_WindowData SDL_WindowData; -(void) windowDidDeminiaturize:(NSNotification *) aNotification; -(void) windowDidBecomeKey:(NSNotification *) aNotification; -(void) windowDidResignKey:(NSNotification *) aNotification; +-(void) windowWillEnterFullScreen:(NSNotification *) aNotification; +-(void) windowDidEnterFullScreen:(NSNotification *) aNotification; +-(void) windowWillExitFullScreen:(NSNotification *) aNotification; +-(void) windowDidExitFullScreen:(NSNotification *) aNotification; /* Window event handling */ -(void) mouseDown:(NSEvent *) theEvent; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 00ee08f325..91cc7d15e2 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -50,7 +50,8 @@ static void ConvertNSRect(NSRect *r) r->origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - r->origin.y - r->size.height; } -static void ScheduleContextUpdates(SDL_WindowData *data) +static void +ScheduleContextUpdates(SDL_WindowData *data) { NSMutableArray *contexts = data->nscontexts; @synchronized (contexts) { @@ -60,12 +61,34 @@ static void ScheduleContextUpdates(SDL_WindowData *data) } } -static int GetHintCtrlClickEmulateRightClick() +static int +GetHintCtrlClickEmulateRightClick() { const char *hint = SDL_GetHint( SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK ); return hint != NULL && *hint != '0'; } +static unsigned int +GetWindowStyle(SDL_Window * window) +{ + unsigned int style; + + if (window->flags & SDL_WINDOW_FULLSCREEN) { + style = NSBorderlessWindowMask; + } else { + if (window->flags & SDL_WINDOW_BORDERLESS) { + style = NSBorderlessWindowMask; + } else { + style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask); + } + if (window->flags & SDL_WINDOW_RESIZABLE) { + style |= NSResizableWindowMask; + } + } + return style; +} + + @implementation Cocoa_WindowListener - (void)listen:(SDL_WindowData *)data @@ -78,6 +101,8 @@ - (void)listen:(SDL_WindowData *)data observingVisible = YES; wasCtrlLeft = NO; wasVisible = [window isVisible]; + isFullscreen = NO; + inFullscreenTransition = NO; center = [NSNotificationCenter defaultCenter]; @@ -89,6 +114,10 @@ - (void)listen:(SDL_WindowData *)data [center addObserver:self selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:window]; [center addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:window]; [center addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:window]; + [center addObserver:self selector:@selector(windowWillEnterFullScreen:) name:NSWindowWillEnterFullScreenNotification object:window]; + [center addObserver:self selector:@selector(windowDidEnterFullScreen:) name:NSWindowDidEnterFullScreenNotification object:window]; + [center addObserver:self selector:@selector(windowWillExitFullScreen:) name:NSWindowWillExitFullScreenNotification object:window]; + [center addObserver:self selector:@selector(windowDidExitFullScreen:) name:NSWindowDidExitFullScreenNotification object:window]; } else { [window setDelegate:self]; } @@ -152,6 +181,11 @@ -(void) resumeVisibleObservation } } +- (BOOL) isToggledFullscreen +{ + return isFullscreen; +} + - (void)close { NSNotificationCenter *center; @@ -169,6 +203,10 @@ - (void)close [center removeObserver:self name:NSWindowDidDeminiaturizeNotification object:window]; [center removeObserver:self name:NSWindowDidBecomeKeyNotification object:window]; [center removeObserver:self name:NSWindowDidResignKeyNotification object:window]; + [center removeObserver:self name:NSWindowWillEnterFullScreenNotification object:window]; + [center removeObserver:self name:NSWindowDidEnterFullScreenNotification object:window]; + [center removeObserver:self name:NSWindowWillExitFullScreenNotification object:window]; + [center removeObserver:self name:NSWindowDidExitFullScreenNotification object:window]; } else { [window setDelegate:nil]; } @@ -250,8 +288,15 @@ - (void)windowDidResize:(NSNotification *)aNotification y = (int)rect.origin.y; w = (int)rect.size.width; h = (int)rect.size.height; - if (SDL_IsShapedWindow(_data->window)) + + if (inFullscreenTransition) { + /* We'll take care of this at the end of the transition */ + return; + } + + if (SDL_IsShapedWindow(_data->window)) { Cocoa_ResizeWindowShape(_data->window); + } ScheduleContextUpdates(_data); @@ -317,6 +362,46 @@ - (void)windowDidResignKey:(NSNotification *)aNotification } } +- (void)windowWillEnterFullScreen:(NSNotification *)aNotification +{ + SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; + + if (!(window->flags & SDL_WINDOW_RESIZABLE)) { + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + [nswindow setStyleMask:(NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)]; + } else { + [nswindow setStyleMask:NSBorderlessWindowMask]; + } + } + isFullscreen = YES; + inFullscreenTransition = YES; +} + +- (void)windowDidEnterFullScreen:(NSNotification *)aNotification +{ + inFullscreenTransition = NO; + [self windowDidResize:aNotification]; +} + +- (void)windowWillExitFullScreen:(NSNotification *)aNotification +{ + inFullscreenTransition = YES; +} + +- (void)windowDidExitFullScreen:(NSNotification *)aNotification +{ + SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; + + if (!(window->flags & SDL_WINDOW_RESIZABLE)) { + [nswindow setStyleMask:GetWindowStyle(window)]; + } + isFullscreen = NO; + inFullscreenTransition = NO; + [self windowDidResize:aNotification]; +} + /* We'll respond to key events by doing nothing so we don't beep. * We could handle key messages here, but we lose some in the NSApp dispatch, * where they get converted to action messages, etc. @@ -606,26 +691,6 @@ - (void)resetCursorRects } @end -static unsigned int -GetWindowStyle(SDL_Window * window) -{ - unsigned int style; - - if (window->flags & SDL_WINDOW_FULLSCREEN) { - style = NSBorderlessWindowMask; - } else { - if (window->flags & SDL_WINDOW_BORDERLESS) { - style = NSBorderlessWindowMask; - } else { - style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask); - } - if (window->flags & SDL_WINDOW_RESIZABLE) { - style |= NSResizableWindowMask; - } - } - return style; -} - static int SetupWindowData(_THIS, SDL_Window * window, NSWindow *nswindow, SDL_bool created) { @@ -758,6 +823,7 @@ - (void)resetCursorRects return -1; } [nswindow setBackgroundColor:[NSColor blackColor]]; + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; /* Create a default view for this window */ rect = [nswindow contentRectForFrameRect:[nswindow frame]]; @@ -1020,10 +1086,45 @@ - (void)resetCursorRects [pool release]; } -void -Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) +static SDL_bool +Cocoa_CanToggleFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + NSWindow *nswindow = data->nswindow; + + if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { + return SDL_FALSE; + } + + /* We can enter new style fullscreen mode for "fullscreen desktop" */ + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + return SDL_TRUE; + } + + /* We can always leave new style fullscreen mode */ + if (!fullscreen && [data->listener isToggledFullscreen]) { + return SDL_TRUE; + } + + /* Requesting a mode switched fullscreen mode */ + return SDL_FALSE; +} + +static void +Cocoa_SetWindowFullscreen_NewStyle(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + NSWindow *nswindow = data->nswindow; + + if (fullscreen != [data->listener isToggledFullscreen]) { + [nswindow toggleFullScreen:nil]; + } + ScheduleContextUpdates(data); +} + +static void +Cocoa_SetWindowFullscreen_OldStyle(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) { - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDL_WindowData *data = (SDL_WindowData *) window->driverdata; NSWindow *nswindow = data->nswindow; NSRect rect; @@ -1097,6 +1198,18 @@ - (void)resetCursorRects } ScheduleContextUpdates(data); +} + +void +Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + if (Cocoa_CanToggleFullscreen(_this, window, display, fullscreen)) { + Cocoa_SetWindowFullscreen_NewStyle(_this, window, display, fullscreen); + } else { + Cocoa_SetWindowFullscreen_OldStyle(_this, window, display, fullscreen); + } [pool release]; } From 8770bf9f0fd11d1a7641a47fc3e38045f1b131a1 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 03:02:42 -0800 Subject: [PATCH 061/402] Don't minimize by default when in fullscreen desktop mode. This fixes behavior with the new Mac OS X fullscreen space code, as well as improve behavior on Linux desktops. The default for normal fullscreen mode is still to minimize because we're likely doing a mode switch and don't want to stick around as a borderless window in the background. --- src/video/SDL_video.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 46796e8055..44f3daa54e 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2134,8 +2134,22 @@ SDL_OnWindowFocusGained(SDL_Window * window) SDL_UpdateWindowGrab(window); } -static SDL_bool ShouldMinimizeOnFocusLoss() +static SDL_bool +ShouldMinimizeOnFocusLoss(SDL_Window * window) { + SDL_bool default_minimize; + + if (!(window->flags & SDL_WINDOW_FULLSCREEN)) { + return SDL_FALSE; + } + + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + /* We're not doing a mode switch, so it's okay to stay around */ + default_minimize = SDL_FALSE; + } else { + default_minimize = SDL_TRUE; + } + const char *hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS); if (hint) { if (*hint == '0') { @@ -2144,7 +2158,8 @@ static SDL_bool ShouldMinimizeOnFocusLoss() return SDL_TRUE; } } - return SDL_TRUE; + + return default_minimize; } void @@ -2156,8 +2171,7 @@ SDL_OnWindowFocusLost(SDL_Window * window) SDL_UpdateWindowGrab(window); - /* If we're fullscreen and lose focus, minimize unless the hint tells us otherwise */ - if ((window->flags & SDL_WINDOW_FULLSCREEN) && ShouldMinimizeOnFocusLoss()) { + if (ShouldMinimizeOnFocusLoss(window)) { SDL_MinimizeWindow(window); } } From 1b73537e512b45a4745c808ec439c321e16cc8f6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 03:12:50 -0800 Subject: [PATCH 062/402] Fixed compiling with ISO C90 --- src/video/SDL_video.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 44f3daa54e..0f0b3e6f7d 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2138,6 +2138,7 @@ static SDL_bool ShouldMinimizeOnFocusLoss(SDL_Window * window) { SDL_bool default_minimize; + const char *hint; if (!(window->flags & SDL_WINDOW_FULLSCREEN)) { return SDL_FALSE; @@ -2150,7 +2151,7 @@ ShouldMinimizeOnFocusLoss(SDL_Window * window) default_minimize = SDL_TRUE; } - const char *hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS); + hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS); if (hint) { if (*hint == '0') { return SDL_FALSE; From aa068ae1ae911454e2178cea65f5d95ad1ea49b2 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 03:29:11 -0800 Subject: [PATCH 063/402] Fixed compiling with older Mac OS X SDK --- src/video/cocoa/SDL_cocoawindow.m | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 91cc7d15e2..20852b2e13 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -114,10 +114,12 @@ - (void)listen:(SDL_WindowData *)data [center addObserver:self selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:window]; [center addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:window]; [center addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:window]; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 [center addObserver:self selector:@selector(windowWillEnterFullScreen:) name:NSWindowWillEnterFullScreenNotification object:window]; [center addObserver:self selector:@selector(windowDidEnterFullScreen:) name:NSWindowDidEnterFullScreenNotification object:window]; [center addObserver:self selector:@selector(windowWillExitFullScreen:) name:NSWindowWillExitFullScreenNotification object:window]; [center addObserver:self selector:@selector(windowDidExitFullScreen:) name:NSWindowDidExitFullScreenNotification object:window]; +#endif /* Mac OS X 10.7+ */ } else { [window setDelegate:self]; } @@ -203,10 +205,12 @@ - (void)close [center removeObserver:self name:NSWindowDidDeminiaturizeNotification object:window]; [center removeObserver:self name:NSWindowDidBecomeKeyNotification object:window]; [center removeObserver:self name:NSWindowDidResignKeyNotification object:window]; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 [center removeObserver:self name:NSWindowWillEnterFullScreenNotification object:window]; [center removeObserver:self name:NSWindowDidEnterFullScreenNotification object:window]; [center removeObserver:self name:NSWindowWillExitFullScreenNotification object:window]; [center removeObserver:self name:NSWindowDidExitFullScreenNotification object:window]; +#endif /* Mac OS X 10.7+ */ } else { [window setDelegate:nil]; } @@ -823,13 +827,17 @@ - (void)resetCursorRects return -1; } [nswindow setBackgroundColor:[NSColor blackColor]]; - [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 + if ([nswindow respondsToSelector:@selector(setCollectionBehavior:)]) { + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; + } +#endif /* Create a default view for this window */ rect = [nswindow contentRectForFrameRect:[nswindow frame]]; NSView *contentView = [[SDLView alloc] initWithFrame:rect]; - if ((window->flags & SDL_WINDOW_ALLOW_HIGHDPI) > 0) { + if (window->flags & SDL_WINDOW_ALLOW_HIGHDPI) { if ([contentView respondsToSelector:@selector(setWantsBestResolutionOpenGLSurface:)]) { [contentView setWantsBestResolutionOpenGLSurface:YES]; } @@ -1117,7 +1125,7 @@ - (void)resetCursorRects NSWindow *nswindow = data->nswindow; if (fullscreen != [data->listener isToggledFullscreen]) { - [nswindow toggleFullScreen:nil]; + [nswindow performSelector: @selector(toggleFullScreen:) withObject:nswindow]; } ScheduleContextUpdates(data); } From cfadbed3eef9fd8b70de4fc6b5128c694e76850b Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 11 Nov 2013 10:15:35 -0300 Subject: [PATCH 064/402] [Android] Fixes bug 2217, better joystick axes handling on Android. --- .../src/org/libsdl/app/SDLActivity.java | 98 +++++++++++++------ src/joystick/android/SDL_sysjoystick.c | 10 +- 2 files changed, 75 insertions(+), 33 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 60b6aa0d6b..d0155a5d3c 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -433,6 +433,10 @@ public static int getJoystickAxes(int joy) { return mJoystickHandler.getJoystickAxes(joy); } + public static boolean handleJoystickMotionEvent(MotionEvent event) { + return mJoystickHandler.handleMotionEvent(event); + } + /** * @param devId the device id to get opened joystick id for. * @return joystick id for device id or -1 if there is none. @@ -840,73 +844,105 @@ public int getJoystickAxes(int joy) { public int getJoyId(int devId) { return -1; } + + public boolean handleMotionEvent(MotionEvent event) { + return false; + } } /* Actual joystick functionality available for API >= 12 devices */ class SDLJoystickHandler_API12 extends SDLJoystickHandler { - private ArrayList mJoyIdList; + + class SDLJoystick { + public int id; + public String name; + public ArrayList axes; + } - // Create a list of valid ID's the first time this function is called - private void createJoystickList() { - if(mJoyIdList != null) { - return; - } + private ArrayList mJoysticks; + + public SDLJoystickHandler_API12() { + /* FIXME: Move the joystick initialization code to its own function and support hotplugging of devices */ + + mJoysticks = new ArrayList(); - mJoyIdList = new ArrayList(); int[] deviceIds = InputDevice.getDeviceIds(); for(int i=0; i(); + + for (InputDevice.MotionRange range : joystickDevice.getMotionRanges()) { + if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { + joystick.axes.add(range); + } + } + + mJoysticks.add(joystick); } } } @Override public int getNumJoysticks() { - createJoystickList(); - return mJoyIdList.size(); + return mJoysticks.size(); } @Override public String getJoystickName(int joy) { - createJoystickList(); - return InputDevice.getDevice(mJoyIdList.get(joy).intValue()).getName(); + return mJoysticks.get(joy).name; } @Override public int getJoystickAxes(int joy) { - createJoystickList(); - return InputDevice.getDevice(mJoyIdList.get(joy).intValue()).getMotionRanges().size(); + return mJoysticks.get(joy).axes.size(); } @Override public int getJoyId(int devId) { - createJoystickList(); - return mJoyIdList.indexOf(Integer.valueOf(devId)); - } + for(int i=0; i < mJoysticks.size(); i++) { + if (mJoysticks.get(i).id == devId) { + return i; + } + } + return -1; + } -} - -class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener { - // Generic Motion (mouse hover, joystick...) events go here - // We only have joysticks yet - @Override - public boolean onGenericMotion(View v, MotionEvent event) { + @Override + public boolean handleMotionEvent(MotionEvent event) { if ( (event.getSource() & InputDevice.SOURCE_JOYSTICK) != 0) { int actionPointerIndex = event.getActionIndex(); int action = event.getActionMasked(); switch(action) { case MotionEvent.ACTION_MOVE: - int id = SDLActivity.getJoyId( event.getDeviceId() ); - if (id != -1) { - float x = event.getAxisValue(MotionEvent.AXIS_X, actionPointerIndex); - float y = event.getAxisValue(MotionEvent.AXIS_Y, actionPointerIndex); - SDLActivity.onNativeJoy(id, 0, x); - SDLActivity.onNativeJoy(id, 1, y); + int id = getJoyId( event.getDeviceId() ); + if ( id != -1 ) { + SDLJoystick joystick = mJoysticks.get(id); + for (int i = 0; i < joystick.axes.size(); i++) { + InputDevice.MotionRange range = joystick.axes.get(i); + /* Normalize the value to -1...1 */ + float value = ( event.getAxisValue( range.getAxis(), actionPointerIndex) - range.getMin() ) / range.getRange() * 2.0f - 1.0f; + SDLActivity.onNativeJoy(id, i, value ); + } } break; + default: + break; } } return true; + } +} + +class SDLGenericMotionListener_API12 implements View.OnGenericMotionListener { + // Generic Motion (mouse hover, joystick...) events go here + // We only have joysticks yet + @Override + public boolean onGenericMotion(View v, MotionEvent event) { + return SDLActivity.handleJoystickMotionEvent(event); } } diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index e29aced54f..a98cef5beb 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -308,7 +308,10 @@ SDL_JoystickGUID SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick) int Android_OnPadDown(int padId, int keycode) { - SDL_PrivateJoystickButton(SYS_Joysticks[padId], keycode_to_SDL(keycode), SDL_PRESSED); + int button = keycode_to_SDL(keycode); + if (button >= 0) { + SDL_PrivateJoystickButton(SYS_Joysticks[padId], button , SDL_PRESSED); + } return 0; } @@ -316,7 +319,10 @@ Android_OnPadDown(int padId, int keycode) int Android_OnPadUp(int padId, int keycode) { - SDL_PrivateJoystickButton(SYS_Joysticks[padId], keycode_to_SDL(keycode), SDL_RELEASED); + int button = keycode_to_SDL(keycode); + if (button >= 0) { + SDL_PrivateJoystickButton(SYS_Joysticks[padId], button, SDL_RELEASED); + } return 0; } From 9abdcbfd10698a3fe27cf99a374baaa9f5f90d80 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 11 Nov 2013 10:49:48 -0300 Subject: [PATCH 065/402] [Android] Improve handling of keyboard, dpad and gamepad events Thanks Dimitris Zenios for the report! --- .../src/org/libsdl/app/SDLActivity.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index d0155a5d3c..d1292ddef9 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -600,18 +600,10 @@ public void onDraw(Canvas canvas) {} @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // Dispatch the different events depending on where they come from - if(event.getSource() == InputDevice.SOURCE_KEYBOARD) { - if (event.getAction() == KeyEvent.ACTION_DOWN) { - //Log.v("SDL", "key down: " + keyCode); - SDLActivity.onNativeKeyDown(keyCode); - return true; - } - else if (event.getAction() == KeyEvent.ACTION_UP) { - //Log.v("SDL", "key up: " + keyCode); - SDLActivity.onNativeKeyUp(keyCode); - return true; - } - } else if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ + // Some SOURCE_DPAD or SOURCE_GAMEPAD events appear to also be marked as SOURCE_KEYBOARD + // So, to avoid problems, we process DPAD or GAMEPAD events first. + + if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ (event.getSource() & InputDevice.SOURCE_DPAD) != 0 ) { int id = SDLActivity.getJoyId( event.getDeviceId() ); if (id != -1) { @@ -623,6 +615,18 @@ else if (event.getAction() == KeyEvent.ACTION_UP) { } return true; } + else if( (event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + //Log.v("SDL", "key down: " + keyCode); + SDLActivity.onNativeKeyDown(keyCode); + return true; + } + else if (event.getAction() == KeyEvent.ACTION_UP) { + //Log.v("SDL", "key up: " + keyCode); + SDLActivity.onNativeKeyUp(keyCode); + return true; + } + } return false; } From 3b111bb690c83f18028b5ad5b9fbef44bffcc7b1 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 11 Nov 2013 10:59:15 -0300 Subject: [PATCH 066/402] [Android] Fixes Bug 2031 - Backspace Not Sending Events From On-Screen Keyboard Thanks Joe LeVeque! --- android-project/src/org/libsdl/app/SDLActivity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index d1292ddef9..7c7d63c811 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -825,6 +825,17 @@ public boolean setComposingText(CharSequence text, int newCursorPosition) { public native void nativeSetComposingText(String text, int newCursorPosition); + @Override + public boolean deleteSurroundingText(int beforeLength, int afterLength) { + // Workaround to capture backspace key. Ref: http://stackoverflow.com/questions/14560344/android-backspace-in-webview-baseinputconnection + if (beforeLength == 1 && afterLength == 0) { + // backspace + return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)) + && super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); + } + + return super.deleteSurroundingText(beforeLength, afterLength); + } } /* A null joystick handler for API level < 12 devices (the accelerometer is handled separately) */ From 14c4e4e091ed30e266f134dfb56a8e7dd37edf70 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 11 Nov 2013 11:12:43 -0300 Subject: [PATCH 067/402] [Android] Try to improve handling of some dpad+gamepad+keyboard corner cases --- android-project/src/org/libsdl/app/SDLActivity.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 7c7d63c811..54670f8df3 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -612,10 +612,11 @@ public boolean onKey(View v, int keyCode, KeyEvent event) { } else if (event.getAction() == KeyEvent.ACTION_UP) { SDLActivity.onNativePadUp(id, keyCode); } + return true; } - return true; } - else if( (event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) { + + if( (event.getSource() & InputDevice.SOURCE_KEYBOARD) != 0) { if (event.getAction() == KeyEvent.ACTION_DOWN) { //Log.v("SDL", "key down: " + keyCode); SDLActivity.onNativeKeyDown(keyCode); From 78a0d5383bd2f8da9a2afecf82a52de8065ab68b Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 11 Nov 2013 19:17:32 -0300 Subject: [PATCH 068/402] [X11] Fix up compilation when EGL headers are not present. --- src/video/x11/SDL_x11window.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index 62a7e73051..300719999d 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -563,6 +563,7 @@ X11_CreateWindow(_THIS, SDL_Window * window) && ( !_this->gl_data || ! _this->gl_data->HAS_GLX_EXT_create_context_es2_profile ) #endif ) { +#if SDL_VIDEO_OPENGL_EGL if (!_this->egl_data) { X11_XDestroyWindow(display, w); return -1; @@ -575,6 +576,9 @@ X11_CreateWindow(_THIS, SDL_Window * window) X11_XDestroyWindow(display, w); return SDL_SetError("Could not create GLES window surface"); } +#else + return SDL_SetError("Could not create GLES window surface (no EGL support available)"); +#endif /* SDL_VIDEO_OPENGL_EGL */ } #endif From 6e852506b0af05fa255de4f96c6cf23c57bac8fe Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 20:42:59 -0800 Subject: [PATCH 069/402] Properly handle toggling fullscreen state when another fullscreen state change is in progress. --- src/video/cocoa/SDL_cocoawindow.h | 9 ++- src/video/cocoa/SDL_cocoawindow.m | 109 ++++++++++++++++++------------ 2 files changed, 72 insertions(+), 46 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 1ec3d3c544..dbe592a780 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -34,12 +34,19 @@ typedef struct SDL_WindowData SDL_WindowData; BOOL wasVisible; BOOL isFullscreen; BOOL inFullscreenTransition; + + enum + { + PENDING_TRANSITION_NONE, + PENDING_TRANSITION_ENTER_FULLSCREEN, + PENDING_TRANSITION_LEAVE_FULLSCREEN + } pendingFullscreenTransition; } -(void) listen:(SDL_WindowData *) data; -(void) pauseVisibleObservation; -(void) resumeVisibleObservation; --(BOOL) isToggledFullscreen; +-(BOOL) setFullscreenState:(BOOL) state; -(void) close; /* Window delegate functionality */ diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 20852b2e13..5ae119fc8e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -103,6 +103,7 @@ - (void)listen:(SDL_WindowData *)data wasVisible = [window isVisible]; isFullscreen = NO; inFullscreenTransition = NO; + pendingFullscreenTransition = PENDING_TRANSITION_NONE; center = [NSNotificationCenter defaultCenter]; @@ -183,9 +184,52 @@ -(void) resumeVisibleObservation } } -- (BOOL) isToggledFullscreen +-(BOOL) canSetFullscreenState:(BOOL) state; { - return isFullscreen; +} + +-(BOOL) setFullscreenState:(BOOL) state; +{ + SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; + BOOL canSetState = NO; + + /* Make sure we can support this fullscreen style */ + if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { + return NO; + } + + pendingFullscreenTransition = PENDING_TRANSITION_NONE; + + /* We can enter new style fullscreen mode for "fullscreen desktop" */ + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + canSetState = YES; + } + + /* We can always leave new style fullscreen mode */ + if (!state && isFullscreen) { + canSetState = YES; + } + + if (!canSetState) { + return NO; + } + + if (state == isFullscreen) { + return YES; + } + + if (inFullscreenTransition) { + if (state) { + pendingFullscreenTransition = PENDING_TRANSITION_ENTER_FULLSCREEN; + } else { + pendingFullscreenTransition = PENDING_TRANSITION_LEAVE_FULLSCREEN; + } + return YES; + } + + [nswindow performSelector: @selector(toggleFullScreen:) withObject:nswindow]; + return YES; } - (void)close @@ -215,8 +259,7 @@ - (void)close [window setDelegate:nil]; } - [window removeObserver:self - forKeyPath:@"visible"]; + [window removeObserver:self forKeyPath:@"visible"]; if ([window nextResponder] == self) { [window setNextResponder:nil]; @@ -385,11 +428,18 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { inFullscreenTransition = NO; - [self windowDidResize:aNotification]; + + if (pendingFullscreenTransition != PENDING_TRANSITION_NONE) { + pendingFullscreenTransition = PENDING_TRANSITION_NONE; + [self setFullscreenState:NO]; + } else { + [self windowDidResize:aNotification]; + } } - (void)windowWillExitFullScreen:(NSNotification *)aNotification { + isFullscreen = NO; inFullscreenTransition = YES; } @@ -401,9 +451,14 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification if (!(window->flags & SDL_WINDOW_RESIZABLE)) { [nswindow setStyleMask:GetWindowStyle(window)]; } - isFullscreen = NO; inFullscreenTransition = NO; - [self windowDidResize:aNotification]; + + if (pendingFullscreenTransition != PENDING_TRANSITION_NONE) { + pendingFullscreenTransition = PENDING_TRANSITION_NONE; + [self setFullscreenState:YES]; + } else { + [self windowDidResize:aNotification]; + } } /* We'll respond to key events by doing nothing so we don't beep. @@ -1094,41 +1149,6 @@ - (void)resetCursorRects [pool release]; } -static SDL_bool -Cocoa_CanToggleFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) -{ - SDL_WindowData *data = (SDL_WindowData *) window->driverdata; - NSWindow *nswindow = data->nswindow; - - if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { - return SDL_FALSE; - } - - /* We can enter new style fullscreen mode for "fullscreen desktop" */ - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - return SDL_TRUE; - } - - /* We can always leave new style fullscreen mode */ - if (!fullscreen && [data->listener isToggledFullscreen]) { - return SDL_TRUE; - } - - /* Requesting a mode switched fullscreen mode */ - return SDL_FALSE; -} - -static void -Cocoa_SetWindowFullscreen_NewStyle(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) -{ - SDL_WindowData *data = (SDL_WindowData *) window->driverdata; - NSWindow *nswindow = data->nswindow; - - if (fullscreen != [data->listener isToggledFullscreen]) { - [nswindow performSelector: @selector(toggleFullScreen:) withObject:nswindow]; - } - ScheduleContextUpdates(data); -} static void Cocoa_SetWindowFullscreen_OldStyle(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) @@ -1212,10 +1232,9 @@ - (void)resetCursorRects Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; - if (Cocoa_CanToggleFullscreen(_this, window, display, fullscreen)) { - Cocoa_SetWindowFullscreen_NewStyle(_this, window, display, fullscreen); - } else { + if (![data->listener setFullscreenState:(fullscreen ? YES : NO)]) { Cocoa_SetWindowFullscreen_OldStyle(_this, window, display, fullscreen); } From 5f5a9fa69e2bd0c944b5dd2d23622dced15a9fc7 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 20:51:19 -0800 Subject: [PATCH 070/402] Fixed bug 2212 - SDL_SetTextInputRect has no effect on iOS philhassey Overview: While SDL_SetTextInputRect works perfectly to move my window out of the way of the virtual keyboard using SDL2/Android, on iOS this function has no effect. Steps to Reproduce: Call SDL_SetTextInputRect with a rect near the bottom of the screen before calling SDL_StartTextInput. Actual Results: The iOS virtual keyboard is displayed after calling SDL_StartTextInput, but the screen is not shifted to reveal the TextInputRect region. Expected Results: The screen should be shifted to reveal the TextInputRect region (like with SDL2/Android.) This patch implements SDL_SetTextInputRect for uikit/iOS. It sets up notification handlers to respond to changes in the display of the keyboard. These handlers then change the frame of the view so it is moved out of the way of the keyboard as per SetTextInputRect. --- src/video/uikit/SDL_uikitvideo.m | 1 + src/video/uikit/SDL_uikitview.h | 5 ++ src/video/uikit/SDL_uikitview.m | 104 +++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m index 74b24b8dad..7be5b1d666 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -89,6 +89,7 @@ static void UIKit_DeleteDevice(SDL_VideoDevice * device) device->ShowScreenKeyboard = UIKit_ShowScreenKeyboard; device->HideScreenKeyboard = UIKit_HideScreenKeyboard; device->IsScreenKeyboardShown = UIKit_IsScreenKeyboardShown; + device->SetTextInputRect = UIKit_SetTextInputRect; #endif /* OpenGL (ES) functions */ diff --git a/src/video/uikit/SDL_uikitview.h b/src/video/uikit/SDL_uikitview.h index ff8a7d2cfd..3921be136f 100644 --- a/src/video/uikit/SDL_uikitview.h +++ b/src/video/uikit/SDL_uikitview.h @@ -45,6 +45,8 @@ #if SDL_IPHONE_KEYBOARD UITextField *textField; BOOL keyboardVisible; + SDL_Rect textInputRect; + int keyboardHeight; #endif @public @@ -60,11 +62,14 @@ - (void)hideKeyboard; - (void)initializeKeyboard; @property (readonly) BOOL keyboardVisible; +@property (nonatomic,assign) SDL_Rect textInputRect; +@property (nonatomic,assign) int keyboardHeight; SDL_bool UIKit_HasScreenKeyboardSupport(_THIS); void UIKit_ShowScreenKeyboard(_THIS, SDL_Window *window); void UIKit_HideScreenKeyboard(_THIS, SDL_Window *window); SDL_bool UIKit_IsScreenKeyboardShown(_THIS, SDL_Window *window); +void UIKit_SetTextInputRect(_THIS, SDL_Rect *rect); #endif diff --git a/src/video/uikit/SDL_uikitview.m b/src/video/uikit/SDL_uikitview.m index 66129be23e..ca9cd06613 100644 --- a/src/video/uikit/SDL_uikitview.m +++ b/src/video/uikit/SDL_uikitview.m @@ -35,6 +35,8 @@ #include "SDL_uikitmodes.h" #include "SDL_uikitwindow.h" +void _uikit_keyboard_init() ; + @implementation SDL_uikitview - (void)dealloc @@ -197,6 +199,9 @@ - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event */ #if SDL_IPHONE_KEYBOARD +@synthesize textInputRect = textInputRect; +@synthesize keyboardHeight = keyboardHeight; + /* Is the iPhone virtual keyboard visible onscreen? */ - (BOOL)keyboardVisible { @@ -225,6 +230,8 @@ - (void)initializeKeyboard /* add the UITextField (hidden) to our view */ [self addSubview: textField]; [textField release]; + + _uikit_keyboard_init(); } /* reveal onscreen virtual keyboard */ @@ -352,6 +359,103 @@ SDL_bool UIKit_IsScreenKeyboardShown(_THIS, SDL_Window *window) return view.keyboardVisible; } + +void _uikit_keyboard_update() { + SDL_Window *window = SDL_GetFocusWindow(); + if (!window) { return; } + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + if (!data) { return; } + SDL_uikitview *view = data->view; + if (!view) { return; } + + SDL_Rect r = view.textInputRect; + int height = view.keyboardHeight; + int offsetx = 0; + int offsety = 0; + if (height) { + int sw,sh; + SDL_GetWindowSize(window,&sw,&sh); + int bottom = (r.y + r.h); + int kbottom = sh - height; + if (kbottom < bottom) { + offsety = kbottom-bottom; + } + } + UIInterfaceOrientation ui_orient = [[UIApplication sharedApplication] statusBarOrientation]; + if (ui_orient == UIInterfaceOrientationLandscapeLeft) { + int tmp = offsetx; offsetx = offsety; offsety = tmp; + } + if (ui_orient == UIInterfaceOrientationLandscapeRight) { + offsety = -offsety; + int tmp = offsetx; offsetx = offsety; offsety = tmp; + } + if (ui_orient == UIInterfaceOrientationPortraitUpsideDown) { + offsety = -offsety; + } + if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)]) { + float scale = [UIScreen mainScreen].scale; + offsetx /= scale; + offsety /= scale; + } + view.frame = CGRectMake(offsetx,offsety,view.frame.size.width,view.frame.size.height); +} + +void _uikit_keyboard_set_height(int height) { + SDL_uikitview *view = getWindowView(SDL_GetFocusWindow()); + if (view == nil) { + return ; + } + + view.keyboardHeight = height; + _uikit_keyboard_update(); +} + +void _uikit_keyboard_init() { + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + NSOperationQueue *queue = [NSOperationQueue mainQueue]; + [center addObserverForName:UIKeyboardWillShowNotification + object:nil + queue:queue + usingBlock:^(NSNotification *notification) { + int height = 0; + CGSize keyboardSize = [[[notification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; + height = keyboardSize.height; + UIInterfaceOrientation ui_orient = [[UIApplication sharedApplication] statusBarOrientation]; + if (ui_orient == UIInterfaceOrientationLandscapeRight || ui_orient == UIInterfaceOrientationLandscapeLeft) { + height = keyboardSize.width; + } + if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)]) { + height *= [UIScreen mainScreen].scale; + } + _uikit_keyboard_set_height(height); + } + ]; + [center addObserverForName:UIKeyboardDidHideNotification + object:nil + queue:queue + usingBlock:^(NSNotification *notification) { + _uikit_keyboard_set_height(0); + } + ]; +} + +void +UIKit_SetTextInputRect(_THIS, SDL_Rect *rect) +{ + if (!rect) { + SDL_InvalidParamError("rect"); + return; + } + + SDL_uikitview *view = getWindowView(SDL_GetFocusWindow()); + if (view == nil) { + return ; + } + + view.textInputRect = *rect; +} + + #endif /* SDL_IPHONE_KEYBOARD */ #endif /* SDL_VIDEO_DRIVER_UIKIT */ From 32f1174ab4e2b82287589afd0f65e0376333ceeb Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 21:21:18 -0800 Subject: [PATCH 071/402] Fixed assertion failure when minimizing a fullscreen window. --- src/video/cocoa/SDL_cocoawindow.h | 18 ++++++---- src/video/cocoa/SDL_cocoawindow.m | 58 +++++++++++++++++++++---------- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index dbe592a780..bbb5b6cf9c 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -27,6 +27,14 @@ typedef struct SDL_WindowData SDL_WindowData; +typedef enum +{ + PENDING_OPERATION_NONE, + PENDING_OPERATION_ENTER_FULLSCREEN, + PENDING_OPERATION_LEAVE_FULLSCREEN, + PENDING_OPERATION_MINIMIZE +} PendingWindowOperation; + @interface Cocoa_WindowListener : NSResponder { SDL_WindowData *_data; BOOL observingVisible; @@ -34,19 +42,15 @@ typedef struct SDL_WindowData SDL_WindowData; BOOL wasVisible; BOOL isFullscreen; BOOL inFullscreenTransition; - - enum - { - PENDING_TRANSITION_NONE, - PENDING_TRANSITION_ENTER_FULLSCREEN, - PENDING_TRANSITION_LEAVE_FULLSCREEN - } pendingFullscreenTransition; + PendingWindowOperation pendingWindowOperation; } -(void) listen:(SDL_WindowData *) data; -(void) pauseVisibleObservation; -(void) resumeVisibleObservation; -(BOOL) setFullscreenState:(BOOL) state; +-(BOOL) isInFullscreenTransition; +-(void) addPendingWindowOperation:(PendingWindowOperation) operation; -(void) close; /* Window delegate functionality */ diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 5ae119fc8e..1e5c24fdf5 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -103,7 +103,7 @@ - (void)listen:(SDL_WindowData *)data wasVisible = [window isVisible]; isFullscreen = NO; inFullscreenTransition = NO; - pendingFullscreenTransition = PENDING_TRANSITION_NONE; + pendingWindowOperation = PENDING_OPERATION_NONE; center = [NSNotificationCenter defaultCenter]; @@ -199,7 +199,7 @@ -(BOOL) setFullscreenState:(BOOL) state; return NO; } - pendingFullscreenTransition = PENDING_TRANSITION_NONE; + pendingWindowOperation = PENDING_OPERATION_NONE; /* We can enter new style fullscreen mode for "fullscreen desktop" */ if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { @@ -221,9 +221,9 @@ -(BOOL) setFullscreenState:(BOOL) state; if (inFullscreenTransition) { if (state) { - pendingFullscreenTransition = PENDING_TRANSITION_ENTER_FULLSCREEN; + [self addPendingWindowOperation:PENDING_OPERATION_ENTER_FULLSCREEN]; } else { - pendingFullscreenTransition = PENDING_TRANSITION_LEAVE_FULLSCREEN; + [self addPendingWindowOperation:PENDING_OPERATION_LEAVE_FULLSCREEN]; } return YES; } @@ -232,6 +232,16 @@ -(BOOL) setFullscreenState:(BOOL) state; return YES; } +-(BOOL) isInFullscreenTransition +{ + return inFullscreenTransition; +} + +-(void) addPendingWindowOperation:(PendingWindowOperation) operation +{ + pendingWindowOperation = operation; +} + - (void)close { NSNotificationCenter *center; @@ -328,8 +338,10 @@ - (void)windowDidMove:(NSNotification *)aNotification - (void)windowDidResize:(NSNotification *)aNotification { + SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; int x, y, w, h; - NSRect rect = [_data->nswindow contentRectForFrameRect:[_data->nswindow frame]]; + NSRect rect = [nswindow contentRectForFrameRect:[nswindow frame]]; ConvertNSRect(&rect); x = (int)rect.origin.x; y = (int)rect.origin.y; @@ -341,22 +353,22 @@ - (void)windowDidResize:(NSNotification *)aNotification return; } - if (SDL_IsShapedWindow(_data->window)) { - Cocoa_ResizeWindowShape(_data->window); + if (SDL_IsShapedWindow(window)) { + Cocoa_ResizeWindowShape(window); } ScheduleContextUpdates(_data); /* The window can move during a resize event, such as when maximizing or resizing from a corner */ - SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_MOVED, x, y); - SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_RESIZED, w, h); + SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MOVED, x, y); + SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESIZED, w, h); - const BOOL zoomed = [_data->nswindow isZoomed]; + const BOOL zoomed = [nswindow isZoomed]; if (!zoomed) { - SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_RESTORED, 0, 0); + SDL_SendWindowEvent(window, SDL_WINDOWEVENT_RESTORED, 0, 0); } else if (zoomed) { - SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_MAXIMIZED, 0, 0); + SDL_SendWindowEvent(window, SDL_WINDOWEVENT_MAXIMIZED, 0, 0); } } @@ -429,10 +441,11 @@ - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { inFullscreenTransition = NO; - if (pendingFullscreenTransition != PENDING_TRANSITION_NONE) { - pendingFullscreenTransition = PENDING_TRANSITION_NONE; + if (pendingWindowOperation == PENDING_OPERATION_LEAVE_FULLSCREEN) { + pendingWindowOperation = PENDING_OPERATION_NONE; [self setFullscreenState:NO]; } else { + pendingWindowOperation = PENDING_OPERATION_NONE; [self windowDidResize:aNotification]; } } @@ -453,10 +466,14 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification } inFullscreenTransition = NO; - if (pendingFullscreenTransition != PENDING_TRANSITION_NONE) { - pendingFullscreenTransition = PENDING_TRANSITION_NONE; + if (pendingWindowOperation == PENDING_OPERATION_ENTER_FULLSCREEN) { + pendingWindowOperation = PENDING_OPERATION_NONE; [self setFullscreenState:YES]; + } else if (pendingWindowOperation == PENDING_OPERATION_MINIMIZE) { + pendingWindowOperation = PENDING_OPERATION_NONE; + [nswindow miniaturize:nil]; } else { + pendingWindowOperation = PENDING_OPERATION_NONE; [self windowDidResize:aNotification]; } } @@ -1095,9 +1112,14 @@ - (void)resetCursorRects Cocoa_MinimizeWindow(_THIS, SDL_Window * window) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + NSWindow *nswindow = data->nswindow; - [nswindow miniaturize:nil]; + if ([data->listener isInFullscreenTransition]) { + [data->listener addPendingWindowOperation:PENDING_OPERATION_MINIMIZE]; + } else { + [nswindow miniaturize:nil]; + } [pool release]; } From cbca05de8b5a451b8e941446151376cc90e8a810 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 21:38:11 -0800 Subject: [PATCH 072/402] Fixed window resizing when entering and leaving fullscreen mode --- src/video/cocoa/SDL_cocoawindow.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 1e5c24fdf5..be6f6cf29d 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -452,18 +452,21 @@ - (void)windowDidEnterFullScreen:(NSNotification *)aNotification - (void)windowWillExitFullScreen:(NSNotification *)aNotification { + SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; + + if (!(window->flags & SDL_WINDOW_RESIZABLE)) { + [nswindow setStyleMask:GetWindowStyle(window)]; + } + isFullscreen = NO; inFullscreenTransition = YES; } - (void)windowDidExitFullScreen:(NSNotification *)aNotification { - SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - if (!(window->flags & SDL_WINDOW_RESIZABLE)) { - [nswindow setStyleMask:GetWindowStyle(window)]; - } inFullscreenTransition = NO; if (pendingWindowOperation == PENDING_OPERATION_ENTER_FULLSCREEN) { From 36d74ed8136bc5bab867b9b33af697438a60fbde Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 22:43:05 -0800 Subject: [PATCH 073/402] Fixed assertion when quickly toggling from fullscreen back to fullscreen: "Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'backgroundWindows not nil in enterFullScreenTransitionWithOptions:animated:activatingIt:'" To reproduce this, run testsprite2, press Alt-Enter once, again while it's animating to fullscreen, and then again while it's animating out of fullscreen. --- src/video/cocoa/SDL_cocoawindow.m | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index be6f6cf29d..1cd9b63a7e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -184,10 +184,6 @@ -(void) resumeVisibleObservation } } --(BOOL) canSetFullscreenState:(BOOL) state; -{ -} - -(BOOL) setFullscreenState:(BOOL) state; { SDL_Window *window = _data->window; @@ -228,7 +224,7 @@ -(BOOL) setFullscreenState:(BOOL) state; return YES; } - [nswindow performSelector: @selector(toggleFullScreen:) withObject:nswindow]; + [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; } @@ -433,12 +429,15 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification [nswindow setStyleMask:NSBorderlessWindowMask]; } } + isFullscreen = YES; inFullscreenTransition = YES; } - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { + SDL_Window *window = _data->window; + inFullscreenTransition = NO; if (pendingWindowOperation == PENDING_OPERATION_LEAVE_FULLSCREEN) { @@ -446,6 +445,11 @@ - (void)windowDidEnterFullScreen:(NSNotification *)aNotification [self setFullscreenState:NO]; } else { pendingWindowOperation = PENDING_OPERATION_NONE; + /* Force the size change event in case it was delivered earlier + while the window was still animating into place. + */ + window->w = 0; + window->h = 0; [self windowDidResize:aNotification]; } } @@ -465,6 +469,7 @@ - (void)windowWillExitFullScreen:(NSNotification *)aNotification - (void)windowDidExitFullScreen:(NSNotification *)aNotification { + SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; inFullscreenTransition = NO; @@ -477,6 +482,11 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification [nswindow miniaturize:nil]; } else { pendingWindowOperation = PENDING_OPERATION_NONE; + /* Force the size change event in case it was delivered earlier + while the window was still animating into place. + */ + window->w = 0; + window->h = 0; [self windowDidResize:aNotification]; } } From dd541e3ad5892e2d1df565feb63272769a5a5edd Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Nov 2013 23:42:43 -0800 Subject: [PATCH 074/402] Made sure the window had the correct border when manually being brought back from fullscreen mode. --- src/video/cocoa/SDL_cocoawindow.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 1cd9b63a7e..010373a72c 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -460,7 +460,10 @@ - (void)windowWillExitFullScreen:(NSNotification *)aNotification NSWindow *nswindow = _data->nswindow; if (!(window->flags & SDL_WINDOW_RESIZABLE)) { + Uint32 flags = window->flags; + window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; [nswindow setStyleMask:GetWindowStyle(window)]; + window->flags = flags; } isFullscreen = NO; From c94336544e9d1e1fcc0f593d986dc45656c59acf Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 12 Nov 2013 00:32:29 -0800 Subject: [PATCH 075/402] Fullscreen space naming cleanup to avoid confusion with normal fullscreen mode --- src/video/cocoa/SDL_cocoawindow.h | 4 +-- src/video/cocoa/SDL_cocoawindow.m | 42 ++++++++++++++++++------------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index bbb5b6cf9c..39992a4bd0 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -40,7 +40,7 @@ typedef enum BOOL observingVisible; BOOL wasCtrlLeft; BOOL wasVisible; - BOOL isFullscreen; + BOOL isFullscreenSpace; BOOL inFullscreenTransition; PendingWindowOperation pendingWindowOperation; } @@ -48,7 +48,7 @@ typedef enum -(void) listen:(SDL_WindowData *) data; -(void) pauseVisibleObservation; -(void) resumeVisibleObservation; --(BOOL) setFullscreenState:(BOOL) state; +-(BOOL) setFullscreenSpace:(BOOL) state; -(BOOL) isInFullscreenTransition; -(void) addPendingWindowOperation:(PendingWindowOperation) operation; -(void) close; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 010373a72c..54bb94e29e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -101,7 +101,7 @@ - (void)listen:(SDL_WindowData *)data observingVisible = YES; wasCtrlLeft = NO; wasVisible = [window isVisible]; - isFullscreen = NO; + isFullscreenSpace = NO; inFullscreenTransition = NO; pendingWindowOperation = PENDING_OPERATION_NONE; @@ -184,34 +184,38 @@ -(void) resumeVisibleObservation } } --(BOOL) setFullscreenState:(BOOL) state; +-(BOOL) setFullscreenSpace:(BOOL) state; { +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - BOOL canSetState = NO; + BOOL canSetSpace = NO; - /* Make sure we can support this fullscreen style */ - if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { + /* Make sure the window supports switching to fullscreen spaces */ + if (![nswindow respondsToSelector: @selector(collectionBehavior)]) { + return NO; + } + if ([nswindow collectionBehavior] != NSWindowCollectionBehaviorFullScreenPrimary) { return NO; } pendingWindowOperation = PENDING_OPERATION_NONE; - /* We can enter new style fullscreen mode for "fullscreen desktop" */ + /* We can enter fullscreen spaces for "fullscreen desktop" */ if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - canSetState = YES; + canSetSpace = YES; } - /* We can always leave new style fullscreen mode */ - if (!state && isFullscreen) { - canSetState = YES; + /* We can always leave fullscreen spaces */ + if (!state && isFullscreenSpace) { + canSetSpace = YES; } - if (!canSetState) { + if (!canSetSpace) { return NO; } - if (state == isFullscreen) { + if (state == isFullscreenSpace) { return YES; } @@ -226,6 +230,9 @@ -(BOOL) setFullscreenState:(BOOL) state; [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; +#else + return NO +#endif /* SDK >= 10.7 */ } -(BOOL) isInFullscreenTransition @@ -430,19 +437,20 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification } } - isFullscreen = YES; + isFullscreenSpace = YES; inFullscreenTransition = YES; } - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; inFullscreenTransition = NO; if (pendingWindowOperation == PENDING_OPERATION_LEAVE_FULLSCREEN) { pendingWindowOperation = PENDING_OPERATION_NONE; - [self setFullscreenState:NO]; + [self setFullscreenSpace:NO]; } else { pendingWindowOperation = PENDING_OPERATION_NONE; /* Force the size change event in case it was delivered earlier @@ -466,7 +474,7 @@ - (void)windowWillExitFullScreen:(NSNotification *)aNotification window->flags = flags; } - isFullscreen = NO; + isFullscreenSpace = NO; inFullscreenTransition = YES; } @@ -479,7 +487,7 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification if (pendingWindowOperation == PENDING_OPERATION_ENTER_FULLSCREEN) { pendingWindowOperation = PENDING_OPERATION_NONE; - [self setFullscreenState:YES]; + [self setFullscreenSpace:YES]; } else if (pendingWindowOperation == PENDING_OPERATION_MINIMIZE) { pendingWindowOperation = PENDING_OPERATION_NONE; [nswindow miniaturize:nil]; @@ -1272,7 +1280,7 @@ - (void)resetCursorRects NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDL_WindowData *data = (SDL_WindowData *) window->driverdata; - if (![data->listener setFullscreenState:(fullscreen ? YES : NO)]) { + if (![data->listener setFullscreenSpace:(fullscreen ? YES : NO)]) { Cocoa_SetWindowFullscreen_OldStyle(_this, window, display, fullscreen); } From 36237faa053502c10872f81814f3f58f0ed5fab1 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 12 Nov 2013 01:52:54 -0800 Subject: [PATCH 076/402] Added a hint SDL_HINT_VIDEO_FULLSCREEN_SPACES to specify that windows go fullscreen into their own spaces on Mac OS X. --- include/SDL_hints.h | 10 ++++ src/video/SDL_video.c | 17 +++++- src/video/cocoa/SDL_cocoawindow.h | 3 +- src/video/cocoa/SDL_cocoawindow.m | 92 +++++++++++++++---------------- 4 files changed, 72 insertions(+), 50 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 8e561fb31f..763154f3ae 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -178,6 +178,16 @@ extern "C" { */ #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" +/** + * \brief Set whether windows go fullscreen in their own spaces on Mac OS X + * + * This variable can be set to the following values: + * "0" - Fullscreen windows will use the classic fullscreen mode + * "1" - Fullscreen windows will use fullscreen spaces + * + * By default SDL will use the classic fullscreen mode. + */ +#define SDL_HINT_VIDEO_FULLSCREEN_SPACES "SDL_VIDEO_FULLSCREEN_SPACES" /** * \brief A variable controlling whether the idle timer is disabled on iOS. diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 0f0b3e6f7d..2042d07e11 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -112,6 +112,13 @@ static SDL_VideoDevice *_this = NULL; return retval; \ } + +#ifdef __MACOSX__ +/* Support for Mac OS X fullscreen spaces */ +extern SDL_bool Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state); +#endif + + /* Support for framebuffer emulation using an accelerated renderer */ #define SDL_WINDOWTEXTUREDATA "_SDL_WindowTextureData" @@ -1080,9 +1087,17 @@ SDL_RestoreMousePosition(SDL_Window *window) static void SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) { - SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window); + SDL_VideoDisplay *display; SDL_Window *other; +#ifdef __MACOSX__ + if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) { + return; + } +#endif + + display = SDL_GetDisplayForWindow(window); + if (fullscreen) { /* Hide any other fullscreen windows */ if (display->fullscreen_window && diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 39992a4bd0..44eb969362 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -49,7 +49,8 @@ typedef enum -(void) pauseVisibleObservation; -(void) resumeVisibleObservation; -(BOOL) setFullscreenSpace:(BOOL) state; --(BOOL) isInFullscreenTransition; +-(BOOL) isInFullscreenSpace; +-(BOOL) isInFullscreenSpaceTransition; -(void) addPendingWindowOperation:(PendingWindowOperation) operation; -(void) close; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 54bb94e29e..182e634e59 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -189,9 +189,7 @@ -(BOOL) setFullscreenSpace:(BOOL) state; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - BOOL canSetSpace = NO; - /* Make sure the window supports switching to fullscreen spaces */ if (![nswindow respondsToSelector: @selector(collectionBehavior)]) { return NO; } @@ -199,22 +197,6 @@ -(BOOL) setFullscreenSpace:(BOOL) state; return NO; } - pendingWindowOperation = PENDING_OPERATION_NONE; - - /* We can enter fullscreen spaces for "fullscreen desktop" */ - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - canSetSpace = YES; - } - - /* We can always leave fullscreen spaces */ - if (!state && isFullscreenSpace) { - canSetSpace = YES; - } - - if (!canSetSpace) { - return NO; - } - if (state == isFullscreenSpace) { return YES; } @@ -227,6 +209,14 @@ -(BOOL) setFullscreenSpace:(BOOL) state; } return YES; } + inFullscreenTransition = YES; + + /* Update the flags here so the state change is available immediately */ + if (state) { + window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP; + } else { + window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; + } [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; @@ -235,7 +225,12 @@ -(BOOL) setFullscreenSpace:(BOOL) state; #endif /* SDK >= 10.7 */ } --(BOOL) isInFullscreenTransition +-(BOOL) isInFullscreenSpace +{ + return isFullscreenSpace; +} + +-(BOOL) isInFullscreenSpaceTransition { return inFullscreenTransition; } @@ -429,13 +424,8 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - if (!(window->flags & SDL_WINDOW_RESIZABLE)) { - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - [nswindow setStyleMask:(NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)]; - } else { - [nswindow setStyleMask:NSBorderlessWindowMask]; - } - } + window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP; + [nswindow setStyleMask:(NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)]; isFullscreenSpace = YES; inFullscreenTransition = YES; @@ -444,7 +434,6 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; - NSWindow *nswindow = _data->nswindow; inFullscreenTransition = NO; @@ -467,12 +456,8 @@ - (void)windowWillExitFullScreen:(NSNotification *)aNotification SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - if (!(window->flags & SDL_WINDOW_RESIZABLE)) { - Uint32 flags = window->flags; - window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; - [nswindow setStyleMask:GetWindowStyle(window)]; - window->flags = flags; - } + window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; + [nswindow setStyleMask:GetWindowStyle(window)]; isFullscreenSpace = NO; inFullscreenTransition = YES; @@ -925,7 +910,10 @@ - (void)resetCursorRects [nswindow setBackgroundColor:[NSColor blackColor]]; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 if ([nswindow respondsToSelector:@selector(setCollectionBehavior:)]) { - [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; + const char *hint = SDL_GetHint(SDL_HINT_VIDEO_FULLSCREEN_SPACES); + if (hint && SDL_atoi(hint) > 0) { + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; + } } #endif @@ -1139,7 +1127,7 @@ - (void)resetCursorRects SDL_WindowData *data = (SDL_WindowData *) window->driverdata; NSWindow *nswindow = data->nswindow; - if ([data->listener isInFullscreenTransition]) { + if ([data->listener isInFullscreenSpaceTransition]) { [data->listener addPendingWindowOperation:PENDING_OPERATION_MINIMIZE]; } else { [nswindow miniaturize:nil]; @@ -1196,9 +1184,10 @@ - (void)resetCursorRects } -static void -Cocoa_SetWindowFullscreen_OldStyle(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) +void +Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) { + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDL_WindowData *data = (SDL_WindowData *) window->driverdata; NSWindow *nswindow = data->nswindow; NSRect rect; @@ -1272,17 +1261,6 @@ - (void)resetCursorRects } ScheduleContextUpdates(data); -} - -void -Cocoa_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, SDL_bool fullscreen) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - SDL_WindowData *data = (SDL_WindowData *) window->driverdata; - - if (![data->listener setFullscreenSpace:(fullscreen ? YES : NO)]) { - Cocoa_SetWindowFullscreen_OldStyle(_this, window, display, fullscreen); - } [pool release]; } @@ -1404,6 +1382,24 @@ - (void)resetCursorRects } } +SDL_bool +Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state) +{ + SDL_bool succeeded = SDL_FALSE; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + + if ([data->listener setFullscreenSpace:(state ? YES : NO)]) { + succeeded = SDL_TRUE; + } + + [pool release]; +#endif /* SDK 10.7+ */ + + return succeeded; +} + #endif /* SDL_VIDEO_DRIVER_COCOA */ /* vi: set ts=4 sw=4 expandtab: */ From 779e0bece2689a48550f68e564503bbe813ed827 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 12 Nov 2013 02:02:12 -0800 Subject: [PATCH 077/402] We still want to generally minimize on focus loss, but not when we're in a fullscreen space on Mac OS X. --- src/video/SDL_video.c | 13 ++++++------- src/video/cocoa/SDL_cocoawindow.m | 12 ++++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 2042d07e11..88f6d7e79a 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -115,6 +115,7 @@ static SDL_VideoDevice *_this = NULL; #ifdef __MACOSX__ /* Support for Mac OS X fullscreen spaces */ +extern SDL_bool Cocoa_IsWindowInFullscreenSpace(SDL_Window * window); extern SDL_bool Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state); #endif @@ -2152,19 +2153,17 @@ SDL_OnWindowFocusGained(SDL_Window * window) static SDL_bool ShouldMinimizeOnFocusLoss(SDL_Window * window) { - SDL_bool default_minimize; const char *hint; if (!(window->flags & SDL_WINDOW_FULLSCREEN)) { return SDL_FALSE; } - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - /* We're not doing a mode switch, so it's okay to stay around */ - default_minimize = SDL_FALSE; - } else { - default_minimize = SDL_TRUE; +#ifdef __MACOSX__ + if (Cocoa_IsWindowInFullscreenSpace(window)) { + return SDL_FALSE; } +#endif hint = SDL_GetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS); if (hint) { @@ -2175,7 +2174,7 @@ ShouldMinimizeOnFocusLoss(SDL_Window * window) } } - return default_minimize; + return SDL_TRUE; } void diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 182e634e59..4c1f359b3b 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -1382,6 +1382,18 @@ - (void)resetCursorRects } } +SDL_bool +Cocoa_IsWindowInFullscreenSpace(SDL_Window * window) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + + if ([data->listener isInFullscreenSpace]) { + return SDL_TRUE; + } else { + return SDL_FALSE; + } +} + SDL_bool Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state) { From 390017b5246f868104a372dbe510614b7a20b28c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 12 Nov 2013 02:04:12 -0800 Subject: [PATCH 078/402] Fixed build error with SDK < 10.7 --- src/video/cocoa/SDL_cocoawindow.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 4c1f359b3b..6899885d9e 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -221,7 +221,7 @@ -(BOOL) setFullscreenSpace:(BOOL) state; [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; #else - return NO + return NO; #endif /* SDK >= 10.7 */ } From d7c07cc075e309c1a7df661a8036a60ae51d7ddd Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 12 Nov 2013 02:18:52 -0800 Subject: [PATCH 079/402] Retain the high dpi flag when recreating the window (e.g when creating a renderer context) --- src/video/SDL_video.c | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 88f6d7e79a..3169fdacc7 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1175,7 +1175,7 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) } #define CREATE_FLAGS \ - (SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS | SDL_WINDOW_RESIZABLE) + (SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI) static void SDL_FinishWindowCreation(SDL_Window *window, Uint32 flags) @@ -1236,6 +1236,17 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) return NULL; } } + + /* Unless the user has specified the high-DPI disabling hint, respect the + * SDL_WINDOW_ALLOW_HIGHDPI flag. + */ + if (flags & SDL_WINDOW_ALLOW_HIGHDPI) { + hint = SDL_GetHint(SDL_HINT_VIDEO_HIGHDPI_DISABLED); + if (hint && SDL_atoi(hint) > 0) { + flags &= ~SDL_WINDOW_ALLOW_HIGHDPI; + } + } + window = (SDL_Window *)SDL_calloc(1, sizeof(*window)); if (!window) { SDL_OutOfMemory(); @@ -1266,16 +1277,6 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) window->brightness = 1.0f; window->next = _this->windows; - /* Unless the user has specified the high-DPI disabling hint, respect the - * SDL_WINDOW_ALLOW_HIGHDPI flag. - */ - hint = SDL_GetHint(SDL_HINT_VIDEO_HIGHDPI_DISABLED); - if (!hint || *hint != '1') { - if ((flags & SDL_WINDOW_ALLOW_HIGHDPI)) { - window->flags |= SDL_WINDOW_ALLOW_HIGHDPI; - } - } - if (_this->windows) { _this->windows->prev = window; } From 4d28bc16ffe670b4f001ef27c1e1412370b37829 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 12 Nov 2013 11:28:42 -0300 Subject: [PATCH 080/402] Linux README explaining build vs runtime, and build deps for Ubuntu 13.04 Build dependencies list for Ubuntu 13.04 provided by Ryan. --- README-linux.txt | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 README-linux.txt diff --git a/README-linux.txt b/README-linux.txt new file mode 100644 index 0000000000..97e21e748f --- /dev/null +++ b/README-linux.txt @@ -0,0 +1,25 @@ +================================================================================ +Simple DirectMedia Layer for Linux +================================================================================ + +By default SDL will only link against glibc, the rest of the features will be +enabled dynamically at runtime depending on the available features on the target +system. So, for example if you built SDL with Xinerama support and the target +system does not have the Xinerama libraries installed, it will be disabled +at runtime, and you won't get a missing library error, at least with the +default configuration parameters. + + +================================================================================ +Build Dependencies +================================================================================ + +Ubuntu 13.04, all available features enabled: + +sudo apt-get install build-essential mercurial make cmake autoconf automake \ +libtool libasound2-dev libpulse-dev libaudio-dev libx11-dev libxext-dev \ +libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \ +libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \ +libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev + + From e93918028b90c2370168dea25fdf17c166429cc6 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 12 Nov 2013 11:31:13 -0300 Subject: [PATCH 081/402] Added a few notes from Ryan's email to README-linux.txt --- README-linux.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README-linux.txt b/README-linux.txt index 97e21e748f..d147b16f30 100644 --- a/README-linux.txt +++ b/README-linux.txt @@ -22,4 +22,11 @@ libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxxf86vm-dev \ libxss-dev libgl1-mesa-dev libesd0-dev libdbus-1-dev libudev-dev \ libgles1-mesa-dev libgles2-mesa-dev libegl1-mesa-dev +NOTES: +- This includes all the audio targets except arts, because Ubuntu pulled the + artsc0-dev package, but in theory SDL still supports it. +- DirectFB isn't included because the configure script (currently) fails to find + it at all. You can do "sudo apt-get install libdirectfb-dev" and fix the + configure script to include DirectFB support. Send patches. :) + From dfe2709564e15b3c76c6c7dd6d80a94fb12a62be Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 13 Nov 2013 09:41:21 -0300 Subject: [PATCH 082/402] Updated androidbuild.sh to enable parallel builds and ndk-build parameters --- build-scripts/androidbuild.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/build-scripts/androidbuild.sh b/build-scripts/androidbuild.sh index eed062256b..ea6e6b1bc5 100755 --- a/build-scripts/androidbuild.sh +++ b/build-scripts/androidbuild.sh @@ -25,6 +25,7 @@ if [ -z "$1" ] || [ -z "$SOURCES" ]; then echo "Usage: androidbuild.sh com.yourcompany.yourapp < sources.list" echo "Usage: androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c" echo "To copy SDL source instead of symlinking: COPYSOURCE=1 androidbuild.sh ... " + echo "You can pass additional arguments to ndk-build with the NDKARGS variable: NDKARGS=\"-s\" androidbuild.sh ..." exit 1 fi @@ -51,6 +52,19 @@ if [ -z "$ANT" ];then exit 1 fi +NCPUS="1" +case "$OSTYPE" in + darwin*) + NCPU=`sysctl -n hw.ncpu` + ;; + linux*) + if [ -n `which nproc` ]; then + NCPUS=`nproc` + fi + ;; + *);; +esac + APP="$1" APPARR=(${APP//./ }) BUILDPATH="$SDLPATH/build/$APP" @@ -102,7 +116,7 @@ echo "public class $ACTIVITY extends SDLActivity {}" >> "$ACTIVITY.java" # Update project and build cd $BUILDPATH android update project --path $BUILDPATH -$NDKBUILD +$NDKBUILD -j $NCPUS $NDKARGS $ANT debug cd $CURDIR From 8609f76f78878f20ca4dde3b2079b50a6d68d718 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 13 Nov 2013 11:18:37 -0300 Subject: [PATCH 083/402] [Windows] Fixes bug #1555, handle ALT+F4 on Windows --- src/video/windows/SDL_windowsevents.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 6a0dd44d76..34fcbc6ac9 100755 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -535,9 +535,19 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_KEYUP: { SDL_Scancode code = WindowsScanCodeToSDLScanCode( lParam, wParam ); + const Uint8 *keyboardState = SDL_GetKeyboardState(NULL); + + /* Detect relevant keyboard shortcuts */ + if (keyboardState[SDL_SCANCODE_LALT] == SDL_PRESSED || keyboardState[SDL_SCANCODE_RALT] == SDL_PRESSED ) { + /* ALT+F4: Close window */ + if (code == SDL_SCANCODE_F4) { + SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0); + } + } + if ( code != SDL_SCANCODE_UNKNOWN ) { if (code == SDL_SCANCODE_PRINTSCREEN && - SDL_GetKeyboardState(NULL)[code] == SDL_RELEASED) { + keyboardState[code] == SDL_RELEASED) { SDL_SendKeyboardKey(SDL_PRESSED, code); } SDL_SendKeyboardKey(SDL_RELEASED, code); From 51b8e8183e5b91d72afe8b8dcac08036ea60b961 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 13 Nov 2013 21:50:59 -0800 Subject: [PATCH 084/402] Diagonal flipping with RenderCopyEx Ivan Rubinson As it turns out, it was impossible to render a texture flipped diagonally (both vertically and horizontally) with one RenderCopyEx call. With help from #SDL @ freenode, we came up with a fix. --- src/render/direct3d/SDL_render_d3d.c | 36 +++++++++++++++------------- src/render/opengl/SDL_render_gl.c | 30 +++++++++++++---------- 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index a4c6027573..38fb6d0823 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1635,22 +1635,26 @@ D3D_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, centerx = center->x; centery = center->y; - if (flip & SDL_FLIP_HORIZONTAL) { - minx = dstrect->w - centerx - 0.5f; - maxx = -centerx - 0.5f; - } - else { - minx = -centerx - 0.5f; - maxx = dstrect->w - centerx - 0.5f; - } - - if (flip & SDL_FLIP_VERTICAL) { - miny = dstrect->h - centery - 0.5f; - maxy = -centery - 0.5f; - } - else { - miny = -centery - 0.5f; - maxy = dstrect->h - centery - 0.5f; + if ((flip & SDL_FLIP_VERTICAL) && (flip & SDL_FLIP_HORIZONTAL)) { + miny = dstrect->h - centery; + maxy = -centery; + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_HORIZONTAL) { + miny = -centery; + maxy = dstrect->h - centery; + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_VERTICAL) { + miny = dstrect->h - centery; + maxy = -centery; + minx = -centerx; + maxx = dstrect->w - centerx; + } else { + miny = -centery; + maxy = dstrect->h - centery; + minx = -centerx; + maxx = dstrect->w - centerx; } minu = (float) srcrect->x / texture->w; diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 94914ead18..bb789c1380 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -1250,22 +1250,26 @@ GL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, centerx = center->x; centery = center->y; - if (flip & SDL_FLIP_HORIZONTAL) { - minx = dstrect->w - centerx; + if ((flip & SDL_FLIP_VERTICAL) && (flip & SDL_FLIP_HORIZONTAL)) { + miny = dstrect->h - centery; + maxy = -centery; + minx = dstrect->w - centerx; maxx = -centerx; - } - else { - minx = -centerx; - maxx = dstrect->w - centerx; - } - - if (flip & SDL_FLIP_VERTICAL) { - miny = dstrect->h - centery; + } else if (flip & SDL_FLIP_HORIZONTAL) { + miny = -centery; + maxy = dstrect->h - centery; + minx = dstrect->w - centerx; + maxx = -centerx; + } else if (flip & SDL_FLIP_VERTICAL) { + miny = dstrect->h - centery; maxy = -centery; - } - else { + minx = -centerx; + maxx = dstrect->w - centerx; + } else { miny = -centery; - maxy = dstrect->h - centery; + maxy = dstrect->h - centery; + minx = -centerx; + maxx = dstrect->w - centerx; } minu = (GLfloat) srcrect->x / texture->w; From 37c9dda511660ed0e99ead0075e07080e40a370e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 13 Nov 2013 22:35:26 -0500 Subject: [PATCH 085/402] Started BeOS removal: merged BeOS thread and pthread code. Haiku uses most of the standard pthread API, with a few #ifdefs where we still need to fallback onto the old BeOS APIs. BeOS, however, does not support pthreads (or maybe doesn't support it well), so I'm unplugging support for the platform with this changeset. Be Inc went out of business in 2001. --- CMakeLists.txt | 2 + cmake/sdlchecks.cmake | 3 + configure | 19 ++-- configure.in | 19 ++-- include/SDL_config.h.cmake | 1 - include/SDL_config.h.in | 1 - src/audio/baudio/SDL_beaudio.cc | 30 +++++- src/thread/SDL_thread_c.h | 4 - src/thread/beos/SDL_syssem.c | 151 ----------------------------- src/thread/beos/SDL_systhread.c | 126 ------------------------ src/thread/beos/SDL_systhread_c.h | 32 ------ src/thread/beos/SDL_systls.c | 70 ------------- src/thread/pthread/SDL_systhread.c | 11 ++- 13 files changed, 61 insertions(+), 408 deletions(-) delete mode 100644 src/thread/beos/SDL_syssem.c delete mode 100644 src/thread/beos/SDL_systhread.c delete mode 100644 src/thread/beos/SDL_systhread_c.h delete mode 100644 src/thread/beos/SDL_systls.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 489421f273..a66a1ad243 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1012,6 +1012,8 @@ elseif(BEOS) set(HAVE_VIDEO_OPENGL TRUE) endif(VIDEO_OPENGL) endif(SDL_VIDEO) + + CheckPTHREAD() endif() # Dummies diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index fe763785cb..f71ad906ef 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -638,6 +638,9 @@ macro(CheckPTHREAD) elseif(HPUX) set(PTHREAD_CFLAGS "-D_REENTRANT") set(PTHREAD_LDFLAGS "-L/usr/lib -pthread") + elseif(BEOS) + set(PTHREAD_CFLAGS "-D_REENTRANT") + set(PTHREAD_LDFLAGS "") else() set(PTHREAD_CFLAGS "-D_REENTRANT") set(PTHREAD_LDFLAGS "-lpthread") diff --git a/configure b/configure index ba24894308..a441a3e138 100755 --- a/configure +++ b/configure @@ -21006,6 +21006,10 @@ fi pthread_cflags="-D_REENTRANT" pthread_lib="-L/usr/lib -lpthread" ;; + *-*-haiku*) + pthread_cflags="-D_REENTRANT" + pthread_lib="" + ;; *) pthread_cflags="-D_REENTRANT" pthread_lib="-lpthread" @@ -22394,7 +22398,9 @@ fi SDL_LIBS="-lcygwin $SDL_LIBS" fi ;; - *-*-beos* | *-*-haiku*) + + + *-*-haiku*) ARCH=beos ac_default_prefix=/boot/common CheckDummyVideo @@ -22402,6 +22408,7 @@ fi CheckDummyAudio CheckBWINDOW CheckBeGL + CheckPTHREAD # Set up files for the audio library if test x$enable_audio = xyes; then @@ -22418,16 +22425,6 @@ $as_echo "#define SDL_JOYSTICK_BEOS 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc" have_joystick=yes fi - # Set up files for the thread library - if test x$enable_threads = xyes; then - -$as_echo "#define SDL_THREAD_BEOS 1" >>confdefs.h - - SOURCES="$SOURCES $srcdir/src/thread/beos/*.c" - SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_sysmutex.c" - SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c" - have_threads=yes - fi # Set up files for the timer library if test x$enable_timers = xyes; then diff --git a/configure.in b/configure.in index 5c56f00801..87513fe92e 100644 --- a/configure.in +++ b/configure.in @@ -1940,6 +1940,10 @@ AC_HELP_STRING([--enable-pthread-sem], [use pthread semaphores [[default=yes]]]) pthread_cflags="-D_REENTRANT" pthread_lib="-L/usr/lib -lpthread" ;; + *-*-haiku*) + pthread_cflags="-D_REENTRANT" + pthread_lib="" + ;; *) pthread_cflags="-D_REENTRANT" pthread_lib="-lpthread" @@ -2613,7 +2617,11 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau SDL_LIBS="-lcygwin $SDL_LIBS" fi ;; - *-*-beos* | *-*-haiku*) + + dnl BeOS support removed after SDL 2.0.1. Haiku still works. --ryan. + dnl *-*-beos*) + + *-*-haiku*) ARCH=beos ac_default_prefix=/boot/common CheckDummyVideo @@ -2621,6 +2629,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau CheckDummyAudio CheckBWINDOW CheckBeGL + CheckPTHREAD # Set up files for the audio library if test x$enable_audio = xyes; then AC_DEFINE(SDL_AUDIO_DRIVER_BEOSAUDIO, 1, [ ]) @@ -2633,14 +2642,6 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc" have_joystick=yes fi - # Set up files for the thread library - if test x$enable_threads = xyes; then - AC_DEFINE(SDL_THREAD_BEOS, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/thread/beos/*.c" - SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_sysmutex.c" - SOURCES="$SOURCES $srcdir/src/thread/generic/SDL_syscond.c" - have_threads=yes - fi # Set up files for the timer library if test x$enable_timers = xyes; then AC_DEFINE(SDL_TIMER_BEOS, 1, [ ]) diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 66107e49eb..2f1137643e 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -237,7 +237,6 @@ #cmakedefine SDL_LOADSO_WINDOWS @SDL_LOADSO_WINDOWS@ /* Enable various threading systems */ -#cmakedefine SDL_THREAD_BEOS @SDL_THREAD_BEOS@ #cmakedefine SDL_THREAD_PTHREAD @SDL_THREAD_PTHREAD@ #cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX@ #cmakedefine SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP @SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index b2daf6fa30..5f41e1bbb8 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -240,7 +240,6 @@ #undef SDL_LOADSO_WINDOWS /* Enable various threading systems */ -#undef SDL_THREAD_BEOS #undef SDL_THREAD_PTHREAD #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP diff --git a/src/audio/baudio/SDL_beaudio.cc b/src/audio/baudio/SDL_beaudio.cc index e2edf85fba..86fb781538 100644 --- a/src/audio/baudio/SDL_beaudio.cc +++ b/src/audio/baudio/SDL_beaudio.cc @@ -25,6 +25,7 @@ /* Allow access to the audio stream on BeOS */ #include +#include #include "../../main/beos/SDL_BeApp.h" @@ -85,6 +86,31 @@ BEOSAUDIO_CloseDevice(_THIS) } } + +static const int sig_list[] = { + SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGALRM, SIGTERM, SIGWINCH, 0 +}; + +static inline void +MaskSignals(sigset_t * omask) +{ + sigset_t mask; + int i; + + sigemptyset(&mask); + for (i = 0; sig_list[i]; ++i) { + sigaddset(&mask, sig_list[i]); + } + sigprocmask(SIG_BLOCK, &mask, omask); +} + +static inline void +UnmaskSignals(sigset_t * omask) +{ + sigprocmask(SIG_SETMASK, omask, NULL); +} + + static int BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) { @@ -162,10 +188,10 @@ BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) /* Subscribe to the audio stream (creates a new thread) */ sigset_t omask; - SDL_MaskSignals(&omask); + MaskSignals(&omask); _this->hidden->audio_obj = new BSoundPlayer(&format, "SDL Audio", FillSound, NULL, _this); - SDL_UnmaskSignals(&omask); + UnmaskSignals(&omask); if (_this->hidden->audio_obj->Start() == B_NO_ERROR) { _this->hidden->audio_obj->SetHasData(true); diff --git a/src/thread/SDL_thread_c.h b/src/thread/SDL_thread_c.h index c7b063e07e..4fe9254942 100644 --- a/src/thread/SDL_thread_c.h +++ b/src/thread/SDL_thread_c.h @@ -28,10 +28,6 @@ /* Need the definitions of SYS_ThreadHandle */ #if SDL_THREADS_DISABLED #include "generic/SDL_systhread_c.h" -#elif SDL_THREAD_BEOS -#include "beos/SDL_systhread_c.h" -#elif SDL_THREAD_EPOC -#include "epoc/SDL_systhread_c.h" #elif SDL_THREAD_PTHREAD #include "pthread/SDL_systhread_c.h" #elif SDL_THREAD_WINDOWS diff --git a/src/thread/beos/SDL_syssem.c b/src/thread/beos/SDL_syssem.c deleted file mode 100644 index 9661f90121..0000000000 --- a/src/thread/beos/SDL_syssem.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ -#include "SDL_config.h" - -#ifdef SDL_THREAD_BEOS - -/* Semaphores in the BeOS environment */ - -#include - -#include "SDL_thread.h" - - -struct SDL_semaphore -{ - sem_id id; -}; - -/* Create a counting semaphore */ -SDL_sem * -SDL_CreateSemaphore(Uint32 initial_value) -{ - SDL_sem *sem; - - sem = (SDL_sem *) SDL_malloc(sizeof(*sem)); - if (sem) { - sem->id = create_sem(initial_value, "SDL semaphore"); - if (sem->id < B_NO_ERROR) { - SDL_SetError("create_sem() failed"); - SDL_free(sem); - sem = NULL; - } - } else { - SDL_OutOfMemory(); - } - return (sem); -} - -/* Free the semaphore */ -void -SDL_DestroySemaphore(SDL_sem * sem) -{ - if (sem) { - if (sem->id >= B_NO_ERROR) { - delete_sem(sem->id); - } - SDL_free(sem); - } -} - -int -SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout) -{ - int32 val; - int retval; - - if (!sem) { - return SDL_SetError("Passed a NULL semaphore"); - } - - tryagain: - if (timeout == SDL_MUTEX_MAXWAIT) { - val = acquire_sem(sem->id); - } else { - timeout *= 1000; /* BeOS uses a timeout in microseconds */ - val = acquire_sem_etc(sem->id, 1, B_RELATIVE_TIMEOUT, timeout); - } - switch (val) { - case B_INTERRUPTED: - goto tryagain; - case B_NO_ERROR: - retval = 0; - break; - case B_TIMED_OUT: - retval = SDL_MUTEX_TIMEDOUT; - break; - case B_WOULD_BLOCK: - retval = SDL_MUTEX_TIMEDOUT; - break; - default: - retval = SDL_SetError("acquire_sem() failed"); - break; - } - - return retval; -} - -int -SDL_SemTryWait(SDL_sem * sem) -{ - return SDL_SemWaitTimeout(sem, 0); -} - -int -SDL_SemWait(SDL_sem * sem) -{ - return SDL_SemWaitTimeout(sem, SDL_MUTEX_MAXWAIT); -} - -/* Returns the current count of the semaphore */ -Uint32 -SDL_SemValue(SDL_sem * sem) -{ - int32 count; - Uint32 value; - - value = 0; - if (sem) { - get_sem_count(sem->id, &count); - if (count > 0) { - value = (Uint32) count; - } - } - return value; -} - -/* Atomically increases the semaphore's count (not blocking) */ -int -SDL_SemPost(SDL_sem * sem) -{ - if (!sem) { - return SDL_SetError("Passed a NULL semaphore"); - } - - if (release_sem(sem->id) != B_NO_ERROR) { - return SDL_SetError("release_sem() failed"); - } - return 0; -} - -#endif /* SDL_THREAD_BEOS */ - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/beos/SDL_systhread.c b/src/thread/beos/SDL_systhread.c deleted file mode 100644 index 11646f9749..0000000000 --- a/src/thread/beos/SDL_systhread.c +++ /dev/null @@ -1,126 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ -#include "SDL_config.h" - -#ifdef SDL_THREAD_BEOS - -/* BeOS thread management routines for SDL */ - -#include -#include -#include - -#include "SDL_mutex.h" -#include "SDL_thread.h" -#include "../SDL_thread_c.h" -#include "../SDL_systhread.h" - - -static int sig_list[] = { - SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGALRM, SIGTERM, SIGWINCH, 0 -}; - -void -SDL_MaskSignals(sigset_t * omask) -{ - sigset_t mask; - int i; - - sigemptyset(&mask); - for (i = 0; sig_list[i]; ++i) { - sigaddset(&mask, sig_list[i]); - } - sigprocmask(SIG_BLOCK, &mask, omask); -} - -void -SDL_UnmaskSignals(sigset_t * omask) -{ - sigprocmask(SIG_SETMASK, omask, NULL); -} - -static int32 -RunThread(void *data) -{ - SDL_RunThread(data); - return (0); -} - -int -SDL_SYS_CreateThread(SDL_Thread * thread, void *args) -{ - /* The docs say the thread name can't be longer than B_OS_NAME_LENGTH. */ - const char *threadname = thread->name ? thread->name : "SDL Thread"; - char name[B_OS_NAME_LENGTH]; - SDL_snprintf(name, sizeof (name), "%s", threadname); - name[sizeof (name) - 1] = '\0'; - - /* Create the thread and go! */ - thread->handle = spawn_thread(RunThread, name, B_NORMAL_PRIORITY, args); - if ((thread->handle == B_NO_MORE_THREADS) || - (thread->handle == B_NO_MEMORY)) { - return SDL_SetError("Not enough resources to create thread"); - } - resume_thread(thread->handle); - return (0); -} - -void -SDL_SYS_SetupThread(const char *name) -{ - /* We set the thread name during SDL_SYS_CreateThread(). */ - /* Mask asynchronous signals for this thread */ - SDL_MaskSignals(NULL); -} - -SDL_threadID -SDL_ThreadID(void) -{ - return ((SDL_threadID) find_thread(NULL)); -} - -int -SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority) -{ - int32 value; - - if (priority == SDL_THREAD_PRIORITY_LOW) { - value = B_LOW_PRIORITY; - } else if (priority == SDL_THREAD_PRIORITY_HIGH) { - value = B_URGENT_DISPLAY_PRIORITY; - } else { - value = B_NORMAL_PRIORITY; - } - set_thread_priority(find_thread(NULL), value); - return 0; -} - -void -SDL_SYS_WaitThread(SDL_Thread * thread) -{ - status_t the_status; - - wait_for_thread(thread->handle, &the_status); -} - -#endif /* SDL_THREAD_BEOS */ - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/beos/SDL_systhread_c.h b/src/thread/beos/SDL_systhread_c.h deleted file mode 100644 index a350ab5944..0000000000 --- a/src/thread/beos/SDL_systhread_c.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ -#include "SDL_config.h" - -#include -#include - -typedef thread_id SYS_ThreadHandle; - -/* Functions needed to work with system threads in other portions of SDL */ -extern void SDL_MaskSignals(sigset_t * omask); -extern void SDL_UnmaskSignals(sigset_t * omask); - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/beos/SDL_systls.c b/src/thread/beos/SDL_systls.c deleted file mode 100644 index 8e941289a7..0000000000 --- a/src/thread/beos/SDL_systls.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. -*/ - -#include "SDL_config.h" -#include "SDL_thread.h" -#include "../SDL_thread_c.h" - -#if SDL_THREAD_BEOS - -#include - - -static int32 thread_local_storage = B_NO_MEMORY; -static SDL_bool generic_local_storage = SDL_FALSE; - -SDL_TLSData * -SDL_SYS_GetTLSData() -{ - if (thread_local_storage == B_NO_MEMORY && !generic_local_storage) { - static SDL_SpinLock lock; - SDL_AtomicLock(&lock); - if (thread_local_storage == B_NO_MEMORY && !generic_local_storage) { - int32 storage = tls_allocate(); - if (storage != B_NO_MEMORY) { - SDL_MemoryBarrierRelease(); - thread_local_storage = storage; - } else { - generic_local_storage = SDL_TRUE; - } - } - SDL_AtomicUnlock(&lock); - } - if (generic_local_storage) { - return SDL_Generic_GetTLSData(); - } - SDL_MemoryBarrierAcquire(); - return (SDL_TLSData *)tls_get(thread_local_storage); -} - -int -SDL_SYS_SetTLSData(SDL_TLSData *data) -{ - if (generic_local_storage) { - return SDL_Generic_SetTLSData(data); - } - tls_set(thread_local_storage, data); - return 0; -} - -#endif /* SDL_THREAD_BEOS */ - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c index c967ca7f30..f9eaef2731 100644 --- a/src/thread/pthread/SDL_systhread.c +++ b/src/thread/pthread/SDL_systhread.c @@ -51,6 +51,10 @@ #include "../../core/android/SDL_android.h" #endif +#ifdef __HAIKU__ +#include +#endif + #include "SDL_assert.h" /* List of signals to mask in the subthreads */ @@ -59,7 +63,6 @@ static const int sig_list[] = { SIGVTALRM, SIGPROF, 0 }; - static void * RunThread(void *data) { @@ -129,6 +132,12 @@ SDL_SYS_SetupThread(const char *name) pthread_setname_np(pthread_self(), name); #elif HAVE_PTHREAD_SET_NAME_NP pthread_set_name_np(pthread_self(), name); + #elif defined(__HAIKU__) + /* The docs say the thread name can't be longer than B_OS_NAME_LENGTH. */ + char namebuf[B_OS_NAME_LENGTH]; + SDL_snprintf(namebuf, sizeof (namebuf), "%s", name); + namebuf[sizeof (namebuf) - 1] = '\0'; + rename_thread(find_thread(NULL), namebuf); #endif } From 3fe60955a6b56a9525fe5ce2630c633f11d3310c Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 00:52:39 -0500 Subject: [PATCH 086/402] Added SDL_DetachThread() API. --- include/SDL_thread.h | 42 +++++++++++++++++++++++++++- src/thread/SDL_systhread.h | 3 ++ src/thread/SDL_thread.c | 45 +++++++++++++++++++++++++++--- src/thread/SDL_thread_c.h | 9 ++++++ src/thread/generic/SDL_systhread.c | 6 ++++ src/thread/psp/SDL_systhread.c | 6 ++++ src/thread/pthread/SDL_systhread.c | 6 ++++ src/thread/windows/SDL_systhread.c | 6 ++++ 8 files changed, 118 insertions(+), 5 deletions(-) diff --git a/include/SDL_thread.h b/include/SDL_thread.h index f248c3d69c..42df3d6c34 100644 --- a/include/SDL_thread.h +++ b/include/SDL_thread.h @@ -165,13 +165,53 @@ extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); /** - * Wait for a thread to finish. + * Wait for a thread to finish. Threads that haven't been detached will + * remain (as a "zombie") until this function cleans them up. Not doing so + * is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. + * As such, only one thread may call SDL_WaitThread() on another. * * The return code for the thread function is placed in the area * pointed to by \c status, if \c status is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not + * both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. */ extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); +/** + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread + * is useful for long-running threads that nothing needs to synchronize + * with or further manage. When a detached thread is done, it simply + * goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon + * the detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. + * It is not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. + * Use either that function or this one, but not both, or behavior is + * undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + /** * \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific. * diff --git a/src/thread/SDL_systhread.h b/src/thread/SDL_systhread.h index 36898f389f..3c8ba899b3 100644 --- a/src/thread/SDL_systhread.h +++ b/src/thread/SDL_systhread.h @@ -51,6 +51,9 @@ extern int SDL_SYS_SetThreadPriority(SDL_ThreadPriority priority); */ extern void SDL_SYS_WaitThread(SDL_Thread * thread); +/* Mark thread as cleaned up as soon as it exits, without joining. */ +extern void SDL_SYS_DetachThread(SDL_Thread * thread); + /* Get the thread local storage for this thread */ extern SDL_TLSData *SDL_SYS_GetTLSData(); diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index 4b070dadc6..362e75a420 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -22,6 +22,7 @@ /* System independent thread management routines for SDL */ +#include "SDL_assert.h" #include "SDL_thread.h" #include "SDL_thread_c.h" #include "SDL_systhread.h" @@ -265,13 +266,14 @@ SDL_RunThread(void *data) thread_args *args = (thread_args *) data; int (SDLCALL * userfunc) (void *) = args->func; void *userdata = args->data; - int *statusloc = &args->info->status; + SDL_Thread *thread = args->info; + int *statusloc = &thread->status; /* Perform any system-dependent setup - this function may not fail */ - SDL_SYS_SetupThread(args->info->name); + SDL_SYS_SetupThread(thread->name); /* Get the thread id */ - args->info->threadid = SDL_ThreadID(); + thread->threadid = SDL_ThreadID(); /* Wake up the parent thread */ SDL_SemPost(args->wait); @@ -281,6 +283,17 @@ SDL_RunThread(void *data) /* Clean up thread-local storage */ SDL_TLSCleanup(); + + /* Mark us as ready to be joined (or detached) */ + if (!SDL_AtomicCAS(&thread->state, SDL_THREAD_STATE_ALIVE, SDL_THREAD_STATE_ZOMBIE)) { + /* Clean up if something already detached us. */ + if (SDL_AtomicCAS(&thread->state, SDL_THREAD_STATE_DETACHED, SDL_THREAD_STATE_CLEANED)) { + if (thread->name) { + SDL_free(thread->name); + } + SDL_free(thread); + } + } } #ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD @@ -306,8 +319,9 @@ SDL_CreateThread(int (SDLCALL * fn) (void *), SDL_OutOfMemory(); return (NULL); } - SDL_memset(thread, 0, (sizeof *thread)); + SDL_zerop(thread); thread->status = -1; + SDL_AtomicSet(&thread->state, SDL_THREAD_STATE_ALIVE); /* Set up the arguments for the thread */ if (name != NULL) { @@ -410,4 +424,27 @@ SDL_WaitThread(SDL_Thread * thread, int *status) } } +void +SDL_DetachThread(SDL_Thread * thread) +{ + if (!thread) { + return; + } + + /* Grab dibs if the state is alive+joinable. */ + if (SDL_AtomicCAS(&thread->state, SDL_THREAD_STATE_ALIVE, SDL_THREAD_STATE_DETACHED)) { + SDL_SYS_DetachThread(thread); + } else { + /* all other states are pretty final, see where we landed. */ + const int state = SDL_AtomicGet(&thread->state); + if ((state == SDL_THREAD_STATE_DETACHED) || (state == SDL_THREAD_STATE_CLEANED)) { + return; /* already detached (you shouldn't call this twice!) */ + } else if (state == SDL_THREAD_STATE_ZOMBIE) { + SDL_WaitThread(thread, NULL); /* already done, clean it up. */ + } else { + SDL_assert(0 && "Unexpected thread state"); + } + } +} + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/SDL_thread_c.h b/src/thread/SDL_thread_c.h index 4fe9254942..8d76a5f392 100644 --- a/src/thread/SDL_thread_c.h +++ b/src/thread/SDL_thread_c.h @@ -40,12 +40,21 @@ #endif #include "../SDL_error_c.h" +typedef enum SDL_ThreadState +{ + SDL_THREAD_STATE_ALIVE, + SDL_THREAD_STATE_DETACHED, + SDL_THREAD_STATE_ZOMBIE, + SDL_THREAD_STATE_CLEANED, +} SDL_ThreadState; + /* This is the system-independent thread info structure */ struct SDL_Thread { SDL_threadID threadid; SYS_ThreadHandle handle; int status; + SDL_atomic_t state; /* SDL_THREAD_STATE_* */ SDL_error errbuf; char *name; void *data; diff --git a/src/thread/generic/SDL_systhread.c b/src/thread/generic/SDL_systhread.c index 139f8ac03d..ab7f4bad9e 100644 --- a/src/thread/generic/SDL_systhread.c +++ b/src/thread/generic/SDL_systhread.c @@ -62,4 +62,10 @@ SDL_SYS_WaitThread(SDL_Thread * thread) return; } +void +SDL_SYS_DetachThread(SDL_Thread * thread) +{ + return; +} + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/psp/SDL_systhread.c b/src/thread/psp/SDL_systhread.c index 05a2341fe0..269defe4d0 100644 --- a/src/thread/psp/SDL_systhread.c +++ b/src/thread/psp/SDL_systhread.c @@ -77,6 +77,12 @@ void SDL_SYS_WaitThread(SDL_Thread *thread) sceKernelDeleteThread(thread->handle); } +void SDL_SYS_DetachThread(SDL_Thread *thread) +{ + /* !!! FIXME: is this correct? */ + sceKernelDeleteThread(thread->handle); +} + void SDL_SYS_KillThread(SDL_Thread *thread) { sceKernelTerminateDeleteThread(thread->handle); diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c index f9eaef2731..4c23478e50 100644 --- a/src/thread/pthread/SDL_systhread.c +++ b/src/thread/pthread/SDL_systhread.c @@ -213,4 +213,10 @@ SDL_SYS_WaitThread(SDL_Thread * thread) pthread_join(thread->handle, 0); } +void +SDL_SYS_DetachThread(SDL_Thread * thread) +{ + pthread_detach(thread->handle); +} + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/windows/SDL_systhread.c b/src/thread/windows/SDL_systhread.c index 06e23abd0c..aa2db2e233 100644 --- a/src/thread/windows/SDL_systhread.c +++ b/src/thread/windows/SDL_systhread.c @@ -234,6 +234,12 @@ SDL_SYS_WaitThread(SDL_Thread * thread) CloseHandle(thread->handle); } +void +SDL_SYS_DetachThread(SDL_Thread * thread) +{ + CloseHandle(thread->handle); +} + #endif /* SDL_THREAD_WINDOWS */ /* vi: set ts=4 sw=4 expandtab: */ From bde0a436f23d68d7de57e1ed3c78f08dece62f52 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 01:00:08 -0500 Subject: [PATCH 087/402] Patched to compile on Haiku. --- src/audio/baudio/SDL_beaudio.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/audio/baudio/SDL_beaudio.cc b/src/audio/baudio/SDL_beaudio.cc index 86fb781538..e4a8027262 100644 --- a/src/audio/baudio/SDL_beaudio.cc +++ b/src/audio/baudio/SDL_beaudio.cc @@ -35,7 +35,6 @@ extern "C" #include "SDL_audio.h" #include "../SDL_audio_c.h" #include "../SDL_sysaudio.h" -#include "../../thread/beos/SDL_systhread_c.h" #include "SDL_beaudio.h" } From a910f58685b0d5553890e0746a52acb37c78eee0 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 14 Nov 2013 10:19:07 -0300 Subject: [PATCH 088/402] Adds joystick/udev troubleshooting information to README-linux.txt --- README-linux.txt | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README-linux.txt b/README-linux.txt index d147b16f30..e0f029d810 100644 --- a/README-linux.txt +++ b/README-linux.txt @@ -30,3 +30,51 @@ NOTES: configure script to include DirectFB support. Send patches. :) +================================================================================ +Joystick does not work +================================================================================ + +If you compiled or are using a version of SDL with udev support (and you should!) +there's a few issues that may cause SDL to fail to detect your joystick. To +debug this, start by installing the evtest utility. On Ubuntu/Debian: + + sudo apt-get install evtest + +Then run: + + sudo evtest + +You'll hopefully see your joystick listed along with a name like "/dev/input/eventXX" +Now run: + + cat /dev/input/event/XX + +If you get a permission error, you need to set a udev rule to change the mode of +your device (see below) + +Also, try: + + sudo udevadm info --query=all --name=input/eventXX + +If you see a line stating ID_INPUT_JOYSTICK=1, great, if you don't see it, +you need to set up an udev rule to force this variable. + +A combined rule for the Saitek Pro Flight Rudder Pedals to fix both issues looks +like: + + SUBSYSTEM=="input", ATTRS{idProduct}=="0763", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + SUBSYSTEM=="input", ATTRS{idProduct}=="0764", ATTRS{idVendor}=="06a3", MODE="0666", ENV{ID_INPUT_JOYSTICK}="1" + +You can set up similar rules for your device by changing the values listed in +idProduct and idVendor. To obtain these values, try: + + sudo udevadm info -a --name=input/eventXX | grep idVendor + sudo udevadm info -a --name=input/eventXX | grep idProduct + +If multiple values come up for each of these, the one you want is the first one of each. + +On other systems which ship with an older udev (such as CentOS), you may need +to set up a rule such as: + + SUBSYSTEM=="input", ENV{ID_CLASS}=="joystick", ENV{ID_INPUT_JOYSTICK}="1" + From e587430a113bd9697b0c19c024f75d1b8392037e Mon Sep 17 00:00:00 2001 From: Apoorv Upreti Date: Thu, 14 Nov 2013 22:19:07 +0530 Subject: [PATCH 089/402] Fixed visualtest build on VS2012 SDL2, SDL2main and SDL2test had to be added as dependencies to the testquit project to get it to build properly. --- VisualC/SDL_VS2012.sln | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/VisualC/SDL_VS2012.sln b/VisualC/SDL_VS2012.sln index 6edc416dff..8033533918 100644 --- a/VisualC/SDL_VS2012.sln +++ b/VisualC/SDL_VS2012.sln @@ -115,6 +115,11 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "visualtest", "visualtest", "{68C17E4D-1073-48DB-A96C-C36FE8705F1B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testquit", "visualtest\unittest\testquit\testquit_VS2012.vcxproj", "{1D12C737-7C71-45CE-AE2C-AAB47B690BC8}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From 9096dd3385929194cea7876e657688c617f5a6aa Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 11:51:24 -0500 Subject: [PATCH 090/402] Renamed things named after BeOS to be named after Haiku instead. --- CMakeLists.txt | 22 +++---- cmake/sdlchecks.cmake | 2 +- configure | 52 ++++++++-------- configure.in | 59 ++++++++++--------- include/SDL_config.h.cmake | 14 ++--- include/SDL_config.h.in | 14 ++--- include/SDL_platform.h | 4 -- include/SDL_thread.h | 2 +- src/SDL.c | 2 - src/audio/SDL_audio.c | 6 +- .../SDL_haikuaudio.cc} | 36 +++++------ .../SDL_beaudio.h => haiku/SDL_haikuaudio.h} | 0 src/events/SDL_sysevents.h | 4 +- .../{beos => haiku}/SDL_sysfilesystem.cc | 6 +- .../SDL_haikujoystick.cc} | 9 +-- src/loadso/{beos => haiku}/SDL_sysloadso.c | 6 +- src/main/{beos => haiku}/SDL_BApp.h | 6 +- src/main/{beos => haiku}/SDL_BeApp.cc | 6 +- src/main/{beos => haiku}/SDL_BeApp.h | 0 src/power/SDL_power.c | 6 +- src/power/{beos => haiku}/SDL_syspower.c | 7 ++- src/timer/{beos => haiku}/SDL_systimer.c | 6 +- src/video/SDL_sysvideo.h | 4 +- src/video/SDL_video.c | 4 +- src/video/{bwindow => haiku}/SDL_BWin.h | 4 +- .../{bwindow => haiku}/SDL_bclipboard.cc | 4 +- src/video/{bwindow => haiku}/SDL_bclipboard.h | 0 src/video/{bwindow => haiku}/SDL_bevents.cc | 4 +- src/video/{bwindow => haiku}/SDL_bevents.h | 0 .../{bwindow => haiku}/SDL_bframebuffer.cc | 6 +- .../{bwindow => haiku}/SDL_bframebuffer.h | 0 src/video/{bwindow => haiku}/SDL_bkeyboard.cc | 4 +- src/video/{bwindow => haiku}/SDL_bkeyboard.h | 0 src/video/{bwindow => haiku}/SDL_bmodes.cc | 6 +- src/video/{bwindow => haiku}/SDL_bmodes.h | 0 src/video/{bwindow => haiku}/SDL_bopengl.cc | 6 +- src/video/{bwindow => haiku}/SDL_bopengl.h | 0 src/video/{bwindow => haiku}/SDL_bvideo.cc | 8 +-- src/video/{bwindow => haiku}/SDL_bvideo.h | 2 +- src/video/{bwindow => haiku}/SDL_bwindow.cc | 10 ++-- src/video/{bwindow => haiku}/SDL_bwindow.h | 0 test/configure | 2 +- test/configure.in | 4 +- visualtest/configure | 2 +- visualtest/configure.in | 4 +- 45 files changed, 176 insertions(+), 167 deletions(-) rename src/audio/{baudio/SDL_beaudio.cc => haiku/SDL_haikuaudio.cc} (88%) rename src/audio/{baudio/SDL_beaudio.h => haiku/SDL_haikuaudio.h} (100%) rename src/filesystem/{beos => haiku}/SDL_sysfilesystem.cc (95%) rename src/joystick/{beos/SDL_bejoystick.cc => haiku/SDL_haikujoystick.cc} (98%) rename src/loadso/{beos => haiku}/SDL_sysloadso.c (95%) rename src/main/{beos => haiku}/SDL_BApp.h (98%) rename src/main/{beos => haiku}/SDL_BeApp.cc (97%) rename src/main/{beos => haiku}/SDL_BeApp.h (100%) rename src/power/{beos => haiku}/SDL_syspower.c (95%) rename src/timer/{beos => haiku}/SDL_systimer.c (95%) rename src/video/{bwindow => haiku}/SDL_BWin.h (99%) rename src/video/{bwindow => haiku}/SDL_bclipboard.cc (97%) rename src/video/{bwindow => haiku}/SDL_bclipboard.h (100%) rename src/video/{bwindow => haiku}/SDL_bevents.cc (94%) rename src/video/{bwindow => haiku}/SDL_bevents.h (100%) rename src/video/{bwindow => haiku}/SDL_bframebuffer.cc (98%) rename src/video/{bwindow => haiku}/SDL_bframebuffer.h (100%) rename src/video/{bwindow => haiku}/SDL_bkeyboard.cc (99%) rename src/video/{bwindow => haiku}/SDL_bkeyboard.h (100%) rename src/video/{bwindow => haiku}/SDL_bmodes.cc (98%) rename src/video/{bwindow => haiku}/SDL_bmodes.h (100%) rename src/video/{bwindow => haiku}/SDL_bopengl.cc (98%) rename src/video/{bwindow => haiku}/SDL_bopengl.h (100%) rename src/video/{bwindow => haiku}/SDL_bvideo.cc (97%) rename src/video/{bwindow => haiku}/SDL_bvideo.h (96%) rename src/video/{bwindow => haiku}/SDL_bwindow.cc (96%) rename src/video/{bwindow => haiku}/SDL_bwindow.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index a66a1ad243..df02d6a759 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,8 +95,10 @@ elseif(APPLE) set(MACOSX TRUE) endif() # TODO: iOS? -elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku.*|BeOS.*") - set(BEOS TRUE) +elseif(CMAKE_SYSTEM_NAME MATCHES "BeOS.*") + message_error("BeOS support has been removed as of SDL 2.0.2.") +elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku.*") + set(HAIKU TRUE) endif() # Don't mistake osx for unix @@ -308,9 +310,9 @@ if(USE_GCC) check_c_compiler_flag(-Wall HAVE_GCC_WALL) if(HAVE_GCC_WALL) - if(CMAKE_SYSTEM_NAME MATCHES "Haiku|BeOS") + if(HAIKU) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar") - endif(CMAKE_SYSTEM_NAME MATCHES "Haiku|BeOS") + endif(HAIKU) endif(HAVE_GCC_WALL) endif(USE_GCC) @@ -991,15 +993,15 @@ elseif(APPLE) endif(SDL_VIDEO) CheckPTHREAD() -elseif(BEOS) +elseif(HAIKU) if(SDL_VIDEO) - set(SDL_VIDEO_DRIVER_BWINDOW 1) - file(GLOB BWINDOW_SOURCES ${SDL2_SOURCE_DIR}/src/video/bwindow/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${BWINDOW_SOURCES}) + set(SDL_VIDEO_DRIVER_HAIKU 1) + file(GLOB HAIKUVIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/haiku/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${HAIKUVIDEO_SOURCES}) set(HAVE_SDL_VIDEO TRUE) - set(SDL_FILESYSTEM_BEOS 1) - file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/beos/*.cc) + set(SDL_FILESYSTEM_HAIKU 1) + file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/haiku/*.cc) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(HAVE_SDL_FILESYSTEM TRUE) diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index f71ad906ef..b130201d77 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -638,7 +638,7 @@ macro(CheckPTHREAD) elseif(HPUX) set(PTHREAD_CFLAGS "-D_REENTRANT") set(PTHREAD_LDFLAGS "-L/usr/lib -pthread") - elseif(BEOS) + elseif(HAIKU) set(PTHREAD_CFLAGS "-D_REENTRANT") set(PTHREAD_LDFLAGS "") else() diff --git a/configure b/configure index a441a3e138..5fe3622fd4 100755 --- a/configure +++ b/configure @@ -15950,7 +15950,7 @@ $as_echo "$have_gcc_mmd_mt" >&6; } fi fi -# Actually this doesn't work on OpenBSD and BeOS +# Actually this doesn't work on OpenBSD #AC_MSG_CHECKING(for linker option --no-undefined) #have_no_undefined=no #save_LDFLAGS="$LDFLAGS" @@ -18598,7 +18598,7 @@ $as_echo "$have_gcc_Wall" >&6; } $as_echo_n "checking for necessary GCC -Wno-multichar option... " >&6; } need_gcc_Wno_multichar=no case "$host" in - *-*-beos* | *-*-haiku*) + *-*-haiku*) need_gcc_Wno_multichar=yes ;; esac @@ -20124,13 +20124,13 @@ $as_echo "#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1" >>confdefs.h fi } -CheckBWINDOW() +CheckHaikuVideo() { if test x$enable_video = xyes; then -$as_echo "#define SDL_VIDEO_DRIVER_BWINDOW 1" >>confdefs.h +$as_echo "#define SDL_VIDEO_DRIVER_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/video/bwindow/*.cc" + SOURCES="$SOURCES $srcdir/src/video/haiku/*.cc" have_video=yes fi } @@ -20680,14 +20680,14 @@ $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h fi } -CheckBeGL() +CheckHaikuGL() { if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then $as_echo "#define SDL_VIDEO_OPENGL 1" >>confdefs.h -$as_echo "#define SDL_VIDEO_OPENGL_BGL 1" >>confdefs.h +$as_echo "#define SDL_VIDEO_OPENGL_HAIKU 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h @@ -22399,66 +22399,72 @@ fi fi ;; + *-*-beos*) + as_fn_error $? " +*** BeOS support has been removed as of SDL 2.0.2. + " "$LINENO" 5 + ;; *-*-haiku*) - ARCH=beos + ARCH=haiku ac_default_prefix=/boot/common CheckDummyVideo CheckDiskAudio CheckDummyAudio - CheckBWINDOW - CheckBeGL + CheckHaikuVideo + CheckHaikuGL CheckPTHREAD + # Set up files for the audio library if test x$enable_audio = xyes; then -$as_echo "#define SDL_AUDIO_DRIVER_BEOSAUDIO 1" >>confdefs.h +$as_echo "#define SDL_AUDIO_DRIVER_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/audio/baudio/*.cc" + SOURCES="$SOURCES $srcdir/src/audio/haiku/*.cc" have_audio=yes fi # Set up files for the joystick library if test x$enable_joystick = xyes; then -$as_echo "#define SDL_JOYSTICK_BEOS 1" >>confdefs.h +$as_echo "#define SDL_JOYSTICK_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc" + SOURCES="$SOURCES $srcdir/src/joystick/haiku/*.cc" have_joystick=yes fi # Set up files for the timer library if test x$enable_timers = xyes; then -$as_echo "#define SDL_TIMER_BEOS 1" >>confdefs.h +$as_echo "#define SDL_TIMER_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/timer/beos/*.c" + SOURCES="$SOURCES $srcdir/src/timer/haiku/*.c" have_timers=yes fi # Set up files for the shared object loading library if test x$enable_loadso = xyes; then -$as_echo "#define SDL_LOADSO_BEOS 1" >>confdefs.h +$as_echo "#define SDL_LOADSO_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c" + SOURCES="$SOURCES $srcdir/src/loadso/haiku/*.c" have_loadso=yes fi # Set up files for the system power library if test x$enable_power = xyes; then -$as_echo "#define SDL_POWER_BEOS 1" >>confdefs.h +$as_echo "#define SDL_POWER_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/power/beos/*.c" + SOURCES="$SOURCES $srcdir/src/power/haiku/*.c" have_power=yes fi # Set up files for the system filesystem library if test x$enable_filesystem = xyes; then -$as_echo "#define SDL_FILESYSTEM_BEOS 1" >>confdefs.h +$as_echo "#define SDL_FILESYSTEM_HAIKU 1" >>confdefs.h - SOURCES="$SOURCES $srcdir/src/filesystem/beos/*.cc" + SOURCES="$SOURCES $srcdir/src/filesystem/haiku/*.cc" have_filesystem=yes fi # The BeOS platform requires special setup. - SOURCES="$srcdir/src/main/beos/*.cc $SOURCES" + SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding" ;; arm*-apple-darwin*) diff --git a/configure.in b/configure.in index 87513fe92e..e00f1d6573 100644 --- a/configure.in +++ b/configure.in @@ -204,7 +204,7 @@ if test x$enable_dependency_tracking = xyes; then fi fi -# Actually this doesn't work on OpenBSD and BeOS +# Actually this doesn't work on OpenBSD #AC_MSG_CHECKING(for linker option --no-undefined) #have_no_undefined=no #save_LDFLAGS="$LDFLAGS" @@ -1097,7 +1097,7 @@ CheckWarnAll() AC_MSG_CHECKING(for necessary GCC -Wno-multichar option) need_gcc_Wno_multichar=no case "$host" in - *-*-beos* | *-*-haiku*) + *-*-haiku*) need_gcc_Wno_multichar=yes ;; esac @@ -1474,12 +1474,12 @@ AC_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [[d fi } -dnl Set up the BWindow video driver if enabled -CheckBWINDOW() +dnl Set up the Haiku video driver if enabled +CheckHaikuVideo() { if test x$enable_video = xyes; then - AC_DEFINE(SDL_VIDEO_DRIVER_BWINDOW, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/video/bwindow/*.cc" + AC_DEFINE(SDL_VIDEO_DRIVER_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/video/haiku/*.cc" have_video=yes fi } @@ -1743,12 +1743,12 @@ CheckWINDOWSGL() fi } -dnl Check for BeOS OpenGL -CheckBeGL() +dnl Check for Haiku OpenGL +CheckHaikuGL() { if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) - AC_DEFINE(SDL_VIDEO_OPENGL_BGL, 1, [ ]) + AC_DEFINE(SDL_VIDEO_OPENGL_HAIKU, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ]) EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL" fi @@ -2619,55 +2619,60 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau ;; dnl BeOS support removed after SDL 2.0.1. Haiku still works. --ryan. - dnl *-*-beos*) + *-*-beos*) + AC_MSG_ERROR([ +*** BeOS support has been removed as of SDL 2.0.2. + ]) + ;; *-*-haiku*) - ARCH=beos + ARCH=haiku ac_default_prefix=/boot/common CheckDummyVideo CheckDiskAudio CheckDummyAudio - CheckBWINDOW - CheckBeGL + CheckHaikuVideo + CheckHaikuGL CheckPTHREAD + # Set up files for the audio library if test x$enable_audio = xyes; then - AC_DEFINE(SDL_AUDIO_DRIVER_BEOSAUDIO, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/audio/baudio/*.cc" + AC_DEFINE(SDL_AUDIO_DRIVER_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/audio/haiku/*.cc" have_audio=yes fi # Set up files for the joystick library if test x$enable_joystick = xyes; then - AC_DEFINE(SDL_JOYSTICK_BEOS, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/joystick/beos/*.cc" + AC_DEFINE(SDL_JOYSTICK_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/joystick/haiku/*.cc" have_joystick=yes fi # Set up files for the timer library if test x$enable_timers = xyes; then - AC_DEFINE(SDL_TIMER_BEOS, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/timer/beos/*.c" + AC_DEFINE(SDL_TIMER_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/timer/haiku/*.c" have_timers=yes fi # Set up files for the shared object loading library if test x$enable_loadso = xyes; then - AC_DEFINE(SDL_LOADSO_BEOS, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/loadso/beos/*.c" + AC_DEFINE(SDL_LOADSO_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/loadso/haiku/*.c" have_loadso=yes fi # Set up files for the system power library if test x$enable_power = xyes; then - AC_DEFINE(SDL_POWER_BEOS, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/power/beos/*.c" + AC_DEFINE(SDL_POWER_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/power/haiku/*.c" have_power=yes fi # Set up files for the system filesystem library if test x$enable_filesystem = xyes; then - AC_DEFINE(SDL_FILESYSTEM_BEOS, 1, [ ]) - SOURCES="$SOURCES $srcdir/src/filesystem/beos/*.cc" + AC_DEFINE(SDL_FILESYSTEM_HAIKU, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/filesystem/haiku/*.cc" have_filesystem=yes fi - # The BeOS platform requires special setup. - SOURCES="$srcdir/src/main/beos/*.cc $SOURCES" + # The Haiku platform requires special setup. + SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding" ;; arm*-apple-darwin*) diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 2f1137643e..c69a5aa450 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -191,7 +191,7 @@ #cmakedefine SDL_AUDIO_DRIVER_ARTS_DYNAMIC @SDL_AUDIO_DRIVER_ARTS_DYNAMIC@ #cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO @SDL_AUDIO_DRIVER_PULSEAUDIO@ #cmakedefine SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC @SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC@ -#cmakedefine SDL_AUDIO_DRIVER_BEOSAUDIO @SDL_AUDIO_DRIVER_BEOSAUDIO@ +#cmakedefine SDL_AUDIO_DRIVER_HAIKU @SDL_AUDIO_DRIVER_HAIKU@ #cmakedefine SDL_AUDIO_DRIVER_BSD @SDL_AUDIO_DRIVER_BSD@ #cmakedefine SDL_AUDIO_DRIVER_COREAUDIO @SDL_AUDIO_DRIVER_COREAUDIO@ #cmakedefine SDL_AUDIO_DRIVER_DISK @SDL_AUDIO_DRIVER_DISK@ @@ -216,7 +216,7 @@ /* Enable various input drivers */ #cmakedefine SDL_INPUT_LINUXEV @SDL_INPUT_LINUXEV@ #cmakedefine SDL_INPUT_TSLIB @SDL_INPUT_TSLIB@ -#cmakedefine SDL_JOYSTICK_BEOS @SDL_JOYSTICK_BEOS@ +#cmakedefine SDL_JOYSTICK_HAIKU @SDL_JOYSTICK_HAIKU@ #cmakedefine SDL_JOYSTICK_DINPUT @SDL_JOYSTICK_DINPUT@ #cmakedefine SDL_JOYSTICK_DUMMY @SDL_JOYSTICK_DUMMY@ #cmakedefine SDL_JOYSTICK_IOKIT @SDL_JOYSTICK_IOKIT@ @@ -230,7 +230,7 @@ #cmakedefine SDL_HAPTIC_DINPUT @SDL_HAPTIC_DINPUT@ /* Enable various shared object loading systems */ -#cmakedefine SDL_LOADSO_BEOS @SDL_LOADSO_BEOS@ +#cmakedefine SDL_LOADSO_HAIKU @SDL_LOADSO_HAIKU@ #cmakedefine SDL_LOADSO_DLOPEN @SDL_LOADSO_DLOPEN@ #cmakedefine SDL_LOADSO_DUMMY @SDL_LOADSO_DUMMY@ #cmakedefine SDL_LOADSO_LDG @SDL_LOADSO_LDG@ @@ -243,14 +243,14 @@ #cmakedefine SDL_THREAD_WINDOWS @SDL_THREAD_WINDOWS@ /* Enable various timer systems */ -#cmakedefine SDL_TIMER_BEOS @SDL_TIMER_BEOS@ +#cmakedefine SDL_TIMER_HAIKU @SDL_TIMER_HAIKU@ #cmakedefine SDL_TIMER_DUMMY @SDL_TIMER_DUMMY@ #cmakedefine SDL_TIMER_UNIX @SDL_TIMER_UNIX@ #cmakedefine SDL_TIMER_WINDOWS @SDL_TIMER_WINDOWS@ #cmakedefine SDL_TIMER_WINCE @SDL_TIMER_WINCE@ /* Enable various video drivers */ -#cmakedefine SDL_VIDEO_DRIVER_BWINDOW @SDL_VIDEO_DRIVER_BWINDOW@ +#cmakedefine SDL_VIDEO_DRIVER_HAIKU @SDL_VIDEO_DRIVER_HAIKU@ #cmakedefine SDL_VIDEO_DRIVER_COCOA @SDL_VIDEO_DRIVER_COCOA@ #cmakedefine SDL_VIDEO_DRIVER_DIRECTFB @SDL_VIDEO_DRIVER_DIRECTFB@ #cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@ @@ -300,11 +300,11 @@ #cmakedefine SDL_POWER_LINUX @SDL_POWER_LINUX@ #cmakedefine SDL_POWER_WINDOWS @SDL_POWER_WINDOWS@ #cmakedefine SDL_POWER_MACOSX @SDL_POWER_MACOSX@ -#cmakedefine SDL_POWER_BEOS @SDL_POWER_BEOS@ +#cmakedefine SDL_POWER_HAIKU @SDL_POWER_HAIKU@ #cmakedefine SDL_POWER_HARDWIRED @SDL_POWER_HARDWIRED@ /* Enable system filesystem support */ -#cmakedefine SDL_FILESYSTEM_BEOS @SDL_FILESYSTEM_BEOS@ +#cmakedefine SDL_FILESYSTEM_HAIKU @SDL_FILESYSTEM_HAIKU@ #cmakedefine SDL_FILESYSTEM_COCOA @SDL_FILESYSTEM_COCOA@ #cmakedefine SDL_FILESYSTEM_DUMMY @SDL_FILESYSTEM_DUMMY@ #cmakedefine SDL_FILESYSTEM_UNIX @SDL_FILESYSTEM_UNIX@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 5f41e1bbb8..574d9ae7f2 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -193,7 +193,7 @@ #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC #undef SDL_AUDIO_DRIVER_PULSEAUDIO #undef SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC -#undef SDL_AUDIO_DRIVER_BEOSAUDIO +#undef SDL_AUDIO_DRIVER_HAIKU #undef SDL_AUDIO_DRIVER_BSD #undef SDL_AUDIO_DRIVER_COREAUDIO #undef SDL_AUDIO_DRIVER_DISK @@ -219,7 +219,7 @@ #undef SDL_INPUT_LINUXEV #undef SDL_INPUT_LINUXKD #undef SDL_INPUT_TSLIB -#undef SDL_JOYSTICK_BEOS +#undef SDL_JOYSTICK_HAIKU #undef SDL_JOYSTICK_DINPUT #undef SDL_JOYSTICK_DUMMY #undef SDL_JOYSTICK_IOKIT @@ -233,7 +233,7 @@ #undef SDL_HAPTIC_DINPUT /* Enable various shared object loading systems */ -#undef SDL_LOADSO_BEOS +#undef SDL_LOADSO_HAIKU #undef SDL_LOADSO_DLOPEN #undef SDL_LOADSO_DUMMY #undef SDL_LOADSO_LDG @@ -246,13 +246,13 @@ #undef SDL_THREAD_WINDOWS /* Enable various timer systems */ -#undef SDL_TIMER_BEOS +#undef SDL_TIMER_HAIKU #undef SDL_TIMER_DUMMY #undef SDL_TIMER_UNIX #undef SDL_TIMER_WINDOWS /* Enable various video drivers */ -#undef SDL_VIDEO_DRIVER_BWINDOW +#undef SDL_VIDEO_DRIVER_HAIKU #undef SDL_VIDEO_DRIVER_COCOA #undef SDL_VIDEO_DRIVER_DIRECTFB #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @@ -303,11 +303,11 @@ #undef SDL_POWER_LINUX #undef SDL_POWER_WINDOWS #undef SDL_POWER_MACOSX -#undef SDL_POWER_BEOS +#undef SDL_POWER_HAIKU #undef SDL_POWER_HARDWIRED /* Enable system filesystem support */ -#undef SDL_FILESYSTEM_BEOS +#undef SDL_FILESYSTEM_HAIKU #undef SDL_FILESYSTEM_COCOA #undef SDL_FILESYSTEM_DUMMY #undef SDL_FILESYSTEM_UNIX diff --git a/include/SDL_platform.h b/include/SDL_platform.h index a40c41e265..f12592b4eb 100644 --- a/include/SDL_platform.h +++ b/include/SDL_platform.h @@ -32,10 +32,6 @@ #undef __AIX__ #define __AIX__ 1 #endif -#if defined(__BEOS__) -#undef __BEOS__ -#define __BEOS__ 1 -#endif #if defined(__HAIKU__) #undef __HAIKU__ #define __HAIKU__ 1 diff --git a/include/SDL_thread.h b/include/SDL_thread.h index 42df3d6c34..f1e01c920f 100644 --- a/include/SDL_thread.h +++ b/include/SDL_thread.h @@ -119,7 +119,7 @@ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, * Create a thread. * * Thread naming is a little complicated: Most systems have very small - * limits for the string length (BeOS has 32 bytes, Linux currently has 16, + * limits for the string length (Haiku has 32 bytes, Linux currently has 16, * Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll * have to see what happens with your system's debugger. The name should be * UTF-8 (but using the naming limits of C identifiers is a better bet). diff --git a/src/SDL.c b/src/SDL.c index a59fe2cc1e..7fe5669ac2 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -396,8 +396,6 @@ SDL_GetPlatform() return "AIX"; #elif __ANDROID__ return "Android"; -#elif __BEOS__ - return "BeOS"; #elif __BSDI__ return "BSDI"; #elif __DREAMCAST__ diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index d6d8353514..0f32ec978f 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -56,7 +56,7 @@ extern AudioBootStrap XAUDIO2_bootstrap; extern AudioBootStrap DSOUND_bootstrap; extern AudioBootStrap WINMM_bootstrap; extern AudioBootStrap PAUDIO_bootstrap; -extern AudioBootStrap BEOSAUDIO_bootstrap; +extern AudioBootStrap HAIKUAUDIO_bootstrap; extern AudioBootStrap COREAUDIO_bootstrap; extern AudioBootStrap SNDMGR_bootstrap; extern AudioBootStrap DISKAUD_bootstrap; @@ -113,8 +113,8 @@ static const AudioBootStrap *const bootstrap[] = { #if SDL_AUDIO_DRIVER_PAUDIO &PAUDIO_bootstrap, #endif -#if SDL_AUDIO_DRIVER_BEOSAUDIO - &BEOSAUDIO_bootstrap, +#if SDL_AUDIO_DRIVER_HAIKU + &HAIKUAUDIO_bootstrap, #endif #if SDL_AUDIO_DRIVER_COREAUDIO &COREAUDIO_bootstrap, diff --git a/src/audio/baudio/SDL_beaudio.cc b/src/audio/haiku/SDL_haikuaudio.cc similarity index 88% rename from src/audio/baudio/SDL_beaudio.cc rename to src/audio/haiku/SDL_haikuaudio.cc index e4a8027262..38154e5f73 100644 --- a/src/audio/baudio/SDL_beaudio.cc +++ b/src/audio/haiku/SDL_haikuaudio.cc @@ -20,14 +20,14 @@ */ #include "SDL_config.h" -#if SDL_AUDIO_DRIVER_BEOSAUDIO +#if SDL_AUDIO_DRIVER_HAIKU -/* Allow access to the audio stream on BeOS */ +/* Allow access to the audio stream on Haiku */ #include #include -#include "../../main/beos/SDL_BeApp.h" +#include "../../main/haiku/SDL_BeApp.h" extern "C" { @@ -35,13 +35,13 @@ extern "C" #include "SDL_audio.h" #include "../SDL_audio_c.h" #include "../SDL_sysaudio.h" -#include "SDL_beaudio.h" +#include "SDL_haikuaudio.h" } /* !!! FIXME: have the callback call the higher level to avoid code dupe. */ -/* The BeOS callback for handling the audio buffer */ +/* The Haiku callback for handling the audio buffer */ static void FillSound(void *device, void *stream, size_t len, const media_raw_audio_format & format) @@ -71,7 +71,7 @@ FillSound(void *device, void *stream, size_t len, } static void -BEOSAUDIO_CloseDevice(_THIS) +HAIKUAUDIO_CloseDevice(_THIS) { if (_this->hidden != NULL) { if (_this->hidden->audio_obj) { @@ -111,7 +111,7 @@ UnmaskSignals(sigset_t * omask) static int -BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) +HAIKUAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) { int valid_datatype = 0; media_raw_audio_format format; @@ -176,7 +176,7 @@ BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) } if (!valid_datatype) { /* shouldn't happen, but just in case... */ - BEOSAUDIO_CloseDevice(_this); + HAIKUAUDIO_CloseDevice(_this); return SDL_SetError("Unsupported audio format"); } @@ -195,7 +195,7 @@ BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) if (_this->hidden->audio_obj->Start() == B_NO_ERROR) { _this->hidden->audio_obj->SetHasData(true); } else { - BEOSAUDIO_CloseDevice(_this); + HAIKUAUDIO_CloseDevice(_this); return SDL_SetError("Unable to start Be audio"); } @@ -204,13 +204,13 @@ BEOSAUDIO_OpenDevice(_THIS, const char *devname, int iscapture) } static void -BEOSAUDIO_Deinitialize(void) +HAIKUAUDIO_Deinitialize(void) { SDL_QuitBeApp(); } static int -BEOSAUDIO_Init(SDL_AudioDriverImpl * impl) +HAIKUAUDIO_Init(SDL_AudioDriverImpl * impl) { /* Initialize the Be Application, if it's not already started */ if (SDL_InitBeApp() < 0) { @@ -218,9 +218,9 @@ BEOSAUDIO_Init(SDL_AudioDriverImpl * impl) } /* Set the function pointers */ - impl->OpenDevice = BEOSAUDIO_OpenDevice; - impl->CloseDevice = BEOSAUDIO_CloseDevice; - impl->Deinitialize = BEOSAUDIO_Deinitialize; + impl->OpenDevice = HAIKUAUDIO_OpenDevice; + impl->CloseDevice = HAIKUAUDIO_CloseDevice; + impl->Deinitialize = HAIKUAUDIO_Deinitialize; impl->ProvidesOwnCallbackThread = 1; impl->OnlyHasDefaultOutputDevice = 1; @@ -229,12 +229,12 @@ BEOSAUDIO_Init(SDL_AudioDriverImpl * impl) extern "C" { - extern AudioBootStrap BEOSAUDIO_bootstrap; + extern AudioBootStrap HAIKUAUDIO_bootstrap; } -AudioBootStrap BEOSAUDIO_bootstrap = { - "baudio", "BeOS BSoundPlayer", BEOSAUDIO_Init, 0 +AudioBootStrap HAIKUAUDIO_bootstrap = { + "haiku", "Haiku BSoundPlayer", HAIKUAUDIO_Init, 0 }; -#endif /* SDL_AUDIO_DRIVER_BEOSAUDIO */ +#endif /* SDL_AUDIO_DRIVER_HAIKU */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/audio/baudio/SDL_beaudio.h b/src/audio/haiku/SDL_haikuaudio.h similarity index 100% rename from src/audio/baudio/SDL_beaudio.h rename to src/audio/haiku/SDL_haikuaudio.h diff --git a/src/events/SDL_sysevents.h b/src/events/SDL_sysevents.h index c2f1e097bd..11c4286297 100644 --- a/src/events/SDL_sysevents.h +++ b/src/events/SDL_sysevents.h @@ -24,8 +24,8 @@ /* Useful functions and variables from SDL_sysevents.c */ -#if defined(__BEOS__) || defined(__HAIKU__) -/* The Be and Haiku event loops run in a separate thread */ +#if defined(__HAIKU__) +/* The Haiku event loops run in a separate thread */ #define MUST_THREAD_EVENTS #endif diff --git a/src/filesystem/beos/SDL_sysfilesystem.cc b/src/filesystem/haiku/SDL_sysfilesystem.cc similarity index 95% rename from src/filesystem/beos/SDL_sysfilesystem.cc rename to src/filesystem/haiku/SDL_sysfilesystem.cc index dc7a970649..dd75dfe067 100644 --- a/src/filesystem/beos/SDL_sysfilesystem.cc +++ b/src/filesystem/haiku/SDL_sysfilesystem.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#ifdef SDL_FILESYSTEM_BEOS +#ifdef SDL_FILESYSTEM_HAIKU /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* System dependent filesystem routines */ @@ -82,12 +82,12 @@ SDL_GetPrefPath(const char *org, const char *app) SDL_OutOfMemory(); } else { SDL_snprintf(retval, len, "%s%s%s/%s/", home, append, org, app); - create_directory(retval, 0700); // BeOS api: creates missing dirs + create_directory(retval, 0700); // Haiku api: creates missing dirs } return retval; } -#endif /* SDL_FILESYSTEM_BEOS */ +#endif /* SDL_FILESYSTEM_HAIKU */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/joystick/beos/SDL_bejoystick.cc b/src/joystick/haiku/SDL_haikujoystick.cc similarity index 98% rename from src/joystick/beos/SDL_bejoystick.cc rename to src/joystick/haiku/SDL_haikujoystick.cc index c324581344..b429465bed 100644 --- a/src/joystick/beos/SDL_bejoystick.cc +++ b/src/joystick/haiku/SDL_haikujoystick.cc @@ -20,12 +20,12 @@ */ #include "SDL_config.h" -#ifdef SDL_JOYSTICK_BEOS +#ifdef SDL_JOYSTICK_HAIKU /* This is the system specific header for the SDL joystick API */ -#include -#include +#include +#include extern "C" { @@ -276,5 +276,6 @@ extern "C" }; // extern "C" -#endif /* SDL_JOYSTICK_BEOS */ +#endif /* SDL_JOYSTICK_HAIKU */ + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/loadso/beos/SDL_sysloadso.c b/src/loadso/haiku/SDL_sysloadso.c similarity index 95% rename from src/loadso/beos/SDL_sysloadso.c rename to src/loadso/haiku/SDL_sysloadso.c index 524cd715eb..0c3608d74c 100644 --- a/src/loadso/beos/SDL_sysloadso.c +++ b/src/loadso/haiku/SDL_sysloadso.c @@ -20,13 +20,13 @@ */ #include "SDL_config.h" -#ifdef SDL_LOADSO_BEOS +#ifdef SDL_LOADSO_HAIKU /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* System dependent library loading routines */ #include -#include +#include #include "SDL_loadso.h" @@ -66,6 +66,6 @@ SDL_UnloadObject(void *handle) } } -#endif /* SDL_LOADSO_BEOS */ +#endif /* SDL_LOADSO_HAIKU */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/main/beos/SDL_BApp.h b/src/main/haiku/SDL_BApp.h similarity index 98% rename from src/main/beos/SDL_BApp.h rename to src/main/haiku/SDL_BApp.h index 9b731e3e7b..d2e4993606 100644 --- a/src/main/beos/SDL_BApp.h +++ b/src/main/haiku/SDL_BApp.h @@ -24,7 +24,7 @@ #include #include -#include "../../video/bwindow/SDL_bkeyboard.h" +#include "../../video/haiku/SDL_bkeyboard.h" #ifdef __cplusplus @@ -37,8 +37,8 @@ extern "C" { /* Local includes */ #include "../../events/SDL_events_c.h" -#include "../../video/bwindow/SDL_bkeyboard.h" -#include "../../video/bwindow/SDL_bframebuffer.h" +#include "../../video/haiku/SDL_bkeyboard.h" +#include "../../video/haiku/SDL_bframebuffer.h" #ifdef __cplusplus } diff --git a/src/main/beos/SDL_BeApp.cc b/src/main/haiku/SDL_BeApp.cc similarity index 97% rename from src/main/beos/SDL_BeApp.cc rename to src/main/haiku/SDL_BeApp.cc index fb622ab1dd..12f2543005 100644 --- a/src/main/beos/SDL_BeApp.cc +++ b/src/main/haiku/SDL_BeApp.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if defined(__BEOS__) || defined(__HAIKU__) +#if defined(__HAIKU__) /* Handle the BeApp specific portions of the application */ @@ -35,7 +35,7 @@ #include "SDL_timer.h" #include "SDL_error.h" -#include "../../video/bwindow/SDL_BWin.h" +#include "../../video/haiku/SDL_BWin.h" #ifdef __cplusplus extern "C" { @@ -131,6 +131,6 @@ void SDL_BApp::ClearID(SDL_BWin *bwin) { } } -#endif /* __BEOS__ */ +#endif /* __HAIKU__ */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/main/beos/SDL_BeApp.h b/src/main/haiku/SDL_BeApp.h similarity index 100% rename from src/main/beos/SDL_BeApp.h rename to src/main/haiku/SDL_BeApp.h diff --git a/src/power/SDL_power.c b/src/power/SDL_power.c index b8f3ae40fc..2ce336004e 100644 --- a/src/power/SDL_power.c +++ b/src/power/SDL_power.c @@ -33,7 +33,7 @@ SDL_bool SDL_GetPowerInfo_Linux_proc_acpi(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_Linux_proc_apm(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_Windows(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_MacOSX(SDL_PowerState *, int *, int *); -SDL_bool SDL_GetPowerInfo_BeOS(SDL_PowerState *, int *, int *); +SDL_bool SDL_GetPowerInfo_Haiku(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_UIKit(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_Android(SDL_PowerState *, int *, int *); SDL_bool SDL_GetPowerInfo_PSP(SDL_PowerState *, int *, int *); @@ -68,8 +68,8 @@ static SDL_GetPowerInfo_Impl implementations[] = { #ifdef SDL_POWER_MACOSX /* handles Mac OS X, Darwin. */ SDL_GetPowerInfo_MacOSX, #endif -#ifdef SDL_POWER_BEOS /* handles BeOS, Zeta, with euc.jp apm driver. */ - SDL_GetPowerInfo_BeOS, +#ifdef SDL_POWER_HAIKU /* with BeOS euc.jp apm driver. Does this work on Haiku? */ + SDL_GetPowerInfo_Haiku, #endif #ifdef SDL_POWER_ANDROID /* handles Android. */ SDL_GetPowerInfo_Android, diff --git a/src/power/beos/SDL_syspower.c b/src/power/haiku/SDL_syspower.c similarity index 95% rename from src/power/beos/SDL_syspower.c rename to src/power/haiku/SDL_syspower.c index 8f172cc0e8..5ed0a22375 100644 --- a/src/power/beos/SDL_syspower.c +++ b/src/power/haiku/SDL_syspower.c @@ -20,8 +20,9 @@ */ #include "SDL_config.h" +/* !!! FIXME: does this thing even work on Haiku? */ #ifndef SDL_POWER_DISABLED -#if SDL_POWER_BEOS +#if SDL_POWER_HAIKU #include #include @@ -40,7 +41,7 @@ #include "SDL_power.h" SDL_bool -SDL_GetPowerInfo_BeOS(SDL_PowerState * state, int *seconds, int *percent) +SDL_GetPowerInfo_Haiku(SDL_PowerState * state, int *seconds, int *percent) { const int fd = open("/dev/misc/apm", O_RDONLY); SDL_bool need_details = SDL_FALSE; @@ -119,7 +120,7 @@ SDL_GetPowerInfo_BeOS(SDL_PowerState * state, int *seconds, int *percent) return SDL_TRUE; /* the definitive answer if APM driver replied. */ } -#endif /* SDL_POWER_BEOS */ +#endif /* SDL_POWER_HAIKU */ #endif /* SDL_POWER_DISABLED */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/beos/SDL_systimer.c b/src/timer/haiku/SDL_systimer.c similarity index 95% rename from src/timer/beos/SDL_systimer.c rename to src/timer/haiku/SDL_systimer.c index fd22e4412f..591c711329 100644 --- a/src/timer/beos/SDL_systimer.c +++ b/src/timer/haiku/SDL_systimer.c @@ -20,9 +20,9 @@ */ #include "SDL_config.h" -#ifdef SDL_TIMER_BEOS +#ifdef SDL_TIMER_HAIKU -#include +#include #include "SDL_timer.h" @@ -69,6 +69,6 @@ SDL_Delay(Uint32 ms) snooze(ms * 1000); } -#endif /* SDL_TIMER_BEOS */ +#endif /* SDL_TIMER_HAIKU */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 2d41234aa6..18cf5f3c48 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -348,8 +348,8 @@ extern VideoBootStrap DirectFB_bootstrap; #if SDL_VIDEO_DRIVER_WINDOWS extern VideoBootStrap WINDOWS_bootstrap; #endif -#if SDL_VIDEO_DRIVER_BWINDOW -extern VideoBootStrap BWINDOW_bootstrap; +#if SDL_VIDEO_DRIVER_HAIKU +extern VideoBootStrap HAIKU_bootstrap; #endif #if SDL_VIDEO_DRIVER_PANDORA extern VideoBootStrap PND_bootstrap; diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 3169fdacc7..77417297f6 100755 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -65,8 +65,8 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_WINDOWS &WINDOWS_bootstrap, #endif -#if SDL_VIDEO_DRIVER_BWINDOW - &BWINDOW_bootstrap, +#if SDL_VIDEO_DRIVER_HAIKU + &HAIKU_bootstrap, #endif #if SDL_VIDEO_DRIVER_PANDORA &PND_bootstrap, diff --git a/src/video/bwindow/SDL_BWin.h b/src/video/haiku/SDL_BWin.h similarity index 99% rename from src/video/bwindow/SDL_BWin.h rename to src/video/haiku/SDL_BWin.h index 6b6a71e41c..ffb4263529 100644 --- a/src/video/bwindow/SDL_BWin.h +++ b/src/video/haiku/SDL_BWin.h @@ -43,7 +43,7 @@ extern "C" { #include #endif #include "SDL_events.h" -#include "../../main/beos/SDL_BApp.h" +#include "../../main/haiku/SDL_BApp.h" enum WinCommands { @@ -349,7 +349,7 @@ class SDL_BWin:public BDirectWindow default: /* move it after switch{} so it's always handled - that way we keep BeOS feautures like: + that way we keep Haiku features like: - CTRL+Q to close window (and other shortcuts) - PrintScreen to make screenshot into /boot/home - etc.. */ diff --git a/src/video/bwindow/SDL_bclipboard.cc b/src/video/haiku/SDL_bclipboard.cc similarity index 97% rename from src/video/bwindow/SDL_bclipboard.cc rename to src/video/haiku/SDL_bclipboard.cc index 2ec80c6ba0..0a68c82cfa 100644 --- a/src/video/bwindow/SDL_bclipboard.cc +++ b/src/video/haiku/SDL_bclipboard.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU /* BWindow based framebuffer implementation */ @@ -92,4 +92,4 @@ SDL_bool BE_HasClipboardText(_THIS) { } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bclipboard.h b/src/video/haiku/SDL_bclipboard.h similarity index 100% rename from src/video/bwindow/SDL_bclipboard.h rename to src/video/haiku/SDL_bclipboard.h diff --git a/src/video/bwindow/SDL_bevents.cc b/src/video/haiku/SDL_bevents.cc similarity index 94% rename from src/video/bwindow/SDL_bevents.cc rename to src/video/haiku/SDL_bevents.cc index e01e8b274e..bda01ef1a9 100644 --- a/src/video/bwindow/SDL_bevents.cc +++ b/src/video/haiku/SDL_bevents.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #include "SDL_bevents.h" @@ -36,4 +36,4 @@ void BE_PumpEvents(_THIS) { } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bevents.h b/src/video/haiku/SDL_bevents.h similarity index 100% rename from src/video/bwindow/SDL_bevents.h rename to src/video/haiku/SDL_bevents.h diff --git a/src/video/bwindow/SDL_bframebuffer.cc b/src/video/haiku/SDL_bframebuffer.cc similarity index 98% rename from src/video/bwindow/SDL_bframebuffer.cc rename to src/video/haiku/SDL_bframebuffer.cc index 69f4a43a1d..ef8f51c832 100644 --- a/src/video/bwindow/SDL_bframebuffer.cc +++ b/src/video/haiku/SDL_bframebuffer.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #include "SDL_bframebuffer.h" @@ -29,7 +29,7 @@ #include "SDL_bmodes.h" #include "SDL_BWin.h" -#include "../../main/beos/SDL_BApp.h" +#include "../../main/haiku/SDL_BApp.h" #ifdef __cplusplus extern "C" { @@ -251,4 +251,4 @@ int32 BE_UpdateOnce(SDL_Window *window) { } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bframebuffer.h b/src/video/haiku/SDL_bframebuffer.h similarity index 100% rename from src/video/bwindow/SDL_bframebuffer.h rename to src/video/haiku/SDL_bframebuffer.h diff --git a/src/video/bwindow/SDL_bkeyboard.cc b/src/video/haiku/SDL_bkeyboard.cc similarity index 99% rename from src/video/bwindow/SDL_bkeyboard.cc rename to src/video/haiku/SDL_bkeyboard.cc index 41eb6cad05..bbc4d32430 100644 --- a/src/video/bwindow/SDL_bkeyboard.cc +++ b/src/video/haiku/SDL_bkeyboard.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #include #include @@ -185,4 +185,4 @@ void BE_SetKeyState(int32 bkey, int8 state) { } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bkeyboard.h b/src/video/haiku/SDL_bkeyboard.h similarity index 100% rename from src/video/bwindow/SDL_bkeyboard.h rename to src/video/haiku/SDL_bkeyboard.h diff --git a/src/video/bwindow/SDL_bmodes.cc b/src/video/haiku/SDL_bmodes.cc similarity index 98% rename from src/video/bwindow/SDL_bmodes.cc rename to src/video/haiku/SDL_bmodes.cc index 44e19dc7ea..62b17dd22b 100644 --- a/src/video/bwindow/SDL_bmodes.cc +++ b/src/video/haiku/SDL_bmodes.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #include #include @@ -31,7 +31,7 @@ #include "SDL_bopengl.h" #endif -#include "../../main/beos/SDL_BApp.h" +#include "../../main/haiku/SDL_BApp.h" #ifdef __cplusplus extern "C" { @@ -328,4 +328,4 @@ int BE_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode){ } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bmodes.h b/src/video/haiku/SDL_bmodes.h similarity index 100% rename from src/video/bwindow/SDL_bmodes.h rename to src/video/haiku/SDL_bmodes.h diff --git a/src/video/bwindow/SDL_bopengl.cc b/src/video/haiku/SDL_bopengl.cc similarity index 98% rename from src/video/bwindow/SDL_bopengl.cc rename to src/video/haiku/SDL_bopengl.cc index 13b90ad977..4aacbb1992 100644 --- a/src/video/bwindow/SDL_bopengl.cc +++ b/src/video/haiku/SDL_bopengl.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #include "SDL_bopengl.h" @@ -28,7 +28,7 @@ #include #include #include "SDL_BWin.h" -#include "../../main/beos/SDL_BApp.h" +#include "../../main/haiku/SDL_BApp.h" #ifdef __cplusplus extern "C" { @@ -216,4 +216,4 @@ void BE_GL_RebootContexts(_THIS) { } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bopengl.h b/src/video/haiku/SDL_bopengl.h similarity index 100% rename from src/video/bwindow/SDL_bopengl.h rename to src/video/haiku/SDL_bopengl.h diff --git a/src/video/bwindow/SDL_bvideo.cc b/src/video/haiku/SDL_bvideo.cc similarity index 97% rename from src/video/bwindow/SDL_bvideo.cc rename to src/video/haiku/SDL_bvideo.cc index 19c03eed60..d9cc5be9a7 100644 --- a/src/video/bwindow/SDL_bvideo.cc +++ b/src/video/haiku/SDL_bvideo.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #ifdef __cplusplus @@ -119,8 +119,8 @@ BE_CreateDevice(int devindex) return device; } -VideoBootStrap BWINDOW_bootstrap = { - "bwindow", "BDirectWindow graphics", +VideoBootStrap HAIKU_bootstrap = { + "haiku", "Haiku graphics", BE_Available, BE_CreateDevice }; @@ -171,4 +171,4 @@ void BE_VideoQuit(_THIS) } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bvideo.h b/src/video/haiku/SDL_bvideo.h similarity index 96% rename from src/video/bwindow/SDL_bvideo.h rename to src/video/haiku/SDL_bvideo.h index e0e8e07de4..7f0266a733 100644 --- a/src/video/bwindow/SDL_bvideo.h +++ b/src/video/haiku/SDL_bvideo.h @@ -26,7 +26,7 @@ extern "C" { #endif -#include "../../main/beos/SDL_BeApp.h" +#include "../../main/haiku/SDL_BeApp.h" #include "../SDL_sysvideo.h" diff --git a/src/video/bwindow/SDL_bwindow.cc b/src/video/haiku/SDL_bwindow.cc similarity index 96% rename from src/video/bwindow/SDL_bwindow.cc rename to src/video/haiku/SDL_bwindow.cc index c898be6ba2..f91f08bde8 100644 --- a/src/video/bwindow/SDL_bwindow.cc +++ b/src/video/haiku/SDL_bwindow.cc @@ -20,7 +20,7 @@ */ #include "SDL_config.h" -#if SDL_VIDEO_DRIVER_BWINDOW +#if SDL_VIDEO_DRIVER_HAIKU #include "../SDL_sysvideo.h" #include "SDL_BWin.h" @@ -122,7 +122,7 @@ void BE_SetWindowTitle(_THIS, SDL_Window * window) { } void BE_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon) { - /* FIXME: Icons not supported by BeOs/Haiku */ + /* FIXME: Icons not supported by Haiku */ } void BE_SetWindowPosition(_THIS, SDL_Window * window) { @@ -185,12 +185,12 @@ void BE_SetWindowFullscreen(_THIS, SDL_Window * window, } int BE_SetWindowGammaRamp(_THIS, SDL_Window * window, const Uint16 * ramp) { - /* FIXME: Not BeOs/Haiku supported */ + /* FIXME: Not Haiku supported */ return -1; } int BE_GetWindowGammaRamp(_THIS, SDL_Window * window, Uint16 * ramp) { - /* FIXME: Not BeOs/Haiku supported */ + /* FIXME: Not Haiku supported */ return -1; } @@ -220,4 +220,4 @@ SDL_bool BE_GetWindowWMInfo(_THIS, SDL_Window * window, } #endif -#endif /* SDL_VIDEO_DRIVER_BWINDOW */ +#endif /* SDL_VIDEO_DRIVER_HAIKU */ diff --git a/src/video/bwindow/SDL_bwindow.h b/src/video/haiku/SDL_bwindow.h similarity index 100% rename from src/video/bwindow/SDL_bwindow.h rename to src/video/haiku/SDL_bwindow.h diff --git a/test/configure b/test/configure index 136606c776..1ebd9d1609 100755 --- a/test/configure +++ b/test/configure @@ -2902,7 +2902,7 @@ case "$host" in MATHLIB="" SYS_GL_LIBS="-lopengl32" ;; - *-*-beos* | *-*-haiku*) + *-*-haiku*) EXE="" MATHLIB="" SYS_GL_LIBS="-lGL" diff --git a/test/configure.in b/test/configure.in index eb3028747f..6462bfd3d4 100644 --- a/test/configure.in +++ b/test/configure.in @@ -15,7 +15,7 @@ AC_C_CONST dnl We only care about this for building testnative at the moment, so these dnl values shouldn't be considered absolute truth. -dnl (BeOS, for example, sets none of these.) +dnl (Haiku, for example, sets none of these.) ISUNIX="false" ISWINDOWS="false" ISMACOSX="false" @@ -28,7 +28,7 @@ case "$host" in MATHLIB="" SYS_GL_LIBS="-lopengl32" ;; - *-*-beos* | *-*-haiku*) + *-*-haiku*) EXE="" MATHLIB="" SYS_GL_LIBS="-lGL" diff --git a/visualtest/configure b/visualtest/configure index 4e9f2902fd..4d5c0a4d3b 100755 --- a/visualtest/configure +++ b/visualtest/configure @@ -2906,7 +2906,7 @@ case "$host" in EXTRALIB="-lshlwapi" SYS_GL_LIBS="-lopengl32" ;; - *-*-beos* | *-*-haiku*) + *-*-haiku*) EXE="" MATHLIB="" EXTRALIB="" diff --git a/visualtest/configure.in b/visualtest/configure.in index 8815869172..724a0ee38e 100755 --- a/visualtest/configure.in +++ b/visualtest/configure.in @@ -15,7 +15,7 @@ AC_C_CONST dnl We only care about this for building testnative at the moment, so these dnl values shouldn't be considered absolute truth. -dnl (BeOS, for example, sets none of these.) +dnl (Haiku, for example, sets none of these.) ISUNIX="false" ISWINDOWS="false" ISMACOSX="false" @@ -29,7 +29,7 @@ case "$host" in EXTRALIB="-lshlwapi" SYS_GL_LIBS="-lopengl32" ;; - *-*-beos* | *-*-haiku*) + *-*-haiku*) EXE="" MATHLIB="" EXTRALIB="" From 8a466a6d77eb8e7615b646eb9fce17f3ecdda650 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 14:42:20 -0500 Subject: [PATCH 091/402] Haiku: fixed uninitialized variable. --- src/video/haiku/SDL_BWin.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/video/haiku/SDL_BWin.h b/src/video/haiku/SDL_BWin.h index ffb4263529..a0fa3e7264 100644 --- a/src/video/haiku/SDL_BWin.h +++ b/src/video/haiku/SDL_BWin.h @@ -83,6 +83,8 @@ class SDL_BWin:public BDirectWindow _trash_window_buffer = false; _buffer_locker = new BLocker(); _bitmap = NULL; + _clips = NULL; + #ifdef DRAWTHREAD _draw_thread_id = spawn_thread(BE_DrawThread, "drawing_thread", B_NORMAL_PRIORITY, (void*) this); From 0e112e496dfecffb9d5f2160bcdcf8ac6719a30b Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 14:45:00 -0500 Subject: [PATCH 092/402] Apparently Haiku is removing /boot/common (thanks, scottmc!). See http://lists.libsdl.org/pipermail/sdl-libsdl.org/2013-November/091877.html --- configure | 4 ++-- configure.in | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 5fe3622fd4..a849f7c3cc 100755 --- a/configure +++ b/configure @@ -22407,7 +22407,7 @@ fi *-*-haiku*) ARCH=haiku - ac_default_prefix=/boot/common + ac_default_prefix=/boot/system CheckDummyVideo CheckDiskAudio CheckDummyAudio @@ -22463,7 +22463,7 @@ $as_echo "#define SDL_FILESYSTEM_HAIKU 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/filesystem/haiku/*.cc" have_filesystem=yes fi - # The BeOS platform requires special setup. + # The Haiku platform requires special setup. SOURCES="$srcdir/src/main/haiku/*.cc $SOURCES" EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lroot -lbe -lmedia -lgame -ldevice -ltextencoding" ;; diff --git a/configure.in b/configure.in index e00f1d6573..da62830367 100644 --- a/configure.in +++ b/configure.in @@ -2627,7 +2627,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau *-*-haiku*) ARCH=haiku - ac_default_prefix=/boot/common + ac_default_prefix=/boot/system CheckDummyVideo CheckDiskAudio CheckDummyAudio From c303d584cbea66bdb5a3bdb9c04ee612851c0bdf Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 14 Nov 2013 20:14:02 -0300 Subject: [PATCH 093/402] Clean up the EGL related video backends (X11, Android, RPi) --- src/video/SDL_egl.c | 7 +------ src/video/android/SDL_androidwindow.c | 4 ++++ src/video/raspberry/SDL_rpivideo.c | 20 ++++++++++++++++---- src/video/x11/SDL_x11opengles.c | 13 +++++++++++++ src/video/x11/SDL_x11opengles.h | 2 +- 5 files changed, 35 insertions(+), 11 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 70a1cee50b..f9ab8faf5f 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -209,9 +209,7 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa } /* We need to select a config here to satisfy some video backends such as X11 */ - SDL_EGL_ChooseConfig(_this); - - return 0; + return SDL_EGL_ChooseConfig(_this); } int @@ -399,9 +397,6 @@ SDL_EGL_DeleteContext(_THIS, SDL_GLContext context) _this->egl_data->eglDestroyContext(_this->egl_data->egl_display, egl_context); } - /* FIXME: This "crappy fix" comes from the X11 code, - * it's required so you can create a GLX context, destroy it and create a EGL one */ - SDL_EGL_UnloadLibrary(_this); } EGLSurface * diff --git a/src/video/android/SDL_androidwindow.c b/src/video/android/SDL_androidwindow.c index acc40dbee8..cdc3a5cd67 100644 --- a/src/video/android/SDL_androidwindow.c +++ b/src/video/android/SDL_androidwindow.c @@ -72,6 +72,7 @@ Android_CreateWindow(_THIS, SDL_Window * window) data->egl_surface = SDL_EGL_CreateSurface(_this, (NativeWindowType) data->native_window); if (data->egl_surface == EGL_NO_SURFACE) { + ANativeWindow_release(data->native_window); SDL_free(data); return SDL_SetError("Could not create GLES window surface"); } @@ -102,6 +103,9 @@ Android_DestroyWindow(_THIS, SDL_Window * window) if(window->driverdata) { data = (SDL_WindowData *) window->driverdata; + if (data->egl_surface != EGL_NO_SURFACE) { + SDL_EGL_DestroySurface(_this, data->egl_surface); + } if(data->native_window) { ANativeWindow_release(data->native_window); } diff --git a/src/video/raspberry/SDL_rpivideo.c b/src/video/raspberry/SDL_rpivideo.c index dfad9ba769..bf03b5b8c3 100644 --- a/src/video/raspberry/SDL_rpivideo.c +++ b/src/video/raspberry/SDL_rpivideo.c @@ -281,6 +281,22 @@ RPI_CreateWindow(_THIS, SDL_Window * window) return 0; } +void +RPI_DestroyWindow(_THIS, SDL_Window * window) +{ + SDL_WindowData *data; + + if(window->driverdata) { + data = (SDL_WindowData *) window->driverdata; + if (data->egl_surface != EGL_NO_SURFACE) { + SDL_EGL_DestroySurface(_this, data->egl_surface); + data->egl_surface = EGL_NO_SURFACE; + } + SDL_free(window->driverdata); + window->driverdata = NULL; + } +} + int RPI_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) { @@ -331,10 +347,6 @@ void RPI_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed) { -} -void -RPI_DestroyWindow(_THIS, SDL_Window * window) -{ } /*****************************************************************************/ diff --git a/src/video/x11/SDL_x11opengles.c b/src/video/x11/SDL_x11opengles.c index f972ceeeb6..f5947e4e07 100644 --- a/src/video/x11/SDL_x11opengles.c +++ b/src/video/x11/SDL_x11opengles.c @@ -100,6 +100,19 @@ X11_GLES_CreateContext(_THIS, SDL_Window * window) return context; } +void +X11_GLES_DeleteContext(_THIS, SDL_GLContext context) +{ + /* FIXME: This "crappy fix" comes from the previous GLES X11 code, + * it's required so you can create a GLX context, destroy it and create a EGL one + * To be able to fix this, we need to add a function SDL_GL_ResetContext and + * disallow SDL_GL_MakeCurrent from taking a NULL pointer, thus ensuring we can + * determine if it is a GLX or EGL context + */ + SDL_EGL_DeleteContext(_this, context); + X11_GLES_UnloadLibrary(_this); +} + SDL_EGL_SwapWindow_impl(X11) SDL_EGL_MakeCurrent_impl(X11) diff --git a/src/video/x11/SDL_x11opengles.h b/src/video/x11/SDL_x11opengles.h index 978f91f3d4..9574e1c2bb 100644 --- a/src/video/x11/SDL_x11opengles.h +++ b/src/video/x11/SDL_x11opengles.h @@ -38,13 +38,13 @@ typedef struct SDL_PrivateGLESData #define X11_GLES_UnloadLibrary SDL_EGL_UnloadLibrary #define X11_GLES_SetSwapInterval SDL_EGL_SetSwapInterval #define X11_GLES_GetSwapInterval SDL_EGL_GetSwapInterval -#define X11_GLES_DeleteContext SDL_EGL_DeleteContext extern int X11_GLES_LoadLibrary(_THIS, const char *path); extern XVisualInfo *X11_GLES_GetVisual(_THIS, Display * display, int screen); extern SDL_GLContext X11_GLES_CreateContext(_THIS, SDL_Window * window); extern void X11_GLES_SwapWindow(_THIS, SDL_Window * window); extern int X11_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); +extern void X11_GLES_DeleteContext(_THIS, SDL_GLContext context); #endif /* SDL_VIDEO_OPENGL_EGL */ From 4012f96d1aa760ceced5586e1909e05141e57141 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 20:24:40 -0500 Subject: [PATCH 094/402] Fixed comment typo. --- src/main/haiku/SDL_BeApp.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/haiku/SDL_BeApp.cc b/src/main/haiku/SDL_BeApp.cc index 12f2543005..e0df2a1009 100644 --- a/src/main/haiku/SDL_BeApp.cc +++ b/src/main/haiku/SDL_BeApp.cc @@ -67,7 +67,7 @@ SDL_InitBeApp(void) return SDL_SetError("Couldn't create BApplication thread"); } - /* Change working to directory to that of executable */ + /* Change working directory to that of executable */ app_info info; if (B_OK == be_app->GetAppInfo(&info)) { entry_ref ref = info.ref; From 4a0f6208ccf5c2540f01f50c6fcdbb273384c3d2 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 14 Nov 2013 20:24:15 -0500 Subject: [PATCH 095/402] Turning --no-undefined back on, to see what platforms are still broken. --- configure.in | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/configure.in b/configure.in index da62830367..c2c42b7ed7 100644 --- a/configure.in +++ b/configure.in @@ -204,19 +204,18 @@ if test x$enable_dependency_tracking = xyes; then fi fi -# Actually this doesn't work on OpenBSD -#AC_MSG_CHECKING(for linker option --no-undefined) -#have_no_undefined=no -#save_LDFLAGS="$LDFLAGS" -#LDFLAGS="$LDFLAGS -Wl,--no-undefined" -#AC_TRY_LINK([ -#],[ -#],[ -#have_no_undefined=yes -#EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" -#]) -#LDFLAGS="$save_LDFLAGS" -#AC_MSG_RESULT($have_no_undefined) +AC_MSG_CHECKING(for linker option --no-undefined) +have_no_undefined=no +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS -Wl,--no-undefined" +AC_TRY_LINK([ +],[ +],[ +have_no_undefined=yes +EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" +]) +LDFLAGS="$save_LDFLAGS" +AC_MSG_RESULT($have_no_undefined) dnl See whether we are allowed to use the system C library AC_ARG_ENABLE(libc, From 180fafe8f6c87f6f03ccf9b3047080ffaa7300d5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 14 Nov 2013 21:39:54 -0800 Subject: [PATCH 096/402] Backed out changeset e8f93c2ebda3 - it didn't actually do anything useful --- src/render/direct3d/SDL_render_d3d.c | 36 +++++++++++++--------------- src/render/opengl/SDL_render_gl.c | 30 ++++++++++------------- 2 files changed, 29 insertions(+), 37 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 38fb6d0823..a4c6027573 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1635,26 +1635,22 @@ D3D_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, centerx = center->x; centery = center->y; - if ((flip & SDL_FLIP_VERTICAL) && (flip & SDL_FLIP_HORIZONTAL)) { - miny = dstrect->h - centery; - maxy = -centery; - minx = dstrect->w - centerx; - maxx = -centerx; - } else if (flip & SDL_FLIP_HORIZONTAL) { - miny = -centery; - maxy = dstrect->h - centery; - minx = dstrect->w - centerx; - maxx = -centerx; - } else if (flip & SDL_FLIP_VERTICAL) { - miny = dstrect->h - centery; - maxy = -centery; - minx = -centerx; - maxx = dstrect->w - centerx; - } else { - miny = -centery; - maxy = dstrect->h - centery; - minx = -centerx; - maxx = dstrect->w - centerx; + if (flip & SDL_FLIP_HORIZONTAL) { + minx = dstrect->w - centerx - 0.5f; + maxx = -centerx - 0.5f; + } + else { + minx = -centerx - 0.5f; + maxx = dstrect->w - centerx - 0.5f; + } + + if (flip & SDL_FLIP_VERTICAL) { + miny = dstrect->h - centery - 0.5f; + maxy = -centery - 0.5f; + } + else { + miny = -centery - 0.5f; + maxy = dstrect->h - centery - 0.5f; } minu = (float) srcrect->x / texture->w; diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index bb789c1380..94914ead18 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -1250,26 +1250,22 @@ GL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, centerx = center->x; centery = center->y; - if ((flip & SDL_FLIP_VERTICAL) && (flip & SDL_FLIP_HORIZONTAL)) { - miny = dstrect->h - centery; - maxy = -centery; - minx = dstrect->w - centerx; - maxx = -centerx; - } else if (flip & SDL_FLIP_HORIZONTAL) { - miny = -centery; - maxy = dstrect->h - centery; - minx = dstrect->w - centerx; + if (flip & SDL_FLIP_HORIZONTAL) { + minx = dstrect->w - centerx; maxx = -centerx; - } else if (flip & SDL_FLIP_VERTICAL) { - miny = dstrect->h - centery; - maxy = -centery; + } + else { minx = -centerx; - maxx = dstrect->w - centerx; - } else { + maxx = dstrect->w - centerx; + } + + if (flip & SDL_FLIP_VERTICAL) { + miny = dstrect->h - centery; + maxy = -centery; + } + else { miny = -centery; - maxy = dstrect->h - centery; - minx = -centerx; - maxx = dstrect->w - centerx; + maxy = dstrect->h - centery; } minu = (GLfloat) srcrect->x / texture->w; From fbb3ef5a1fee5e8d2decf0261277db30d5f267da Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 14 Nov 2013 22:26:49 -0800 Subject: [PATCH 097/402] Fixed bug 2240 - On OS/X after calling SDL_SetWindowBordered right mouse clicks no longer register philhassey On OS/X after calling SDL_SetWindowBordered right mouse clicks no longer register. Steps to Reproduce: 1. Open a windowed window on OS/X. (With the border on.) 2. e.button.button will give values 1,2,3 depending on which mouse button I click. 3. Call SDL_SetWindowBordered to disable the border. 4. e.button.button will only give values 1,2. 3 (right mouse button) stops coming through. Expected result: I expect all mouse buttons to register. --- src/video/cocoa/SDL_cocoawindow.m | 35 ++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 6899885d9e..2578d9f3c8 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -88,6 +88,31 @@ static void ConvertNSRect(NSRect *r) return style; } +static SDL_bool +SetWindowStyle(SDL_Window * window, unsigned int style) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + NSWindow *nswindow = data->nswindow; + + if (![nswindow respondsToSelector: @selector(setStyleMask:)]) { + return SDL_FALSE; + } + + /* The view responder chain gets messed with during setStyleMask */ + if ([[nswindow contentView] nextResponder] == data->listener) { + [[nswindow contentView] setNextResponder:nil]; + } + + [nswindow performSelector: @selector(setStyleMask:) withObject: (id)(uintptr_t)style]; + + /* The view responder chain gets messed with during setStyleMask */ + if ([[nswindow contentView] nextResponder] != data->listener) { + [[nswindow contentView] setNextResponder:data->listener]; + } + + return SDL_TRUE; +} + @implementation Cocoa_WindowListener @@ -422,10 +447,9 @@ - (void)windowDidResignKey:(NSNotification *)aNotification - (void)windowWillEnterFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; - NSWindow *nswindow = _data->nswindow; window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP; - [nswindow setStyleMask:(NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)]; + SetWindowStyle(window, (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)); isFullscreenSpace = YES; inFullscreenTransition = YES; @@ -454,10 +478,9 @@ - (void)windowDidEnterFullScreen:(NSNotification *)aNotification - (void)windowWillExitFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; - NSWindow *nswindow = _data->nswindow; window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; - [nswindow setStyleMask:GetWindowStyle(window)]; + SetWindowStyle(window, GetWindowStyle(window)); isFullscreenSpace = NO; inFullscreenTransition = YES; @@ -1173,9 +1196,7 @@ - (void)resetCursorRects Cocoa_SetWindowBordered(_THIS, SDL_Window * window, SDL_bool bordered) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; - if ([nswindow respondsToSelector:@selector(setStyleMask:)]) { - [nswindow setStyleMask:GetWindowStyle(window)]; + if (SetWindowStyle(window, GetWindowStyle(window))) { if (bordered) { Cocoa_SetWindowTitle(_this, window); /* this got blanked out. */ } From 189233803ebd3b13bb532bedd326edd55f58a7fd Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 15 Nov 2013 23:20:50 -0500 Subject: [PATCH 098/402] Fix viewport being upside down in OpenGL renderer. Fixes Bugzilla #2207. --- src/render/opengl/SDL_render_gl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 94914ead18..a25c7f9f02 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -925,7 +925,7 @@ GL_UpdateViewport(SDL_Renderer * renderer) data->glMatrixMode(GL_PROJECTION); data->glLoadIdentity(); if (renderer->viewport.w && renderer->viewport.h) { - if (renderer->target) { + if (!renderer->target) { data->glOrtho((GLdouble) 0, (GLdouble) renderer->viewport.w, (GLdouble) 0, From 677d03e083cc9f896f04a059cd7aa7564deea4d1 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 15 Nov 2013 22:01:58 -0800 Subject: [PATCH 099/402] Added space in the common state structure for render targets --- include/SDL_test_common.h | 1 + src/test/SDL_test_common.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/SDL_test_common.h b/include/SDL_test_common.h index 57f31146e5..5f67aa650c 100644 --- a/include/SDL_test_common.h +++ b/include/SDL_test_common.h @@ -82,6 +82,7 @@ typedef struct Uint32 render_flags; SDL_bool skip_renderer; SDL_Renderer **renderers; + SDL_Texture **targets; /* Audio info */ const char *audiodriver; diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index f06c49ea57..e23b5bbca1 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -809,6 +809,9 @@ SDLTest_CommonInit(SDLTest_CommonState * state) state->renderers = (SDL_Renderer **) SDL_malloc(state->num_windows * sizeof(*state->renderers)); + state->targets = + (SDL_Texture **) SDL_malloc(state->num_windows * + sizeof(*state->targets)); if (!state->windows || !state->renderers) { fprintf(stderr, "Out of memory!\n"); return SDL_FALSE; @@ -861,6 +864,7 @@ SDLTest_CommonInit(SDLTest_CommonState * state) SDL_ShowWindow(state->windows[i]); state->renderers[i] = NULL; + state->targets[i] = NULL; if (!state->skip_renderer && (state->renderdriver From 8ef82bd348fb7e8b0669362f74f1b63f7d063dbb Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 15 Nov 2013 22:05:26 -0800 Subject: [PATCH 100/402] Added viewport test, contributed by Andreas Schiffler and improved by me and Ryan Gordon. If it works correctly you should see a square moving from the upper left to the lower right, with a little yellow box at the top of the moving square. You can pass --target as a command line option to have it use a render target instead of rendering directly to the screen. The output should be identical in this case. --- test/Makefile.in | 4 + test/testviewport.c | 184 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 188 insertions(+) create mode 100644 test/testviewport.c diff --git a/test/Makefile.in b/test/Makefile.in index f57c460298..36b00e4860 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -49,6 +49,7 @@ TARGETS = \ teststreaming$(EXE) \ testtimer$(EXE) \ testver$(EXE) \ + testviewport$(EXE) \ testwm2$(EXE) \ torturethread$(EXE) \ testrendercopyex$(EXE) \ @@ -218,6 +219,9 @@ testtimer$(EXE): $(srcdir)/testtimer.c testver$(EXE): $(srcdir)/testver.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) +testviewport$(EXE): $(srcdir)/testviewport.c + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) + testwm2$(EXE): $(srcdir)/testwm2.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) diff --git a/test/testviewport.c b/test/testviewport.c new file mode 100644 index 0000000000..022d9880d9 --- /dev/null +++ b/test/testviewport.c @@ -0,0 +1,184 @@ +/* + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ +/* Simple program: Check viewports */ + +#include +#include +#include + +#include "SDL_test.h" +#include "SDL_test_common.h" + + +static SDLTest_CommonState *state; + +/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ +static void +quit(int rc) +{ + SDLTest_CommonQuit(state); + exit(rc); +} + +void +DrawOnViewport(SDL_Renderer * renderer, SDL_Rect viewport) +{ + SDL_Rect rect; + + /* Set the viewport */ + SDL_RenderSetViewport(renderer, &viewport); + + /* Draw a gray background */ + SDL_SetRenderDrawColor(renderer, 0x80, 0x80, 0x80, 0xFF); + SDL_RenderClear(renderer); + + /* Test inside points */ + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xF, 0xFF); + SDL_RenderDrawPoint(renderer, viewport.h/2 + 10, viewport.w/2); + SDL_RenderDrawPoint(renderer, viewport.h/2 - 10, viewport.w/2); + SDL_RenderDrawPoint(renderer, viewport.h/2 , viewport.w/2 - 10); + SDL_RenderDrawPoint(renderer, viewport.h/2 , viewport.w/2 + 10); + + /* Test horizontal and vertical lines */ + SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF); + SDL_RenderDrawLine(renderer, 1, 0, viewport.w-2, 0); + SDL_RenderDrawLine(renderer, 1, viewport.h-1, viewport.w-2, viewport.h-1); + SDL_RenderDrawLine(renderer, 0, 1, 0, viewport.h-2); + SDL_RenderDrawLine(renderer, viewport.w-1, 1, viewport.w-1, viewport.h-2); + + /* Test diagonal lines */ + SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0xFF, 0xFF); + SDL_RenderDrawLine(renderer, 0, 0, + viewport.w-1, viewport.h-1); + SDL_RenderDrawLine(renderer, viewport.w-1, 0, + 0, viewport.h-1); + + /* Test outside points */ + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xF, 0xFF); + SDL_RenderDrawPoint(renderer, viewport.h/2 + viewport.h, viewport.w/2); + SDL_RenderDrawPoint(renderer, viewport.h/2 - viewport.h, viewport.w/2); + SDL_RenderDrawPoint(renderer, viewport.h/2 , viewport.w/2 - viewport.w); + SDL_RenderDrawPoint(renderer, viewport.h/2 , viewport.w/2 + viewport.w); + + /* Add a box at the top */ + rect.w = 8; + rect.h = 8; + rect.x = (viewport.w - rect.w) / 2; + rect.y = 0; + SDL_RenderFillRect(renderer, &rect); +} + +int +main(int argc, char *argv[]) +{ + int i, j, done; + SDL_Event event; + Uint32 then, now, frames; + SDL_Rect viewport; + SDL_bool use_target = SDL_FALSE; + + /* Initialize test framework */ + state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); + if (!state) { + return 1; + } + + for (i = 1; i < argc;) { + int consumed; + + consumed = SDLTest_CommonArg(state, i); + if (consumed == 0) { + consumed = -1; + if (SDL_strcasecmp(argv[i], "--target") == 0) { + use_target = SDL_TRUE; + consumed = 1; + } + } + if (consumed < 0) { + SDL_Log("Usage: %s %s [--target]\n", + argv[0], SDLTest_CommonUsage(state)); + quit(1); + } + i += consumed; + } + if (!SDLTest_CommonInit(state)) { + quit(2); + } + + if (use_target) { + int w, h; + + for (i = 0; i < state->num_windows; ++i) { + SDL_GetWindowSize(state->windows[i], &w, &h); + state->targets[i] = SDL_CreateTexture(state->renderers[i], SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, w, h); + SDL_SetRenderTarget(state->renderers[i], state->targets[i]); + } + } + + for (i = 0; i < state->num_windows; ++i) { + SDL_Renderer *renderer = state->renderers[i]; + SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); + SDL_RenderClear(renderer); + } + + /* Main render loop */ + frames = 0; + then = SDL_GetTicks(); + done = 0; + j = 0; + while (!done) { + /* Check for events */ + ++frames; + while (SDL_PollEvent(&event)) { + SDLTest_CommonEvent(state, &event, &done); + } + + /* Move a viewport box in steps around the screen */ + viewport.x = j * 100; + viewport.y = viewport.x; + viewport.w = 100 + j * 50; + viewport.h = 100 + j * 50; + j = (j + 1) % 4; + SDL_Log("Current Viewport x=%i y=%i w=%i h=%i", viewport.x, viewport.y, viewport.w, viewport.h); + + for (i = 0; i < state->num_windows; ++i) { + if (state->windows[i] == NULL) + continue; + + /* Draw using viewport */ + DrawOnViewport(state->renderers[i], viewport); + + /* Update the screen! */ + if (use_target) { + SDL_SetRenderTarget(state->renderers[i], NULL); + SDL_RenderCopy(state->renderers[i], state->targets[i], NULL, NULL); + SDL_RenderPresent(state->renderers[i]); + SDL_SetRenderTarget(state->renderers[i], state->targets[i]); + } else { + SDL_RenderPresent(state->renderers[i]); + } + } + + SDL_Delay(1000); + } + + /* Print out some timing information */ + now = SDL_GetTicks(); + if (now > then) { + double fps = ((double) frames * 1000) / (now - then); + SDL_Log("%2.2f frames per second\n", fps); + } + quit(0); + return 0; +} + +/* vi: set ts=4 sw=4 expandtab: */ From a653e87ad57af9277ff58a26b89375555b30c2dc Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 15 Nov 2013 22:07:35 -0800 Subject: [PATCH 101/402] Better fix for bug 2207 - SDL_RenderSetViewport behavior is different/incorrect on OpenGL renderer vs DirectX renderer At least, it works better here on my Mac. :) --- src/render/opengl/SDL_render_gl.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index a25c7f9f02..77b688d638 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -919,13 +919,21 @@ GL_UpdateViewport(SDL_Renderer * renderer) return 0; } - data->glViewport(renderer->viewport.x, renderer->viewport.y, - renderer->viewport.w, renderer->viewport.h); + if (renderer->target) { + data->glViewport(renderer->viewport.x, renderer->viewport.y, + renderer->viewport.w, renderer->viewport.h); + } else { + int w, h; + + SDL_GetRendererOutputSize(renderer, &w, &h); + data->glViewport(renderer->viewport.x, (h - renderer->viewport.y - renderer->viewport.h), + renderer->viewport.w, renderer->viewport.h); + } data->glMatrixMode(GL_PROJECTION); data->glLoadIdentity(); if (renderer->viewport.w && renderer->viewport.h) { - if (!renderer->target) { + if (renderer->target) { data->glOrtho((GLdouble) 0, (GLdouble) renderer->viewport.w, (GLdouble) 0, From 6316d16476ca6a862fc67b31cd5bd77e8969850b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 10:25:46 -0800 Subject: [PATCH 102/402] Fixed compile warning, thanks to Michael Pohoreski --- test/testshader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testshader.c b/test/testshader.c index 04467709e0..ced43fd968 100644 --- a/test/testshader.c +++ b/test/testshader.c @@ -187,7 +187,7 @@ static SDL_bool CompileShaderProgram(ShaderData *data) } glUseProgramObjectARB(0); - return (glGetError() == GL_NO_ERROR); + return (glGetError() == GL_NO_ERROR) ? SDL_TRUE : SDL_FALSE; } static void DestroyShaderProgram(ShaderData *data) From f38a005589296e47210b82b62c3f6df1c27d3f23 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 10:27:46 -0800 Subject: [PATCH 103/402] Added information on reporting bugs to the README.txt file --- README.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.txt b/README.txt index 681f4a33cf..735637b948 100644 --- a/README.txt +++ b/README.txt @@ -33,6 +33,10 @@ If you need help with the library, or just want to discuss SDL related issues, you can join the developers mailing list: http://www.libsdl.org/mailing-list.php +If you want to report bugs or contribute patches, please submit them to +bugzilla: + http://bugzilla.libsdl.org/ + Enjoy! Sam Lantinga (slouken@libsdl.org) From 7d62f9f8b1854fac28dd0cce1ab7c2d9640f8a06 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 11:54:16 -0800 Subject: [PATCH 104/402] Fixed bug 2241 - SSE intrinsic in fillrect MMX path norfanin The MMX path in SDL_fillrect.c uses the SSE intrinsic _mm_stream_pi. The function or symbol provided by the compiler will not be present because the SSE header may not get included. The linker will complain about an undefined reference. Since this is the only intrinsic used here (and someone forgot to create one for MOVQ), I think the MMX path can be removed completely. At least I don't see another way to move 64-bits from an MMX register to memory. --- src/video/SDL_fillrect.c | 117 --------------------------------------- 1 file changed, 117 deletions(-) diff --git a/src/video/SDL_fillrect.c b/src/video/SDL_fillrect.c index d891e4e9d0..51f33147ad 100644 --- a/src/video/SDL_fillrect.c +++ b/src/video/SDL_fillrect.c @@ -132,105 +132,6 @@ DEFINE_SSE_FILLRECT(4, Uint32) /* *INDENT-ON* */ #endif /* __SSE__ */ -#ifdef __MMX__ -/* *INDENT-OFF* */ - -#define MMX_BEGIN \ - __m64 c64 = _mm_set_pi32(color, color) - -#define MMX_WORK \ - for (i = n / 64; i--;) { \ - _mm_stream_pi((__m64 *)(p+0), c64); \ - _mm_stream_pi((__m64 *)(p+8), c64); \ - _mm_stream_pi((__m64 *)(p+16), c64); \ - _mm_stream_pi((__m64 *)(p+24), c64); \ - _mm_stream_pi((__m64 *)(p+32), c64); \ - _mm_stream_pi((__m64 *)(p+40), c64); \ - _mm_stream_pi((__m64 *)(p+48), c64); \ - _mm_stream_pi((__m64 *)(p+56), c64); \ - p += 64; \ - } - -#define MMX_END \ - _mm_empty() - -#define DEFINE_MMX_FILLRECT(bpp, type) \ -static void \ -SDL_FillRect##bpp##MMX(Uint8 *pixels, int pitch, Uint32 color, int w, int h) \ -{ \ - int i, n; \ - Uint8 *p = NULL; \ - \ - MMX_BEGIN; \ - \ - while (h--) { \ - n = w * bpp; \ - p = pixels; \ - \ - if (n > 63) { \ - int adjust = 8 - ((uintptr_t)p & 7); \ - if (adjust < 8) { \ - n -= adjust; \ - adjust /= bpp; \ - while (adjust--) { \ - *((type *)p) = (type)color; \ - p += bpp; \ - } \ - } \ - MMX_WORK; \ - } \ - if (n & 63) { \ - int remainder = (n & 63); \ - remainder /= bpp; \ - while (remainder--) { \ - *((type *)p) = (type)color; \ - p += bpp; \ - } \ - } \ - pixels += pitch; \ - } \ - \ - MMX_END; \ -} - -static void -SDL_FillRect1MMX(Uint8 *pixels, int pitch, Uint32 color, int w, int h) -{ - int i, n; - Uint8 *p = NULL; - - MMX_BEGIN; - - while (h--) { - n = w; - p = pixels; - - if (n > 63) { - int adjust = 8 - ((uintptr_t)p & 7); - if (adjust) { - n -= adjust; - SDL_memset(p, color, adjust); - p += adjust; - } - MMX_WORK; - } - if (n & 63) { - int remainder = (n & 63); - SDL_memset(p, color, remainder); - p += remainder; - } - pixels += pitch; - } - - MMX_END; -} -/* DEFINE_MMX_FILLRECT(1, Uint8) */ -DEFINE_MMX_FILLRECT(2, Uint16) -DEFINE_MMX_FILLRECT(4, Uint32) - -/* *INDENT-ON* */ -#endif /* __MMX__ */ - static void SDL_FillRect1(Uint8 * pixels, int pitch, Uint32 color, int w, int h) { @@ -372,12 +273,6 @@ SDL_FillRect(SDL_Surface * dst, const SDL_Rect * rect, Uint32 color) SDL_FillRect1SSE(pixels, dst->pitch, color, rect->w, rect->h); break; } -#endif -#ifdef __MMX__ - if (SDL_HasMMX()) { - SDL_FillRect1MMX(pixels, dst->pitch, color, rect->w, rect->h); - break; - } #endif SDL_FillRect1(pixels, dst->pitch, color, rect->w, rect->h); break; @@ -391,12 +286,6 @@ SDL_FillRect(SDL_Surface * dst, const SDL_Rect * rect, Uint32 color) SDL_FillRect2SSE(pixels, dst->pitch, color, rect->w, rect->h); break; } -#endif -#ifdef __MMX__ - if (SDL_HasMMX()) { - SDL_FillRect2MMX(pixels, dst->pitch, color, rect->w, rect->h); - break; - } #endif SDL_FillRect2(pixels, dst->pitch, color, rect->w, rect->h); break; @@ -416,12 +305,6 @@ SDL_FillRect(SDL_Surface * dst, const SDL_Rect * rect, Uint32 color) SDL_FillRect4SSE(pixels, dst->pitch, color, rect->w, rect->h); break; } -#endif -#ifdef __MMX__ - if (SDL_HasMMX()) { - SDL_FillRect4MMX(pixels, dst->pitch, color, rect->w, rect->h); - break; - } #endif SDL_FillRect4(pixels, dst->pitch, color, rect->w, rect->h); break; From 997e7becf1cc26f1ea5e301b261afc02fccdb7a6 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 11:58:21 -0800 Subject: [PATCH 105/402] Fixed bug 2238 - Enable GCC atomics for clang Marcus von Appen clang provides support for optimized atomics. The attached patch enables the cmake build system to take clang into account on checking for atomics. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index df02d6a759..edb9f7698c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -266,7 +266,7 @@ endif(ASSERTIONS STREQUAL "auto") set(HAVE_ASSERTIONS ${ASSERTIONS}) # Compiler option evaluation -if(USE_GCC) +if(USE_GCC OR USE_CLANG) if(DEPENDENCY_TRACKING) check_c_source_compiles(" #if !defined(__GNUC__) || __GNUC__ < 3 @@ -314,7 +314,7 @@ if(USE_GCC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar") endif(HAIKU) endif(HAVE_GCC_WALL) -endif(USE_GCC) +endif(USE_GCC OR USE_CLANG) if(ASSEMBLY) if(USE_GCC OR USE_CLANG) From 023ba981bb8b5ae3dd3cc57353651df7b4ef3ba3 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 12:02:09 -0800 Subject: [PATCH 106/402] Fixed bug 2231 - Move src/input/evdev into src/core/linux Ryan C. Gordon To keep the directory layout sane, we should probably move this one piece of source to the linux catch-all directory, instead of making it look like this is part of an SDL "input" subsystem. --- src/{input/evdev => core/linux}/SDL_evdev.c | 0 src/{input/evdev => core/linux}/SDL_evdev.h | 0 src/video/raspberry/SDL_rpievents.c | 2 +- src/video/raspberry/SDL_rpivideo.c | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) rename src/{input/evdev => core/linux}/SDL_evdev.c (100%) rename src/{input/evdev => core/linux}/SDL_evdev.h (100%) diff --git a/src/input/evdev/SDL_evdev.c b/src/core/linux/SDL_evdev.c similarity index 100% rename from src/input/evdev/SDL_evdev.c rename to src/core/linux/SDL_evdev.c diff --git a/src/input/evdev/SDL_evdev.h b/src/core/linux/SDL_evdev.h similarity index 100% rename from src/input/evdev/SDL_evdev.h rename to src/core/linux/SDL_evdev.h diff --git a/src/video/raspberry/SDL_rpievents.c b/src/video/raspberry/SDL_rpievents.c index 8c420fe710..8f6cc54537 100644 --- a/src/video/raspberry/SDL_rpievents.c +++ b/src/video/raspberry/SDL_rpievents.c @@ -30,7 +30,7 @@ #include "SDL_rpievents_c.h" #ifdef SDL_INPUT_LINUXEV -#include "../../input/evdev/SDL_evdev.h" +#include "../../core/linux/SDL_evdev.h" #endif void RPI_PumpEvents(_THIS) diff --git a/src/video/raspberry/SDL_rpivideo.c b/src/video/raspberry/SDL_rpivideo.c index bf03b5b8c3..8d9994dd36 100644 --- a/src/video/raspberry/SDL_rpivideo.c +++ b/src/video/raspberry/SDL_rpivideo.c @@ -40,7 +40,7 @@ #include "../../events/SDL_keyboard_c.h" #ifdef SDL_INPUT_LINUXEV -#include "../../input/evdev/SDL_evdev.h" +#include "../../core/linux/SDL_evdev.h" #endif /* RPI declarations */ From 4af7a9d28a9bd437e5db574a4dcd4eca498a36ac Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 12:04:00 -0800 Subject: [PATCH 107/402] Fixed up configure so it doesn't reference input/evdev anymore --- configure | 46 +++++++++++++++++++++++++++++----------------- configure.in | 4 ---- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/configure b/configure index a849f7c3cc..d6b9b293f1 100755 --- a/configure +++ b/configure @@ -15950,19 +15950,35 @@ $as_echo "$have_gcc_mmd_mt" >&6; } fi fi -# Actually this doesn't work on OpenBSD -#AC_MSG_CHECKING(for linker option --no-undefined) -#have_no_undefined=no -#save_LDFLAGS="$LDFLAGS" -#LDFLAGS="$LDFLAGS -Wl,--no-undefined" -#AC_TRY_LINK([ -#],[ -#],[ -#have_no_undefined=yes -#EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" -#]) -#LDFLAGS="$save_LDFLAGS" -#AC_MSG_RESULT($have_no_undefined) +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker option --no-undefined" >&5 +$as_echo_n "checking for linker option --no-undefined... " >&6; } +have_no_undefined=no +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS -Wl,--no-undefined" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +have_no_undefined=yes +EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LDFLAGS="$save_LDFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_no_undefined" >&5 +$as_echo "$have_no_undefined" >&6; } # Check whether --enable-libc was given. if test "${enable_libc+set}" = set; then : @@ -22218,10 +22234,6 @@ $as_echo "#define SDL_TIMER_UNIX 1" >>confdefs.h if test x$enable_libudev = xyes && test x$have_libudev_h_hdr = xyes; then SOURCES="$SOURCES $srcdir/src/core/linux/SDL_udev.c" fi - # Set up files for evdev input - if test x$use_input_events = xyes; then - SOURCES="$SOURCES $srcdir/src/input/evdev/*.c" - fi ;; *-*-cygwin* | *-*-mingw32*) ARCH=win32 diff --git a/configure.in b/configure.in index c2c42b7ed7..100d6b2a78 100644 --- a/configure.in +++ b/configure.in @@ -2499,10 +2499,6 @@ case "$host" in if test x$enable_libudev = xyes && test x$have_libudev_h_hdr = xyes; then SOURCES="$SOURCES $srcdir/src/core/linux/SDL_udev.c" fi - # Set up files for evdev input - if test x$use_input_events = xyes; then - SOURCES="$SOURCES $srcdir/src/input/evdev/*.c" - fi ;; *-*-cygwin* | *-*-mingw32*) ARCH=win32 From 2a7f017638783377ccb16d2638eb616a8d46fdc4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 12:11:19 -0800 Subject: [PATCH 108/402] Fixed bug 2232 - Version Mismatch in VS2013 Solution File Joe LeVeque Line 3 of SDL_VS2013.sln file reads "# Visual Studio 2012" instead of "# Visual Studio 2013" which causes Windows to associate the file with Visual Studio 2012, if installed, instead of Visual Studio 2013. --- VisualC/SDL_VS2010.sln | 3 +-- VisualC/SDL_VS2010EE.sln | 3 +-- VisualC/SDL_VS2012.sln | 3 +-- VisualC/SDL_VS2012EE.sln | 3 +-- VisualC/SDL_VS2013.sln | 5 ++--- 5 files changed, 6 insertions(+), 11 deletions(-) diff --git a/VisualC/SDL_VS2010.sln b/VisualC/SDL_VS2010.sln index 3a493acd38..9ae8f44ff7 100644 --- a/VisualC/SDL_VS2010.sln +++ b/VisualC/SDL_VS2010.sln @@ -1,5 +1,4 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 +Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2010.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject diff --git a/VisualC/SDL_VS2010EE.sln b/VisualC/SDL_VS2010EE.sln index d5213da46d..c1f16429cd 100644 --- a/VisualC/SDL_VS2010EE.sln +++ b/VisualC/SDL_VS2010EE.sln @@ -1,5 +1,4 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 +Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2010.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject diff --git a/VisualC/SDL_VS2012.sln b/VisualC/SDL_VS2012.sln index 8033533918..cdf6bafc55 100644 --- a/VisualC/SDL_VS2012.sln +++ b/VisualC/SDL_VS2012.sln @@ -1,5 +1,4 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2012.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject diff --git a/VisualC/SDL_VS2012EE.sln b/VisualC/SDL_VS2012EE.sln index 456f699827..17eee5fffd 100644 --- a/VisualC/SDL_VS2012EE.sln +++ b/VisualC/SDL_VS2012EE.sln @@ -1,5 +1,4 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2012.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject diff --git a/VisualC/SDL_VS2013.sln b/VisualC/SDL_VS2013.sln index 3ccb1cca44..e4521439a3 100644 --- a/VisualC/SDL_VS2013.sln +++ b/VisualC/SDL_VS2013.sln @@ -1,6 +1,5 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2013.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "SDLmain\SDLmain_VS2013.vcxproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" From 6bcc3ed727f8efca657fc4f6e9895e8a9e50201f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 16 Nov 2013 21:52:56 -0500 Subject: [PATCH 109/402] Turn off --no-undefined on OpenBSD again. Leave it on everywhere else for now. --- configure | 19 +++++++++++++------ configure.in | 26 +++++++++++++++++--------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/configure b/configure index d6b9b293f1..d5bcc80d7f 100755 --- a/configure +++ b/configure @@ -15953,9 +15953,14 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for linker option --no-undefined" >&5 $as_echo_n "checking for linker option --no-undefined... " >&6; } have_no_undefined=no -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS -Wl,--no-undefined" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext +case "$host" in + *-*-openbsd*) + ;; + + *) + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--no-undefined" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -15970,13 +15975,15 @@ main () _ACEOF if ac_fn_c_try_link "$LINENO"; then : -have_no_undefined=yes -EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" + have_no_undefined=yes + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext -LDFLAGS="$save_LDFLAGS" + LDFLAGS="$save_LDFLAGS" + ;; +esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_no_undefined" >&5 $as_echo "$have_no_undefined" >&6; } diff --git a/configure.in b/configure.in index 100d6b2a78..993964f7a2 100644 --- a/configure.in +++ b/configure.in @@ -206,15 +206,23 @@ fi AC_MSG_CHECKING(for linker option --no-undefined) have_no_undefined=no -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS -Wl,--no-undefined" -AC_TRY_LINK([ -],[ -],[ -have_no_undefined=yes -EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" -]) -LDFLAGS="$save_LDFLAGS" +case "$host" in + dnl Skip this on platforms where it is just simply busted. + *-*-openbsd*) + ;; + + *) + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -Wl,--no-undefined" + AC_TRY_LINK([ + ],[ + ],[ + have_no_undefined=yes + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,--no-undefined" + ]) + LDFLAGS="$save_LDFLAGS" + ;; +esac AC_MSG_RESULT($have_no_undefined) dnl See whether we are allowed to use the system C library From c486741a0c418f23a16b531efe879cc5e5a1d05e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 18:56:02 -0800 Subject: [PATCH 110/402] Fixed bug 2245 - add SDL_acos and SDL_asin Sylvain Here's some code to add arc cosine, and arc sin functions to SDL_stdlib.c There are plainly written using SDL_atan. --- include/SDL_stdinc.h | 2 ++ src/libm/s_atan.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index f0780a2179..9a421ba63d 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -340,6 +340,8 @@ extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char #endif #endif +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC double SDLCALL SDL_asin(double x); extern DECLSPEC double SDLCALL SDL_atan(double x); extern DECLSPEC double SDLCALL SDL_atan2(double x, double y); extern DECLSPEC double SDLCALL SDL_ceil(double x); diff --git a/src/libm/s_atan.c b/src/libm/s_atan.c index f664f0eb3d..2f24b29b08 100644 --- a/src/libm/s_atan.c +++ b/src/libm/s_atan.c @@ -112,3 +112,29 @@ double atan(double x) } } libm_hidden_def(atan) + +double SDL_acos(double val) +{ + double result; + if (val == -1.0) { + result = M_PI; + } else { + result = SDL_atan(SDL_sqrt(1.0 - val * val) / val); + if (result < 0.0) + { + result += M_PI; + } + } + return result; +} + +double SDL_asin(double val) +{ + double result; + if (val == -1.0) { + result = -(M_PI / 2.0); + } else { + result = (M_PI / 2.0) - SDL_acos(val); + } + return result; +} From 6db2dc1e8d62dec002c97ca7afebb23d2a3a1913 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 16 Nov 2013 21:19:16 -0800 Subject: [PATCH 111/402] When the mouse is grabbed it's constrained to the client area, not the window frame. --- src/video/cocoa/SDL_cocoamousetap.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoamousetap.m b/src/video/cocoa/SDL_cocoamousetap.m index fd79296499..8f95ac3515 100644 --- a/src/video/cocoa/SDL_cocoamousetap.m +++ b/src/video/cocoa/SDL_cocoamousetap.m @@ -63,6 +63,7 @@ SDL_MouseEventTapData *tapdata = (SDL_MouseEventTapData*)refcon; SDL_Mouse *mouse = SDL_GetMouse(); SDL_Window *window = SDL_GetKeyboardFocus(); + NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; NSRect windowRect; CGPoint eventLocation; @@ -93,7 +94,7 @@ /* This is the same coordinate system as Cocoa uses. */ eventLocation = CGEventGetUnflippedLocation(event); - windowRect = [((SDL_WindowData *) window->driverdata)->nswindow frame]; + windowRect = [nswindow contentRectForFrameRect:[nswindow frame]]; if (!NSPointInRect(NSPointFromCGPoint(eventLocation), windowRect)) { From c126668e5d1b1c257e4462d9b58ccf404a90f06d Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Sun, 17 Nov 2013 10:41:16 -0300 Subject: [PATCH 112/402] Restore evdev sources to configure script --- configure | 4 ++++ configure.in | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/configure b/configure index d5bcc80d7f..968edc2ee7 100755 --- a/configure +++ b/configure @@ -22241,6 +22241,10 @@ $as_echo "#define SDL_TIMER_UNIX 1" >>confdefs.h if test x$enable_libudev = xyes && test x$have_libudev_h_hdr = xyes; then SOURCES="$SOURCES $srcdir/src/core/linux/SDL_udev.c" fi + # Set up files for evdev input + if test x$use_input_events = xyes; then + SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev.c" + fi ;; *-*-cygwin* | *-*-mingw32*) ARCH=win32 diff --git a/configure.in b/configure.in index 993964f7a2..6cde4ee45c 100644 --- a/configure.in +++ b/configure.in @@ -2507,6 +2507,10 @@ case "$host" in if test x$enable_libudev = xyes && test x$have_libudev_h_hdr = xyes; then SOURCES="$SOURCES $srcdir/src/core/linux/SDL_udev.c" fi + # Set up files for evdev input + if test x$use_input_events = xyes; then + SOURCES="$SOURCES $srcdir/src/core/linux/SDL_evdev.c" + fi ;; *-*-cygwin* | *-*-mingw32*) ARCH=win32 From 34d6b86a38aa1ffb24a485abb2da671be28db46d Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Sun, 17 Nov 2013 11:07:55 -0300 Subject: [PATCH 113/402] Fixes building for RPi using --no-undefined --- README-raspberrypi.txt | 6 ++++++ build-scripts/raspberrypi-buildbot.sh | 2 +- configure | 3 +-- configure.in | 3 +-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README-raspberrypi.txt b/README-raspberrypi.txt index 0724a8c909..af1ccea6e1 100644 --- a/README-raspberrypi.txt +++ b/README-raspberrypi.txt @@ -62,6 +62,12 @@ edit $SYSROOT/etc/ld.so.preload and comment out all lines in it. sudo umount $SYSROOT/proc sudo umount $SYSROOT/sys sudo umount /mnt + +There's one more fix required, as the libdl.so symlink uses an absolute path +which doesn't quite work in our setup. + + sudo rm -rf $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so + sudo ln -s ../../../lib/arm-linux-gnueabihf/libdl.so.2 $SYSROOT/usr/lib/arm-linux-gnueabihf/libdl.so The final step is compiling SDL itself. diff --git a/build-scripts/raspberrypi-buildbot.sh b/build-scripts/raspberrypi-buildbot.sh index 4c746c0143..bcffaf4a37 100755 --- a/build-scripts/raspberrypi-buildbot.sh +++ b/build-scripts/raspberrypi-buildbot.sh @@ -39,7 +39,7 @@ mkdir -p $BUILDBOTDIR pushd $BUILDBOTDIR SYSROOT="/opt/rpi-sysroot" -export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux" +export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux -L$SYSROOT/opt/vc/lib" # -L$SYSROOT/usr/lib/arm-linux-gnueabihf" # !!! FIXME: shouldn't have to --disable-* things here. ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd diff --git a/configure b/configure index 968edc2ee7..be2cb61aeb 100755 --- a/configure +++ b/configure @@ -22102,11 +22102,10 @@ case "$host" in # Raspberry Pi ARCH=linux RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux" - RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host" CFLAGS="$CFLAGS $RPI_CFLAGS" SDL_CFLAGS="$SDL_CFLAGS $RPI_CFLAGS" EXTRA_CFLAGS="$EXTRA_CFLAGS $RPI_CFLAGS" - SDL_LIBS="$SDL_LIBS $RPI_LDFLAGS" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L/opt/vc/lib -lbcm_host -ldl" if test x$enable_video = xyes; then SOURCES="$SOURCES $srcdir/src/video/raspberry/*.c" diff --git a/configure.in b/configure.in index 6cde4ee45c..e75ede8988 100644 --- a/configure.in +++ b/configure.in @@ -2384,11 +2384,10 @@ case "$host" in # Raspberry Pi ARCH=linux RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux" - RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host" CFLAGS="$CFLAGS $RPI_CFLAGS" SDL_CFLAGS="$SDL_CFLAGS $RPI_CFLAGS" EXTRA_CFLAGS="$EXTRA_CFLAGS $RPI_CFLAGS" - SDL_LIBS="$SDL_LIBS $RPI_LDFLAGS" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -L/opt/vc/lib -lbcm_host -ldl" if test x$enable_video = xyes; then SOURCES="$SOURCES $srcdir/src/video/raspberry/*.c" From 910ae521d1affd889fe27c5d111f1395582ae00a Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Mon, 18 Nov 2013 23:38:59 +0100 Subject: [PATCH 114/402] Fixed implicit function declaration warning in joystick source for Android. --- src/joystick/android/SDL_sysjoystick.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index a98cef5beb..bbed18a156 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -31,9 +31,11 @@ #include "SDL_joystick.h" #include "SDL_hints.h" #include "SDL_assert.h" +#include "SDL_log.h" #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" + #include "android/keycodes.h" /* As of platform android-14, android/keycodes.h is missing these defines */ From 626f6f5bde3c21a77db5e1cc01992172f36978ca Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Mon, 18 Nov 2013 23:43:15 +0100 Subject: [PATCH 115/402] Fixed unreachable return statement warning in gamecontroller source. --- src/joystick/SDL_gamecontroller.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 603d4db382..26769b8e1d 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -289,8 +289,6 @@ ControllerMapping_t *SDL_PrivateGetControllerMapping(int device_index) SDL_JoystickGUID jGUID = SDL_JoystickGetDeviceGUID( device_index ); return SDL_PrivateGetControllerMappingForGUID(&jGUID); } - - return NULL; } static const char* map_StringForControllerAxis[] = { From 3c25068f8b3cba42bcc479e0a1e21a1d23cd0335 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Mon, 18 Nov 2013 23:45:46 +0100 Subject: [PATCH 116/402] Added missing resource release in test source. --- src/test/SDL_test_common.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index e23b5bbca1..cd4328e5cb 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1424,6 +1424,14 @@ SDLTest_CommonQuit(SDLTest_CommonState * state) } SDL_free(state->renderers); } + if (state->targets) { + for (i = 0; i < state->num_windows; ++i) { + if (state->targets[i]) { + SDL_DestroyTexture(state->targets[i]); + } + } + SDL_free(state->targets); + } if (state->flags & SDL_INIT_VIDEO) { SDL_VideoQuit(); } From a4e367cc0e51f6caa8c5aaf5f1c4944137ec17e5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 18 Nov 2013 20:21:45 -0800 Subject: [PATCH 117/402] Textures need to be freed before renderers --- src/test/SDL_test_common.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index cd4328e5cb..783ee5a67c 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -951,7 +951,7 @@ SDLTest_PrintEvent(SDL_Event * event) { if ((event->type == SDL_MOUSEMOTION) || (event->type == SDL_FINGERMOTION)) { /* Mouse and finger motion are really spammy */ - return; + //return; } fprintf(stderr, "SDL EVENT: "); @@ -1416,14 +1416,6 @@ SDLTest_CommonQuit(SDLTest_CommonState * state) int i; SDL_free(state->windows); - if (state->renderers) { - for (i = 0; i < state->num_windows; ++i) { - if (state->renderers[i]) { - SDL_DestroyRenderer(state->renderers[i]); - } - } - SDL_free(state->renderers); - } if (state->targets) { for (i = 0; i < state->num_windows; ++i) { if (state->targets[i]) { @@ -1432,6 +1424,14 @@ SDLTest_CommonQuit(SDLTest_CommonState * state) } SDL_free(state->targets); } + if (state->renderers) { + for (i = 0; i < state->num_windows; ++i) { + if (state->renderers[i]) { + SDL_DestroyRenderer(state->renderers[i]); + } + } + SDL_free(state->renderers); + } if (state->flags & SDL_INIT_VIDEO) { SDL_VideoQuit(); } From bffa246ae3838b98bf5bfdcab9e8cb181ed2f947 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 18 Nov 2013 20:22:36 -0800 Subject: [PATCH 118/402] Accidentally committed debug code --- src/test/SDL_test_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 783ee5a67c..3b4d3323fc 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -951,7 +951,7 @@ SDLTest_PrintEvent(SDL_Event * event) { if ((event->type == SDL_MOUSEMOTION) || (event->type == SDL_FINGERMOTION)) { /* Mouse and finger motion are really spammy */ - //return; + return; } fprintf(stderr, "SDL EVENT: "); From cd6bc08d19aadf7bf44ba4fd27b67ada011b43d0 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 19 Nov 2013 10:00:05 -0300 Subject: [PATCH 119/402] [Android] Try to improve handling of DPAD|GAMEPAD + KEYBOARD devices It seems some devices report themselves as DPAD or GAMEPAD and KEYBOARD as well, and we need to route different keycodes to different parts of SDL. --- .../src/org/libsdl/app/SDLActivity.java | 17 ++++++++++------- src/core/android/SDL_android.c | 8 ++++---- src/joystick/android/SDL_sysjoystick.c | 7 ++++--- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 54670f8df3..cd7b0c2796 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -245,8 +245,8 @@ boolean sendCommand(int command, Object data) { public static native void nativePause(); public static native void nativeResume(); public static native void onNativeResize(int x, int y, int format); - public static native void onNativePadDown(int padId, int keycode); - public static native void onNativePadUp(int padId, int keycode); + public static native int onNativePadDown(int padId, int keycode); + public static native int onNativePadUp(int padId, int keycode); public static native void onNativeJoy(int joyId, int axis, float value); public static native void onNativeKeyDown(int keycode); @@ -600,19 +600,22 @@ public void onDraw(Canvas canvas) {} @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // Dispatch the different events depending on where they come from - // Some SOURCE_DPAD or SOURCE_GAMEPAD events appear to also be marked as SOURCE_KEYBOARD - // So, to avoid problems, we process DPAD or GAMEPAD events first. + // Some SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD + // So, we try to process them as DPAD or GAMEPAD events first, if that fails we try them as KEYBOARD if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ (event.getSource() & InputDevice.SOURCE_DPAD) != 0 ) { int id = SDLActivity.getJoyId( event.getDeviceId() ); if (id != -1) { if (event.getAction() == KeyEvent.ACTION_DOWN) { - SDLActivity.onNativePadDown(id, keyCode); + if (SDLActivity.onNativePadDown(id, keyCode) == 0) { + return true; + } } else if (event.getAction() == KeyEvent.ACTION_UP) { - SDLActivity.onNativePadUp(id, keyCode); + if (SDLActivity.onNativePadUp(id, keyCode) == 0) { + return true; + } } - return true; } } diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 6feb48b1e8..549d0a897e 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -148,19 +148,19 @@ void Java_org_libsdl_app_SDLActivity_onNativeResize( } // Paddown -void Java_org_libsdl_app_SDLActivity_onNativePadDown( +int Java_org_libsdl_app_SDLActivity_onNativePadDown( JNIEnv* env, jclass jcls, jint padId, jint keycode) { - Android_OnPadDown(padId, keycode); + return Android_OnPadDown(padId, keycode); } // Padup -void Java_org_libsdl_app_SDLActivity_onNativePadUp( +int Java_org_libsdl_app_SDLActivity_onNativePadUp( JNIEnv* env, jclass jcls, jint padId, jint keycode) { - Android_OnPadUp(padId, keycode); + return Android_OnPadUp(padId, keycode); } /* Joy */ diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index bbed18a156..3289a2869a 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -128,7 +128,6 @@ keycode_to_SDL(int keycode) break; default: - SDL_Log("The button you just pressed is not recognized by SDL. To help get this fixed, please report this to the SDL mailing list Android KeyCode %d", keycode); return -1; break; } @@ -313,9 +312,10 @@ Android_OnPadDown(int padId, int keycode) int button = keycode_to_SDL(keycode); if (button >= 0) { SDL_PrivateJoystickButton(SYS_Joysticks[padId], button , SDL_PRESSED); + return 0; } - return 0; + return -1; } int @@ -324,9 +324,10 @@ Android_OnPadUp(int padId, int keycode) int button = keycode_to_SDL(keycode); if (button >= 0) { SDL_PrivateJoystickButton(SYS_Joysticks[padId], button, SDL_RELEASED); + return 0; } - return 0; + return -1; } int From 392601e3e65dbc3ba3bc7cb07d66e3454163859c Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 19 Nov 2013 10:56:38 -0300 Subject: [PATCH 120/402] Adds testgles2 Source code copied from: https://github.com/fantasydr/sdl-2.0-gles (thanks!) Minor fixes, configure script changes done by me. --- android-project/jni/src/Android.mk | 2 +- test/Makefile.in | 4 + test/configure | 38 ++ test/configure.in | 23 + test/testgles2.c | 647 +++++++++++++++++++++++++++++ 5 files changed, 713 insertions(+), 1 deletion(-) create mode 100644 test/testgles2.c diff --git a/android-project/jni/src/Android.mk b/android-project/jni/src/Android.mk index 70ca7dc356..943a8cdbe2 100644 --- a/android-project/jni/src/Android.mk +++ b/android-project/jni/src/Android.mk @@ -14,6 +14,6 @@ LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \ LOCAL_SHARED_LIBRARIES := SDL2 -LOCAL_LDLIBS := -lGLESv1_CM -llog +LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog include $(BUILD_SHARED_LIBRARY) diff --git a/test/Makefile.in b/test/Makefile.in index 36b00e4860..ac9aa372a3 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -21,6 +21,7 @@ TARGETS = \ testgesture$(EXE) \ testgl2$(EXE) \ testgles$(EXE) \ + testgles2$(EXE) \ testhaptic$(EXE) \ testrumble$(EXE) \ testthread$(EXE) \ @@ -131,6 +132,9 @@ testgl2$(EXE): $(srcdir)/testgl2.c testgles$(EXE): $(srcdir)/testgles.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLESLIB@ @MATHLIB@ +testgles2$(EXE): $(srcdir)/testgles2.c + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLES2LIB@ @MATHLIB@ + testhaptic$(EXE): $(srcdir)/testhaptic.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) diff --git a/test/configure b/test/configure index 1ebd9d1609..b55398de08 100755 --- a/test/configure +++ b/test/configure @@ -587,6 +587,7 @@ LIBOBJS SDL_TTF_LIB XLIB GLESLIB +GLES2LIB GLLIB CPP XMKMF @@ -3860,12 +3861,49 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengles" >&5 $as_echo "$have_opengles" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL ES2 support" >&5 +$as_echo_n "checking for OpenGL ES2 support... " >&6; } +have_opengles2=no +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined (__IPHONEOS__) + #include + #include + #else + #include + #include + #endif + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +have_opengles2=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_opengles2" >&5 +$as_echo "$have_opengles2" >&6; } + GLLIB="" GLESLIB="" +GLES2LIB="" if test x$have_opengles = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGLES" GLESLIB="$XPATH -lGLESv1_CM" fi +if test x$have_opengles2 = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGLES2" + GLES2LIB="$XPATH -lGLESv2" +fi if test x$have_opengl = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGL" GLLIB="$XPATH $SYS_GL_LIBS" diff --git a/test/configure.in b/test/configure.in index 6462bfd3d4..efc0d5dd60 100644 --- a/test/configure.in +++ b/test/configure.in @@ -135,12 +135,34 @@ have_opengles=yes ]) AC_MSG_RESULT($have_opengles) +dnl Check for OpenGL ES2 +AC_MSG_CHECKING(for OpenGL ES2 support) +have_opengles2=no +AC_TRY_COMPILE([ + #if defined (__IPHONEOS__) + #include + #include + #else + #include + #include + #endif +],[ +],[ +have_opengles2=yes +]) +AC_MSG_RESULT($have_opengles2) + GLLIB="" GLESLIB="" +GLES2LIB="" if test x$have_opengles = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGLES" GLESLIB="$XPATH -lGLESv1_CM" fi +if test x$have_opengles2 = xyes; then + CFLAGS="$CFLAGS -DHAVE_OPENGLES2" + GLES2LIB="$XPATH -lGLESv2" +fi if test x$have_opengl = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGL" GLLIB="$XPATH $SYS_GL_LIBS" @@ -148,6 +170,7 @@ fi AC_SUBST(GLLIB) AC_SUBST(GLESLIB) +AC_SUBST(GLES2LIB) AC_SUBST(XLIB) dnl Check for SDL_ttf diff --git a/test/testgles2.c b/test/testgles2.c new file mode 100644 index 0000000000..f73fbdbe41 --- /dev/null +++ b/test/testgles2.c @@ -0,0 +1,647 @@ +/* + Copyright (r) 1997-2011 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ +#include +#include +#include +#include + +#include "SDL_test_common.h" + +#if defined(__IPHONEOS__) || defined(__ANDROID__) +#define HAVE_OPENGLES2 +#endif + +#ifdef HAVE_OPENGLES2 + +#include "SDL_opengles2.h" + +static SDLTest_CommonState *state; +static SDL_GLContext *context = NULL; +static int depth = 16; + +/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ +static void +quit(int rc) +{ + int i; + + if (context != NULL) { + for (i = 0; i < state->num_windows; i++) { + if (context[i]) { + SDL_GL_DeleteContext(context[i]); + } + } + + SDL_free(context); + } + + SDLTest_CommonQuit(state); + exit(rc); +} + +#define GL_CHECK(x) \ + x; \ + { \ + GLenum glError = glGetError(); \ + if(glError != GL_NO_ERROR) { \ + fprintf(stderr, "glGetError() = %i (0x%.8x) at line %i\n", glError, glError, __LINE__); \ + quit(1); \ + } \ + } + +/* + * Simulates desktop's glRotatef. The matrix is returned in column-major + * order. + */ +static void +rotate_matrix(double angle, double x, double y, double z, float *r) +{ + double radians, c, s, c1, u[3], length; + int i, j; + + radians = (angle * M_PI) / 180.0; + + c = cos(radians); + s = sin(radians); + + c1 = 1.0 - cos(radians); + + length = sqrt(x * x + y * y + z * z); + + u[0] = x / length; + u[1] = y / length; + u[2] = z / length; + + for (i = 0; i < 16; i++) { + r[i] = 0.0; + } + + r[15] = 1.0; + + for (i = 0; i < 3; i++) { + r[i * 4 + (i + 1) % 3] = u[(i + 2) % 3] * s; + r[i * 4 + (i + 2) % 3] = -u[(i + 1) % 3] * s; + } + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + r[i * 4 + j] += c1 * u[i] * u[j] + (i == j ? c : 0.0); + } + } +} + +/* + * Simulates gluPerspectiveMatrix + */ +static void +perspective_matrix(double fovy, double aspect, double znear, double zfar, float *r) +{ + int i; + double f; + + f = 1.0/tan(fovy * 0.5); + + for (i = 0; i < 16; i++) { + r[i] = 0.0; + } + + r[0] = f / aspect; + r[5] = f; + r[10] = (znear + zfar) / (znear - zfar); + r[11] = -1.0; + r[14] = (2.0 * znear * zfar) / (znear - zfar); + r[15] = 0.0; +} + +/* + * Multiplies lhs by rhs and writes out to r. All matrices are 4x4 and column + * major. In-place multiplication is supported. + */ +static void +multiply_matrix(float *lhs, float *rhs, float *r) +{ + int i, j, k; + float tmp[16]; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + tmp[j * 4 + i] = 0.0; + + for (k = 0; k < 4; k++) { + tmp[j * 4 + i] += lhs[k * 4 + i] * rhs[j * 4 + k]; + } + } + } + + for (i = 0; i < 16; i++) { + r[i] = tmp[i]; + } +} + +/* + * Create shader, load in source, compile, dump debug as necessary. + * + * shader: Pointer to return created shader ID. + * source: Passed-in shader source code. + * shader_type: Passed to GL, e.g. GL_VERTEX_SHADER. + */ +void +process_shader(GLuint *shader, const char * source, GLint shader_type) +{ + GLint status; + const char *shaders[1] = { NULL }; + + /* Create shader and load into GL. */ + *shader = GL_CHECK(glCreateShader(shader_type)); + + shaders[0] = source; + + GL_CHECK(glShaderSource(*shader, 1, shaders, NULL)); + + /* Clean up shader source. */ + shaders[0] = NULL; + + /* Try compiling the shader. */ + GL_CHECK(glCompileShader(*shader)); + GL_CHECK(glGetShaderiv(*shader, GL_COMPILE_STATUS, &status)); + + // Dump debug info (source and log) if compilation failed. + if(status != GL_TRUE) { + quit(-1); + } +} + +/* 3D data. Vertex range -0.5..0.5 in all axes. +* Z -0.5 is near, 0.5 is far. */ +const float _vertices[] = +{ + /* Front face. */ + /* Bottom left */ + -0.5, 0.5, -0.5, + 0.5, -0.5, -0.5, + -0.5, -0.5, -0.5, + /* Top right */ + -0.5, 0.5, -0.5, + 0.5, 0.5, -0.5, + 0.5, -0.5, -0.5, + /* Left face */ + /* Bottom left */ + -0.5, 0.5, 0.5, + -0.5, -0.5, -0.5, + -0.5, -0.5, 0.5, + /* Top right */ + -0.5, 0.5, 0.5, + -0.5, 0.5, -0.5, + -0.5, -0.5, -0.5, + /* Top face */ + /* Bottom left */ + -0.5, 0.5, 0.5, + 0.5, 0.5, -0.5, + -0.5, 0.5, -0.5, + /* Top right */ + -0.5, 0.5, 0.5, + 0.5, 0.5, 0.5, + 0.5, 0.5, -0.5, + /* Right face */ + /* Bottom left */ + 0.5, 0.5, -0.5, + 0.5, -0.5, 0.5, + 0.5, -0.5, -0.5, + /* Top right */ + 0.5, 0.5, -0.5, + 0.5, 0.5, 0.5, + 0.5, -0.5, 0.5, + /* Back face */ + /* Bottom left */ + 0.5, 0.5, 0.5, + -0.5, -0.5, 0.5, + 0.5, -0.5, 0.5, + /* Top right */ + 0.5, 0.5, 0.5, + -0.5, 0.5, 0.5, + -0.5, -0.5, 0.5, + /* Bottom face */ + /* Bottom left */ + -0.5, -0.5, -0.5, + 0.5, -0.5, 0.5, + -0.5, -0.5, 0.5, + /* Top right */ + -0.5, -0.5, -0.5, + 0.5, -0.5, -0.5, + 0.5, -0.5, 0.5, +}; + +const float _colors[] = +{ + /* Front face */ + /* Bottom left */ + 1.0, 0.0, 0.0, /* red */ + 0.0, 0.0, 1.0, /* blue */ + 0.0, 1.0, 0.0, /* green */ + /* Top right */ + 1.0, 0.0, 0.0, /* red */ + 1.0, 1.0, 0.0, /* yellow */ + 0.0, 0.0, 1.0, /* blue */ + /* Left face */ + /* Bottom left */ + 1.0, 1.0, 1.0, /* white */ + 0.0, 1.0, 0.0, /* green */ + 0.0, 1.0, 1.0, /* cyan */ + /* Top right */ + 1.0, 1.0, 1.0, /* white */ + 1.0, 0.0, 0.0, /* red */ + 0.0, 1.0, 0.0, /* green */ + /* Top face */ + /* Bottom left */ + 1.0, 1.0, 1.0, /* white */ + 1.0, 1.0, 0.0, /* yellow */ + 1.0, 0.0, 0.0, /* red */ + /* Top right */ + 1.0, 1.0, 1.0, /* white */ + 0.0, 0.0, 0.0, /* black */ + 1.0, 1.0, 0.0, /* yellow */ + /* Right face */ + /* Bottom left */ + 1.0, 1.0, 0.0, /* yellow */ + 1.0, 0.0, 1.0, /* magenta */ + 0.0, 0.0, 1.0, /* blue */ + /* Top right */ + 1.0, 1.0, 0.0, /* yellow */ + 0.0, 0.0, 0.0, /* black */ + 1.0, 0.0, 1.0, /* magenta */ + /* Back face */ + /* Bottom left */ + 0.0, 0.0, 0.0, /* black */ + 0.0, 1.0, 1.0, /* cyan */ + 1.0, 0.0, 1.0, /* magenta */ + /* Top right */ + 0.0, 0.0, 0.0, /* black */ + 1.0, 1.0, 1.0, /* white */ + 0.0, 1.0, 1.0, /* cyan */ + /* Bottom face */ + /* Bottom left */ + 0.0, 1.0, 0.0, /* green */ + 1.0, 0.0, 1.0, /* magenta */ + 0.0, 1.0, 1.0, /* cyan */ + /* Top right */ + 0.0, 1.0, 0.0, /* green */ + 0.0, 0.0, 1.0, /* blue */ + 1.0, 0.0, 1.0, /* magenta */ +}; + +const char* _shader_vert_src = +" attribute vec4 av4position; " +" attribute vec3 av3color; " +" uniform mat4 mvp; " +" varying vec3 vv3color; " +" void main() { " +" vv3color = av3color; " +" gl_Position = mvp * av4position; " +" } "; + +const char* _shader_frag_src = +" precision lowp float; " +" varying vec3 vv3color; " +" void main() { " +" gl_FragColor = vec4(vv3color, 1.0); " +" } "; + +typedef struct shader_data +{ + GLuint shader_program, shader_frag, shader_vert; + + GLint attr_position; + GLint attr_color, attr_mvp; + + int angle_x, angle_y, angle_z; + +} shader_data; + +static void +Render(unsigned int width, unsigned int height, shader_data* data) +{ + float matrix_rotate[16], matrix_modelview[16], matrix_perspective[16], matrix_mvp[16]; + + /* + * Do some rotation with Euler angles. It is not a fixed axis as + * quaterions would be, but the effect is cool. + */ + rotate_matrix(data->angle_x, 1.0, 0.0, 0.0, matrix_modelview); + rotate_matrix(data->angle_y, 0.0, 1.0, 0.0, matrix_rotate); + + multiply_matrix(matrix_rotate, matrix_modelview, matrix_modelview); + + rotate_matrix(data->angle_z, 0.0, 1.0, 0.0, matrix_rotate); + + multiply_matrix(matrix_rotate, matrix_modelview, matrix_modelview); + + /* Pull the camera back from the cube */ + matrix_modelview[14] -= 2.5; + + perspective_matrix(45.0, (double)width/(double)height, 0.01, 100.0, matrix_perspective); + multiply_matrix(matrix_perspective, matrix_modelview, matrix_mvp); + + GL_CHECK(glUniformMatrix4fv(data->attr_mvp, 1, GL_FALSE, matrix_mvp)); + + data->angle_x += 3; + data->angle_y += 2; + data->angle_z += 1; + + if(data->angle_x >= 360) data->angle_x -= 360; + if(data->angle_x < 0) data->angle_x += 360; + if(data->angle_y >= 360) data->angle_y -= 360; + if(data->angle_y < 0) data->angle_y += 360; + if(data->angle_z >= 360) data->angle_z -= 360; + if(data->angle_z < 0) data->angle_z += 360; + + GL_CHECK(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)); + GL_CHECK(glDrawArrays(GL_TRIANGLES, 0, 36)); +} + +int +main(int argc, char *argv[]) +{ + int fsaa, accel; + int value; + int i, done; + SDL_DisplayMode mode; + SDL_Event event; + Uint32 then, now, frames; + int status; + shader_data *datas, *data; + + /* Initialize parameters */ + fsaa = 0; + accel = 0; + + /* Initialize test framework */ + state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); + if (!state) { + return 1; + } + for (i = 1; i < argc;) { + int consumed; + + consumed = SDLTest_CommonArg(state, i); + if (consumed == 0) { + if (SDL_strcasecmp(argv[i], "--fsaa") == 0) { + ++fsaa; + consumed = 1; + } else if (SDL_strcasecmp(argv[i], "--accel") == 0) { + ++accel; + consumed = 1; + } else if (SDL_strcasecmp(argv[i], "--zdepth") == 0) { + i++; + if (!argv[i]) { + consumed = -1; + } else { + depth = SDL_atoi(argv[i]); + consumed = 1; + } + } else { + consumed = -1; + } + } + if (consumed < 0) { + fprintf(stderr, "Usage: %s %s [--fsaa] [--accel] [--zdepth %%d]\n", argv[0], + SDLTest_CommonUsage(state)); + quit(1); + } + i += consumed; + } + + /* Set OpenGL parameters */ + state->window_flags |= SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS; + state->gl_red_size = 5; + state->gl_green_size = 5; + state->gl_blue_size = 5; + state->gl_depth_size = depth; + state->gl_major_version = 2; + state->gl_minor_version = 0; + state->gl_profile_mask = SDL_GL_CONTEXT_PROFILE_ES; + + if (fsaa) { + state->gl_multisamplebuffers=1; + state->gl_multisamplesamples=fsaa; + } + if (accel) { + state->gl_accelerated=1; + } + if (!SDLTest_CommonInit(state)) { + return; + quit(2); + } + + context = SDL_calloc(state->num_windows, sizeof(context)); + if (context == NULL) { + fprintf(stderr, "Out of memory!\n"); + quit(2); + } + + /* Create OpenGL ES contexts */ + for (i = 0; i < state->num_windows; i++) { + context[i] = SDL_GL_CreateContext(state->windows[i]); + if (!context[i]) { + fprintf(stderr, "SDL_GL_CreateContext(): %s\n", SDL_GetError()); + quit(2); + } + } + + if (state->render_flags & SDL_RENDERER_PRESENTVSYNC) { + SDL_GL_SetSwapInterval(1); + } else { + SDL_GL_SetSwapInterval(0); + } + + SDL_GetCurrentDisplayMode(0, &mode); + printf("Screen bpp: %d\n", SDL_BITSPERPIXEL(mode.format)); + printf("\n"); + printf("Vendor : %s\n", glGetString(GL_VENDOR)); + printf("Renderer : %s\n", glGetString(GL_RENDERER)); + printf("Version : %s\n", glGetString(GL_VERSION)); + printf("Extensions : %s\n", glGetString(GL_EXTENSIONS)); + printf("\n"); + + status = SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); + if (!status) { + printf("SDL_GL_RED_SIZE: requested %d, got %d\n", 5, value); + } else { + fprintf(stderr, "Failed to get SDL_GL_RED_SIZE: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &value); + if (!status) { + printf("SDL_GL_GREEN_SIZE: requested %d, got %d\n", 5, value); + } else { + fprintf(stderr, "Failed to get SDL_GL_GREEN_SIZE: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &value); + if (!status) { + printf("SDL_GL_BLUE_SIZE: requested %d, got %d\n", 5, value); + } else { + fprintf(stderr, "Failed to get SDL_GL_BLUE_SIZE: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &value); + if (!status) { + printf("SDL_GL_DEPTH_SIZE: requested %d, got %d\n", depth, value); + } else { + fprintf(stderr, "Failed to get SDL_GL_DEPTH_SIZE: %s\n", + SDL_GetError()); + } + if (fsaa) { + status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &value); + if (!status) { + printf("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value); + } else { + fprintf(stderr, "Failed to get SDL_GL_MULTISAMPLEBUFFERS: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &value); + if (!status) { + printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, + value); + } else { + fprintf(stderr, "Failed to get SDL_GL_MULTISAMPLESAMPLES: %s\n", + SDL_GetError()); + } + } + if (accel) { + status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); + if (!status) { + printf("SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value); + } else { + fprintf(stderr, "Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n", + SDL_GetError()); + } + } + + datas = SDL_calloc(state->num_windows, sizeof(shader_data)); + + /* Set rendering settings for each context */ + for (i = 0; i < state->num_windows; ++i) { + + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + + /* Continue for next window */ + continue; + } + glViewport(0, 0, state->window_w, state->window_h); + + data = &datas[i]; + data->angle_x = 0; data->angle_y = 0; data->angle_z = 0; + + /* Shader Initialization */ + process_shader(&data->shader_vert, _shader_vert_src, GL_VERTEX_SHADER); + process_shader(&data->shader_frag, _shader_frag_src, GL_FRAGMENT_SHADER); + + /* Create shader_program (ready to attach shaders) */ + data->shader_program = GL_CHECK(glCreateProgram()); + + /* Attach shaders and link shader_program */ + GL_CHECK(glAttachShader(data->shader_program, data->shader_vert)); + GL_CHECK(glAttachShader(data->shader_program, data->shader_frag)); + GL_CHECK(glLinkProgram(data->shader_program)); + + /* Get attribute locations of non-fixed attributes like color and texture coordinates. */ + data->attr_position = GL_CHECK(glGetAttribLocation(data->shader_program, "av4position")); + data->attr_color = GL_CHECK(glGetAttribLocation(data->shader_program, "av3color")); + + /* Get uniform locations */ + data->attr_mvp = GL_CHECK(glGetUniformLocation(data->shader_program, "mvp")); + + GL_CHECK(glUseProgram(data->shader_program)); + + /* Enable attributes for position, color and texture coordinates etc. */ + GL_CHECK(glEnableVertexAttribArray(data->attr_position)); + GL_CHECK(glEnableVertexAttribArray(data->attr_color)); + + /* Populate attributes for position, color and texture coordinates etc. */ + GL_CHECK(glVertexAttribPointer(data->attr_position, 3, GL_FLOAT, GL_FALSE, 0, _vertices)); + GL_CHECK(glVertexAttribPointer(data->attr_color, 3, GL_FLOAT, GL_FALSE, 0, _colors)); + + GL_CHECK(glEnable(GL_CULL_FACE)); + GL_CHECK(glEnable(GL_DEPTH_TEST)); + } + + /* Main render loop */ + frames = 0; + then = SDL_GetTicks(); + done = 0; + while (!done) { + /* Check for events */ + ++frames; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_WINDOWEVENT: + switch (event.window.event) { + case SDL_WINDOWEVENT_RESIZED: + for (i = 0; i < state->num_windows; ++i) { + if (event.window.windowID == SDL_GetWindowID(state->windows[i])) { + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + break; + } + /* Change view port to the new window dimensions */ + glViewport(0, 0, event.window.data1, event.window.data2); + /* Update window content */ + Render(event.window.data1, event.window.data2, &datas[i]); + SDL_GL_SwapWindow(state->windows[i]); + break; + } + } + break; + } + } + SDLTest_CommonEvent(state, &event, &done); + } + for (i = 0; i < state->num_windows; ++i) { + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + + /* Continue for next window */ + continue; + } + Render(state->window_w, state->window_h, &datas[i]); + SDL_GL_SwapWindow(state->windows[i]); + } + } + + /* Print out some timing information */ + now = SDL_GetTicks(); + if (now > then) { + printf("%2.2f frames per second\n", + ((double) frames * 1000) / (now - then)); + } +#if !defined(__ANDROID__) + quit(0); +#endif + return 0; +} + +#else /* HAVE_OPENGLES2 */ + +int +main(int argc, char *argv[]) +{ + printf("No OpenGL ES support on this system\n"); + return 1; +} + +#endif /* HAVE_OPENGLES2 */ + +/* vi: set ts=4 sw=4 expandtab: */ From 97690f31456e39aa33c67d6a7bb38eeee8c8b22c Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 19 Nov 2013 11:04:05 -0300 Subject: [PATCH 121/402] Find the best EGL config available between those returned by eglChooseConfig This existed in the old Android Java code, it got lost in the migration to the commong EGL code. --- src/video/SDL_egl.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index f9ab8faf5f..73a6df16fa 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -218,7 +218,9 @@ SDL_EGL_ChooseConfig(_THIS) /* 64 seems nice. */ EGLint attribs[64]; EGLint found_configs = 0; - int i; + /* 128 seems even nicer here */ + EGLConfig configs[128]; + int i, j, best_bitdiff = -1, bitdiff, value; if (!_this->egl_data) { /* The EGL library wasn't loaded, SDL_GetError() should have info */ @@ -273,12 +275,44 @@ SDL_EGL_ChooseConfig(_THIS) if (_this->egl_data->eglChooseConfig(_this->egl_data->egl_display, attribs, - &_this->egl_data->egl_config, 1, + configs, SDL_arraysize(configs), &found_configs) == EGL_FALSE || found_configs == 0) { return SDL_SetError("Couldn't find matching EGL config"); } + /* eglChooseConfig returns a number of configurations that match or exceed the requested attribs. */ + /* From those, we select the one that matches our requirements more closely via a makeshift algorithm */ + + for ( i=0; iegl_data->eglGetConfigAttrib(_this->egl_data->egl_display, configs[i], attribs[j], &value); + bitdiff += value - attribs[j + 1]; /* value is always >= attrib */ + } + } + + if (bitdiff < best_bitdiff || best_bitdiff == -1) { + _this->egl_data->egl_config = configs[i]; + + best_bitdiff = bitdiff; + } + + if (bitdiff == 0) break; /* we found an exact match! */ + } + return 0; } From 8bf36f483a18f8bf85e1ac17433e16ea26c70fd0 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 19 Nov 2013 15:00:39 -0500 Subject: [PATCH 122/402] -fvisibility=hidden is no longer a requirement for dynamic X11. We don't clash with Xlib symbols anymore. --- cmake/sdlchecks.cmake | 11 ----------- configure.in | 14 +------------- 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index b130201d77..84a93bdda4 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -331,15 +331,8 @@ macro(CheckX11) set(SOURCE_FILES ${SOURCE_FILES} ${X11_SOURCES}) set(SDL_VIDEO_DRIVER_X11 1) - if(HAVE_GCC_FVISIBILITY) - set(X11_SYMBOLS_PRIVATE TRUE) - else() - set(X11_SYMBOLS_PRIVATE FALSE) - endif(HAVE_GCC_FVISIBILITY) - if(APPLE) set(X11_SHARED OFF) - set(X11_SYMBOLS_PRIVATE TRUE) endif(APPLE) check_function_exists("shmat" HAVE_SHMAT) @@ -358,10 +351,6 @@ macro(CheckX11) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic X11 loading") set(HAVE_X11_SHARED FALSE) - if(X11_SYMBOLS_PRIVATE) - message_warn("You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading") - set(HAVE_X11_SHARED TRUE) - endif(X11_SYMBOLS_PRIVATE) else(NOT HAVE_DLOPEN) set(HAVE_X11_SHARED TRUE) endif() diff --git a/configure.in b/configure.in index e75ede8988..e3f094cc55 100644 --- a/configure.in +++ b/configure.in @@ -1140,18 +1140,12 @@ AC_HELP_STRING([--enable-video-x11], [use X11 video driver [[default=yes]]]), AC_PATH_X AC_PATH_XTRA if test x$have_x = xyes; then - # Only allow dynamically loaded X11 if the X11 function pointers - # will not end up in the global namespace, which causes problems - # with other libraries calling X11 functions. - x11_symbols_private=$have_gcc_fvisibility - AC_ARG_ENABLE(x11-shared, AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=maybe]]]), , enable_x11_shared=maybe) case "$host" in *-*-darwin*) - x11_symbols_private=yes x11_lib='/usr/X11R6/lib/libX11.6.dylib' x11ext_lib='/usr/X11R6/lib/libXext.6.dylib' xcursor_lib='/usr/X11R6/lib/libXcursor.1.dylib' @@ -1212,19 +1206,13 @@ AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=ma SDL_CFLAGS="$SDL_CFLAGS $X_CFLAGS" if test x$enable_x11_shared = xmaybe; then - enable_x11_shared=$x11_symbols_private + enable_x11_shared=yes fi if test x$have_loadso != xyes && \ test x$enable_x11_shared = xyes; then AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic X11 loading]) enable_x11_shared=no fi - if test x$x11_symbols_private != xyes && \ - test x$enable_x11_shared = xyes; then - AC_MSG_WARN([You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading]) - enable_x11_shared=no - fi - if test x$have_loadso = xyes && \ test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then echo "-- dynamic libX11 -> $x11_lib" From 5d75d6c030a3e488c1b59e1489664d3bb9d16dd2 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 19 Nov 2013 15:25:00 -0500 Subject: [PATCH 123/402] Fixed SONAME lookup for runtime loading of shared libraries in CMake project. Fixes Bugzilla #2249. --- cmake/sdlchecks.cmake | 95 ++++++++++++++++++++++++++----------------- 1 file changed, 57 insertions(+), 38 deletions(-) diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index 84a93bdda4..86366e4936 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -1,3 +1,34 @@ +macro(FindLibraryAndSONAME _LIB) + string(TOUPPER ${_LIB} _UPPERLNAME) + string(REGEX REPLACE "\\-" "_" _LNAME "${_UPPERLNAME}") + + find_library(${_LNAME}_LIB ${_LIB}) + if(${_LNAME}_LIB) + # reduce the library name for shared linking + + get_filename_component(_LIB_REALPATH ${${_LNAME}_LIB} REALPATH) # resolves symlinks + get_filename_component(_LIB_JUSTNAME ${_LIB_REALPATH} NAME) + + if(APPLE) + string(REGEX REPLACE "(\\.[0-9]*)\\.[0-9\\.]*dylib$" "\\1.dylib" _LIB_REGEXD "${_LIB_JUSTNAME}") + else() + string(REGEX REPLACE "(\\.[0-9]*)\\.[0-9\\.]*$" "\\1" _LIB_REGEXD "${_LIB_JUSTNAME}") + endif() + + SET(_DEBUG_FindSONAME FALSE) + if(_DEBUG_FindSONAME) + message_warn("DYNLIB OUTPUTVAR: ${_LIB} ... ${_LNAME}_LIB") + message_warn("DYNLIB ORIGINAL LIB: ${_LIB} ... ${${_LNAME}_LIB}") + message_warn("DYNLIB REALPATH LIB: ${_LIB} ... ${_LIB_REALPATH}") + message_warn("DYNLIB JUSTNAME LIB: ${_LIB} ... ${_LIB_JUSTNAME}") + message_warn("DYNLIB REGEX'd LIB: ${_LIB} ... ${_LIB_REGEXD}") + endif() + + message(STATUS "dynamic lib${_LIB} -> ${_LIB_REGEXD}") + set(${_LNAME}_LIB_SONAME ${_LIB_REGEXD}) + endif() +endmacro() + macro(CheckDLOPEN) check_function_exists(dlopen HAVE_DLOPEN) if(NOT HAVE_DLOPEN) @@ -83,9 +114,8 @@ macro(CheckALSA) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic ALSA loading") else() - find_library(_ALSA_LIB asound) - get_filename_component(F_ALSA_LIB ${_ALSA_LIB} NAME) - set(SDL_AUDIO_DRIVER_ALSA_DYNAMIC "\"${F_ALSA_LIB}\"") + FindLibraryAndSONAME("asound") + set(SDL_AUDIO_DRIVER_ALSA_DYNAMIC "\"${ASOUND_LIB_SONAME}\"") set(HAVE_ALSA_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(ALSA_SHARED) @@ -114,9 +144,8 @@ macro(CheckPulseAudio) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic PulseAudio loading") else() - find_library(D_PULSE_LIB pulse-simple) - get_filename_component(F_PULSE_LIB ${D_PULSE_LIB} NAME) - set(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "\"${F_PULSE_LIB}\"") + FindLibraryAndSONAME("pulse-simple") + set(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "\"${PULSE_SIMPLE_LIB_SONAME}\"") set(HAVE_PULSEAUDIO_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(PULSEAUDIO_SHARED) @@ -145,9 +174,8 @@ macro(CheckESD) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic ESD loading") else() - find_library(D_ESD_LIB esd) - get_filename_component(F_ESD_LIB ${D_ESD_LIB} NAME) - set(SDL_AUDIO_DRIVER_ESD_DYNAMIC "\"${F_ESD_LIB}\"") + FindLibraryAndSONAME(esd) + set(SDL_AUDIO_DRIVER_ESD_DYNAMIC "\"${ESD_LIB_SONAME}\"") set(HAVE_ESD_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(ESD_SHARED) @@ -181,9 +209,8 @@ macro(CheckARTS) message_warn("You must have SDL_LoadObject() support for dynamic ARTS loading") else() # TODO - find_library(D_ARTS_LIB artsc) - get_filename_component(F_ARTS_LIB ${D_ARTS_LIB} NAME) - set(SDL_AUDIO_DRIVER_ARTS_DYNAMIC "\"${F_ARTS_LIB}\"") + FindLibraryAndSONAME(artsc) + set(SDL_AUDIO_DRIVER_ARTS_DYNAMIC "\"${ARTSC_LIB_SONAME}\"") set(HAVE_ARTS_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(ARTS_SHARED) @@ -213,8 +240,8 @@ macro(CheckNAS) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic NAS loading") else() - get_filename_component(F_NAS_LIB ${D_NAS_LIB} NAME) - set(SDL_AUDIO_DRIVER_NAS_DYNAMIC "\"${F_NAS_LIB}\"") + FindLibraryAndSONAME("audio") + set(SDL_AUDIO_DRIVER_NAS_DYNAMIC "\"${AUDIO_LIB_SONAME}\"") set(HAVE_NAS_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(NAS_SHARED) @@ -234,7 +261,7 @@ macro(CheckSNDIO) if(SNDIO) # TODO: set include paths properly, so the sndio headers are found check_include_file(sndio.h HAVE_SNDIO_H) - find_library(D_SNDIO_LIB audio) + find_library(D_SNDIO_LIB sndio) if(HAVE_SNDIO_H AND D_SNDIO_LIB) set(HAVE_SNDIO TRUE) file(GLOB SNDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sndio/*.c) @@ -244,8 +271,8 @@ macro(CheckSNDIO) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic sndio loading") else() - get_filename_component(F_SNDIO_LIB ${D_SNDIO_LIB} NAME) - set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${F_SNDIO_LIB}\"") + FindLibraryAndSONAME("sndio") + set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${SNDIO_LIB_SONAME}\"") set(HAVE_SNDIO_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(SNDIO_SHARED) @@ -274,9 +301,8 @@ macro(CheckFusionSound) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic FusionSound loading") else() - find_library(D_FUSIONSOUND_LIB fusionsound) - get_filename_component(F_FUSIONSOUND_LIB ${D_FUSIONSOUND_LIB} NAME) - set(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC "\"${F_FUSIONSOUND_LIB}\"") + FindLibraryAndSONAME("fusionsound") + set(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC "\"${FUSIONSOUND_LIB_SONAME}\"") set(HAVE_FUSIONSOUND_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(FUSIONSOUND_SHARED) @@ -295,13 +321,7 @@ endmacro(CheckFusionSound) macro(CheckX11) if(VIDEO_X11) foreach(_LIB X11 Xext Xcursor Xinerama Xi Xrandr Xrender Xss Xxf86vm) - string(TOUPPER ${_LIB} _LNAME) - find_library(${_LNAME}_LIB ${_LIB}) - if(${_LNAME}_LIB) - # reduce the library name for shared linking - get_filename_component(_TMP ${${_LNAME}_LIB} NAME) - set(${_LNAME}_LIB ${_TMP}) - endif() + FindLibraryAndSONAME("${_LIB}") endforeach() find_path(X_INCLUDEDIR X11/Xlib.h) @@ -355,8 +375,8 @@ macro(CheckX11) set(HAVE_X11_SHARED TRUE) endif() if(HAVE_X11_SHARED) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC "\"${X11_LIB}\"") - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "\"${XEXT_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC "\"${X11_LIB_SONAME}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "\"${XEXT_LIB_SONAME}\"") else(HAVE_X11_SHARED) list(APPEND EXTRA_LIBS ${X11_LIB} ${XEXT_LIB}) endif(HAVE_X11_SHARED) @@ -402,7 +422,7 @@ macro(CheckX11) if(VIDEO_X11_XCURSOR AND HAVE_XCURSOR_H) set(HAVE_VIDEO_X11_XCURSOR TRUE) if(HAVE_X11_SHARED AND XCURSOR_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR "\"${XCURSOR_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR "\"${XCURSOR_LIB_SONAME}\"") else(HAVE_X11_SHARED AND XCURSOR_LIB) list(APPEND EXTRA_LIBS ${XCURSOR_LIB}) endif(HAVE_X11_SHARED AND XCURSOR_LIB) @@ -412,7 +432,7 @@ macro(CheckX11) if(VIDEO_X11_XINERAMA AND HAVE_XINERAMA_H) set(HAVE_VIDEO_X11_XINERAMA TRUE) if(HAVE_X11_SHARED AND XINERAMA_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "\"${XINERAMA_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "\"${XINERAMA_LIB_SONAME}\"") else(HAVE_X11_SHARED AND XINERAMA_LIB) list(APPEND EXTRA_LIBS ${XINERAMA_LIB}) endif(HAVE_X11_SHARED AND XINERAMA_LIB) @@ -422,7 +442,7 @@ macro(CheckX11) if(VIDEO_X11_XINPUT AND HAVE_XINPUT_H) set(HAVE_VIDEO_X11_XINPUT TRUE) if(HAVE_X11_SHARED AND XI_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "\"${XI_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "\"${XI_LIB_SONAME}\"") else(HAVE_X11_SHARED AND XI_LIB) list(APPEND EXTRA_LIBS ${XI_LIB}) endif(HAVE_X11_SHARED AND XI_LIB) @@ -447,7 +467,7 @@ macro(CheckX11) if(VIDEO_X11_XRANDR AND HAVE_XRANDR_H) if(HAVE_X11_SHARED AND XRANDR_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "\"${XRANDR_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "\"${XRANDR_LIB_SONAME}\"") else(HAVE_X11_SHARED AND XRANDR_LIB) list(APPEND EXTRA_LIBS ${XRANDR_LIB}) endif(HAVE_X11_SHARED AND XRANDR_LIB) @@ -457,7 +477,7 @@ macro(CheckX11) if(VIDEO_X11_XSCRNSAVER AND HAVE_XSS_H) if(HAVE_X11_SHARED AND XSS_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "\"${XSS_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "\"${XSS_LIB_SONAME}\"") else(HAVE_X11_SHARED AND XSS_LIB) list(APPEND EXTRA_LIBS ${XSS_LIB}) endif(HAVE_X11_SHARED AND XSS_LIB) @@ -472,7 +492,7 @@ macro(CheckX11) if(VIDEO_X11_XVM AND HAVE_XF86VM_H) if(HAVE_X11_SHARED AND XF86VMODE_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XF86VMODE_LIB}\"") + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XF86VMODE_LIB_SONAME}\"") else(HAVE_X11_SHARED AND XF86VMODE_LIB) list(APPEND EXTRA_LIBS ${XF86VMODE_LIB}) endif(HAVE_X11_SHARED AND XF86VMODE_LIB) @@ -522,9 +542,8 @@ macro(CheckDirectFB) if(NOT HAVE_DLOPEN) message_warn("You must have SDL_LoadObject() support for dynamic DirectFB loading") else() - find_library(D_DIRECTFB_LIB directfb) - get_filename_component(F_DIRECTFB_LIB ${D_DIRECTFB_LIB} NAME) - set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${F_DIRECTFB_LIB}\"") + FindLibraryAndSONAME("directfb") + set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${DIRECTFB_LIB_SONAME}\"") set(HAVE_DIRECTFB_SHARED TRUE) endif(NOT HAVE_DLOPEN) else(DIRECTFB_SHARED) From 497b339cea998018190dc55e0dbd44df24425227 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 20 Nov 2013 12:51:18 -0300 Subject: [PATCH 124/402] Clean up X11 OpenGL ES backend If you really need to switch between OpenGL and GLES context types, just issue a SDL_GL_UnloadLibrary manually. --- src/video/x11/SDL_x11opengles.c | 14 +------------- src/video/x11/SDL_x11opengles.h | 2 +- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/src/video/x11/SDL_x11opengles.c b/src/video/x11/SDL_x11opengles.c index f5947e4e07..71517a80cb 100644 --- a/src/video/x11/SDL_x11opengles.c +++ b/src/video/x11/SDL_x11opengles.c @@ -36,6 +36,7 @@ X11_GLES_LoadLibrary(_THIS, const char *path) { /* If the profile requested is not GL ES, switch over to X11_GL functions */ if (_this->gl_config.profile_mask != SDL_GL_CONTEXT_PROFILE_ES) { #if SDL_VIDEO_OPENGL_GLX + X11_GLES_UnloadLibrary(_this); _this->GL_LoadLibrary = X11_GL_LoadLibrary; _this->GL_GetProcAddress = X11_GL_GetProcAddress; _this->GL_UnloadLibrary = X11_GL_UnloadLibrary; @@ -100,19 +101,6 @@ X11_GLES_CreateContext(_THIS, SDL_Window * window) return context; } -void -X11_GLES_DeleteContext(_THIS, SDL_GLContext context) -{ - /* FIXME: This "crappy fix" comes from the previous GLES X11 code, - * it's required so you can create a GLX context, destroy it and create a EGL one - * To be able to fix this, we need to add a function SDL_GL_ResetContext and - * disallow SDL_GL_MakeCurrent from taking a NULL pointer, thus ensuring we can - * determine if it is a GLX or EGL context - */ - SDL_EGL_DeleteContext(_this, context); - X11_GLES_UnloadLibrary(_this); -} - SDL_EGL_SwapWindow_impl(X11) SDL_EGL_MakeCurrent_impl(X11) diff --git a/src/video/x11/SDL_x11opengles.h b/src/video/x11/SDL_x11opengles.h index 9574e1c2bb..978f91f3d4 100644 --- a/src/video/x11/SDL_x11opengles.h +++ b/src/video/x11/SDL_x11opengles.h @@ -38,13 +38,13 @@ typedef struct SDL_PrivateGLESData #define X11_GLES_UnloadLibrary SDL_EGL_UnloadLibrary #define X11_GLES_SetSwapInterval SDL_EGL_SetSwapInterval #define X11_GLES_GetSwapInterval SDL_EGL_GetSwapInterval +#define X11_GLES_DeleteContext SDL_EGL_DeleteContext extern int X11_GLES_LoadLibrary(_THIS, const char *path); extern XVisualInfo *X11_GLES_GetVisual(_THIS, Display * display, int screen); extern SDL_GLContext X11_GLES_CreateContext(_THIS, SDL_Window * window); extern void X11_GLES_SwapWindow(_THIS, SDL_Window * window); extern int X11_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); -extern void X11_GLES_DeleteContext(_THIS, SDL_GLContext context); #endif /* SDL_VIDEO_OPENGL_EGL */ From be0888b87e2c00b13bd3fa3c7f8dd9622bdc7463 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 20 Nov 2013 21:17:26 -0500 Subject: [PATCH 125/402] Query version for X11 XInput2 multitouch separately from base XInput2. --- src/video/x11/SDL_x11xinput2.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 719d2e3518..196dd2ae9d 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -59,6 +59,18 @@ static void parse_valuators(const double *input_values,unsigned char *mask,int m z++; } } + +static SDL_bool +xinput2_version_okay(Display *display, const int major, const int minor) +{ + int outmajor = major; + int outminor = minor; + if (X11_XIQueryVersion(display, &outmajor, &outminor) != Success) { + return SDL_FALSE; + } + + return ( ((outmajor * 1000) + outminor) >= ((major * 1000) + minor) ); +} #endif /* SDL_VIDEO_DRIVER_X11_XINPUT2 */ void @@ -70,11 +82,6 @@ X11_InitXinput2(_THIS) XIEventMask eventmask; unsigned char mask[3] = { 0,0,0 }; int event, err; - int major = 2, minor = 0; - int outmajor,outminor; -#if SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH - minor = 2; -#endif /* * Initialize XInput 2 * According to http://who-t.blogspot.com/2009/05/xi2-recipes-part-1.html its better @@ -86,24 +93,17 @@ X11_InitXinput2(_THIS) */ if (!SDL_X11_HAVE_XINPUT2 || !X11_XQueryExtension(data->display, "XInputExtension", &xinput2_opcode, &event, &err)) { - return; + return; /* X server does not have XInput at all */ } - outmajor = major; - outminor = minor; - if (X11_XIQueryVersion(data->display, &outmajor, &outminor) != Success) { - return; + if (!xinput2_version_okay(data->display, 2, 0)) { + return; /* X server does not support the version we want */ } - /* Check supported version */ - if(outmajor * 1000 + outminor < major * 1000 + minor) { - /* X server does not support the version we want */ - return; - } xinput2_initialized = 1; + #if SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH - /* XInput 2.2 */ - if(outmajor * 1000 + outminor >= major * 1000 + minor) { + if (xinput2_version_okay(data->display, 2, 2)) { /* Multitouch needs XInput 2.2 */ xinput2_multitouch_supported = 1; } #endif From 7307c9c154ccb4d7f4ab5cc04c662630fc29666b Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 22 Nov 2013 10:26:28 -0300 Subject: [PATCH 126/402] [Android] Fixes #2247, enable hardware acceleration by default. Setting android:hardwareAccelerated="true" seems to fix some random behaviors in certain devices like the XperiaE. Ref: http://developer.android.com/guide/topics/graphics/hardware-accel.html --- android-project/AndroidManifest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/android-project/AndroidManifest.xml b/android-project/AndroidManifest.xml index a05b5660e8..dc8450a61e 100644 --- a/android-project/AndroidManifest.xml +++ b/android-project/AndroidManifest.xml @@ -20,7 +20,8 @@ + android:theme="@android:style/Theme.NoTitleBar.Fullscreen" + android:hardwareAccelerated="true" > Date: Fri, 22 Nov 2013 13:24:53 -0300 Subject: [PATCH 127/402] OpenGL ES support for Windows --- README-windows.txt | 42 + VisualC/SDL/SDL_VS2008.vcproj | 28 + VisualC/SDL/SDL_VS2010.vcxproj | 7 + VisualC/SDL/SDL_VS2012.vcxproj | 7 + VisualC/SDL/SDL_VS2013.vcxproj | 949 +++--- VisualC/SDL_VS2013.sln | 16 +- .../tests/testgles2/testgles2_VS2008.vcproj | 207 ++ .../tests/testgles2/testgles2_VS2010.vcxproj | 238 ++ .../tests/testgles2/testgles2_VS2012.vcxproj | 236 ++ .../tests/testgles2/testgles2_VS2013.vcxproj | 236 ++ include/SDL_config_windows.h | 10 + include/SDL_egl.h | 1389 +++++++++ include/SDL_hints.h | 15 + include/SDL_opengles2.h | 2758 ++++++++++++++++- src/render/opengles2/SDL_gles2funcs.h | 2 + src/video/SDL_egl.c | 120 +- src/video/{SDL_egl.h => SDL_egl_c.h} | 41 +- src/video/android/SDL_androidgl.c | 2 +- src/video/android/SDL_androidvideo.c | 2 +- src/video/android/SDL_androidwindow.h | 2 +- src/video/raspberry/SDL_rpiopengles.h | 2 +- src/video/windows/SDL_windowsopengl.c | 66 +- src/video/windows/SDL_windowsopengl.h | 2 + src/video/windows/SDL_windowsopengles.c | 141 + src/video/windows/SDL_windowsopengles.h | 51 + src/video/windows/SDL_windowsvideo.h | 1 + src/video/windows/SDL_windowswindow.c | 27 + src/video/windows/SDL_windowswindow.h | 7 + src/video/x11/SDL_x11opengles.h | 2 +- test/configure | 2 +- test/configure.in | 2 +- test/testgles2.c | 1341 ++++---- 32 files changed, 6741 insertions(+), 1210 deletions(-) create mode 100644 README-windows.txt create mode 100644 VisualC/tests/testgles2/testgles2_VS2008.vcproj create mode 100644 VisualC/tests/testgles2/testgles2_VS2010.vcxproj create mode 100644 VisualC/tests/testgles2/testgles2_VS2012.vcxproj create mode 100644 VisualC/tests/testgles2/testgles2_VS2013.vcxproj create mode 100644 include/SDL_egl.h rename src/video/{SDL_egl.h => SDL_egl_c.h} (76%) create mode 100644 src/video/windows/SDL_windowsopengles.c create mode 100644 src/video/windows/SDL_windowsopengles.h diff --git a/README-windows.txt b/README-windows.txt new file mode 100644 index 0000000000..f59b2661bd --- /dev/null +++ b/README-windows.txt @@ -0,0 +1,42 @@ +================================================================================ +Simple DirectMedia Layer for Windows +================================================================================ + +================================================================================ +OpenGL ES 2.x support +================================================================================ + +SDL has support for OpenGL ES 2.x under Windows via two alternative +implementations. +The most straightforward method consists in running your app in a system with +a graphic card paired with a relatively recent (as of November of 2013) driver +which supports the WGL_EXT_create_context_es2_profile extension. Vendors known +to ship said extension on Windows currently include nVidia and Intel. + +The other method involves using the ANGLE library (https://code.google.com/p/angleproject/) +If an OpenGL ES 2.x context is requested and no WGL_EXT_create_context_es2_profile +extension is found, SDL will try to load the libEGL.dll library provided by +ANGLE. +To obtain the ANGLE binaries, you can either compile from source from +https://chromium.googlesource.com/angle/angle or copy the relevant binaries from +a recent Chrome/Chromium install for Windows. The files you need are: + + * libEGL.dll + * libGLESv2.dll + * d3dcompiler_46.dll (supports Windows Vista or later, better shader compiler) + or... + * d3dcompiler_43.dll (supports Windows XP or later) + +If you compile ANGLE from source, you can configure it so it does not need the +d3dcompiler_* DLL at all (for details on this, see their documentation). +However, by default SDL will try to preload the d3dcompiler_46.dll to +comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to +support Windows XP) or to skip this step at all, you can use the +SDL_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details). + +Known Bugs: + + * SDL_GL_SetSwapInterval is currently a no op when using ANGLE. It appears + that there's a bug in the library which prevents the window contents from + refreshing if this is set to anything other than the default value. + diff --git a/VisualC/SDL/SDL_VS2008.vcproj b/VisualC/SDL/SDL_VS2008.vcproj index 1e7db21a33..7d48e6144f 100644 --- a/VisualC/SDL/SDL_VS2008.vcproj +++ b/VisualC/SDL/SDL_VS2008.vcproj @@ -415,6 +415,18 @@ RelativePath="..\..\include\SDL_cpuinfo.h" > + + + + + + @@ -1272,6 +1284,22 @@ RelativePath="..\..\src\video\windows\SDL_windowsopengl.c" > + + + + + + + + diff --git a/VisualC/SDL/SDL_VS2010.vcxproj b/VisualC/SDL/SDL_VS2010.vcxproj index d9ca5aff7f..7a17ced35d 100644 --- a/VisualC/SDL/SDL_VS2010.vcxproj +++ b/VisualC/SDL/SDL_VS2010.vcxproj @@ -553,6 +553,9 @@ + + + @@ -669,6 +672,10 @@ + + + + diff --git a/VisualC/SDL/SDL_VS2012.vcxproj b/VisualC/SDL/SDL_VS2012.vcxproj index 141bc6481f..f60a4d9aa6 100644 --- a/VisualC/SDL/SDL_VS2012.vcxproj +++ b/VisualC/SDL/SDL_VS2012.vcxproj @@ -344,6 +344,9 @@ + + + @@ -460,6 +463,10 @@ + + + + diff --git a/VisualC/SDL/SDL_VS2013.vcxproj b/VisualC/SDL/SDL_VS2013.vcxproj index 2f961674e7..df6019a62b 100644 --- a/VisualC/SDL/SDL_VS2013.vcxproj +++ b/VisualC/SDL/SDL_VS2013.vcxproj @@ -1,472 +1,479 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - SDL2 - {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} - SDL - - - - DynamicLibrary - false - v120 - - - DynamicLibrary - false - v120 - - - DynamicLibrary - false - v120 - - - DynamicLibrary - false - MultiByte - v120 - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - Disabled - ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; - _DEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - false - - - Level3 - true - EditAndContinue - Default - false - StreamingSIMDExtensions - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) - true - true - Windows - false - $(DXSDK_DIR)\lib\x86 - - - - - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 - - - Disabled - ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; - _DEBUG;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - false - - - Level3 - EditAndContinue - false - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) - true - true - Windows - false - $(DXSDK_DIR)\lib\x64 - - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - - - OnlyExplicitInline - false - ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; - NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - true - - - Level3 - true - Default - false - ProgramDatabase - StreamingSIMDExtensions - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) - true - Windows - $(DXSDK_DIR)\lib\x86 - true - true - true - - - - - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 - - - OnlyExplicitInline - false - ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; - NDEBUG;_WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - false - true - - - Level3 - false - ProgramDatabase - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) - true - Windows - $(DXSDK_DIR)\lib\x64 - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SDL2 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + SDL + + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + v120 + + + DynamicLibrary + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + false + + + Level3 + true + EditAndContinue + Default + false + StreamingSIMDExtensions + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + true + Windows + false + $(DXSDK_DIR)\lib\x86 + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + Disabled + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + _DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + false + + + Level3 + EditAndContinue + false + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + true + Windows + false + $(DXSDK_DIR)\lib\x64 + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + false + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + + + Level3 + true + Default + false + ProgramDatabase + StreamingSIMDExtensions + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + $(DXSDK_DIR)\lib\x86 + true + true + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + + + OnlyExplicitInline + false + ..\..\include;%(AdditionalIncludeDirectories);"$(DXSDK_DIR)\Include"; + NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + true + + + Level3 + false + ProgramDatabase + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + $(DXSDK_DIR)\lib\x64 + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/SDL_VS2013.sln b/VisualC/SDL_VS2013.sln index e4521439a3..82ac105d9f 100644 --- a/VisualC/SDL_VS2013.sln +++ b/VisualC/SDL_VS2013.sln @@ -1,5 +1,8 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 + +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2", "SDL\SDL_VS2013.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL2main", "SDLmain\SDLmain_VS2013.vcxproj", "{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}" @@ -102,6 +105,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testj {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgles2", "tests\testgles2\testgles2_VS2013.vcxproj", "{E5287C64-0646-4BFA-A772-1DB5A649F35E}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -252,6 +257,14 @@ Global {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|Win32.Build.0 = Release|Win32 {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|x64.ActiveCfg = Release|x64 {55812185-D13C-4022-9C81-32E0F4A08BCC}.Release|x64.Build.0 = Release|x64 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Debug|Win32.ActiveCfg = Debug|Win32 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Debug|Win32.Build.0 = Debug|Win32 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Debug|x64.ActiveCfg = Debug|x64 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Debug|x64.Build.0 = Debug|x64 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Release|Win32.ActiveCfg = Release|Win32 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Release|Win32.Build.0 = Release|Win32 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Release|x64.ActiveCfg = Release|x64 + {E5287C64-0646-4BFA-A772-1DB5A649F35E}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -273,5 +286,6 @@ Global {55812185-D13C-4022-9C81-32E0F4A08336} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} {55812185-D13C-4022-9C81-32E0F4A08996} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} {55812185-D13C-4022-9C81-32E0F4A08BCC} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} + {E5287C64-0646-4BFA-A772-1DB5A649F35E} = {CE748C1F-3C21-4825-AA6A-F895A023F7E7} EndGlobalSection EndGlobal diff --git a/VisualC/tests/testgles2/testgles2_VS2008.vcproj b/VisualC/tests/testgles2/testgles2_VS2008.vcproj new file mode 100644 index 0000000000..a0ebbd6837 --- /dev/null +++ b/VisualC/tests/testgles2/testgles2_VS2008.vcproj @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VisualC/tests/testgles2/testgles2_VS2010.vcxproj b/VisualC/tests/testgles2/testgles2_VS2010.vcxproj new file mode 100644 index 0000000000..fc41cd69bf --- /dev/null +++ b/VisualC/tests/testgles2/testgles2_VS2010.vcxproj @@ -0,0 +1,238 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testgles2 + testgles2 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884} + + + + Application + false + + + Application + false + + + Application + false + + + Application + false + MultiByte + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + {da956fd3-e142-46f2-9dd5-c78bebb56b7a} + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testgles2/testgles2_VS2012.vcxproj b/VisualC/tests/testgles2/testgles2_VS2012.vcxproj new file mode 100644 index 0000000000..4dbb3791af --- /dev/null +++ b/VisualC/tests/testgles2/testgles2_VS2012.vcxproj @@ -0,0 +1,236 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testgles2 + testgles2 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884} + + + + Application + false + v110 + + + Application + false + v110 + + + Application + false + v110 + + + Application + false + MultiByte + v110 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + + \ No newline at end of file diff --git a/VisualC/tests/testgles2/testgles2_VS2013.vcxproj b/VisualC/tests/testgles2/testgles2_VS2013.vcxproj new file mode 100644 index 0000000000..985ad30b47 --- /dev/null +++ b/VisualC/tests/testgles2/testgles2_VS2013.vcxproj @@ -0,0 +1,236 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + testgles2 + testgles2 + {E5287C64-0646-4BFA-A772-1DB5A649F35E} + + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + v120 + + + Application + false + MultiByte + v120 + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + true + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + false + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGLES2;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + EditAndContinue + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + %(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + + + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGLES2;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + + + Level3 + true + ProgramDatabase + Default + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + %(AdditionalDependencies) + true + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGLES2;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + %(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + + + OnlyExplicitInline + ..\..\..\include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGLES2;%(PreprocessorDefinitions) + true + MultiThreadedDLL + true + + + Level3 + true + Default + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + %(AdditionalDependencies) + true + Windows + + + copy "$(SolutionDir)\SDL\$(Platform)\$(Configuration)\SDL2.dll" "$(TargetDir)\SDL2.dll" + + + Copy SDL + + + + + + + + + + + + + + \ No newline at end of file diff --git a/include/SDL_config_windows.h b/include/SDL_config_windows.h index 4d5c7c293f..6bde3f86fb 100644 --- a/include/SDL_config_windows.h +++ b/include/SDL_config_windows.h @@ -180,6 +180,16 @@ typedef unsigned int uintptr_t; #ifndef SDL_VIDEO_RENDER_OGL #define SDL_VIDEO_RENDER_OGL 1 #endif +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif + /* Enable system power support */ #define SDL_POWER_WINDOWS 1 diff --git a/include/SDL_egl.h b/include/SDL_egl.h new file mode 100644 index 0000000000..fc8fde4a65 --- /dev/null +++ b/include/SDL_egl.h @@ -0,0 +1,1389 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#ifndef _MSC_VER + +#include + +#else /* _MSC_VER */ + +/* EGL headers for Visual Studio */ + +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. +* +* $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $ +* +* Adopters may modify this file to suit their platform. Adopters are +* encouraged to submit platform specific modifications to the Khronos +* group so that they can be included in future versions of this file. +* Please submit changes by sending them to the public Khronos Bugzilla +* (http://khronos.org/bugzilla) by filing a bug against product +* "Khronos (general)" component "Registry". +* +* A predefined template which fills in some of the bug fields can be +* reached using http://tinyurl.com/khrplatform-h-bugreport, but you +* must create a Bugzilla login first. +* +* +* See the Implementer's Guidelines for information about where this file +* should be located on your system and for more details of its use: +* http://www.khronos.org/registry/implementers_guide.pdf +* +* This file should be included as +* #include +* by Khronos client API header files that use its types and defines. +* +* The types in khrplatform.h should only be used to define API-specific types. +* +* Types defined in khrplatform.h: +* khronos_int8_t signed 8 bit +* khronos_uint8_t unsigned 8 bit +* khronos_int16_t signed 16 bit +* khronos_uint16_t unsigned 16 bit +* khronos_int32_t signed 32 bit +* khronos_uint32_t unsigned 32 bit +* khronos_int64_t signed 64 bit +* khronos_uint64_t unsigned 64 bit +* khronos_intptr_t signed same number of bits as a pointer +* khronos_uintptr_t unsigned same number of bits as a pointer +* khronos_ssize_t signed size +* khronos_usize_t unsigned size +* khronos_float_t signed 32 bit floating point +* khronos_time_ns_t unsigned 64 bit time in nanoseconds +* khronos_utime_nanoseconds_t unsigned time interval or absolute time in +* nanoseconds +* khronos_stime_nanoseconds_t signed time interval in nanoseconds +* khronos_boolean_enum_t enumerated boolean type. This should +* only be used as a base type when a client API's boolean type is +* an enum. Client APIs which use an integer or other type for +* booleans cannot use this as the base type for their boolean. +* +* Tokens defined in khrplatform.h: +* +* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. +* +* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. +* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. +* +* Calling convention macros defined in this file: +* KHRONOS_APICALL +* KHRONOS_APIENTRY +* KHRONOS_APIATTRIBUTES +* +* These may be used in function prototypes as: +* +* KHRONOS_APICALL void KHRONOS_APIENTRY funcname( +* int arg1, +* int arg2) KHRONOS_APIATTRIBUTES; +*/ + +/*------------------------------------------------------------------------- +* Definition of KHRONOS_APICALL +*------------------------------------------------------------------------- +* This precedes the return type of the function in the function prototype. +*/ +#if defined(_WIN32) && !defined(__SCITECH_SNAP__) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- +* Definition of KHRONOS_APIENTRY +*------------------------------------------------------------------------- +* This follows the return type of the function and precedes the function +* name in the function prototype. +*/ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) +/* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- +* Definition of KHRONOS_APIATTRIBUTES +*------------------------------------------------------------------------- +* This follows the closing parenthesis of the function prototype arguments. +*/ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- +* basic type definitions +*-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* +* Using +*/ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* +* Using +*/ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* +* Win32 +*/ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* +* Sun or Digital +*/ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* +* Hypothetical platform with no float or int64 support +*/ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* +* Generic fallback +*/ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* +* Types that are (so far) the same on all platforms +*/ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* +* Types that differ between LLP64 and LP64 architectures - in LLP64, +* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears +* to be the only LLP64 architecture in current use. +*/ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* +* Float type +*/ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types +* +* These types can be used to represent a time interval in nanoseconds or +* an absolute Unadjusted System Time. Unadjusted System Time is the number +* of nanoseconds since some arbitrary system event (e.g. since the last +* time the system booted). The Unadjusted System Time is an unsigned +* 64 bit value that wraps back to 0 every 584 years. Time intervals +* may be either signed or unsigned. +*/ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* +* Dummy value used to pad enum types to 32 bits. +*/ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* +* Enumerated boolean type +* +* Values other than zero should be considered to be true. Therefore +* comparisons should not be made against KHRONOS_TRUE. +*/ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ + + +#ifndef __eglplatform_h_ +#define __eglplatform_h_ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Platform-specific types and definitions for egl.h +* $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $ +* +* Adopters may modify khrplatform.h and this file to suit their platform. +* You are encouraged to submit all modifications to the Khronos group so that +* they can be included in future versions of this file. Please submit changes +* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) +* by filing a bug against product "EGL" component "Registry". +*/ + +/*#include */ + +/* Macros used in EGL function prototype declarations. +* +* EGL functions should be prototyped as: +* +* EGLAPI return-type EGLAPIENTRY eglFunction(arguments); +* typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments); +* +* KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h +*/ + +#ifndef EGLAPI +#define EGLAPI KHRONOS_APICALL +#endif + +#ifndef EGLAPIENTRY +#define EGLAPIENTRY KHRONOS_APIENTRY +#endif +#define EGLAPIENTRYP EGLAPIENTRY* + +/* The types NativeDisplayType, NativeWindowType, and NativePixmapType +* are aliases of window-system-dependent types, such as X Display * or +* Windows Device Context. They must be defined in platform-specific +* code below. The EGL-prefixed versions of Native*Type are the same +* types, renamed in EGL 1.3 so all types in the API start with "EGL". +* +* Khronos STRONGLY RECOMMENDS that you use the default definitions +* provided below, since these changes affect both binary and source +* portability of applications using EGL running on different EGL +* implementations. +*/ + +#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */ +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include + +typedef HDC EGLNativeDisplayType; +typedef HBITMAP EGLNativePixmapType; +typedef HWND EGLNativeWindowType; + +#elif defined(__WINSCW__) || defined(__SYMBIAN32__) /* Symbian */ + +typedef int EGLNativeDisplayType; +typedef void *EGLNativeWindowType; +typedef void *EGLNativePixmapType; + +#elif defined(WL_EGL_PLATFORM) + +typedef struct wl_display *EGLNativeDisplayType; +typedef struct wl_egl_pixmap *EGLNativePixmapType; +typedef struct wl_egl_window *EGLNativeWindowType; + +#elif defined(__GBM__) + +typedef struct gbm_device *EGLNativeDisplayType; +typedef struct gbm_bo *EGLNativePixmapType; +typedef void *EGLNativeWindowType; + +#elif defined(ANDROID) /* Android */ + +struct ANativeWindow; +struct egl_native_pixmap_t; + +typedef struct ANativeWindow *EGLNativeWindowType; +typedef struct egl_native_pixmap_t *EGLNativePixmapType; +typedef void *EGLNativeDisplayType; + +#elif defined(MIR_EGL_PLATFORM) + +#include +typedef MirEGLNativeDisplayType EGLNativeDisplayType; +typedef void *EGLNativePixmapType; +typedef MirEGLNativeWindowType EGLNativeWindowType; + +#elif defined(__unix__) + +#ifdef MESA_EGL_NO_X11_HEADERS + +typedef void *EGLNativeDisplayType; +typedef khronos_uintptr_t EGLNativePixmapType; +typedef khronos_uintptr_t EGLNativeWindowType; + +#else + +/* X11 (tentative) */ +#include +#include + +typedef Display *EGLNativeDisplayType; +typedef Pixmap EGLNativePixmapType; +typedef Window EGLNativeWindowType; + +#endif /* MESA_EGL_NO_X11_HEADERS */ + +#else +#error "Platform not recognized" +#endif + +/* EGL 1.2 types, renamed for consistency in EGL 1.3 */ +typedef EGLNativeDisplayType NativeDisplayType; +typedef EGLNativePixmapType NativePixmapType; +typedef EGLNativeWindowType NativeWindowType; + + +/* Define EGLint. This must be a signed integral type large enough to contain +* all legal attribute names and values passed into and out of EGL, whether +* their type is boolean, bitmask, enumerant (symbolic constant), integer, +* handle, or other. While in general a 32-bit integer will suffice, if +* handles are 64 bit types, then EGLint should be defined as a signed 64-bit +* integer type. +*/ +typedef khronos_int32_t EGLint; + +#endif /* __eglplatform_h */ + +/* -*- mode: c; tab-width: 8; -*- */ +/* vi: set sw=4 ts=8: */ +/* Reference version of egl.h for EGL 1.4. +* $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $ +*/ + +/* +** Copyright (c) 2007-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +#ifndef __egl_h_ +#define __egl_h_ + +/* All platform-dependent types and macro boilerplate (such as EGLAPI +* and EGLAPIENTRY) should go in eglplatform.h. +*/ +/*#include */ + +#ifdef __cplusplus +extern "C" { +#endif + + /* EGL Types */ + /* EGLint is defined in eglplatform.h */ + typedef unsigned int EGLBoolean; + typedef unsigned int EGLenum; + typedef void *EGLConfig; + typedef void *EGLContext; + typedef void *EGLDisplay; + typedef void *EGLSurface; + typedef void *EGLClientBuffer; + + /* EGL Versioning */ +#define EGL_VERSION_1_0 1 +#define EGL_VERSION_1_1 1 +#define EGL_VERSION_1_2 1 +#define EGL_VERSION_1_3 1 +#define EGL_VERSION_1_4 1 + + /* EGL Enumerants. Bitmasks and other exceptional cases aside, most + * enums are assigned unique values starting at 0x3000. + */ + + /* EGL aliases */ +#define EGL_FALSE 0 +#define EGL_TRUE 1 + + /* Out-of-band handle values */ +#define EGL_DEFAULT_DISPLAY ((EGLNativeDisplayType)0) +#define EGL_NO_CONTEXT ((EGLContext)0) +#define EGL_NO_DISPLAY ((EGLDisplay)0) +#define EGL_NO_SURFACE ((EGLSurface)0) + + /* Out-of-band attribute value */ +#define EGL_DONT_CARE ((EGLint)-1) + + /* Errors / GetError return values */ +#define EGL_SUCCESS 0x3000 +#define EGL_NOT_INITIALIZED 0x3001 +#define EGL_BAD_ACCESS 0x3002 +#define EGL_BAD_ALLOC 0x3003 +#define EGL_BAD_ATTRIBUTE 0x3004 +#define EGL_BAD_CONFIG 0x3005 +#define EGL_BAD_CONTEXT 0x3006 +#define EGL_BAD_CURRENT_SURFACE 0x3007 +#define EGL_BAD_DISPLAY 0x3008 +#define EGL_BAD_MATCH 0x3009 +#define EGL_BAD_NATIVE_PIXMAP 0x300A +#define EGL_BAD_NATIVE_WINDOW 0x300B +#define EGL_BAD_PARAMETER 0x300C +#define EGL_BAD_SURFACE 0x300D +#define EGL_CONTEXT_LOST 0x300E /* EGL 1.1 - IMG_power_management */ + + /* Reserved 0x300F-0x301F for additional errors */ + + /* Config attributes */ +#define EGL_BUFFER_SIZE 0x3020 +#define EGL_ALPHA_SIZE 0x3021 +#define EGL_BLUE_SIZE 0x3022 +#define EGL_GREEN_SIZE 0x3023 +#define EGL_RED_SIZE 0x3024 +#define EGL_DEPTH_SIZE 0x3025 +#define EGL_STENCIL_SIZE 0x3026 +#define EGL_CONFIG_CAVEAT 0x3027 +#define EGL_CONFIG_ID 0x3028 +#define EGL_LEVEL 0x3029 +#define EGL_MAX_PBUFFER_HEIGHT 0x302A +#define EGL_MAX_PBUFFER_PIXELS 0x302B +#define EGL_MAX_PBUFFER_WIDTH 0x302C +#define EGL_NATIVE_RENDERABLE 0x302D +#define EGL_NATIVE_VISUAL_ID 0x302E +#define EGL_NATIVE_VISUAL_TYPE 0x302F +#define EGL_SAMPLES 0x3031 +#define EGL_SAMPLE_BUFFERS 0x3032 +#define EGL_SURFACE_TYPE 0x3033 +#define EGL_TRANSPARENT_TYPE 0x3034 +#define EGL_TRANSPARENT_BLUE_VALUE 0x3035 +#define EGL_TRANSPARENT_GREEN_VALUE 0x3036 +#define EGL_TRANSPARENT_RED_VALUE 0x3037 +#define EGL_NONE 0x3038 /* Attrib list terminator */ +#define EGL_BIND_TO_TEXTURE_RGB 0x3039 +#define EGL_BIND_TO_TEXTURE_RGBA 0x303A +#define EGL_MIN_SWAP_INTERVAL 0x303B +#define EGL_MAX_SWAP_INTERVAL 0x303C +#define EGL_LUMINANCE_SIZE 0x303D +#define EGL_ALPHA_MASK_SIZE 0x303E +#define EGL_COLOR_BUFFER_TYPE 0x303F +#define EGL_RENDERABLE_TYPE 0x3040 +#define EGL_MATCH_NATIVE_PIXMAP 0x3041 /* Pseudo-attribute (not queryable) */ +#define EGL_CONFORMANT 0x3042 + + /* Reserved 0x3041-0x304F for additional config attributes */ + + /* Config attribute values */ +#define EGL_SLOW_CONFIG 0x3050 /* EGL_CONFIG_CAVEAT value */ +#define EGL_NON_CONFORMANT_CONFIG 0x3051 /* EGL_CONFIG_CAVEAT value */ +#define EGL_TRANSPARENT_RGB 0x3052 /* EGL_TRANSPARENT_TYPE value */ +#define EGL_RGB_BUFFER 0x308E /* EGL_COLOR_BUFFER_TYPE value */ +#define EGL_LUMINANCE_BUFFER 0x308F /* EGL_COLOR_BUFFER_TYPE value */ + + /* More config attribute values, for EGL_TEXTURE_FORMAT */ +#define EGL_NO_TEXTURE 0x305C +#define EGL_TEXTURE_RGB 0x305D +#define EGL_TEXTURE_RGBA 0x305E +#define EGL_TEXTURE_2D 0x305F + + /* Config attribute mask bits */ +#define EGL_PBUFFER_BIT 0x0001 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_PIXMAP_BIT 0x0002 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_WINDOW_BIT 0x0004 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_COLORSPACE_LINEAR_BIT 0x0020 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT 0x0040 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */ +#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */ + +#define EGL_OPENGL_ES_BIT 0x0001 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENVG_BIT 0x0002 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_ES2_BIT 0x0004 /* EGL_RENDERABLE_TYPE mask bits */ +#define EGL_OPENGL_BIT 0x0008 /* EGL_RENDERABLE_TYPE mask bits */ + + /* QueryString targets */ +#define EGL_VENDOR 0x3053 +#define EGL_VERSION 0x3054 +#define EGL_EXTENSIONS 0x3055 +#define EGL_CLIENT_APIS 0x308D + + /* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */ +#define EGL_HEIGHT 0x3056 +#define EGL_WIDTH 0x3057 +#define EGL_LARGEST_PBUFFER 0x3058 +#define EGL_TEXTURE_FORMAT 0x3080 +#define EGL_TEXTURE_TARGET 0x3081 +#define EGL_MIPMAP_TEXTURE 0x3082 +#define EGL_MIPMAP_LEVEL 0x3083 +#define EGL_RENDER_BUFFER 0x3086 +#define EGL_VG_COLORSPACE 0x3087 +#define EGL_VG_ALPHA_FORMAT 0x3088 +#define EGL_HORIZONTAL_RESOLUTION 0x3090 +#define EGL_VERTICAL_RESOLUTION 0x3091 +#define EGL_PIXEL_ASPECT_RATIO 0x3092 +#define EGL_SWAP_BEHAVIOR 0x3093 +#define EGL_MULTISAMPLE_RESOLVE 0x3099 + + /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */ +#define EGL_BACK_BUFFER 0x3084 +#define EGL_SINGLE_BUFFER 0x3085 + + /* OpenVG color spaces */ +#define EGL_VG_COLORSPACE_sRGB 0x3089 /* EGL_VG_COLORSPACE value */ +#define EGL_VG_COLORSPACE_LINEAR 0x308A /* EGL_VG_COLORSPACE value */ + + /* OpenVG alpha formats */ +#define EGL_VG_ALPHA_FORMAT_NONPRE 0x308B /* EGL_ALPHA_FORMAT value */ +#define EGL_VG_ALPHA_FORMAT_PRE 0x308C /* EGL_ALPHA_FORMAT value */ + + /* Constant scale factor by which fractional display resolutions & + * aspect ratio are scaled when queried as integer values. + */ +#define EGL_DISPLAY_SCALING 10000 + + /* Unknown display resolution/aspect ratio */ +#define EGL_UNKNOWN ((EGLint)-1) + + /* Back buffer swap behaviors */ +#define EGL_BUFFER_PRESERVED 0x3094 /* EGL_SWAP_BEHAVIOR value */ +#define EGL_BUFFER_DESTROYED 0x3095 /* EGL_SWAP_BEHAVIOR value */ + + /* CreatePbufferFromClientBuffer buffer types */ +#define EGL_OPENVG_IMAGE 0x3096 + + /* QueryContext targets */ +#define EGL_CONTEXT_CLIENT_TYPE 0x3097 + + /* CreateContext attributes */ +#define EGL_CONTEXT_CLIENT_VERSION 0x3098 + + /* Multisample resolution behaviors */ +#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */ +#define EGL_MULTISAMPLE_RESOLVE_BOX 0x309B /* EGL_MULTISAMPLE_RESOLVE value */ + + /* BindAPI/QueryAPI targets */ +#define EGL_OPENGL_ES_API 0x30A0 +#define EGL_OPENVG_API 0x30A1 +#define EGL_OPENGL_API 0x30A2 + + /* GetCurrentSurface targets */ +#define EGL_DRAW 0x3059 +#define EGL_READ 0x305A + + /* WaitNative engines */ +#define EGL_CORE_NATIVE_ENGINE 0x305B + + /* EGL 1.2 tokens renamed for consistency in EGL 1.3 */ +#define EGL_COLORSPACE EGL_VG_COLORSPACE +#define EGL_ALPHA_FORMAT EGL_VG_ALPHA_FORMAT +#define EGL_COLORSPACE_sRGB EGL_VG_COLORSPACE_sRGB +#define EGL_COLORSPACE_LINEAR EGL_VG_COLORSPACE_LINEAR +#define EGL_ALPHA_FORMAT_NONPRE EGL_VG_ALPHA_FORMAT_NONPRE +#define EGL_ALPHA_FORMAT_PRE EGL_VG_ALPHA_FORMAT_PRE + + /* EGL extensions must request enum blocks from the Khronos + * API Registrar, who maintains the enumerant registry. Submit + * a bug in Khronos Bugzilla against task "Registry". + */ + + + + /* EGL Functions */ + + EGLAPI EGLint EGLAPIENTRY eglGetError(void); + + EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id); + EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor); + EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy); + + EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name); + + EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs, + EGLint config_size, EGLint *num_config); + EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list, + EGLConfig *configs, EGLint config_size, + EGLint *num_config); + EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config, + EGLint attribute, EGLint *value); + + EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config, + EGLNativeWindowType win, + const EGLint *attrib_list); + EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config, + const EGLint *attrib_list); + EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config, + EGLNativePixmapType pixmap, + const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface); + EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, EGLint *value); + + EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api); + EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void); + + EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void); + + EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void); + + EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer( + EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer, + EGLConfig config, const EGLint *attrib_list); + + EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface, + EGLint attribute, EGLint value); + EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer); + + + EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval); + + + EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config, + EGLContext share_context, + const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx); + EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw, + EGLSurface read, EGLContext ctx); + + EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void); + EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw); + EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void); + EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx, + EGLint attribute, EGLint *value); + + EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void); + EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine); + EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface); + EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface, + EGLNativePixmapType target); + + /* This is a generic function pointer type, whose name indicates it must + * be cast to the proper type *and calling convention* before use. + */ + typedef void(*__eglMustCastToProperFunctionPointerType)(void); + + /* Now, define eglGetProcAddress using the generic function ptr. type */ + EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY + eglGetProcAddress(const char *procname); + +#ifdef __cplusplus +} +#endif + +#endif /* __egl_h_ */ + + + + +#ifndef __eglext_h_ +#define __eglext_h_ + +#ifdef __cplusplus +extern "C" { +#endif + + /* + ** Copyright (c) 2007-2013 The Khronos Group Inc. + ** + ** Permission is hereby granted, free of charge, to any person obtaining a + ** copy of this software and/or associated documentation files (the + ** "Materials"), to deal in the Materials without restriction, including + ** without limitation the rights to use, copy, modify, merge, publish, + ** distribute, sublicense, and/or sell copies of the Materials, and to + ** permit persons to whom the Materials are furnished to do so, subject to + ** the following conditions: + ** + ** The above copyright notice and this permission notice shall be included + ** in all copies or substantial portions of the Materials. + ** + ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. + */ + +/* #include */ + + /*************************************************************/ + + /* Header file version number */ + /* Current version at http://www.khronos.org/registry/egl/ */ + /* $Revision: 21254 $ on $Date: 2013-04-25 03:11:55 -0700 (Thu, 25 Apr 2013) $ */ +#define EGL_EGLEXT_VERSION 16 + +#ifndef EGL_KHR_config_attribs +#define EGL_KHR_config_attribs 1 +#define EGL_CONFORMANT_KHR 0x3042 /* EGLConfig attribute */ +#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR 0x0020 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR 0x0040 /* EGL_SURFACE_TYPE bitfield */ +#endif + +#ifndef EGL_KHR_lock_surface +#define EGL_KHR_lock_surface 1 +#define EGL_READ_SURFACE_BIT_KHR 0x0001 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ +#define EGL_WRITE_SURFACE_BIT_KHR 0x0002 /* EGL_LOCK_USAGE_HINT_KHR bitfield */ +#define EGL_LOCK_SURFACE_BIT_KHR 0x0080 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_OPTIMAL_FORMAT_BIT_KHR 0x0100 /* EGL_SURFACE_TYPE bitfield */ +#define EGL_MATCH_FORMAT_KHR 0x3043 /* EGLConfig attribute */ +#define EGL_FORMAT_RGB_565_EXACT_KHR 0x30C0 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGB_565_KHR 0x30C1 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGBA_8888_EXACT_KHR 0x30C2 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_FORMAT_RGBA_8888_KHR 0x30C3 /* EGL_MATCH_FORMAT_KHR value */ +#define EGL_MAP_PRESERVE_PIXELS_KHR 0x30C4 /* eglLockSurfaceKHR attribute */ +#define EGL_LOCK_USAGE_HINT_KHR 0x30C5 /* eglLockSurfaceKHR attribute */ +#define EGL_BITMAP_POINTER_KHR 0x30C6 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PITCH_KHR 0x30C7 /* eglQuerySurface attribute */ +#define EGL_BITMAP_ORIGIN_KHR 0x30C8 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR 0x30C9 /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR 0x30CA /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR 0x30CB /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR 0x30CC /* eglQuerySurface attribute */ +#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR 0x30CD /* eglQuerySurface attribute */ +#define EGL_LOWER_LEFT_KHR 0x30CE /* EGL_BITMAP_ORIGIN_KHR value */ +#define EGL_UPPER_LEFT_KHR 0x30CF /* EGL_BITMAP_ORIGIN_KHR value */ +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLBoolean(EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface); +#endif + +#ifndef EGL_KHR_image +#define EGL_KHR_image 1 +#define EGL_NATIVE_PIXMAP_KHR 0x30B0 /* eglCreateImageKHR target */ + typedef void *EGLImageKHR; +#define EGL_NO_IMAGE_KHR ((EGLImageKHR)0) +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image); +#endif + +#ifndef EGL_KHR_vg_parent_image +#define EGL_KHR_vg_parent_image 1 +#define EGL_VG_PARENT_IMAGE_KHR 0x30BA /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_KHR_gl_texture_2D_image +#define EGL_KHR_gl_texture_2D_image 1 +#define EGL_GL_TEXTURE_2D_KHR 0x30B1 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_LEVEL_KHR 0x30BC /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_gl_texture_cubemap_image +#define EGL_KHR_gl_texture_cubemap_image 1 +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR 0x30B3 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR 0x30B4 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR 0x30B5 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR 0x30B6 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR 0x30B7 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR 0x30B8 /* eglCreateImageKHR target */ +#endif + +#ifndef EGL_KHR_gl_texture_3D_image +#define EGL_KHR_gl_texture_3D_image 1 +#define EGL_GL_TEXTURE_3D_KHR 0x30B2 /* eglCreateImageKHR target */ +#define EGL_GL_TEXTURE_ZOFFSET_KHR 0x30BD /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_gl_renderbuffer_image +#define EGL_KHR_gl_renderbuffer_image 1 +#define EGL_GL_RENDERBUFFER_KHR 0x30B9 /* eglCreateImageKHR target */ +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeKHR requires 64-bit uint support */ +#ifndef EGL_KHR_reusable_sync +#define EGL_KHR_reusable_sync 1 + + typedef void* EGLSyncKHR; + typedef khronos_utime_nanoseconds_t EGLTimeKHR; + +#define EGL_SYNC_STATUS_KHR 0x30F1 +#define EGL_SIGNALED_KHR 0x30F2 +#define EGL_UNSIGNALED_KHR 0x30F3 +#define EGL_TIMEOUT_EXPIRED_KHR 0x30F5 +#define EGL_CONDITION_SATISFIED_KHR 0x30F6 +#define EGL_SYNC_TYPE_KHR 0x30F7 +#define EGL_SYNC_REUSABLE_KHR 0x30FA +#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR 0x0001 /* eglClientWaitSyncKHR bitfield */ +#define EGL_FOREVER_KHR 0xFFFFFFFFFFFFFFFFull +#define EGL_NO_SYNC_KHR ((EGLSyncKHR)0) +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync); + EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); + EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); + EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync); + typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value); +#endif +#endif + +#ifndef EGL_KHR_image_base +#define EGL_KHR_image_base 1 + /* Most interfaces defined by EGL_KHR_image_pixmap above */ +#define EGL_IMAGE_PRESERVED_KHR 0x30D2 /* eglCreateImageKHR attribute */ +#endif + +#ifndef EGL_KHR_image_pixmap +#define EGL_KHR_image_pixmap 1 + /* Interfaces defined by EGL_KHR_image above */ +#endif + +#ifndef EGL_IMG_context_priority +#define EGL_IMG_context_priority 1 +#define EGL_CONTEXT_PRIORITY_LEVEL_IMG 0x3100 +#define EGL_CONTEXT_PRIORITY_HIGH_IMG 0x3101 +#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG 0x3102 +#define EGL_CONTEXT_PRIORITY_LOW_IMG 0x3103 +#endif + +#ifndef EGL_KHR_lock_surface2 +#define EGL_KHR_lock_surface2 1 +#define EGL_BITMAP_PIXEL_SIZE_KHR 0x3110 +#endif + +#ifndef EGL_NV_coverage_sample +#define EGL_NV_coverage_sample 1 +#define EGL_COVERAGE_BUFFERS_NV 0x30E0 +#define EGL_COVERAGE_SAMPLES_NV 0x30E1 +#endif + +#ifndef EGL_NV_depth_nonlinear +#define EGL_NV_depth_nonlinear 1 +#define EGL_DEPTH_ENCODING_NV 0x30E2 +#define EGL_DEPTH_ENCODING_NONE_NV 0 +#define EGL_DEPTH_ENCODING_NONLINEAR_NV 0x30E3 +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLTimeNV requires 64-bit uint support */ +#ifndef EGL_NV_sync +#define EGL_NV_sync 1 +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV 0x30E6 +#define EGL_SYNC_STATUS_NV 0x30E7 +#define EGL_SIGNALED_NV 0x30E8 +#define EGL_UNSIGNALED_NV 0x30E9 +#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV 0x0001 +#define EGL_FOREVER_NV 0xFFFFFFFFFFFFFFFFull +#define EGL_ALREADY_SIGNALED_NV 0x30EA +#define EGL_TIMEOUT_EXPIRED_NV 0x30EB +#define EGL_CONDITION_SATISFIED_NV 0x30EC +#define EGL_SYNC_TYPE_NV 0x30ED +#define EGL_SYNC_CONDITION_NV 0x30EE +#define EGL_SYNC_FENCE_NV 0x30EF +#define EGL_NO_SYNC_NV ((EGLSyncNV)0) + typedef void* EGLSyncNV; + typedef khronos_utime_nanoseconds_t EGLTimeNV; +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV(EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV(EGLSyncNV sync); + EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV(EGLSyncNV sync); + EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV(EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); + EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV(EGLSyncNV sync, EGLenum mode); + EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV(EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLSyncNV(EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync); + typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value); +#endif +#endif + +#if KHRONOS_SUPPORT_INT64 /* Dependent on EGL_KHR_reusable_sync which requires 64-bit uint support */ +#ifndef EGL_KHR_fence_sync +#define EGL_KHR_fence_sync 1 + /* Reuses most tokens and entry points from EGL_KHR_reusable_sync */ +#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR 0x30F0 +#define EGL_SYNC_CONDITION_KHR 0x30F8 +#define EGL_SYNC_FENCE_KHR 0x30F9 +#endif +#endif + +#ifndef EGL_HI_clientpixmap +#define EGL_HI_clientpixmap 1 + + /* Surface Attribute */ +#define EGL_CLIENT_PIXMAP_POINTER_HI 0x8F74 + /* + * Structure representing a client pixmap + * (pixmap's data is in client-space memory). + */ + struct EGLClientPixmapHI + { + void* pData; + EGLint iWidth; + EGLint iHeight; + EGLint iStride; + }; +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap); +#endif /* EGL_HI_clientpixmap */ + +#ifndef EGL_HI_colorformats +#define EGL_HI_colorformats 1 + /* Config Attribute */ +#define EGL_COLOR_FORMAT_HI 0x8F70 + /* Color Formats */ +#define EGL_COLOR_RGB_HI 0x8F71 +#define EGL_COLOR_RGBA_HI 0x8F72 +#define EGL_COLOR_ARGB_HI 0x8F73 +#endif /* EGL_HI_colorformats */ + +#ifndef EGL_MESA_drm_image +#define EGL_MESA_drm_image 1 +#define EGL_DRM_BUFFER_FORMAT_MESA 0x31D0 /* CreateDRMImageMESA attribute */ +#define EGL_DRM_BUFFER_USE_MESA 0x31D1 /* CreateDRMImageMESA attribute */ +#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA 0x31D2 /* EGL_IMAGE_FORMAT_MESA attribute value */ +#define EGL_DRM_BUFFER_MESA 0x31D3 /* eglCreateImageKHR target */ +#define EGL_DRM_BUFFER_STRIDE_MESA 0x31D4 +#define EGL_DRM_BUFFER_USE_SCANOUT_MESA 0x00000001 /* EGL_DRM_BUFFER_USE_MESA bits */ +#define EGL_DRM_BUFFER_USE_SHARE_MESA 0x00000002 /* EGL_DRM_BUFFER_USE_MESA bits */ +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA(EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride); +#endif + +#ifndef EGL_NV_post_sub_buffer +#define EGL_NV_post_sub_buffer 1 +#define EGL_POST_SUB_BUFFER_SUPPORTED_NV 0x30BE +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLBoolean(EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height); +#endif + +#ifndef EGL_ANGLE_query_surface_pointer +#define EGL_ANGLE_query_surface_pointer 1 +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +#endif + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value); +#endif + +#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle +#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1 +#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE 0x3200 +#endif + +#ifndef EGL_NV_coverage_sample_resolve +#define EGL_NV_coverage_sample_resolve 1 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NV 0x3131 +#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV 0x3132 +#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV 0x3133 +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLuint64NV requires 64-bit uint support */ +#ifndef EGL_NV_system_time +#define EGL_NV_system_time 1 + typedef khronos_utime_nanoseconds_t EGLuint64NV; +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void); + EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); + typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); +#endif +#endif + +#if KHRONOS_SUPPORT_INT64 /* EGLuint64KHR requires 64-bit uint support */ +#ifndef EGL_KHR_stream +#define EGL_KHR_stream 1 + typedef void* EGLStreamKHR; + typedef khronos_uint64_t EGLuint64KHR; +#define EGL_NO_STREAM_KHR ((EGLStreamKHR)0) +#define EGL_CONSUMER_LATENCY_USEC_KHR 0x3210 +#define EGL_PRODUCER_FRAME_KHR 0x3212 +#define EGL_CONSUMER_FRAME_KHR 0x3213 +#define EGL_STREAM_STATE_KHR 0x3214 +#define EGL_STREAM_STATE_CREATED_KHR 0x3215 +#define EGL_STREAM_STATE_CONNECTING_KHR 0x3216 +#define EGL_STREAM_STATE_EMPTY_KHR 0x3217 +#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR 0x3218 +#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR 0x3219 +#define EGL_STREAM_STATE_DISCONNECTED_KHR 0x321A +#define EGL_BAD_STREAM_KHR 0x321B +#define EGL_BAD_STATE_KHR 0x321C +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list); + EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream); + EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); + EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); + EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC)(EGLDisplay dpy, const EGLint *attrib_list); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value); +#endif +#endif + +#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ +#ifndef EGL_KHR_stream_consumer_gltexture +#define EGL_KHR_stream_consumer_gltexture 1 +#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR 0x321E +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream); + EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream); + EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); +#endif +#endif + +#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ +#ifndef EGL_KHR_stream_producer_eglsurface +#define EGL_KHR_stream_producer_eglsurface 1 +#define EGL_STREAM_BIT_KHR 0x0800 +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list); +#endif +#endif + +#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ +#ifndef EGL_KHR_stream_producer_aldatalocator +#define EGL_KHR_stream_producer_aldatalocator 1 +#endif +#endif + +#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ +#ifndef EGL_KHR_stream_fifo +#define EGL_KHR_stream_fifo 1 + /* reuse EGLTimeKHR */ +#define EGL_STREAM_FIFO_LENGTH_KHR 0x31FC +#define EGL_STREAM_TIME_NOW_KHR 0x31FD +#define EGL_STREAM_TIME_CONSUMER_KHR 0x31FE +#define EGL_STREAM_TIME_PRODUCER_KHR 0x31FF +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value); +#endif +#endif + +#ifndef EGL_EXT_create_context_robustness +#define EGL_EXT_create_context_robustness 1 +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT 0x30BF +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138 +#define EGL_NO_RESET_NOTIFICATION_EXT 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_EXT 0x31BF +#endif + +#ifndef EGL_ANGLE_d3d_share_handle_client_buffer +#define EGL_ANGLE_d3d_share_handle_client_buffer 1 + /* reuse EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE */ +#endif + +#ifndef EGL_KHR_create_context +#define EGL_KHR_create_context 1 +#define EGL_CONTEXT_MAJOR_VERSION_KHR EGL_CONTEXT_CLIENT_VERSION +#define EGL_CONTEXT_MINOR_VERSION_KHR 0x30FB +#define EGL_CONTEXT_FLAGS_KHR 0x30FC +#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD +#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD +#define EGL_NO_RESET_NOTIFICATION_KHR 0x31BE +#define EGL_LOSE_CONTEXT_ON_RESET_KHR 0x31BF +#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR 0x00000001 +#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002 +#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004 +#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001 +#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002 +#define EGL_OPENGL_ES3_BIT_KHR 0x00000040 +#endif + +#ifndef EGL_KHR_surfaceless_context +#define EGL_KHR_surfaceless_context 1 + /* No tokens/entry points, just relaxes an error condition */ +#endif + +#ifdef EGL_KHR_stream /* Requires KHR_stream extension */ +#ifndef EGL_KHR_stream_cross_process_fd +#define EGL_KHR_stream_cross_process_fd 1 + typedef int EGLNativeFileDescriptorKHR; +#define EGL_NO_FILE_DESCRIPTOR_KHR ((EGLNativeFileDescriptorKHR)(-1)) +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR(EGLDisplay dpy, EGLStreamKHR stream); + EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLNativeFileDescriptorKHR(EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream); + typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor); +#endif +#endif + +#ifndef EGL_EXT_multiview_window +#define EGL_EXT_multiview_window 1 +#define EGL_MULTIVIEW_VIEW_COUNT_EXT 0x3134 +#endif + +#ifndef EGL_KHR_wait_sync +#define EGL_KHR_wait_sync 1 +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLint(EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags); +#endif + +#ifndef EGL_NV_post_convert_rounding +#define EGL_NV_post_convert_rounding 1 + /* No tokens or entry points, just relaxes behavior of SwapBuffers */ +#endif + +#ifndef EGL_NV_native_query +#define EGL_NV_native_query 1 +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV(EGLDisplay dpy, EGLNativeDisplayType* display_id); + EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV(EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window); + EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV(EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC)(EGLDisplay dpy, EGLNativeDisplayType *display_id); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC)(EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window); + typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC)(EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap); +#endif + +#ifndef EGL_NV_3dvision_surface +#define EGL_NV_3dvision_surface 1 +#define EGL_AUTO_STEREO_NV 0x3136 +#endif + +#ifndef EGL_ANDROID_framebuffer_target +#define EGL_ANDROID_framebuffer_target 1 +#define EGL_FRAMEBUFFER_TARGET_ANDROID 0x3147 +#endif + +#ifndef EGL_ANDROID_blob_cache +#define EGL_ANDROID_blob_cache 1 + typedef khronos_ssize_t EGLsizeiANDROID; + typedef void(*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize); + typedef EGLsizeiANDROID(*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize); +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get); +#endif + +#ifndef EGL_ANDROID_image_native_buffer +#define EGL_ANDROID_image_native_buffer 1 +#define EGL_NATIVE_BUFFER_ANDROID 0x3140 +#endif + +#ifndef EGL_ANDROID_native_fence_sync +#define EGL_ANDROID_native_fence_sync 1 +#define EGL_SYNC_NATIVE_FENCE_ANDROID 0x3144 +#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID 0x3145 +#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID 0x3146 +#define EGL_NO_NATIVE_FENCE_FD_ANDROID -1 +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLint(EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC)(EGLDisplay dpy, EGLSyncKHR); +#endif + +#ifndef EGL_ANDROID_recordable +#define EGL_ANDROID_recordable 1 +#define EGL_RECORDABLE_ANDROID 0x3142 +#endif + +#ifndef EGL_EXT_buffer_age +#define EGL_EXT_buffer_age 1 +#define EGL_BUFFER_AGE_EXT 0x313D +#endif + +#ifndef EGL_EXT_image_dma_buf_import +#define EGL_EXT_image_dma_buf_import 1 +#define EGL_LINUX_DMA_BUF_EXT 0x3270 +#define EGL_LINUX_DRM_FOURCC_EXT 0x3271 +#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272 +#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273 +#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274 +#define EGL_DMA_BUF_PLANE1_FD_EXT 0x3275 +#define EGL_DMA_BUF_PLANE1_OFFSET_EXT 0x3276 +#define EGL_DMA_BUF_PLANE1_PITCH_EXT 0x3277 +#define EGL_DMA_BUF_PLANE2_FD_EXT 0x3278 +#define EGL_DMA_BUF_PLANE2_OFFSET_EXT 0x3279 +#define EGL_DMA_BUF_PLANE2_PITCH_EXT 0x327A +#define EGL_YUV_COLOR_SPACE_HINT_EXT 0x327B +#define EGL_SAMPLE_RANGE_HINT_EXT 0x327C +#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D +#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E +#define EGL_ITU_REC601_EXT 0x327F +#define EGL_ITU_REC709_EXT 0x3280 +#define EGL_ITU_REC2020_EXT 0x3281 +#define EGL_YUV_FULL_RANGE_EXT 0x3282 +#define EGL_YUV_NARROW_RANGE_EXT 0x3283 +#define EGL_YUV_CHROMA_SITING_0_EXT 0x3284 +#define EGL_YUV_CHROMA_SITING_0_5_EXT 0x3285 +#endif + +#ifndef EGL_ARM_pixmap_multisample_discard +#define EGL_ARM_pixmap_multisample_discard 1 +#define EGL_DISCARD_SAMPLES_ARM 0x3286 +#endif + +#ifndef EGL_EXT_swap_buffers_with_damage +#define EGL_EXT_swap_buffers_with_damage 1 +#ifdef EGL_EGLEXT_PROTOTYPES + EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#endif /* EGL_EGLEXT_PROTOTYPES */ + typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects); +#endif + +/* #include */ + +#ifdef __cplusplus +} +#endif + +#endif /* __eglext_h_ */ + + + +#endif /* _MSC_VER */ \ No newline at end of file diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 763154f3ae..1462f4e399 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -301,6 +301,21 @@ extern "C" { */ #define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" /** * \brief An enumeration of hint priorities diff --git a/include/SDL_opengles2.h b/include/SDL_opengles2.h index 7697626f4a..f51cfc23f0 100644 --- a/include/SDL_opengles2.h +++ b/include/SDL_opengles2.h @@ -24,7 +24,7 @@ * * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. */ - +#ifndef _MSC_VER #ifdef __IPHONEOS__ #include #include @@ -33,6 +33,2758 @@ #include #endif -#ifndef APIENTRY -#define APIENTRY +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ + +#ifndef __khrplatform_h_ +#define __khrplatform_h_ + +/* +** Copyright (c) 2008-2009 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a +** copy of this software and/or associated documentation files (the +** "Materials"), to deal in the Materials without restriction, including +** without limitation the rights to use, copy, modify, merge, publish, +** distribute, sublicense, and/or sell copies of the Materials, and to +** permit persons to whom the Materials are furnished to do so, subject to +** the following conditions: +** +** The above copyright notice and this permission notice shall be included +** in all copies or substantial portions of the Materials. +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. +*/ + +/* Khronos platform-specific types and definitions. +* +* $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $ +* +* Adopters may modify this file to suit their platform. Adopters are +* encouraged to submit platform specific modifications to the Khronos +* group so that they can be included in future versions of this file. +* Please submit changes by sending them to the public Khronos Bugzilla +* (http://khronos.org/bugzilla) by filing a bug against product +* "Khronos (general)" component "Registry". +* +* A predefined template which fills in some of the bug fields can be +* reached using http://tinyurl.com/khrplatform-h-bugreport, but you +* must create a Bugzilla login first. +* +* +* See the Implementer's Guidelines for information about where this file +* should be located on your system and for more details of its use: +* http://www.khronos.org/registry/implementers_guide.pdf +* +* This file should be included as +* #include +* by Khronos client API header files that use its types and defines. +* +* The types in khrplatform.h should only be used to define API-specific types. +* +* Types defined in khrplatform.h: +* khronos_int8_t signed 8 bit +* khronos_uint8_t unsigned 8 bit +* khronos_int16_t signed 16 bit +* khronos_uint16_t unsigned 16 bit +* khronos_int32_t signed 32 bit +* khronos_uint32_t unsigned 32 bit +* khronos_int64_t signed 64 bit +* khronos_uint64_t unsigned 64 bit +* khronos_intptr_t signed same number of bits as a pointer +* khronos_uintptr_t unsigned same number of bits as a pointer +* khronos_ssize_t signed size +* khronos_usize_t unsigned size +* khronos_float_t signed 32 bit floating point +* khronos_time_ns_t unsigned 64 bit time in nanoseconds +* khronos_utime_nanoseconds_t unsigned time interval or absolute time in +* nanoseconds +* khronos_stime_nanoseconds_t signed time interval in nanoseconds +* khronos_boolean_enum_t enumerated boolean type. This should +* only be used as a base type when a client API's boolean type is +* an enum. Client APIs which use an integer or other type for +* booleans cannot use this as the base type for their boolean. +* +* Tokens defined in khrplatform.h: +* +* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. +* +* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. +* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. +* +* Calling convention macros defined in this file: +* KHRONOS_APICALL +* KHRONOS_APIENTRY +* KHRONOS_APIATTRIBUTES +* +* These may be used in function prototypes as: +* +* KHRONOS_APICALL void KHRONOS_APIENTRY funcname( +* int arg1, +* int arg2) KHRONOS_APIATTRIBUTES; +*/ + +/*------------------------------------------------------------------------- +* Definition of KHRONOS_APICALL +*------------------------------------------------------------------------- +* This precedes the return type of the function in the function prototype. +*/ +#if defined(_WIN32) && !defined(__SCITECH_SNAP__) +# define KHRONOS_APICALL __declspec(dllimport) +#elif defined (__SYMBIAN32__) +# define KHRONOS_APICALL IMPORT_C +#else +# define KHRONOS_APICALL +#endif + +/*------------------------------------------------------------------------- +* Definition of KHRONOS_APIENTRY +*------------------------------------------------------------------------- +* This follows the return type of the function and precedes the function +* name in the function prototype. +*/ +#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) +/* Win32 but not WinCE */ +# define KHRONOS_APIENTRY __stdcall +#else +# define KHRONOS_APIENTRY +#endif + +/*------------------------------------------------------------------------- +* Definition of KHRONOS_APIATTRIBUTES +*------------------------------------------------------------------------- +* This follows the closing parenthesis of the function prototype arguments. +*/ +#if defined (__ARMCC_2__) +#define KHRONOS_APIATTRIBUTES __softfp +#else +#define KHRONOS_APIATTRIBUTES +#endif + +/*------------------------------------------------------------------------- +* basic type definitions +*-----------------------------------------------------------------------*/ +#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) + + +/* +* Using +*/ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__VMS ) || defined(__sgi) + +/* +* Using +*/ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) + +/* +* Win32 +*/ +typedef __int32 khronos_int32_t; +typedef unsigned __int32 khronos_uint32_t; +typedef __int64 khronos_int64_t; +typedef unsigned __int64 khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif defined(__sun__) || defined(__digital__) + +/* +* Sun or Digital +*/ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#if defined(__arch64__) || defined(_LP64) +typedef long int khronos_int64_t; +typedef unsigned long int khronos_uint64_t; +#else +typedef long long int khronos_int64_t; +typedef unsigned long long int khronos_uint64_t; +#endif /* __arch64__ */ +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#elif 0 + +/* +* Hypothetical platform with no float or int64 support +*/ +typedef int khronos_int32_t; +typedef unsigned int khronos_uint32_t; +#define KHRONOS_SUPPORT_INT64 0 +#define KHRONOS_SUPPORT_FLOAT 0 + +#else + +/* +* Generic fallback +*/ +#include +typedef int32_t khronos_int32_t; +typedef uint32_t khronos_uint32_t; +typedef int64_t khronos_int64_t; +typedef uint64_t khronos_uint64_t; +#define KHRONOS_SUPPORT_INT64 1 +#define KHRONOS_SUPPORT_FLOAT 1 + +#endif + + +/* +* Types that are (so far) the same on all platforms +*/ +typedef signed char khronos_int8_t; +typedef unsigned char khronos_uint8_t; +typedef signed short int khronos_int16_t; +typedef unsigned short int khronos_uint16_t; + +/* +* Types that differ between LLP64 and LP64 architectures - in LLP64, +* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears +* to be the only LLP64 architecture in current use. +*/ +#ifdef _WIN64 +typedef signed long long int khronos_intptr_t; +typedef unsigned long long int khronos_uintptr_t; +typedef signed long long int khronos_ssize_t; +typedef unsigned long long int khronos_usize_t; +#else +typedef signed long int khronos_intptr_t; +typedef unsigned long int khronos_uintptr_t; +typedef signed long int khronos_ssize_t; +typedef unsigned long int khronos_usize_t; +#endif + +#if KHRONOS_SUPPORT_FLOAT +/* +* Float type +*/ +typedef float khronos_float_t; +#endif + +#if KHRONOS_SUPPORT_INT64 +/* Time types +* +* These types can be used to represent a time interval in nanoseconds or +* an absolute Unadjusted System Time. Unadjusted System Time is the number +* of nanoseconds since some arbitrary system event (e.g. since the last +* time the system booted). The Unadjusted System Time is an unsigned +* 64 bit value that wraps back to 0 every 584 years. Time intervals +* may be either signed or unsigned. +*/ +typedef khronos_uint64_t khronos_utime_nanoseconds_t; +typedef khronos_int64_t khronos_stime_nanoseconds_t; +#endif + +/* +* Dummy value used to pad enum types to 32 bits. +*/ +#ifndef KHRONOS_MAX_ENUM +#define KHRONOS_MAX_ENUM 0x7FFFFFFF +#endif + +/* +* Enumerated boolean type +* +* Values other than zero should be considered to be true. Therefore +* comparisons should not be made against KHRONOS_TRUE. +*/ +typedef enum { + KHRONOS_FALSE = 0, + KHRONOS_TRUE = 1, + KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM +} khronos_boolean_enum_t; + +#endif /* __khrplatform_h_ */ + + +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* $Revision: 10602 $ on $Date:: 2010-03-04 22:35:34 -0800 #$ */ + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * You are encouraged to submit all modifications to the Khronos group so that + * they can be included in future versions of this file. Please submit changes + * by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla) + * by filing a bug against product "OpenGL-ES" component "Registry". + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ + +#ifndef __gl2_h_ +#define __gl2_h_ + +/* $Revision: 16803 $ on $Date:: 2012-02-02 09:49:18 -0800 #$ */ + +/*#include */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +/*------------------------------------------------------------------------- + * Data type definitions + *-----------------------------------------------------------------------*/ + +typedef void GLvoid; +typedef char GLchar; +typedef unsigned int GLenum; +typedef unsigned char GLboolean; +typedef unsigned int GLbitfield; +typedef khronos_int8_t GLbyte; +typedef short GLshort; +typedef int GLint; +typedef int GLsizei; +typedef khronos_uint8_t GLubyte; +typedef unsigned short GLushort; +typedef unsigned int GLuint; +typedef khronos_float_t GLfloat; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; + +/* GL types for handling large vertex buffer objects */ +typedef khronos_intptr_t GLintptr; +typedef khronos_ssize_t GLsizeiptr; + +/* OpenGL ES core versions */ +#define GL_ES_VERSION_2_0 1 + +/* ClearBufferMask */ +#define GL_DEPTH_BUFFER_BIT 0x00000100 +#define GL_STENCIL_BUFFER_BIT 0x00000400 +#define GL_COLOR_BUFFER_BIT 0x00004000 + +/* Boolean */ +#define GL_FALSE 0 +#define GL_TRUE 1 + +/* BeginMode */ +#define GL_POINTS 0x0000 +#define GL_LINES 0x0001 +#define GL_LINE_LOOP 0x0002 +#define GL_LINE_STRIP 0x0003 +#define GL_TRIANGLES 0x0004 +#define GL_TRIANGLE_STRIP 0x0005 +#define GL_TRIANGLE_FAN 0x0006 + +/* AlphaFunction (not supported in ES20) */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* BlendingFactorDest */ +#define GL_ZERO 0 +#define GL_ONE 1 +#define GL_SRC_COLOR 0x0300 +#define GL_ONE_MINUS_SRC_COLOR 0x0301 +#define GL_SRC_ALPHA 0x0302 +#define GL_ONE_MINUS_SRC_ALPHA 0x0303 +#define GL_DST_ALPHA 0x0304 +#define GL_ONE_MINUS_DST_ALPHA 0x0305 + +/* BlendingFactorSrc */ +/* GL_ZERO */ +/* GL_ONE */ +#define GL_DST_COLOR 0x0306 +#define GL_ONE_MINUS_DST_COLOR 0x0307 +#define GL_SRC_ALPHA_SATURATE 0x0308 +/* GL_SRC_ALPHA */ +/* GL_ONE_MINUS_SRC_ALPHA */ +/* GL_DST_ALPHA */ +/* GL_ONE_MINUS_DST_ALPHA */ + +/* BlendEquationSeparate */ +#define GL_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 /* same as BLEND_EQUATION */ +#define GL_BLEND_EQUATION_ALPHA 0x883D + +/* BlendSubtract */ +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B + +/* Separate Blend Functions */ +#define GL_BLEND_DST_RGB 0x80C8 +#define GL_BLEND_SRC_RGB 0x80C9 +#define GL_BLEND_DST_ALPHA 0x80CA +#define GL_BLEND_SRC_ALPHA 0x80CB +#define GL_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 + +/* Buffer Objects */ +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 + +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 + +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 + +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 + +/* CullFaceMode */ +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 + +/* DepthFunction */ +/* GL_NEVER */ +/* GL_LESS */ +/* GL_EQUAL */ +/* GL_LEQUAL */ +/* GL_GREATER */ +/* GL_NOTEQUAL */ +/* GL_GEQUAL */ +/* GL_ALWAYS */ + +/* EnableCap */ +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 + +/* ErrorCode */ +#define GL_NO_ERROR 0 +#define GL_INVALID_ENUM 0x0500 +#define GL_INVALID_VALUE 0x0501 +#define GL_INVALID_OPERATION 0x0502 +#define GL_OUT_OF_MEMORY 0x0505 + +/* FrontFaceDirection */ +#define GL_CW 0x0900 +#define GL_CCW 0x0901 + +/* GetPName */ +#define GL_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#define GL_STENCIL_FAIL 0x0B94 +#define GL_STENCIL_PASS_DEPTH_FAIL 0x0B95 +#define GL_STENCIL_PASS_DEPTH_PASS 0x0B96 +#define GL_STENCIL_REF 0x0B97 +#define GL_STENCIL_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#define GL_STENCIL_BACK_FUNC 0x8800 +#define GL_STENCIL_BACK_FAIL 0x8801 +#define GL_STENCIL_BACK_PASS_DEPTH_FAIL 0x8802 +#define GL_STENCIL_BACK_PASS_DEPTH_PASS 0x8803 +#define GL_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +/* GL_SCISSOR_TEST */ +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +/* GL_POLYGON_OFFSET_FILL */ +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB + +/* GetTextureParameter */ +/* GL_TEXTURE_MAG_FILTER */ +/* GL_TEXTURE_MIN_FILTER */ +/* GL_TEXTURE_WRAP_S */ +/* GL_TEXTURE_WRAP_T */ + +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 + +/* HintMode */ +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 + +/* HintTarget */ +#define GL_GENERATE_MIPMAP_HINT 0x8192 + +/* DataType */ +#define GL_BYTE 0x1400 +#define GL_UNSIGNED_BYTE 0x1401 +#define GL_SHORT 0x1402 +#define GL_UNSIGNED_SHORT 0x1403 +#define GL_INT 0x1404 +#define GL_UNSIGNED_INT 0x1405 +#define GL_FLOAT 0x1406 +#define GL_FIXED 0x140C + +/* PixelFormat */ +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A + +/* PixelType */ +/* GL_UNSIGNED_BYTE */ +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 + +/* Shaders */ +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D + +/* StencilFunction */ +#define GL_NEVER 0x0200 +#define GL_LESS 0x0201 +#define GL_EQUAL 0x0202 +#define GL_LEQUAL 0x0203 +#define GL_GREATER 0x0204 +#define GL_NOTEQUAL 0x0205 +#define GL_GEQUAL 0x0206 +#define GL_ALWAYS 0x0207 + +/* StencilOp */ +/* GL_ZERO */ +#define GL_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 + +/* StringName */ +#define GL_VENDOR 0x1F00 +#define GL_RENDERER 0x1F01 +#define GL_VERSION 0x1F02 +#define GL_EXTENSIONS 0x1F03 + +/* TextureMagFilter */ +#define GL_NEAREST 0x2600 +#define GL_LINEAR 0x2601 + +/* TextureMinFilter */ +/* GL_NEAREST */ +/* GL_LINEAR */ +#define GL_NEAREST_MIPMAP_NEAREST 0x2700 +#define GL_LINEAR_MIPMAP_NEAREST 0x2701 +#define GL_NEAREST_MIPMAP_LINEAR 0x2702 +#define GL_LINEAR_MIPMAP_LINEAR 0x2703 + +/* TextureParameterName */ +#define GL_TEXTURE_MAG_FILTER 0x2800 +#define GL_TEXTURE_MIN_FILTER 0x2801 +#define GL_TEXTURE_WRAP_S 0x2802 +#define GL_TEXTURE_WRAP_T 0x2803 + +/* TextureTarget */ +/* GL_TEXTURE_2D */ +#define GL_TEXTURE 0x1702 + +#define GL_TEXTURE_CUBE_MAP 0x8513 +#define GL_TEXTURE_BINDING_CUBE_MAP 0x8514 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_X 0x8515 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X 0x8516 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y 0x8517 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y 0x8518 +#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z 0x8519 +#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z 0x851A +#define GL_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C + +/* TextureUnit */ +#define GL_TEXTURE0 0x84C0 +#define GL_TEXTURE1 0x84C1 +#define GL_TEXTURE2 0x84C2 +#define GL_TEXTURE3 0x84C3 +#define GL_TEXTURE4 0x84C4 +#define GL_TEXTURE5 0x84C5 +#define GL_TEXTURE6 0x84C6 +#define GL_TEXTURE7 0x84C7 +#define GL_TEXTURE8 0x84C8 +#define GL_TEXTURE9 0x84C9 +#define GL_TEXTURE10 0x84CA +#define GL_TEXTURE11 0x84CB +#define GL_TEXTURE12 0x84CC +#define GL_TEXTURE13 0x84CD +#define GL_TEXTURE14 0x84CE +#define GL_TEXTURE15 0x84CF +#define GL_TEXTURE16 0x84D0 +#define GL_TEXTURE17 0x84D1 +#define GL_TEXTURE18 0x84D2 +#define GL_TEXTURE19 0x84D3 +#define GL_TEXTURE20 0x84D4 +#define GL_TEXTURE21 0x84D5 +#define GL_TEXTURE22 0x84D6 +#define GL_TEXTURE23 0x84D7 +#define GL_TEXTURE24 0x84D8 +#define GL_TEXTURE25 0x84D9 +#define GL_TEXTURE26 0x84DA +#define GL_TEXTURE27 0x84DB +#define GL_TEXTURE28 0x84DC +#define GL_TEXTURE29 0x84DD +#define GL_TEXTURE30 0x84DE +#define GL_TEXTURE31 0x84DF +#define GL_ACTIVE_TEXTURE 0x84E0 + +/* TextureWrapMode */ +#define GL_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 + +/* Uniform Types */ +#define GL_FLOAT_VEC2 0x8B50 +#define GL_FLOAT_VEC3 0x8B51 +#define GL_FLOAT_VEC4 0x8B52 +#define GL_INT_VEC2 0x8B53 +#define GL_INT_VEC3 0x8B54 +#define GL_INT_VEC4 0x8B55 +#define GL_BOOL 0x8B56 +#define GL_BOOL_VEC2 0x8B57 +#define GL_BOOL_VEC3 0x8B58 +#define GL_BOOL_VEC4 0x8B59 +#define GL_FLOAT_MAT2 0x8B5A +#define GL_FLOAT_MAT3 0x8B5B +#define GL_FLOAT_MAT4 0x8B5C +#define GL_SAMPLER_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 + +/* Vertex Arrays */ +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F + +/* Read Format */ +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B + +/* Shader Source */ +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA + +/* Shader Binary */ +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 + +/* Shader Precision-Specified Types */ +#define GL_LOW_FLOAT 0x8DF0 +#define GL_MEDIUM_FLOAT 0x8DF1 +#define GL_HIGH_FLOAT 0x8DF2 +#define GL_LOW_INT 0x8DF3 +#define GL_MEDIUM_INT 0x8DF4 +#define GL_HIGH_INT 0x8DF5 + +/* Framebuffer Object. */ +#define GL_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 + +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 + +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#define GL_RENDERBUFFER_RED_SIZE 0x8D50 +#define GL_RENDERBUFFER_GREEN_SIZE 0x8D51 +#define GL_RENDERBUFFER_BLUE_SIZE 0x8D52 +#define GL_RENDERBUFFER_ALPHA_SIZE 0x8D53 +#define GL_RENDERBUFFER_DEPTH_SIZE 0x8D54 +#define GL_RENDERBUFFER_STENCIL_SIZE 0x8D55 + +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE 0x8CD0 +#define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME 0x8CD1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL 0x8CD2 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3 + +#define GL_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 + +#define GL_NONE 0 + +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD + +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 + +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 + +/*------------------------------------------------------------------------- + * GL core functions. + *-----------------------------------------------------------------------*/ + +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar* name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void GL_APIENTRY glBlendEquation ( GLenum mode ); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLclampf depth); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint* buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint* framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint* renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint* textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLclampf zNear, GLclampf zFar); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint* buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint* framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint* renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint* textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, GLchar* name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders); +GL_APICALL int GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar* name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean* params); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* infolog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source); +GL_APICALL const GLubyte* GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint* params); +GL_APICALL int GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar* name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat* params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint* params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid** pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLclampf value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei n, const GLuint* shaders, GLenum binaryformat, const GLvoid* binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* const* string, const GLint* length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat* params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint* params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat x); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint x); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint x, GLint y); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint x, GLint y, GLint z); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat* v); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint* v); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint indx, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint indx, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint indx, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint indx, const GLfloat* values); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* ptr); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2_h_ */ + + +#ifndef __gl2ext_h_ +#define __gl2ext_h_ + +/* $Revision: 19436 $ on $Date:: 2012-10-10 10:37:04 -0700 #$ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This document is licensed under the SGI Free Software B License Version + * 2.0. For details, see http://oss.sgi.com/projects/FreeB/ . + */ + +#ifndef GL_APIENTRYP +# define GL_APIENTRYP GL_APIENTRY* +#endif + +/*------------------------------------------------------------------------* + * OES extension tokens + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_ETC1_RGB8_OES 0x8D64 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_PALETTE4_RGB8_OES 0x8B90 +#define GL_PALETTE4_RGBA8_OES 0x8B91 +#define GL_PALETTE4_R5_G6_B5_OES 0x8B92 +#define GL_PALETTE4_RGBA4_OES 0x8B93 +#define GL_PALETTE4_RGB5_A1_OES 0x8B94 +#define GL_PALETTE8_RGB8_OES 0x8B95 +#define GL_PALETTE8_RGBA8_OES 0x8B96 +#define GL_PALETTE8_R5_G6_B5_OES 0x8B97 +#define GL_PALETTE8_RGBA4_OES 0x8B98 +#define GL_PALETTE8_RGB5_A1_OES 0x8B99 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif + +/* GL_OES_depth_texture */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +typedef void* GLeglImageOES; +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +/* GLeglImageOES defined in GL_OES_EGL_image already. */ +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_UNSIGNED_INT 0x1405 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif + +/* GL_OES_required_internalformat */ +#ifndef GL_OES_required_internalformat +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +/* reuse GL_DEPTH_COMPONENT24_OES */ +/* reuse GL_DEPTH24_STENCIL8_OES */ +/* reuse GL_DEPTH_COMPONENT32_OES */ +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +/* reuse GL_RGB8_OES */ +/* reuse GL_RGBA8_OES */ +/* reuse GL_RGB10_EXT */ +/* reuse GL_RGB10_A2_EXT */ +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 #endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif + +#ifndef GL_OES_surfaceless_context +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +#endif + +/* GL_OES_texture_float */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_HALF_FLOAT_OES 0x8D61 +#endif + +/* GL_OES_texture_half_float_linear */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_texture_npot */ +/* No new tokens introduced by this extension. */ + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +#endif + +/* GL_OES_vertex_half_float */ +/* GL_HALF_FLOAT_OES defined in GL_OES_texture_half_float already. */ + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif + +/*------------------------------------------------------------------------* + * KHR extension tokens + *------------------------------------------------------------------------*/ + +#ifndef GL_KHR_debug +typedef void (GL_APIENTRYP GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,GLvoid *userParam); +#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245 +#define GL_DEBUG_SOURCE_API 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION 0x824A +#define GL_DEBUG_SOURCE_OTHER 0x824B +#define GL_DEBUG_TYPE_ERROR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE 0x8250 +#define GL_DEBUG_TYPE_OTHER 0x8251 +#define GL_DEBUG_TYPE_MARKER 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D +#define GL_BUFFER 0x82E0 +#define GL_SHADER 0x82E1 +#define GL_PROGRAM 0x82E2 +#define GL_QUERY 0x82E3 +/* PROGRAM_PIPELINE only in GL */ +#define GL_SAMPLER 0x82E6 +/* DISPLAY_LIST only in GL */ +#define GL_MAX_LABEL_LENGTH 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES 0x9145 +#define GL_DEBUG_SEVERITY_HIGH 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM 0x9147 +#define GL_DEBUG_SEVERITY_LOW 0x9148 +#define GL_DEBUG_OUTPUT 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002 +#define GL_STACK_OVERFLOW 0x0503 +#define GL_STACK_UNDERFLOW 0x0504 +#endif + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 +#define GL_COMPRESSED_RGBA_ASTC_5x4_KHR 0x93B1 +#define GL_COMPRESSED_RGBA_ASTC_5x5_KHR 0x93B2 +#define GL_COMPRESSED_RGBA_ASTC_6x5_KHR 0x93B3 +#define GL_COMPRESSED_RGBA_ASTC_6x6_KHR 0x93B4 +#define GL_COMPRESSED_RGBA_ASTC_8x5_KHR 0x93B5 +#define GL_COMPRESSED_RGBA_ASTC_8x6_KHR 0x93B6 +#define GL_COMPRESSED_RGBA_ASTC_8x8_KHR 0x93B7 +#define GL_COMPRESSED_RGBA_ASTC_10x5_KHR 0x93B8 +#define GL_COMPRESSED_RGBA_ASTC_10x6_KHR 0x93B9 +#define GL_COMPRESSED_RGBA_ASTC_10x8_KHR 0x93BA +#define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB +#define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC +#define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD +#endif + +/*------------------------------------------------------------------------* + * AMD extension tokens + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif + +/* GL_AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_COUNTER_TYPE_AMD 0x8BC0 +#define GL_COUNTER_RANGE_AMD 0x8BC1 +#define GL_UNSIGNED_INT64_AMD 0x8BC2 +#define GL_PERCENTAGE_AMD 0x8BC3 +#define GL_PERFMON_RESULT_AVAILABLE_AMD 0x8BC4 +#define GL_PERFMON_RESULT_SIZE_AMD 0x8BC5 +#define GL_PERFMON_RESULT_AMD 0x8BC6 +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_Z400_BINARY_AMD 0x8740 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +#endif + +/* GL_ANGLE_instanced_arrays */ +#ifndef GL_ANGLE_instanced_arrays +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +#endif + +/* GL_ANGLE_pack_reverse_row_order */ +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif + +/* GL_ANGLE_texture_compression_dxt3 */ +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif + +/* GL_ANGLE_texture_compression_dxt5 */ +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif + +/* GL_ANGLE_texture_usage */ +#ifndef GL_ANGLE_texture_usage +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif + +/* GL_ANGLE_translated_shader_source */ +#ifndef GL_ANGLE_translated_shader_source +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +#endif + +/*------------------------------------------------------------------------* + * APPLE extension tokens + *------------------------------------------------------------------------*/ + +/* GL_APPLE_copy_texture_levels */ +/* No new tokens introduced by this extension. */ + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +#endif + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_RGB_422_APPLE 0x8A1F +#define GL_UNSIGNED_SHORT_8_8_APPLE 0x85BA +#define GL_UNSIGNED_SHORT_8_8_REV_APPLE 0x85BB +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync + +#ifndef __gl3_h_ +/* These types are defined with reference to + * in the Apple extension spec, but here we use the Khronos + * portable types in khrplatform.h, and assume those types + * are always defined. + * If any other extensions using these types are defined, + * the typedefs must move out of this block and be shared. + */ +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef struct __GLsync *GLsync; +#endif + +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif + +/*------------------------------------------------------------------------* + * ARM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_program_binary */ +#ifndef GL_ARM_mali_program_binary +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif + +/* GL_ARM_rgba8 */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * EXT extension tokens + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif + +/* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_color_buffer_half_float +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F +#define GL_PROGRAM_OBJECT_EXT 0x8B40 +#define GL_SHADER_OBJECT_EXT 0x8B48 +#define GL_BUFFER_OBJECT_EXT 0x9151 +#define GL_QUERY_OBJECT_EXT 0x9153 +#define GL_VERTEX_ARRAY_OBJECT_EXT 0x9154 +#endif + +/* GL_EXT_debug_marker */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +#endif + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +/* reuse values from GL_EXT_framebuffer_multisample (desktop extension) */ +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +#endif + +/* GL_EXT_multiview_draw_buffers */ +#ifndef GL_EXT_multiview_draw_buffers +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +#endif + +/* GL_EXT_multi_draw_arrays */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_BGRA_EXT 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +/* reuse GL_NO_ERROR */ +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +#endif + +/* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 +#endif + +/* GL_EXT_shader_texture_lod */ +/* No new tokens introduced by this extension. */ + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE +#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_BGRA_EXT 0x80E1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_TEXTURE_IMMUTABLE_FORMAT_EXT 0x912F +#define GL_ALPHA8_EXT 0x803C +#define GL_LUMINANCE8_EXT 0x8040 +#define GL_LUMINANCE8_ALPHA8_EXT 0x8045 +#define GL_RGBA32F_EXT 0x8814 +#define GL_RGB32F_EXT 0x8815 +#define GL_ALPHA32F_EXT 0x8816 +#define GL_LUMINANCE32F_EXT 0x8818 +#define GL_LUMINANCE_ALPHA32F_EXT 0x8819 +/* reuse GL_RGBA16F_EXT */ +/* reuse GL_RGB16F_EXT */ +#define GL_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_RGB10_A2_EXT 0x8059 +#define GL_RGB10_EXT 0x8052 +#define GL_BGRA8_EXT 0x93A1 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +#define GL_R16F_EXT 0x822D +#define GL_RG16F_EXT 0x822F +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif + +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_UNPACK_ROW_LENGTH 0x0CF2 +#define GL_UNPACK_SKIP_ROWS 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS 0x0CF4 +#endif + +/*------------------------------------------------------------------------* + * DMP extension tokens + *------------------------------------------------------------------------*/ + +/* GL_DMP_shader_binary */ +#ifndef GL_DMP_shader_binary +#define GL_SHADER_BINARY_DMP 0x9250 +#endif + +/*------------------------------------------------------------------------* + * FJ extension tokens + *------------------------------------------------------------------------*/ + +/* GL_FJ_shader_binary_GCCSO */ +#ifndef GL_FJ_shader_binary_GCCSO +#define GCCSO_SHADER_BINARY_FJ 0x9260 +#endif + +/*------------------------------------------------------------------------* + * IMG extension tokens + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_SGX_BINARY_IMG 0x8C0A +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +#endif + +/*------------------------------------------------------------------------* + * NV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x8000 +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +#endif + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +/* GL_COLOR_ATTACHMENT{0-15}_NV defined in GL_NV_draw_buffers already. */ +#endif + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_ALL_COMPLETED_NV 0x84F2 +#define GL_FENCE_STATUS_NV 0x84F3 +#define GL_FENCE_CONDITION_NV 0x84F4 +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_READ_BUFFER_NV 0x0C02 +#endif + +/* GL_NV_read_buffer_front */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_depth */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_depth_stencil */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_read_stencil */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_texture_compression_s3tc_update */ +/* No new tokens introduced by this extension. */ + +/* GL_NV_texture_npot_2D_mipmap */ +/* No new tokens introduced by this extension. */ + +/*------------------------------------------------------------------------* + * QCOM extension tokens + *------------------------------------------------------------------------*/ + +/* GL_QCOM_alpha_test */ +#ifndef GL_QCOM_alpha_test +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +#endif + +/* GL_QCOM_binning_control */ +#ifndef GL_QCOM_binning_control +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif + +/* GL_QCOM_driver_control */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +#endif + +/* GL_QCOM_extended_get2 */ +/* No new tokens introduced by this extension. */ + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif + +/*------------------------------------------------------------------------* + * End of extension tokens, start of corresponding extension functions + *------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------* + * OES extension functions + *------------------------------------------------------------------------*/ + +/* GL_OES_compressed_ETC1_RGB8_texture */ +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#endif + +/* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_compressed_paletted_texture +#define GL_OES_compressed_paletted_texture 1 +#endif + +/* GL_OES_depth24 */ +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#endif + +/* GL_OES_depth32 */ +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#endif + +/* GL_OES_depth_texture */ +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif + +/* GL_OES_EGL_image */ +#ifndef GL_OES_EGL_image +#define GL_OES_EGL_image 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#endif + +/* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +/* glEGLImageTargetTexture2DOES defined in GL_OES_EGL_image already. */ +#endif + +/* GL_OES_element_index_uint */ +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif + +/* GL_OES_fbo_render_mipmap */ +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif + +/* GL_OES_fragment_precision_high */ +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif + +/* GL_OES_get_program_binary */ +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLint length); +#endif + +/* GL_OES_mapbuffer */ +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, GLvoid** params); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, GLvoid** params); +#endif + +/* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#endif + +/* GL_OES_required_internalformat */ +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#endif + +/* GL_OES_rgb8_rgba8 */ +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif + +/* GL_OES_standard_derivatives */ +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#endif + +/* GL_OES_stencil1 */ +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#endif + +/* GL_OES_stencil4 */ +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#endif + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#endif + +/* GL_OES_texture_3D */ +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif + +/* GL_OES_texture_float */ +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif + +/* GL_OES_texture_float_linear */ +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif + +/* GL_OES_texture_half_float */ +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#endif + +/* GL_OES_texture_half_float_linear */ +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif + +/* GL_OES_texture_npot */ +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif + +/* GL_OES_vertex_array_object */ +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#endif + +/* GL_OES_vertex_half_float */ +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif + +/* GL_OES_vertex_type_10_10_10_2 */ +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#endif + +/*------------------------------------------------------------------------* + * KHR extension functions + *------------------------------------------------------------------------*/ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControl (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsert (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallback (GLDEBUGPROC callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLog (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroup (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroup (void); +GL_APICALL void GL_APIENTRY glObjectLabel (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabel (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabel (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabel (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointerv (GLenum pname, void **params); +#endif +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVPROC) (GLenum pname, void **params); +#endif + +#ifndef GL_KHR_texture_compression_astc_ldr +#define GL_KHR_texture_compression_astc_ldr 1 +#endif + + +/*------------------------------------------------------------------------* + * AMD extension functions + *------------------------------------------------------------------------*/ + +/* GL_AMD_compressed_3DC_texture */ +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#endif + +/* GL_AMD_compressed_ATC_texture */ +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#endif + +/* AMD_performance_monitor */ +#ifndef GL_AMD_performance_monitor +#define GL_AMD_performance_monitor 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, GLvoid *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *countersList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif + +/* GL_AMD_program_binary_Z400 */ +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#endif + +/*------------------------------------------------------------------------* + * ANGLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_ANGLE_framebuffer_blit */ +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif + +/* GL_ANGLE_framebuffer_multisample */ +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif + +#ifndef GL_ANGLE_instanced_arrays +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +typedef void (GL_APIENTRYP PFLGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFLGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFLGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#endif + +/* GL_ANGLE_pack_reverse_row_order */ +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#endif + +/* GL_ANGLE_texture_compression_dxt3 */ +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#endif + +/* GL_ANGLE_texture_compression_dxt5 */ +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#endif + +/* GL_ANGLE_texture_usage */ +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#endif + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +#endif +typedef void (GL_APIENTRYP PFLGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufsize, GLsizei *length, GLchar *source); +#endif + +/*------------------------------------------------------------------------* + * APPLE extension functions + *------------------------------------------------------------------------*/ + +/* GL_APPLE_copy_texture_levels */ +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif + +/* GL_APPLE_framebuffer_multisample */ +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#endif + +/* GL_APPLE_rgb_422 */ +#ifndef GL_APPLE_rgb_422 +#define GL_APPLE_rgb_422 1 +#endif + +/* GL_APPLE_sync */ +#ifndef GL_APPLE_sync +#define GL_APPLE_sync 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); +#endif + +/* GL_APPLE_texture_format_BGRA8888 */ +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#endif + +/* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#endif + +/*------------------------------------------------------------------------* + * ARM extension functions + *------------------------------------------------------------------------*/ + +/* GL_ARM_mali_program_binary */ +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#endif + +/* GL_ARM_mali_shader_binary */ +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#endif + +/* GL_ARM_rgba8 */ +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif + +/*------------------------------------------------------------------------* + * EXT extension functions + *------------------------------------------------------------------------*/ + +/* GL_EXT_blend_minmax */ +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#endif + +/* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#endif + +/* GL_EXT_debug_label */ +#ifndef GL_EXT_debug_label +#define GL_EXT_debug_label 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelEXT (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#endif + +/* GL_EXT_debug_marker */ +#ifndef GL_EXT_debug_marker +#define GL_EXT_debug_marker 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +typedef void (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#endif + +/* GL_EXT_discard_framebuffer */ +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif + +/* GL_EXT_map_buffer_range */ +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void* GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +typedef void* (GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#endif + +/* GL_EXT_multisampled_render_to_texture */ +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/* GL_EXT_multiview_draw_buffers */ +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#endif + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei); +GL_APICALL void GL_APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei); +#endif /* GL_GLEXT_PROTOTYPES */ +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount); +#endif + +/* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +#endif +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +#endif + +/* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#endif + +/* GL_EXT_robustness */ +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, float *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, float *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif + +/* GL_EXT_separate_shader_objects */ +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint x); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint x, GLint y); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat x); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +#endif +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint x, GLint y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +#endif + +/* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_framebuffer_fetch +#define GL_EXT_shader_framebuffer_fetch 1 +#endif + +/* GL_EXT_shader_texture_lod */ +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif + +/* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#endif + +/* GL_EXT_sRGB */ +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#endif + +/* GL_EXT_texture_compression_dxt1 */ +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#endif + +/* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_anisotropic +#define GL_EXT_texture_filter_anisotropic 1 +#endif + +/* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif + +/* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#endif + +/* GL_EXT_texture_storage */ +#ifndef GL_EXT_texture_storage +#define GL_EXT_texture_storage 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif + +/* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#endif + +/* GL_EXT_unpack_subimage */ +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#endif + +/*------------------------------------------------------------------------* + * DMP extension functions + *------------------------------------------------------------------------*/ + +/* GL_DMP_shader_binary */ +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#endif + +/*------------------------------------------------------------------------* + * FJ extension functions + *------------------------------------------------------------------------*/ + +/* GL_FJ_shader_binary_GCCSO */ +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#endif + +/*------------------------------------------------------------------------* + * IMG extension functions + *------------------------------------------------------------------------*/ + +/* GL_IMG_program_binary */ +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#endif + +/* GL_IMG_read_format */ +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#endif + +/* GL_IMG_shader_binary */ +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#endif + +/* GL_IMG_texture_compression_pvrtc */ +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#endif + +/* GL_IMG_multisampled_render_to_texture */ +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum, GLsizei, GLenum, GLsizei, GLsizei); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei); +#endif +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif + +/*------------------------------------------------------------------------* + * NV extension functions + *------------------------------------------------------------------------*/ + +/* GL_NV_coverage_sample */ +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#endif + +/* GL_NV_depth_nonlinear */ +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#endif + +/* GL_NV_draw_buffers */ +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#endif + +/* GL_NV_fbo_color_attachments */ +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#endif + +/* GL_NV_fence */ +#ifndef GL_NV_fence +#define GL_NV_fence 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei, const GLuint *); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei, GLuint *); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint); +GL_APICALL void GL_APIENTRY glSetFenceNV (GLuint, GLenum); +#endif +typedef void (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#endif + +/* GL_NV_read_buffer */ +#ifndef GL_NV_read_buffer +#define GL_NV_read_buffer 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#endif + +/* GL_NV_read_buffer_front */ +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif + +/* GL_NV_read_depth */ +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif + +/* GL_NV_read_depth_stencil */ +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif + +/* GL_NV_read_stencil */ +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif + +/* GL_NV_texture_compression_s3tc_update */ +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif + +/* GL_NV_texture_npot_2D_mipmap */ +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif + +/*------------------------------------------------------------------------* + * QCOM extension functions + *------------------------------------------------------------------------*/ + +/* GL_QCOM_alpha_test */ +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#endif + +/* GL_QCOM_binning_control */ +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#endif + +/* GL_QCOM_driver_control */ +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#endif + +/* GL_QCOM_extended_get */ +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, GLvoid **params); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLvoid *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, GLvoid **params); +#endif + +/* GL_QCOM_extended_get2 */ +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif + +/* GL_QCOM_perfmon_global_mode */ +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#endif + +/* GL_QCOM_writeonly_rendering */ +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#endif + +/* GL_QCOM_tiled_rendering */ +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#endif + +/*------------------------------------------------------------------------* + * VIV extension tokens + *------------------------------------------------------------------------*/ + +/* GL_VIV_shader_binary */ +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __gl2ext_h_ */ + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif \ No newline at end of file diff --git a/src/render/opengles2/SDL_gles2funcs.h b/src/render/opengles2/SDL_gles2funcs.h index b201bdfd10..9faad133b3 100644 --- a/src/render/opengles2/SDL_gles2funcs.h +++ b/src/render/opengles2/SDL_gles2funcs.h @@ -46,3 +46,5 @@ SDL_PROC(void, glBindFramebuffer, (GLenum, GLuint)) SDL_PROC(void, glFramebufferTexture2D, (GLenum, GLenum, GLenum, GLuint, GLint)) SDL_PROC(GLenum, glCheckFramebufferStatus, (GLenum)) SDL_PROC(void, glDeleteFramebuffers, (GLsizei, const GLuint *)) +SDL_PROC(GLint, glGetAttribLocation, (GLuint, const GLchar *)) + \ No newline at end of file diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 73a6df16fa..ce8f462219 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -23,8 +23,9 @@ #if SDL_VIDEO_OPENGL_EGL #include "SDL_sysvideo.h" -#include "SDL_egl.h" - +#include "SDL_egl_c.h" +#include "SDL_loadso.h" +#include "SDL_hints.h" #if SDL_VIDEO_DRIVER_RPI /* Raspbian places the OpenGL ES/EGL binaries in a non standard path */ @@ -40,6 +41,13 @@ #define DEFAULT_OGL_ES_PVR "libGLES_CM.so" #define DEFAULT_OGL_ES "libGLESv1_CM.so" +#elif SDL_VIDEO_DRIVER_WINDOWS +/* EGL AND OpenGL ES support via ANGLE */ +#define DEFAULT_EGL "libEGL.dll" +#define DEFAULT_OGL_ES2 "libGLESv2.dll" +#define DEFAULT_OGL_ES_PVR "libGLES_CM.dll" +#define DEFAULT_OGL_ES "libGLESv1_CM.dll" + #else /* Desktop Linux */ #define DEFAULT_EGL "libEGL.so.1" @@ -49,7 +57,7 @@ #endif /* SDL_VIDEO_DRIVER_RPI */ #define LOAD_FUNC(NAME) \ -*((void**)&_this->egl_data->NAME) = dlsym(dll_handle, #NAME); \ +*((void**)&_this->egl_data->NAME) = SDL_LoadFunction(_this->egl_data->dll_handle, #NAME); \ if (!_this->egl_data->NAME) \ { \ return SDL_SetError("Could not retrieve EGL function " #NAME); \ @@ -61,12 +69,10 @@ void * SDL_EGL_GetProcAddress(_THIS, const char *proc) { static char procname[1024]; - void *handle; void *retval; /* eglGetProcAddress is busted on Android http://code.google.com/p/android/issues/detail?id=7681 */ -#if !defined(SDL_VIDEO_DRIVER_ANDROID) - handle = _this->egl_data->egl_dll_handle; +#if !defined(SDL_VIDEO_DRIVER_ANDROID) if (_this->egl_data->eglGetProcAddress) { retval = _this->egl_data->eglGetProcAddress(proc); if (retval) { @@ -75,15 +81,11 @@ SDL_EGL_GetProcAddress(_THIS, const char *proc) } #endif - handle = _this->gl_config.dll_handle; - #if defined(__OpenBSD__) && !defined(__ELF__) - #undef dlsym(x,y); - #endif - retval = dlsym(handle, proc); - if (!retval && strlen(proc) <= 1022) { + retval = SDL_LoadFunction(_this->egl_data->egl_dll_handle, proc); + if (!retval && SDL_strlen(proc) <= 1022) { procname[0] = '_'; - strcpy(procname + 1, proc); - retval = dlsym(handle, procname); + SDL_strlcpy(procname + 1, proc, 1022); + retval = SDL_LoadFunction(_this->egl_data->egl_dll_handle, procname); } return retval; } @@ -97,12 +99,12 @@ SDL_EGL_UnloadLibrary(_THIS) _this->egl_data->egl_display = NULL; } - if (_this->gl_config.dll_handle) { - dlclose(_this->gl_config.dll_handle); - _this->gl_config.dll_handle = NULL; + if (_this->egl_data->dll_handle) { + SDL_UnloadObject(_this->egl_data->dll_handle); + _this->egl_data->dll_handle = NULL; } if (_this->egl_data->egl_dll_handle) { - dlclose(_this->egl_data->egl_dll_handle); + SDL_UnloadObject(_this->egl_data->egl_dll_handle); _this->egl_data->egl_dll_handle = NULL; } @@ -114,10 +116,12 @@ SDL_EGL_UnloadLibrary(_THIS) int SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_display) { - void *dll_handle, *egl_dll_handle; /* The naming is counter intuitive, but hey, I just work here -- Gabriel */ - char *path; - int dlopen_flags; - + void *dll_handle = NULL, *egl_dll_handle = NULL; /* The naming is counter intuitive, but hey, I just work here -- Gabriel */ + char *path = NULL; +#if SDL_VIDEO_DRIVER_WINDOWS + const char *d3dcompiler; +#endif + if (_this->egl_data) { return SDL_SetError("OpenGL ES context already created"); } @@ -127,50 +131,63 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa return SDL_OutOfMemory(); } -#ifdef RTLD_GLOBAL - dlopen_flags = RTLD_LAZY | RTLD_GLOBAL; -#else - dlopen_flags = RTLD_LAZY; +#if SDL_VIDEO_DRIVER_WINDOWS + d3dcompiler = SDL_GetHint(SDL_HINT_VIDEO_WIN_D3DCOMPILER); + if (!d3dcompiler) { + /* By default we load the Vista+ compatible compiler */ + d3dcompiler = "d3dcompiler_46.dll"; + } + if (SDL_strcasecmp(d3dcompiler, "none") != 0) { + SDL_LoadObject(d3dcompiler); + } #endif /* A funny thing, loading EGL.so first does not work on the Raspberry, so we load libGL* first */ - path = getenv("SDL_VIDEO_GL_DRIVER"); - egl_dll_handle = dlopen(path, dlopen_flags); - if ((path == NULL) | (egl_dll_handle == NULL)) { + path = SDL_getenv("SDL_VIDEO_GL_DRIVER"); + if (path != NULL) { + egl_dll_handle = SDL_LoadObject(path); + } + + if (egl_dll_handle == NULL) { if (_this->gl_config.major_version > 1) { path = DEFAULT_OGL_ES2; - egl_dll_handle = dlopen(path, dlopen_flags); - } else { + egl_dll_handle = SDL_LoadObject(path); + } + else { path = DEFAULT_OGL_ES; - egl_dll_handle = dlopen(path, dlopen_flags); + egl_dll_handle = SDL_LoadObject(path); if (egl_dll_handle == NULL) { path = DEFAULT_OGL_ES_PVR; - egl_dll_handle = dlopen(path, dlopen_flags); + egl_dll_handle = SDL_LoadObject(path); } } } _this->egl_data->egl_dll_handle = egl_dll_handle; if (egl_dll_handle == NULL) { - return SDL_SetError("Could not initialize OpenGL ES library: %s", dlerror()); + return SDL_SetError("Could not initialize OpenGL ES library"); } - + /* Loading libGL* in the previous step took care of loading libEGL.so, but we future proof by double checking */ - dll_handle = dlopen(egl_path, dlopen_flags); + if (egl_path != NULL) { + dll_handle = SDL_LoadObject(egl_path); + } /* Catch the case where the application isn't linked with EGL */ - if ((dlsym(dll_handle, "eglChooseConfig") == NULL) && (egl_path == NULL)) { - dlclose(dll_handle); - path = getenv("SDL_VIDEO_EGL_DRIVER"); + if ((SDL_LoadFunction(dll_handle, "eglChooseConfig") == NULL) && (egl_path == NULL)) { + if (dll_handle != NULL) { + SDL_UnloadObject(dll_handle); + } + path = SDL_getenv("SDL_VIDEO_EGL_DRIVER"); if (path == NULL) { path = DEFAULT_EGL; } - dll_handle = dlopen(path, dlopen_flags); + dll_handle = SDL_LoadObject(path); + if (dll_handle == NULL) { + return SDL_SetError("Could not load EGL library"); + } } - _this->gl_config.dll_handle = dll_handle; - if (dll_handle == NULL) { - return SDL_SetError("Could not load EGL library: %s", dlerror()); - } + _this->egl_data->dll_handle = dll_handle; /* Load new function pointers */ LOAD_FUNC(eglGetDisplay); @@ -198,14 +215,14 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa return SDL_SetError("Could not initialize EGL"); } - _this->gl_config.dll_handle = dll_handle; + _this->egl_data->dll_handle = dll_handle; _this->egl_data->egl_dll_handle = egl_dll_handle; _this->gl_config.driver_loaded = 1; if (path) { - strncpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1); + SDL_strlcpy(_this->gl_config.driver_path, path, sizeof(_this->gl_config.driver_path) - 1); } else { - strcpy(_this->gl_config.driver_path, ""); + *_this->gl_config.driver_path = '\0'; } /* We need to select a config here to satisfy some video backends such as X11 */ @@ -217,10 +234,10 @@ SDL_EGL_ChooseConfig(_THIS) { /* 64 seems nice. */ EGLint attribs[64]; - EGLint found_configs = 0; + EGLint found_configs = 0, value; /* 128 seems even nicer here */ EGLConfig configs[128]; - int i, j, best_bitdiff = -1, bitdiff, value; + int i, j, best_bitdiff = -1, bitdiff; if (!_this->egl_data) { /* The EGL library wasn't loaded, SDL_GetError() should have info */ @@ -283,10 +300,10 @@ SDL_EGL_ChooseConfig(_THIS) /* eglChooseConfig returns a number of configurations that match or exceed the requested attribs. */ /* From those, we select the one that matches our requirements more closely via a makeshift algorithm */ - + for ( i=0; iegl_data->eglGetConfigAttrib(_this->egl_data->egl_display, configs[i], attribs[j], &value); bitdiff += value - attribs[j + 1]; /* value is always >= attrib */ } diff --git a/src/video/SDL_egl.h b/src/video/SDL_egl_c.h similarity index 76% rename from src/video/SDL_egl.h rename to src/video/SDL_egl_c.h index d6139058d6..3f0cd06ede 100644 --- a/src/video/SDL_egl.h +++ b/src/video/SDL_egl_c.h @@ -25,62 +25,57 @@ #if SDL_VIDEO_OPENGL_EGL -#include - -#include -#if defined(__OpenBSD__) && !defined(__ELF__) -#define dlsym(x,y) dlsym(x, "_" y) -#endif +#include "SDL_egl.h" #include "SDL_sysvideo.h" typedef struct SDL_EGL_VideoData { - void *egl_dll_handle; + void *egl_dll_handle, *dll_handle; EGLDisplay egl_display; EGLConfig egl_config; int egl_swapinterval; - EGLDisplay(*eglGetDisplay) (NativeDisplayType display); - EGLBoolean(*eglInitialize) (EGLDisplay dpy, EGLint * major, + EGLDisplay(EGLAPIENTRY *eglGetDisplay) (NativeDisplayType display); + EGLBoolean(EGLAPIENTRY *eglInitialize) (EGLDisplay dpy, EGLint * major, EGLint * minor); - EGLBoolean(*eglTerminate) (EGLDisplay dpy); + EGLBoolean(EGLAPIENTRY *eglTerminate) (EGLDisplay dpy); - void *(*eglGetProcAddress) (const char * procName); + void *(EGLAPIENTRY *eglGetProcAddress) (const char * procName); - EGLBoolean(*eglChooseConfig) (EGLDisplay dpy, + EGLBoolean(EGLAPIENTRY *eglChooseConfig) (EGLDisplay dpy, const EGLint * attrib_list, EGLConfig * configs, EGLint config_size, EGLint * num_config); - EGLContext(*eglCreateContext) (EGLDisplay dpy, + EGLContext(EGLAPIENTRY *eglCreateContext) (EGLDisplay dpy, EGLConfig config, EGLContext share_list, const EGLint * attrib_list); - EGLBoolean(*eglDestroyContext) (EGLDisplay dpy, EGLContext ctx); + EGLBoolean(EGLAPIENTRY *eglDestroyContext) (EGLDisplay dpy, EGLContext ctx); - EGLSurface(*eglCreateWindowSurface) (EGLDisplay dpy, + EGLSurface(EGLAPIENTRY *eglCreateWindowSurface) (EGLDisplay dpy, EGLConfig config, NativeWindowType window, const EGLint * attrib_list); - EGLBoolean(*eglDestroySurface) (EGLDisplay dpy, EGLSurface surface); + EGLBoolean(EGLAPIENTRY *eglDestroySurface) (EGLDisplay dpy, EGLSurface surface); - EGLBoolean(*eglMakeCurrent) (EGLDisplay dpy, EGLSurface draw, + EGLBoolean(EGLAPIENTRY *eglMakeCurrent) (EGLDisplay dpy, EGLSurface draw, EGLSurface read, EGLContext ctx); - EGLBoolean(*eglSwapBuffers) (EGLDisplay dpy, EGLSurface draw); + EGLBoolean(EGLAPIENTRY *eglSwapBuffers) (EGLDisplay dpy, EGLSurface draw); - EGLBoolean(*eglSwapInterval) (EGLDisplay dpy, EGLint interval); + EGLBoolean(EGLAPIENTRY *eglSwapInterval) (EGLDisplay dpy, EGLint interval); - const char *(*eglQueryString) (EGLDisplay dpy, EGLint name); + const char *(EGLAPIENTRY *eglQueryString) (EGLDisplay dpy, EGLint name); - EGLBoolean(*eglGetConfigAttrib) (EGLDisplay dpy, EGLConfig config, + EGLBoolean(EGLAPIENTRY *eglGetConfigAttrib) (EGLDisplay dpy, EGLConfig config, EGLint attribute, EGLint * value); - EGLBoolean(*eglWaitNative) (EGLint engine); + EGLBoolean(EGLAPIENTRY *eglWaitNative) (EGLint engine); - EGLBoolean(*eglWaitGL)(void); + EGLBoolean(EGLAPIENTRY *eglWaitGL)(void); } SDL_EGL_VideoData; /* OpenGLES functions */ diff --git a/src/video/android/SDL_androidgl.c b/src/video/android/SDL_androidgl.c index 691fbf7fb6..010465d795 100644 --- a/src/video/android/SDL_androidgl.c +++ b/src/video/android/SDL_androidgl.c @@ -25,7 +25,7 @@ /* Android SDL video driver implementation */ #include "SDL_video.h" -#include "../SDL_egl.h" +#include "../SDL_egl_c.h" #include "SDL_androidwindow.h" #include "SDL_androidvideo.h" diff --git a/src/video/android/SDL_androidvideo.c b/src/video/android/SDL_androidvideo.c index fc766ece7f..aea5a48d31 100644 --- a/src/video/android/SDL_androidvideo.c +++ b/src/video/android/SDL_androidvideo.c @@ -45,7 +45,7 @@ static int Android_VideoInit(_THIS); static void Android_VideoQuit(_THIS); -#include "../SDL_egl.h" +#include "../SDL_egl_c.h" /* GL functions (SDL_androidgl.c) */ extern SDL_GLContext Android_GLES_CreateContext(_THIS, SDL_Window * window); extern int Android_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); diff --git a/src/video/android/SDL_androidwindow.h b/src/video/android/SDL_androidwindow.h index 4365cd414d..ed042765d2 100644 --- a/src/video/android/SDL_androidwindow.h +++ b/src/video/android/SDL_androidwindow.h @@ -24,7 +24,7 @@ #define _SDL_androidwindow_h #include "../../core/android/SDL_android.h" -#include "../SDL_egl.h" +#include "../SDL_egl_c.h" extern int Android_CreateWindow(_THIS, SDL_Window * window); extern void Android_SetWindowTitle(_THIS, SDL_Window * window); diff --git a/src/video/raspberry/SDL_rpiopengles.h b/src/video/raspberry/SDL_rpiopengles.h index deb4b2f363..f98c8709d8 100644 --- a/src/video/raspberry/SDL_rpiopengles.h +++ b/src/video/raspberry/SDL_rpiopengles.h @@ -26,7 +26,7 @@ #if SDL_VIDEO_DRIVER_RPI && SDL_VIDEO_OPENGL_EGL #include "../SDL_sysvideo.h" -#include "../SDL_egl.h" +#include "../SDL_egl_c.h" /* OpenGLES functions */ #define RPI_GLES_GetAttribute SDL_EGL_GetAttribute diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index 20d9913d87..3156c1a01c 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -25,6 +25,7 @@ #include "SDL_assert.h" #include "SDL_loadso.h" #include "SDL_windowsvideo.h" +#include "SDL_windowsopengles.h" /* WGL implementation of SDL OpenGL support */ @@ -323,11 +324,35 @@ HasExtension(const char *extension, const char *extensions) return SDL_FALSE; } -static void -WIN_GL_InitExtensions(_THIS, HDC hdc) +void +WIN_GL_InitExtensions(_THIS) { const char *(WINAPI * wglGetExtensionsStringARB) (HDC) = 0; const char *extensions; + HWND hwnd; + HDC hdc; + HGLRC hglrc; + PIXELFORMATDESCRIPTOR pfd; + + hwnd = + CreateWindow(SDL_Appname, SDL_Appname, (WS_POPUP | WS_DISABLED), 0, 0, + 10, 10, NULL, NULL, SDL_Instance, NULL); + if (!hwnd) { + return; + } + WIN_PumpEvents(_this); + + hdc = GetDC(hwnd); + + WIN_GL_SetupPixelFormat(_this, &pfd); + + SetPixelFormat(hdc, ChoosePixelFormat(hdc, &pfd), &pfd); + + hglrc = _this->gl_data->wglCreateContext(hdc); + if (!hglrc) { + return; + } + _this->gl_data->wglMakeCurrent(hdc, hglrc); wglGetExtensionsStringARB = (const char *(WINAPI *) (HDC)) _this->gl_data->wglGetProcAddress("wglGetExtensionsStringARB"); @@ -369,6 +394,18 @@ WIN_GL_InitExtensions(_THIS, HDC hdc) _this->gl_data->wglSwapIntervalEXT = NULL; _this->gl_data->wglGetSwapIntervalEXT = NULL; } + + /* Check for WGL_EXT_create_context_es2_profile */ + _this->gl_data->HAS_WGL_EXT_create_context_es2_profile = SDL_FALSE; + if (HasExtension("WGL_EXT_create_context_es2_profile", extensions)) { + _this->gl_data->HAS_WGL_EXT_create_context_es2_profile = SDL_TRUE; + } + + _this->gl_data->wglMakeCurrent(hdc, NULL); + _this->gl_data->wglDeleteContext(hglrc); + ReleaseDC(hwnd, hdc); + DestroyWindow(hwnd); + WIN_PumpEvents(_this); } static int @@ -396,8 +433,6 @@ WIN_GL_ChoosePixelFormatARB(_THIS, int *iAttribs, float *fAttribs) if (hglrc) { _this->gl_data->wglMakeCurrent(hdc, hglrc); - WIN_GL_InitExtensions(_this, hdc); - if (_this->gl_data->HAS_WGL_ARB_pixel_format) { _this->gl_data->wglChoosePixelFormatARB(hdc, iAttribs, fAttribs, 1, &pixel_format, @@ -548,6 +583,27 @@ WIN_GL_CreateContext(_THIS, SDL_Window * window) HDC hdc = ((SDL_WindowData *) window->driverdata)->hdc; HGLRC context, share_context; + if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES && + !_this->gl_data->HAS_WGL_EXT_create_context_es2_profile) { + /* Switch to EGL based functions */ + WIN_GL_UnloadLibrary(_this); + _this->GL_LoadLibrary = WIN_GLES_LoadLibrary; + _this->GL_GetProcAddress = WIN_GLES_GetProcAddress; + _this->GL_UnloadLibrary = WIN_GLES_UnloadLibrary; + _this->GL_CreateContext = WIN_GLES_CreateContext; + _this->GL_MakeCurrent = WIN_GLES_MakeCurrent; + _this->GL_SetSwapInterval = WIN_GLES_SetSwapInterval; + _this->GL_GetSwapInterval = WIN_GLES_GetSwapInterval; + _this->GL_SwapWindow = WIN_GLES_SwapWindow; + _this->GL_DeleteContext = WIN_GLES_DeleteContext; + + if (WIN_GLES_LoadLibrary(_this, NULL) != 0) { + return NULL; + } + + return WIN_GLES_CreateContext(_this, window); + } + if (_this->gl_config.share_with_current_context) { share_context = (HGLRC)SDL_GL_GetCurrentContext(); } else { @@ -622,8 +678,6 @@ WIN_GL_CreateContext(_THIS, SDL_Window * window) return NULL; } - WIN_GL_InitExtensions(_this, hdc); - return context; } diff --git a/src/video/windows/SDL_windowsopengl.h b/src/video/windows/SDL_windowsopengl.h index 36da7ba890..155dbde97f 100644 --- a/src/video/windows/SDL_windowsopengl.h +++ b/src/video/windows/SDL_windowsopengl.h @@ -29,6 +29,7 @@ struct SDL_GLDriverData { SDL_bool HAS_WGL_ARB_pixel_format; SDL_bool HAS_WGL_EXT_swap_control_tear; + SDL_bool HAS_WGL_EXT_create_context_es2_profile; void *(WINAPI * wglGetProcAddress) (const char *proc); HGLRC(WINAPI * wglCreateContext) (HDC hdc); @@ -62,6 +63,7 @@ extern int WIN_GL_SetSwapInterval(_THIS, int interval); extern int WIN_GL_GetSwapInterval(_THIS); extern void WIN_GL_SwapWindow(_THIS, SDL_Window * window); extern void WIN_GL_DeleteContext(_THIS, SDL_GLContext context); +extern void WIN_GL_InitExtensions(_THIS); #ifndef WGL_ARB_pixel_format #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c new file mode 100644 index 0000000000..0934f4f8e9 --- /dev/null +++ b/src/video/windows/SDL_windowsopengles.c @@ -0,0 +1,141 @@ +/* +Simple DirectMedia Layer +Copyright (C) 1997-2013 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#include "SDL_config.h" + +#if SDL_VIDEO_DRIVER_WINDOWS && SDL_VIDEO_OPENGL_EGL + +#include "SDL_windowsvideo.h" +#include "SDL_windowsopengles.h" +#include "SDL_windowsopengl.h" +#include "SDL_log.h" + +/* EGL implementation of SDL OpenGL support */ + +int +WIN_GLES_LoadLibrary(_THIS, const char *path) { + + SDL_VideoData *data = (SDL_VideoData *)_this->driverdata; + + /* If the profile requested is not GL ES, switch over to WIN_GL functions */ + if (_this->gl_config.profile_mask != SDL_GL_CONTEXT_PROFILE_ES) { +#if SDL_VIDEO_OPENGL_WGL + WIN_GLES_UnloadLibrary(_this); + _this->GL_LoadLibrary = WIN_GL_LoadLibrary; + _this->GL_GetProcAddress = WIN_GL_GetProcAddress; + _this->GL_UnloadLibrary = WIN_GL_UnloadLibrary; + _this->GL_CreateContext = WIN_GL_CreateContext; + _this->GL_MakeCurrent = WIN_GL_MakeCurrent; + _this->GL_SetSwapInterval = WIN_GL_SetSwapInterval; + _this->GL_GetSwapInterval = WIN_GL_GetSwapInterval; + _this->GL_SwapWindow = WIN_GL_SwapWindow; + _this->GL_DeleteContext = WIN_GL_DeleteContext; + return WIN_GL_LoadLibrary(_this, path); +#else + return SDL_SetError("SDL not configured with OpenGL/WGL support"); +#endif + } + + if (_this->egl_data == NULL) { + return SDL_EGL_LoadLibrary(_this, NULL, EGL_DEFAULT_DISPLAY); + } + + return 0; +} + +SDL_GLContext +WIN_GLES_CreateContext(_THIS, SDL_Window * window) +{ + SDL_GLContext context; + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + + if (_this->gl_config.profile_mask != SDL_GL_CONTEXT_PROFILE_ES) { + /* Switch to WGL based functions */ + WIN_GLES_UnloadLibrary(_this); + _this->GL_LoadLibrary = WIN_GL_LoadLibrary; + _this->GL_GetProcAddress = WIN_GL_GetProcAddress; + _this->GL_UnloadLibrary = WIN_GL_UnloadLibrary; + _this->GL_CreateContext = WIN_GL_CreateContext; + _this->GL_MakeCurrent = WIN_GL_MakeCurrent; + _this->GL_SetSwapInterval = WIN_GL_SetSwapInterval; + _this->GL_GetSwapInterval = WIN_GL_GetSwapInterval; + _this->GL_SwapWindow = WIN_GL_SwapWindow; + _this->GL_DeleteContext = WIN_GL_DeleteContext; + + if (WIN_GL_LoadLibrary(_this, NULL) != 0) { + return NULL; + } + + return WIN_GL_CreateContext(_this, window); + } + + context = SDL_EGL_CreateContext(_this, data->egl_surface); + return context; +} + +void +WIN_GLES_DeleteContext(_THIS, SDL_GLContext context) +{ + SDL_EGL_DeleteContext(_this, context); + WIN_GLES_UnloadLibrary(_this); +} + +SDL_EGL_SwapWindow_impl(WIN) +SDL_EGL_MakeCurrent_impl(WIN) + +int +WIN_GLES_SetupWindow(_THIS, SDL_Window * window) +{ + /* The current context is lost in here; save it and reset it. */ + SDL_WindowData *windowdata = (SDL_WindowData *) window->driverdata; + SDL_Window *current_win = SDL_GL_GetCurrentWindow(); + SDL_GLContext current_ctx = SDL_GL_GetCurrentContext(); + + + if (_this->egl_data == NULL) { + if (SDL_EGL_LoadLibrary(_this, NULL, EGL_DEFAULT_DISPLAY) < 0) { + return -1; + } + } + + /* Create the GLES window surface */ + windowdata->egl_surface = SDL_EGL_CreateSurface(_this, (NativeWindowType)windowdata->hwnd); + + if (windowdata->egl_surface == EGL_NO_SURFACE) { + return SDL_SetError("Could not create GLES window surface"); + } + + return WIN_GLES_MakeCurrent(_this, current_win, current_ctx); +} + +int +WIN_GLES_SetSwapInterval(_THIS, int interval) +{ + /* FIXME: This should call SDL_EGL_SetSwapInterval, but ANGLE has a bug that prevents this + * from working if we do (the window contents freeze and don't swap properly). So, we ignore + * the request for now. + */ + SDL_Log("WARNING: Ignoring SDL_GL_SetSwapInterval call due to ANGLE bug"); + return 0; +} + +#endif /* SDL_VIDEO_DRIVER_WINDOWS && SDL_VIDEO_OPENGL_EGL */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/windows/SDL_windowsopengles.h b/src/video/windows/SDL_windowsopengles.h new file mode 100644 index 0000000000..cdb1cad4aa --- /dev/null +++ b/src/video/windows/SDL_windowsopengles.h @@ -0,0 +1,51 @@ +/* +Simple DirectMedia Layer +Copyright (C) 1997-2013 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not +claim that you wrote the original software. If you use this software +in a product, an acknowledgment in the product documentation would be +appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be +misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. +*/ +#include "SDL_config.h" + +#ifndef _SDL_winopengles_h +#define _SDL_winopengles_h + +#if SDL_VIDEO_OPENGL_EGL + +#include "../SDL_sysvideo.h" +#include "../SDL_egl_c.h" + +/* OpenGLES functions */ +#define WIN_GLES_GetAttribute SDL_EGL_GetAttribute +#define WIN_GLES_GetProcAddress SDL_EGL_GetProcAddress +#define WIN_GLES_UnloadLibrary SDL_EGL_UnloadLibrary +#define WIN_GLES_GetSwapInterval SDL_EGL_GetSwapInterval +/* See the WIN_GLES_GetSwapInterval implementation to see why this is commented out */ +/*#define WIN_GLES_SetSwapInterval SDL_EGL_SetSwapInterval*/ +extern int WIN_GLES_SetSwapInterval(_THIS, int interval); + +extern int WIN_GLES_LoadLibrary(_THIS, const char *path); +extern SDL_GLContext WIN_GLES_CreateContext(_THIS, SDL_Window * window); +extern void WIN_GLES_SwapWindow(_THIS, SDL_Window * window); +extern int WIN_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); +extern void WIN_GLES_DeleteContext(_THIS, SDL_GLContext context); +extern int WIN_GLES_SetupWindow(_THIS, SDL_Window * window); + +#endif /* SDL_VIDEO_OPENGL_EGL */ + +#endif /* _SDL_winopengles_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/windows/SDL_windowsvideo.h b/src/video/windows/SDL_windowsvideo.h index ff2b4a2ac7..689f17708e 100644 --- a/src/video/windows/SDL_windowsvideo.h +++ b/src/video/windows/SDL_windowsvideo.h @@ -44,6 +44,7 @@ #include "SDL_windowsmodes.h" #include "SDL_windowsmouse.h" #include "SDL_windowsopengl.h" +#include "SDL_windowsopengles.h" #include "SDL_windowswindow.h" #include "SDL_events.h" #include "SDL_loadso.h" diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index c7055e46d1..990c0cb23d 100755 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -273,6 +273,32 @@ WIN_CreateWindow(_THIS, SDL_Window * window) DestroyWindow(hwnd); return -1; } + +#if SDL_VIDEO_OPENGL_WGL + /* We need to initialize the extensions before deciding how to create ES profiles */ + if (window->flags & SDL_WINDOW_OPENGL) { + WIN_GL_InitExtensions(_this); + } +#endif + +#if SDL_VIDEO_OPENGL_ES2 + if ((window->flags & SDL_WINDOW_OPENGL) && + _this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES +#if SDL_VIDEO_OPENGL_WGL + && (!_this->gl_data || !_this->gl_data->HAS_WGL_EXT_create_context_es2_profile) +#endif + ) { +#if SDL_VIDEO_OPENGL_EGL + if (WIN_GLES_SetupWindow(_this, window) < 0) { + WIN_DestroyWindow(_this, window); + return -1; + } +#else + return SDL_SetError("Could not create GLES window surface (no EGL support available)"); +#endif /* SDL_VIDEO_OPENGL_EGL */ + } else +#endif /* SDL_VIDEO_OPENGL_ES2 */ + #if SDL_VIDEO_OPENGL_WGL if (window->flags & SDL_WINDOW_OPENGL) { if (WIN_GL_SetupWindow(_this, window) < 0) { @@ -281,6 +307,7 @@ WIN_CreateWindow(_THIS, SDL_Window * window) } } #endif + return 0; } diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h index a4c035f53a..52837a17aa 100755 --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -23,6 +23,10 @@ #ifndef _SDL_windowswindow_h #define _SDL_windowswindow_h +#if SDL_VIDEO_OPENGL_EGL +#include "../SDL_egl_c.h" +#endif + typedef struct { SDL_Window *window; @@ -35,6 +39,9 @@ typedef struct WPARAM mouse_button_flags; BOOL expected_resize; struct SDL_VideoData *videodata; +#if SDL_VIDEO_OPENGL_EGL + EGLSurface egl_surface; +#endif } SDL_WindowData; extern int WIN_CreateWindow(_THIS, SDL_Window * window); diff --git a/src/video/x11/SDL_x11opengles.h b/src/video/x11/SDL_x11opengles.h index 978f91f3d4..ed2a551b7f 100644 --- a/src/video/x11/SDL_x11opengles.h +++ b/src/video/x11/SDL_x11opengles.h @@ -26,7 +26,7 @@ #if SDL_VIDEO_OPENGL_EGL #include "../SDL_sysvideo.h" -#include "../SDL_egl.h" +#include "../SDL_egl_c.h" typedef struct SDL_PrivateGLESData { diff --git a/test/configure b/test/configure index b55398de08..14fb4d34d9 100755 --- a/test/configure +++ b/test/configure @@ -3902,7 +3902,7 @@ if test x$have_opengles = xyes; then fi if test x$have_opengles2 = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGLES2" - GLES2LIB="$XPATH -lGLESv2" + #GLES2LIB="$XPATH -lGLESv2" fi if test x$have_opengl = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGL" diff --git a/test/configure.in b/test/configure.in index efc0d5dd60..a55e63df83 100644 --- a/test/configure.in +++ b/test/configure.in @@ -161,7 +161,7 @@ if test x$have_opengles = xyes; then fi if test x$have_opengles2 = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGLES2" - GLES2LIB="$XPATH -lGLESv2" + #GLES2LIB="$XPATH -lGLESv2" fi if test x$have_opengl = xyes; then CFLAGS="$CFLAGS -DHAVE_OPENGL" diff --git a/test/testgles2.c b/test/testgles2.c index f73fbdbe41..db729f0fd2 100644 --- a/test/testgles2.c +++ b/test/testgles2.c @@ -1,647 +1,694 @@ -/* - Copyright (r) 1997-2011 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely. -*/ -#include -#include -#include -#include - -#include "SDL_test_common.h" - -#if defined(__IPHONEOS__) || defined(__ANDROID__) -#define HAVE_OPENGLES2 -#endif - -#ifdef HAVE_OPENGLES2 - -#include "SDL_opengles2.h" - -static SDLTest_CommonState *state; -static SDL_GLContext *context = NULL; -static int depth = 16; - -/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ -static void -quit(int rc) -{ - int i; - - if (context != NULL) { - for (i = 0; i < state->num_windows; i++) { - if (context[i]) { - SDL_GL_DeleteContext(context[i]); - } - } - - SDL_free(context); - } - - SDLTest_CommonQuit(state); - exit(rc); -} - -#define GL_CHECK(x) \ - x; \ - { \ - GLenum glError = glGetError(); \ - if(glError != GL_NO_ERROR) { \ - fprintf(stderr, "glGetError() = %i (0x%.8x) at line %i\n", glError, glError, __LINE__); \ - quit(1); \ - } \ - } - -/* - * Simulates desktop's glRotatef. The matrix is returned in column-major - * order. - */ -static void -rotate_matrix(double angle, double x, double y, double z, float *r) -{ - double radians, c, s, c1, u[3], length; - int i, j; - - radians = (angle * M_PI) / 180.0; - - c = cos(radians); - s = sin(radians); - - c1 = 1.0 - cos(radians); - - length = sqrt(x * x + y * y + z * z); - - u[0] = x / length; - u[1] = y / length; - u[2] = z / length; - - for (i = 0; i < 16; i++) { - r[i] = 0.0; - } - - r[15] = 1.0; - - for (i = 0; i < 3; i++) { - r[i * 4 + (i + 1) % 3] = u[(i + 2) % 3] * s; - r[i * 4 + (i + 2) % 3] = -u[(i + 1) % 3] * s; - } - - for (i = 0; i < 3; i++) { - for (j = 0; j < 3; j++) { - r[i * 4 + j] += c1 * u[i] * u[j] + (i == j ? c : 0.0); - } - } -} - -/* - * Simulates gluPerspectiveMatrix - */ -static void -perspective_matrix(double fovy, double aspect, double znear, double zfar, float *r) -{ - int i; - double f; - - f = 1.0/tan(fovy * 0.5); - - for (i = 0; i < 16; i++) { - r[i] = 0.0; - } - - r[0] = f / aspect; - r[5] = f; - r[10] = (znear + zfar) / (znear - zfar); - r[11] = -1.0; - r[14] = (2.0 * znear * zfar) / (znear - zfar); - r[15] = 0.0; -} - -/* - * Multiplies lhs by rhs and writes out to r. All matrices are 4x4 and column - * major. In-place multiplication is supported. - */ -static void -multiply_matrix(float *lhs, float *rhs, float *r) -{ - int i, j, k; - float tmp[16]; - - for (i = 0; i < 4; i++) { - for (j = 0; j < 4; j++) { - tmp[j * 4 + i] = 0.0; - - for (k = 0; k < 4; k++) { - tmp[j * 4 + i] += lhs[k * 4 + i] * rhs[j * 4 + k]; - } - } - } - - for (i = 0; i < 16; i++) { - r[i] = tmp[i]; - } -} - -/* - * Create shader, load in source, compile, dump debug as necessary. - * - * shader: Pointer to return created shader ID. - * source: Passed-in shader source code. - * shader_type: Passed to GL, e.g. GL_VERTEX_SHADER. - */ -void -process_shader(GLuint *shader, const char * source, GLint shader_type) -{ - GLint status; - const char *shaders[1] = { NULL }; - - /* Create shader and load into GL. */ - *shader = GL_CHECK(glCreateShader(shader_type)); - - shaders[0] = source; - - GL_CHECK(glShaderSource(*shader, 1, shaders, NULL)); - - /* Clean up shader source. */ - shaders[0] = NULL; - - /* Try compiling the shader. */ - GL_CHECK(glCompileShader(*shader)); - GL_CHECK(glGetShaderiv(*shader, GL_COMPILE_STATUS, &status)); - - // Dump debug info (source and log) if compilation failed. - if(status != GL_TRUE) { - quit(-1); - } -} - -/* 3D data. Vertex range -0.5..0.5 in all axes. -* Z -0.5 is near, 0.5 is far. */ -const float _vertices[] = -{ - /* Front face. */ - /* Bottom left */ - -0.5, 0.5, -0.5, - 0.5, -0.5, -0.5, - -0.5, -0.5, -0.5, - /* Top right */ - -0.5, 0.5, -0.5, - 0.5, 0.5, -0.5, - 0.5, -0.5, -0.5, - /* Left face */ - /* Bottom left */ - -0.5, 0.5, 0.5, - -0.5, -0.5, -0.5, - -0.5, -0.5, 0.5, - /* Top right */ - -0.5, 0.5, 0.5, - -0.5, 0.5, -0.5, - -0.5, -0.5, -0.5, - /* Top face */ - /* Bottom left */ - -0.5, 0.5, 0.5, - 0.5, 0.5, -0.5, - -0.5, 0.5, -0.5, - /* Top right */ - -0.5, 0.5, 0.5, - 0.5, 0.5, 0.5, - 0.5, 0.5, -0.5, - /* Right face */ - /* Bottom left */ - 0.5, 0.5, -0.5, - 0.5, -0.5, 0.5, - 0.5, -0.5, -0.5, - /* Top right */ - 0.5, 0.5, -0.5, - 0.5, 0.5, 0.5, - 0.5, -0.5, 0.5, - /* Back face */ - /* Bottom left */ - 0.5, 0.5, 0.5, - -0.5, -0.5, 0.5, - 0.5, -0.5, 0.5, - /* Top right */ - 0.5, 0.5, 0.5, - -0.5, 0.5, 0.5, - -0.5, -0.5, 0.5, - /* Bottom face */ - /* Bottom left */ - -0.5, -0.5, -0.5, - 0.5, -0.5, 0.5, - -0.5, -0.5, 0.5, - /* Top right */ - -0.5, -0.5, -0.5, - 0.5, -0.5, -0.5, - 0.5, -0.5, 0.5, -}; - -const float _colors[] = -{ - /* Front face */ - /* Bottom left */ - 1.0, 0.0, 0.0, /* red */ - 0.0, 0.0, 1.0, /* blue */ - 0.0, 1.0, 0.0, /* green */ - /* Top right */ - 1.0, 0.0, 0.0, /* red */ - 1.0, 1.0, 0.0, /* yellow */ - 0.0, 0.0, 1.0, /* blue */ - /* Left face */ - /* Bottom left */ - 1.0, 1.0, 1.0, /* white */ - 0.0, 1.0, 0.0, /* green */ - 0.0, 1.0, 1.0, /* cyan */ - /* Top right */ - 1.0, 1.0, 1.0, /* white */ - 1.0, 0.0, 0.0, /* red */ - 0.0, 1.0, 0.0, /* green */ - /* Top face */ - /* Bottom left */ - 1.0, 1.0, 1.0, /* white */ - 1.0, 1.0, 0.0, /* yellow */ - 1.0, 0.0, 0.0, /* red */ - /* Top right */ - 1.0, 1.0, 1.0, /* white */ - 0.0, 0.0, 0.0, /* black */ - 1.0, 1.0, 0.0, /* yellow */ - /* Right face */ - /* Bottom left */ - 1.0, 1.0, 0.0, /* yellow */ - 1.0, 0.0, 1.0, /* magenta */ - 0.0, 0.0, 1.0, /* blue */ - /* Top right */ - 1.0, 1.0, 0.0, /* yellow */ - 0.0, 0.0, 0.0, /* black */ - 1.0, 0.0, 1.0, /* magenta */ - /* Back face */ - /* Bottom left */ - 0.0, 0.0, 0.0, /* black */ - 0.0, 1.0, 1.0, /* cyan */ - 1.0, 0.0, 1.0, /* magenta */ - /* Top right */ - 0.0, 0.0, 0.0, /* black */ - 1.0, 1.0, 1.0, /* white */ - 0.0, 1.0, 1.0, /* cyan */ - /* Bottom face */ - /* Bottom left */ - 0.0, 1.0, 0.0, /* green */ - 1.0, 0.0, 1.0, /* magenta */ - 0.0, 1.0, 1.0, /* cyan */ - /* Top right */ - 0.0, 1.0, 0.0, /* green */ - 0.0, 0.0, 1.0, /* blue */ - 1.0, 0.0, 1.0, /* magenta */ -}; - -const char* _shader_vert_src = -" attribute vec4 av4position; " -" attribute vec3 av3color; " -" uniform mat4 mvp; " -" varying vec3 vv3color; " -" void main() { " -" vv3color = av3color; " -" gl_Position = mvp * av4position; " -" } "; - -const char* _shader_frag_src = -" precision lowp float; " -" varying vec3 vv3color; " -" void main() { " -" gl_FragColor = vec4(vv3color, 1.0); " -" } "; - -typedef struct shader_data -{ - GLuint shader_program, shader_frag, shader_vert; - - GLint attr_position; - GLint attr_color, attr_mvp; - - int angle_x, angle_y, angle_z; - -} shader_data; - -static void -Render(unsigned int width, unsigned int height, shader_data* data) -{ - float matrix_rotate[16], matrix_modelview[16], matrix_perspective[16], matrix_mvp[16]; - - /* - * Do some rotation with Euler angles. It is not a fixed axis as - * quaterions would be, but the effect is cool. - */ - rotate_matrix(data->angle_x, 1.0, 0.0, 0.0, matrix_modelview); - rotate_matrix(data->angle_y, 0.0, 1.0, 0.0, matrix_rotate); - - multiply_matrix(matrix_rotate, matrix_modelview, matrix_modelview); - - rotate_matrix(data->angle_z, 0.0, 1.0, 0.0, matrix_rotate); - - multiply_matrix(matrix_rotate, matrix_modelview, matrix_modelview); - - /* Pull the camera back from the cube */ - matrix_modelview[14] -= 2.5; - - perspective_matrix(45.0, (double)width/(double)height, 0.01, 100.0, matrix_perspective); - multiply_matrix(matrix_perspective, matrix_modelview, matrix_mvp); - - GL_CHECK(glUniformMatrix4fv(data->attr_mvp, 1, GL_FALSE, matrix_mvp)); - - data->angle_x += 3; - data->angle_y += 2; - data->angle_z += 1; - - if(data->angle_x >= 360) data->angle_x -= 360; - if(data->angle_x < 0) data->angle_x += 360; - if(data->angle_y >= 360) data->angle_y -= 360; - if(data->angle_y < 0) data->angle_y += 360; - if(data->angle_z >= 360) data->angle_z -= 360; - if(data->angle_z < 0) data->angle_z += 360; - - GL_CHECK(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)); - GL_CHECK(glDrawArrays(GL_TRIANGLES, 0, 36)); -} - -int -main(int argc, char *argv[]) -{ - int fsaa, accel; - int value; - int i, done; - SDL_DisplayMode mode; - SDL_Event event; - Uint32 then, now, frames; - int status; - shader_data *datas, *data; - - /* Initialize parameters */ - fsaa = 0; - accel = 0; - - /* Initialize test framework */ - state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); - if (!state) { - return 1; - } - for (i = 1; i < argc;) { - int consumed; - - consumed = SDLTest_CommonArg(state, i); - if (consumed == 0) { - if (SDL_strcasecmp(argv[i], "--fsaa") == 0) { - ++fsaa; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--accel") == 0) { - ++accel; - consumed = 1; - } else if (SDL_strcasecmp(argv[i], "--zdepth") == 0) { - i++; - if (!argv[i]) { - consumed = -1; - } else { - depth = SDL_atoi(argv[i]); - consumed = 1; - } - } else { - consumed = -1; - } - } - if (consumed < 0) { - fprintf(stderr, "Usage: %s %s [--fsaa] [--accel] [--zdepth %%d]\n", argv[0], - SDLTest_CommonUsage(state)); - quit(1); - } - i += consumed; - } - - /* Set OpenGL parameters */ - state->window_flags |= SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS; - state->gl_red_size = 5; - state->gl_green_size = 5; - state->gl_blue_size = 5; - state->gl_depth_size = depth; - state->gl_major_version = 2; - state->gl_minor_version = 0; - state->gl_profile_mask = SDL_GL_CONTEXT_PROFILE_ES; - - if (fsaa) { - state->gl_multisamplebuffers=1; - state->gl_multisamplesamples=fsaa; - } - if (accel) { - state->gl_accelerated=1; - } - if (!SDLTest_CommonInit(state)) { - return; - quit(2); - } - - context = SDL_calloc(state->num_windows, sizeof(context)); - if (context == NULL) { - fprintf(stderr, "Out of memory!\n"); - quit(2); - } - - /* Create OpenGL ES contexts */ - for (i = 0; i < state->num_windows; i++) { - context[i] = SDL_GL_CreateContext(state->windows[i]); - if (!context[i]) { - fprintf(stderr, "SDL_GL_CreateContext(): %s\n", SDL_GetError()); - quit(2); - } - } - - if (state->render_flags & SDL_RENDERER_PRESENTVSYNC) { - SDL_GL_SetSwapInterval(1); - } else { - SDL_GL_SetSwapInterval(0); - } - - SDL_GetCurrentDisplayMode(0, &mode); - printf("Screen bpp: %d\n", SDL_BITSPERPIXEL(mode.format)); - printf("\n"); - printf("Vendor : %s\n", glGetString(GL_VENDOR)); - printf("Renderer : %s\n", glGetString(GL_RENDERER)); - printf("Version : %s\n", glGetString(GL_VERSION)); - printf("Extensions : %s\n", glGetString(GL_EXTENSIONS)); - printf("\n"); - - status = SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); - if (!status) { - printf("SDL_GL_RED_SIZE: requested %d, got %d\n", 5, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_RED_SIZE: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &value); - if (!status) { - printf("SDL_GL_GREEN_SIZE: requested %d, got %d\n", 5, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_GREEN_SIZE: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &value); - if (!status) { - printf("SDL_GL_BLUE_SIZE: requested %d, got %d\n", 5, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_BLUE_SIZE: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &value); - if (!status) { - printf("SDL_GL_DEPTH_SIZE: requested %d, got %d\n", depth, value); - } else { - fprintf(stderr, "Failed to get SDL_GL_DEPTH_SIZE: %s\n", - SDL_GetError()); - } - if (fsaa) { - status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &value); - if (!status) { - printf("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value); - } else { - fprintf(stderr, "Failed to get SDL_GL_MULTISAMPLEBUFFERS: %s\n", - SDL_GetError()); - } - status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &value); - if (!status) { - printf("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, - value); - } else { - fprintf(stderr, "Failed to get SDL_GL_MULTISAMPLESAMPLES: %s\n", - SDL_GetError()); - } - } - if (accel) { - status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); - if (!status) { - printf("SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value); - } else { - fprintf(stderr, "Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n", - SDL_GetError()); - } - } - - datas = SDL_calloc(state->num_windows, sizeof(shader_data)); - - /* Set rendering settings for each context */ - for (i = 0; i < state->num_windows; ++i) { - - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - - /* Continue for next window */ - continue; - } - glViewport(0, 0, state->window_w, state->window_h); - - data = &datas[i]; - data->angle_x = 0; data->angle_y = 0; data->angle_z = 0; - - /* Shader Initialization */ - process_shader(&data->shader_vert, _shader_vert_src, GL_VERTEX_SHADER); - process_shader(&data->shader_frag, _shader_frag_src, GL_FRAGMENT_SHADER); - - /* Create shader_program (ready to attach shaders) */ - data->shader_program = GL_CHECK(glCreateProgram()); - - /* Attach shaders and link shader_program */ - GL_CHECK(glAttachShader(data->shader_program, data->shader_vert)); - GL_CHECK(glAttachShader(data->shader_program, data->shader_frag)); - GL_CHECK(glLinkProgram(data->shader_program)); - - /* Get attribute locations of non-fixed attributes like color and texture coordinates. */ - data->attr_position = GL_CHECK(glGetAttribLocation(data->shader_program, "av4position")); - data->attr_color = GL_CHECK(glGetAttribLocation(data->shader_program, "av3color")); - - /* Get uniform locations */ - data->attr_mvp = GL_CHECK(glGetUniformLocation(data->shader_program, "mvp")); - - GL_CHECK(glUseProgram(data->shader_program)); - - /* Enable attributes for position, color and texture coordinates etc. */ - GL_CHECK(glEnableVertexAttribArray(data->attr_position)); - GL_CHECK(glEnableVertexAttribArray(data->attr_color)); - - /* Populate attributes for position, color and texture coordinates etc. */ - GL_CHECK(glVertexAttribPointer(data->attr_position, 3, GL_FLOAT, GL_FALSE, 0, _vertices)); - GL_CHECK(glVertexAttribPointer(data->attr_color, 3, GL_FLOAT, GL_FALSE, 0, _colors)); - - GL_CHECK(glEnable(GL_CULL_FACE)); - GL_CHECK(glEnable(GL_DEPTH_TEST)); - } - - /* Main render loop */ - frames = 0; - then = SDL_GetTicks(); - done = 0; - while (!done) { - /* Check for events */ - ++frames; - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_WINDOWEVENT: - switch (event.window.event) { - case SDL_WINDOWEVENT_RESIZED: - for (i = 0; i < state->num_windows; ++i) { - if (event.window.windowID == SDL_GetWindowID(state->windows[i])) { - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - break; - } - /* Change view port to the new window dimensions */ - glViewport(0, 0, event.window.data1, event.window.data2); - /* Update window content */ - Render(event.window.data1, event.window.data2, &datas[i]); - SDL_GL_SwapWindow(state->windows[i]); - break; - } - } - break; - } - } - SDLTest_CommonEvent(state, &event, &done); - } - for (i = 0; i < state->num_windows; ++i) { - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - printf("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - - /* Continue for next window */ - continue; - } - Render(state->window_w, state->window_h, &datas[i]); - SDL_GL_SwapWindow(state->windows[i]); - } - } - - /* Print out some timing information */ - now = SDL_GetTicks(); - if (now > then) { - printf("%2.2f frames per second\n", - ((double) frames * 1000) / (now - then)); - } -#if !defined(__ANDROID__) - quit(0); -#endif - return 0; -} - -#else /* HAVE_OPENGLES2 */ - -int -main(int argc, char *argv[]) -{ - printf("No OpenGL ES support on this system\n"); - return 1; -} - -#endif /* HAVE_OPENGLES2 */ - -/* vi: set ts=4 sw=4 expandtab: */ +/* + Copyright (r) 1997-2011 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ +#include +#include +#include +#include + +#include "SDL_test_common.h" + +#if defined(__IPHONEOS__) || defined(__ANDROID__) +#define HAVE_OPENGLES2 +#endif + +#ifdef HAVE_OPENGLES2 + +#include "SDL_opengles2.h" + +typedef struct GLES2_Context +{ +#define SDL_PROC(ret,func,params) ret (APIENTRY *func) params; +#include "../src/render/opengles2/SDL_gles2funcs.h" +#undef SDL_PROC +} GLES2_Context; + + +static SDLTest_CommonState *state; +static SDL_GLContext *context = NULL; +static int depth = 16; +static GLES2_Context ctx; + +static int LoadContext(GLES2_Context * data) +{ +#if SDL_VIDEO_DRIVER_UIKIT +#define __SDL_NOGETPROCADDR__ +#elif SDL_VIDEO_DRIVER_ANDROID +#define __SDL_NOGETPROCADDR__ +#elif SDL_VIDEO_DRIVER_PANDORA +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined __SDL_NOGETPROCADDR__ +#define SDL_PROC(ret,func,params) data->func=func; +#else +#define SDL_PROC(ret,func,params) \ + do { \ + data->func = SDL_GL_GetProcAddress(#func); \ + if ( ! data->func ) { \ + return SDL_SetError("Couldn't load GLES2 function %s: %s\n", #func, SDL_GetError()); \ + } \ + } while ( 0 ); +#endif /* _SDL_NOGETPROCADDR_ */ + +#include "../src/render/opengles2/SDL_gles2funcs.h" +#undef SDL_PROC + return 0; +} + +/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ +static void +quit(int rc) +{ + int i; + + if (context != NULL) { + for (i = 0; i < state->num_windows; i++) { + if (context[i]) { + SDL_GL_DeleteContext(context[i]); + } + } + + SDL_free(context); + } + + SDLTest_CommonQuit(state); + exit(rc); +} + +#define GL_CHECK(x) \ + x; \ + { \ + GLenum glError = ctx.glGetError(); \ + if(glError != GL_NO_ERROR) { \ + SDL_Log("glGetError() = %i (0x%.8x) at line %i\n", glError, glError, __LINE__); \ + quit(1); \ + } \ + } + +/* + * Simulates desktop's glRotatef. The matrix is returned in column-major + * order. + */ +static void +rotate_matrix(double angle, double x, double y, double z, float *r) +{ + double radians, c, s, c1, u[3], length; + int i, j; + + radians = (angle * M_PI) / 180.0; + + c = cos(radians); + s = sin(radians); + + c1 = 1.0 - cos(radians); + + length = sqrt(x * x + y * y + z * z); + + u[0] = x / length; + u[1] = y / length; + u[2] = z / length; + + for (i = 0; i < 16; i++) { + r[i] = 0.0; + } + + r[15] = 1.0; + + for (i = 0; i < 3; i++) { + r[i * 4 + (i + 1) % 3] = u[(i + 2) % 3] * s; + r[i * 4 + (i + 2) % 3] = -u[(i + 1) % 3] * s; + } + + for (i = 0; i < 3; i++) { + for (j = 0; j < 3; j++) { + r[i * 4 + j] += c1 * u[i] * u[j] + (i == j ? c : 0.0); + } + } +} + +/* + * Simulates gluPerspectiveMatrix + */ +static void +perspective_matrix(double fovy, double aspect, double znear, double zfar, float *r) +{ + int i; + double f; + + f = 1.0/tan(fovy * 0.5); + + for (i = 0; i < 16; i++) { + r[i] = 0.0; + } + + r[0] = f / aspect; + r[5] = f; + r[10] = (znear + zfar) / (znear - zfar); + r[11] = -1.0; + r[14] = (2.0 * znear * zfar) / (znear - zfar); + r[15] = 0.0; +} + +/* + * Multiplies lhs by rhs and writes out to r. All matrices are 4x4 and column + * major. In-place multiplication is supported. + */ +static void +multiply_matrix(float *lhs, float *rhs, float *r) +{ + int i, j, k; + float tmp[16]; + + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + tmp[j * 4 + i] = 0.0; + + for (k = 0; k < 4; k++) { + tmp[j * 4 + i] += lhs[k * 4 + i] * rhs[j * 4 + k]; + } + } + } + + for (i = 0; i < 16; i++) { + r[i] = tmp[i]; + } +} + +/* + * Create shader, load in source, compile, dump debug as necessary. + * + * shader: Pointer to return created shader ID. + * source: Passed-in shader source code. + * shader_type: Passed to GL, e.g. GL_VERTEX_SHADER. + */ +void +process_shader(GLuint *shader, const char * source, GLint shader_type) +{ + GLint status = GL_FALSE; + const char *shaders[1] = { NULL }; + + /* Create shader and load into GL. */ + *shader = GL_CHECK(ctx.glCreateShader(shader_type)); + + shaders[0] = source; + + GL_CHECK(ctx.glShaderSource(*shader, 1, shaders, NULL)); + + /* Clean up shader source. */ + shaders[0] = NULL; + + /* Try compiling the shader. */ + GL_CHECK(ctx.glCompileShader(*shader)); + GL_CHECK(ctx.glGetShaderiv(*shader, GL_COMPILE_STATUS, &status)); + + // Dump debug info (source and log) if compilation failed. + if(status != GL_TRUE) { + SDL_Log("Shader compilation failed"); + quit(-1); + } +} + +/* 3D data. Vertex range -0.5..0.5 in all axes. +* Z -0.5 is near, 0.5 is far. */ +const float _vertices[] = +{ + /* Front face. */ + /* Bottom left */ + -0.5, 0.5, -0.5, + 0.5, -0.5, -0.5, + -0.5, -0.5, -0.5, + /* Top right */ + -0.5, 0.5, -0.5, + 0.5, 0.5, -0.5, + 0.5, -0.5, -0.5, + /* Left face */ + /* Bottom left */ + -0.5, 0.5, 0.5, + -0.5, -0.5, -0.5, + -0.5, -0.5, 0.5, + /* Top right */ + -0.5, 0.5, 0.5, + -0.5, 0.5, -0.5, + -0.5, -0.5, -0.5, + /* Top face */ + /* Bottom left */ + -0.5, 0.5, 0.5, + 0.5, 0.5, -0.5, + -0.5, 0.5, -0.5, + /* Top right */ + -0.5, 0.5, 0.5, + 0.5, 0.5, 0.5, + 0.5, 0.5, -0.5, + /* Right face */ + /* Bottom left */ + 0.5, 0.5, -0.5, + 0.5, -0.5, 0.5, + 0.5, -0.5, -0.5, + /* Top right */ + 0.5, 0.5, -0.5, + 0.5, 0.5, 0.5, + 0.5, -0.5, 0.5, + /* Back face */ + /* Bottom left */ + 0.5, 0.5, 0.5, + -0.5, -0.5, 0.5, + 0.5, -0.5, 0.5, + /* Top right */ + 0.5, 0.5, 0.5, + -0.5, 0.5, 0.5, + -0.5, -0.5, 0.5, + /* Bottom face */ + /* Bottom left */ + -0.5, -0.5, -0.5, + 0.5, -0.5, 0.5, + -0.5, -0.5, 0.5, + /* Top right */ + -0.5, -0.5, -0.5, + 0.5, -0.5, -0.5, + 0.5, -0.5, 0.5, +}; + +const float _colors[] = +{ + /* Front face */ + /* Bottom left */ + 1.0, 0.0, 0.0, /* red */ + 0.0, 0.0, 1.0, /* blue */ + 0.0, 1.0, 0.0, /* green */ + /* Top right */ + 1.0, 0.0, 0.0, /* red */ + 1.0, 1.0, 0.0, /* yellow */ + 0.0, 0.0, 1.0, /* blue */ + /* Left face */ + /* Bottom left */ + 1.0, 1.0, 1.0, /* white */ + 0.0, 1.0, 0.0, /* green */ + 0.0, 1.0, 1.0, /* cyan */ + /* Top right */ + 1.0, 1.0, 1.0, /* white */ + 1.0, 0.0, 0.0, /* red */ + 0.0, 1.0, 0.0, /* green */ + /* Top face */ + /* Bottom left */ + 1.0, 1.0, 1.0, /* white */ + 1.0, 1.0, 0.0, /* yellow */ + 1.0, 0.0, 0.0, /* red */ + /* Top right */ + 1.0, 1.0, 1.0, /* white */ + 0.0, 0.0, 0.0, /* black */ + 1.0, 1.0, 0.0, /* yellow */ + /* Right face */ + /* Bottom left */ + 1.0, 1.0, 0.0, /* yellow */ + 1.0, 0.0, 1.0, /* magenta */ + 0.0, 0.0, 1.0, /* blue */ + /* Top right */ + 1.0, 1.0, 0.0, /* yellow */ + 0.0, 0.0, 0.0, /* black */ + 1.0, 0.0, 1.0, /* magenta */ + /* Back face */ + /* Bottom left */ + 0.0, 0.0, 0.0, /* black */ + 0.0, 1.0, 1.0, /* cyan */ + 1.0, 0.0, 1.0, /* magenta */ + /* Top right */ + 0.0, 0.0, 0.0, /* black */ + 1.0, 1.0, 1.0, /* white */ + 0.0, 1.0, 1.0, /* cyan */ + /* Bottom face */ + /* Bottom left */ + 0.0, 1.0, 0.0, /* green */ + 1.0, 0.0, 1.0, /* magenta */ + 0.0, 1.0, 1.0, /* cyan */ + /* Top right */ + 0.0, 1.0, 0.0, /* green */ + 0.0, 0.0, 1.0, /* blue */ + 1.0, 0.0, 1.0, /* magenta */ +}; + +const char* _shader_vert_src = +" attribute vec4 av4position; " +" attribute vec3 av3color; " +" uniform mat4 mvp; " +" varying vec3 vv3color; " +" void main() { " +" vv3color = av3color; " +" gl_Position = mvp * av4position; " +" } "; + +const char* _shader_frag_src = +" precision lowp float; " +" varying vec3 vv3color; " +" void main() { " +" gl_FragColor = vec4(vv3color, 1.0); " +" } "; + +typedef struct shader_data +{ + GLuint shader_program, shader_frag, shader_vert; + + GLint attr_position; + GLint attr_color, attr_mvp; + + int angle_x, angle_y, angle_z; + +} shader_data; + +static void +Render(unsigned int width, unsigned int height, shader_data* data) +{ + float matrix_rotate[16], matrix_modelview[16], matrix_perspective[16], matrix_mvp[16]; + + /* + * Do some rotation with Euler angles. It is not a fixed axis as + * quaterions would be, but the effect is cool. + */ + rotate_matrix(data->angle_x, 1.0, 0.0, 0.0, matrix_modelview); + rotate_matrix(data->angle_y, 0.0, 1.0, 0.0, matrix_rotate); + + multiply_matrix(matrix_rotate, matrix_modelview, matrix_modelview); + + rotate_matrix(data->angle_z, 0.0, 1.0, 0.0, matrix_rotate); + + multiply_matrix(matrix_rotate, matrix_modelview, matrix_modelview); + + /* Pull the camera back from the cube */ + matrix_modelview[14] -= 2.5; + + perspective_matrix(45.0, (double)width/(double)height, 0.01, 100.0, matrix_perspective); + multiply_matrix(matrix_perspective, matrix_modelview, matrix_mvp); + + GL_CHECK(ctx.glUniformMatrix4fv(data->attr_mvp, 1, GL_FALSE, matrix_mvp)); + + data->angle_x += 3; + data->angle_y += 2; + data->angle_z += 1; + + if(data->angle_x >= 360) data->angle_x -= 360; + if(data->angle_x < 0) data->angle_x += 360; + if(data->angle_y >= 360) data->angle_y -= 360; + if(data->angle_y < 0) data->angle_y += 360; + if(data->angle_z >= 360) data->angle_z -= 360; + if(data->angle_z < 0) data->angle_z += 360; + + GL_CHECK(ctx.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)); + GL_CHECK(ctx.glDrawArrays(GL_TRIANGLES, 0, 36)); +} + +int +main(int argc, char *argv[]) +{ + int fsaa, accel; + int value; + int i, done; + SDL_DisplayMode mode; + SDL_Event event; + Uint32 then, now, frames; + int status; + shader_data *datas, *data; + + /* Initialize parameters */ + fsaa = 0; + accel = 0; + + /* Initialize test framework */ + state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO); + if (!state) { + return 1; + } + for (i = 1; i < argc;) { + int consumed; + + consumed = SDLTest_CommonArg(state, i); + if (consumed == 0) { + if (SDL_strcasecmp(argv[i], "--fsaa") == 0) { + ++fsaa; + consumed = 1; + } else if (SDL_strcasecmp(argv[i], "--accel") == 0) { + ++accel; + consumed = 1; + } else if (SDL_strcasecmp(argv[i], "--zdepth") == 0) { + i++; + if (!argv[i]) { + consumed = -1; + } else { + depth = SDL_atoi(argv[i]); + consumed = 1; + } + } else { + consumed = -1; + } + } + if (consumed < 0) { + SDL_Log ("Usage: %s %s [--fsaa] [--accel] [--zdepth %%d]\n", argv[0], + SDLTest_CommonUsage(state)); + quit(1); + } + i += consumed; + } + + /* Set OpenGL parameters */ + state->window_flags |= SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS; + state->gl_red_size = 5; + state->gl_green_size = 5; + state->gl_blue_size = 5; + state->gl_depth_size = depth; + state->gl_major_version = 2; + state->gl_minor_version = 0; + state->gl_profile_mask = SDL_GL_CONTEXT_PROFILE_ES; + + if (fsaa) { + state->gl_multisamplebuffers=1; + state->gl_multisamplesamples=fsaa; + } + if (accel) { + state->gl_accelerated=1; + } + if (!SDLTest_CommonInit(state)) { + quit(2); + return 0; + } + + context = SDL_calloc(state->num_windows, sizeof(context)); + if (context == NULL) { + SDL_Log("Out of memory!\n"); + quit(2); + } + + /* Create OpenGL ES contexts */ + for (i = 0; i < state->num_windows; i++) { + context[i] = SDL_GL_CreateContext(state->windows[i]); + if (!context[i]) { + SDL_Log("SDL_GL_CreateContext(): %s\n", SDL_GetError()); + quit(2); + } + } + + /* Important: call this *after* creating the context */ + if (LoadContext(&ctx) < 0) { + SDL_Log("Could not load GLES2 functions\n"); + quit(2); + return 0; + } + + + + if (state->render_flags & SDL_RENDERER_PRESENTVSYNC) { + SDL_GL_SetSwapInterval(1); + } else { + SDL_GL_SetSwapInterval(0); + } + + SDL_GetCurrentDisplayMode(0, &mode); + SDL_Log("Screen bpp: %d\n", SDL_BITSPERPIXEL(mode.format)); + SDL_Log("\n"); + SDL_Log("Vendor : %s\n", ctx.glGetString(GL_VENDOR)); + SDL_Log("Renderer : %s\n", ctx.glGetString(GL_RENDERER)); + SDL_Log("Version : %s\n", ctx.glGetString(GL_VERSION)); + SDL_Log("Extensions : %s\n", ctx.glGetString(GL_EXTENSIONS)); + SDL_Log("\n"); + + status = SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); + if (!status) { + SDL_Log("SDL_GL_RED_SIZE: requested %d, got %d\n", 5, value); + } else { + SDL_Log( "Failed to get SDL_GL_RED_SIZE: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_GREEN_SIZE, &value); + if (!status) { + SDL_Log("SDL_GL_GREEN_SIZE: requested %d, got %d\n", 5, value); + } else { + SDL_Log( "Failed to get SDL_GL_GREEN_SIZE: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_BLUE_SIZE, &value); + if (!status) { + SDL_Log("SDL_GL_BLUE_SIZE: requested %d, got %d\n", 5, value); + } else { + SDL_Log( "Failed to get SDL_GL_BLUE_SIZE: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_DEPTH_SIZE, &value); + if (!status) { + SDL_Log("SDL_GL_DEPTH_SIZE: requested %d, got %d\n", depth, value); + } else { + SDL_Log( "Failed to get SDL_GL_DEPTH_SIZE: %s\n", + SDL_GetError()); + } + if (fsaa) { + status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLEBUFFERS, &value); + if (!status) { + SDL_Log("SDL_GL_MULTISAMPLEBUFFERS: requested 1, got %d\n", value); + } else { + SDL_Log( "Failed to get SDL_GL_MULTISAMPLEBUFFERS: %s\n", + SDL_GetError()); + } + status = SDL_GL_GetAttribute(SDL_GL_MULTISAMPLESAMPLES, &value); + if (!status) { + SDL_Log("SDL_GL_MULTISAMPLESAMPLES: requested %d, got %d\n", fsaa, + value); + } else { + SDL_Log( "Failed to get SDL_GL_MULTISAMPLESAMPLES: %s\n", + SDL_GetError()); + } + } + if (accel) { + status = SDL_GL_GetAttribute(SDL_GL_ACCELERATED_VISUAL, &value); + if (!status) { + SDL_Log("SDL_GL_ACCELERATED_VISUAL: requested 1, got %d\n", value); + } else { + SDL_Log( "Failed to get SDL_GL_ACCELERATED_VISUAL: %s\n", + SDL_GetError()); + } + } + + datas = SDL_calloc(state->num_windows, sizeof(shader_data)); + + /* Set rendering settings for each context */ + for (i = 0; i < state->num_windows; ++i) { + + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + SDL_Log("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + + /* Continue for next window */ + continue; + } + ctx.glViewport(0, 0, state->window_w, state->window_h); + + data = &datas[i]; + data->angle_x = 0; data->angle_y = 0; data->angle_z = 0; + + /* Shader Initialization */ + process_shader(&data->shader_vert, _shader_vert_src, GL_VERTEX_SHADER); + process_shader(&data->shader_frag, _shader_frag_src, GL_FRAGMENT_SHADER); + + /* Create shader_program (ready to attach shaders) */ + data->shader_program = GL_CHECK(ctx.glCreateProgram()); + + /* Attach shaders and link shader_program */ + GL_CHECK(ctx.glAttachShader(data->shader_program, data->shader_vert)); + GL_CHECK(ctx.glAttachShader(data->shader_program, data->shader_frag)); + GL_CHECK(ctx.glLinkProgram(data->shader_program)); + + /* Get attribute locations of non-fixed attributes like color and texture coordinates. */ + data->attr_position = GL_CHECK(ctx.glGetAttribLocation(data->shader_program, "av4position")); + data->attr_color = GL_CHECK(ctx.glGetAttribLocation(data->shader_program, "av3color")); + + /* Get uniform locations */ + data->attr_mvp = GL_CHECK(ctx.glGetUniformLocation(data->shader_program, "mvp")); + + GL_CHECK(ctx.glUseProgram(data->shader_program)); + + /* Enable attributes for position, color and texture coordinates etc. */ + GL_CHECK(ctx.glEnableVertexAttribArray(data->attr_position)); + GL_CHECK(ctx.glEnableVertexAttribArray(data->attr_color)); + + /* Populate attributes for position, color and texture coordinates etc. */ + GL_CHECK(ctx.glVertexAttribPointer(data->attr_position, 3, GL_FLOAT, GL_FALSE, 0, _vertices)); + GL_CHECK(ctx.glVertexAttribPointer(data->attr_color, 3, GL_FLOAT, GL_FALSE, 0, _colors)); + + GL_CHECK(ctx.glEnable(GL_CULL_FACE)); + GL_CHECK(ctx.glEnable(GL_DEPTH_TEST)); + } + + /* Main render loop */ + frames = 0; + then = SDL_GetTicks(); + done = 0; + while (!done) { + /* Check for events */ + ++frames; + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_WINDOWEVENT: + switch (event.window.event) { + case SDL_WINDOWEVENT_RESIZED: + for (i = 0; i < state->num_windows; ++i) { + if (event.window.windowID == SDL_GetWindowID(state->windows[i])) { + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + SDL_Log("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + break; + } + /* Change view port to the new window dimensions */ + ctx.glViewport(0, 0, event.window.data1, event.window.data2); + /* Update window content */ + Render(event.window.data1, event.window.data2, &datas[i]); + SDL_GL_SwapWindow(state->windows[i]); + break; + } + } + break; + } + } + SDLTest_CommonEvent(state, &event, &done); + } + for (i = 0; i < state->num_windows; ++i) { + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + SDL_Log("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + + /* Continue for next window */ + continue; + } + Render(state->window_w, state->window_h, &datas[i]); + SDL_GL_SwapWindow(state->windows[i]); + } + } + + /* Print out some timing information */ + now = SDL_GetTicks(); + if (now > then) { + SDL_Log("%2.2f frames per second\n", + ((double) frames * 1000) / (now - then)); + } +#if !defined(__ANDROID__) + quit(0); + return 0; +#endif + return 0; +} + +#else /* HAVE_OPENGLES2 */ + +int +main(int argc, char *argv[]) +{ + SDL_Log("No OpenGL ES support on this system\n"); + return 1; +} + +#endif /* HAVE_OPENGLES2 */ + +/* vi: set ts=4 sw=4 expandtab: */ From c2762594e011d1e81f3a621a962993d809b75cd1 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 22 Nov 2013 14:19:52 -0300 Subject: [PATCH 128/402] Fixes compilation on Mingw. --- configure | 79 +++++++++++++++++++++++++++ configure.in | 38 +++++++++++++ src/video/windows/SDL_windowsopengl.c | 4 ++ 3 files changed, 121 insertions(+) diff --git a/configure b/configure index be2cb61aeb..0e10125a2a 100755 --- a/configure +++ b/configure @@ -20703,6 +20703,84 @@ $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h fi } +CheckWINDOWSGLES() +{ + if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EGL support" >&5 +$as_echo_n "checking for EGL support... " >&6; } + video_opengl_egl=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + video_opengl_egl=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_opengl_egl" >&5 +$as_echo "$video_opengl_egl" >&6; } + if test x$video_opengl_egl = xyes; then + +$as_echo "#define SDL_VIDEO_OPENGL 1" >>confdefs.h + + +$as_echo "#define SDL_VIDEO_OPENGL_EGL 1" >>confdefs.h + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL ES v2 headers" >&5 +$as_echo_n "checking for OpenGL ES v2 headers... " >&6; } + video_opengles_v2=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + video_opengles_v2=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_opengles_v2" >&5 +$as_echo "$video_opengles_v2" >&6; } + if test x$video_opengles_v2 = xyes; then + +$as_echo "#define SDL_VIDEO_OPENGL 1" >>confdefs.h + + +$as_echo "#define SDL_VIDEO_OPENGL_ES2 1" >>confdefs.h + + +$as_echo "#define SDL_VIDEO_RENDER_OGL_ES2 1" >>confdefs.h + + fi + fi +} + CheckHaikuGL() { if test x$enable_video = xyes -a x$enable_video_opengl = xyes; then @@ -22261,6 +22339,7 @@ $as_echo "#define SDL_TIMER_UNIX 1" >>confdefs.h CheckDummyAudio CheckWINDOWS CheckWINDOWSGL + CheckWINDOWSGLES CheckDIRECTX # Set up the core platform files diff --git a/configure.in b/configure.in index e3f094cc55..8d116a58dd 100644 --- a/configure.in +++ b/configure.in @@ -1738,6 +1738,43 @@ CheckWINDOWSGL() fi } +dnl Check for Windows OpenGL +CheckWINDOWSGLES() +{ + if test x$enable_video = xyes -a x$enable_video_opengles = xyes; then + + AC_MSG_CHECKING(for EGL support) + video_opengl_egl=no + AC_TRY_COMPILE([ + #include + ],[ + ],[ + video_opengl_egl=yes + ]) + AC_MSG_RESULT($video_opengl_egl) + if test x$video_opengl_egl = xyes; then + AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) + AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ]) + fi + + AC_MSG_CHECKING(for OpenGL ES v2 headers) + video_opengles_v2=no + AC_TRY_COMPILE([ + #include + #include + ],[ + ],[ + video_opengles_v2=yes + ]) + AC_MSG_RESULT($video_opengles_v2) + if test x$video_opengles_v2 = xyes; then + AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) + AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ]) + AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ]) + fi + fi +} + dnl Check for Haiku OpenGL CheckHaikuGL() { @@ -2515,6 +2552,7 @@ case "$host" in CheckDummyAudio CheckWINDOWS CheckWINDOWSGL + CheckWINDOWSGLES CheckDIRECTX # Set up the core platform files diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index 3156c1a01c..2960bc56f8 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -585,6 +585,7 @@ WIN_GL_CreateContext(_THIS, SDL_Window * window) if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES && !_this->gl_data->HAS_WGL_EXT_create_context_es2_profile) { +#if SDL_VIDEO_OPENGL_EGL /* Switch to EGL based functions */ WIN_GL_UnloadLibrary(_this); _this->GL_LoadLibrary = WIN_GLES_LoadLibrary; @@ -602,6 +603,9 @@ WIN_GL_CreateContext(_THIS, SDL_Window * window) } return WIN_GLES_CreateContext(_this, window); +#else + return SDL_SetError("SDL not configured with EGL support"); +#endif } if (_this->gl_config.share_with_current_context) { From 8683e600f86a794ee445cab696ad97ebc90f6cb7 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 23 Nov 2013 02:02:29 -0800 Subject: [PATCH 129/402] Fixed double-free of the window shape path --- src/video/cocoa/SDL_cocoashape.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoashape.m b/src/video/cocoa/SDL_cocoashape.m index ae8df8d19e..d8034ec49b 100644 --- a/src/video/cocoa/SDL_cocoashape.m +++ b/src/video/cocoa/SDL_cocoashape.m @@ -92,7 +92,7 @@ pool = [[NSAutoreleasePool alloc] init]; closure.view = [windata->nswindow contentView]; - closure.path = [[NSBezierPath bezierPath] autorelease]; + closure.path = [[NSBezierPath bezierPath] init]; closure.window = shaper->window; SDL_TraverseShapeTree(data->shape,&ConvertRects,&closure); [closure.path addClip]; From 020b1b221e415a3f8d780c3ba2e595791fc8e34c Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Sat, 23 Nov 2013 09:47:25 -0300 Subject: [PATCH 130/402] [Android] Fixes #2264, handle joystick open/closed state properly --- src/joystick/android/SDL_sysjoystick.c | 27 +++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 3289a2869a..34d4584d3c 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -161,20 +161,18 @@ SDL_SYS_JoystickInit(void) if (SYS_accelAsJoy) { SYS_numjoysticks++; } - SYS_Joysticks = (SDL_Joystick **)SDL_malloc(SYS_numjoysticks*sizeof(SDL_Joystick *)); + SYS_Joysticks = (SDL_Joystick **)SDL_calloc(1, SYS_numjoysticks*sizeof(SDL_Joystick *)); if (SYS_Joysticks == NULL) { return SDL_OutOfMemory(); } - SYS_JoystickNames = (char **)SDL_malloc(SYS_numjoysticks*sizeof(char *)); + SYS_JoystickNames = (char **)SDL_calloc(1, SYS_numjoysticks*sizeof(char *)); if (SYS_JoystickNames == NULL) { SDL_free(SYS_Joysticks); SYS_Joysticks = NULL; return SDL_OutOfMemory(); } - SDL_memset(SYS_JoystickNames, 0, (SYS_numjoysticks*sizeof(char *))); - SDL_memset(SYS_Joysticks, 0, (SYS_numjoysticks*sizeof(SDL_Joystick *))); for (i = 0; i < SYS_numjoysticks; i++) { @@ -274,6 +272,15 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) void SDL_SYS_JoystickClose(SDL_Joystick * joystick) { + int device_index; + + for (device_index = 0; device_index < SYS_numjoysticks; device_index++) { + if ( SYS_Joysticks[device_index] == joystick ) { + SYS_Joysticks[device_index] = NULL; + } + } + + joystick->closed = 1; } /* Function to perform any system-specific joystick related cleanup */ @@ -311,7 +318,9 @@ Android_OnPadDown(int padId, int keycode) { int button = keycode_to_SDL(keycode); if (button >= 0) { - SDL_PrivateJoystickButton(SYS_Joysticks[padId], button , SDL_PRESSED); + if (SYS_Joysticks[padId]) { + SDL_PrivateJoystickButton(SYS_Joysticks[padId], button , SDL_PRESSED); + } return 0; } @@ -323,7 +332,9 @@ Android_OnPadUp(int padId, int keycode) { int button = keycode_to_SDL(keycode); if (button >= 0) { - SDL_PrivateJoystickButton(SYS_Joysticks[padId], button, SDL_RELEASED); + if (SYS_Joysticks[padId]) { + SDL_PrivateJoystickButton(SYS_Joysticks[padId], button, SDL_RELEASED); + } return 0; } @@ -335,7 +346,9 @@ Android_OnJoy(int joyId, int axis, float value) { /* Android gives joy info normalized as [-1.0, 1.0] or [0.0, 1.0] */ /* TODO: Are the reported values right? */ - SDL_PrivateJoystickAxis(SYS_Joysticks[joyId], axis, (Sint16) (32767.*value) ); + if (SYS_Joysticks[joyId]) { + SDL_PrivateJoystickAxis(SYS_Joysticks[joyId], axis, (Sint16) (32767.*value) ); + } return 0; } From e5603be73eac429442d2439e9539435c65e0e62e Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 23 Nov 2013 18:29:36 +0100 Subject: [PATCH 131/402] Removed include of no more needed header. --- src/joystick/android/SDL_sysjoystick.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 34d4584d3c..55db015834 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -31,7 +31,6 @@ #include "SDL_joystick.h" #include "SDL_hints.h" #include "SDL_assert.h" -#include "SDL_log.h" #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" From 96f94a7e54c361b6e207c642f57ed3963ccde548 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 23 Nov 2013 18:34:27 +0100 Subject: [PATCH 132/402] Fixed spaces in license comment. --- src/video/windows/SDL_windowsopengles.c | 36 ++++++++++++------------- src/video/windows/SDL_windowsopengles.h | 36 ++++++++++++------------- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c index 0934f4f8e9..8f73971eb4 100644 --- a/src/video/windows/SDL_windowsopengles.c +++ b/src/video/windows/SDL_windowsopengles.c @@ -1,22 +1,22 @@ /* -Simple DirectMedia Layer -Copyright (C) 1997-2013 Sam Lantinga - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software -in a product, an acknowledgment in the product documentation would be -appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ #include "SDL_config.h" diff --git a/src/video/windows/SDL_windowsopengles.h b/src/video/windows/SDL_windowsopengles.h index cdb1cad4aa..f027d02ab3 100644 --- a/src/video/windows/SDL_windowsopengles.h +++ b/src/video/windows/SDL_windowsopengles.h @@ -1,22 +1,22 @@ /* -Simple DirectMedia Layer -Copyright (C) 1997-2013 Sam Lantinga - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software -in a product, an acknowledgment in the product documentation would be -appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ #include "SDL_config.h" From d8eb88e8ea5193ca520e36cc5a66554f9786e873 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 23 Nov 2013 18:37:36 +0100 Subject: [PATCH 133/402] Removed second return statement. --- test/testgles2.c | 1 - 1 file changed, 1 deletion(-) diff --git a/test/testgles2.c b/test/testgles2.c index db729f0fd2..32b19df413 100644 --- a/test/testgles2.c +++ b/test/testgles2.c @@ -675,7 +675,6 @@ main(int argc, char *argv[]) } #if !defined(__ANDROID__) quit(0); - return 0; #endif return 0; } From 779f4fccc48b047ff98bd50cdcce2661ad50d4d1 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 23 Nov 2013 15:52:49 -0500 Subject: [PATCH 134/402] Fixed a few public APIs that we accidentally neglected to mark as SDLCALL. Fixes Bugzilla #2262. --- include/SDL_joystick.h | 2 +- include/SDL_main.h | 2 +- include/SDL_render.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/SDL_joystick.h b/include/SDL_joystick.h index b0e4b5dab8..a2843bae21 100644 --- a/include/SDL_joystick.h +++ b/include/SDL_joystick.h @@ -115,7 +115,7 @@ extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick * joys * Return a string representation for this guid. pszGUID must point to at least 33 bytes * (32 for the string plus a NULL terminator). */ -extern DECLSPEC void SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); /** * convert a string into a joystick formatted guid diff --git a/include/SDL_main.h b/include/SDL_main.h index b7e4a10e5e..da80a780b6 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -101,7 +101,7 @@ extern "C" { * Calling this yourself without knowing what you're doing can cause * crashes and hard to diagnose problems with your application. */ -extern DECLSPEC void SDL_SetMainReady(void); +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); #ifdef __WIN32__ diff --git a/include/SDL_render.h b/include/SDL_render.h index a765dc79f0..94bf1e6a7d 100644 --- a/include/SDL_render.h +++ b/include/SDL_render.h @@ -596,7 +596,7 @@ extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, * * \return 0 on success, or -1 on error */ -extern DECLSPEC int SDL_SetRenderDrawColor(SDL_Renderer * renderer, +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a); @@ -612,7 +612,7 @@ extern DECLSPEC int SDL_SetRenderDrawColor(SDL_Renderer * renderer, * * \return 0 on success, or -1 on error */ -extern DECLSPEC int SDL_GetRenderDrawColor(SDL_Renderer * renderer, +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, Uint8 * r, Uint8 * g, Uint8 * b, Uint8 * a); From 3f07312df458764a3e36bc7a18f24e3caa92c080 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 23 Nov 2013 23:38:16 +0100 Subject: [PATCH 135/402] Fixed bug 2258 - Crash when using Android clipboard chw The Android clipboard manager methods must be called from the UI thread, otherwise crashes of the dalvikvm happen. --- .../src/org/libsdl/app/SDLActivity.java | 28 +++++++++++++++++++ src/core/android/SDL_android.c | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index cd7b0c2796..fcc623918a 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -277,6 +277,34 @@ public static Context getContext() { return mSingleton; } + /** + * @return result of getSystemService(name) but executed on UI thread. + */ + public Object getSystemServiceFromUiThread(final String name) { + final Object lock = new Object(); + final Object[] results = new Object[2]; // array for writable variables + synchronized (lock) { + runOnUiThread(new Runnable() { + @Override + public void run() { + synchronized (lock) { + results[0] = getSystemService(name); + results[1] = Boolean.TRUE; + lock.notify(); + } + } + }); + if (results[1] == null) { + try { + lock.wait(); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } + } + return results[0]; + } + static class ShowTextInputTask implements Runnable { /* * This is used to regulate the pan&scan method to have some offset from diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 549d0a897e..9d044c21e2 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -1041,7 +1041,7 @@ static jobject Android_JNI_GetSystemServiceObject(const char* name) mid = (*env)->GetStaticMethodID(env, mActivityClass, "getContext", "()Landroid/content/Context;"); jobject context = (*env)->CallStaticObjectMethod(env, mActivityClass, mid); - mid = (*env)->GetMethodID(env, mActivityClass, "getSystemService", "(Ljava/lang/String;)Ljava/lang/Object;"); + mid = (*env)->GetMethodID(env, mActivityClass, "getSystemServiceFromUiThread", "(Ljava/lang/String;)Ljava/lang/Object;"); jobject manager = (*env)->CallObjectMethod(env, context, mid, service); (*env)->DeleteLocalRef(env, service); From 8387337b6602b0efe7f4f47e3f08250dd7521be0 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 25 Nov 2013 12:28:09 -0300 Subject: [PATCH 136/402] [Android] Fixes #2228, reworked touch code Lets Android take care of which is the primary pointer (the one acting as the mouse in SDL), reorganized the Java side code as well to make it easier to understand. --- .../src/org/libsdl/app/SDLActivity.java | 53 ++++++++++++------- src/video/android/SDL_androidtouch.c | 46 ++++++++-------- 2 files changed, 57 insertions(+), 42 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index fcc623918a..966d23639a 100755 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -666,31 +666,48 @@ else if (event.getAction() == KeyEvent.ACTION_UP) { // Touch events @Override public boolean onTouch(View v, MotionEvent event) { - final int touchDevId = event.getDeviceId(); - final int pointerCount = event.getPointerCount(); - // touchId, pointerId, action, x, y, pressure - int actionPointerIndex = (event.getAction() & MotionEvent.ACTION_POINTER_ID_MASK) >> MotionEvent.ACTION_POINTER_ID_SHIFT; /* API 8: event.getActionIndex(); */ - int pointerFingerId = event.getPointerId(actionPointerIndex); - int action = (event.getAction() & MotionEvent.ACTION_MASK); /* API 8: event.getActionMasked(); */ - - float x = event.getX(actionPointerIndex) / mWidth; - float y = event.getY(actionPointerIndex) / mHeight; - float p = event.getPressure(actionPointerIndex); - - if (action == MotionEvent.ACTION_MOVE && pointerCount > 1) { - // TODO send motion to every pointer if its position has - // changed since prev event. - for (int i = 0; i < pointerCount; i++) { + /* Ref: http://developer.android.com/training/gestures/multi.html */ + final int touchDevId = event.getDeviceId(); + final int pointerCount = event.getPointerCount(); + int action = event.getActionMasked(); + int pointerFingerId; + int i = -1; + float x,y,p; + + switch(action) { + case MotionEvent.ACTION_MOVE: + for (i = 0; i < pointerCount; i++) { pointerFingerId = event.getPointerId(i); x = event.getX(i) / mWidth; y = event.getY(i) / mHeight; p = event.getPressure(i); SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); } - } else { + break; + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_DOWN: + // Primary pointer up/down, the index is always zero + i = 0; + case MotionEvent.ACTION_POINTER_UP: + case MotionEvent.ACTION_POINTER_DOWN: + // Non primary pointer up/down + if (i == -1) { + i = event.getActionIndex(); + } + + pointerFingerId = event.getPointerId(i); + x = event.getX(i) / mWidth; + y = event.getY(i) / mHeight; + p = event.getPressure(i); SDLActivity.onNativeTouch(touchDevId, pointerFingerId, action, x, y, p); - } - return true; + break; + + default: + break; + } + + return true; } // Sensor events diff --git a/src/video/android/SDL_androidtouch.c b/src/video/android/SDL_androidtouch.c index 6ad26e2c96..208594d045 100644 --- a/src/video/android/SDL_androidtouch.c +++ b/src/video/android/SDL_androidtouch.c @@ -38,11 +38,8 @@ #define ACTION_MOVE 2 #define ACTION_CANCEL 3 #define ACTION_OUTSIDE 4 -/* The following two are deprecated but it seems they are still emitted (instead the corresponding ACTION_UP/DOWN) as of Android 3.2 */ -#define ACTION_POINTER_1_DOWN 5 -#define ACTION_POINTER_1_UP 6 - -static SDL_FingerID leftFingerDown = 0; +#define ACTION_POINTER_DOWN 5 +#define ACTION_POINTER_UP 6 static void Android_GetWindowCoordinates(float x, float y, int *window_x, int *window_y) @@ -72,6 +69,7 @@ void Android_OnTouch(int touch_device_id_in, int pointer_finger_id_in, int actio SDL_TouchID touchDeviceId = 0; SDL_FingerID fingerId = 0; int window_x, window_y; + static SDL_FingerID pointerFingerID = 0; if (!Android_Window) { return; @@ -85,22 +83,20 @@ void Android_OnTouch(int touch_device_id_in, int pointer_finger_id_in, int actio fingerId = (SDL_FingerID)pointer_finger_id_in; switch (action) { case ACTION_DOWN: - case ACTION_POINTER_1_DOWN: - if (!leftFingerDown) { - Android_GetWindowCoordinates(x, y, &window_x, &window_y); - - /* send moved event */ - SDL_SendMouseMotion(NULL, SDL_TOUCH_MOUSEID, 0, window_x, window_y); - - /* send mouse down event */ - SDL_SendMouseButton(NULL, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT); - - leftFingerDown = fingerId; - } + /* Primary pointer down */ + Android_GetWindowCoordinates(x, y, &window_x, &window_y); + /* send moved event */ + SDL_SendMouseMotion(NULL, SDL_TOUCH_MOUSEID, 0, window_x, window_y); + /* send mouse down event */ + SDL_SendMouseButton(NULL, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT); + pointerFingerID = fingerId; + case ACTION_POINTER_DOWN: + /* Non primary pointer down */ SDL_SendTouch(touchDeviceId, fingerId, SDL_TRUE, x, y, p); break; + case ACTION_MOVE: - if (!leftFingerDown) { + if (!pointerFingerID) { Android_GetWindowCoordinates(x, y, &window_x, &window_y); /* send moved event */ @@ -108,15 +104,17 @@ void Android_OnTouch(int touch_device_id_in, int pointer_finger_id_in, int actio } SDL_SendTouchMotion(touchDeviceId, fingerId, x, y, p); break; + case ACTION_UP: - case ACTION_POINTER_1_UP: - if (fingerId == leftFingerDown) { - /* send mouse up */ - SDL_SendMouseButton(NULL, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT); - leftFingerDown = 0; - } + /* Primary pointer up */ + /* send mouse up */ + pointerFingerID = (SDL_FingerID) 0; + SDL_SendMouseButton(NULL, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT); + case ACTION_POINTER_UP: + /* Non primary pointer up */ SDL_SendTouch(touchDeviceId, fingerId, SDL_FALSE, x, y, p); break; + default: break; } From 68f0a9f81a6a13c0a8de2c9ce37301a2ce201788 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 26 Nov 2013 11:47:52 -0300 Subject: [PATCH 137/402] Fixes #2272, typo in CMakeLists.txt (thanks Boris Bendovsky!) --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index edb9f7698c..7b8ceaa60a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -829,7 +829,7 @@ elseif(WINDOWS) if(SDL_FILESYSTEM) set(SDL_FILESYSTEM_WINDOWS 1) - file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesytem/windows/*.c) + file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/windows/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(HAVE_SDL_FILESYSTEM TRUE) endif(SDL_FILESYSTEM) From 909ade949f78352e1e85041ec92ecea5db402dbd Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 26 Nov 2013 11:50:54 -0300 Subject: [PATCH 138/402] Fixes #2271, Add KD detection under CMake by Scott Percival --- CMakeLists.txt | 15 +++++++++++++++ include/SDL_config.h.cmake | 1 + 2 files changed, 16 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b8ceaa60a..1d15fb274a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -651,6 +651,17 @@ if(UNIX AND NOT APPLE) #endif int main(int argc, char** argv) {}" HAVE_INPUT_EVENTS) + check_c_source_compiles(" + #include + #include + + int main(int argc, char **argv) + { + struct kbentry kbe; + kbe.kb_table = KG_CTRL; + ioctl(0, KDGKBENT, &kbe); + }" HAVE_INPUT_KD) + file(GLOB CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/linux/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) @@ -665,6 +676,10 @@ if(UNIX AND NOT APPLE) set(HAVE_SDL_HAPTIC TRUE) endif(SDL_HAPTIC AND HAVE_INPUT_EVENTS) + if(HAVE_INPUT_KD) + set(SDL_INPUT_LINUXKD 1) + endif(HAVE_INPUT_KD) + check_include_file("libudev.h" HAVE_LIBUDEV_H) # !!! FIXME: this needs pkg-config to find the include path, I think. diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index c69a5aa450..27e5f734f7 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -215,6 +215,7 @@ /* Enable various input drivers */ #cmakedefine SDL_INPUT_LINUXEV @SDL_INPUT_LINUXEV@ +#cmakedefine SDL_INPUT_LINUXKD @SDL_INPUT_LINUXKD@ #cmakedefine SDL_INPUT_TSLIB @SDL_INPUT_TSLIB@ #cmakedefine SDL_JOYSTICK_HAIKU @SDL_JOYSTICK_HAIKU@ #cmakedefine SDL_JOYSTICK_DINPUT @SDL_JOYSTICK_DINPUT@ From 922ac38ee1e9c65cf1f4cf98e291aa8243021875 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 27 Nov 2013 00:29:46 -0800 Subject: [PATCH 139/402] Fixed bug 2274 - SDL_ceil is incorrectly implemented when HAVE_LIBC is not defined Ghassan Al-Mashareqa The SDL_ceil function is implemented incorrectly when HAVE_CEIL is not defined (HAVE_LIBC not defined). The following code: double val = SDL_ceil(2.3); printf("%g", val); prints "2.0", as STD_ceil is defined as: double SDL_ceil(double x) { #ifdef HAVE_CEIL return ceil(x); #else return (double)(int)((x)+0.5); #endif /* HAVE_CEIL */ } This functions is used in the SDL_BuildAudioResampleCVT function of the audio subsystem (SDL_audiocvt.c), and causes a bug in that function. --- src/stdlib/SDL_stdlib.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/stdlib/SDL_stdlib.c b/src/stdlib/SDL_stdlib.c index 2ee62beee3..aa57d41b13 100644 --- a/src/stdlib/SDL_stdlib.c +++ b/src/stdlib/SDL_stdlib.c @@ -52,7 +52,12 @@ SDL_ceil(double x) #ifdef HAVE_CEIL return ceil(x); #else - return (double)(int)((x)+0.5); + double integer = SDL_floor(x); + double fraction = x - integer; + if (fraction > 0.0) { + integer += 1.0; + } + return integer; #endif /* HAVE_CEIL */ } From eed2f65376ee49619214a975860032f23a42ab7a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 27 Nov 2013 10:29:27 -0800 Subject: [PATCH 140/402] Don't crash when no WM is present. CR: Sam Lantinga. --- .../src/org/libsdl/app/SDLActivity.java | 0 premake/Linux/SDL_config_premake.h | 0 premake/MinGW/SDL_config_premake.h | 0 premake/VisualC/VS2008/SDL_config_premake.h | 0 premake/VisualC/VS2010/SDL_config_premake.h | 0 premake/VisualC/VS2012/SDL_config_premake.h | 0 premake/Xcode-iOS/SDL_config_premake.h | 0 premake/Xcode/Xcode3/SDL_config_premake.h | 0 premake/Xcode/Xcode4/SDL_config_premake.h | 0 premake/config/SDL_config_cygwin.template.h | 0 premake/config/SDL_config_iphoneos.template.h | 0 premake/config/SDL_config_linux.template.h | 0 premake/config/SDL_config_macosx.template.h | 0 premake/config/SDL_config_minimal.template.h | 0 premake/config/SDL_config_windows.template.h | 0 src/video/SDL_video.c | 0 src/video/windows/SDL_windowsevents.c | 0 src/video/windows/SDL_windowswindow.c | 0 src/video/windows/SDL_windowswindow.h | 0 src/video/x11/SDL_x11video.c | 20 +++++++++++------- visualtest/config.h | 0 visualtest/docs/html/bc_s.png | Bin visualtest/docs/html/bdwn.png | Bin visualtest/docs/html/closed.png | Bin visualtest/docs/html/doxygen.png | Bin visualtest/docs/html/ftv2blank.png | Bin visualtest/docs/html/ftv2cl.png | Bin visualtest/docs/html/ftv2doc.png | Bin visualtest/docs/html/ftv2folderclosed.png | Bin visualtest/docs/html/ftv2folderopen.png | Bin visualtest/docs/html/ftv2lastnode.png | Bin visualtest/docs/html/ftv2link.png | Bin visualtest/docs/html/ftv2mlastnode.png | Bin visualtest/docs/html/ftv2mnode.png | Bin visualtest/docs/html/ftv2mo.png | Bin visualtest/docs/html/ftv2node.png | Bin visualtest/docs/html/ftv2ns.png | Bin visualtest/docs/html/ftv2plastnode.png | Bin visualtest/docs/html/ftv2pnode.png | Bin visualtest/docs/html/ftv2splitbar.png | Bin visualtest/docs/html/ftv2vertline.png | Bin visualtest/docs/html/nav_f.png | Bin visualtest/docs/html/nav_g.png | Bin visualtest/docs/html/nav_h.png | Bin visualtest/docs/html/open.png | Bin visualtest/docs/html/search/close.png | Bin visualtest/docs/html/search/mag_sel.png | Bin visualtest/docs/html/search/search_l.png | Bin visualtest/docs/html/search/search_m.png | Bin visualtest/docs/html/search/search_r.png | Bin visualtest/docs/html/sync_off.png | Bin visualtest/docs/html/sync_on.png | Bin visualtest/docs/html/tab_a.png | Bin visualtest/docs/html/tab_b.png | Bin visualtest/docs/html/tab_h.png | Bin visualtest/docs/html/tab_s.png | Bin .../SDL_visualtest_action_configparser.h | 0 .../SDL_visualtest_exhaustive_variator.h | 0 .../SDL_visualtest_harness_argparser.h | 0 .../include/SDL_visualtest_mischelper.h | 0 .../include/SDL_visualtest_parsehelper.h | 0 visualtest/include/SDL_visualtest_process.h | 0 .../include/SDL_visualtest_random_variator.h | 0 visualtest/include/SDL_visualtest_rwhelper.h | 0 .../include/SDL_visualtest_screenshot.h | 0 .../include/SDL_visualtest_sut_configparser.h | 0 .../include/SDL_visualtest_variator_common.h | 0 visualtest/include/SDL_visualtest_variators.h | 0 visualtest/src/action_configparser.c | 0 visualtest/src/harness_argparser.c | 0 visualtest/src/linux/linux_process.c | 0 visualtest/src/mischelper.c | 0 visualtest/src/parsehelper.c | 0 visualtest/src/rwhelper.c | 0 visualtest/src/screenshot.c | 0 visualtest/src/sut_configparser.c | 0 visualtest/src/testharness.c | 0 visualtest/src/variator_common.c | 0 visualtest/src/variator_exhaustive.c | 0 visualtest/src/variator_random.c | 0 visualtest/src/variators.c | 0 visualtest/src/windows/windows_process.c | 0 visualtest/src/windows/windows_screenshot.c | 0 visualtest/unittest/testquit.c | 0 84 files changed, 12 insertions(+), 8 deletions(-) mode change 100755 => 100644 android-project/src/org/libsdl/app/SDLActivity.java mode change 100755 => 100644 premake/Linux/SDL_config_premake.h mode change 100755 => 100644 premake/MinGW/SDL_config_premake.h mode change 100755 => 100644 premake/VisualC/VS2008/SDL_config_premake.h mode change 100755 => 100644 premake/VisualC/VS2010/SDL_config_premake.h mode change 100755 => 100644 premake/VisualC/VS2012/SDL_config_premake.h mode change 100755 => 100644 premake/Xcode-iOS/SDL_config_premake.h mode change 100755 => 100644 premake/Xcode/Xcode3/SDL_config_premake.h mode change 100755 => 100644 premake/Xcode/Xcode4/SDL_config_premake.h mode change 100755 => 100644 premake/config/SDL_config_cygwin.template.h mode change 100755 => 100644 premake/config/SDL_config_iphoneos.template.h mode change 100755 => 100644 premake/config/SDL_config_linux.template.h mode change 100755 => 100644 premake/config/SDL_config_macosx.template.h mode change 100755 => 100644 premake/config/SDL_config_minimal.template.h mode change 100755 => 100644 premake/config/SDL_config_windows.template.h mode change 100755 => 100644 src/video/SDL_video.c mode change 100755 => 100644 src/video/windows/SDL_windowsevents.c mode change 100755 => 100644 src/video/windows/SDL_windowswindow.c mode change 100755 => 100644 src/video/windows/SDL_windowswindow.h mode change 100755 => 100644 visualtest/config.h mode change 100755 => 100644 visualtest/docs/html/bc_s.png mode change 100755 => 100644 visualtest/docs/html/bdwn.png mode change 100755 => 100644 visualtest/docs/html/closed.png mode change 100755 => 100644 visualtest/docs/html/doxygen.png mode change 100755 => 100644 visualtest/docs/html/ftv2blank.png mode change 100755 => 100644 visualtest/docs/html/ftv2cl.png mode change 100755 => 100644 visualtest/docs/html/ftv2doc.png mode change 100755 => 100644 visualtest/docs/html/ftv2folderclosed.png mode change 100755 => 100644 visualtest/docs/html/ftv2folderopen.png mode change 100755 => 100644 visualtest/docs/html/ftv2lastnode.png mode change 100755 => 100644 visualtest/docs/html/ftv2link.png mode change 100755 => 100644 visualtest/docs/html/ftv2mlastnode.png mode change 100755 => 100644 visualtest/docs/html/ftv2mnode.png mode change 100755 => 100644 visualtest/docs/html/ftv2mo.png mode change 100755 => 100644 visualtest/docs/html/ftv2node.png mode change 100755 => 100644 visualtest/docs/html/ftv2ns.png mode change 100755 => 100644 visualtest/docs/html/ftv2plastnode.png mode change 100755 => 100644 visualtest/docs/html/ftv2pnode.png mode change 100755 => 100644 visualtest/docs/html/ftv2splitbar.png mode change 100755 => 100644 visualtest/docs/html/ftv2vertline.png mode change 100755 => 100644 visualtest/docs/html/nav_f.png mode change 100755 => 100644 visualtest/docs/html/nav_g.png mode change 100755 => 100644 visualtest/docs/html/nav_h.png mode change 100755 => 100644 visualtest/docs/html/open.png mode change 100755 => 100644 visualtest/docs/html/search/close.png mode change 100755 => 100644 visualtest/docs/html/search/mag_sel.png mode change 100755 => 100644 visualtest/docs/html/search/search_l.png mode change 100755 => 100644 visualtest/docs/html/search/search_m.png mode change 100755 => 100644 visualtest/docs/html/search/search_r.png mode change 100755 => 100644 visualtest/docs/html/sync_off.png mode change 100755 => 100644 visualtest/docs/html/sync_on.png mode change 100755 => 100644 visualtest/docs/html/tab_a.png mode change 100755 => 100644 visualtest/docs/html/tab_b.png mode change 100755 => 100644 visualtest/docs/html/tab_h.png mode change 100755 => 100644 visualtest/docs/html/tab_s.png mode change 100755 => 100644 visualtest/include/SDL_visualtest_action_configparser.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_exhaustive_variator.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_harness_argparser.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_mischelper.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_parsehelper.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_process.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_random_variator.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_rwhelper.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_screenshot.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_sut_configparser.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_variator_common.h mode change 100755 => 100644 visualtest/include/SDL_visualtest_variators.h mode change 100755 => 100644 visualtest/src/action_configparser.c mode change 100755 => 100644 visualtest/src/harness_argparser.c mode change 100755 => 100644 visualtest/src/linux/linux_process.c mode change 100755 => 100644 visualtest/src/mischelper.c mode change 100755 => 100644 visualtest/src/parsehelper.c mode change 100755 => 100644 visualtest/src/rwhelper.c mode change 100755 => 100644 visualtest/src/screenshot.c mode change 100755 => 100644 visualtest/src/sut_configparser.c mode change 100755 => 100644 visualtest/src/testharness.c mode change 100755 => 100644 visualtest/src/variator_common.c mode change 100755 => 100644 visualtest/src/variator_exhaustive.c mode change 100755 => 100644 visualtest/src/variator_random.c mode change 100755 => 100644 visualtest/src/variators.c mode change 100755 => 100644 visualtest/src/windows/windows_process.c mode change 100755 => 100644 visualtest/src/windows/windows_screenshot.c mode change 100755 => 100644 visualtest/unittest/testquit.c diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java old mode 100755 new mode 100644 diff --git a/premake/Linux/SDL_config_premake.h b/premake/Linux/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/MinGW/SDL_config_premake.h b/premake/MinGW/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/VisualC/VS2008/SDL_config_premake.h b/premake/VisualC/VS2008/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/VisualC/VS2010/SDL_config_premake.h b/premake/VisualC/VS2010/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/VisualC/VS2012/SDL_config_premake.h b/premake/VisualC/VS2012/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/Xcode-iOS/SDL_config_premake.h b/premake/Xcode-iOS/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/Xcode/Xcode3/SDL_config_premake.h b/premake/Xcode/Xcode3/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/Xcode/Xcode4/SDL_config_premake.h b/premake/Xcode/Xcode4/SDL_config_premake.h old mode 100755 new mode 100644 diff --git a/premake/config/SDL_config_cygwin.template.h b/premake/config/SDL_config_cygwin.template.h old mode 100755 new mode 100644 diff --git a/premake/config/SDL_config_iphoneos.template.h b/premake/config/SDL_config_iphoneos.template.h old mode 100755 new mode 100644 diff --git a/premake/config/SDL_config_linux.template.h b/premake/config/SDL_config_linux.template.h old mode 100755 new mode 100644 diff --git a/premake/config/SDL_config_macosx.template.h b/premake/config/SDL_config_macosx.template.h old mode 100755 new mode 100644 diff --git a/premake/config/SDL_config_minimal.template.h b/premake/config/SDL_config_minimal.template.h old mode 100755 new mode 100644 diff --git a/premake/config/SDL_config_windows.template.h b/premake/config/SDL_config_windows.template.h old mode 100755 new mode 100644 diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c old mode 100755 new mode 100644 diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c old mode 100755 new mode 100644 diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c old mode 100755 new mode 100644 diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h old mode 100755 new mode 100644 diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index c84d4ec681..49183e63c3 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -440,8 +440,8 @@ X11_CheckWindowManager(_THIS) Atom _NET_SUPPORTING_WM_CHECK; int status, real_format; Atom real_type; - unsigned long items_read, items_left; - unsigned char *propdata; + unsigned long items_read = 0, items_left = 0; + unsigned char *propdata = NULL; Window wm_window = 0; #ifdef DEBUG_WINDOW_MANAGER char *wm_name; @@ -453,11 +453,14 @@ X11_CheckWindowManager(_THIS) _NET_SUPPORTING_WM_CHECK = X11_XInternAtom(display, "_NET_SUPPORTING_WM_CHECK", False); status = X11_XGetWindowProperty(display, DefaultRootWindow(display), _NET_SUPPORTING_WM_CHECK, 0L, 1L, False, XA_WINDOW, &real_type, &real_format, &items_read, &items_left, &propdata); - if (status == Success && items_read) { - wm_window = ((Window*)propdata)[0]; - } - if (propdata) { - X11_XFree(propdata); + if (status == Success) { + if (items_read) { + wm_window = ((Window*)propdata)[0]; + } + if (propdata) { + X11_XFree(propdata); + propdata = NULL; + } } if (wm_window) { @@ -465,8 +468,9 @@ X11_CheckWindowManager(_THIS) if (status != Success || !items_read || wm_window != ((Window*)propdata)[0]) { wm_window = None; } - if (propdata) { + if (status == Success && propdata) { X11_XFree(propdata); + propdata = NULL; } } diff --git a/visualtest/config.h b/visualtest/config.h old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/bc_s.png b/visualtest/docs/html/bc_s.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/bdwn.png b/visualtest/docs/html/bdwn.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/closed.png b/visualtest/docs/html/closed.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/doxygen.png b/visualtest/docs/html/doxygen.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2blank.png b/visualtest/docs/html/ftv2blank.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2cl.png b/visualtest/docs/html/ftv2cl.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2doc.png b/visualtest/docs/html/ftv2doc.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2folderclosed.png b/visualtest/docs/html/ftv2folderclosed.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2folderopen.png b/visualtest/docs/html/ftv2folderopen.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2lastnode.png b/visualtest/docs/html/ftv2lastnode.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2link.png b/visualtest/docs/html/ftv2link.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2mlastnode.png b/visualtest/docs/html/ftv2mlastnode.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2mnode.png b/visualtest/docs/html/ftv2mnode.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2mo.png b/visualtest/docs/html/ftv2mo.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2node.png b/visualtest/docs/html/ftv2node.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2ns.png b/visualtest/docs/html/ftv2ns.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2plastnode.png b/visualtest/docs/html/ftv2plastnode.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2pnode.png b/visualtest/docs/html/ftv2pnode.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2splitbar.png b/visualtest/docs/html/ftv2splitbar.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/ftv2vertline.png b/visualtest/docs/html/ftv2vertline.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/nav_f.png b/visualtest/docs/html/nav_f.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/nav_g.png b/visualtest/docs/html/nav_g.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/nav_h.png b/visualtest/docs/html/nav_h.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/open.png b/visualtest/docs/html/open.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/search/close.png b/visualtest/docs/html/search/close.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/search/mag_sel.png b/visualtest/docs/html/search/mag_sel.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/search/search_l.png b/visualtest/docs/html/search/search_l.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/search/search_m.png b/visualtest/docs/html/search/search_m.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/search/search_r.png b/visualtest/docs/html/search/search_r.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/sync_off.png b/visualtest/docs/html/sync_off.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/sync_on.png b/visualtest/docs/html/sync_on.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/tab_a.png b/visualtest/docs/html/tab_a.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/tab_b.png b/visualtest/docs/html/tab_b.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/tab_h.png b/visualtest/docs/html/tab_h.png old mode 100755 new mode 100644 diff --git a/visualtest/docs/html/tab_s.png b/visualtest/docs/html/tab_s.png old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_action_configparser.h b/visualtest/include/SDL_visualtest_action_configparser.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_exhaustive_variator.h b/visualtest/include/SDL_visualtest_exhaustive_variator.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_harness_argparser.h b/visualtest/include/SDL_visualtest_harness_argparser.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_mischelper.h b/visualtest/include/SDL_visualtest_mischelper.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_parsehelper.h b/visualtest/include/SDL_visualtest_parsehelper.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_process.h b/visualtest/include/SDL_visualtest_process.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_random_variator.h b/visualtest/include/SDL_visualtest_random_variator.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_rwhelper.h b/visualtest/include/SDL_visualtest_rwhelper.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_screenshot.h b/visualtest/include/SDL_visualtest_screenshot.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_sut_configparser.h b/visualtest/include/SDL_visualtest_sut_configparser.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_variator_common.h b/visualtest/include/SDL_visualtest_variator_common.h old mode 100755 new mode 100644 diff --git a/visualtest/include/SDL_visualtest_variators.h b/visualtest/include/SDL_visualtest_variators.h old mode 100755 new mode 100644 diff --git a/visualtest/src/action_configparser.c b/visualtest/src/action_configparser.c old mode 100755 new mode 100644 diff --git a/visualtest/src/harness_argparser.c b/visualtest/src/harness_argparser.c old mode 100755 new mode 100644 diff --git a/visualtest/src/linux/linux_process.c b/visualtest/src/linux/linux_process.c old mode 100755 new mode 100644 diff --git a/visualtest/src/mischelper.c b/visualtest/src/mischelper.c old mode 100755 new mode 100644 diff --git a/visualtest/src/parsehelper.c b/visualtest/src/parsehelper.c old mode 100755 new mode 100644 diff --git a/visualtest/src/rwhelper.c b/visualtest/src/rwhelper.c old mode 100755 new mode 100644 diff --git a/visualtest/src/screenshot.c b/visualtest/src/screenshot.c old mode 100755 new mode 100644 diff --git a/visualtest/src/sut_configparser.c b/visualtest/src/sut_configparser.c old mode 100755 new mode 100644 diff --git a/visualtest/src/testharness.c b/visualtest/src/testharness.c old mode 100755 new mode 100644 diff --git a/visualtest/src/variator_common.c b/visualtest/src/variator_common.c old mode 100755 new mode 100644 diff --git a/visualtest/src/variator_exhaustive.c b/visualtest/src/variator_exhaustive.c old mode 100755 new mode 100644 diff --git a/visualtest/src/variator_random.c b/visualtest/src/variator_random.c old mode 100755 new mode 100644 diff --git a/visualtest/src/variators.c b/visualtest/src/variators.c old mode 100755 new mode 100644 diff --git a/visualtest/src/windows/windows_process.c b/visualtest/src/windows/windows_process.c old mode 100755 new mode 100644 diff --git a/visualtest/src/windows/windows_screenshot.c b/visualtest/src/windows/windows_screenshot.c old mode 100755 new mode 100644 diff --git a/visualtest/unittest/testquit.c b/visualtest/unittest/testquit.c old mode 100755 new mode 100644 From 1cc49e99fde23694482a70efc8f0aa6ad922f3f7 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 27 Nov 2013 10:29:32 -0800 Subject: [PATCH 141/402] Fixed large relative mouse motion when iconifying the SDL window. Windows will move the window to -32000,-32000 when it is iconified, so we don't want to send mouse motion for iconic windows. --- src/video/windows/SDL_windowsevents.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 34fcbc6ac9..eeb26c0a3f 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -496,10 +496,12 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) #ifdef WM_MOUSELEAVE case WM_MOUSELEAVE: if (SDL_GetMouseFocus() == data->window && !SDL_GetMouse()->relative_mode) { - POINT cursorPos; - GetCursorPos(&cursorPos); - ScreenToClient(hwnd, &cursorPos); - SDL_SendMouseMotion(data->window, 0, 0, cursorPos.x, cursorPos.y); + if (!IsIconic(hwnd)) { + POINT cursorPos; + GetCursorPos(&cursorPos); + ScreenToClient(hwnd, &cursorPos); + SDL_SendMouseMotion(data->window, 0, 0, cursorPos.x, cursorPos.y); + } SDL_SetMouseFocus(NULL); } returnCode = 0; From e2b3a9546bae990a2dbc7e3fc1ef2e67b00d8b24 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 27 Nov 2013 10:29:38 -0800 Subject: [PATCH 142/402] Fixed bug 2260 - SDL_SetCursorGrab() is buggy on Windows BurnSpamAddress Steps to reproduce: 1. Grab the cursor with SDL_SetCursorGrab() 2. Alt-tab away from the window 3. Click on the titlebar of the window This will cause the window to disappear underneath the taskbar! This appears to be a general issue with ClipCursor() on windows, i.e. I am getting the same behavior if I call ClipCursor() directly. It is caused by a feedback loop between the ClipCursor function and the modal resize/move event loop that handles mouse-based sizing on Windows. --- src/video/windows/SDL_windowsevents.c | 82 +++++++++++++++++++-------- src/video/windows/SDL_windowsmouse.c | 9 ++- 2 files changed, 62 insertions(+), 29 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index eeb26c0a3f..bbab2da2cb 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -286,6 +286,45 @@ WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text) return SDL_TRUE; } +static void +WIN_UpdateClipCursor(SDL_Window *window) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + + /* Don't clip the cursor while we're in the modal resize or move loop */ + if (data->in_modal_loop) { + ClipCursor(NULL); + return; + } + + if (SDL_GetMouse()->relative_mode) { + LONG cx, cy; + RECT rect; + GetWindowRect(data->hwnd, &rect); + + cx = (rect.left + rect.right) / 2; + cy = (rect.top + rect.bottom) / 2; + + /* Make an absurdly small clip rect */ + rect.left = cx-1; + rect.right = cx+1; + rect.top = cy-1; + rect.bottom = cy+1; + + ClipCursor(&rect); + } else if ((window->flags & SDL_WINDOW_INPUT_GRABBED) && + (window->flags & SDL_WINDOW_INPUT_FOCUS)) { + RECT rect; + if (GetClientRect(data->hwnd, &rect) && !IsRectEmpty(&rect)) { + ClientToScreen(data->hwnd, (LPPOINT) & rect); + ClientToScreen(data->hwnd, (LPPOINT) & rect + 1); + ClipCursor(&rect); + } + } else { + ClipCursor(NULL); + } +} + LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -369,22 +408,7 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (mouseFlags & SDL_BUTTON_X2MASK), data, SDL_BUTTON_X2 ); data->mouse_button_flags = 0; - if(SDL_GetMouse()->relative_mode) { - LONG cx, cy; - RECT rect; - GetWindowRect(hwnd, &rect); - - cx = (rect.left + rect.right) / 2; - cy = (rect.top + rect.bottom) / 2; - - /* Make an absurdly small clip rect */ - rect.left = cx-1; - rect.right = cx+1; - rect.top = cy-1; - rect.bottom = cy+1; - - ClipCursor(&rect); - } + WIN_UpdateClipCursor(data->window); /* * FIXME: Update keyboard state @@ -585,6 +609,22 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) break; #endif /* WM_INPUTLANGCHANGE */ + case WM_ENTERSIZEMOVE: + case WM_ENTERMENULOOP: + { + data->in_modal_loop = SDL_TRUE; + WIN_UpdateClipCursor(data->window); + } + break; + + case WM_EXITSIZEMOVE: + case WM_EXITMENULOOP: + { + data->in_modal_loop = SDL_FALSE; + WIN_UpdateClipCursor(data->window); + } + break; + #ifdef WM_GETMINMAXINFO case WM_GETMINMAXINFO: { @@ -673,20 +713,14 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) RECT rect; int x, y; int w, h; - Uint32 window_flags; - if (!GetClientRect(hwnd, &rect) || - (rect.right == rect.left && rect.bottom == rect.top)) { + if (!GetClientRect(hwnd, &rect) || IsRectEmpty(&rect)) { break; } ClientToScreen(hwnd, (LPPOINT) & rect); ClientToScreen(hwnd, (LPPOINT) & rect + 1); - window_flags = SDL_GetWindowFlags(data->window); - if ((window_flags & SDL_WINDOW_INPUT_GRABBED) && - (window_flags & SDL_WINDOW_INPUT_FOCUS)) { - ClipCursor(&rect); - } + WIN_UpdateClipCursor(data->window); x = rect.left; y = rect.top; diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index f50a8724bf..f75b8dad33 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -207,7 +207,7 @@ WIN_SetRelativeMouseMode(SDL_bool enabled) /* (Un)register raw input for mice */ - if(RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) { + if (RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) { /* Only return an error when registering. If we unregister and fail, then it's probably that we unregistered twice. That's OK. */ @@ -216,7 +216,7 @@ WIN_SetRelativeMouseMode(SDL_bool enabled) } } - if(enabled) { + if (enabled) { LONG cx, cy; RECT rect; GetWindowRect(hWnd, &rect); @@ -231,10 +231,9 @@ WIN_SetRelativeMouseMode(SDL_bool enabled) rect.bottom = cy+1; ClipCursor(&rect); - } - else + } else { ClipCursor(NULL); - + } return 0; } From 16642d4cf3d239d80c3733eb02026183abc3affe Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 27 Nov 2013 10:29:43 -0800 Subject: [PATCH 143/402] Added alternative XBox 360 controller GUID on Linux Leszek Godlewski As described in the other thread (http://lists.libsdl.org/pipermail/sdl-libsdl.org/2013-November/091997.html), I've run into a case of SDL2 not recognizing a wireless Xbox 360 controller receiver properly on Debian Linux amd64 testing. Apparently, the generated GUID is slightly different. Device in question: Bus 001 Device 015: ID 045e:0291 Microsoft Corp. Xbox 360 Wireless Receiver for Windows --- src/joystick/SDL_gamecontrollerdb.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index a2f581479e..4dd711cd02 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -59,6 +59,7 @@ static const char *s_ControllerMappings [] = "030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", #endif NULL }; From 8259baf411615e4260679d2940e197bf8f759765 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 28 Nov 2013 02:31:32 -0800 Subject: [PATCH 144/402] Fixed windows build with conflict resolve --- src/video/windows/SDL_windowswindow.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h index 52837a17aa..ed304453c0 100644 --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -38,6 +38,7 @@ typedef struct SDL_bool created; WPARAM mouse_button_flags; BOOL expected_resize; + SDL_bool in_modal_loop; struct SDL_VideoData *videodata; #if SDL_VIDEO_OPENGL_EGL EGLSurface egl_surface; From 73a95529705339e6940fa1773c77713ab66dab4d Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 29 Nov 2013 10:06:08 -0300 Subject: [PATCH 145/402] Improve Android pause/resume behavior. --- src/core/android/SDL_android.c | 18 ++++++++++-------- src/video/android/SDL_androidevents.c | 2 -- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 9d044c21e2..4dc78bbf59 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -300,16 +300,17 @@ void Java_org_libsdl_app_SDLActivity_nativeQuit( void Java_org_libsdl_app_SDLActivity_nativePause( JNIEnv* env, jclass cls) { + __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "nativePause()"); if (Android_Window) { - /* Signal the pause semaphore so the event loop knows to pause and (optionally) block itself */ - if (!SDL_SemValue(Android_PauseSem)) SDL_SemPost(Android_PauseSem); SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_FOCUS_LOST, 0, 0); SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_MINIMIZED, 0, 0); + SDL_SendAppEvent(SDL_APP_WILLENTERBACKGROUND); + SDL_SendAppEvent(SDL_APP_DIDENTERBACKGROUND); + + /* *After* sending the relevant events, signal the pause semaphore + * so the event loop knows to pause and (optionally) block itself */ + if (!SDL_SemValue(Android_PauseSem)) SDL_SemPost(Android_PauseSem); } - - __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "nativePause()"); - SDL_SendAppEvent(SDL_APP_WILLENTERBACKGROUND); - SDL_SendAppEvent(SDL_APP_DIDENTERBACKGROUND); } /* Resume */ @@ -317,8 +318,6 @@ void Java_org_libsdl_app_SDLActivity_nativeResume( JNIEnv* env, jclass cls) { __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "nativeResume()"); - SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND); - SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND); if (Android_Window) { /* Signal the resume semaphore so the event loop knows to resume and restore the GL Context @@ -326,6 +325,9 @@ void Java_org_libsdl_app_SDLActivity_nativeResume( * and this function will be called from the Java thread instead. */ if (!SDL_SemValue(Android_ResumeSem)) SDL_SemPost(Android_ResumeSem); + + SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND); + SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND); SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESTORED, 0, 0); } diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c index 7a57ff584a..bee9d38852 100644 --- a/src/video/android/SDL_androidevents.c +++ b/src/video/android/SDL_androidevents.c @@ -66,8 +66,6 @@ Android_PumpEvents(_THIS) /* * Android_ResumeSem and Android_PauseSem are signaled from Java_org_libsdl_app_SDLActivity_nativePause and Java_org_libsdl_app_SDLActivity_nativeResume * When the pause semaphore is signaled, if SDL_ANDROID_BLOCK_ON_PAUSE is defined the event loop will block until the resume signal is emitted. - * When the resume semaphore is signaled, SDL_GL_CreateContext is called which in turn calls Java code - * SDLActivity::createGLContext -> SDLActivity:: initEGL -> SDLActivity::createEGLSurface -> SDLActivity::createEGLContext */ #if SDL_ANDROID_BLOCK_ON_PAUSE From 2f3f37d92d3ebf5681290c1080b7ba266c658516 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 2 Dec 2013 10:08:57 -0300 Subject: [PATCH 146/402] Select EGL config when creating the EGL surface --- src/video/SDL_egl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index ce8f462219..4b87f19d94 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -225,8 +225,7 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa *_this->gl_config.driver_path = '\0'; } - /* We need to select a config here to satisfy some video backends such as X11 */ - return SDL_EGL_ChooseConfig(_this); + return 0; } int @@ -452,6 +451,10 @@ SDL_EGL_DeleteContext(_THIS, SDL_GLContext context) EGLSurface * SDL_EGL_CreateSurface(_THIS, NativeWindowType nw) { + if (SDL_EGL_ChooseConfig(_this) != 0) { + return -1; + } + return _this->egl_data->eglCreateWindowSurface( _this->egl_data->egl_display, _this->egl_data->egl_config, From 19992eb6899611dc7151fd07298117b45e41477e Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 2 Dec 2013 19:34:08 -0300 Subject: [PATCH 147/402] Adds SDL_GameControllerAddMappingsFromFile --- include/SDL_gamecontroller.h | 8 ++++ src/joystick/SDL_gamecontroller.c | 68 +++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) diff --git a/include/SDL_gamecontroller.h b/include/SDL_gamecontroller.h index e55749ce35..84d58d89e3 100644 --- a/include/SDL_gamecontroller.h +++ b/include/SDL_gamecontroller.h @@ -108,6 +108,14 @@ typedef struct SDL_GameControllerButtonBind * */ +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt + * + * \return number of mappings added, -1 on error + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromFile( const char* mapDB ); + /** * Add or update an existing mapping configuration * diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 26769b8e1d..1563f51416 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -33,6 +33,7 @@ #endif #define ABS(_x) ((_x) < 0 ? -(_x) : (_x)) +#define SDL_CONTROLLER_PLATFORM_FIELD "platform:" /* a list of currently opened game controllers */ static SDL_GameController *SDL_gamecontrollers = NULL; @@ -653,6 +654,73 @@ void SDL_PrivateGameControllerRefreshMapping( ControllerMapping_t *pControllerMa } } +/* + * Add or update an entry into the Mappings Database + */ +int +SDL_GameControllerAddMappingsFromFile( const char* mapDB ) +{ + const char *platform = SDL_GetPlatform(); + SDL_RWops *rw; + int controllers = 0; + char *buf, *line, *line_end, *tmp, *comma, line_platform[64]; + size_t db_size, platform_len; + + rw = SDL_RWFromFile(mapDB, "rb"); + if (rw == NULL) { + return SDL_SetError("Could not open %s", mapDB); + } + db_size = SDL_RWsize(rw); + + buf = (char *) SDL_malloc(db_size + 1); + if (buf == NULL) { + SDL_RWclose(rw); + return SDL_SetError("Could allocate space to not read DB into memory"); + } + + if (SDL_RWread(rw, buf, db_size, 1) != 1) { + SDL_RWclose(rw); + SDL_free(buf); + return SDL_SetError("Could not read DB"); + } + SDL_RWclose(rw); + + buf[db_size] = '\0'; + line = buf; + + while (line < buf + db_size) { + line_end = SDL_strchr( line, '\n' ); + if (line_end != NULL) { + *line_end = '\0'; + } + else { + line_end = buf + db_size; + } + + /* Extract and verify the platform */ + tmp = SDL_strstr(line, SDL_CONTROLLER_PLATFORM_FIELD); + if ( tmp != NULL ) { + tmp += SDL_strlen(SDL_CONTROLLER_PLATFORM_FIELD); + comma = SDL_strchr(tmp, ','); + if (comma != NULL) { + platform_len = comma - tmp + 1; + if (platform_len + 1 < SDL_arraysize(line_platform)) { + SDL_strlcpy(line_platform, tmp, platform_len); + if(SDL_strncasecmp(line_platform, platform, platform_len) == 0 + && SDL_GameControllerAddMapping(line) > 0) { + controllers++; + } + } + } + } + + line = line_end + 1; + } + + SDL_free(buf); + return controllers; +} + /* * Add or update an entry into the Mappings Database */ From 0948bb7b91ebd647cd15be0af16ba83756cb9ce4 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 2 Dec 2013 19:35:04 -0300 Subject: [PATCH 148/402] Adds controllermap utility to test suite. --- src/joystick/SDL_gamecontrollerdb.h | 2 + test/Makefile.in | 7 +- test/README | 3 + test/axis.bmp | Bin 0 -> 3746 bytes test/button.bmp | Bin 0 -> 3746 bytes test/controllermap.bmp | Bin 0 -> 163450 bytes test/controllermap.c | 432 ++++++++++++++++++++++++++++ test/testgamecontroller.c | 2 + 8 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 test/axis.bmp create mode 100644 test/button.bmp create mode 100644 test/controllermap.bmp create mode 100644 test/controllermap.c diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 4dd711cd02..5954ccf745 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -26,6 +26,8 @@ The easiest way to generate a new mapping is to start Steam in Big Picture mode, configure your joystick and then look in config/config.vdf in your Steam installation directory for the "SDL_GamepadBind" entry. + + Alternatively, you can use the app located in test/controllermap */ static const char *s_ControllerMappings [] = { diff --git a/test/Makefile.in b/test/Makefile.in index ac9aa372a3..a534250fd7 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -55,7 +55,8 @@ TARGETS = \ torturethread$(EXE) \ testrendercopyex$(EXE) \ testmessage$(EXE) \ - + controllermap$(EXE) \ + all: Makefile $(TARGETS) Makefile: $(srcdir)/Makefile.in @@ -238,6 +239,10 @@ testrendercopyex$(EXE): $(srcdir)/testrendercopyex.c testmessage$(EXE): $(srcdir)/testmessage.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) +controllermap$(EXE): $(srcdir)/controllermap.c + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) + + clean: rm -f $(TARGETS) diff --git a/test/README b/test/README index a2ff7942a9..b820a88d7a 100644 --- a/test/README +++ b/test/README @@ -25,3 +25,6 @@ These are test programs for the SDL library: testver Check the version and dynamic loading and endianness testwm2 Test window manager -- title, icon, events torturethread Simple test for thread creation/destruction + controllermap Useful to generate Game Controller API compatible maps + + diff --git a/test/axis.bmp b/test/axis.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c7addd3ed9372e59d11d874dace91bb64840e066 GIT binary patch literal 3746 zcmd6pWmH>R6NcZqP^GT4rL>d?1PK8Ov`ABTcc*U9LX?Dr1d9>^Az1N3-GI7KcXxMp zZ*T4nRG^oBUwePuv(`ClubKUvnb~L0d$v!%^m-_{xK)8UWaRkuu7sK;cH7!OBa6}- zm57PlKJ3APCC)#1RIXrdrAn1hxpHMxsZs@1t5!v|YSmD^dUe#OQ3Ew=)eZ`<`t|FhL4yWp*sviiEiKWgQ6n^N+!#%oG(pp*P0_4bGc<4B z94%V3K+Bdb(W+G|v~JxRZQ8U!+qP|CWo3nS?b@Mz`}XM2p#!X~t(&k3yLX3=j}Lr(ec|Wl2Y-Km z^ytw8Y&IJ`d-g=HUcJz}cW?CR(+7R~_C>#b{m{REe+(Ef00RdO#GpZgFnI7_3>h*6 zLx&E7PM~=j(QKK+=^k|G3GX`VFj>Wif<1l{wcubfu0TU-q#H2}+ zFnRK1OqntTQ>RYFv}w~Yefo3+1O#Blj2W0Yb0%iZnuXc3XJgKsIhZ?lF6Pafhxzm8 zW5I$2Sh#Q@7A;zYz`#HR1qEU8;>B39WC? z&`^j(B8bIegoTAcB9TBUl_ESm95R^C&Z0PftfiMg}r7Gm({*h3xEX-R23sF>5giV_^Ve{tA*s^5{ zwr<^uZQHhC`}XbFv112z?%au8yLMss?%gOZF2J9Z4mj~~a06DM%;^pFhWo7ccPg7beTY%gei4Hy>{%&HDdgRH{9L;mCAjF`b>5?w;OWzI{EZZT=@k zr_$*T&JOJx*RDqNvt~mp2X}X$p00LXeo4`&Br%6BmbIGDM{qT9k#l`o*KJ_q?C$UF zLi+_ol+WJ5rhX$fH*;;SL8XYxSXY!d&EBHDv$wAYwL*v>4)n%#*-AyYfHXf}AmH-_ z5r*vOHuY#-{a6*PAVKJqI?boZXD;URh-h#)Tn?8f4CQKec~`Y%vE3;Dh(x7Q=+yew z<7NhMc|3tgEDj@rA` zgX-9J^kY z6^BW~WimO@HG+x7LQyDJ#M$Fq-^I_hZP`Gi7+MQEml<4sXjr&R9uXNuWG^aGE|Z!w z6p-KrjXS!r%T`38P#HGXCQ}GcD3;12qhl0Gl}f2p#6-%&%@E(j(FN6EdV7?q$c{>5 zT9F3i2*lEe=opnoqb1U*)u!!;xU$Q9SqjC;o|sL%P&1;|#OmXTyvFNw z8YO|mBC**yz|zgr`FlZRq0L5lD&P!vLeHYhZDT=3zUmP1VVD86AA@9 zPGEq4%Qj=DbSKD9VMwGct1~uf4}VeH2{sn!g&`cG@=F32PVZ}D>8=X*v!|9{fUjBZ zT(hiDx90iTiR|go>A7h}jU;HaTkGcCRQr{lEc}JB!34ggJ%0Hpu~P~Tb^;%*23%rRb*J;^igbAdsk=LcOm>0 sdT7V`oUF{Wc%^v8aJH|H2jibhToHP@xFE-<6wRMFnC(=N|37W}8=w12r~m)} literal 0 HcmV?d00001 diff --git a/test/button.bmp b/test/button.bmp new file mode 100644 index 0000000000000000000000000000000000000000..1593ccea49037934f387f73ea40c96ea32c18d41 GIT binary patch literal 3746 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 z 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 G;r|0kJ7VYn literal 0 HcmV?d00001 diff --git a/test/controllermap.c b/test/controllermap.c new file mode 100644 index 0000000000..2c943cf9e3 --- /dev/null +++ b/test/controllermap.c @@ -0,0 +1,432 @@ +/* + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ + +/* Game controller mapping generator */ +/* Gabriel Jacobo */ + +#include +#include +#include + +#include "SDL.h" + +#ifndef SDL_JOYSTICK_DISABLED + +#ifdef __IPHONEOS__ +#define SCREEN_WIDTH 320 +#define SCREEN_HEIGHT 480 +#else +#define SCREEN_WIDTH 512 +#define SCREEN_HEIGHT 317 +#endif + +#define MAP_WIDTH 512 +#define MAP_HEIGHT 317 + +#define MARKER_BUTTON 1 +#define MARKER_AXIS 2 + +typedef struct MappingStep +{ + int x, y; + double angle; + int marker; + char *field; + int axis, button, hat, hat_value; + char mapping[4096]; +}MappingStep; + + +SDL_Texture * +LoadTexture(SDL_Renderer *renderer, char *file, SDL_bool transparent) +{ + SDL_Surface *temp; + SDL_Texture *texture; + + /* Load the sprite image */ + temp = SDL_LoadBMP(file); + if (temp == NULL) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError()); + return NULL; + } + + /* Set transparent pixel as the pixel at (0,0) */ + if (transparent) { + if (temp->format->palette) { + SDL_SetColorKey(temp, SDL_TRUE, *(Uint8 *) temp->pixels); + } else { + switch (temp->format->BitsPerPixel) { + case 15: + SDL_SetColorKey(temp, SDL_TRUE, + (*(Uint16 *) temp->pixels) & 0x00007FFF); + break; + case 16: + SDL_SetColorKey(temp, SDL_TRUE, *(Uint16 *) temp->pixels); + break; + case 24: + SDL_SetColorKey(temp, SDL_TRUE, + (*(Uint32 *) temp->pixels) & 0x00FFFFFF); + break; + case 32: + SDL_SetColorKey(temp, SDL_TRUE, *(Uint32 *) temp->pixels); + break; + } + } + } + + /* Create textures from the image */ + texture = SDL_CreateTextureFromSurface(renderer, temp); + if (!texture) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError()); + SDL_FreeSurface(temp); + return NULL; + } + SDL_FreeSurface(temp); + + /* We're ready to roll. :) */ + return texture; +} + +static void +DrawRect(SDL_Renderer *r, const int x, const int y, const int w, const int h) +{ + const SDL_Rect area = { x, y, w, h }; + SDL_RenderFillRect(r, &area); +} + +static SDL_bool +WatchJoystick(SDL_Joystick * joystick) +{ + SDL_Window *window = NULL; + SDL_Renderer *screen = NULL; + SDL_Texture *target, *background, *button, *axis, *marker; + const char *name = NULL; + SDL_bool retval = SDL_FALSE; + SDL_bool done = SDL_FALSE, next=SDL_FALSE; + SDL_Event event; + SDL_Rect dst; + int i, s, _s; + Uint8 alpha=200, alpha_step = -1; + Uint32 alpha_ticks; + char mapping[4096], temp[4096]; + MappingStep *step; + MappingStep steps[] = { + {342, 132, 0.0, MARKER_BUTTON, "x", -1, -1, -1, -1, ""}, + {387, 167, 0.0, MARKER_BUTTON, "a", -1, -1, -1, -1, ""}, + {431, 132, 0.0, MARKER_BUTTON, "b", -1, -1, -1, -1, ""}, + {389, 101, 0.0, MARKER_BUTTON, "y", -1, -1, -1, -1, ""}, + {174, 132, 0.0, MARKER_BUTTON, "back", -1, -1, -1, -1, ""}, + {233, 132, 0.0, MARKER_BUTTON, "guide", -1, -1, -1, -1, ""}, + {289, 132, 0.0, MARKER_BUTTON, "start", -1, -1, -1, -1, ""}, + {116, 217, 0.0, MARKER_BUTTON, "dpleft", -1, -1, -1, -1, ""}, + {154, 249, 0.0, MARKER_BUTTON, "dpdown", -1, -1, -1, -1, ""}, + {186, 217, 0.0, MARKER_BUTTON, "dpright", -1, -1, -1, -1, ""}, + {154, 188, 0.0, MARKER_BUTTON, "dpup", -1, -1, -1, -1, ""}, + {77, 40, 0.0, MARKER_BUTTON, "leftshoulder", -1, -1, -1, -1, ""}, + {91, 0, 0.0, MARKER_BUTTON, "lefttrigger", -1, -1, -1, -1, ""}, + {396, 36, 0.0, MARKER_BUTTON, "rightshoulder", -1, -1, -1, -1, ""}, + {375, 0, 0.0, MARKER_BUTTON, "righttrigger", -1, -1, -1, -1, ""}, + {75, 154, 0.0, MARKER_BUTTON, "leftstick", -1, -1, -1, -1, ""}, + {305, 230, 0.0, MARKER_BUTTON, "rightstick", -1, -1, -1, -1, ""}, + {75, 154, 0.0, MARKER_AXIS, "leftx", -1, -1, -1, -1, ""}, + {75, 154, 90.0, MARKER_AXIS, "lefty", -1, -1, -1, -1, ""}, + {305, 230, 0.0, MARKER_AXIS, "rightx", -1, -1, -1, -1, ""}, + {305, 230, 90.0, MARKER_AXIS, "righty", -1, -1, -1, -1, ""}, + }; + + /* Create a window to display joystick axis position */ + window = SDL_CreateWindow("Joystick Test", SDL_WINDOWPOS_CENTERED, + SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, + SCREEN_HEIGHT, 0); + if (window == NULL) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create window: %s\n", SDL_GetError()); + return SDL_FALSE; + } + + screen = SDL_CreateRenderer(window, -1, 0); + if (screen == NULL) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create renderer: %s\n", SDL_GetError()); + SDL_DestroyWindow(window); + return SDL_FALSE; + } + + target = SDL_CreateTexture(screen, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_TARGET, MAP_WIDTH, MAP_HEIGHT); + background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); + button = LoadTexture(screen, "button.bmp", SDL_TRUE); + axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); + SDL_RaiseWindow(window); + + /* Print info about the joystick we are watching */ + name = SDL_JoystickName(joystick); + SDL_Log("Watching joystick %d: (%s)\n", SDL_JoystickInstanceID(joystick), + name ? name : "Unknown Joystick"); + SDL_Log("Joystick has %d axes, %d hats, %d balls, and %d buttons\n", + SDL_JoystickNumAxes(joystick), SDL_JoystickNumHats(joystick), + SDL_JoystickNumBalls(joystick), SDL_JoystickNumButtons(joystick)); + + SDL_Log("\n\n\ + ====================================================================================\n\ + Press the buttons on your controller when indicated\n\ + (Your controller may look different than the picture)\n\ + If you want to correct a mistake, press backspace or the back button on your device\n\ + To exit, press ESC\n\ + ====================================================================================\n"); + + /* Initialize mapping with GUID and name */ + SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), temp, SDL_arraysize(temp)); + SDL_snprintf(mapping, SDL_arraysize(mapping), "%s,%s,platform:%s,", + temp, name ? name : "Unknown Joystick", SDL_GetPlatform()); + + /* Loop, getting joystick events! */ + for(s=0; smapping, mapping, SDL_arraysize(step->mapping)); + step->axis = -1; + step->button = -1; + step->hat = -1; + step->hat_value = -1; + SDL_SetClipboardText("TESTING TESTING 123"); + + switch(step->marker) { + case MARKER_AXIS: + marker = axis; + break; + case MARKER_BUTTON: + marker = button; + break; + default: + break; + } + + dst.x = step->x; + dst.y = step->y; + SDL_QueryTexture(marker, NULL, NULL, &dst.w, &dst.h); + next=SDL_FALSE; + + while (!done && !next) { + if (SDL_GetTicks() - alpha_ticks > 5) { + alpha_ticks = SDL_GetTicks(); + alpha += alpha_step; + if (alpha == 255) { + alpha_step = -1; + } + if (alpha < 128) { + alpha_step = 1; + } + } + + SDL_SetRenderTarget(screen, target); + SDL_RenderCopy(screen, background, NULL, NULL); + SDL_SetTextureAlphaMod(marker, alpha); + SDL_SetTextureColorMod(marker, 10, 255, 21); + SDL_RenderCopyEx(screen, marker, NULL, &dst, step->angle, NULL, 0); + SDL_SetRenderTarget(screen, NULL); + SDL_RenderCopy(screen, target, NULL, NULL); + SDL_RenderPresent(screen); + + if (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_JOYAXISMOTION: + if (event.jaxis.value > 20000 || event.jaxis.value < -20000) { + for (_s = 0; _s < s; _s++) { + if (steps[_s].axis == event.jaxis.axis) { + break; + } + } + if (_s == s) { + step->axis = event.jaxis.axis; + SDL_strlcat(mapping, step->field, SDL_arraysize(mapping)); + SDL_snprintf(temp, SDL_arraysize(temp), ":a%u,", event.jaxis.axis); + SDL_strlcat(mapping, temp, SDL_arraysize(mapping)); + s++; + next=SDL_TRUE; + } + } + + break; + case SDL_JOYHATMOTION: + for (_s = 0; _s < s; _s++) { + if (steps[_s].hat == event.jhat.hat && steps[_s].hat_value == event.jhat.value) { + break; + } + } + if (_s == s) { + step->hat = event.jhat.hat; + step->hat_value = event.jhat.value; + SDL_strlcat(mapping, step->field, SDL_arraysize(mapping)); + SDL_snprintf(temp, SDL_arraysize(temp), ":h%u.%u,", event.jhat.hat, event.jhat.value ); + SDL_strlcat(mapping, temp, SDL_arraysize(mapping)); + s++; + next=SDL_TRUE; + } + break; + case SDL_JOYBALLMOTION: + break; + case SDL_JOYBUTTONUP: + for (_s = 0; _s < s; _s++) { + if (steps[_s].button == event.jbutton.button) { + break; + } + } + if (_s == s) { + step->button = event.jbutton.button; + SDL_strlcat(mapping, step->field, SDL_arraysize(mapping)); + SDL_snprintf(temp, SDL_arraysize(temp), ":b%u,", event.jbutton.button); + SDL_strlcat(mapping, temp, SDL_arraysize(mapping)); + s++; + next=SDL_TRUE; + } + break; + case SDL_KEYDOWN: + if (event.key.keysym.sym == SDLK_BACKSPACE || event.key.keysym.sym == SDLK_AC_BACK) { + /* Undo! */ + if (s > 0) { + SDL_strlcpy(mapping, step->mapping, SDL_arraysize(step->mapping)); + s--; + next = SDL_TRUE; + } + break; + } + if ((event.key.keysym.sym != SDLK_ESCAPE)) { + break; + } + /* Fall through to signal quit */ + case SDL_FINGERDOWN: + case SDL_MOUSEBUTTONDOWN: + case SDL_QUIT: + done = SDL_TRUE; + break; + default: + break; + } + } + } + + } + + if (s == SDL_arraysize(steps) ) { + SDL_Log("Mapping:\n\n%s\n\n", mapping); + /* Print to stdout as well so the user can cat the output somewhere */ + printf("%s\n", mapping); + } + + while(SDL_PollEvent(&event)) {}; + + SDL_DestroyRenderer(screen); + SDL_DestroyWindow(window); + return retval; +} + +int +main(int argc, char *argv[]) +{ + const char *name; + int i; + SDL_Joystick *joystick; + + /* Enable standard application logging */ + SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); + + /* Initialize SDL (Note: video is required to start event loop) */ + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError()); + exit(1); + } + + /* Print information about the joysticks */ + SDL_Log("There are %d joysticks attached\n", SDL_NumJoysticks()); + for (i = 0; i < SDL_NumJoysticks(); ++i) { + name = SDL_JoystickNameForIndex(i); + SDL_Log("Joystick %d: %s\n", i, name ? name : "Unknown Joystick"); + joystick = SDL_JoystickOpen(i); + if (joystick == NULL) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_JoystickOpen(%d) failed: %s\n", i, + SDL_GetError()); + } else { + char guid[64]; + SDL_JoystickGetGUIDString(SDL_JoystickGetGUID(joystick), + guid, sizeof (guid)); + SDL_Log(" axes: %d\n", SDL_JoystickNumAxes(joystick)); + SDL_Log(" balls: %d\n", SDL_JoystickNumBalls(joystick)); + SDL_Log(" hats: %d\n", SDL_JoystickNumHats(joystick)); + SDL_Log(" buttons: %d\n", SDL_JoystickNumButtons(joystick)); + SDL_Log("instance id: %d\n", SDL_JoystickInstanceID(joystick)); + SDL_Log(" guid: %s\n", guid); + SDL_JoystickClose(joystick); + } + } + +#ifdef ANDROID + if (SDL_NumJoysticks() > 0) { +#else + if (argv[1]) { +#endif + SDL_bool reportederror = SDL_FALSE; + SDL_bool keepGoing = SDL_TRUE; + SDL_Event event; +#ifdef ANDROID + joystick = SDL_JoystickOpen(0); +#else + joystick = SDL_JoystickOpen(atoi(argv[1])); +#endif + while ( keepGoing ) { + if (joystick == NULL) { + if ( !reportederror ) { + SDL_Log("Couldn't open joystick %d: %s\n", atoi(argv[1]), SDL_GetError()); + keepGoing = SDL_FALSE; + reportederror = SDL_TRUE; + } + } else { + reportederror = SDL_FALSE; + keepGoing = WatchJoystick(joystick); + SDL_JoystickClose(joystick); + } + + joystick = NULL; + if (keepGoing) { + SDL_Log("Waiting for attach\n"); + } + while (keepGoing) { + SDL_WaitEvent(&event); + if ((event.type == SDL_QUIT) || (event.type == SDL_FINGERDOWN) + || (event.type == SDL_MOUSEBUTTONDOWN)) { + keepGoing = SDL_FALSE; + } else if (event.type == SDL_JOYDEVICEADDED) { + joystick = SDL_JoystickOpen(atoi(argv[1])); + break; + } + } + } + } + else { + SDL_Log("\n\nUsage: ./controllermap number\nFor example: ./controllermap 0\nOr: ./controllermap 0 >> gamecontrollerdb.txt"); + } + SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); + +#ifdef ANDROID + exit(0); +#else + return 0; +#endif +} + +#else + +int +main(int argc, char *argv[]) +{ + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick support.\n"); + exit(1); +} + +#endif diff --git a/test/testgamecontroller.c b/test/testgamecontroller.c index cbdf8c3b14..3d9101ab30 100644 --- a/test/testgamecontroller.c +++ b/test/testgamecontroller.c @@ -225,6 +225,8 @@ main(int argc, char *argv[]) SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError()); return 1; } + + SDL_GameControllerAddMappingsFromFile("gamecontrollerdb.txt"); /* Print information about the controller */ for (i = 0; i < SDL_NumJoysticks(); ++i) { From a1c261eb05ccda94c66237d0b51f40aa74a39319 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 2 Dec 2013 19:51:48 -0300 Subject: [PATCH 149/402] Adding WhatsNew.txt changes ...before I forget them. --- WhatsNew.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/WhatsNew.txt b/WhatsNew.txt index 36afc564c9..7987383179 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -4,12 +4,22 @@ This is a list of major changes in SDL's version history. --------------------------------------------------------------------------- 2.0.2: --------------------------------------------------------------------------- +General: +* Added an API to load a database of Game Controller mappings from a file: + SDL_GameControllerAddMappingsFromFile + +Windows: +* Support for OpenGL ES 2.x contexts using either WGL or EGL (natively via + the driver or emulated through ANGLE) Android: * Joystick support (minimum SDK version required to build SDL is now 12, the required runtime version remains at 10, but on such devices joystick support won't be available). +Linux: +* Fixed fullscreen and focused behavior when receiving NotifyGrab events + --------------------------------------------------------------------------- 2.0.1: From ee128a4a3cf92b4d6f4bdcda83b97c0469ec33a4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 2 Dec 2013 23:54:35 -0800 Subject: [PATCH 150/402] Fixed error return value in SDL_EGL_CreateSurface(), thanks to Mike Kasprzak --- src/video/SDL_egl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 4b87f19d94..1e66fb7d9a 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -452,7 +452,7 @@ EGLSurface * SDL_EGL_CreateSurface(_THIS, NativeWindowType nw) { if (SDL_EGL_ChooseConfig(_this) != 0) { - return -1; + return EGL_NO_SURFACE; } return _this->egl_data->eglCreateWindowSurface( From bccddab02d65ae8dfc7069587d889fb99e04fe99 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 3 Dec 2013 12:01:28 -0300 Subject: [PATCH 151/402] Adds SDL_GameControllerAddMappingsFromRW, updates controllermap SDL_GameControllerAddMappingsFromFile is now a convenience macro. controllermap can now skip bindings by pressing space or clicking/touching the screen. --- include/SDL_gamecontroller.h | 13 +++++++++++-- src/joystick/SDL_gamecontroller.c | 19 ++++++++++++------- test/controllermap.c | 18 +++++++++++++++--- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/include/SDL_gamecontroller.h b/include/SDL_gamecontroller.h index 84d58d89e3..3d49125f23 100644 --- a/include/SDL_gamecontroller.h +++ b/include/SDL_gamecontroller.h @@ -109,12 +109,21 @@ typedef struct SDL_GameControllerButtonBind */ /** - * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform() * A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt * + * If \c freerw is non-zero, the stream will be closed after being read. + * * \return number of mappings added, -1 on error */ -extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromFile( const char* mapDB ); +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW( SDL_RWops * rw, int freerw ); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) /** * Add or update an existing mapping configuration diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 1563f51416..59c56fc469 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -658,32 +658,37 @@ void SDL_PrivateGameControllerRefreshMapping( ControllerMapping_t *pControllerMa * Add or update an entry into the Mappings Database */ int -SDL_GameControllerAddMappingsFromFile( const char* mapDB ) +SDL_GameControllerAddMappingsFromRW( SDL_RWops * rw, int freerw ) { const char *platform = SDL_GetPlatform(); - SDL_RWops *rw; int controllers = 0; char *buf, *line, *line_end, *tmp, *comma, line_platform[64]; size_t db_size, platform_len; - rw = SDL_RWFromFile(mapDB, "rb"); if (rw == NULL) { - return SDL_SetError("Could not open %s", mapDB); + return SDL_SetError("Invalid RWops"); } db_size = SDL_RWsize(rw); buf = (char *) SDL_malloc(db_size + 1); if (buf == NULL) { - SDL_RWclose(rw); + if (freerw) { + SDL_RWclose(rw); + } return SDL_SetError("Could allocate space to not read DB into memory"); } if (SDL_RWread(rw, buf, db_size, 1) != 1) { - SDL_RWclose(rw); + if (freerw) { + SDL_RWclose(rw); + } SDL_free(buf); return SDL_SetError("Could not read DB"); } - SDL_RWclose(rw); + + if (freerw) { + SDL_RWclose(rw); + } buf[db_size] = '\0'; line = buf; diff --git a/test/controllermap.c b/test/controllermap.c index 2c943cf9e3..dc943cb80e 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -144,7 +144,7 @@ WatchJoystick(SDL_Joystick * joystick) }; /* Create a window to display joystick axis position */ - window = SDL_CreateWindow("Joystick Test", SDL_WINDOWPOS_CENTERED, + window = SDL_CreateWindow("Game Controller Map", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, 0); if (window == NULL) { @@ -178,6 +178,7 @@ WatchJoystick(SDL_Joystick * joystick) Press the buttons on your controller when indicated\n\ (Your controller may look different than the picture)\n\ If you want to correct a mistake, press backspace or the back button on your device\n\ + To skip a button, press SPACE or click/touch the screen\n\ To exit, press ESC\n\ ====================================================================================\n"); @@ -287,6 +288,12 @@ WatchJoystick(SDL_Joystick * joystick) next=SDL_TRUE; } break; + case SDL_FINGERDOWN: + case SDL_MOUSEBUTTONDOWN: + /* Skip this step */ + s++; + next=SDL_TRUE; + break; case SDL_KEYDOWN: if (event.key.keysym.sym == SDLK_BACKSPACE || event.key.keysym.sym == SDLK_AC_BACK) { /* Undo! */ @@ -297,12 +304,17 @@ WatchJoystick(SDL_Joystick * joystick) } break; } + if (event.key.keysym.sym == SDLK_SPACE) { + /* Skip this step */ + s++; + next=SDL_TRUE; + break; + } + if ((event.key.keysym.sym != SDLK_ESCAPE)) { break; } /* Fall through to signal quit */ - case SDL_FINGERDOWN: - case SDL_MOUSEBUTTONDOWN: case SDL_QUIT: done = SDL_TRUE; break; From 35b23d65e1759eb955a0e502996b312907849aef Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 3 Dec 2013 12:09:58 -0300 Subject: [PATCH 152/402] [Android] Signal the resume semaphore after pushing the relevant events Ref: Request in #2242 --- src/core/android/SDL_android.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 4dc78bbf59..0bc9ad01e1 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -320,16 +320,15 @@ void Java_org_libsdl_app_SDLActivity_nativeResume( __android_log_print(ANDROID_LOG_VERBOSE, "SDL", "nativeResume()"); if (Android_Window) { + SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND); + SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND); + SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); + SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESTORED, 0, 0); /* Signal the resume semaphore so the event loop knows to resume and restore the GL Context * We can't restore the GL Context here because it needs to be done on the SDL main thread * and this function will be called from the Java thread instead. */ if (!SDL_SemValue(Android_ResumeSem)) SDL_SemPost(Android_ResumeSem); - - SDL_SendAppEvent(SDL_APP_WILLENTERFOREGROUND); - SDL_SendAppEvent(SDL_APP_DIDENTERFOREGROUND); - SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_FOCUS_GAINED, 0, 0); - SDL_SendWindowEvent(Android_Window, SDL_WINDOWEVENT_RESTORED, 0, 0); } } From 6c68ffede85073662a418fdc40487cb673122b1d Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 5 Dec 2013 10:51:38 -0300 Subject: [PATCH 153/402] [Android] Handle native thread finishing when not commanded from the Java side --- .../src/org/libsdl/app/SDLActivity.java | 27 +++++++++++++++++++ test/controllermap.c | 4 --- test/testjoystick.c | 5 ---- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 966d23639a..045130efb3 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -26,6 +26,7 @@ public class SDLActivity extends Activity { // Keep track of the paused state public static boolean mIsPaused = false, mIsSurfaceReady = false, mHasFocus = true; + public static boolean mExitCalledFromJava; // Main components protected static SDLActivity mSingleton; @@ -63,6 +64,9 @@ protected void onCreate(Bundle savedInstanceState) { // Set up the surface mSurface = new SDLSurface(getApplication()); + // Make sure this variable is initialized here! + mExitCalledFromJava = false; + if(Build.VERSION.SDK_INT >= 12) { mJoystickHandler = new SDLJoystickHandler_API12(); } @@ -115,6 +119,7 @@ protected void onDestroy() { super.onDestroy(); Log.v("SDL", "onDestroy()"); // Send a quit message to the application + SDLActivity.mExitCalledFromJava = true; SDLActivity.nativeQuit(); // Now wait for the SDL thread to quit @@ -168,6 +173,12 @@ public static void handleResume() { mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true); } } + + /* The native thread has finished */ + public static void handleNativeExit() { + SDLActivity.mSDLThread = null; + mSingleton.finish(); + } // Messages from the SDLMain thread @@ -616,6 +627,22 @@ public void surfaceChanged(SurfaceHolder holder, SDLActivity.mSDLThread = new Thread(new SDLMain(), "SDLThread"); enableSensor(Sensor.TYPE_ACCELEROMETER, true); SDLActivity.mSDLThread.start(); + + // Set up a listener thread to catch when the native thread ends + new Thread(new Runnable(){ + public void run(){ + try { + SDLActivity.mSDLThread.join(); + } + catch(Exception e){} + finally{ + // Native thread has finished + if (! SDLActivity.mExitCalledFromJava) { + SDLActivity.handleNativeExit(); + } + } + } + }).start(); } } diff --git a/test/controllermap.c b/test/controllermap.c index dc943cb80e..c17f17c390 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -425,11 +425,7 @@ main(int argc, char *argv[]) } SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); -#ifdef ANDROID - exit(0); -#else return 0; -#endif } #else diff --git a/test/testjoystick.c b/test/testjoystick.c index 7d3c573df9..d9db6e8ea7 100644 --- a/test/testjoystick.c +++ b/test/testjoystick.c @@ -287,11 +287,6 @@ main(int argc, char *argv[]) } SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); -#ifdef ANDROID - exit(0); -#else - return 0; -#endif } #else From eccce0921e7644585e9de2e34d1e5c2125e329b0 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 5 Dec 2013 09:14:56 -0800 Subject: [PATCH 154/402] Clean up the cursor clipping area when quitting SDL. This fixes the cursor being clipped after the streaming client quits when streaming Dungeons of Dredmor --- src/events/SDL_mouse.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 0886f54fa0..0bb0b184df 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -362,6 +362,7 @@ SDL_MouseQuit(void) SDL_Cursor *cursor, *next; SDL_Mouse *mouse = SDL_GetMouse(); + SDL_SetRelativeMouseMode(SDL_FALSE); SDL_ShowCursor(1); cursor = mouse->cursors; From ab6ec59af23740c23fed6b43c8ff68d961cdb557 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 5 Dec 2013 09:29:04 -0800 Subject: [PATCH 155/402] Added code missed in the resolve --- src/video/windows/SDL_windowsevents.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index bbab2da2cb..9e82dc9358 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -418,6 +418,8 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) if (SDL_GetKeyboardFocus() == data->window) { SDL_SetKeyboardFocus(NULL); } + + ClipCursor(NULL); } } returnCode = 0; From af2b29bf01b0c3b507b8158e7ba5738571b0018d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 5 Dec 2013 09:54:22 -0800 Subject: [PATCH 156/402] Added missing header for file IO --- include/SDL_gamecontroller.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/SDL_gamecontroller.h b/include/SDL_gamecontroller.h index 3d49125f23..891f356335 100644 --- a/include/SDL_gamecontroller.h +++ b/include/SDL_gamecontroller.h @@ -30,6 +30,7 @@ #include "SDL_stdinc.h" #include "SDL_error.h" +#include "SDL_rwops.h" #include "SDL_joystick.h" #include "begin_code.h" From adfd266b4bacbd4bbcd4ac211272e03124176fbb Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 6 Dec 2013 08:24:00 -0800 Subject: [PATCH 157/402] Fixed compiler warning on Visual Studio --- src/joystick/SDL_gamecontroller.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 59c56fc469..d0329cd982 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -668,9 +668,9 @@ SDL_GameControllerAddMappingsFromRW( SDL_RWops * rw, int freerw ) if (rw == NULL) { return SDL_SetError("Invalid RWops"); } - db_size = SDL_RWsize(rw); + db_size = (size_t)SDL_RWsize(rw); - buf = (char *) SDL_malloc(db_size + 1); + buf = (char *)SDL_malloc(db_size + 1); if (buf == NULL) { if (freerw) { SDL_RWclose(rw); From afbb362c5f9e4e7f9f0152d8c54a402ad325c92a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 6 Dec 2013 09:13:31 -0800 Subject: [PATCH 158/402] Fixed detecting the wired XBox 360 controller on Linux Also added some more debug output to detect issues --- src/joystick/SDL_gamecontroller.c | 11 ++++++++--- src/joystick/SDL_gamecontrollerdb.h | 2 +- src/joystick/linux/SDL_sysjoystick.c | 15 ++++++++++++--- src/joystick/sort_controllers.py | 2 ++ 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index d0329cd982..edcf5e41eb 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -743,6 +743,7 @@ SDL_GameControllerAddMapping( const char *mappingString ) pchGUID = SDL_PrivateGetControllerGUIDFromMappingString( mappingString ); if (!pchGUID) { + SDL_SetError("Couldn't parse GUID from %s", mappingString); return -1; } #ifdef SDL_JOYSTICK_DINPUT @@ -753,17 +754,21 @@ SDL_GameControllerAddMapping( const char *mappingString ) jGUID = SDL_JoystickGetGUIDFromString(pchGUID); SDL_free(pchGUID); - pControllerMapping = SDL_PrivateGetControllerMappingForGUID(&jGUID); - pchName = SDL_PrivateGetControllerNameFromMappingString( mappingString ); - if (!pchName) return -1; + if (!pchName) { + SDL_SetError("Couldn't parse name from %s", mappingString); + return -1; + } pchMapping = SDL_PrivateGetControllerMappingFromMappingString( mappingString ); if (!pchMapping) { + SDL_SetError("Couldn't parse %s", mappingString); SDL_free( pchName ); return -1; } + pControllerMapping = SDL_PrivateGetControllerMappingForGUID(&jGUID); + if (pControllerMapping) { /* Update existing mapping */ SDL_free( pControllerMapping->name ); diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 5954ccf745..21f9aaadec 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -57,7 +57,7 @@ static const char *s_ControllerMappings [] = "030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", - "03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3," + "03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index 43990b42f6..b7b1c5327a 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -509,10 +509,11 @@ ConfigJoystick(SDL_Joystick * joystick, int fd) if (test_bit(i, absbit)) { struct input_absinfo absinfo; - if (ioctl(fd, EVIOCGABS(i), &absinfo) < 0) + if (ioctl(fd, EVIOCGABS(i), &absinfo) < 0) { continue; + } #ifdef DEBUG_INPUT_EVENTS - printf("Joystick has absolute axis: %x\n", i); + printf("Joystick has absolute axis: 0x%.2x\n", i); printf("Values = { %d, %d, %d, %d, %d }\n", absinfo.value, absinfo.minimum, absinfo.maximum, absinfo.fuzz, absinfo.flat); @@ -539,9 +540,17 @@ ConfigJoystick(SDL_Joystick * joystick, int fd) } for (i = ABS_HAT0X; i <= ABS_HAT3Y; i += 2) { if (test_bit(i, absbit) || test_bit(i + 1, absbit)) { + struct input_absinfo absinfo; + + if (ioctl(fd, EVIOCGABS(i), &absinfo) < 0) { + continue; + } #ifdef DEBUG_INPUT_EVENTS printf("Joystick has hat %d\n", (i - ABS_HAT0X) / 2); -#endif + printf("Values = { %d, %d, %d, %d, %d }\n", + absinfo.value, absinfo.minimum, absinfo.maximum, + absinfo.fuzz, absinfo.flat); +#endif /* DEBUG_INPUT_EVENTS */ ++joystick->nhats; } } diff --git a/src/joystick/sort_controllers.py b/src/joystick/sort_controllers.py index 344a423281..03b857a022 100755 --- a/src/joystick/sort_controllers.py +++ b/src/joystick/sort_controllers.py @@ -29,6 +29,8 @@ def write_controllers(): global controller_guids for entry in sorted(controllers, key=lambda entry: entry[2]): line = "".join(entry) + "\n" + if not line.endswith(",\n") and not line.endswith("*/\n"): + print "Warning: '%s' is missing a comma at the end of the line" % (line) if (entry[1] in controller_guids): print "Warning: entry '%s' is duplicate of entry '%s'" % (entry[2], controller_guids[entry[1]][2]) controller_guids[entry[1]] = entry From 0b883719cd4c30284e2bc296df84b82b241fc414 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 6 Dec 2013 16:12:18 -0800 Subject: [PATCH 159/402] Fixed crash if no window has keyboard focus --- src/video/cocoa/SDL_cocoamousetap.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoamousetap.m b/src/video/cocoa/SDL_cocoamousetap.m index 8f95ac3515..5b61270f58 100644 --- a/src/video/cocoa/SDL_cocoamousetap.m +++ b/src/video/cocoa/SDL_cocoamousetap.m @@ -63,7 +63,7 @@ SDL_MouseEventTapData *tapdata = (SDL_MouseEventTapData*)refcon; SDL_Mouse *mouse = SDL_GetMouse(); SDL_Window *window = SDL_GetKeyboardFocus(); - NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; + NSWindow *nswindow; NSRect windowRect; CGPoint eventLocation; @@ -93,6 +93,7 @@ } /* This is the same coordinate system as Cocoa uses. */ + nswindow = ((SDL_WindowData *) window->driverdata)->nswindow; eventLocation = CGEventGetUnflippedLocation(event); windowRect = [nswindow contentRectForFrameRect:[nswindow frame]]; From 8f0362ff8af9cf83b792c578fde695a24c4d7ece Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 7 Dec 2013 11:19:52 -0800 Subject: [PATCH 160/402] Associate the environment with any thread that calls Android_JNI_GetEnv(), in case it's been manually created with pthread_create() or C++11. --- src/core/android/SDL_android.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 0bc9ad01e1..a18cb4f7dd 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -98,12 +98,10 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) * Create mThreadKey so we can keep track of the JNIEnv assigned to each thread * Refer to http://developer.android.com/guide/practices/design/jni.html for the rationale behind this */ - if (pthread_key_create(&mThreadKey, Android_JNI_ThreadDestroyed)) { + if (pthread_key_create(&mThreadKey, Android_JNI_ThreadDestroyed) != 0) { __android_log_print(ANDROID_LOG_ERROR, "SDL", "Error initializing pthread key"); } - else { - Android_JNI_SetupThread(); - } + Android_JNI_SetupThread(); return JNI_VERSION_1_4; } @@ -454,7 +452,8 @@ SDL_bool Android_JNI_GetAccelerometerValues(float values[3]) return retval; } -static void Android_JNI_ThreadDestroyed(void* value) { +static void Android_JNI_ThreadDestroyed(void* value) +{ /* The thread is being destroyed, detach it from the Java VM and set the mThreadKey value to NULL as required */ JNIEnv *env = (JNIEnv*) value; if (env != NULL) { @@ -463,7 +462,8 @@ static void Android_JNI_ThreadDestroyed(void* value) { } } -JNIEnv* Android_JNI_GetEnv(void) { +JNIEnv* Android_JNI_GetEnv(void) +{ /* From http://developer.android.com/guide/practices/jni.html * All threads are Linux threads, scheduled by the kernel. * They're usually started from managed code (using Thread.start), but they can also be created elsewhere and then @@ -483,10 +483,6 @@ JNIEnv* Android_JNI_GetEnv(void) { return 0; } - return env; -} - -int Android_JNI_SetupThread(void) { /* From http://developer.android.com/guide/practices/jni.html * Threads attached through JNI must call DetachCurrentThread before they exit. If coding this directly is awkward, * in Android 2.0 (Eclair) and higher you can use pthread_key_create to define a destructor function that will be @@ -496,8 +492,14 @@ int Android_JNI_SetupThread(void) { * Note: You can call this function any number of times for the same thread, there's no harm in it * (except for some lost CPU cycles) */ - JNIEnv *env = Android_JNI_GetEnv(); pthread_setspecific(mThreadKey, (void*) env); + + return env; +} + +int Android_JNI_SetupThread(void) +{ + Android_JNI_GetEnv(); return 1; } From e6193bbf484c18c54b2e048f2d33cca33ce8df58 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 9 Dec 2013 15:17:20 -0500 Subject: [PATCH 161/402] Hook up SDL_acos and SDL_asin properly. --- CMakeLists.txt | 4 ++-- configure | 2 +- configure.in | 2 +- include/SDL_config.h.cmake | 2 ++ include/SDL_config.h.in | 2 ++ include/SDL_config_android.h | 2 ++ include/SDL_config_iphoneos.h | 2 ++ include/SDL_config_macosx.h | 2 ++ include/SDL_config_psp.h | 2 ++ include/SDL_config_windows.h | 2 ++ src/libm/s_atan.c | 25 ------------------------ src/stdlib/SDL_stdlib.c | 36 +++++++++++++++++++++++++++++++++++ 12 files changed, 54 insertions(+), 29 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1d15fb274a..7455ab84bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -473,8 +473,8 @@ if(LIBC) malloc calloc realloc free qsort abs memset memcpy memmove memcmp strlen _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _ultoa strtol strtoul strtoll strtod atoi atof strcmp strncmp - _stricmp _strnicmp sscanf atan atan2 ceil copysign cos cosf fabs - floor log pow scalbn sin sinf sqrt) + _stricmp _strnicmp sscanf atan atan2 acos asin ceil copysign cos + cosf fabs floor log pow scalbn sin sinf sqrt) string(TOUPPER ${_FN} _UPPER) set(HAVE_${_UPPER} 1) endforeach() diff --git a/configure b/configure index 0e10125a2a..bd2c5d2175 100755 --- a/configure +++ b/configure @@ -16628,7 +16628,7 @@ if test "x$ac_cv_lib_m_pow" = xyes; then : LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm" fi - for ac_func in atan atan2 ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt + for ac_func in atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.in b/configure.in index 8d116a58dd..7c3a1b1ced 100644 --- a/configure.in +++ b/configure.in @@ -271,7 +271,7 @@ if test x$enable_libc = xyes; then AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname) AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"]) - AC_CHECK_FUNCS(atan atan2 ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt) + AC_CHECK_FUNCS(atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt) AC_CHECK_LIB(iconv, iconv_open, [LIBS="$LIBS -liconv"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -liconv"]) AC_CHECK_FUNCS(iconv) diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 27e5f734f7..08237a87ae 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -130,6 +130,8 @@ #cmakedefine HAVE_M_PI 1 #cmakedefine HAVE_ATAN 1 #cmakedefine HAVE_ATAN2 1 +#cmakedefine HAVE_ACOS 1 +#cmakedefine HAVE_ASIN 1 #cmakedefine HAVE_CEIL 1 #cmakedefine HAVE_COPYSIGN 1 #cmakedefine HAVE_COS 1 diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 574d9ae7f2..536b297744 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -133,6 +133,8 @@ #undef HAVE_M_PI #undef HAVE_ATAN #undef HAVE_ATAN2 +#undef HAVE_ACOS +#undef HAVE_ASIN #undef HAVE_CEIL #undef HAVE_COPYSIGN #undef HAVE_COS diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h index 0826415c68..489b9ff329 100644 --- a/include/SDL_config_android.h +++ b/include/SDL_config_android.h @@ -87,6 +87,8 @@ #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 #define HAVE_COS 1 diff --git a/include/SDL_config_iphoneos.h b/include/SDL_config_iphoneos.h index ade2966141..ae8a12bd83 100644 --- a/include/SDL_config_iphoneos.h +++ b/include/SDL_config_iphoneos.h @@ -85,6 +85,8 @@ #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 #define HAVE_COS 1 diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h index 9f2f76e3f9..7825e702c6 100644 --- a/include/SDL_config_macosx.h +++ b/include/SDL_config_macosx.h @@ -104,6 +104,8 @@ #define HAVE_SYSCTLBYNAME 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_COREAUDIO 1 diff --git a/include/SDL_config_psp.h b/include/SDL_config_psp.h index 31ac2b2b70..989f7d8c72 100644 --- a/include/SDL_config_psp.h +++ b/include/SDL_config_psp.h @@ -85,6 +85,8 @@ #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 #define HAVE_COS 1 diff --git a/include/SDL_config_windows.h b/include/SDL_config_windows.h index 6bde3f86fb..aa2f984510 100644 --- a/include/SDL_config_windows.h +++ b/include/SDL_config_windows.h @@ -118,6 +118,8 @@ typedef unsigned int uintptr_t; #define HAVE__STRNICMP 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 +#define HAVE_ACOS 1 +#define HAVE_ASIN 1 #define HAVE_CEIL 1 #define HAVE_COS 1 #define HAVE_COSF 1 diff --git a/src/libm/s_atan.c b/src/libm/s_atan.c index 2f24b29b08..970ea4dbfa 100644 --- a/src/libm/s_atan.c +++ b/src/libm/s_atan.c @@ -113,28 +113,3 @@ double atan(double x) } libm_hidden_def(atan) -double SDL_acos(double val) -{ - double result; - if (val == -1.0) { - result = M_PI; - } else { - result = SDL_atan(SDL_sqrt(1.0 - val * val) / val); - if (result < 0.0) - { - result += M_PI; - } - } - return result; -} - -double SDL_asin(double val) -{ - double result; - if (val == -1.0) { - result = -(M_PI / 2.0); - } else { - result = (M_PI / 2.0) - SDL_acos(val); - } - return result; -} diff --git a/src/stdlib/SDL_stdlib.c b/src/stdlib/SDL_stdlib.c index aa57d41b13..2cb31cb063 100644 --- a/src/stdlib/SDL_stdlib.c +++ b/src/stdlib/SDL_stdlib.c @@ -46,6 +46,42 @@ SDL_atan2(double x, double y) #endif /* HAVE_ATAN2 */ } +double +SDL_acos(double val) +{ +#if defined(HAVE_ACOS) + return acos(val); +#else + double result; + if (val == -1.0) { + result = M_PI; + } else { + result = SDL_atan(SDL_sqrt(1.0 - val * val) / val); + if (result < 0.0) + { + result += M_PI; + } + } + return result; +#endif +} + +double +SDL_asin(double val) +{ +#if defined(HAVE_ASIN) + return asin(val); +#else + double result; + if (val == -1.0) { + result = -(M_PI / 2.0); + } else { + result = (M_PI / 2.0) - SDL_acos(val); + } + return result; +#endif +} + double SDL_ceil(double x) { From 121f4d82a38b2cb3f16f0d8eb1392983f0fc4cdf Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 10 Dec 2013 16:24:11 -0300 Subject: [PATCH 162/402] [Android] Hotplugging support for joysticks --- WhatsNew.txt | 1 + .../src/org/libsdl/app/SDLActivity.java | 173 ++++--- src/core/android/SDL_android.c | 97 ++-- src/core/android/SDL_android.h | 5 +- src/joystick/android/SDL_sysjoystick.c | 423 ++++++++++++------ ...{SDL_sysjoystick.h => SDL_sysjoystick_c.h} | 29 +- 6 files changed, 434 insertions(+), 294 deletions(-) rename src/joystick/android/{SDL_sysjoystick.h => SDL_sysjoystick_c.h} (52%) diff --git a/WhatsNew.txt b/WhatsNew.txt index 7987383179..e7cec5b609 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -16,6 +16,7 @@ Android: * Joystick support (minimum SDK version required to build SDL is now 12, the required runtime version remains at 10, but on such devices joystick support won't be available). +* Hotplugging support for joysticks Linux: * Fixed fullscreen and focused behavior when receiving NotifyGrab events diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 045130efb3..914e19ca83 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -256,9 +256,9 @@ boolean sendCommand(int command, Object data) { public static native void nativePause(); public static native void nativeResume(); public static native void onNativeResize(int x, int y, int format); - public static native int onNativePadDown(int padId, int keycode); - public static native int onNativePadUp(int padId, int keycode); - public static native void onNativeJoy(int joyId, int axis, + public static native int onNativePadDown(int device_id, int keycode); + public static native int onNativePadUp(int device_id, int keycode); + public static native void onNativeJoy(int device_id, int axis, float value); public static native void onNativeKeyDown(int keycode); public static native void onNativeKeyUp(int keycode); @@ -270,6 +270,10 @@ public static native void onNativeTouch(int touchDevId, int pointerFingerId, public static native void onNativeSurfaceChanged(); public static native void onNativeSurfaceDestroyed(); public static native void nativeFlipBuffers(); + public static native int nativeAddJoystick(int device_id, String name, + int is_accelerometer, int nbuttons, + int naxes, int nhats, int nballs); + public static native int nativeRemoveJoystick(int device_id); public static void flipBuffers() { SDLActivity.nativeFlipBuffers(); @@ -460,29 +464,16 @@ public static int[] inputGetInputDeviceIds(int sources) { } // Joystick glue code, just a series of stubs that redirect to the SDLJoystickHandler instance - public static int getNumJoysticks() { - return mJoystickHandler.getNumJoysticks(); - } - - public static String getJoystickName(int joy) { - return mJoystickHandler.getJoystickName(joy); - } - - public static int getJoystickAxes(int joy) { - return mJoystickHandler.getJoystickAxes(joy); - } - public static boolean handleJoystickMotionEvent(MotionEvent event) { return mJoystickHandler.handleMotionEvent(event); } - /** - * @param devId the device id to get opened joystick id for. - * @return joystick id for device id or -1 if there is none. - */ - public static int getJoyId(int devId) { - return mJoystickHandler.getJoyId(devId); + public static void pollInputDevices() { + if (SDLActivity.mSDLThread != null) { + mJoystickHandler.pollInputDevices(); + } } + } /** @@ -660,16 +651,13 @@ public boolean onKey(View v, int keyCode, KeyEvent event) { if ( (event.getSource() & 0x00000401) != 0 || /* API 12: SOURCE_GAMEPAD */ (event.getSource() & InputDevice.SOURCE_DPAD) != 0 ) { - int id = SDLActivity.getJoyId( event.getDeviceId() ); - if (id != -1) { - if (event.getAction() == KeyEvent.ACTION_DOWN) { - if (SDLActivity.onNativePadDown(id, keyCode) == 0) { - return true; - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - if (SDLActivity.onNativePadUp(id, keyCode) == 0) { - return true; - } + if (event.getAction() == KeyEvent.ACTION_DOWN) { + if (SDLActivity.onNativePadDown(event.getDeviceId(), keyCode) == 0) { + return true; + } + } else if (event.getAction() == KeyEvent.ACTION_UP) { + if (SDLActivity.onNativePadUp(event.getDeviceId(), keyCode) == 0) { + return true; } } } @@ -916,36 +904,20 @@ public boolean deleteSurroundingText(int beforeLength, int afterLength) { /* A null joystick handler for API level < 12 devices (the accelerometer is handled separately) */ class SDLJoystickHandler { - public int getNumJoysticks() { - return 0; - } - - public String getJoystickName(int joy) { - return ""; - } - - public int getJoystickAxes(int joy) { - return 0; - } - - /** - * @param devId the device id to get opened joystick id for. - * @return joystick id for device id or -1 if there is none. - */ - public int getJoyId(int devId) { - return -1; - } public boolean handleMotionEvent(MotionEvent event) { return false; } + + public void pollInputDevices() { + } } /* Actual joystick functionality available for API >= 12 devices */ class SDLJoystickHandler_API12 extends SDLJoystickHandler { class SDLJoystick { - public int id; + public int device_id; public String name; public ArrayList axes; } @@ -953,54 +925,72 @@ class SDLJoystick { private ArrayList mJoysticks; public SDLJoystickHandler_API12() { - /* FIXME: Move the joystick initialization code to its own function and support hotplugging of devices */ mJoysticks = new ArrayList(); - + } + + @Override + public void pollInputDevices() { int[] deviceIds = InputDevice.getDeviceIds(); - for(int i=0; i(); - - for (InputDevice.MotionRange range : joystickDevice.getMotionRanges()) { - if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { - joystick.axes.add(range); - } + // It helps processing the device ids in reverse order + // For example, in the case of the XBox 360 wireless dongle, + // so the first controller seen by SDL matches what the receiver + // considers to be the first controller + + for(int i=deviceIds.length-1; i>-1; i--) { + SDLJoystick joystick = getJoystick(deviceIds[i]); + if (joystick == null) { + joystick = new SDLJoystick(); + InputDevice joystickDevice = InputDevice.getDevice(deviceIds[i]); + if( (joystickDevice.getSources() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { + joystick.device_id = deviceIds[i]; + joystick.name = joystickDevice.getName(); + joystick.axes = new ArrayList(); + + for (InputDevice.MotionRange range : joystickDevice.getMotionRanges()) { + if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { + joystick.axes.add(range); + } + } + + mJoysticks.add(joystick); + SDLActivity.nativeAddJoystick(joystick.device_id, joystick.name, 0, -1, joystick.axes.size(), 0, 0); } - - mJoysticks.add(joystick); } } + + /* Check removed devices */ + ArrayList removedDevices = new ArrayList(); + for(int i=0; i < mJoysticks.size(); i++) { + int device_id = mJoysticks.get(i).device_id; + int j; + for (j=0; j < deviceIds.length; j++) { + if (device_id == deviceIds[j]) break; + } + if (j == deviceIds.length) { + removedDevices.add(device_id); + } + } + + for(int i=0; i < removedDevices.size(); i++) { + int device_id = removedDevices.get(i); + SDLActivity.nativeRemoveJoystick(device_id); + for (int j=0; j < mJoysticks.size(); j++) { + if (mJoysticks.get(j).device_id == device_id) { + mJoysticks.remove(j); + break; + } + } + } } - @Override - public int getNumJoysticks() { - return mJoysticks.size(); - } - - @Override - public String getJoystickName(int joy) { - return mJoysticks.get(joy).name; - } - - @Override - public int getJoystickAxes(int joy) { - return mJoysticks.get(joy).axes.size(); - } - - @Override - public int getJoyId(int devId) { + protected SDLJoystick getJoystick(int device_id) { for(int i=0; i < mJoysticks.size(); i++) { - if (mJoysticks.get(i).id == devId) { - return i; + if (mJoysticks.get(i).device_id == device_id) { + return mJoysticks.get(i); } } - return -1; + return null; } @Override @@ -1010,14 +1000,13 @@ public boolean handleMotionEvent(MotionEvent event) { int action = event.getActionMasked(); switch(action) { case MotionEvent.ACTION_MOVE: - int id = getJoyId( event.getDeviceId() ); - if ( id != -1 ) { - SDLJoystick joystick = mJoysticks.get(id); + SDLJoystick joystick = getJoystick(event.getDeviceId()); + if ( joystick != null ) { for (int i = 0; i < joystick.axes.size(); i++) { InputDevice.MotionRange range = joystick.axes.get(i); /* Normalize the value to -1...1 */ float value = ( event.getAxisValue( range.getAxis(), actionPointerIndex) - range.getMin() ) / range.getRange() * 2.0f - 1.0f; - SDLActivity.onNativeJoy(id, i, value ); + SDLActivity.onNativeJoy(joystick.device_id, i, value ); } } break; diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index a18cb4f7dd..0482efd08a 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -34,7 +34,7 @@ #include "../../video/android/SDL_androidtouch.h" #include "../../video/android/SDL_androidvideo.h" #include "../../video/android/SDL_androidwindow.h" -#include "../../joystick/android/SDL_sysjoystick.h" +#include "../../joystick/android/SDL_sysjoystick_c.h" #include #include @@ -75,6 +75,7 @@ static jmethodID midAudioInit; static jmethodID midAudioWriteShortBuffer; static jmethodID midAudioWriteByteBuffer; static jmethodID midAudioQuit; +static jmethodID midPollInputDevices; /* Accelerometer data storage */ static float fLastAccelerometer[3]; @@ -127,11 +128,13 @@ void SDL_Android_Init(JNIEnv* mEnv, jclass cls) "audioWriteByteBuffer", "([B)V"); midAudioQuit = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, "audioQuit", "()V"); + midPollInputDevices = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, + "pollInputDevices", "()V"); bHasNewData = false; if(!midGetNativeSurface || !midFlipBuffers || !midAudioInit || - !midAudioWriteShortBuffer || !midAudioWriteByteBuffer || !midAudioQuit) { + !midAudioWriteShortBuffer || !midAudioWriteByteBuffer || !midAudioQuit || !midPollInputDevices) { __android_log_print(ANDROID_LOG_WARN, "SDL", "SDL: Couldn't locate Java callbacks, check that they're named and typed correctly"); } __android_log_print(ANDROID_LOG_INFO, "SDL", "SDL_Android_Init() finished!"); @@ -148,25 +151,47 @@ void Java_org_libsdl_app_SDLActivity_onNativeResize( // Paddown int Java_org_libsdl_app_SDLActivity_onNativePadDown( JNIEnv* env, jclass jcls, - jint padId, jint keycode) + jint device_id, jint keycode) { - return Android_OnPadDown(padId, keycode); + return Android_OnPadDown(device_id, keycode); } // Padup int Java_org_libsdl_app_SDLActivity_onNativePadUp( JNIEnv* env, jclass jcls, - jint padId, jint keycode) + jint device_id, jint keycode) { - return Android_OnPadUp(padId, keycode); + return Android_OnPadUp(device_id, keycode); } /* Joy */ void Java_org_libsdl_app_SDLActivity_onNativeJoy( JNIEnv* env, jclass jcls, - jint joyId, jint axis, jfloat value) + jint device_id, jint axis, jfloat value) { - Android_OnJoy(joyId, axis, value); + Android_OnJoy(device_id, axis, value); +} + + +int Java_org_libsdl_app_SDLActivity_nativeAddJoystick( + JNIEnv* env, jclass jcls, + jint device_id, jstring device_name, jint is_accelerometer, + jint nbuttons, jint naxes, jint nhats, jint nballs) +{ + int retval; + const char *name = (*env)->GetStringUTFChars(env, device_name, NULL); + + retval = Android_AddJoystick(device_id, name, (SDL_bool) is_accelerometer, nbuttons, naxes, nhats, nballs); + + (*env)->ReleaseStringUTFChars(env, device_name, name); + + return retval; +} + +int Java_org_libsdl_app_SDLActivity_nativeRemoveJoystick( + JNIEnv* env, jclass jcls, jint device_id) +{ + return Android_RemoveJoystick(device_id); } @@ -1247,62 +1272,12 @@ int Android_JNI_GetTouchDeviceIds(int **ids) { return number; } -/* return the total number of plugged in joysticks */ -int Android_JNI_GetNumJoysticks() -{ - JNIEnv* env = Android_JNI_GetEnv(); - if (!env) { - return -1; - } - - jmethodID mid = (*env)->GetStaticMethodID(env, mActivityClass, "getNumJoysticks", "()I"); - if (!mid) { - return -1; - } - - return (int)(*env)->CallStaticIntMethod(env, mActivityClass, mid); -} - -/* Return the name of joystick number "i" */ -char* Android_JNI_GetJoystickName(int i) -{ - JNIEnv* env = Android_JNI_GetEnv(); - if (!env) { - return SDL_strdup(""); - } - - jmethodID mid = (*env)->GetStaticMethodID(env, mActivityClass, "getJoystickName", "(I)Ljava/lang/String;"); - if (!mid) { - return SDL_strdup(""); - } - jstring string = (jstring)((*env)->CallStaticObjectMethod(env, mActivityClass, mid, i)); - const char* utf = (*env)->GetStringUTFChars(env, string, 0); - if (!utf) { - return SDL_strdup(""); - } - - char* text = SDL_strdup(utf); - (*env)->ReleaseStringUTFChars(env, string, utf); - return text; -} - -/* return the number of axes in the given joystick */ -int Android_JNI_GetJoystickAxes(int joy) +void Android_JNI_PollInputDevices() { - JNIEnv* env = Android_JNI_GetEnv(); - if (!env) { - return -1; - } - - jmethodID mid = (*env)->GetStaticMethodID(env, mActivityClass, "getJoystickAxes", "(I)I"); - if (!mid) { - return -1; - } - - return (int)(*env)->CallIntMethod(env, mActivityClass, mid, joy); + JNIEnv *env = Android_JNI_GetEnv(); + (*env)->CallStaticVoidMethod(env, mActivityClass, midPollInputDevices); } - /* sends message to be handled on the UI event dispatch thread */ int Android_JNI_SendMessage(int command, int param) { diff --git a/src/core/android/SDL_android.h b/src/core/android/SDL_android.h index 805518a8f6..2219069b95 100644 --- a/src/core/android/SDL_android.h +++ b/src/core/android/SDL_android.h @@ -66,9 +66,8 @@ SDL_bool Android_JNI_HasClipboardText(); int Android_JNI_GetPowerInfo(int* plugged, int* charged, int* battery, int* seconds, int* percent); /* Joystick support */ -int Android_JNI_GetNumJoysticks(); -char* Android_JNI_GetJoystickName(int i); -int Android_JNI_GetJoystickAxes(int joy); +void Android_JNI_PollInputDevices(); + /* Touch support */ int Android_JNI_GetTouchDeviceIds(int **ids); diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 55db015834..7e3c595066 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -23,15 +23,18 @@ #ifdef SDL_JOYSTICK_ANDROID -/* This is the system specific header for the SDL joystick API */ #include /* For the definition of NULL */ - #include "SDL_error.h" #include "SDL_events.h" + +#if !SDL_EVENTS_DISABLED +#include "../../events/SDL_events_c.h" +#endif + #include "SDL_joystick.h" #include "SDL_hints.h" #include "SDL_assert.h" -#include "../SDL_sysjoystick.h" +#include "SDL_sysjoystick_c.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" @@ -57,14 +60,17 @@ #define AKEYCODE_BUTTON_16 203 #endif -#define ANDROID_ACCELEROMETER_INDEX (SYS_numjoysticks - 1) #define ANDROID_ACCELEROMETER_NAME "Android Accelerometer" +#define ANDROID_ACCELEROMETER_DEVICE_ID INT_MIN #define ANDROID_MAX_NBUTTONS 36 -static SDL_Joystick **SYS_Joysticks; -static char **SYS_JoystickNames; -static int SYS_numjoysticks; -static SDL_bool SYS_accelAsJoy; +static SDL_joylist_item * JoystickByDeviceId(int device_id); + +static SDL_joylist_item *SDL_joylist = NULL; +static SDL_joylist_item *SDL_joylist_tail = NULL; +static int numjoysticks = 0; +static int instance_counter = 0; + /* Function to convert Android keyCodes into SDL ones. * This code manipulation is done to get a sequential list of codes. @@ -139,78 +145,265 @@ keycode_to_SDL(int keycode) } -/* Function to scan the system for joysticks. - * This function should set SDL_numjoysticks to the number of available - * joysticks. Joystick 0 should be the system default joystick. - * It should return 0, or -1 on an unrecoverable fatal error. - */ int -SDL_SYS_JoystickInit(void) +Android_OnPadDown(int device_id, int keycode) { - int i = 0; - const char *env; + SDL_joylist_item *item; + int button = keycode_to_SDL(keycode); + if (button >= 0) { + item = JoystickByDeviceId(device_id); + if (item && item->joystick) { + SDL_PrivateJoystickButton(item->joystick, button , SDL_PRESSED); + } + return 0; + } - env = SDL_GetHint(SDL_HINT_ACCEL_AS_JOY); - if (env && !SDL_atoi(env)) - SYS_accelAsJoy = SDL_FALSE; - else - SYS_accelAsJoy = SDL_TRUE; /* Default behavior */ + return -1; +} + +int +Android_OnPadUp(int device_id, int keycode) +{ + SDL_joylist_item *item; + int button = keycode_to_SDL(keycode); + if (button >= 0) { + item = JoystickByDeviceId(device_id); + if (item && item->joystick) { + SDL_PrivateJoystickButton(item->joystick, button, SDL_RELEASED); + } + return 0; + } - SYS_numjoysticks = Android_JNI_GetNumJoysticks(); - if (SYS_accelAsJoy) { - SYS_numjoysticks++; + return -1; +} + +int +Android_OnJoy(int device_id, int axis, float value) +{ + /* Android gives joy info normalized as [-1.0, 1.0] or [0.0, 1.0] */ + SDL_joylist_item *item = JoystickByDeviceId(device_id); + if (item && item->joystick) { + SDL_PrivateJoystickAxis(item->joystick, axis, (Sint16) (32767.*value) ); } - SYS_Joysticks = (SDL_Joystick **)SDL_calloc(1, SYS_numjoysticks*sizeof(SDL_Joystick *)); - if (SYS_Joysticks == NULL) - { - return SDL_OutOfMemory(); + + return 0; +} + + +int +Android_AddJoystick(int device_id, const char *name, SDL_bool is_accelerometer, int nbuttons, int naxes, int nhats, int nballs) +{ + SDL_JoystickGUID guid; + SDL_joylist_item *item; +#if !SDL_EVENTS_DISABLED + SDL_Event event; +#endif + + if(JoystickByDeviceId(device_id) != NULL || name == NULL) { + return -1; } - SYS_JoystickNames = (char **)SDL_calloc(1, SYS_numjoysticks*sizeof(char *)); - if (SYS_JoystickNames == NULL) - { - SDL_free(SYS_Joysticks); - SYS_Joysticks = NULL; - return SDL_OutOfMemory(); + + /* the GUID is just the first 16 chars of the name for now */ + SDL_zero( guid ); + SDL_memcpy( &guid, name, SDL_min( sizeof(guid), SDL_strlen( name ) ) ); + + item = (SDL_joylist_item *) SDL_malloc(sizeof (SDL_joylist_item)); + if (item == NULL) { + return -1; + } + + SDL_zerop(item); + item->guid = guid; + item->device_id = device_id; + item->name = SDL_strdup(name); + if ( item->name == NULL ) { + SDL_free(item); + return -1; } - for (i = 0; i < SYS_numjoysticks; i++) - { - if ( SYS_accelAsJoy && i == ANDROID_ACCELEROMETER_INDEX ) { - SYS_JoystickNames[i] = ANDROID_ACCELEROMETER_NAME; - } else { - SYS_JoystickNames[i] = Android_JNI_GetJoystickName(i); + item->is_accelerometer = is_accelerometer; + if (nbuttons > -1) { + item->nbuttons = nbuttons; + } + else { + item->nbuttons = ANDROID_MAX_NBUTTONS; + } + item->naxes = naxes; + item->nhats = nhats; + item->nballs = nballs; + item->device_instance = instance_counter++; + if (SDL_joylist_tail == NULL) { + SDL_joylist = SDL_joylist_tail = item; + } else { + SDL_joylist_tail->next = item; + SDL_joylist_tail = item; + } + + /* Need to increment the joystick count before we post the event */ + ++numjoysticks; + +#if !SDL_EVENTS_DISABLED + event.type = SDL_JOYDEVICEADDED; + + if (SDL_GetEventState(event.type) == SDL_ENABLE) { + event.jdevice.which = (numjoysticks - 1); + if ( (SDL_EventOK == NULL) || + (*SDL_EventOK) (SDL_EventOKParam, &event) ) { + SDL_PushEvent(&event); + } + } +#endif /* !SDL_EVENTS_DISABLED */ + + SDL_Log("Added joystick %s with device_id %d", name, device_id); + + return numjoysticks; +} + +int +Android_RemoveJoystick(int device_id) +{ + SDL_joylist_item *item = SDL_joylist; + SDL_joylist_item *prev = NULL; +#if !SDL_EVENTS_DISABLED + SDL_Event event; +#endif + + /* Don't call JoystickByDeviceId here or there'll be an infinite loop! */ + while (item != NULL) { + if (item->device_id == device_id) { + break; } + prev = item; + item = item->next; + } + + if (item == NULL) { + return -1; + } + + const int retval = item->device_instance; + if (prev != NULL) { + prev->next = item->next; + } else { + SDL_assert(SDL_joylist == item); + SDL_joylist = item->next; + } + if (item == SDL_joylist_tail) { + SDL_joylist_tail = prev; + } + + /* Need to decrement the joystick count before we post the event */ + --numjoysticks; + +#if !SDL_EVENTS_DISABLED + event.type = SDL_JOYDEVICEREMOVED; + + if (SDL_GetEventState(event.type) == SDL_ENABLE) { + event.jdevice.which = item->device_instance; + if ( (SDL_EventOK == NULL) || + (*SDL_EventOK) (SDL_EventOKParam, &event) ) { + SDL_PushEvent(&event); + } + } +#endif /* !SDL_EVENTS_DISABLED */ + + SDL_Log("Removed joystick with device_id %d", device_id); + + SDL_free(item->name); + SDL_free(item); + return retval; +} + + +int +SDL_SYS_JoystickInit(void) +{ + const char *env; + SDL_SYS_JoystickDetect(); + + env = SDL_GetHint(SDL_HINT_ACCEL_AS_JOY); + if (!env || SDL_atoi(env)) { + /* Default behavior, accelerometer as joystick */ + Android_AddJoystick(ANDROID_ACCELEROMETER_DEVICE_ID, ANDROID_ACCELEROMETER_NAME, SDL_TRUE, 0, 3, 0, 0); } - return (SYS_numjoysticks); + return (numjoysticks); + } int SDL_SYS_NumJoysticks() { - return SYS_numjoysticks; + return numjoysticks; } void SDL_SYS_JoystickDetect() { + /* Support for device connect/disconnect is API >= 16 only, + * so we have to poll ever few seconds. + * Ref: http://developer.android.com/reference/android/hardware/input/InputManager.InputDeviceListener.html + */ + Android_JNI_PollInputDevices(); } -/* TODO: Hotplugging support */ SDL_bool SDL_SYS_JoystickNeedsPolling() { - return SDL_FALSE; + return SDL_TRUE; +} + +static SDL_joylist_item * +JoystickByDevIndex(int device_index) +{ + SDL_joylist_item *item = SDL_joylist; + + if ((device_index < 0) || (device_index >= numjoysticks)) { + return NULL; + } + + while (device_index > 0) { + SDL_assert(item != NULL); + device_index--; + item = item->next; + } + + return item; +} + +static SDL_joylist_item * +JoystickByDeviceId(int device_id) +{ + SDL_joylist_item *item = SDL_joylist; + + while (item != NULL) { + if (item->device_id == device_id) { + return item; + } + item = item->next; + } + + /* Joystick not found, try adding it */ + SDL_SYS_JoystickDetect(); + + while (item != NULL) { + if (item->device_id == device_id) { + return item; + } + item = item->next; + } + + return NULL; } /* Function to get the device-dependent name of a joystick */ const char * SDL_SYS_JoystickNameForDeviceIndex(int device_index) { - return SYS_JoystickNames[device_index]; + return JoystickByDevIndex(device_index)->name; } /* Function to perform the mapping from device index to the instance id for this index */ SDL_JoystickID SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index) { - return device_index; + return JoystickByDevIndex(device_index)->device_instance; } /* Function to open a joystick for use. @@ -221,49 +414,54 @@ SDL_JoystickID SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index) int SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index) { - if (device_index < SYS_numjoysticks) { - joystick->nhats = 0; - joystick->nballs = 0; - if (SYS_accelAsJoy && device_index == ANDROID_ACCELEROMETER_INDEX) { - joystick->nbuttons = 0; - joystick->naxes = 3; - } else { - /* FIXME: Get the real number of buttons in the device? */ - joystick->nbuttons = ANDROID_MAX_NBUTTONS; - joystick->naxes = Android_JNI_GetJoystickAxes(device_index); - } - - SYS_Joysticks[device_index] = joystick; - return 0; - } else { - return SDL_SetError("No joystick available with that index"); + SDL_joylist_item *item = JoystickByDevIndex(device_index); + char *fname = NULL; + + if (item == NULL ) { + return SDL_SetError("No such device"); } + + if (item->joystick != NULL) { + return SDL_SetError("Joystick already opened"); + } + + joystick->instance_id = item->device_instance; + joystick->hwdata = (struct joystick_hwdata *) item; + item->joystick = joystick; + joystick->nhats = item->nhats; + joystick->nballs = item->nballs; + joystick->nbuttons = item->nbuttons; + joystick->naxes = item->naxes; + + return (0); } /* Function to determine is this joystick is attached to the system right now */ SDL_bool SDL_SYS_JoystickAttached(SDL_Joystick *joystick) { - return SDL_TRUE; + return !joystick->closed && (joystick->hwdata != NULL); } -/* Function to update the state of a joystick - called as a device poll. - * This function shouldn't update the joystick structure directly, - * but instead should call SDL_PrivateJoystick*() to deliver events - * and update joystick device state. - */ void SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) { int i; Sint16 value; float values[3]; + SDL_joylist_item *item = SDL_joylist; - if (SYS_accelAsJoy && Android_JNI_GetAccelerometerValues(values) && - joystick->instance_id == ANDROID_ACCELEROMETER_INDEX) { - for ( i = 0; i < 3; i++ ) { - value = (Sint16)(values[i] * 32767.0f); - SDL_PrivateJoystickAxis(joystick, i, value); + while (item) { + if (item->is_accelerometer) { + if (item->joystick) { + Android_JNI_GetAccelerometerValues(values); + for ( i = 0; i < 3; i++ ) { + value = (Sint16)(values[i] * 32767.0f); + SDL_PrivateJoystickAxis(item->joystick, i, value); + } + } + break; } + item = item->next; } } @@ -271,14 +469,10 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) void SDL_SYS_JoystickClose(SDL_Joystick * joystick) { - int device_index; - - for (device_index = 0; device_index < SYS_numjoysticks; device_index++) { - if ( SYS_Joysticks[device_index] == joystick ) { - SYS_Joysticks[device_index] = NULL; - } + if (joystick->hwdata) { + ((SDL_joylist_item*)joystick->hwdata)->joystick = NULL; + joystick->hwdata = NULL; } - joystick->closed = 1; } @@ -286,70 +480,29 @@ SDL_SYS_JoystickClose(SDL_Joystick * joystick) void SDL_SYS_JoystickQuit(void) { - SDL_free(SYS_JoystickNames); - SDL_free(SYS_Joysticks); - SYS_JoystickNames = NULL; - SYS_Joysticks = NULL; -} + SDL_joylist_item *item = NULL; + SDL_joylist_item *next = NULL; -SDL_JoystickGUID SDL_SYS_JoystickGetDeviceGUID( int device_index ) -{ - SDL_JoystickGUID guid; - /* the GUID is just the first 16 chars of the name for now */ - const char *name = SDL_SYS_JoystickNameForDeviceIndex( device_index ); - SDL_zero( guid ); - SDL_memcpy( &guid, name, SDL_min( sizeof(guid), SDL_strlen( name ) ) ); - return guid; -} + for (item = SDL_joylist; item; item = next) { + next = item->next; + SDL_free(item->name); + SDL_free(item); + } -SDL_JoystickGUID SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick) -{ - SDL_JoystickGUID guid; - /* the GUID is just the first 16 chars of the name for now */ - const char *name = joystick->name; - SDL_zero( guid ); - SDL_memcpy( &guid, name, SDL_min( sizeof(guid), SDL_strlen( name ) ) ); - return guid; -} + SDL_joylist = SDL_joylist_tail = NULL; -int -Android_OnPadDown(int padId, int keycode) -{ - int button = keycode_to_SDL(keycode); - if (button >= 0) { - if (SYS_Joysticks[padId]) { - SDL_PrivateJoystickButton(SYS_Joysticks[padId], button , SDL_PRESSED); - } - return 0; - } - - return -1; + numjoysticks = 0; + instance_counter = 0; } -int -Android_OnPadUp(int padId, int keycode) +SDL_JoystickGUID SDL_SYS_JoystickGetDeviceGUID( int device_index ) { - int button = keycode_to_SDL(keycode); - if (button >= 0) { - if (SYS_Joysticks[padId]) { - SDL_PrivateJoystickButton(SYS_Joysticks[padId], button, SDL_RELEASED); - } - return 0; - } - - return -1; + return JoystickByDevIndex(device_index)->guid; } -int -Android_OnJoy(int joyId, int axis, float value) +SDL_JoystickGUID SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick) { - /* Android gives joy info normalized as [-1.0, 1.0] or [0.0, 1.0] */ - /* TODO: Are the reported values right? */ - if (SYS_Joysticks[joyId]) { - SDL_PrivateJoystickAxis(SYS_Joysticks[joyId], axis, (Sint16) (32767.*value) ); - } - - return 0; + return ((SDL_joylist_item*)joystick->hwdata)->guid; } #endif /* SDL_JOYSTICK_ANDROID */ diff --git a/src/joystick/android/SDL_sysjoystick.h b/src/joystick/android/SDL_sysjoystick_c.h similarity index 52% rename from src/joystick/android/SDL_sysjoystick.h rename to src/joystick/android/SDL_sysjoystick_c.h index f98c6a04bd..1c1d975c6b 100644 --- a/src/joystick/android/SDL_sysjoystick.h +++ b/src/joystick/android/SDL_sysjoystick_c.h @@ -21,8 +21,31 @@ #include "SDL_config.h" -extern int Android_OnPadDown(int padId, int keycode); -extern int Android_OnPadUp(int padId, int keycode); -extern int Android_OnJoy(int joyId, int axisnum, float value); +#ifdef SDL_JOYSTICK_ANDROID +#include "../SDL_sysjoystick.h" + +extern int Android_OnPadDown(int device_id, int keycode); +extern int Android_OnPadUp(int device_id, int keycode); +extern int Android_OnJoy(int device_id, int axisnum, float value); +extern int Android_AddJoystick(int device_id, const char *name, SDL_bool is_accelerometer, int nbuttons, int naxes, int nhats, int nballs); +extern int Android_RemoveJoystick(int device_id); + +/* A linked list of available joysticks */ +typedef struct SDL_joylist_item +{ + int device_instance; + int device_id; /* Android's device id */ + char *name; /* "SideWinder 3D Pro" or whatever */ + SDL_JoystickGUID guid; + SDL_bool is_accelerometer; + SDL_Joystick *joystick; + int nbuttons, naxes, nhats, nballs; + + struct SDL_joylist_item *next; +} SDL_joylist_item; + +typedef SDL_joylist_item joystick_hwdata; + +#endif /* SDL_JOYSTICK_ANDROID */ /* vi: set ts=4 sw=4 expandtab: */ From 552f3413ed7de3cef44a134cbcbecc25c273c35c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 11 Dec 2013 21:13:45 -0800 Subject: [PATCH 163/402] Fixed bug 2294 - testdrawchessboard.c Sets the render color alpha to 0x0. Brandon Schaefer This means everything will render black if the software rendering backend selects a pixel format that supports alpha. So it seems best to at lease assume alpha is supported. --- test/testdrawchessboard.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/testdrawchessboard.c b/test/testdrawchessboard.c index f203f581ee..bb30bd8d58 100644 --- a/test/testdrawchessboard.c +++ b/test/testdrawchessboard.c @@ -34,7 +34,7 @@ DrawChessBoard(SDL_Renderer * renderer) x = x + coloum; for(coloum; coloum < 4+(row%2); coloum++) { - SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0); + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0xFF); rect.w = darea.w/8; rect.h = darea.h/8; @@ -81,7 +81,7 @@ main(int argc, char *argv[]) } /* Clear the rendering surface with the specified color */ - SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0); + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); SDL_RenderClear(renderer); From 63ca796cbb8596b235022fb422301348463f7c75 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 11 Dec 2013 21:17:24 -0800 Subject: [PATCH 164/402] Fixed bug 2050 - Obvious bugs in SDL_ltoa and SDL_lltoa pjz SDL_ltoa(-2147483648,s,10) only returns "-" because there is a bug in the code: if ( value < 0 ) { *bufp++ = '-'; value = -value; } but -(-2147483648) is still -2147483648 (0x80000000) as signed int (or long), so the following loop doesn't run at all. Similar bug are also in SDL_lltoa. BTW, there is no sanity check for radix. --- src/stdlib/SDL_string.c | 36 ++++-------------------------------- 1 file changed, 4 insertions(+), 32 deletions(-) diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index 980f025aeb..f923ae7cb9 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -665,23 +665,9 @@ SDL_ltoa(long value, char *string, int radix) if (value < 0) { *bufp++ = '-'; - value = -value; - } - if (value) { - while (value > 0) { - *bufp++ = ntoa_table[value % radix]; - value /= radix; - } - } else { - *bufp++ = '0'; - } - *bufp = '\0'; - - /* The numbers went into the string backwards. :) */ - if (*string == '-') { - SDL_strrev(string + 1); + SDL_ultoa(-value, bufp, radix); } else { - SDL_strrev(string); + SDL_ultoa(value, bufp, radix); } return string; @@ -723,23 +709,9 @@ SDL_lltoa(Sint64 value, char *string, int radix) if (value < 0) { *bufp++ = '-'; - value = -value; - } - if (value) { - while (value > 0) { - *bufp++ = ntoa_table[value % radix]; - value /= radix; - } - } else { - *bufp++ = '0'; - } - *bufp = '\0'; - - /* The numbers went into the string backwards. :) */ - if (*string == '-') { - SDL_strrev(string + 1); + SDL_ulltoa(-value, bufp, radix); } else { - SDL_strrev(string); + SDL_ulltoa(value, bufp, radix); } return string; From b06d89e22358c32c070c585abfdd2945814dd163 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 12 Dec 2013 14:55:33 -0300 Subject: [PATCH 165/402] [Android] Poll joysticks every three seconds --- src/joystick/android/SDL_sysjoystick.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 7e3c595066..673c62a9da 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -34,6 +34,7 @@ #include "SDL_joystick.h" #include "SDL_hints.h" #include "SDL_assert.h" +#include "SDL_timer.h" #include "SDL_sysjoystick_c.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" @@ -339,10 +340,14 @@ int SDL_SYS_NumJoysticks() void SDL_SYS_JoystickDetect() { /* Support for device connect/disconnect is API >= 16 only, - * so we have to poll ever few seconds. + * so we poll every three seconds * Ref: http://developer.android.com/reference/android/hardware/input/InputManager.InputDeviceListener.html */ - Android_JNI_PollInputDevices(); + static Uint32 timeout = 0; + if (SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + timeout = SDL_GetTicks() + 3000; + Android_JNI_PollInputDevices(); + } } SDL_bool SDL_SYS_JoystickNeedsPolling() From aa848dfb7128262b2494113de8482088c4a15501 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 13 Dec 2013 09:48:12 -0300 Subject: [PATCH 166/402] Context sharing for EGL --- src/video/SDL_egl.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 1e66fb7d9a..c081a5da22 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -340,7 +340,7 @@ SDL_EGL_CreateContext(_THIS, EGLSurface egl_surface) EGL_NONE }; - EGLContext egl_context; + EGLContext egl_context, share_context = EGL_NO_CONTEXT; if (!_this->egl_data) { /* The EGL library wasn't loaded, SDL_GetError() should have info */ @@ -350,11 +350,15 @@ SDL_EGL_CreateContext(_THIS, EGLSurface egl_surface) if (_this->gl_config.major_version) { context_attrib_list[1] = _this->gl_config.major_version; } + + if (_this->gl_config.share_with_current_context) { + share_context = (EGLContext)SDL_GL_GetCurrentContext(); + } egl_context = _this->egl_data->eglCreateContext(_this->egl_data->egl_display, _this->egl_data->egl_config, - EGL_NO_CONTEXT, context_attrib_list); + share_context, context_attrib_list); if (egl_context == EGL_NO_CONTEXT) { SDL_SetError("Could not create EGL context"); From a7658757f7ab4a6a717c9599b933bd92d88d70ff Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Sat, 14 Dec 2013 20:18:43 -0300 Subject: [PATCH 167/402] Wayland support Based on the original port to Wayland by: Joel Teichroeb, Benjamin Franzke, Scott Moreau, et al. Additional changes in this commit, done by me: * Wayland uses the common EGL framework * EGL can now create a desktop OpenGL context * testgl2 loads GL functions dynamically, no need to link to libGL anymore * Assorted fixes to the Wayland backend Tested on the Weston Compositor (v1.0.5) that ships with Ubuntu 13.10, running Weston under X. Tests ran: testrendercopyex (all backends), testgl2, testgles2,testintersections --- CMakeLists.txt | 2 + WhatsNew.txt | 7 +- cmake/sdlchecks.cmake | 23 ++ configure | 79 +++++ configure.in | 31 ++ include/SDL_config.h.cmake | 1 + include/SDL_config.h.in | 1 + include/SDL_syswm.h | 9 + src/render/opengl/SDL_glfuncs.h | 10 +- src/video/SDL_egl.c | 70 ++-- src/video/SDL_egl_c.h | 3 + src/video/SDL_sysvideo.h | 3 + src/video/SDL_video.c | 3 + src/video/wayland/SDL_waylandevents.c | 381 ++++++++++++++++++++++ src/video/wayland/SDL_waylandevents_c.h | 37 +++ src/video/wayland/SDL_waylandmouse.c | 407 ++++++++++++++++++++++++ src/video/wayland/SDL_waylandmouse.h | 31 ++ src/video/wayland/SDL_waylandopengles.c | 90 ++++++ src/video/wayland/SDL_waylandopengles.h | 46 +++ src/video/wayland/SDL_waylandvideo.c | 365 +++++++++++++++++++++ src/video/wayland/SDL_waylandvideo.h | 71 +++++ src/video/wayland/SDL_waylandwindow.c | 192 +++++++++++ src/video/wayland/SDL_waylandwindow.h | 58 ++++ test/Makefile.in | 4 +- test/testgl2.c | 258 ++++++++------- 25 files changed, 2044 insertions(+), 138 deletions(-) create mode 100644 src/video/wayland/SDL_waylandevents.c create mode 100644 src/video/wayland/SDL_waylandevents_c.h create mode 100644 src/video/wayland/SDL_waylandmouse.c create mode 100644 src/video/wayland/SDL_waylandmouse.h create mode 100644 src/video/wayland/SDL_waylandopengles.c create mode 100644 src/video/wayland/SDL_waylandopengles.h create mode 100644 src/video/wayland/SDL_waylandvideo.c create mode 100644 src/video/wayland/SDL_waylandvideo.h create mode 100644 src/video/wayland/SDL_waylandwindow.c create mode 100644 src/video/wayland/SDL_waylandwindow.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 7455ab84bc..fb90299fc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -218,6 +218,7 @@ set_option(RPATH "Use an rpath when linking SDL" ${UNIX_SYS}) set_option(CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" OFF) set_option(INPUT_TSLIB "Use the Touchscreen library for input" ${UNIX_SYS}) set_option(VIDEO_X11 "Use X11 video driver" ${UNIX_SYS}) +set_option(VIDEO_WAYLAND "Use Wayland video driver" ${UNIX_SYS}) dep_option(X11_SHARED "Dynamically load X11 support" ON "VIDEO_X11" OFF) set(SDL_X11_OPTIONS Xcursor Xinerama XInput Xrandr Xscrnsaver XShape Xvm) foreach(_SUB ${SDL_X11_OPTIONS}) @@ -641,6 +642,7 @@ if(UNIX AND NOT APPLE) CheckDirectFB() CheckOpenGLX11() CheckOpenGLESX11() + CheckWayland() endif(SDL_VIDEO) if(LINUX) diff --git a/WhatsNew.txt b/WhatsNew.txt index e7cec5b609..db2ad8fb24 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -7,7 +7,10 @@ This is a list of major changes in SDL's version history. General: * Added an API to load a database of Game Controller mappings from a file: SDL_GameControllerAddMappingsFromFile - +* EGL can now create/manage OpenGL and OpenGL ES 1.x/2.x contexts, and share + them using SDL_GL_SHARE_WITH_CURRENT_CONTEXT +* Added testgles2. testgl2 does not need to link with libGL anymore. + Windows: * Support for OpenGL ES 2.x contexts using either WGL or EGL (natively via the driver or emulated through ANGLE) @@ -20,7 +23,7 @@ Android: Linux: * Fixed fullscreen and focused behavior when receiving NotifyGrab events - +* Wayland support --------------------------------------------------------------------------- 2.0.1: diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index 86366e4936..c2286b87ab 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -505,6 +505,29 @@ macro(CheckX11) endif(VIDEO_X11) endmacro(CheckX11) +# Requires: +# - EGL +macro(CheckWayland) + if(VIDEO_WAYLAND) + pkg_check_modules(WAYLAND wayland-client wayland-cursor wayland-egl egl xkbcommon) + if(WAYLAND_FOUND) + link_directories( + ${WAYLAND_LIBRARY_DIRS} + ) + include_directories( + ${WAYLAND_INCLUDE_DIRS} + ) + set(EXTRA_LIBS ${WAYLAND_LIBRARIES} ${EXTRA_LIBS}) + set(HAVE_VIDEO_WAYLAND TRUE) + set(HAVE_SDL_VIDEO TRUE) + + file(GLOB WAYLAND_SOURCES ${SDL2_SOURCE_DIR}/src/video/wayland/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${WAYLAND_SOURCES}) + set(SDL_VIDEO_DRIVER_WAYLAND 1) + endif(WAYLAND_FOUND) + endif(VIDEO_WAYLAND) +endmacro(CheckWayland) + # Requires: # - n/a # diff --git a/configure b/configure index bd2c5d2175..0cc698a10b 100755 --- a/configure +++ b/configure @@ -817,6 +817,7 @@ enable_sndio enable_sndio_shared enable_diskaudio enable_dummyaudio +enable_video_wayland enable_video_x11 with_x enable_x11_shared @@ -1532,6 +1533,7 @@ Optional Features: --enable-sndio-shared dynamically load sndio audio support [[default=yes]] --enable-diskaudio support the disk writer audio driver [[default=yes]] --enable-dummyaudio support the dummy audio driver [[default=yes]] + --enable-video-wayland use Wayland video driver [[default=yes]] --enable-video-x11 use X11 video driver [[default=yes]] --enable-x11-shared dynamically load X11 support [[default=maybe]] --enable-video-x11-xcursor @@ -18633,6 +18635,82 @@ $as_echo "$need_gcc_Wno_multichar" >&6; } fi } +CheckWayland() +{ + # Check whether --enable-video-wayland was given. +if test "${enable_video_wayland+set}" = set; then : + enableval=$enable_video_wayland; +else + enable_video_wayland=yes +fi + + + if test x$enable_video = xyes -a x$enable_video_wayland = xyes; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Wayland support" >&5 +$as_echo_n "checking for Wayland support... " >&6; } + video_wayland=no + if test x$PKG_CONFIG != xno; then + if $PKG_CONFIG --exists wayland-client wayland-egl wayland-cursor egl xkbcommon ; then + WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor egl xkbcommon` + WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor egl xkbcommon` + video_wayland=yes + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_wayland" >&5 +$as_echo "$video_wayland" >&6; } + + if test x$video_wayland = xyes; then + +$as_echo "#define SDL_VIDEO_DRIVER_WAYLAND 1" >>confdefs.h + + SOURCES="$SOURCES $srcdir/src/video/wayland/*.c" + EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + have_video=yes + fi + fi +} CheckX11() { @@ -22220,6 +22298,7 @@ case "$host" in CheckNAS CheckSNDIO CheckX11 + CheckWayland CheckDirectFB CheckFusionSound CheckOpenGLX11 diff --git a/configure.in b/configure.in index 7c3a1b1ced..941a255e60 100644 --- a/configure.in +++ b/configure.in @@ -1115,6 +1115,36 @@ CheckWarnAll() fi } +dnl Check for Wayland +CheckWayland() +{ + AC_ARG_ENABLE(video-wayland, +AC_HELP_STRING([--enable-video-wayland], [use Wayland video driver [[default=yes]]]), + ,enable_video_wayland=yes) + + if test x$enable_video = xyes -a x$enable_video_wayland = xyes; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + AC_MSG_CHECKING(for Wayland support) + video_wayland=no + if test x$PKG_CONFIG != xno; then + if $PKG_CONFIG --exists wayland-client wayland-egl wayland-cursor egl xkbcommon ; then + WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor egl xkbcommon` + WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor egl xkbcommon` + video_wayland=yes + fi + fi + AC_MSG_RESULT($video_wayland) + + if test x$video_wayland = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/video/wayland/*.c" + EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS" + dnl FIXME do dynamic loading code here. + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + have_video=yes + fi + fi +} dnl Find the X11 include and library directories CheckX11() @@ -2449,6 +2479,7 @@ case "$host" in CheckNAS CheckSNDIO CheckX11 + CheckWayland CheckDirectFB CheckFusionSound CheckOpenGLX11 diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 08237a87ae..66a530b802 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -259,6 +259,7 @@ #cmakedefine SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC @SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC@ #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@ #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@ +#cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@ #cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 536b297744..14ce7912ca 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -260,6 +260,7 @@ #undef SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC #undef SDL_VIDEO_DRIVER_DUMMY #undef SDL_VIDEO_DRIVER_WINDOWS +#undef SDL_VIDEO_DRIVER_WAYLAND #undef SDL_VIDEO_DRIVER_X11 #undef SDL_VIDEO_DRIVER_RPI #undef SDL_VIDEO_DRIVER_X11_DYNAMIC diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index 5e4454f86e..c43a78d283 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -101,6 +101,7 @@ typedef enum SDL_SYSWM_UNKNOWN, SDL_SYSWM_WINDOWS, SDL_SYSWM_X11, + SDL_SYSWM_WAYLAND, SDL_SYSWM_DIRECTFB, SDL_SYSWM_COCOA, SDL_SYSWM_UIKIT, @@ -175,6 +176,14 @@ struct SDL_SysWMinfo Window window; /**< The X11 window */ } x11; #endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */ + } wl; +#endif #if defined(SDL_VIDEO_DRIVER_DIRECTFB) struct { diff --git a/src/render/opengl/SDL_glfuncs.h b/src/render/opengl/SDL_glfuncs.h index 7544929fce..c7e577b0ec 100644 --- a/src/render/opengl/SDL_glfuncs.h +++ b/src/render/opengl/SDL_glfuncs.h @@ -30,7 +30,7 @@ SDL_PROC_UNUSED(void, glColor3bv, (const GLbyte *)) SDL_PROC_UNUSED(void, glColor3d, (GLdouble, GLdouble, GLdouble)) SDL_PROC_UNUSED(void, glColor3dv, (const GLdouble *)) SDL_PROC_UNUSED(void, glColor3f, (GLfloat, GLfloat, GLfloat)) -SDL_PROC_UNUSED(void, glColor3fv, (const GLfloat *)) +SDL_PROC(void, glColor3fv, (const GLfloat *)) SDL_PROC_UNUSED(void, glColor3i, (GLint, GLint, GLint)) SDL_PROC_UNUSED(void, glColor3iv, (const GLint *)) SDL_PROC_UNUSED(void, glColor3s, (GLshort, GLshort, GLshort)) @@ -85,7 +85,7 @@ SDL_PROC_UNUSED(void, glCopyTexSubImage2D, SDL_PROC_UNUSED(void, glCullFace, (GLenum mode)) SDL_PROC_UNUSED(void, glDeleteLists, (GLuint list, GLsizei range)) SDL_PROC(void, glDeleteTextures, (GLsizei n, const GLuint * textures)) -SDL_PROC_UNUSED(void, glDepthFunc, (GLenum func)) +SDL_PROC(void, glDepthFunc, (GLenum func)) SDL_PROC_UNUSED(void, glDepthMask, (GLboolean flag)) SDL_PROC_UNUSED(void, glDepthRange, (GLclampd zNear, GLclampd zFar)) SDL_PROC(void, glDisable, (GLenum cap)) @@ -334,13 +334,13 @@ SDL_PROC_UNUSED(void, glRectsv, (const GLshort * v1, const GLshort * v2)) SDL_PROC_UNUSED(GLint, glRenderMode, (GLenum mode)) SDL_PROC(void, glRotated, (GLdouble angle, GLdouble x, GLdouble y, GLdouble z)) -SDL_PROC_UNUSED(void, glRotatef, +SDL_PROC(void, glRotatef, (GLfloat angle, GLfloat x, GLfloat y, GLfloat z)) SDL_PROC_UNUSED(void, glScaled, (GLdouble x, GLdouble y, GLdouble z)) SDL_PROC_UNUSED(void, glScalef, (GLfloat x, GLfloat y, GLfloat z)) SDL_PROC(void, glScissor, (GLint x, GLint y, GLsizei width, GLsizei height)) SDL_PROC_UNUSED(void, glSelectBuffer, (GLsizei size, GLuint * buffer)) -SDL_PROC_UNUSED(void, glShadeModel, (GLenum mode)) +SDL_PROC(void, glShadeModel, (GLenum mode)) SDL_PROC_UNUSED(void, glStencilFunc, (GLenum func, GLint ref, GLuint mask)) SDL_PROC_UNUSED(void, glStencilMask, (GLuint mask)) SDL_PROC_UNUSED(void, glStencilOp, (GLenum fail, GLenum zfail, GLenum zpass)) @@ -432,7 +432,7 @@ SDL_PROC_UNUSED(void, glVertex2sv, (const GLshort * v)) SDL_PROC_UNUSED(void, glVertex3d, (GLdouble x, GLdouble y, GLdouble z)) SDL_PROC_UNUSED(void, glVertex3dv, (const GLdouble * v)) SDL_PROC_UNUSED(void, glVertex3f, (GLfloat x, GLfloat y, GLfloat z)) -SDL_PROC_UNUSED(void, glVertex3fv, (const GLfloat * v)) +SDL_PROC(void, glVertex3fv, (const GLfloat * v)) SDL_PROC_UNUSED(void, glVertex3i, (GLint x, GLint y, GLint z)) SDL_PROC_UNUSED(void, glVertex3iv, (const GLint * v)) SDL_PROC_UNUSED(void, glVertex3s, (GLshort x, GLshort y, GLshort z)) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index c081a5da22..3ef24b038a 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -50,6 +50,7 @@ #else /* Desktop Linux */ +#define DEFAULT_OGL "libGL.so.1" #define DEFAULT_EGL "libEGL.so.1" #define DEFAULT_OGL_ES2 "libGLESv2.so.2" #define DEFAULT_OGL_ES_PVR "libGLES_CM.so.1" @@ -149,23 +150,31 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa } if (egl_dll_handle == NULL) { - if (_this->gl_config.major_version > 1) { - path = DEFAULT_OGL_ES2; - egl_dll_handle = SDL_LoadObject(path); + if(_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) { + if (_this->gl_config.major_version > 1) { + path = DEFAULT_OGL_ES2; + egl_dll_handle = SDL_LoadObject(path); + } + else { + path = DEFAULT_OGL_ES; + egl_dll_handle = SDL_LoadObject(path); + if (egl_dll_handle == NULL) { + path = DEFAULT_OGL_ES_PVR; + egl_dll_handle = SDL_LoadObject(path); + } + } } +#ifdef DEFAULT_OGL else { - path = DEFAULT_OGL_ES; + path = DEFAULT_OGL; egl_dll_handle = SDL_LoadObject(path); - if (egl_dll_handle == NULL) { - path = DEFAULT_OGL_ES_PVR; - egl_dll_handle = SDL_LoadObject(path); - } } +#endif } _this->egl_data->egl_dll_handle = egl_dll_handle; if (egl_dll_handle == NULL) { - return SDL_SetError("Could not initialize OpenGL ES library"); + return SDL_SetError("Could not initialize OpenGL / GLES library"); } /* Loading libGL* in the previous step took care of loading libEGL.so, but we future proof by double checking */ @@ -205,6 +214,7 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa LOAD_FUNC(eglSwapInterval); LOAD_FUNC(eglWaitNative); LOAD_FUNC(eglWaitGL); + LOAD_FUNC(eglBindAPI); _this->egl_data->egl_display = _this->egl_data->eglGetDisplay(native_display); if (!_this->egl_data->egl_display) { @@ -281,14 +291,21 @@ SDL_EGL_ChooseConfig(_THIS) } attribs[i++] = EGL_RENDERABLE_TYPE; - if (_this->gl_config.major_version == 2) { - attribs[i++] = EGL_OPENGL_ES2_BIT; - } else { - attribs[i++] = EGL_OPENGL_ES_BIT; + if(_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) { + if (_this->gl_config.major_version == 2) { + attribs[i++] = EGL_OPENGL_ES2_BIT; + } else { + attribs[i++] = EGL_OPENGL_ES_BIT; + } + _this->egl_data->eglBindAPI(EGL_OPENGL_ES_API); + } + else { + attribs[i++] = EGL_OPENGL_BIT; + _this->egl_data->eglBindAPI(EGL_OPENGL_API); } attribs[i++] = EGL_NONE; - + if (_this->egl_data->eglChooseConfig(_this->egl_data->egl_display, attribs, configs, SDL_arraysize(configs), @@ -347,18 +364,27 @@ SDL_EGL_CreateContext(_THIS, EGLSurface egl_surface) return NULL; } - if (_this->gl_config.major_version) { - context_attrib_list[1] = _this->gl_config.major_version; - } - if (_this->gl_config.share_with_current_context) { share_context = (EGLContext)SDL_GL_GetCurrentContext(); } + + /* Bind the API */ + if(_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) { + _this->egl_data->eglBindAPI(EGL_OPENGL_ES_API); + if (_this->gl_config.major_version) { + context_attrib_list[1] = _this->gl_config.major_version; + } - egl_context = - _this->egl_data->eglCreateContext(_this->egl_data->egl_display, - _this->egl_data->egl_config, - share_context, context_attrib_list); + egl_context = _this->egl_data->eglCreateContext(_this->egl_data->egl_display, + _this->egl_data->egl_config, + share_context, context_attrib_list); + } + else { + _this->egl_data->eglBindAPI(EGL_OPENGL_API); + egl_context = _this->egl_data->eglCreateContext(_this->egl_data->egl_display, + _this->egl_data->egl_config, + share_context, NULL); + } if (egl_context == EGL_NO_CONTEXT) { SDL_SetError("Could not create EGL context"); diff --git a/src/video/SDL_egl_c.h b/src/video/SDL_egl_c.h index 3f0cd06ede..30d2b2de43 100644 --- a/src/video/SDL_egl_c.h +++ b/src/video/SDL_egl_c.h @@ -76,6 +76,9 @@ typedef struct SDL_EGL_VideoData EGLBoolean(EGLAPIENTRY *eglWaitNative) (EGLint engine); EGLBoolean(EGLAPIENTRY *eglWaitGL)(void); + + EGLBoolean(EGLAPIENTRY *eglBindAPI)(EGLenum); + } SDL_EGL_VideoData; /* OpenGLES functions */ diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 18cf5f3c48..49f8363ad0 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -369,6 +369,9 @@ extern VideoBootStrap RPI_bootstrap; #if SDL_VIDEO_DRIVER_DUMMY extern VideoBootStrap DUMMY_bootstrap; #endif +#if SDL_VIDEO_DRIVER_WAYLAND +extern VideoBootStrap Wayland_bootstrap; +#endif extern SDL_VideoDevice *SDL_GetVideoDevice(void); extern int SDL_AddBasicVideoDisplay(const SDL_DisplayMode * desktop_mode); diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 77417297f6..5aacac80fd 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -85,6 +85,9 @@ static VideoBootStrap *bootstrap[] = { #endif #if SDL_VIDEO_DRIVER_DUMMY &DUMMY_bootstrap, +#endif +#if SDL_VIDEO_DRIVER_WAYLAND + &Wayland_bootstrap, #endif NULL }; diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c new file mode 100644 index 0000000000..b002a05004 --- /dev/null +++ b/src/video/wayland/SDL_waylandevents.c @@ -0,0 +1,381 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#include "SDL_stdinc.h" +#include "SDL_assert.h" + +#include "../../events/SDL_sysevents.h" +#include "../../events/SDL_events_c.h" +#include "../../events/scancodes_xfree86.h" + +#include "SDL_waylandvideo.h" +#include "SDL_waylandevents_c.h" +#include "SDL_waylandwindow.h" + +#include +#include +#include +#include +#include +#include +#include + +struct SDL_WaylandInput { + SDL_VideoData *display; + struct wl_seat *seat; + struct wl_pointer *pointer; + struct wl_keyboard *keyboard; + SDL_WindowData *pointer_focus; + SDL_WindowData *keyboard_focus; + + struct { + struct xkb_keymap *keymap; + struct xkb_state *state; + } xkb; +}; + +void +Wayland_PumpEvents(_THIS) +{ + SDL_VideoData *d = _this->driverdata; + struct pollfd pfd[1]; + + pfd[0].fd = wl_display_get_fd(d->display); + pfd[0].events = POLLIN; + poll(pfd, 1, 0); + + if (pfd[0].revents & POLLIN) + wl_display_dispatch(d->display); + else + wl_display_dispatch_pending(d->display); +} + +static void +pointer_handle_enter(void *data, struct wl_pointer *pointer, + uint32_t serial, struct wl_surface *surface, + wl_fixed_t sx_w, wl_fixed_t sy_w) +{ + struct SDL_WaylandInput *input = data; + SDL_WindowData *window; + + if (!surface) { + /* enter event for a window we've just destroyed */ + return; + } + + input->pointer_focus = wl_surface_get_user_data(surface); + window = input->pointer_focus; + SDL_SetMouseFocus(window->sdlwindow); +} + +static void +pointer_handle_leave(void *data, struct wl_pointer *pointer, + uint32_t serial, struct wl_surface *surface) +{ + struct SDL_WaylandInput *input = data; + + SDL_SetMouseFocus(NULL); + input->pointer_focus = NULL; +} + +static void +pointer_handle_motion(void *data, struct wl_pointer *pointer, + uint32_t time, wl_fixed_t sx_w, wl_fixed_t sy_w) +{ + struct SDL_WaylandInput *input = data; + SDL_WindowData *window = input->pointer_focus; + int sx = wl_fixed_to_int(sx_w); + int sy = wl_fixed_to_int(sy_w); + + SDL_SendMouseMotion(window->sdlwindow, 0, 0, sx, sy); +} + +static void +pointer_handle_button(void *data, struct wl_pointer *pointer, uint32_t serial, + uint32_t time, uint32_t button, uint32_t state_w) +{ + struct SDL_WaylandInput *input = data; + SDL_WindowData *window = input->pointer_focus; + enum wl_pointer_button_state state = state_w; + uint32_t sdl_button; + + switch (button) { + case BTN_LEFT: + sdl_button = SDL_BUTTON_LEFT; + break; + case BTN_MIDDLE: + sdl_button = SDL_BUTTON_MIDDLE; + break; + case BTN_RIGHT: + sdl_button = SDL_BUTTON_RIGHT; + break; + case BTN_SIDE: + sdl_button = SDL_BUTTON_X1; + break; + case BTN_EXTRA: + sdl_button = SDL_BUTTON_X2; + break; + default: + return; + } + + SDL_SendMouseButton(window->sdlwindow, 0, + state ? SDL_PRESSED : SDL_RELEASED, sdl_button); +} + +static void +pointer_handle_axis(void *data, struct wl_pointer *pointer, + uint32_t time, uint32_t axis, wl_fixed_t value) +{ + struct SDL_WaylandInput *input = data; + SDL_WindowData *window = input->pointer_focus; + enum wl_pointer_axis a = axis; + int x, y; + + switch (a) { + case WL_POINTER_AXIS_VERTICAL_SCROLL: + x = 0; + y = wl_fixed_to_int(value); + break; + case WL_POINTER_AXIS_HORIZONTAL_SCROLL: + x = wl_fixed_to_int(value); + y = 0; + break; + default: + return; + } + + SDL_SendMouseWheel(window->sdlwindow, 0, x, y); +} + +static const struct wl_pointer_listener pointer_listener = { + pointer_handle_enter, + pointer_handle_leave, + pointer_handle_motion, + pointer_handle_button, + pointer_handle_axis, +}; + +static void +keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, + uint32_t format, int fd, uint32_t size) +{ + struct SDL_WaylandInput *input = data; + char *map_str; + + if (!data) { + close(fd); + return; + } + + if (format != WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1) { + close(fd); + return; + } + + map_str = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); + if (map_str == MAP_FAILED) { + close(fd); + return; + } + + input->xkb.keymap = xkb_map_new_from_string(input->display->xkb_context, + map_str, + XKB_KEYMAP_FORMAT_TEXT_V1, + 0); + munmap(map_str, size); + close(fd); + + if (!input->xkb.keymap) { + fprintf(stderr, "failed to compile keymap\n"); + return; + } + + input->xkb.state = xkb_state_new(input->xkb.keymap); + if (!input->xkb.state) { + fprintf(stderr, "failed to create XKB state\n"); + xkb_map_unref(input->xkb.keymap); + input->xkb.keymap = NULL; + return; + } +} + +static void +keyboard_handle_enter(void *data, struct wl_keyboard *keyboard, + uint32_t serial, struct wl_surface *surface, + struct wl_array *keys) +{ + struct SDL_WaylandInput *input = data; + SDL_WindowData *window = wl_surface_get_user_data(surface); + + input->keyboard_focus = window; + window->keyboard_device = input; + SDL_SetKeyboardFocus(window->sdlwindow); +} + +static void +keyboard_handle_leave(void *data, struct wl_keyboard *keyboard, + uint32_t serial, struct wl_surface *surface) +{ + SDL_SetKeyboardFocus(NULL); +} + +static void +keyboard_handle_key(void *data, struct wl_keyboard *keyboard, + uint32_t serial, uint32_t time, uint32_t key, + uint32_t state_w) +{ + struct SDL_WaylandInput *input = data; + SDL_WindowData *window = input->keyboard_focus; + enum wl_keyboard_key_state state = state_w; + const xkb_keysym_t *syms; + uint32_t scancode; + char text[8]; + int size; + + if (key < SDL_arraysize(xfree86_scancode_table2)) { + scancode = xfree86_scancode_table2[key]; + + // TODO when do we get WL_KEYBOARD_KEY_STATE_REPEAT? + if (scancode != SDL_SCANCODE_UNKNOWN) + SDL_SendKeyboardKey(state == WL_KEYBOARD_KEY_STATE_PRESSED ? + SDL_PRESSED : SDL_RELEASED, scancode); + } + + if (!window || window->keyboard_device != input || !input->xkb.state) + return; + + // TODO can this happen? + if (xkb_key_get_syms(input->xkb.state, key + 8, &syms) != 1) + return; + + if (state) { + size = xkb_keysym_to_utf8(syms[0], text, sizeof text); + + if (size > 0) { + text[size] = 0; + SDL_SendKeyboardText(text); + } + } +} + +static void +keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard, + uint32_t serial, uint32_t mods_depressed, + uint32_t mods_latched, uint32_t mods_locked, + uint32_t group) +{ + struct SDL_WaylandInput *input = data; + + xkb_state_update_mask(input->xkb.state, mods_depressed, mods_latched, + mods_locked, 0, 0, group); +} + +static const struct wl_keyboard_listener keyboard_listener = { + keyboard_handle_keymap, + keyboard_handle_enter, + keyboard_handle_leave, + keyboard_handle_key, + keyboard_handle_modifiers, +}; + +static void +seat_handle_capabilities(void *data, struct wl_seat *seat, + enum wl_seat_capability caps) +{ + struct SDL_WaylandInput *input = data; + + if ((caps & WL_SEAT_CAPABILITY_POINTER) && !input->pointer) { + input->pointer = wl_seat_get_pointer(seat); + input->display->pointer = input->pointer; + wl_pointer_set_user_data(input->pointer, input); + wl_pointer_add_listener(input->pointer, &pointer_listener, + input); + } else if (!(caps & WL_SEAT_CAPABILITY_POINTER) && input->pointer) { + wl_pointer_destroy(input->pointer); + input->pointer = NULL; + } + + if ((caps & WL_SEAT_CAPABILITY_KEYBOARD) && !input->keyboard) { + input->keyboard = wl_seat_get_keyboard(seat); + wl_keyboard_set_user_data(input->keyboard, input); + wl_keyboard_add_listener(input->keyboard, &keyboard_listener, + input); + } else if (!(caps & WL_SEAT_CAPABILITY_KEYBOARD) && input->keyboard) { + wl_keyboard_destroy(input->keyboard); + input->keyboard = NULL; + } +} + +static const struct wl_seat_listener seat_listener = { + seat_handle_capabilities, +}; + +void +Wayland_display_add_input(SDL_VideoData *d, uint32_t id) +{ + struct SDL_WaylandInput *input; + + input = malloc(sizeof *input); + if (input == NULL) + return; + + memset(input, 0, sizeof *input); + input->display = d; + input->seat = wl_registry_bind(d->registry, id, &wl_seat_interface, 1); + + d->input = input; + + wl_seat_add_listener(input->seat, &seat_listener, input); + wl_seat_set_user_data(input->seat, input); + + wayland_schedule_write(d); +} + +void Wayland_display_destroy_input(SDL_VideoData *d) +{ + struct SDL_WaylandInput *input = d->input; + + if (!input) + return; + + if (input->keyboard) + wl_keyboard_destroy(input->keyboard); + + if (input->pointer) + wl_pointer_destroy(input->pointer); + + if (input->seat) + wl_seat_destroy(input->seat); + + if (input->xkb.state) + xkb_state_unref(input->xkb.state); + + if (input->xkb.keymap) + xkb_map_unref(input->xkb.keymap); + + free(input); + d->input = NULL; +} + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandevents_c.h b/src/video/wayland/SDL_waylandevents_c.h new file mode 100644 index 0000000000..ed5ff7cc80 --- /dev/null +++ b/src/video/wayland/SDL_waylandevents_c.h @@ -0,0 +1,37 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#ifndef _SDL_waylandevents_h +#define _SDL_waylandevents_h + +#include "SDL_waylandvideo.h" +#include "SDL_waylandwindow.h" + +extern void Wayland_PumpEvents(_THIS); + +extern void Wayland_display_add_input(SDL_VideoData *d, uint32_t id); +extern void Wayland_display_destroy_input(SDL_VideoData *d); + +#endif /* _SDL_waylandevents_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c new file mode 100644 index 0000000000..62c65e94c8 --- /dev/null +++ b/src/video/wayland/SDL_waylandmouse.c @@ -0,0 +1,407 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include "../SDL_sysvideo.h" + +#include "SDL_config.h" +#include "SDL_mouse.h" +#include "../../events/SDL_mouse_c.h" +#include "SDL_waylandvideo.h" +#include "SDL_waylandevents_c.h" + +#include "SDL_assert.h" + +#if SDL_VIDEO_DRIVER_WAYLAND + +typedef struct { + struct wl_buffer *buffer; + struct wl_surface *surface; + + int hot_x, hot_y; + + /* Either a preloaded cursor, or one we created ourselves */ + struct wl_cursor *cursor; + void *shm_data; +} Wayland_CursorData; + +static int +wayland_create_tmp_file(off_t size) +{ + static const char template[] = "/sdl-shared-XXXXXX"; + char *xdg_path; + char tmp_path[PATH_MAX]; + int fd; + + xdg_path = SDL_getenv("XDG_RUNTIME_DIR"); + if (!xdg_path) { + errno = ENOENT; + return -1; + } + + SDL_strlcpy(tmp_path, xdg_path, PATH_MAX); + SDL_strlcat(tmp_path, template, PATH_MAX); + + fd = mkostemp(tmp_path, O_CLOEXEC); + if (fd < 0) + return -1; + + if (ftruncate(fd, size) < 0) { + close(fd); + return -1; + } + + return fd; +} + +static void +mouse_buffer_release(void *data, struct wl_buffer *buffer) +{ +} + +static const struct wl_buffer_listener mouse_buffer_listener = { + mouse_buffer_release +}; + +static int +create_buffer_from_shm(Wayland_CursorData *d, + int width, + int height, + uint32_t format) +{ + SDL_VideoDevice *vd = SDL_GetVideoDevice(); + SDL_VideoData *data = (SDL_VideoData *) vd->driverdata; + + int stride = width * 4; + int size = stride * height; + + int shm_fd; + + shm_fd = wayland_create_tmp_file(size); + if (shm_fd < 0) + { + fprintf(stderr, "creating mouse cursor buffer failed!\n"); + return -1; + } + + d->shm_data = mmap(NULL, + size, + PROT_READ | PROT_WRITE, + MAP_SHARED, + shm_fd, + 0); + if (data == MAP_FAILED) { + d->shm_data = NULL; + fprintf (stderr, "mmap () failed\n"); + close (shm_fd); + } + + struct wl_shm_pool *shm_pool = wl_shm_create_pool(data->shm, + shm_fd, + size); + d->buffer = wl_shm_pool_create_buffer(shm_pool, + 0, + width, + height, + stride, + format); + wl_buffer_add_listener(d->buffer, + &mouse_buffer_listener, + d); + + wl_shm_pool_destroy (shm_pool); + close (shm_fd); + + return 0; +} + +static SDL_Cursor * +Wayland_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y) +{ + SDL_Cursor *cursor; + + cursor = calloc(1, sizeof (*cursor)); + if (cursor) { + SDL_VideoDevice *vd = SDL_GetVideoDevice (); + SDL_VideoData *wd = (SDL_VideoData *) vd->driverdata; + Wayland_CursorData *data = calloc (1, sizeof (Wayland_CursorData)); + cursor->driverdata = (void *) data; + + /* Assume ARGB8888 */ + SDL_assert(surface->format->format == SDL_PIXELFORMAT_ARGB8888); + SDL_assert(surface->pitch == surface->w * 4); + + /* Allocate shared memory buffer for this cursor */ + if (create_buffer_from_shm (data, + surface->w, + surface->h, + WL_SHM_FORMAT_XRGB8888) < 0) + { + free (cursor->driverdata); + free (cursor); + return NULL; + } + + SDL_memcpy(data->shm_data, + surface->pixels, + surface->h * surface->pitch); + + data->surface = wl_compositor_create_surface(wd->compositor); + wl_surface_attach(data->surface, + data->buffer, + 0, + 0); + wl_surface_damage(data->surface, + 0, + 0, + surface->w, + surface->h); + wl_surface_commit(data->surface); + + data->hot_x = hot_x; + data->hot_y = hot_y; + } + + return cursor; +} + +static SDL_Cursor * +CreateCursorFromWlCursor(SDL_VideoData *d, struct wl_cursor *wlcursor) +{ + SDL_Cursor *cursor; + + cursor = calloc(1, sizeof (*cursor)); + if (cursor) { + Wayland_CursorData *data = calloc (1, sizeof (Wayland_CursorData)); + cursor->driverdata = (void *) data; + + /* The wl_buffer here will be destroyed from wl_cursor_theme_destroy + * if we are fetching this from a wl_cursor_theme, so don't store a + * reference to it here */ + data->buffer = NULL; + data->surface = wl_compositor_create_surface(d->compositor); + wl_surface_attach(data->surface, + wl_cursor_image_get_buffer(wlcursor->images[0]), + 0, + 0); + wl_surface_damage(data->surface, + 0, + 0, + wlcursor->images[0]->width, + wlcursor->images[0]->height); + wl_surface_commit(data->surface); + data->hot_x = wlcursor->images[0]->hotspot_x; + data->hot_y = wlcursor->images[0]->hotspot_y; + data->cursor= wlcursor; + } else { + SDL_OutOfMemory (); + } + + return cursor; +} + +static SDL_Cursor * +Wayland_CreateDefaultCursor() +{ + SDL_VideoDevice *device = SDL_GetVideoDevice(); + SDL_VideoData *data = device->driverdata; + + return CreateCursorFromWlCursor (data, + wl_cursor_theme_get_cursor(data->cursor_theme, + "left_ptr")); +} + +static SDL_Cursor * +Wayland_CreateSystemCursor(SDL_SystemCursor id) +{ + SDL_VideoDevice *vd = SDL_GetVideoDevice(); + SDL_VideoData *d = vd->driverdata; + + struct wl_cursor *cursor = NULL; + + switch(id) + { + default: + SDL_assert(0); + return NULL; + case SDL_SYSTEM_CURSOR_ARROW: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); + break; + case SDL_SYSTEM_CURSOR_IBEAM: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "xterm"); + break; + case SDL_SYSTEM_CURSOR_WAIT: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "wait"); + break; + case SDL_SYSTEM_CURSOR_CROSSHAIR: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + case SDL_SYSTEM_CURSOR_WAITARROW: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "wait"); + break; + case SDL_SYSTEM_CURSOR_SIZENWSE: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + case SDL_SYSTEM_CURSOR_SIZENESW: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + case SDL_SYSTEM_CURSOR_SIZEWE: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + case SDL_SYSTEM_CURSOR_SIZENS: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + case SDL_SYSTEM_CURSOR_SIZEALL: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + case SDL_SYSTEM_CURSOR_NO: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "xterm"); + break; + case SDL_SYSTEM_CURSOR_HAND: + cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + break; + } + + SDL_Cursor *sdl_cursor = CreateCursorFromWlCursor (d, cursor); + + return sdl_cursor; +} + +static void +Wayland_FreeCursor(SDL_Cursor *cursor) +{ + if (!cursor) + return; + + Wayland_CursorData *d = cursor->driverdata; + + /* Probably not a cursor we own */ + if (!d) + return; + + if (d->buffer) + wl_buffer_destroy(d->buffer); + + if (d->surface) + wl_surface_destroy(d->surface); + + /* Not sure what's meant to happen to shm_data */ + free (cursor->driverdata); + SDL_free(cursor); +} + +static int +Wayland_ShowCursor(SDL_Cursor *cursor) +{ + SDL_VideoDevice *vd = SDL_GetVideoDevice(); + SDL_VideoData *d = vd->driverdata; + + struct wl_pointer *pointer = d->pointer; + + if (!pointer) + return -1; + + if (cursor) + { + Wayland_CursorData *data = cursor->driverdata; + + wl_pointer_set_cursor (pointer, 0, + data->surface, + data->hot_x, + data->hot_y); + } + else + { + wl_pointer_set_cursor (pointer, 0, + NULL, + 0, + 0); + } + + return 0; +} + +static void +Wayland_WarpMouse(SDL_Window *window, int x, int y) +{ + SDL_Unsupported(); + return; +} + +static int +Wayland_SetRelativeMouseMode(SDL_bool enabled) +{ + SDL_Unsupported(); + return -1; +} + +void +Wayland_InitMouse(void) +{ + SDL_Mouse *mouse = SDL_GetMouse(); + + mouse->CreateCursor = Wayland_CreateCursor; + mouse->CreateSystemCursor = Wayland_CreateSystemCursor; + mouse->ShowCursor = Wayland_ShowCursor; + mouse->FreeCursor = Wayland_FreeCursor; + mouse->WarpMouse = Wayland_WarpMouse; + mouse->SetRelativeMouseMode = Wayland_SetRelativeMouseMode; + + SDL_SetDefaultCursor(Wayland_CreateDefaultCursor()); +} + +void +Wayland_FiniMouse(void) +{ + /* This effectively assumes that nobody else + * touches SDL_Mouse which is effectively + * a singleton */ + + SDL_Mouse *mouse = SDL_GetMouse(); + + /* Free the current cursor if not the same pointer as + * the default cursor */ + if (mouse->def_cursor != mouse->cur_cursor) + Wayland_FreeCursor (mouse->cur_cursor); + + Wayland_FreeCursor (mouse->def_cursor); + mouse->def_cursor = NULL; + mouse->cur_cursor = NULL; + + mouse->CreateCursor = NULL; + mouse->CreateSystemCursor = NULL; + mouse->ShowCursor = NULL; + mouse->FreeCursor = NULL; + mouse->WarpMouse = NULL; + mouse->SetRelativeMouseMode = NULL; +} +#endif diff --git a/src/video/wayland/SDL_waylandmouse.h b/src/video/wayland/SDL_waylandmouse.h new file mode 100644 index 0000000000..f434b9d82c --- /dev/null +++ b/src/video/wayland/SDL_waylandmouse.h @@ -0,0 +1,31 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" +#include "SDL_mouse.h" +#include "SDL_waylandvideo.h" + +#if SDL_VIDEO_DRIVER_WAYLAND + +extern void Wayland_InitMouse(void); +extern void Wayland_FiniMouse(void); + +#endif diff --git a/src/video/wayland/SDL_waylandopengles.c b/src/video/wayland/SDL_waylandopengles.c new file mode 100644 index 0000000000..7a13839816 --- /dev/null +++ b/src/video/wayland/SDL_waylandopengles.c @@ -0,0 +1,90 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "SDL_config.h" + +#if SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL + +#include "SDL_waylandvideo.h" +#include "SDL_waylandopengles.h" +#include "SDL_waylandwindow.h" +#include "SDL_waylandevents_c.h" + +/* EGL implementation of SDL OpenGL ES support */ + +int +Wayland_GLES_LoadLibrary(_THIS, const char *path) { + int ret; + SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; + + ret = SDL_EGL_LoadLibrary(_this, path, (NativeDisplayType) data->display); + + Wayland_PumpEvents(_this); + wayland_schedule_write(data); + + return ret; +} + + +SDL_GLContext +Wayland_GLES_CreateContext(_THIS, SDL_Window * window) +{ + SDL_GLContext context; + context = SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface); + wayland_schedule_write(_this->driverdata); + + return context; +} + +void +Wayland_GLES_SwapWindow(_THIS, SDL_Window *window) +{ + SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface); + wayland_schedule_write(_this->driverdata); +} + + +int +Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context) +{ + int ret; + + if (window && context) { + ret = SDL_EGL_MakeCurrent(_this, ((SDL_WindowData *) window->driverdata)->egl_surface, context); + } + else { + ret = SDL_EGL_MakeCurrent(_this, NULL, NULL); + } + + wayland_schedule_write(_this->driverdata); + + return ret; +} + +void +Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context) +{ + SDL_EGL_DeleteContext(_this, context); + wayland_schedule_write(_this->driverdata); +} + +#endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */ + +/* vi: set ts=4 sw=4 expandtab: */ \ No newline at end of file diff --git a/src/video/wayland/SDL_waylandopengles.h b/src/video/wayland/SDL_waylandopengles.h new file mode 100644 index 0000000000..2deed0c14b --- /dev/null +++ b/src/video/wayland/SDL_waylandopengles.h @@ -0,0 +1,46 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "SDL_config.h" + +#ifndef _SDL_waylandopengles_h +#define _SDL_waylandopengles_h + +#include "../SDL_sysvideo.h" +#include "../SDL_egl_c.h" + +typedef struct SDL_PrivateGLESData +{ +} SDL_PrivateGLESData; + +/* OpenGLES functions */ +#define Wayland_GLES_GetAttribute SDL_EGL_GetAttribute +#define Wayland_GLES_GetProcAddress SDL_EGL_GetProcAddress +#define Wayland_GLES_UnloadLibrary SDL_EGL_UnloadLibrary +#define Wayland_GLES_SetSwapInterval SDL_EGL_SetSwapInterval +#define Wayland_GLES_GetSwapInterval SDL_EGL_GetSwapInterval + +extern int Wayland_GLES_LoadLibrary(_THIS, const char *path); +extern SDL_GLContext Wayland_GLES_CreateContext(_THIS, SDL_Window * window); +extern void Wayland_GLES_SwapWindow(_THIS, SDL_Window * window); +extern int Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context); +extern void Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context); + +#endif /* _SDL_waylandopengles_h */ diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c new file mode 100644 index 0000000000..e75bea1dc4 --- /dev/null +++ b/src/video/wayland/SDL_waylandvideo.c @@ -0,0 +1,365 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#include "SDL_video.h" +#include "SDL_mouse.h" +#include "../../events/SDL_events_c.h" + +#include "SDL_waylandvideo.h" +#include "SDL_waylandevents_c.h" +#include "SDL_waylandwindow.h" +#include "SDL_waylandopengles.h" +#include "SDL_waylandmouse.h" + +#include +#include + +#define WAYLANDVID_DRIVER_NAME "wayland" + +struct wayland_mode { + SDL_DisplayMode mode; + struct wl_list link; +}; + +/* Initialization/Query functions */ +static int +Wayland_VideoInit(_THIS); + +static void +Wayland_GetDisplayModes(_THIS, SDL_VideoDisplay *sdl_display); +static int +Wayland_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode); + +static void +Wayland_VideoQuit(_THIS); + +/* Wayland driver bootstrap functions */ +static int +Wayland_Available(void) +{ + struct wl_display *display = NULL; + + display = wl_display_connect(NULL); + if (display != NULL) { + wl_display_disconnect(display); + } + + return (display != NULL); +} + +static void +Wayland_DeleteDevice(SDL_VideoDevice *device) +{ + SDL_free(device); +} + +static SDL_VideoDevice * +Wayland_CreateDevice(int devindex) +{ + SDL_VideoDevice *device; + + /* Initialize all variables that we clean on shutdown */ + device = SDL_calloc(1, sizeof(SDL_VideoDevice)); + if (!device) { + SDL_OutOfMemory(); + return NULL; + } + + /* Set the function pointers */ + device->VideoInit = Wayland_VideoInit; + device->VideoQuit = Wayland_VideoQuit; + device->SetDisplayMode = Wayland_SetDisplayMode; + device->GetDisplayModes = Wayland_GetDisplayModes; + device->GetWindowWMInfo = Wayland_GetWindowWMInfo; + + device->PumpEvents = Wayland_PumpEvents; + + device->GL_SwapWindow = Wayland_GLES_SwapWindow; + device->GL_GetSwapInterval = Wayland_GLES_GetSwapInterval; + device->GL_SetSwapInterval = Wayland_GLES_SetSwapInterval; + device->GL_MakeCurrent = Wayland_GLES_MakeCurrent; + device->GL_CreateContext = Wayland_GLES_CreateContext; + device->GL_LoadLibrary = Wayland_GLES_LoadLibrary; + device->GL_UnloadLibrary = Wayland_GLES_UnloadLibrary; + device->GL_GetProcAddress = Wayland_GLES_GetProcAddress; + device->GL_DeleteContext = Wayland_GLES_DeleteContext; + + device->CreateWindow = Wayland_CreateWindow; + device->ShowWindow = Wayland_ShowWindow; + device->SetWindowFullscreen = Wayland_SetWindowFullscreen; + device->SetWindowSize = Wayland_SetWindowSize; + device->DestroyWindow = Wayland_DestroyWindow; + + device->free = Wayland_DeleteDevice; + + return device; +} + +VideoBootStrap Wayland_bootstrap = { + WAYLANDVID_DRIVER_NAME, "SDL Wayland video driver", + Wayland_Available, Wayland_CreateDevice +}; + +static void +wayland_add_mode(SDL_VideoData *d, SDL_DisplayMode m) +{ + struct wayland_mode *mode; + + /* Check for duplicate mode */ + wl_list_for_each(mode, &d->modes_list, link) + if (mode->mode.w == m.w && mode->mode.h == m.h && + mode->mode.refresh_rate == m.refresh_rate) + return; + + /* Add new mode to the list */ + mode = SDL_calloc(1, sizeof *mode); + + if (!mode) + return; + + mode->mode = m; + wl_list_insert(&d->modes_list, &mode->link); +} + +static void +display_handle_geometry(void *data, + struct wl_output *output, + int x, int y, + int physical_width, + int physical_height, + int subpixel, + const char *make, + const char *model, + int transform) + +{ + SDL_VideoData *d = data; + + d->screen_allocation.x = x; + d->screen_allocation.y = y; +} + +static void +display_handle_mode(void *data, + struct wl_output *wl_output, + uint32_t flags, + int width, + int height, + int refresh) +{ + SDL_VideoData *d = data; + SDL_DisplayMode mode; + + SDL_zero(mode); + mode.w = width; + mode.h = height; + mode.refresh_rate = refresh / 1000; + + wayland_add_mode(d, mode); + + if (flags & WL_OUTPUT_MODE_CURRENT) { + d->screen_allocation.width = width; + d->screen_allocation.height = height; + } +} + +static const struct wl_output_listener output_listener = { + display_handle_geometry, + display_handle_mode +}; + +static void +shm_handle_format(void *data, + struct wl_shm *shm, + uint32_t format) +{ + SDL_VideoData *d = data; + + d->shm_formats |= (1 << format); +} + +static const struct wl_shm_listener shm_listener = { + shm_handle_format +}; + +static void +display_handle_global(void *data, struct wl_registry *registry, uint32_t id, + const char *interface, uint32_t version) +{ + SDL_VideoData *d = data; + + if (strcmp(interface, "wl_compositor") == 0) { + d->compositor = wl_registry_bind(d->registry, id, &wl_compositor_interface, 1); + } else if (strcmp(interface, "wl_output") == 0) { + d->output = wl_registry_bind(d->registry, id, &wl_output_interface, 1); + wl_output_add_listener(d->output, &output_listener, d); + } else if (strcmp(interface, "wl_seat") == 0) { + Wayland_display_add_input(d, id); + } else if (strcmp(interface, "wl_shell") == 0) { + d->shell = wl_registry_bind(d->registry, id, &wl_shell_interface, 1); + } else if (strcmp(interface, "wl_shm") == 0) { + d->shm = wl_registry_bind(registry, id, &wl_shm_interface, 1); + d->cursor_theme = wl_cursor_theme_load(NULL, 32, d->shm); + d->default_cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); + wl_shm_add_listener(d->shm, &shm_listener, d); + } +} + +static const struct wl_registry_listener registry_listener = { + display_handle_global +}; + +int +Wayland_VideoInit(_THIS) +{ + SDL_VideoData *data; + + data = malloc(sizeof *data); + if (data == NULL) + return 0; + memset(data, 0, sizeof *data); + + _this->driverdata = data; + + wl_list_init(&data->modes_list); + + data->display = wl_display_connect(NULL); + if (data->display == NULL) { + SDL_SetError("Failed to connect to a Wayland display"); + return 0; + } + + data->registry = wl_display_get_registry(data->display); + wl_registry_add_listener(data->registry, ®istry_listener, data); + + while (data->screen_allocation.width == 0) + wl_display_dispatch(data->display); + + data->xkb_context = xkb_context_new(0); + if (!data->xkb_context) { + SDL_SetError("Failed to create XKB context"); + return 0; + } + + SDL_VideoDisplay display; + SDL_DisplayMode mode; + + /* Use a fake 32-bpp desktop mode */ + mode.format = SDL_PIXELFORMAT_RGB888; + mode.w = data->screen_allocation.width; + mode.h = data->screen_allocation.height; + mode.refresh_rate = 0; + mode.driverdata = NULL; + wayland_add_mode(data, mode); + SDL_zero(display); + display.desktop_mode = mode; + display.current_mode = mode; + display.driverdata = NULL; + SDL_AddVideoDisplay(&display); + + Wayland_InitMouse (); + + wayland_schedule_write(data); + + return 0; +} + +static void +Wayland_GetDisplayModes(_THIS, SDL_VideoDisplay *sdl_display) +{ + SDL_VideoData *data = _this->driverdata; + SDL_DisplayMode mode; + struct wayland_mode *m; + + Wayland_PumpEvents(_this); + + wl_list_for_each(m, &data->modes_list, link) { + m->mode.format = SDL_PIXELFORMAT_RGB888; + SDL_AddDisplayMode(sdl_display, &m->mode); + m->mode.format = SDL_PIXELFORMAT_RGBA8888; + SDL_AddDisplayMode(sdl_display, &m->mode); + } + + mode.w = data->screen_allocation.width; + mode.h = data->screen_allocation.height; + mode.refresh_rate = 0; + mode.driverdata = NULL; + + mode.format = SDL_PIXELFORMAT_RGB888; + SDL_AddDisplayMode(sdl_display, &mode); + mode.format = SDL_PIXELFORMAT_RGBA8888; + SDL_AddDisplayMode(sdl_display, &mode); +} + +static int +Wayland_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode) +{ + return 0; +} + +void +Wayland_VideoQuit(_THIS) +{ + SDL_VideoData *data = _this->driverdata; + struct wayland_mode *t, *m; + + Wayland_FiniMouse (); + + if (data->output) + wl_output_destroy(data->output); + + Wayland_display_destroy_input(data); + + if (data->xkb_context) { + xkb_context_unref(data->xkb_context); + data->xkb_context = NULL; + } + + if (data->shm) + wl_shm_destroy(data->shm); + + if (data->cursor_theme) + wl_cursor_theme_destroy(data->cursor_theme); + + if (data->shell) + wl_shell_destroy(data->shell); + + if (data->compositor) + wl_compositor_destroy(data->compositor); + + if (data->display) { + wl_display_flush(data->display); + wl_display_disconnect(data->display); + } + + wl_list_for_each_safe(m, t, &data->modes_list, link) { + wl_list_remove(&m->link); + free(m); + } + + + free(data); + _this->driverdata = NULL; +} + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandvideo.h b/src/video/wayland/SDL_waylandvideo.h new file mode 100644 index 0000000000..ca1b66f4e8 --- /dev/null +++ b/src/video/wayland/SDL_waylandvideo.h @@ -0,0 +1,71 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#ifndef _SDL_waylandvideo_h +#define _SDL_waylandvideo_h + +#include +#include +#include + +#include + +struct xkb_context; +struct SDL_WaylandInput; + +typedef struct { + struct wl_display *display; + struct wl_registry *registry; + struct wl_compositor *compositor; + struct wl_output *output; + struct wl_shm *shm; + struct wl_cursor_theme *cursor_theme; + struct wl_cursor *default_cursor; + struct wl_pointer *pointer; + struct wl_shell *shell; + + struct { + int32_t x, y, width, height; + } screen_allocation; + + struct wl_list modes_list; + + EGLDisplay edpy; + EGLContext context; + EGLConfig econf; + + struct xkb_context *xkb_context; + struct SDL_WaylandInput *input; + + uint32_t shm_formats; +} SDL_VideoData; + +static inline void +wayland_schedule_write(SDL_VideoData *data) +{ + wl_display_flush(data->display); +} + +#endif /* _SDL_nullvideo_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c new file mode 100644 index 0000000000..e530f5b80f --- /dev/null +++ b/src/video/wayland/SDL_waylandwindow.c @@ -0,0 +1,192 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#include "../SDL_sysvideo.h" +#include "../../events/SDL_windowevents_c.h" +#include "../SDL_egl_c.h" +#include "SDL_waylandwindow.h" +#include "SDL_waylandvideo.h" + +static void +handle_ping(void *data, struct wl_shell_surface *shell_surface, + uint32_t serial) +{ + wl_shell_surface_pong(shell_surface, serial); +} + +static void +handle_configure(void *data, struct wl_shell_surface *shell_surface, + uint32_t edges, int32_t width, int32_t height) +{ +} + +static void +handle_popup_done(void *data, struct wl_shell_surface *shell_surface) +{ +} + +static const struct wl_shell_surface_listener shell_surface_listener = { + handle_ping, + handle_configure, + handle_popup_done +}; + +SDL_bool +Wayland_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + + info->info.wl.display = data->waylandData->display; + info->info.wl.surface = data->surface; + info->info.wl.shell_surface = data->shell_surface; + info->subsystem = SDL_SYSWM_WAYLAND; + + return SDL_TRUE; +} + +void Wayland_ShowWindow(_THIS, SDL_Window *window) +{ + SDL_WindowData *wind = window->driverdata; + + if (window->flags & SDL_WINDOW_FULLSCREEN) + wl_shell_surface_set_fullscreen(wind->shell_surface, + WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT, + 0, NULL); + else + wl_shell_surface_set_toplevel(wind->shell_surface); + + wayland_schedule_write(_this->driverdata); +} + +void +Wayland_SetWindowFullscreen(_THIS, SDL_Window * window, + SDL_VideoDisplay * _display, SDL_bool fullscreen) +{ + SDL_WindowData *wind = window->driverdata; + + if (fullscreen) + wl_shell_surface_set_fullscreen(wind->shell_surface, + WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE, + 0, NULL); + else + wl_shell_surface_set_toplevel(wind->shell_surface); + + wayland_schedule_write(_this->driverdata); +} + +int Wayland_CreateWindow(_THIS, SDL_Window *window) +{ + SDL_WindowData *data; + SDL_VideoData *c; + struct wl_region *region; + + data = calloc(1, sizeof *data); + if (data == NULL) + return 0; + + c = _this->driverdata; + window->driverdata = data; + + if (!(window->flags & SDL_WINDOW_OPENGL)) { + SDL_GL_LoadLibrary(NULL); + window->flags |= SDL_WINDOW_OPENGL; + } + + if (window->x == SDL_WINDOWPOS_UNDEFINED) { + window->x = 0; + } + if (window->y == SDL_WINDOWPOS_UNDEFINED) { + window->y = 0; + } + + data->waylandData = c; + data->sdlwindow = window; + + data->surface = + wl_compositor_create_surface(c->compositor); + wl_surface_set_user_data(data->surface, data); + data->shell_surface = wl_shell_get_shell_surface(c->shell, + data->surface); + data->egl_window = wl_egl_window_create(data->surface, + window->w, window->h); + + /* Create the GLES window surface */ + data->egl_surface = SDL_EGL_CreateSurface(_this, (NativeWindowType) data->egl_window); + + if (data->egl_surface == EGL_NO_SURFACE) { + SDL_SetError("failed to create a window surface"); + return -1; + } + + if (data->shell_surface) { + wl_shell_surface_set_user_data(data->shell_surface, data); + wl_shell_surface_add_listener(data->shell_surface, + &shell_surface_listener, data); + } + + region = wl_compositor_create_region(c->compositor); + wl_region_add(region, 0, 0, window->w, window->h); + wl_surface_set_opaque_region(data->surface, region); + wl_region_destroy(region); + + wayland_schedule_write(c); + + return 0; +} + +void Wayland_SetWindowSize(_THIS, SDL_Window * window) +{ + SDL_VideoData *data = _this->driverdata; + SDL_WindowData *wind = window->driverdata; + struct wl_region *region; + + wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0); + + region = wl_compositor_create_region(data->compositor); + wl_region_add(region, 0, 0, window->w, window->h); + wl_surface_set_opaque_region(wind->surface, region); + wl_region_destroy(region); +} + +void Wayland_DestroyWindow(_THIS, SDL_Window *window) +{ + SDL_VideoData *data = _this->driverdata; + SDL_WindowData *wind = window->driverdata; + + window->driverdata = NULL; + + if (data) { + SDL_EGL_DestroySurface(_this, wind->egl_surface); + wl_egl_window_destroy(wind->egl_window); + + if (wind->shell_surface) + wl_shell_surface_destroy(wind->shell_surface); + + wl_surface_destroy(wind->surface); + + SDL_free(wind); + wayland_schedule_write(data); + } +} + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandwindow.h b/src/video/wayland/SDL_waylandwindow.h new file mode 100644 index 0000000000..f4f18361a2 --- /dev/null +++ b/src/video/wayland/SDL_waylandwindow.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#ifndef _SDL_waylandwindow_h +#define _SDL_waylandwindow_h + +#include "../SDL_sysvideo.h" +#include "SDL_syswm.h" + +#include "SDL_waylandvideo.h" + +struct SDL_WaylandInput; + +typedef struct { + SDL_Window *sdlwindow; + SDL_VideoData *waylandData; + struct wl_surface *surface; + struct wl_shell_surface *shell_surface; + struct wl_egl_window *egl_window; + struct SDL_WaylandInput *keyboard_device; + + EGLSurface egl_surface; +} SDL_WindowData; + +extern void Wayland_ShowWindow(_THIS, SDL_Window *window); +extern void Wayland_SetWindowFullscreen(_THIS, SDL_Window * window, + SDL_VideoDisplay * _display, + SDL_bool fullscreen); +extern int Wayland_CreateWindow(_THIS, SDL_Window *window); +extern void Wayland_SetWindowSize(_THIS, SDL_Window * window); +extern void Wayland_DestroyWindow(_THIS, SDL_Window *window); + +extern SDL_bool +Wayland_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info); + +#endif /* _SDL_waylandwindow_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/test/Makefile.in b/test/Makefile.in index a534250fd7..8a8c2b8f3d 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -128,13 +128,13 @@ testgesture$(EXE): $(srcdir)/testgesture.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@ testgl2$(EXE): $(srcdir)/testgl2.c - $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLLIB@ @MATHLIB@ + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@ testgles$(EXE): $(srcdir)/testgles.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLESLIB@ @MATHLIB@ testgles2$(EXE): $(srcdir)/testgles2.c - $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @GLES2LIB@ @MATHLIB@ + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) @MATHLIB@ testhaptic$(EXE): $(srcdir)/testhaptic.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) diff --git a/test/testgl2.c b/test/testgl2.c index 19685eae1d..f51efe90dc 100644 --- a/test/testgl2.c +++ b/test/testgl2.c @@ -24,11 +24,48 @@ #include "SDL_opengl.h" +typedef struct GL_Context +{ +#define SDL_PROC(ret,func,params) ret (APIENTRY *func) params; +#include "../src/render/opengl/SDL_glfuncs.h" +#undef SDL_PROC +} GL_Context; + + /* Undefine this if you want a flat cube instead of a rainbow cube */ #define SHADED_CUBE static SDLTest_CommonState *state; static SDL_GLContext context; +static GL_Context ctx; + +static int LoadContext(GL_Context * data) +{ +#if SDL_VIDEO_DRIVER_UIKIT +#define __SDL_NOGETPROCADDR__ +#elif SDL_VIDEO_DRIVER_ANDROID +#define __SDL_NOGETPROCADDR__ +#elif SDL_VIDEO_DRIVER_PANDORA +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined __SDL_NOGETPROCADDR__ +#define SDL_PROC(ret,func,params) data->func=func; +#else +#define SDL_PROC(ret,func,params) \ + do { \ + data->func = SDL_GL_GetProcAddress(#func); \ + if ( ! data->func ) { \ + return SDL_SetError("Couldn't load GL function %s: %s\n", #func, SDL_GetError()); \ + } \ + } while ( 0 ); +#endif /* _SDL_NOGETPROCADDR_ */ + +#include "../src/render/opengl/SDL_glfuncs.h" +#undef SDL_PROC + return 0; +} + /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ static void @@ -67,107 +104,107 @@ Render() }; /* Do our drawing, too. */ - glClearColor(0.0, 0.0, 0.0, 1.0); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + ctx.glClearColor(0.0, 0.0, 0.0, 1.0); + ctx.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glBegin(GL_QUADS); + ctx.glBegin(GL_QUADS); #ifdef SHADED_CUBE - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - glColor3fv(color[3]); - glVertex3fv(cube[3]); - - glColor3fv(color[3]); - glVertex3fv(cube[3]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[6]); - glVertex3fv(cube[6]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); - glColor3fv(color[6]); - glVertex3fv(cube[6]); - - glColor3fv(color[5]); - glVertex3fv(cube[5]); - glColor3fv(color[0]); - glVertex3fv(cube[0]); - glColor3fv(color[3]); - glVertex3fv(cube[3]); - glColor3fv(color[4]); - glVertex3fv(cube[4]); - - glColor3fv(color[6]); - glVertex3fv(cube[6]); - glColor3fv(color[1]); - glVertex3fv(cube[1]); - glColor3fv(color[2]); - glVertex3fv(cube[2]); - glColor3fv(color[7]); - glVertex3fv(cube[7]); + ctx.glColor3fv(color[0]); + ctx.glVertex3fv(cube[0]); + ctx.glColor3fv(color[1]); + ctx.glVertex3fv(cube[1]); + ctx.glColor3fv(color[2]); + ctx.glVertex3fv(cube[2]); + ctx.glColor3fv(color[3]); + ctx.glVertex3fv(cube[3]); + + ctx.glColor3fv(color[3]); + ctx.glVertex3fv(cube[3]); + ctx.glColor3fv(color[4]); + ctx.glVertex3fv(cube[4]); + ctx.glColor3fv(color[7]); + ctx.glVertex3fv(cube[7]); + ctx.glColor3fv(color[2]); + ctx.glVertex3fv(cube[2]); + + ctx.glColor3fv(color[0]); + ctx.glVertex3fv(cube[0]); + ctx.glColor3fv(color[5]); + ctx.glVertex3fv(cube[5]); + ctx.glColor3fv(color[6]); + ctx.glVertex3fv(cube[6]); + ctx.glColor3fv(color[1]); + ctx.glVertex3fv(cube[1]); + + ctx.glColor3fv(color[5]); + ctx.glVertex3fv(cube[5]); + ctx.glColor3fv(color[4]); + ctx.glVertex3fv(cube[4]); + ctx.glColor3fv(color[7]); + ctx.glVertex3fv(cube[7]); + ctx.glColor3fv(color[6]); + ctx.glVertex3fv(cube[6]); + + ctx.glColor3fv(color[5]); + ctx.glVertex3fv(cube[5]); + ctx.glColor3fv(color[0]); + ctx.glVertex3fv(cube[0]); + ctx.glColor3fv(color[3]); + ctx.glVertex3fv(cube[3]); + ctx.glColor3fv(color[4]); + ctx.glVertex3fv(cube[4]); + + ctx.glColor3fv(color[6]); + ctx.glVertex3fv(cube[6]); + ctx.glColor3fv(color[1]); + ctx.glVertex3fv(cube[1]); + ctx.glColor3fv(color[2]); + ctx.glVertex3fv(cube[2]); + ctx.glColor3fv(color[7]); + ctx.glVertex3fv(cube[7]); #else /* flat cube */ - glColor3f(1.0, 0.0, 0.0); - glVertex3fv(cube[0]); - glVertex3fv(cube[1]); - glVertex3fv(cube[2]); - glVertex3fv(cube[3]); - - glColor3f(0.0, 1.0, 0.0); - glVertex3fv(cube[3]); - glVertex3fv(cube[4]); - glVertex3fv(cube[7]); - glVertex3fv(cube[2]); - - glColor3f(0.0, 0.0, 1.0); - glVertex3fv(cube[0]); - glVertex3fv(cube[5]); - glVertex3fv(cube[6]); - glVertex3fv(cube[1]); - - glColor3f(0.0, 1.0, 1.0); - glVertex3fv(cube[5]); - glVertex3fv(cube[4]); - glVertex3fv(cube[7]); - glVertex3fv(cube[6]); - - glColor3f(1.0, 1.0, 0.0); - glVertex3fv(cube[5]); - glVertex3fv(cube[0]); - glVertex3fv(cube[3]); - glVertex3fv(cube[4]); - - glColor3f(1.0, 0.0, 1.0); - glVertex3fv(cube[6]); - glVertex3fv(cube[1]); - glVertex3fv(cube[2]); - glVertex3fv(cube[7]); + ctx.glColor3f(1.0, 0.0, 0.0); + ctx.glVertex3fv(cube[0]); + ctx.glVertex3fv(cube[1]); + ctx.glVertex3fv(cube[2]); + ctx.glVertex3fv(cube[3]); + + ctx.glColor3f(0.0, 1.0, 0.0); + ctx.glVertex3fv(cube[3]); + ctx.glVertex3fv(cube[4]); + ctx.glVertex3fv(cube[7]); + ctx.glVertex3fv(cube[2]); + + ctx.glColor3f(0.0, 0.0, 1.0); + ctx.glVertex3fv(cube[0]); + ctx.glVertex3fv(cube[5]); + ctx.glVertex3fv(cube[6]); + ctx.glVertex3fv(cube[1]); + + ctx.glColor3f(0.0, 1.0, 1.0); + ctx.glVertex3fv(cube[5]); + ctx.glVertex3fv(cube[4]); + ctx.glVertex3fv(cube[7]); + ctx.glVertex3fv(cube[6]); + + ctx.glColor3f(1.0, 1.0, 0.0); + ctx.glVertex3fv(cube[5]); + ctx.glVertex3fv(cube[0]); + ctx.glVertex3fv(cube[3]); + ctx.glVertex3fv(cube[4]); + + ctx.glColor3f(1.0, 0.0, 1.0); + ctx.glVertex3fv(cube[6]); + ctx.glVertex3fv(cube[1]); + ctx.glVertex3fv(cube[2]); + ctx.glVertex3fv(cube[7]); #endif /* SHADED_CUBE */ - glEnd(); + ctx.glEnd(); - glMatrixMode(GL_MODELVIEW); - glRotatef(5.0, 1.0, 1.0, 1.0); + ctx.glMatrixMode(GL_MODELVIEW); + ctx.glRotatef(5.0, 1.0, 1.0, 1.0); } int @@ -242,6 +279,13 @@ main(int argc, char *argv[]) SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_GL_CreateContext(): %s\n", SDL_GetError()); quit(2); } + + /* Important: call this *after* creating the context */ + if (LoadContext(&ctx) < 0) { + SDL_Log("Could not load GL functions\n"); + quit(2); + return 0; + } if (state->render_flags & SDL_RENDERER_PRESENTVSYNC) { /* try late-swap-tearing first. If not supported, try normal vsync. */ @@ -260,10 +304,10 @@ main(int argc, char *argv[]) SDL_GL_GetDrawableSize(state->windows[0], &dw, &dh); SDL_Log("Draw Size : %d,%d\n", dw, dh); SDL_Log("\n"); - SDL_Log("Vendor : %s\n", glGetString(GL_VENDOR)); - SDL_Log("Renderer : %s\n", glGetString(GL_RENDERER)); - SDL_Log("Version : %s\n", glGetString(GL_VERSION)); - SDL_Log("Extensions : %s\n", glGetString(GL_EXTENSIONS)); + SDL_Log("Vendor : %s\n", ctx.glGetString(GL_VENDOR)); + SDL_Log("Renderer : %s\n", ctx.glGetString(GL_RENDERER)); + SDL_Log("Version : %s\n", ctx.glGetString(GL_VERSION)); + SDL_Log("Extensions : %s\n", ctx.glGetString(GL_EXTENSIONS)); SDL_Log("\n"); status = SDL_GL_GetAttribute(SDL_GL_RED_SIZE, &value); @@ -319,14 +363,14 @@ main(int argc, char *argv[]) } /* Set rendering settings */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(-2.0, 2.0, -2.0, 2.0, -20.0, 20.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glEnable(GL_DEPTH_TEST); - glDepthFunc(GL_LESS); - glShadeModel(GL_SMOOTH); + ctx.glMatrixMode(GL_PROJECTION); + ctx.glLoadIdentity(); + ctx.glOrtho(-2.0, 2.0, -2.0, 2.0, -20.0, 20.0); + ctx.glMatrixMode(GL_MODELVIEW); + ctx.glLoadIdentity(); + ctx.glEnable(GL_DEPTH_TEST); + ctx.glDepthFunc(GL_LESS); + ctx.glShadeModel(GL_SMOOTH); /* Main render loop */ frames = 0; @@ -344,7 +388,7 @@ main(int argc, char *argv[]) continue; SDL_GL_MakeCurrent(state->windows[i], context); SDL_GL_GetDrawableSize(state->windows[i], &w, &h); - glViewport(0, 0, w, h); + ctx.glViewport(0, 0, w, h); Render(); SDL_GL_SwapWindow(state->windows[i]); } From a9fbe5f92e224de48cb044966c384db1664f0a07 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 15 Dec 2013 00:21:42 -0500 Subject: [PATCH 168/402] Enable ccache for Raspberry Pi buildbot script. --- build-scripts/raspberrypi-buildbot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-scripts/raspberrypi-buildbot.sh b/build-scripts/raspberrypi-buildbot.sh index bcffaf4a37..1cc637c545 100755 --- a/build-scripts/raspberrypi-buildbot.sh +++ b/build-scripts/raspberrypi-buildbot.sh @@ -39,7 +39,7 @@ mkdir -p $BUILDBOTDIR pushd $BUILDBOTDIR SYSROOT="/opt/rpi-sysroot" -export CC="/opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux -L$SYSROOT/opt/vc/lib" +export CC="ccache /opt/rpi-tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc --sysroot=$SYSROOT -I$SYSROOT/opt/vc/include -I$SYSROOT/usr/include -I$SYSROOT/opt/vc/include/interface/vcos/pthreads -I$SYSROOT/opt/vc/include/interface/vmcs_host/linux -L$SYSROOT/opt/vc/lib" # -L$SYSROOT/usr/lib/arm-linux-gnueabihf" # !!! FIXME: shouldn't have to --disable-* things here. ../configure --with-sysroot=$SYSROOT --host=arm-raspberry-linux-gnueabihf --prefix=$PWD/rpi-sdl2-installed --disable-pulseaudio --disable-esd From 7eb312464ef467a75a384ba9314c5b53cc3bfc67 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 16 Dec 2013 10:03:26 -0300 Subject: [PATCH 169/402] [Android] Define SDL_VIDEO_OPENGL_ES2 --- include/SDL_config_android.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h index 489b9ff329..2ed65d59bb 100644 --- a/include/SDL_config_android.h +++ b/include/SDL_config_android.h @@ -131,6 +131,7 @@ /* Enable OpenGL ES */ #define SDL_VIDEO_OPENGL_ES 1 +#define SDL_VIDEO_OPENGL_ES2 1 #define SDL_VIDEO_OPENGL_EGL 1 #define SDL_VIDEO_RENDER_OGL_ES 1 #define SDL_VIDEO_RENDER_OGL_ES2 1 From 8aacd0f316c6f838601fa5f98eb37263e1785192 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 10:54:27 -0800 Subject: [PATCH 170/402] Explicitly initialize COM with multi-threaded support. This is the safest option for applications that use COM, multi-threaded or not. --- src/core/windows/SDL_windows.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/windows/SDL_windows.c b/src/core/windows/SDL_windows.c index 6ac86a6e6e..8de46a72ce 100644 --- a/src/core/windows/SDL_windows.c +++ b/src/core/windows/SDL_windows.c @@ -45,7 +45,7 @@ WIN_SetError(const char *prefix) HRESULT WIN_CoInitialize(void) { - const HRESULT hr = CoInitialize(NULL); + const HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); /* S_FALSE means success, but someone else already initialized. */ /* You still need to call CoUninitialize in this case! */ From f170cbb31091f4b953297570af1fa76145f60fc5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 12:17:52 -0800 Subject: [PATCH 171/402] Added support for double-clicks, through a new "clicks" field in the mouse button event. --- include/SDL_events.h | 2 +- src/events/SDL_mouse.c | 54 ++++++++++++++++++++++++++++ src/events/SDL_mouse_c.h | 14 ++++++++ src/test/SDL_test_common.c | 8 ++--- src/video/windows/SDL_windowsmouse.c | 2 ++ 5 files changed, 75 insertions(+), 5 deletions(-) diff --git a/include/SDL_events.h b/include/SDL_events.h index c08903073a..81ff4dd564 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -239,8 +239,8 @@ typedef struct SDL_MouseButtonEvent Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ Uint8 button; /**< The mouse button index */ Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ Uint8 padding1; - Uint8 padding2; Sint32 x; /**< X coordinate, relative to window */ Sint32 y; /**< Y coordinate, relative to window */ } SDL_MouseButtonEvent; diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 0bb0b184df..742802a755 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -23,6 +23,7 @@ /* General mouse handling code for SDL */ #include "SDL_assert.h" +#include "SDL_timer.h" #include "SDL_events.h" #include "SDL_events_c.h" #include "default_cursor.h" @@ -32,6 +33,8 @@ /* The mouse state */ static SDL_Mouse SDL_mouse; +static Uint32 SDL_double_click_time = 500; +static int SDL_double_click_radius = 1; static int SDL_PrivateSendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relative, int x, int y); @@ -64,6 +67,12 @@ SDL_GetMouse(void) return &SDL_mouse; } +void +SDL_SetDoubleClickTime(Uint32 interval) +{ + SDL_double_click_time = interval; +} + SDL_Window * SDL_GetMouseFocus(void) { @@ -272,6 +281,23 @@ SDL_PrivateSendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relativ return posted; } +static SDL_MouseClickState *GetMouseClickState(SDL_Mouse *mouse, Uint8 button) +{ + if (button >= mouse->num_clickstates) { + int i, count = button + 1; + mouse->clickstate = (SDL_MouseClickState *)SDL_realloc(mouse->clickstate, count * sizeof(*mouse->clickstate)); + if (!mouse->clickstate) { + return NULL; + } + + for (i = mouse->num_clickstates; i < count; ++i) { + SDL_zero(mouse->clickstate[i]); + } + mouse->num_clickstates = count; + } + return &mouse->clickstate[button]; +} + int SDL_SendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 button) { @@ -279,6 +305,8 @@ SDL_SendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 int posted; Uint32 type; Uint32 buttonstate = mouse->buttonstate; + SDL_MouseClickState *clickstate = GetMouseClickState(mouse, button); + Uint8 click_count; /* Figure out which event to perform */ switch (state) { @@ -306,6 +334,27 @@ SDL_SendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 } mouse->buttonstate = buttonstate; + if (clickstate) { + if (state == SDL_PRESSED) { + Uint32 now = SDL_GetTicks(); + + if (SDL_TICKS_PASSED(now, clickstate->last_timestamp + SDL_double_click_time) || + SDL_abs(mouse->x - clickstate->last_x) > SDL_double_click_radius || + SDL_abs(mouse->y - clickstate->last_y) > SDL_double_click_radius) { + clickstate->click_count = 0; + } + clickstate->last_timestamp = now; + clickstate->last_x = mouse->x; + clickstate->last_y = mouse->y; + if (clickstate->click_count < 255) { + ++clickstate->click_count; + } + } + click_count = clickstate->click_count; + } else { + click_count = 1; + } + /* Post the event, if desired */ posted = 0; if (SDL_GetEventState(type) == SDL_ENABLE) { @@ -315,6 +364,7 @@ SDL_SendMouseButton(SDL_Window * window, SDL_MouseID mouseID, Uint8 state, Uint8 event.button.which = mouseID; event.button.state = state; event.button.button = button; + event.button.clicks = click_count; event.button.x = mouse->x; event.button.y = mouse->y; posted = (SDL_PushEvent(&event) > 0); @@ -376,6 +426,10 @@ SDL_MouseQuit(void) mouse->FreeCursor(mouse->def_cursor); } + if (mouse->clickstate) { + SDL_free(mouse->clickstate); + } + SDL_zerop(mouse); } diff --git a/src/events/SDL_mouse_c.h b/src/events/SDL_mouse_c.h index a8faa2e17f..fd34c66f87 100644 --- a/src/events/SDL_mouse_c.h +++ b/src/events/SDL_mouse_c.h @@ -33,6 +33,13 @@ struct SDL_Cursor void *driverdata; }; +typedef struct +{ + int last_x, last_y; + Uint32 last_timestamp; + Uint8 click_count; +} SDL_MouseClickState; + typedef struct { /* Create a cursor from a surface */ @@ -69,6 +76,10 @@ typedef struct /* the x and y coordinates when relative mode was activated */ int original_x, original_y; + /* Data for double-click tracking */ + int num_clickstates; + SDL_MouseClickState *clickstate; + SDL_Cursor *cursors; SDL_Cursor *def_cursor; SDL_Cursor *cur_cursor; @@ -85,6 +96,9 @@ extern int SDL_MouseInit(void); /* Get the mouse state structure */ SDL_Mouse *SDL_GetMouse(void); +/* Set the default double-click interval */ +extern void SDL_SetDoubleClickTime(Uint32 interval); + /* Set the default mouse cursor */ extern void SDL_SetDefaultCursor(SDL_Cursor * cursor); diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 3b4d3323fc..ee65b3f0cc 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1042,13 +1042,13 @@ SDLTest_PrintEvent(SDL_Event * event) event->motion.windowID); break; case SDL_MOUSEBUTTONDOWN: - fprintf(stderr, "Mouse: button %d pressed at %d,%d in window %d", - event->button.button, event->button.x, event->button.y, + fprintf(stderr, "Mouse: button %d pressed at %d,%d with click count %d in window %d", + event->button.button, event->button.x, event->button.y, event->button.clicks, event->button.windowID); break; case SDL_MOUSEBUTTONUP: - fprintf(stderr, "Mouse: button %d released at %d,%d in window %d", - event->button.button, event->button.x, event->button.y, + fprintf(stderr, "Mouse: button %d released at %d,%d with click count %d in window %d", + event->button.button, event->button.x, event->button.y, event->button.clicks, event->button.windowID); break; case SDL_MOUSEWHEEL: diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index f75b8dad33..2298dc89a8 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -250,6 +250,8 @@ WIN_InitMouse(_THIS) mouse->SetRelativeMouseMode = WIN_SetRelativeMouseMode; SDL_SetDefaultCursor(WIN_CreateDefaultCursor()); + + SDL_SetDoubleClickTime(GetDoubleClickTime()); } void From a3c253c7cdfbc6734d5f01330306c624c701ae50 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 15:10:03 -0800 Subject: [PATCH 172/402] Generate SDL_CONTROLLERDEVICEADDED events for controllers connected at startup --- src/joystick/SDL_gamecontroller.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index edcf5e41eb..6aa80cb7e2 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -866,8 +866,7 @@ SDL_GameControllerInit(void) const char *pMappingString = NULL; s_pSupportedControllers = NULL; pMappingString = s_ControllerMappings[i]; - while ( pMappingString ) - { + while ( pMappingString ) { SDL_GameControllerAddMapping( pMappingString ); i++; @@ -880,6 +879,16 @@ SDL_GameControllerInit(void) /* watch for joy events and fire controller ones if needed */ SDL_AddEventWatch( SDL_GameControllerEventWatcher, NULL ); + /* Send added events for controllers currently attached */ + for (i = 0; i < SDL_NumJoysticks(); ++i) { + if (SDL_IsGameController(i)) { + SDL_Event deviceevent; + deviceevent.type = SDL_CONTROLLERDEVICEADDED; + deviceevent.cdevice.which = i; + SDL_PushEvent(&deviceevent); + } + } + return (0); } From acff6f3e73d59d840674af8fb2a9abbb23ccd283 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 15:55:08 -0800 Subject: [PATCH 173/402] Changed testgamecontroller to wait for controllers to be reattached, the way testjoystick does. --- test/testgamecontroller.c | 60 ++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 16 deletions(-) diff --git a/test/testgamecontroller.c b/test/testgamecontroller.c index 3d9101ab30..77d63f2d64 100644 --- a/test/testgamecontroller.c +++ b/test/testgamecontroller.c @@ -31,8 +31,6 @@ #define MAX_NUM_AXES 6 #define MAX_NUM_HATS 2 -static SDL_bool s_ForceQuit = SDL_FALSE; - static void DrawRect(SDL_Renderer *r, const int x, const int y, const int w, const int h) { @@ -85,7 +83,7 @@ ControllerButtonName(const SDL_GameControllerButton button) } } -void +SDL_bool WatchGameController(SDL_GameController * gamecontroller) { const char *name = SDL_GameControllerName(gamecontroller); @@ -94,7 +92,8 @@ WatchGameController(SDL_GameController * gamecontroller) char *title = (char *)SDL_malloc(titlelen); SDL_Window *window = NULL; SDL_Renderer *screen = NULL; - int done = 0; + SDL_bool retval = SDL_FALSE; + SDL_bool done = SDL_FALSE; SDL_Event event; int i; @@ -108,14 +107,14 @@ WatchGameController(SDL_GameController * gamecontroller) SCREEN_HEIGHT, 0); if (window == NULL) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create window: %s\n", SDL_GetError()); - return; + return SDL_FALSE; } screen = SDL_CreateRenderer(window, -1, 0); if (screen == NULL) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create renderer: %s\n", SDL_GetError()); SDL_DestroyWindow(window); - return; + return SDL_FALSE; } SDL_SetRenderDrawColor(screen, 0x00, 0x00, 0x00, SDL_ALPHA_OPAQUE); @@ -157,8 +156,7 @@ WatchGameController(SDL_GameController * gamecontroller) } /* Fall through to signal quit */ case SDL_QUIT: - done = 1; - s_ForceQuit = SDL_TRUE; + done = SDL_TRUE; break; default: break; @@ -200,12 +198,15 @@ WatchGameController(SDL_GameController * gamecontroller) SDL_RenderPresent(screen); - if ( !done ) - done = SDL_GameControllerGetAttached( gamecontroller ) == 0; + if (!SDL_GameControllerGetAttached(gamecontroller)) { + done = SDL_TRUE; + retval = SDL_TRUE; /* keep going, wait for reattach. */ + } } SDL_DestroyRenderer(screen); SDL_DestroyWindow(window); + return retval; } int @@ -250,6 +251,9 @@ main(int argc, char *argv[]) SDL_Log("There are %d game controller(s) attached (%d joystick(s))\n", nController, SDL_NumJoysticks()); if (argv[1]) { + SDL_bool reportederror = SDL_FALSE; + SDL_bool keepGoing = SDL_TRUE; + SDL_Event event; int device = atoi(argv[1]); if (device >= SDL_NumJoysticks()) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%i is an invalid joystick index.\n", device); @@ -259,12 +263,36 @@ main(int argc, char *argv[]) guid, sizeof (guid)); SDL_Log("Attempting to open device %i, guid %s\n", device, guid); gamecontroller = SDL_GameControllerOpen(device); - if (gamecontroller == NULL) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't open joystick %d: %s\n", device, SDL_GetError()); - retcode = 1; - } else { - WatchGameController(gamecontroller); - SDL_GameControllerClose(gamecontroller); + while (keepGoing) { + if (gamecontroller == NULL) { + if (!reportederror) { + if (gamecontroller == NULL) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't open gamecontroller %d: %s\n", device, SDL_GetError()); + retcode = 1; + } + keepGoing = SDL_FALSE; + reportederror = SDL_TRUE; + } + } else { + reportederror = SDL_FALSE; + keepGoing = WatchGameController(gamecontroller); + SDL_GameControllerClose(gamecontroller); + } + + gamecontroller = NULL; + if (keepGoing) { + SDL_Log("Waiting for attach\n"); + } + while (keepGoing) { + SDL_WaitEvent(&event); + if ((event.type == SDL_QUIT) || (event.type == SDL_FINGERDOWN) + || (event.type == SDL_MOUSEBUTTONDOWN)) { + keepGoing = SDL_FALSE; + } else if (event.type == SDL_CONTROLLERDEVICEADDED) { + gamecontroller = SDL_GameControllerOpen(event.cdevice.which); + break; + } + } } } } From eac10c37966fd83a7f121e6400aa72c57a0bc9ec Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 15:55:47 -0800 Subject: [PATCH 174/402] Print events with SDL_Log() so they show up in Visual Studio debug output Added some joystick and controller events to the set that are printed out. --- src/test/SDL_test_common.c | 209 +++++++++++++++++++++++++------------ 1 file changed, 141 insertions(+), 68 deletions(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index ee65b3f0cc..72b73e3f66 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -946,6 +946,51 @@ SDLTest_CommonInit(SDLTest_CommonState * state) return SDL_TRUE; } +static const char * +ControllerAxisName(const SDL_GameControllerAxis axis) +{ + switch (axis) + { +#define AXIS_CASE(ax) case SDL_CONTROLLER_AXIS_##ax: return #ax + AXIS_CASE(INVALID); + AXIS_CASE(LEFTX); + AXIS_CASE(LEFTY); + AXIS_CASE(RIGHTX); + AXIS_CASE(RIGHTY); + AXIS_CASE(TRIGGERLEFT); + AXIS_CASE(TRIGGERRIGHT); +#undef AXIS_CASE +default: return "???"; + } +} + +static const char * +ControllerButtonName(const SDL_GameControllerButton button) +{ + switch (button) + { +#define BUTTON_CASE(btn) case SDL_CONTROLLER_BUTTON_##btn: return #btn + BUTTON_CASE(INVALID); + BUTTON_CASE(A); + BUTTON_CASE(B); + BUTTON_CASE(X); + BUTTON_CASE(Y); + BUTTON_CASE(BACK); + BUTTON_CASE(GUIDE); + BUTTON_CASE(START); + BUTTON_CASE(LEFTSTICK); + BUTTON_CASE(RIGHTSTICK); + BUTTON_CASE(LEFTSHOULDER); + BUTTON_CASE(RIGHTSHOULDER); + BUTTON_CASE(DPAD_UP); + BUTTON_CASE(DPAD_DOWN); + BUTTON_CASE(DPAD_LEFT); + BUTTON_CASE(DPAD_RIGHT); +#undef BUTTON_CASE +default: return "???"; + } +} + static void SDLTest_PrintEvent(SDL_Event * event) { @@ -954,164 +999,193 @@ SDLTest_PrintEvent(SDL_Event * event) return; } - fprintf(stderr, "SDL EVENT: "); switch (event->type) { case SDL_WINDOWEVENT: switch (event->window.event) { case SDL_WINDOWEVENT_SHOWN: - fprintf(stderr, "Window %d shown", event->window.windowID); + SDL_Log("SDL EVENT: Window %d shown", event->window.windowID); break; case SDL_WINDOWEVENT_HIDDEN: - fprintf(stderr, "Window %d hidden", event->window.windowID); + SDL_Log("SDL EVENT: Window %d hidden", event->window.windowID); break; case SDL_WINDOWEVENT_EXPOSED: - fprintf(stderr, "Window %d exposed", event->window.windowID); + SDL_Log("SDL EVENT: Window %d exposed", event->window.windowID); break; case SDL_WINDOWEVENT_MOVED: - fprintf(stderr, "Window %d moved to %d,%d", + SDL_Log("SDL EVENT: Window %d moved to %d,%d", event->window.windowID, event->window.data1, event->window.data2); break; case SDL_WINDOWEVENT_RESIZED: - fprintf(stderr, "Window %d resized to %dx%d", + SDL_Log("SDL EVENT: Window %d resized to %dx%d", event->window.windowID, event->window.data1, event->window.data2); break; case SDL_WINDOWEVENT_SIZE_CHANGED: - fprintf(stderr, "Window %d changed size to %dx%d", + SDL_Log("SDL EVENT: Window %d changed size to %dx%d", event->window.windowID, event->window.data1, event->window.data2); break; case SDL_WINDOWEVENT_MINIMIZED: - fprintf(stderr, "Window %d minimized", event->window.windowID); + SDL_Log("SDL EVENT: Window %d minimized", event->window.windowID); break; case SDL_WINDOWEVENT_MAXIMIZED: - fprintf(stderr, "Window %d maximized", event->window.windowID); + SDL_Log("SDL EVENT: Window %d maximized", event->window.windowID); break; case SDL_WINDOWEVENT_RESTORED: - fprintf(stderr, "Window %d restored", event->window.windowID); + SDL_Log("SDL EVENT: Window %d restored", event->window.windowID); break; case SDL_WINDOWEVENT_ENTER: - fprintf(stderr, "Mouse entered window %d", + SDL_Log("SDL EVENT: Mouse entered window %d", event->window.windowID); break; case SDL_WINDOWEVENT_LEAVE: - fprintf(stderr, "Mouse left window %d", event->window.windowID); + SDL_Log("SDL EVENT: Mouse left window %d", event->window.windowID); break; case SDL_WINDOWEVENT_FOCUS_GAINED: - fprintf(stderr, "Window %d gained keyboard focus", + SDL_Log("SDL EVENT: Window %d gained keyboard focus", event->window.windowID); break; case SDL_WINDOWEVENT_FOCUS_LOST: - fprintf(stderr, "Window %d lost keyboard focus", + SDL_Log("SDL EVENT: Window %d lost keyboard focus", event->window.windowID); break; case SDL_WINDOWEVENT_CLOSE: - fprintf(stderr, "Window %d closed", event->window.windowID); + SDL_Log("SDL EVENT: Window %d closed", event->window.windowID); break; default: - fprintf(stderr, "Window %d got unknown event %d", + SDL_Log("SDL EVENT: Window %d got unknown event %d", event->window.windowID, event->window.event); break; } break; case SDL_KEYDOWN: - fprintf(stderr, - "Keyboard: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", + SDL_Log("SDL EVENT: Keyboard: key pressed in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", event->key.windowID, event->key.keysym.scancode, SDL_GetScancodeName(event->key.keysym.scancode), event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); break; case SDL_KEYUP: - fprintf(stderr, - "Keyboard: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", + SDL_Log("SDL EVENT: Keyboard: key released in window %d: scancode 0x%08X = %s, keycode 0x%08X = %s", event->key.windowID, event->key.keysym.scancode, SDL_GetScancodeName(event->key.keysym.scancode), event->key.keysym.sym, SDL_GetKeyName(event->key.keysym.sym)); break; case SDL_TEXTINPUT: - fprintf(stderr, "Keyboard: text input \"%s\" in window %d", + SDL_Log("SDL EVENT: Keyboard: text input \"%s\" in window %d", event->text.text, event->text.windowID); break; case SDL_MOUSEMOTION: - fprintf(stderr, "Mouse: moved to %d,%d (%d,%d) in window %d", + SDL_Log("SDL EVENT: Mouse: moved to %d,%d (%d,%d) in window %d", event->motion.x, event->motion.y, event->motion.xrel, event->motion.yrel, event->motion.windowID); break; case SDL_MOUSEBUTTONDOWN: - fprintf(stderr, "Mouse: button %d pressed at %d,%d with click count %d in window %d", + SDL_Log("SDL EVENT: Mouse: button %d pressed at %d,%d with click count %d in window %d", event->button.button, event->button.x, event->button.y, event->button.clicks, event->button.windowID); break; case SDL_MOUSEBUTTONUP: - fprintf(stderr, "Mouse: button %d released at %d,%d with click count %d in window %d", + SDL_Log("SDL EVENT: Mouse: button %d released at %d,%d with click count %d in window %d", event->button.button, event->button.x, event->button.y, event->button.clicks, event->button.windowID); break; case SDL_MOUSEWHEEL: - fprintf(stderr, - "Mouse: wheel scrolled %d in x and %d in y in window %d", + SDL_Log("SDL EVENT: Mouse: wheel scrolled %d in x and %d in y in window %d", event->wheel.x, event->wheel.y, event->wheel.windowID); break; + case SDL_JOYDEVICEADDED: + SDL_Log("SDL EVENT: Joystick index %d attached", + event->jdevice.which); + break; + case SDL_JOYDEVICEREMOVED: + SDL_Log("SDL EVENT: Joystick %d removed", + event->jdevice.which); + break; case SDL_JOYBALLMOTION: - fprintf(stderr, "Joystick %d: ball %d moved by %d,%d", + SDL_Log("SDL EVENT: Joystick %d: ball %d moved by %d,%d", event->jball.which, event->jball.ball, event->jball.xrel, event->jball.yrel); break; case SDL_JOYHATMOTION: - fprintf(stderr, "Joystick %d: hat %d moved to ", event->jhat.which, - event->jhat.hat); - switch (event->jhat.value) { - case SDL_HAT_CENTERED: - fprintf(stderr, "CENTER"); - break; - case SDL_HAT_UP: - fprintf(stderr, "UP"); - break; - case SDL_HAT_RIGHTUP: - fprintf(stderr, "RIGHTUP"); - break; - case SDL_HAT_RIGHT: - fprintf(stderr, "RIGHT"); - break; - case SDL_HAT_RIGHTDOWN: - fprintf(stderr, "RIGHTDOWN"); - break; - case SDL_HAT_DOWN: - fprintf(stderr, "DOWN"); - break; - case SDL_HAT_LEFTDOWN: - fprintf(stderr, "LEFTDOWN"); - break; - case SDL_HAT_LEFT: - fprintf(stderr, "LEFT"); - break; - case SDL_HAT_LEFTUP: - fprintf(stderr, "LEFTUP"); - break; - default: - fprintf(stderr, "UNKNOWN"); - break; + { + const char *position = "UNKNOWN"; + switch (event->jhat.value) { + case SDL_HAT_CENTERED: + position = "CENTER"; + break; + case SDL_HAT_UP: + position = "UP"; + break; + case SDL_HAT_RIGHTUP: + position = "RIGHTUP"; + break; + case SDL_HAT_RIGHT: + position = "RIGHT"; + break; + case SDL_HAT_RIGHTDOWN: + position = "RIGHTDOWN"; + break; + case SDL_HAT_DOWN: + position = "DOWN"; + break; + case SDL_HAT_LEFTDOWN: + position = "LEFTDOWN"; + break; + case SDL_HAT_LEFT: + position = "LEFT"; + break; + case SDL_HAT_LEFTUP: + position = "LEFTUP"; + break; + } + SDL_Log("SDL EVENT: Joystick %d: hat %d moved to %s", event->jhat.which, + event->jhat.hat, position); } break; case SDL_JOYBUTTONDOWN: - fprintf(stderr, "Joystick %d: button %d pressed", + SDL_Log("SDL EVENT: Joystick %d: button %d pressed", event->jbutton.which, event->jbutton.button); break; case SDL_JOYBUTTONUP: - fprintf(stderr, "Joystick %d: button %d released", + SDL_Log("SDL EVENT: Joystick %d: button %d released", event->jbutton.which, event->jbutton.button); break; + case SDL_CONTROLLERDEVICEADDED: + SDL_Log("SDL EVENT: Controller index %d attached", + event->cdevice.which); + break; + case SDL_CONTROLLERDEVICEREMOVED: + SDL_Log("SDL EVENT: Controller %d removed", + event->cdevice.which); + break; + case SDL_CONTROLLERAXISMOTION: + SDL_Log("SDL EVENT: Controller %d axis %d ('%s') value: %d", + event->caxis.which, + event->caxis.axis, + ControllerAxisName((SDL_GameControllerAxis)event->caxis.axis), + event->caxis.value); + break; + case SDL_CONTROLLERBUTTONDOWN: + SDL_Log("SDL EVENT: Controller %d button %d ('%s') down", + event->cbutton.which, event->cbutton.button, + ControllerButtonName((SDL_GameControllerButton)event->cbutton.button)); + break; + case SDL_CONTROLLERBUTTONUP: + SDL_Log("SDL EVENT: Controller %d button %d ('%s') up", + event->cbutton.which, event->cbutton.button, + ControllerButtonName((SDL_GameControllerButton)event->cbutton.button)); + break; case SDL_CLIPBOARDUPDATE: - fprintf(stderr, "Clipboard updated"); + SDL_Log("SDL EVENT: Clipboard updated"); break; case SDL_FINGERDOWN: case SDL_FINGERUP: - fprintf(stderr, "Finger: %s touch=%ld, finger=%ld, x=%f, y=%f, dx=%f, dy=%f, pressure=%f", + SDL_Log("SDL EVENT: Finger: %s touch=%ld, finger=%ld, x=%f, y=%f, dx=%f, dy=%f, pressure=%f", (event->type == SDL_FINGERDOWN) ? "down" : "up", (long) event->tfinger.touchId, (long) event->tfinger.fingerId, @@ -1120,16 +1194,15 @@ SDLTest_PrintEvent(SDL_Event * event) break; case SDL_QUIT: - fprintf(stderr, "Quit requested"); + SDL_Log("SDL EVENT: Quit requested"); break; case SDL_USEREVENT: - fprintf(stderr, "User event %d", event->user.code); + SDL_Log("SDL EVENT: User event %d", event->user.code); break; default: - fprintf(stderr, "Unknown event %d", event->type); + SDL_Log("Unknown event %d", event->type); break; } - fprintf(stderr, "\n"); } static void From 8b76a0793fddf23f8b932468e02cc60e64f227e5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 17:15:32 -0800 Subject: [PATCH 175/402] Fixed float to int conversion warning, which was a legitimate bug. --- src/render/opengles2/SDL_render_gles2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index 31a1598c07..e9ee1623c5 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -724,8 +724,8 @@ GLES2_CacheProgram(SDL_Renderer *renderer, GLES2_ShaderCacheEntry *vertex, entry->uniform_locations[GLES2_UNIFORM_COLOR] = data->glGetUniformLocation(entry->id, "u_color"); - entry->modulation_r = entry->modulation_g = entry->modulation_b = entry->modulation_a = 1.0f; - entry->color_r = entry->color_g = entry->color_b = entry->color_a = 1.0f; + entry->modulation_r = entry->modulation_g = entry->modulation_b = entry->modulation_a = 255; + entry->color_r = entry->color_g = entry->color_b = entry->color_a = 255; data->glUseProgram(entry->id); data->glUniformMatrix4fv(entry->uniform_locations[GLES2_UNIFORM_PROJECTION], 1, GL_FALSE, (GLfloat *)entry->projection); From d6e7ef8671639cf97dfa4b85c5be2896f24f15d4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 17:37:22 -0800 Subject: [PATCH 176/402] Added a relative mouse mode that uses mouse warping instead of raw input. To enable this, set the environment variable SDL_MOUSE_RELATIVE_MODE_WARP to "1" When mouse relative mode is disabled, put the cursor back where the application expects it to be, instead of where it was when relative mode was enabled. --- include/SDL_hints.h | 13 +++- src/events/SDL_mouse.c | 71 +++++++++++++++------- src/events/SDL_mouse_c.h | 3 +- src/video/SDL_video.c | 5 +- src/video/windows/SDL_windowsevents.c | 85 +++++++++++++++------------ src/video/x11/SDL_x11events.c | 2 +- src/video/x11/SDL_x11xinput2.c | 2 +- 7 files changed, 115 insertions(+), 66 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 1462f4e399..9aad2e32ec 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -173,7 +173,18 @@ extern "C" { #define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" /** - * \brief Minimize your SDL_Window if it loses key focus when in Fullscreen mode. Defaults to true. +* \brief A variable controlling whether relative mouse mode is implemented using mouse warping +* +* This variable can be set to the following values: +* "0" - Relative mouse mode uses raw input +* "1" - Relative mouse mode uses mouse warping +* +* By default SDL will use raw input for relative mouse mode +*/ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true. * */ #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 742802a755..8eb4414704 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -23,6 +23,7 @@ /* General mouse handling code for SDL */ #include "SDL_assert.h" +#include "SDL_hints.h" #include "SDL_timer.h" #include "SDL_events.h" #include "SDL_events_c.h" @@ -205,12 +206,24 @@ SDL_PrivateSendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relativ int yrel; int x_max = 0, y_max = 0; - /* relative motion is calculated regarding the system cursor last position */ + if (mouse->relative_mode_warp) { + int center_x = 0, center_y = 0; + SDL_GetWindowSize(window, ¢er_x, ¢er_y); + center_x /= 2; + center_y /= 2; + if (x == center_x && y == center_y) { + mouse->last_x = center_x; + mouse->last_y = center_y; + return 0; + } + SDL_WarpMouseInWindow(window, center_x, center_y); + } + if (relative) { xrel = x; yrel = y; - x = (mouse->last_x + x); - y = (mouse->last_y + y); + x = (mouse->last_x + xrel); + y = (mouse->last_y + yrel); } else { xrel = x - mouse->last_x; yrel = y - mouse->last_y; @@ -225,7 +238,7 @@ SDL_PrivateSendMouseMotion(SDL_Window * window, SDL_MouseID mouseID, int relativ } /* Update internal mouse coordinates */ - if (mouse->relative_mode == SDL_FALSE) { + if (!mouse->relative_mode) { mouse->x = x; mouse->y = y; } else { @@ -481,21 +494,36 @@ SDL_WarpMouseInWindow(SDL_Window * window, int x, int y) } } +static SDL_bool +ShouldUseRelativeModeWarp(SDL_Mouse *mouse) +{ + const char *hint; + + if (!mouse->SetRelativeMouseMode) { + return SDL_TRUE; + } + + hint = SDL_GetHint(SDL_HINT_MOUSE_RELATIVE_MODE_WARP); + if (hint) { + if (*hint == '0') { + return SDL_FALSE; + } else { + return SDL_TRUE; + } + } + return SDL_FALSE; +} + int SDL_SetRelativeMouseMode(SDL_bool enabled) { SDL_Mouse *mouse = SDL_GetMouse(); SDL_Window *focusWindow = SDL_GetKeyboardFocus(); - int original_x = mouse->x, original_y = mouse->y; if (enabled == mouse->relative_mode) { return 0; } - if (!mouse->SetRelativeMouseMode) { - return SDL_Unsupported(); - } - if (enabled && focusWindow) { /* Center it in the focused window to prevent clicks from going through * to background windows. @@ -504,23 +532,26 @@ SDL_SetRelativeMouseMode(SDL_bool enabled) SDL_WarpMouseInWindow(focusWindow, focusWindow->w/2, focusWindow->h/2); } - if (mouse->SetRelativeMouseMode(enabled) < 0) { + /* Set the relative mode */ + if (!enabled && mouse->relative_mode_warp) { + mouse->relative_mode_warp = SDL_FALSE; + } else if (enabled && ShouldUseRelativeModeWarp(mouse)) { + mouse->relative_mode_warp = SDL_TRUE; + } else if (mouse->SetRelativeMouseMode(enabled) < 0) { return -1; } - - /* Set the relative mode */ mouse->relative_mode = enabled; - if (enabled) { - /* Save the expected mouse position */ - mouse->original_x = original_x; - mouse->original_y = original_y; - } else if (mouse->focus) { - /* Restore the expected mouse position */ - SDL_WarpMouseInWindow(mouse->focus, mouse->original_x, mouse->original_y); + if (mouse->focus) { + SDL_UpdateWindowGrab(mouse->focus); + + /* Put the cursor back to where the application expects it */ + if (!enabled) { + SDL_WarpMouseInWindow(mouse->focus, mouse->x, mouse->y); + } } - /* Flush pending mouse motion */ + /* Flush pending mouse motion - ideally we would pump events, but that's not always safe */ SDL_FlushEvent(SDL_MOUSEMOTION); /* Update cursor visibility */ diff --git a/src/events/SDL_mouse_c.h b/src/events/SDL_mouse_c.h index fd34c66f87..427b3b156a 100644 --- a/src/events/SDL_mouse_c.h +++ b/src/events/SDL_mouse_c.h @@ -73,8 +73,7 @@ typedef struct int last_x, last_y; /* the last reported x and y coordinates */ Uint32 buttonstate; SDL_bool relative_mode; - /* the x and y coordinates when relative mode was activated */ - int original_x, original_y; + SDL_bool relative_mode_warp; /* Data for double-click tracking */ int num_clickstates; diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 5aacac80fd..ff80891209 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2055,8 +2055,9 @@ SDL_UpdateWindowGrab(SDL_Window * window) { if (_this->SetWindowGrab) { SDL_bool grabbed; - if ((window->flags & SDL_WINDOW_INPUT_GRABBED) && - (window->flags & SDL_WINDOW_INPUT_FOCUS)) { + if (SDL_GetMouse()->relative_mode_warp || + ((window->flags & SDL_WINDOW_INPUT_GRABBED) && + (window->flags & SDL_WINDOW_INPUT_FOCUS))) { grabbed = SDL_TRUE; } else { grabbed = SDL_FALSE; diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 9e82dc9358..a06f11fed5 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -290,6 +290,7 @@ static void WIN_UpdateClipCursor(SDL_Window *window) { SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + SDL_Mouse *mouse = SDL_GetMouse(); /* Don't clip the cursor while we're in the modal resize or move loop */ if (data->in_modal_loop) { @@ -297,7 +298,7 @@ WIN_UpdateClipCursor(SDL_Window *window) return; } - if (SDL_GetMouse()->relative_mode) { + if (mouse->relative_mode && !mouse->relative_mode_warp) { LONG cx, cy; RECT rect; GetWindowRect(data->hwnd, &rect); @@ -312,8 +313,9 @@ WIN_UpdateClipCursor(SDL_Window *window) rect.bottom = cy+1; ClipCursor(&rect); - } else if ((window->flags & SDL_WINDOW_INPUT_GRABBED) && - (window->flags & SDL_WINDOW_INPUT_FOCUS)) { + } else if (mouse->relative_mode_warp || + ((window->flags & SDL_WINDOW_INPUT_GRABBED) && + (window->flags & SDL_WINDOW_INPUT_FOCUS))) { RECT rect; if (GetClientRect(data->hwnd, &rect) && !IsRectEmpty(&rect)) { ClientToScreen(data->hwnd, (LPPOINT) & rect); @@ -426,8 +428,12 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) break; case WM_MOUSEMOVE: - if( !SDL_GetMouse()->relative_mode ) - SDL_SendMouseMotion(data->window, 0, 0, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + { + SDL_Mouse *mouse = SDL_GetMouse(); + if (!mouse->relative_mode || mouse->relative_mode_warp) { + SDL_SendMouseMotion(data->window, 0, 0, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); + } + } /* don't break here, fall through to check the wParam like the button presses */ case WM_LBUTTONUP: case WM_RBUTTONUP: @@ -437,49 +443,50 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_RBUTTONDOWN: case WM_MBUTTONDOWN: case WM_XBUTTONDOWN: - if( !SDL_GetMouse()->relative_mode ) - WIN_CheckWParamMouseButtons( wParam, data ); + { + SDL_Mouse *mouse = SDL_GetMouse(); + if (!mouse->relative_mode || mouse->relative_mode_warp) { + WIN_CheckWParamMouseButtons(wParam, data); + } + } break; case WM_INPUT: - { - HRAWINPUT hRawInput = (HRAWINPUT)lParam; - RAWINPUT inp; - UINT size = sizeof(inp); + { + SDL_Mouse *mouse = SDL_GetMouse(); + HRAWINPUT hRawInput = (HRAWINPUT)lParam; + RAWINPUT inp; + UINT size = sizeof(inp); - if(!SDL_GetMouse()->relative_mode) - break; + if (!mouse->relative_mode || mouse->relative_mode_warp) { + break; + } - GetRawInputData(hRawInput, RID_INPUT, &inp, &size, sizeof(RAWINPUTHEADER)); + GetRawInputData(hRawInput, RID_INPUT, &inp, &size, sizeof(RAWINPUTHEADER)); - /* Mouse data */ - if(inp.header.dwType == RIM_TYPEMOUSE) - { - RAWMOUSE* mouse = &inp.data.mouse; + /* Mouse data */ + if (inp.header.dwType == RIM_TYPEMOUSE) { + RAWMOUSE* mouse = &inp.data.mouse; + + if ((mouse->usFlags & 0x01) == MOUSE_MOVE_RELATIVE) { + SDL_SendMouseMotion(data->window, 0, 1, (int)mouse->lLastX, (int)mouse->lLastY); + } else { + /* synthesize relative moves from the abs position */ + static SDL_Point initialMousePoint; + if (initialMousePoint.x == 0 && initialMousePoint.y == 0) { + initialMousePoint.x = mouse->lLastX; + initialMousePoint.y = mouse->lLastY; + } + + SDL_SendMouseMotion(data->window, 0, 1, (int)(mouse->lLastX-initialMousePoint.x), (int)(mouse->lLastY-initialMousePoint.y) ); - if((mouse->usFlags & 0x01) == MOUSE_MOVE_RELATIVE) - { - SDL_SendMouseMotion(data->window, 0, 1, (int)mouse->lLastX, (int)mouse->lLastY); - } - else - { - /* synthesize relative moves from the abs position */ - static SDL_Point initialMousePoint; - if ( initialMousePoint.x == 0 && initialMousePoint.y == 0 ) - { initialMousePoint.x = mouse->lLastX; initialMousePoint.y = mouse->lLastY; } - - SDL_SendMouseMotion(data->window, 0, 1, (int)(mouse->lLastX-initialMousePoint.x), (int)(mouse->lLastY-initialMousePoint.y) ); - - initialMousePoint.x = mouse->lLastX; - initialMousePoint.y = mouse->lLastY; + WIN_CheckRawMouseButtons( mouse->usButtonFlags, data ); } - WIN_CheckRawMouseButtons( mouse->usButtonFlags, data ); } break; - } case WM_MOUSEWHEEL: { @@ -497,8 +504,8 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) s_AccumulatedMotion += WHEEL_DELTA; } } - break; } + break; case WM_MOUSEHWHEEL: { @@ -516,8 +523,8 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) s_AccumulatedMotion += WHEEL_DELTA; } } - break; } + break; #ifdef WM_MOUSELEAVE case WM_MOUSELEAVE: @@ -549,8 +556,8 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) GetKeyboardState(keyboardState); if (ToUnicode(wParam, (lParam >> 16) & 0xff, keyboardState, (LPWSTR)&utf32, 1, 0) > 0) { - WORD repitition; - for (repitition = lParam & 0xffff; repitition > 0; repitition--) { + WORD repetition; + for (repetition = lParam & 0xffff; repetition > 0; repetition--) { WIN_ConvertUTF32toUTF8(utf32, text); SDL_SendKeyboardText(text); } diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 423bd87d39..44ca1cd7dc 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -698,7 +698,7 @@ X11_DispatchEvent(_THIS) case MotionNotify:{ SDL_Mouse *mouse = SDL_GetMouse(); - if(!mouse->relative_mode) { + if(!mouse->relative_mode || mouse->relative_mode_warp) { #ifdef DEBUG_MOTION printf("window %p: X11 motion: %d,%d\n", xevent.xmotion.x, xevent.xmotion.y); #endif diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 196dd2ae9d..8993561eb2 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -134,7 +134,7 @@ X11_HandleXinput2Event(SDL_VideoData *videodata,XGenericEventCookie *cookie) SDL_Mouse *mouse = SDL_GetMouse(); double relative_cords[2]; - if (!mouse->relative_mode) { + if (!mouse->relative_mode || mouse->relative_mode_warp) { return 0; } From fd651b039e27b8e744e4bd2eafd3217d8d35cd6b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 23 Dec 2013 17:55:06 -0800 Subject: [PATCH 177/402] Setting the mouse in relative mode implies grabbing the mouse. This fixes getting mouse button events in raw input relative mode on X11. --- src/video/SDL_video.c | 5 +-- src/video/windows/SDL_windowsevents.c | 41 -------------------- src/video/windows/SDL_windowswindow.c | 55 +++++++++++++++++++++------ src/video/windows/SDL_windowswindow.h | 1 + 4 files changed, 47 insertions(+), 55 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index ff80891209..46f8ffc6eb 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -2055,9 +2055,8 @@ SDL_UpdateWindowGrab(SDL_Window * window) { if (_this->SetWindowGrab) { SDL_bool grabbed; - if (SDL_GetMouse()->relative_mode_warp || - ((window->flags & SDL_WINDOW_INPUT_GRABBED) && - (window->flags & SDL_WINDOW_INPUT_FOCUS))) { + if ((SDL_GetMouse()->relative_mode || (window->flags & SDL_WINDOW_INPUT_GRABBED)) && + (window->flags & SDL_WINDOW_INPUT_FOCUS)) { grabbed = SDL_TRUE; } else { grabbed = SDL_FALSE; diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index a06f11fed5..103a9bff10 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -286,47 +286,6 @@ WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text) return SDL_TRUE; } -static void -WIN_UpdateClipCursor(SDL_Window *window) -{ - SDL_WindowData *data = (SDL_WindowData *) window->driverdata; - SDL_Mouse *mouse = SDL_GetMouse(); - - /* Don't clip the cursor while we're in the modal resize or move loop */ - if (data->in_modal_loop) { - ClipCursor(NULL); - return; - } - - if (mouse->relative_mode && !mouse->relative_mode_warp) { - LONG cx, cy; - RECT rect; - GetWindowRect(data->hwnd, &rect); - - cx = (rect.left + rect.right) / 2; - cy = (rect.top + rect.bottom) / 2; - - /* Make an absurdly small clip rect */ - rect.left = cx-1; - rect.right = cx+1; - rect.top = cy-1; - rect.bottom = cy+1; - - ClipCursor(&rect); - } else if (mouse->relative_mode_warp || - ((window->flags & SDL_WINDOW_INPUT_GRABBED) && - (window->flags & SDL_WINDOW_INPUT_FOCUS))) { - RECT rect; - if (GetClientRect(data->hwnd, &rect) && !IsRectEmpty(&rect)) { - ClientToScreen(data->hwnd, (LPPOINT) & rect); - ClientToScreen(data->hwnd, (LPPOINT) & rect + 1); - ClipCursor(&rect); - } - } else { - ClipCursor(NULL); - } -} - LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 990c0cb23d..8529cea316 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -28,6 +28,7 @@ #include "../SDL_sysvideo.h" #include "../SDL_pixels_c.h" #include "../../events/SDL_keyboard_c.h" +#include "../../events/SDL_mouse_c.h" #include "SDL_windowsvideo.h" #include "SDL_windowswindow.h" @@ -571,17 +572,7 @@ WIN_GetWindowGammaRamp(_THIS, SDL_Window * window, Uint16 * ramp) void WIN_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; - - if (grabbed) { - RECT rect; - GetClientRect(hwnd, &rect); - ClientToScreen(hwnd, (LPPOINT) & rect); - ClientToScreen(hwnd, (LPPOINT) & rect + 1); - ClipCursor(&rect); - } else { - ClipCursor(NULL); - } + WIN_UpdateClipCursor(window); if (window->flags & SDL_WINDOW_FULLSCREEN) { UINT flags = SWP_NOCOPYBITS | SWP_NOMOVE | SWP_NOSIZE; @@ -722,6 +713,48 @@ void WIN_OnWindowEnter(_THIS, SDL_Window * window) #endif /* WM_MOUSELEAVE */ } +void +WIN_UpdateClipCursor(SDL_Window *window) +{ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + SDL_Mouse *mouse = SDL_GetMouse(); + + /* Don't clip the cursor while we're in the modal resize or move loop */ + if (data->in_modal_loop) { + ClipCursor(NULL); + return; + } + + if ((mouse->relative_mode || (window->flags & SDL_WINDOW_INPUT_GRABBED)) && + (window->flags & SDL_WINDOW_INPUT_FOCUS)) { + if (mouse->relative_mode && !mouse->relative_mode_warp) { + LONG cx, cy; + RECT rect; + GetWindowRect(data->hwnd, &rect); + + cx = (rect.left + rect.right) / 2; + cy = (rect.top + rect.bottom) / 2; + + /* Make an absurdly small clip rect */ + rect.left = cx - 1; + rect.right = cx + 1; + rect.top = cy - 1; + rect.bottom = cy + 1; + + ClipCursor(&rect); + } else { + RECT rect; + if (GetClientRect(data->hwnd, &rect) && !IsRectEmpty(&rect)) { + ClientToScreen(data->hwnd, (LPPOINT) & rect); + ClientToScreen(data->hwnd, (LPPOINT) & rect + 1); + ClipCursor(&rect); + } + } + } else { + ClipCursor(NULL); + } +} + #endif /* SDL_VIDEO_DRIVER_WINDOWS */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h index ed304453c0..1cf114516d 100644 --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -66,6 +66,7 @@ extern void WIN_DestroyWindow(_THIS, SDL_Window * window); extern SDL_bool WIN_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info); extern void WIN_OnWindowEnter(_THIS, SDL_Window * window); +extern void WIN_UpdateClipCursor(SDL_Window *window); #endif /* _SDL_windowswindow_h */ From f37531744a027c38cc011107129bdc5974811048 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Tue, 24 Dec 2013 19:55:41 +0100 Subject: [PATCH 178/402] Fixed missing return warning in test program source. --- test/testjoystick.c | 1 + 1 file changed, 1 insertion(+) diff --git a/test/testjoystick.c b/test/testjoystick.c index d9db6e8ea7..9c4771974e 100644 --- a/test/testjoystick.c +++ b/test/testjoystick.c @@ -287,6 +287,7 @@ main(int argc, char *argv[]) } SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); + return 0; } #else From 226d271ae792d8f0477ad4de72a556bb7273c0d5 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Tue, 24 Dec 2013 19:59:35 +0100 Subject: [PATCH 179/402] Fixed implicit declaration of SDL_Log() warning in joystick source for Android. --- src/joystick/android/SDL_sysjoystick.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 673c62a9da..3d5aa32355 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -35,6 +35,7 @@ #include "SDL_hints.h" #include "SDL_assert.h" #include "SDL_timer.h" +#include "SDL_log.h" #include "SDL_sysjoystick_c.h" #include "../SDL_joystick_c.h" #include "../../core/android/SDL_android.h" From 25c6e88b3f132f3d950a4d928cd37713a7443a9f Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Tue, 24 Dec 2013 20:00:58 +0100 Subject: [PATCH 180/402] Fixed unused local variable warning in joystick source for Android. --- src/joystick/android/SDL_sysjoystick.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 3d5aa32355..2af8235bfb 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -421,7 +421,6 @@ int SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index) { SDL_joylist_item *item = JoystickByDevIndex(device_index); - char *fname = NULL; if (item == NULL ) { return SDL_SetError("No such device"); From 390819351d278b7ea6dbfcda9442e25be3fd0ee5 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Tue, 24 Dec 2013 20:04:53 +0100 Subject: [PATCH 181/402] Fixed missing @Override annotation warning in source for Android. --- android-project/src/org/libsdl/app/SDLActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 914e19ca83..1fe66132b2 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -621,6 +621,7 @@ public void surfaceChanged(SurfaceHolder holder, // Set up a listener thread to catch when the native thread ends new Thread(new Runnable(){ + @Override public void run(){ try { SDLActivity.mSDLThread.join(); From 512dc970591217059ef6e8de2b5fc2ee87666d59 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 25 Dec 2013 00:04:31 +0100 Subject: [PATCH 182/402] Fixed unused local variable warning in test program source. --- test/controllermap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/controllermap.c b/test/controllermap.c index c17f17c390..08b85a73ae 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -114,7 +114,7 @@ WatchJoystick(SDL_Joystick * joystick) SDL_bool done = SDL_FALSE, next=SDL_FALSE; SDL_Event event; SDL_Rect dst; - int i, s, _s; + int s, _s; Uint8 alpha=200, alpha_step = -1; Uint32 alpha_ticks; char mapping[4096], temp[4096]; From 4b2c6272db774213f4990fcd9a0e5d6272fac8f9 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 25 Dec 2013 00:11:28 +0100 Subject: [PATCH 183/402] Fixed access of command line arguments on Android in two test programs. --- test/controllermap.c | 11 +++++++---- test/testjoystick.c | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/test/controllermap.c b/test/controllermap.c index 08b85a73ae..df4c892c68 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -386,15 +386,18 @@ main(int argc, char *argv[]) SDL_bool reportederror = SDL_FALSE; SDL_bool keepGoing = SDL_TRUE; SDL_Event event; + int device; #ifdef ANDROID - joystick = SDL_JoystickOpen(0); + device = 0; #else - joystick = SDL_JoystickOpen(atoi(argv[1])); + device = atoi(argv[1]); #endif + joystick = SDL_JoystickOpen(device); + while ( keepGoing ) { if (joystick == NULL) { if ( !reportederror ) { - SDL_Log("Couldn't open joystick %d: %s\n", atoi(argv[1]), SDL_GetError()); + SDL_Log("Couldn't open joystick %d: %s\n", device, SDL_GetError()); keepGoing = SDL_FALSE; reportederror = SDL_TRUE; } @@ -414,7 +417,7 @@ main(int argc, char *argv[]) || (event.type == SDL_MOUSEBUTTONDOWN)) { keepGoing = SDL_FALSE; } else if (event.type == SDL_JOYDEVICEADDED) { - joystick = SDL_JoystickOpen(atoi(argv[1])); + joystick = SDL_JoystickOpen(device); break; } } diff --git a/test/testjoystick.c b/test/testjoystick.c index 9c4771974e..2984145dcd 100644 --- a/test/testjoystick.c +++ b/test/testjoystick.c @@ -251,15 +251,18 @@ main(int argc, char *argv[]) SDL_bool reportederror = SDL_FALSE; SDL_bool keepGoing = SDL_TRUE; SDL_Event event; + int device; #ifdef ANDROID - joystick = SDL_JoystickOpen(0); + device = 0; #else - joystick = SDL_JoystickOpen(atoi(argv[1])); + device = atoi(argv[1]); #endif + joystick = SDL_JoystickOpen(device); + while ( keepGoing ) { if (joystick == NULL) { if ( !reportederror ) { - SDL_Log("Couldn't open joystick %d: %s\n", atoi(argv[1]), SDL_GetError()); + SDL_Log("Couldn't open joystick %d: %s\n", device, SDL_GetError()); keepGoing = SDL_FALSE; reportederror = SDL_TRUE; } @@ -279,7 +282,7 @@ main(int argc, char *argv[]) || (event.type == SDL_MOUSEBUTTONDOWN)) { keepGoing = SDL_FALSE; } else if (event.type == SDL_JOYDEVICEADDED) { - joystick = SDL_JoystickOpen(atoi(argv[1])); + joystick = SDL_JoystickOpen(device); break; } } From e094e472b6f52729bbb2f04a2fddd5a9d94e3a6d Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 25 Dec 2013 16:53:39 +0100 Subject: [PATCH 184/402] Updated paths in README for Android. --- README-android.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README-android.txt b/README-android.txt index ae8de0d8a5..3275a1111f 100644 --- a/README-android.txt +++ b/README-android.txt @@ -8,7 +8,7 @@ Android SDK (version 12 or later) http://developer.android.com/sdk/index.html Android NDK r7 or later -http://developer.android.com/sdk/ndk/index.html +http://developer.android.com/tools/sdk/ndk/index.html Minimum API level supported by SDL: 10 (Android 2.3.3) Joystick support is available for API level >=12 devices. @@ -29,7 +29,7 @@ android-project/src/org/libsdl/app/SDLActivity.java The Java code loads your game code, the SDL shared library, and dispatches to native functions implemented in the SDL library: -src/SDL_android.c +src/core/android/SDL_android.c Your project must include some glue code that starts your main() routine: src/main/android/SDL_android_main.c @@ -260,7 +260,7 @@ The best place to start is with docs/OVERVIEW.TXT ================================================================================ First make sure that you've installed Eclipse and the Android extensions as described here: - http://developer.android.com/sdk/eclipse-adt.html + http://developer.android.com/tools/sdk/eclipse-adt.html Once you've copied the SDL android project and customized it, you can create an Eclipse project from it: * File -> New -> Other From b9a425346893f81c8151552de089c473cfe1d11c Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 25 Dec 2013 16:57:59 +0100 Subject: [PATCH 185/402] Fixed pointer from integer warning and bug if compiled without EGL. --- src/video/windows/SDL_windowsopengl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index 2960bc56f8..e383e7277f 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -604,8 +604,9 @@ WIN_GL_CreateContext(_THIS, SDL_Window * window) return WIN_GLES_CreateContext(_this, window); #else - return SDL_SetError("SDL not configured with EGL support"); -#endif + SDL_SetError("SDL not configured with EGL support"); + return NULL; +#endif } if (_this->gl_config.share_with_current_context) { From fa9702bc36000b1d13db8536f00530a87ef162bc Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 25 Dec 2013 17:02:15 +0100 Subject: [PATCH 186/402] Changed return -1 after SDL_SetError() to return SDL_SetError(). --- src/joystick/SDL_gamecontroller.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 6aa80cb7e2..abb78db3ee 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -743,8 +743,7 @@ SDL_GameControllerAddMapping( const char *mappingString ) pchGUID = SDL_PrivateGetControllerGUIDFromMappingString( mappingString ); if (!pchGUID) { - SDL_SetError("Couldn't parse GUID from %s", mappingString); - return -1; + return SDL_SetError("Couldn't parse GUID from %s", mappingString); } #ifdef SDL_JOYSTICK_DINPUT if ( !SDL_strcasecmp( pchGUID, "xinput" ) ) { @@ -756,15 +755,13 @@ SDL_GameControllerAddMapping( const char *mappingString ) pchName = SDL_PrivateGetControllerNameFromMappingString( mappingString ); if (!pchName) { - SDL_SetError("Couldn't parse name from %s", mappingString); - return -1; + return SDL_SetError("Couldn't parse name from %s", mappingString); } pchMapping = SDL_PrivateGetControllerMappingFromMappingString( mappingString ); if (!pchMapping) { - SDL_SetError("Couldn't parse %s", mappingString); SDL_free( pchName ); - return -1; + return SDL_SetError("Couldn't parse %s", mappingString); } pControllerMapping = SDL_PrivateGetControllerMappingForGUID(&jGUID); From a98f80ae94246d7d69d8490ceae43cc94a428eef Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 27 Dec 2013 09:29:39 -0300 Subject: [PATCH 187/402] Implements touch support on QTWayland. Contributed by Thomas Perl. --- configure | 17 ++ configure.in | 7 + include/SDL_config.h.in | 1 + src/video/wayland/SDL_waylandtouch.c | 253 +++++++++++++++++++ src/video/wayland/SDL_waylandtouch.h | 351 ++++++++++++++++++++++++++ src/video/wayland/SDL_waylandvideo.c | 41 +++ src/video/wayland/SDL_waylandvideo.h | 12 + src/video/wayland/SDL_waylandwindow.c | 47 ++++ src/video/wayland/SDL_waylandwindow.h | 5 +- 9 files changed, 733 insertions(+), 1 deletion(-) create mode 100644 src/video/wayland/SDL_waylandtouch.c create mode 100644 src/video/wayland/SDL_waylandtouch.h diff --git a/configure b/configure index 0cc698a10b..9f88235cce 100755 --- a/configure +++ b/configure @@ -818,6 +818,7 @@ enable_sndio_shared enable_diskaudio enable_dummyaudio enable_video_wayland +enable_video_wayland_qt_touch enable_video_x11 with_x enable_x11_shared @@ -1534,6 +1535,9 @@ Optional Features: --enable-diskaudio support the disk writer audio driver [[default=yes]] --enable-dummyaudio support the dummy audio driver [[default=yes]] --enable-video-wayland use Wayland video driver [[default=yes]] + --enable-video-wayland-qt-touch + QtWayland server support for Wayland video driver + [[default=yes]] --enable-video-x11 use X11 video driver [[default=yes]] --enable-x11-shared dynamically load X11 support [[default=maybe]] --enable-video-x11-xcursor @@ -18645,6 +18649,14 @@ else fi + # Check whether --enable-video-wayland-qt-touch was given. +if test "${enable_video_wayland_qt_touch+set}" = set; then : + enableval=$enable_video_wayland_qt_touch; +else + enable_video_wayland_qt_touch=yes +fi + + if test x$enable_video = xyes -a x$enable_video_wayland = xyes; then # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 @@ -18704,6 +18716,11 @@ $as_echo "$video_wayland" >&6; } $as_echo "#define SDL_VIDEO_DRIVER_WAYLAND 1" >>confdefs.h + if test x$enable_video_wayland_qt_touch = xyes; then + +$as_echo "#define SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH 1" >>confdefs.h + + fi SOURCES="$SOURCES $srcdir/src/video/wayland/*.c" EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS" EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" diff --git a/configure.in b/configure.in index 941a255e60..0a491ec272 100644 --- a/configure.in +++ b/configure.in @@ -1122,6 +1122,10 @@ CheckWayland() AC_HELP_STRING([--enable-video-wayland], [use Wayland video driver [[default=yes]]]), ,enable_video_wayland=yes) + AC_ARG_ENABLE(video-wayland-qt-touch, +AC_HELP_STRING([--enable-video-wayland-qt-touch], [QtWayland server support for Wayland video driver [[default=yes]]]), + ,enable_video_wayland_qt_touch=yes) + if test x$enable_video = xyes -a x$enable_video_wayland = xyes; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) AC_MSG_CHECKING(for Wayland support) @@ -1137,6 +1141,9 @@ AC_HELP_STRING([--enable-video-wayland], [use Wayland video driver [[default=yes if test x$video_wayland = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND, 1, [ ]) + if test x$enable_video_wayland_qt_touch = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH, 1, [ ]) + fi SOURCES="$SOURCES $srcdir/src/video/wayland/*.c" EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS" dnl FIXME do dynamic loading code here. diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 14ce7912ca..c79dca89af 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -261,6 +261,7 @@ #undef SDL_VIDEO_DRIVER_DUMMY #undef SDL_VIDEO_DRIVER_WINDOWS #undef SDL_VIDEO_DRIVER_WAYLAND +#undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH #undef SDL_VIDEO_DRIVER_X11 #undef SDL_VIDEO_DRIVER_RPI #undef SDL_VIDEO_DRIVER_X11_DYNAMIC diff --git a/src/video/wayland/SDL_waylandtouch.c b/src/video/wayland/SDL_waylandtouch.c new file mode 100644 index 0000000000..9edf2e7ed5 --- /dev/null +++ b/src/video/wayland/SDL_waylandtouch.c @@ -0,0 +1,253 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* Contributed by Thomas Perl */ + +#include "SDL_config.h" + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + +#include "SDL_waylandtouch.h" +#include "SDL_log.h" +#include "../../events/SDL_touch_c.h" + +struct SDL_WaylandTouch { + struct qt_touch_extension *touch_extension; +}; + + +/** + * Qt TouchPointState + * adapted from qtbase/src/corelib/global/qnamespace.h + **/ +enum QtWaylandTouchPointState { + QtWaylandTouchPointPressed = 0x01, + QtWaylandTouchPointMoved = 0x02, + /* + Never sent by the server: + QtWaylandTouchPointStationary = 0x04, + */ + QtWaylandTouchPointReleased = 0x08, +}; + +static void +touch_handle_touch(void *data, + struct qt_touch_extension *qt_touch_extension, + uint32_t time, + uint32_t id, + uint32_t state, + int32_t x, + int32_t y, + int32_t normalized_x, + int32_t normalized_y, + int32_t width, + int32_t height, + uint32_t pressure, + int32_t velocity_x, + int32_t velocity_y, + uint32_t flags, + struct wl_array *rawdata) +{ + /** + * Event is assembled in QtWayland in TouchExtensionGlobal::postTouchEvent + * (src/compositor/wayland_wrapper/qwltouch.cpp) + **/ + + float FIXED_TO_FLOAT = 1. / 10000.; + float xf = FIXED_TO_FLOAT * x; + float yf = FIXED_TO_FLOAT * y; + + float PRESSURE_TO_FLOAT = 1. / 255.; + float pressuref = PRESSURE_TO_FLOAT * pressure; + + uint32_t touchState = state & 0xFFFF; + /* + Other fields that are sent by the server (qwltouch.cpp), + but not used at the moment can be decoded in this way: + + uint32_t sentPointCount = state >> 16; + uint32_t touchFlags = flags & 0xFFFF; + uint32_t capabilities = flags >> 16; + */ + + SDL_TouchID deviceId = 0; + if (!SDL_GetTouch(deviceId)) { + if (SDL_AddTouch(deviceId, "qt_touch_extension") < 0) { + SDL_Log("error: can't add touch %s, %d", __FILE__, __LINE__); + } + } + + switch (touchState) { + case QtWaylandTouchPointPressed: + case QtWaylandTouchPointReleased: + SDL_SendTouch(deviceId, (SDL_FingerID)id, + (touchState == QtWaylandTouchPointPressed) ? SDL_TRUE : SDL_FALSE, + xf, yf, pressuref); + break; + case QtWaylandTouchPointMoved: + SDL_SendTouchMotion(deviceId, (SDL_FingerID)id, xf, yf, pressuref); + break; + default: + /* Should not happen */ + break; + } +} + +static void +touch_handle_configure(void *data, + struct qt_touch_extension *qt_touch_extension, + uint32_t flags) +{ +} + +/* wayland-qt-touch-extension.c BEGINS */ + +static const struct qt_touch_extension_listener touch_listener = { + touch_handle_touch, + touch_handle_configure, +}; + +static const struct wl_interface *qt_touch_extension_types[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +}; + +static const struct wl_message qt_touch_extension_requests[] = { + { "dummy", "", qt_touch_extension_types + 0 }, +}; + +static const struct wl_message qt_touch_extension_events[] = { + { "touch", "uuuiiiiiiuiiua", qt_touch_extension_types + 0 }, + { "configure", "u", qt_touch_extension_types + 0 }, +}; + +WL_EXPORT const struct wl_interface qt_touch_extension_interface = { + "qt_touch_extension", 1, + 1, qt_touch_extension_requests, + 2, qt_touch_extension_events, +}; + +/* wayland-qt-touch-extension.c ENDS */ + +/* wayland-qt-windowmanager.c BEGINS */ +static const struct wl_interface *qt_windowmanager_types[] = { + NULL, + NULL, +}; + +static const struct wl_message qt_windowmanager_requests[] = { + { "open_url", "us", qt_windowmanager_types + 0 }, +}; + +static const struct wl_message qt_windowmanager_events[] = { + { "hints", "i", qt_windowmanager_types + 0 }, + { "quit", "", qt_windowmanager_types + 0 }, +}; + +WL_EXPORT const struct wl_interface qt_windowmanager_interface = { + "qt_windowmanager", 1, + 1, qt_windowmanager_requests, + 2, qt_windowmanager_events, +}; +/* wayland-qt-windowmanager.c ENDS */ + +/* wayland-qt-surface-extension.c BEGINS */ +extern const struct wl_interface qt_extended_surface_interface; +extern const struct wl_interface wl_surface_interface; + +static const struct wl_interface *qt_surface_extension_types[] = { + NULL, + NULL, + &qt_extended_surface_interface, + &wl_surface_interface, +}; + +static const struct wl_message qt_surface_extension_requests[] = { + { "get_extended_surface", "no", qt_surface_extension_types + 2 }, +}; + +WL_EXPORT const struct wl_interface qt_surface_extension_interface = { + "qt_surface_extension", 1, + 1, qt_surface_extension_requests, + 0, NULL, +}; + +static const struct wl_message qt_extended_surface_requests[] = { + { "update_generic_property", "sa", qt_surface_extension_types + 0 }, + { "set_content_orientation", "i", qt_surface_extension_types + 0 }, + { "set_window_flags", "i", qt_surface_extension_types + 0 }, +}; + +static const struct wl_message qt_extended_surface_events[] = { + { "onscreen_visibility", "i", qt_surface_extension_types + 0 }, + { "set_generic_property", "sa", qt_surface_extension_types + 0 }, + { "close", "", qt_surface_extension_types + 0 }, +}; + +WL_EXPORT const struct wl_interface qt_extended_surface_interface = { + "qt_extended_surface", 1, + 3, qt_extended_surface_requests, + 3, qt_extended_surface_events, +}; + +/* wayland-qt-surface-extension.c ENDS */ + +void +Wayland_touch_create(SDL_VideoData *data, uint32_t id) +{ + if (data->touch) { + Wayland_touch_destroy(data); + } + + data->touch = malloc(sizeof(struct SDL_WaylandTouch)); + + struct SDL_WaylandTouch *touch = data->touch; + touch->touch_extension = wl_registry_bind(data->registry, id, &qt_touch_extension_interface, 1); + qt_touch_extension_add_listener(touch->touch_extension, &touch_listener, data); +} + +void +Wayland_touch_destroy(SDL_VideoData *data) +{ + if (data->touch) { + struct SDL_WaylandTouch *touch = data->touch; + if (touch->touch_extension) { + qt_touch_extension_destroy(touch->touch_extension); + } + + free(data->touch); + data->touch = NULL; + } +} + +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ diff --git a/src/video/wayland/SDL_waylandtouch.h b/src/video/wayland/SDL_waylandtouch.h new file mode 100644 index 0000000000..ccb645bd9f --- /dev/null +++ b/src/video/wayland/SDL_waylandtouch.h @@ -0,0 +1,351 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + +#ifndef _SDL_waylandtouch_h +#define _SDL_waylandtouch_h + +#include "SDL_waylandvideo.h" +#include +#include +#include "wayland-client.h" +#include "wayland-util.h" + +void Wayland_touch_create(SDL_VideoData *data, uint32_t id); +void Wayland_touch_destroy(SDL_VideoData *data); + +struct qt_touch_extension; + +/* Autogenerated QT headers */ + +/* + Support for Wayland with QmlCompositor as Server +================================================ + +The Wayland video driver has support for some additional features when +using QtWayland's "qmlcompositor" as Wayland server. This is needed for touch +input when running SDL applications under a qmlcompositor Wayland server. + +The files following headers have been +generated from the Wayland XML Protocol Definition in QtWayland as follows: + +Clone QtWayland from Git: + http://qt.gitorious.org/qt/qtwayland/ + +Generate headers and glue code: + for extension in touch-extension surface-extension windowmanager; do + wayland-scanner client-header < src/extensions/$extension.xml > wayland-qt-$extension.h + wayland-scanner code < src/extensions/$extension.xml > wayland-qt-$extension.c + done + +*/ + +/* wayland-qt-surface-extension.h */ + +struct wl_client; +struct wl_resource; + +struct qt_surface_extension; +struct qt_extended_surface; + +extern const struct wl_interface qt_surface_extension_interface; +extern const struct wl_interface qt_extended_surface_interface; + +#define QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE 0 + +static inline void +qt_surface_extension_set_user_data(struct qt_surface_extension *qt_surface_extension, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) qt_surface_extension, user_data); +} + +static inline void * +qt_surface_extension_get_user_data(struct qt_surface_extension *qt_surface_extension) +{ + return wl_proxy_get_user_data((struct wl_proxy *) qt_surface_extension); +} + +static inline void +qt_surface_extension_destroy(struct qt_surface_extension *qt_surface_extension) +{ + wl_proxy_destroy((struct wl_proxy *) qt_surface_extension); +} + +static inline struct qt_extended_surface * +qt_surface_extension_get_extended_surface(struct qt_surface_extension *qt_surface_extension, struct wl_surface *surface) +{ + struct wl_proxy *id; + + id = wl_proxy_create((struct wl_proxy *) qt_surface_extension, + &qt_extended_surface_interface); + if (!id) + return NULL; + + wl_proxy_marshal((struct wl_proxy *) qt_surface_extension, + QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE, id, surface); + + return (struct qt_extended_surface *) id; +} + +#ifndef QT_EXTENDED_SURFACE_ORIENTATION_ENUM +#define QT_EXTENDED_SURFACE_ORIENTATION_ENUM +enum qt_extended_surface_orientation { + QT_EXTENDED_SURFACE_ORIENTATION_PRIMARYORIENTATION = 0, + QT_EXTENDED_SURFACE_ORIENTATION_PORTRAITORIENTATION = 1, + QT_EXTENDED_SURFACE_ORIENTATION_LANDSCAPEORIENTATION = 2, + QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDPORTRAITORIENTATION = 4, + QT_EXTENDED_SURFACE_ORIENTATION_INVERTEDLANDSCAPEORIENTATION = 8, +}; +#endif /* QT_EXTENDED_SURFACE_ORIENTATION_ENUM */ + +#ifndef QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM +#define QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM +enum qt_extended_surface_windowflag { + QT_EXTENDED_SURFACE_WINDOWFLAG_OVERRIDESSYSTEMGESTURES = 1, + QT_EXTENDED_SURFACE_WINDOWFLAG_STAYSONTOP = 2, +}; +#endif /* QT_EXTENDED_SURFACE_WINDOWFLAG_ENUM */ + +struct qt_extended_surface_listener { + /** + * onscreen_visibility - (none) + * @visible: (none) + */ + void (*onscreen_visibility)(void *data, + struct qt_extended_surface *qt_extended_surface, + int32_t visible); + /** + * set_generic_property - (none) + * @name: (none) + * @value: (none) + */ + void (*set_generic_property)(void *data, + struct qt_extended_surface *qt_extended_surface, + const char *name, + struct wl_array *value); + /** + * close - (none) + */ + void (*close)(void *data, + struct qt_extended_surface *qt_extended_surface); +}; + +static inline int +qt_extended_surface_add_listener(struct qt_extended_surface *qt_extended_surface, + const struct qt_extended_surface_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) qt_extended_surface, + (void (**)(void)) listener, data); +} + +#define QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY 0 +#define QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION 1 +#define QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS 2 + +static inline void +qt_extended_surface_set_user_data(struct qt_extended_surface *qt_extended_surface, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) qt_extended_surface, user_data); +} + +static inline void * +qt_extended_surface_get_user_data(struct qt_extended_surface *qt_extended_surface) +{ + return wl_proxy_get_user_data((struct wl_proxy *) qt_extended_surface); +} + +static inline void +qt_extended_surface_destroy(struct qt_extended_surface *qt_extended_surface) +{ + wl_proxy_destroy((struct wl_proxy *) qt_extended_surface); +} + +static inline void +qt_extended_surface_update_generic_property(struct qt_extended_surface *qt_extended_surface, const char *name, struct wl_array *value) +{ + wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, + QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY, name, value); +} + +static inline void +qt_extended_surface_set_content_orientation(struct qt_extended_surface *qt_extended_surface, int32_t orientation) +{ + wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, + QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION, orientation); +} + +static inline void +qt_extended_surface_set_window_flags(struct qt_extended_surface *qt_extended_surface, int32_t flags) +{ + wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, + QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS, flags); +} + +/* wayland-qt-touch-extension.h */ + +extern const struct wl_interface qt_touch_extension_interface; + +#ifndef QT_TOUCH_EXTENSION_FLAGS_ENUM +#define QT_TOUCH_EXTENSION_FLAGS_ENUM +enum qt_touch_extension_flags { + QT_TOUCH_EXTENSION_FLAGS_MOUSE_FROM_TOUCH = 0x1, +}; +#endif /* QT_TOUCH_EXTENSION_FLAGS_ENUM */ + +struct qt_touch_extension_listener { + /** + * touch - (none) + * @time: (none) + * @id: (none) + * @state: (none) + * @x: (none) + * @y: (none) + * @normalized_x: (none) + * @normalized_y: (none) + * @width: (none) + * @height: (none) + * @pressure: (none) + * @velocity_x: (none) + * @velocity_y: (none) + * @flags: (none) + * @rawdata: (none) + */ + void (*touch)(void *data, + struct qt_touch_extension *qt_touch_extension, + uint32_t time, + uint32_t id, + uint32_t state, + int32_t x, + int32_t y, + int32_t normalized_x, + int32_t normalized_y, + int32_t width, + int32_t height, + uint32_t pressure, + int32_t velocity_x, + int32_t velocity_y, + uint32_t flags, + struct wl_array *rawdata); + /** + * configure - (none) + * @flags: (none) + */ + void (*configure)(void *data, + struct qt_touch_extension *qt_touch_extension, + uint32_t flags); +}; + +static inline int +qt_touch_extension_add_listener(struct qt_touch_extension *qt_touch_extension, + const struct qt_touch_extension_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) qt_touch_extension, + (void (**)(void)) listener, data); +} + +#define QT_TOUCH_EXTENSION_DUMMY 0 + +static inline void +qt_touch_extension_set_user_data(struct qt_touch_extension *qt_touch_extension, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) qt_touch_extension, user_data); +} + +static inline void * +qt_touch_extension_get_user_data(struct qt_touch_extension *qt_touch_extension) +{ + return wl_proxy_get_user_data((struct wl_proxy *) qt_touch_extension); +} + +static inline void +qt_touch_extension_destroy(struct qt_touch_extension *qt_touch_extension) +{ + wl_proxy_destroy((struct wl_proxy *) qt_touch_extension); +} + +static inline void +qt_touch_extension_dummy(struct qt_touch_extension *qt_touch_extension) +{ + wl_proxy_marshal((struct wl_proxy *) qt_touch_extension, + QT_TOUCH_EXTENSION_DUMMY); +} + + +/* wayland-qt-windowmanager.h */ + +extern const struct wl_interface qt_windowmanager_interface; + +struct qt_windowmanager_listener { + /** + * hints - (none) + * @show_is_fullscreen: (none) + */ + void (*hints)(void *data, + struct qt_windowmanager *qt_windowmanager, + int32_t show_is_fullscreen); + /** + * quit - (none) + */ + void (*quit)(void *data, + struct qt_windowmanager *qt_windowmanager); +}; + +static inline int +qt_windowmanager_add_listener(struct qt_windowmanager *qt_windowmanager, + const struct qt_windowmanager_listener *listener, void *data) +{ + return wl_proxy_add_listener((struct wl_proxy *) qt_windowmanager, + (void (**)(void)) listener, data); +} + +#define QT_WINDOWMANAGER_OPEN_URL 0 + +static inline void +qt_windowmanager_set_user_data(struct qt_windowmanager *qt_windowmanager, void *user_data) +{ + wl_proxy_set_user_data((struct wl_proxy *) qt_windowmanager, user_data); +} + +static inline void * +qt_windowmanager_get_user_data(struct qt_windowmanager *qt_windowmanager) +{ + return wl_proxy_get_user_data((struct wl_proxy *) qt_windowmanager); +} + +static inline void +qt_windowmanager_destroy(struct qt_windowmanager *qt_windowmanager) +{ + wl_proxy_destroy((struct wl_proxy *) qt_windowmanager); +} + +static inline void +qt_windowmanager_open_url(struct qt_windowmanager *qt_windowmanager, uint32_t remaining, const char *url) +{ + wl_proxy_marshal((struct wl_proxy *) qt_windowmanager, + QT_WINDOWMANAGER_OPEN_URL, remaining, url); +} + +#endif /* _SDL_waylandtouch_h */ + +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index e75bea1dc4..5c845ac450 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -30,6 +30,7 @@ #include "SDL_waylandwindow.h" #include "SDL_waylandopengles.h" #include "SDL_waylandmouse.h" +#include "SDL_waylandtouch.h" #include #include @@ -202,6 +203,25 @@ static const struct wl_shm_listener shm_listener = { shm_handle_format }; +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +static void +windowmanager_hints(void *data, struct qt_windowmanager *qt_windowmanager, + int32_t show_is_fullscreen) +{ +} + +static void +windowmanager_quit(void *data, struct qt_windowmanager *qt_windowmanager) +{ + SDL_SendQuit(); +} + +static const struct qt_windowmanager_listener windowmanager_listener = { + windowmanager_hints, + windowmanager_quit, +}; +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ + static void display_handle_global(void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version) @@ -222,6 +242,18 @@ display_handle_global(void *data, struct wl_registry *registry, uint32_t id, d->cursor_theme = wl_cursor_theme_load(NULL, 32, d->shm); d->default_cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); wl_shm_add_listener(d->shm, &shm_listener, d); + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + } else if (strcmp(interface, "qt_touch_extension") == 0) { + Wayland_touch_create(d, id); + } else if (strcmp(interface, "qt_surface_extension") == 0) { + d->surface_extension = wl_registry_bind(registry, id, + &qt_surface_extension_interface, 1); + } else if (strcmp(interface, "qt_windowmanager") == 0) { + d->windowmanager = wl_registry_bind(registry, id, + &qt_windowmanager_interface, 1); + qt_windowmanager_add_listener(d->windowmanager, &windowmanager_listener, d); +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ } } @@ -334,6 +366,15 @@ Wayland_VideoQuit(_THIS) xkb_context_unref(data->xkb_context); data->xkb_context = NULL; } +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + if (data->windowmanager) + qt_windowmanager_destroy(data->windowmanager); + + if (data->surface_extension) + qt_surface_extension_destroy(data->surface_extension); + + Wayland_touch_destroy(data); +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ if (data->shm) wl_shm_destroy(data->shm); diff --git a/src/video/wayland/SDL_waylandvideo.h b/src/video/wayland/SDL_waylandvideo.h index ca1b66f4e8..c44a264188 100644 --- a/src/video/wayland/SDL_waylandvideo.h +++ b/src/video/wayland/SDL_waylandvideo.h @@ -33,6 +33,12 @@ struct xkb_context; struct SDL_WaylandInput; +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +struct SDL_WaylandTouch; +struct qt_surface_extension; +struct qt_windowmanager; +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ + typedef struct { struct wl_display *display; struct wl_registry *registry; @@ -56,6 +62,12 @@ typedef struct { struct xkb_context *xkb_context; struct SDL_WaylandInput *input; + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + struct SDL_WaylandTouch *touch; + struct qt_surface_extension *surface_extension; + struct qt_windowmanager *windowmanager; +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ uint32_t shm_formats; } SDL_VideoData; diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index e530f5b80f..f864520cf7 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -26,6 +26,7 @@ #include "../SDL_egl_c.h" #include "SDL_waylandwindow.h" #include "SDL_waylandvideo.h" +#include "SDL_waylandtouch.h" static void handle_ping(void *data, struct wl_shell_surface *shell_surface, @@ -51,6 +52,34 @@ static const struct wl_shell_surface_listener shell_surface_listener = { handle_popup_done }; +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +static void +handle_onscreen_visibility(void *data, + struct qt_extended_surface *qt_extended_surface, int32_t visible) +{ +} + +static void +handle_set_generic_property(void *data, + struct qt_extended_surface *qt_extended_surface, const char *name, + struct wl_array *value) +{ +} + +static void +handle_close(void *data, struct qt_extended_surface *qt_extended_surface) +{ + SDL_WindowData *window = (SDL_WindowData *)data; + SDL_SendWindowEvent(window->sdlwindow, SDL_WINDOWEVENT_CLOSE, 0, 0); +} + +static const struct qt_extended_surface_listener extended_surface_listener = { + handle_onscreen_visibility, + handle_set_generic_property, + handle_close, +}; +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ + SDL_bool Wayland_GetWindowWMInfo(_THIS, SDL_Window * window, SDL_SysWMinfo * info) { @@ -127,6 +156,12 @@ int Wayland_CreateWindow(_THIS, SDL_Window *window) wl_surface_set_user_data(data->surface, data); data->shell_surface = wl_shell_get_shell_surface(c->shell, data->surface); +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + if (c->surface_extension) { + data->extended_surface = qt_surface_extension_get_extended_surface( + c->surface_extension, data->surface); + } +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ data->egl_window = wl_egl_window_create(data->surface, window->w, window->h); @@ -144,6 +179,14 @@ int Wayland_CreateWindow(_THIS, SDL_Window *window) &shell_surface_listener, data); } +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + if (data->extended_surface) { + qt_extended_surface_set_user_data(data->extended_surface, data); + qt_extended_surface_add_listener(data->extended_surface, + &extended_surface_listener, data); + } +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ + region = wl_compositor_create_region(c->compositor); wl_region_add(region, 0, 0, window->w, window->h); wl_surface_set_opaque_region(data->surface, region); @@ -182,6 +225,10 @@ void Wayland_DestroyWindow(_THIS, SDL_Window *window) if (wind->shell_surface) wl_shell_surface_destroy(wind->shell_surface); +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + if (wind->extended_surface) + qt_extended_surface_destroy(wind->extended_surface); +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ wl_surface_destroy(wind->surface); SDL_free(wind); diff --git a/src/video/wayland/SDL_waylandwindow.h b/src/video/wayland/SDL_waylandwindow.h index f4f18361a2..f65dc8fefb 100644 --- a/src/video/wayland/SDL_waylandwindow.h +++ b/src/video/wayland/SDL_waylandwindow.h @@ -38,8 +38,11 @@ typedef struct { struct wl_shell_surface *shell_surface; struct wl_egl_window *egl_window; struct SDL_WaylandInput *keyboard_device; - EGLSurface egl_surface; + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH + struct qt_extended_surface *extended_surface; +#endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ } SDL_WindowData; extern void Wayland_ShowWindow(_THIS, SDL_Window *window); From 986b9e261698b8c1ba97519777e43dd1d906b2da Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 27 Dec 2013 10:18:11 -0800 Subject: [PATCH 188/402] Bump SDL to build with 10.7 SDK. This also bumps the minimum requirement for building SDL to 10.7, and removes some checking we no longer need. CR: saml --- include/SDL_platform.h | 3 --- src/video/cocoa/SDL_cocoaopengl.m | 13 ------------- src/video/cocoa/SDL_cocoawindow.m | 24 ++++-------------------- 3 files changed, 4 insertions(+), 36 deletions(-) diff --git a/include/SDL_platform.h b/include/SDL_platform.h index f12592b4eb..7e56c45b84 100644 --- a/include/SDL_platform.h +++ b/include/SDL_platform.h @@ -82,9 +82,6 @@ #if MAC_OS_X_VERSION_MIN_REQUIRED < 1050 # error SDL for Mac OS X only supports deploying on 10.5 and above. #endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1050 */ -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1060 -# error SDL for Mac OS X must be built with a 10.6 SDK or above. -#endif /* MAC_OS_X_VERSION_MAX_ALLOWED < 1060 */ #endif /* TARGET_OS_IPHONE */ #endif /* defined(__APPLE__) */ diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 803b92f538..443a5bc3de 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -35,19 +35,6 @@ #define DEFAULT_OPENGL "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib" -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 -/* New methods for converting to and from backing store pixels, taken from - * AppKit/NSView.h in 10.8 SDK. */ -@interface NSView (Backing) -- (NSPoint)convertPointToBacking:(NSPoint)aPoint; -- (NSPoint)convertPointFromBacking:(NSPoint)aPoint; -- (NSSize)convertSizeToBacking:(NSSize)aSize; -- (NSSize)convertSizeFromBacking:(NSSize)aSize; -- (NSRect)convertRectToBacking:(NSRect)aRect; -- (NSRect)convertRectFromBacking:(NSRect)aRect; -@end -#endif - #ifndef kCGLPFAOpenGLProfile #define kCGLPFAOpenGLProfile 99 #endif diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 2578d9f3c8..9a88cfdeb6 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -22,6 +22,10 @@ #if SDL_VIDEO_DRIVER_COCOA +#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 +# error SDL for Mac OS X must be built with a 10.7 SDK or above. +#endif /* MAC_OS_X_VERSION_MAX_ALLOWED < 1070 */ + #include "SDL_syswm.h" #include "SDL_timer.h" /* For SDL_GetTicks() */ #include "SDL_hints.h" @@ -35,14 +39,6 @@ #include "SDL_cocoamouse.h" #include "SDL_cocoaopengl.h" -#if MAC_OS_X_VERSION_MAX_ALLOWED < 1070 -/* Taken from AppKit/NSOpenGLView.h in 10.8 SDK. */ -@interface NSView (NSOpenGLSurfaceResolution) -- (BOOL)wantsBestResolutionOpenGLSurface; -- (void)setWantsBestResolutionOpenGLSurface:(BOOL)flag; -@end -#endif - static Uint32 s_moveHack; static void ConvertNSRect(NSRect *r) @@ -140,12 +136,10 @@ - (void)listen:(SDL_WindowData *)data [center addObserver:self selector:@selector(windowDidDeminiaturize:) name:NSWindowDidDeminiaturizeNotification object:window]; [center addObserver:self selector:@selector(windowDidBecomeKey:) name:NSWindowDidBecomeKeyNotification object:window]; [center addObserver:self selector:@selector(windowDidResignKey:) name:NSWindowDidResignKeyNotification object:window]; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 [center addObserver:self selector:@selector(windowWillEnterFullScreen:) name:NSWindowWillEnterFullScreenNotification object:window]; [center addObserver:self selector:@selector(windowDidEnterFullScreen:) name:NSWindowDidEnterFullScreenNotification object:window]; [center addObserver:self selector:@selector(windowWillExitFullScreen:) name:NSWindowWillExitFullScreenNotification object:window]; [center addObserver:self selector:@selector(windowDidExitFullScreen:) name:NSWindowDidExitFullScreenNotification object:window]; -#endif /* Mac OS X 10.7+ */ } else { [window setDelegate:self]; } @@ -211,7 +205,6 @@ -(void) resumeVisibleObservation -(BOOL) setFullscreenSpace:(BOOL) state; { -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; @@ -245,9 +238,6 @@ -(BOOL) setFullscreenSpace:(BOOL) state; [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; -#else - return NO; -#endif /* SDK >= 10.7 */ } -(BOOL) isInFullscreenSpace @@ -282,12 +272,10 @@ - (void)close [center removeObserver:self name:NSWindowDidDeminiaturizeNotification object:window]; [center removeObserver:self name:NSWindowDidBecomeKeyNotification object:window]; [center removeObserver:self name:NSWindowDidResignKeyNotification object:window]; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 [center removeObserver:self name:NSWindowWillEnterFullScreenNotification object:window]; [center removeObserver:self name:NSWindowDidEnterFullScreenNotification object:window]; [center removeObserver:self name:NSWindowWillExitFullScreenNotification object:window]; [center removeObserver:self name:NSWindowDidExitFullScreenNotification object:window]; -#endif /* Mac OS X 10.7+ */ } else { [window setDelegate:nil]; } @@ -931,14 +919,12 @@ - (void)resetCursorRects return -1; } [nswindow setBackgroundColor:[NSColor blackColor]]; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 if ([nswindow respondsToSelector:@selector(setCollectionBehavior:)]) { const char *hint = SDL_GetHint(SDL_HINT_VIDEO_FULLSCREEN_SPACES); if (hint && SDL_atoi(hint) > 0) { [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; } } -#endif /* Create a default view for this window */ rect = [nswindow contentRectForFrameRect:[nswindow frame]]; @@ -1419,7 +1405,6 @@ - (void)resetCursorRects Cocoa_SetWindowFullscreenSpace(SDL_Window * window, SDL_bool state) { SDL_bool succeeded = SDL_FALSE; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDL_WindowData *data = (SDL_WindowData *) window->driverdata; @@ -1428,7 +1413,6 @@ - (void)resetCursorRects } [pool release]; -#endif /* SDK 10.7+ */ return succeeded; } From aa23c04bcfbe91e659679eb306d6dc59eb58ec97 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 27 Dec 2013 10:18:18 -0800 Subject: [PATCH 189/402] Make sure our window has mouse focus before processing raw input events. This happens rarely, but not reproducibly, where we get raw input events for the window even though it doesn't have focus. --- src/video/windows/SDL_windowsevents.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 103a9bff10..aaebc0ac1f 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -417,7 +417,7 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) RAWINPUT inp; UINT size = sizeof(inp); - if (!mouse->relative_mode || mouse->relative_mode_warp) { + if (!mouse->relative_mode || mouse->relative_mode_warp || mouse->focus != data->window) { break; } From 2e0ed9d13c35ef5c631604f5df45802d71409a08 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 27 Dec 2013 10:18:19 -0800 Subject: [PATCH 190/402] Switch back to apartment threaded COM initialization, which was the previous default. We do succeed now if the application previously initialized COM in multi-threaded mode. --- src/core/windows/SDL_windows.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/windows/SDL_windows.c b/src/core/windows/SDL_windows.c index 8de46a72ce..6a13ab167b 100644 --- a/src/core/windows/SDL_windows.c +++ b/src/core/windows/SDL_windows.c @@ -45,7 +45,15 @@ WIN_SetError(const char *prefix) HRESULT WIN_CoInitialize(void) { - const HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); + /* SDL handles any threading model, so initialize with the default, which + is compatible with OLE and if that doesn't work, try multi-threaded mode. + + If you need multi-threaded mode, call CoInitializeEx() before SDL_Init() + */ + HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + if (hr == RPC_E_CHANGED_MODE) { + hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); + } /* S_FALSE means success, but someone else already initialized. */ /* You still need to call CoUninitialize in this case! */ From bba69de81c4b1f66834d2d94b3d0e1e06acccb2b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 30 Dec 2013 12:49:15 -0800 Subject: [PATCH 191/402] Fixed display mode calculations for applications which are not DPI aware. If your application wants to have access to the full resolution even when the system has DPI scaling enabled, call SetProcessDPIAware() before calling SDL_Init() e.g. typedef BOOL (WINAPI *SetProcessDPIAware_t)(void); HMODULE hMod = LoadLibrary("user32.dll"); if ( hMod ) { SetProcessDPIAware_t pSetProcessDPIAware = GetProcAddress( hMod, "SetProcessDPIAware" ); if ( pSetProcessDPIAware ) { pSetProcessDPIAware(); } FreeLibrary( hMod ); } --- src/video/windows/SDL_windowsmodes.c | 22 +++++++++++++++------- src/video/windows/SDL_windowsmodes.h | 2 ++ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/video/windows/SDL_windowsmodes.c b/src/video/windows/SDL_windowsmodes.c index 73cae8f37d..f583b0baaf 100644 --- a/src/video/windows/SDL_windowsmodes.c +++ b/src/video/windows/SDL_windowsmodes.c @@ -50,6 +50,8 @@ WIN_GetDisplayMode(LPCTSTR deviceName, DWORD index, SDL_DisplayMode * mode) data->DeviceMode.dmFields = (DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT | DM_DISPLAYFREQUENCY | DM_DISPLAYFLAGS); + data->ScaleX = 1.0f; + data->ScaleY = 1.0f; /* Fill in the mode information */ mode->format = SDL_PIXELFORMAT_UNKNOWN; @@ -63,6 +65,13 @@ WIN_GetDisplayMode(LPCTSTR deviceName, DWORD index, SDL_DisplayMode * mode) char bmi_data[sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)]; LPBITMAPINFO bmi; HBITMAP hbm; + int logical_width = GetDeviceCaps( hdc, HORZRES ); + int logical_height = GetDeviceCaps( hdc, VERTRES ); + + data->ScaleX = (float)logical_width / devmode.dmPelsWidth; + data->ScaleY = (float)logical_height / devmode.dmPelsHeight; + mode->w = logical_width; + mode->h = logical_height; SDL_zero(bmi_data); bmi = (LPBITMAPINFO) bmi_data; @@ -93,7 +102,7 @@ WIN_GetDisplayMode(LPCTSTR deviceName, DWORD index, SDL_DisplayMode * mode) } else if (bmi->bmiHeader.biBitCount == 4) { mode->format = SDL_PIXELFORMAT_INDEX4LSB; } - } else { + } else { /* FIXME: Can we tell what this will be? */ if ((devmode.dmFields & DM_BITSPERPEL) == DM_BITSPERPEL) { switch (devmode.dmBitsPerPel) { @@ -224,10 +233,10 @@ WIN_GetDisplayBounds(_THIS, SDL_VideoDisplay * display, SDL_Rect * rect) { SDL_DisplayModeData *data = (SDL_DisplayModeData *) display->current_mode.driverdata; - rect->x = (int)data->DeviceMode.dmPosition.x; - rect->y = (int)data->DeviceMode.dmPosition.y; - rect->w = data->DeviceMode.dmPelsWidth; - rect->h = data->DeviceMode.dmPelsHeight; + rect->x = (int)SDL_ceil(data->DeviceMode.dmPosition.x * data->ScaleX); + rect->y = (int)SDL_ceil(data->DeviceMode.dmPosition.y * data->ScaleY); + rect->w = (int)SDL_ceil(data->DeviceMode.dmPelsWidth * data->ScaleX); + rect->h = (int)SDL_ceil(data->DeviceMode.dmPelsHeight * data->ScaleY); return 0; } @@ -252,8 +261,7 @@ WIN_GetDisplayModes(_THIS, SDL_VideoDisplay * display) if (!SDL_AddDisplayMode(display, &mode)) { SDL_free(mode.driverdata); } - } - else { + } else { SDL_free(mode.driverdata); } } diff --git a/src/video/windows/SDL_windowsmodes.h b/src/video/windows/SDL_windowsmodes.h index fd622d56ca..c13670b1cb 100644 --- a/src/video/windows/SDL_windowsmodes.h +++ b/src/video/windows/SDL_windowsmodes.h @@ -31,6 +31,8 @@ typedef struct typedef struct { DEVMODE DeviceMode; + float ScaleX; + float ScaleY; } SDL_DisplayModeData; extern int WIN_InitModes(_THIS); From 2a561cb0ace9bd541a5c2bf6d88fd8ec0a497102 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 24 Nov 2013 21:15:58 -0500 Subject: [PATCH 192/402] Don't use -falign-loops=16 on Mac OS X anymore. It isn't available in Clang at all, and was more important on PowerPC. --- configure.in | 3 --- 1 file changed, 3 deletions(-) diff --git a/configure.in b/configure.in index 0a491ec272..f0d5f49a9a 100644 --- a/configure.in +++ b/configure.in @@ -2827,9 +2827,6 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau CheckOpenGLX11 CheckPTHREAD - # Good optimization on Mac OS X, yes... - EXTRA_CFLAGS="$EXTRA_CFLAGS -falign-loops=16" - # Need this or things might misbuild on a G3. EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL" From 6038aadf8dfcc9824b12f415eeeb1490a1fbd121 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 24 Nov 2013 21:04:51 -0500 Subject: [PATCH 193/402] Moved atomic API implementation out of headers. --- include/SDL_atomic.h | 111 ++---------------------------------- src/atomic/SDL_atomic.c | 123 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 117 insertions(+), 117 deletions(-) diff --git a/include/SDL_atomic.h b/include/SDL_atomic.h index 48b0053a0f..43ba7543b6 100644 --- a/include/SDL_atomic.h +++ b/include/SDL_atomic.h @@ -64,13 +64,6 @@ #include "begin_code.h" -/* Need to do this here because intrin.h has C++ code in it */ -/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ -#if defined(_MSC_VER) && (_MSC_VER >= 1500) -#include -#define HAVE_MSC_ATOMICS 1 -#endif - /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus extern "C" { @@ -181,57 +174,11 @@ extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquire(); #define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() #endif - -/* Platform specific optimized versions of the atomic functions, - * you can disable these by defining SDL_DISABLE_ATOMIC_INLINE - */ -#if defined(SDL_ATOMIC_DISABLED) && SDL_ATOMIC_DISABLED -#define SDL_DISABLE_ATOMIC_INLINE -#endif -#ifndef SDL_DISABLE_ATOMIC_INLINE - -#ifdef HAVE_MSC_ATOMICS - -#define SDL_AtomicSet(a, v) _InterlockedExchange((long*)&(a)->value, (v)) -#define SDL_AtomicAdd(a, v) _InterlockedExchangeAdd((long*)&(a)->value, (v)) -#define SDL_AtomicCAS(a, oldval, newval) (_InterlockedCompareExchange((long*)&(a)->value, (newval), (oldval)) == (oldval)) -#define SDL_AtomicSetPtr(a, v) _InterlockedExchangePointer((a), (v)) -#if _M_IX86 -#define SDL_AtomicCASPtr(a, oldval, newval) (_InterlockedCompareExchange((long*)(a), (long)(newval), (long)(oldval)) == (long)(oldval)) -#else -#define SDL_AtomicCASPtr(a, oldval, newval) (_InterlockedCompareExchangePointer((a), (newval), (oldval)) == (oldval)) -#endif - -#elif defined(__MACOSX__) -#include - -#define SDL_AtomicCAS(a, oldval, newval) OSAtomicCompareAndSwap32Barrier((oldval), (newval), &(a)->value) -#ifdef __LP64__ -#define SDL_AtomicCASPtr(a, oldval, newval) OSAtomicCompareAndSwap64Barrier((int64_t)(oldval), (int64_t)(newval), (int64_t*)(a)) -#else -#define SDL_AtomicCASPtr(a, oldval, newval) OSAtomicCompareAndSwap32Barrier((int32_t)(oldval), (int32_t)(newval), (int32_t*)(a)) -#endif - -#elif defined(HAVE_GCC_ATOMICS) - -#define SDL_AtomicSet(a, v) __sync_lock_test_and_set(&(a)->value, v) -#define SDL_AtomicAdd(a, v) __sync_fetch_and_add(&(a)->value, v) -#define SDL_AtomicSetPtr(a, v) __sync_lock_test_and_set(a, v) -#define SDL_AtomicCAS(a, oldval, newval) __sync_bool_compare_and_swap(&(a)->value, oldval, newval) -#define SDL_AtomicCASPtr(a, oldval, newval) __sync_bool_compare_and_swap(a, oldval, newval) - -#endif - -#endif /* !SDL_DISABLE_ATOMIC_INLINE */ - - /** * \brief A type representing an atomic integer value. It is a struct * so people don't accidentally use numeric operations on it. */ -#ifndef SDL_atomic_t_defined typedef struct { int value; } SDL_atomic_t; -#endif /** * \brief Set an atomic variable to a new value if it is currently an old value. @@ -240,37 +187,19 @@ typedef struct { int value; } SDL_atomic_t; * * \note If you don't know what this function is for, you shouldn't use it! */ -#ifndef SDL_AtomicCAS extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); -#endif /** * \brief Set an atomic variable to a value. * * \return The previous value of the atomic variable. */ -#ifndef SDL_AtomicSet -SDL_FORCE_INLINE int SDL_AtomicSet(SDL_atomic_t *a, int v) -{ - int value; - do { - value = a->value; - } while (!SDL_AtomicCAS(a, value, v)); - return value; -} -#endif +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); /** * \brief Get the value of an atomic variable */ -#ifndef SDL_AtomicGet -SDL_FORCE_INLINE int SDL_AtomicGet(SDL_atomic_t *a) -{ - int value = a->value; - SDL_CompilerBarrier(); - return value; -} -#endif +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); /** * \brief Add to an atomic variable. @@ -279,16 +208,7 @@ SDL_FORCE_INLINE int SDL_AtomicGet(SDL_atomic_t *a) * * \note This same style can be used for any number operation */ -#ifndef SDL_AtomicAdd -SDL_FORCE_INLINE int SDL_AtomicAdd(SDL_atomic_t *a, int v) -{ - int value; - do { - value = a->value; - } while (!SDL_AtomicCAS(a, value, (value + v))); - return value; -} -#endif +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); /** * \brief Increment an atomic variable used as a reference count. @@ -314,38 +234,19 @@ SDL_FORCE_INLINE int SDL_AtomicAdd(SDL_atomic_t *a, int v) * * \note If you don't know what this function is for, you shouldn't use it! */ -#ifndef SDL_AtomicCASPtr -extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void* *a, void *oldval, void *newval); -#endif +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); /** * \brief Set a pointer to a value atomically. * * \return The previous value of the pointer. */ -#ifndef SDL_AtomicSetPtr -SDL_FORCE_INLINE void* SDL_AtomicSetPtr(void* *a, void* v) -{ - void* value; - do { - value = *a; - } while (!SDL_AtomicCASPtr(a, value, v)); - return value; -} -#endif +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); /** * \brief Get the value of a pointer atomically. */ -#ifndef SDL_AtomicGetPtr -SDL_FORCE_INLINE void* SDL_AtomicGetPtr(void* *a) -{ - void* value = *a; - SDL_CompilerBarrier(); - return value; -} -#endif - +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/src/atomic/SDL_atomic.c b/src/atomic/SDL_atomic.c index e9b636f301..60d6f511be 100644 --- a/src/atomic/SDL_atomic.c +++ b/src/atomic/SDL_atomic.c @@ -22,13 +22,14 @@ #include "SDL_atomic.h" -/* Note that we undefine the atomic operations here, in case they are - defined as compiler intrinsics while building SDL but the library user - doesn't have that compiler. That way we always have a working set of - atomic operations built into the library. -*/ -#undef SDL_AtomicCAS -#undef SDL_AtomicCASPtr +#if defined(_MSC_VER) && (_MSC_VER >= 1500) +#include +#define HAVE_MSC_ATOMICS 1 +#endif + +#if defined(__MACOSX__) /* !!! FIXME: should we favor gcc atomics? */ +#include +#endif /* If any of the operations are not provided then we must emulate some @@ -53,6 +54,11 @@ Contributed by Bob Pendleton, bob@pendleton.com */ +#if !defined(HAVE_MSC_ATOMICS) && !defined(HAVE_GCC_ATOMICS) && !defined(__MACOSX__) +#define EMULATE_CAS 1 +#endif + +#if EMULATE_CAS static SDL_SpinLock locks[32]; static SDL_INLINE void @@ -70,10 +76,19 @@ leaveLock(void *a) SDL_AtomicUnlock(&locks[index]); } +#endif -DECLSPEC SDL_bool SDLCALL + +SDL_bool SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval) { +#ifdef HAVE_MSC_ATOMICS + return (_InterlockedCompareExchange((long*)&a->value, (long)newval, (long)oldval) == (long)oldval); +#elif defined(__MACOSX__) /* !!! FIXME: should we favor gcc atomics? */ + return (SDL_bool) OSAtomicCompareAndSwap32Barrier(oldval, newval, &a->value); +#elif defined(HAVE_GCC_ATOMICS) + return (SDL_bool) __sync_bool_compare_and_swap(&a->value, oldval, newval); +#elif EMULATE_CAS SDL_bool retval = SDL_FALSE; enterLock(a); @@ -84,11 +99,25 @@ SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval) leaveLock(a); return retval; +#else + #error Please define your platform. +#endif } -DECLSPEC SDL_bool SDLCALL +SDL_bool SDL_AtomicCASPtr(void **a, void *oldval, void *newval) { +#if defined(HAVE_MSC_ATOMICS) && (_M_IX86) + return (_InterlockedCompareExchange((long*)a, (long)newval, (long)oldval) == (long)oldval); +#elif defined(HAVE_MSC_ATOMICS) && (!_M_IX86) + return (_InterlockedCompareExchangePointer(a, newval, oldval) == oldval); +#elif defined(__MACOSX__) && defined(__LP64__) /* !!! FIXME: should we favor gcc atomics? */ + return (SDL_bool) OSAtomicCompareAndSwap64Barrier((int64_t)oldval, (int64_t)newval, (int64_t*) a); +#elif defined(__MACOSX__) && !defined(__LP64__) /* !!! FIXME: should we favor gcc atomics? */ + return (SDL_bool) OSAtomicCompareAndSwap32Barrier((int32_t)oldval, (int32_t)newval, (int32_t*) a); +#elif defined(HAVE_GCC_ATOMICS) + return __sync_bool_compare_and_swap(a, oldval, newval); +#elif EMULATE_CAS SDL_bool retval = SDL_FALSE; enterLock(a); @@ -99,10 +128,80 @@ SDL_AtomicCASPtr(void **a, void *oldval, void *newval) leaveLock(a); return retval; +#else + #error Please define your platform. +#endif +} + +int +SDL_AtomicSet(SDL_atomic_t *a, int v) +{ +#ifdef HAVE_MSC_ATOMICS + return _InterlockedExchange((long*)&a->value, v); +#elif defined(HAVE_GCC_ATOMICS) + return __sync_lock_test_and_set(&a->value, v); +#else + int value; + do { + value = a->value; + } while (!SDL_AtomicCAS(a, value, v)); + return value; +#endif +} + +void* +SDL_AtomicSetPtr(void **a, void *v) +{ +#ifdef HAVE_MSC_ATOMICS + return _InterlockedExchangePointer(a, v); +#elif defined(HAVE_GCC_ATOMICS) + return __sync_lock_test_and_set(a, v); +#else + void *value; + do { + value = *a; + } while (!SDL_AtomicCASPtr(a, value, v)); + return value; +#endif +} + +int +SDL_AtomicAdd(SDL_atomic_t *a, int v) +{ +#ifdef HAVE_MSC_ATOMICS + return _InterlockedExchangeAdd((long*)&a->value, v); +#elif defined(HAVE_GCC_ATOMICS) + return __sync_fetch_and_add(&a->value, v); +#else + int value; + do { + value = a->value; + } while (!SDL_AtomicCAS(a, value, (value + v))); + return value; +#endif +} + +int +SDL_AtomicGet(SDL_atomic_t *a) +{ + int value; + do { + value = a->value; + } while (!SDL_AtomicCAS(a, value, value)); + return value; +} + +void * +SDL_AtomicGetPtr(void **a) +{ + void *value; + do { + value = *a; + } while (!SDL_AtomicCASPtr(a, value, value)); + return value; } -#if defined(__GNUC__) && defined(__arm__) && \ - (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)) +#ifdef __thumb__ __asm__( " .align 2\n" " .globl _SDL_MemoryBarrierRelease\n" @@ -113,6 +212,6 @@ __asm__( " mcr p15, 0, r0, c7, c10, 5\n" " bx lr\n" ); -#endif /* __GNUC__ && __arm__ && ARMV6 */ +#endif /* vi: set ts=4 sw=4 expandtab: */ From 73211816762c5f09fc3bf31be1bdb0d1a9b5c9a7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 24 Nov 2013 23:35:38 -0500 Subject: [PATCH 194/402] Added SDL_vsscanf(). --- CMakeLists.txt | 3 +- configure | 2 +- configure.in | 3 +- include/SDL_config.h.cmake | 2 +- include/SDL_config.h.in | 1 + include/SDL_config_android.h | 2 +- include/SDL_config_iphoneos.h | 2 +- include/SDL_config_macosx.h | 2 +- include/SDL_config_pandora.h | 2 +- include/SDL_config_psp.h | 2 +- include/SDL_config_windows.h | 2 +- include/SDL_config_wiz.h | 2 +- include/SDL_stdinc.h | 1 + premake/Linux/SDL_config_premake.h | 2 +- premake/MinGW/SDL_config_premake.h | 2 +- premake/VisualC/VS2008/SDL_config_premake.h | 2 +- premake/VisualC/VS2010/SDL_config_premake.h | 2 +- premake/VisualC/VS2012/SDL_config_premake.h | 2 +- premake/Xcode-iOS/SDL_config_premake.h | 2 +- premake/Xcode/Xcode3/SDL_config_premake.h | 2 +- premake/Xcode/Xcode4/SDL_config_premake.h | 2 +- premake/config/SDL_config_cygwin.template.h | 2 +- premake/config/SDL_config_iphoneos.template.h | 2 +- premake/config/SDL_config_linux.template.h | 2 +- premake/config/SDL_config_macosx.template.h | 2 +- premake/config/SDL_config_windows.template.h | 2 +- src/stdlib/SDL_string.c | 29 ++++++++++--------- 27 files changed, 44 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb90299fc1..30cbaa4972 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -503,13 +503,14 @@ if(LIBC) check_c_source_compiles("#include #include int main() { }" HAVE_MPROTECT) + # FIXME: we don't care if you have snprintf, etc, any more. We only care if you have vsnprintf. Clean this up. foreach(_FN strtod malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove memcmp strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp - sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp + vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname ) string(TOUPPER ${_FN} _UPPER) diff --git a/configure b/configure index 9f88235cce..45c32cc3e2 100755 --- a/configure +++ b/configure @@ -16581,7 +16581,7 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - for ac_func in malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname + for ac_func in malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.in b/configure.in index f0d5f49a9a..423620a22c 100644 --- a/configure.in +++ b/configure.in @@ -268,7 +268,8 @@ if test x$enable_libc = xyes; then AC_DEFINE(HAVE_MPROTECT, 1, [ ]) ]), ) - AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp sscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname) + dnl FIXME: we don't care if you have snprintf, etc, any more. We only care if you have vsnprintf. Clean this up. + AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname) AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"]) AC_CHECK_FUNCS(atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt) diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index 66a530b802..d0b025d4d5 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -124,7 +124,7 @@ #cmakedefine HAVE_STRCASECMP 1 #cmakedefine HAVE__STRNICMP 1 #cmakedefine HAVE_STRNCASECMP 1 -#cmakedefine HAVE_SSCANF 1 +#cmakedefine HAVE_VSSCANF 1 #cmakedefine HAVE_SNPRINTF 1 #cmakedefine HAVE_VSNPRINTF 1 #cmakedefine HAVE_M_PI 1 diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index c79dca89af..e96bdfaa15 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -128,6 +128,7 @@ #undef HAVE__STRNICMP #undef HAVE_STRNCASECMP #undef HAVE_SSCANF +#undef HAVE_VSSCANF #undef HAVE_SNPRINTF #undef HAVE_VSNPRINTF #undef HAVE_M_PI diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h index 2ed65d59bb..b0c99fc847 100644 --- a/include/SDL_config_android.h +++ b/include/SDL_config_android.h @@ -81,7 +81,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/include/SDL_config_iphoneos.h b/include/SDL_config_iphoneos.h index ae8a12bd83..abe18f14c6 100644 --- a/include/SDL_config_iphoneos.h +++ b/include/SDL_config_iphoneos.h @@ -79,7 +79,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h index 7825e702c6..b89b5534bf 100644 --- a/include/SDL_config_macosx.h +++ b/include/SDL_config_macosx.h @@ -82,7 +82,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 diff --git a/include/SDL_config_pandora.h b/include/SDL_config_pandora.h index 4bfad4861d..eab66cb400 100644 --- a/include/SDL_config_pandora.h +++ b/include/SDL_config_pandora.h @@ -81,7 +81,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/include/SDL_config_psp.h b/include/SDL_config_psp.h index 989f7d8c72..a62477d362 100644 --- a/include/SDL_config_psp.h +++ b/include/SDL_config_psp.h @@ -79,7 +79,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/include/SDL_config_windows.h b/include/SDL_config_windows.h index aa2f984510..167e26a670 100644 --- a/include/SDL_config_windows.h +++ b/include/SDL_config_windows.h @@ -132,7 +132,7 @@ typedef unsigned int uintptr_t; #define HAVE_SQRT 1 #if _MSC_VER >= 1800 #define HAVE_STRTOLL 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_COPYSIGN 1 #define HAVE_SCALBN 1 #endif diff --git a/include/SDL_config_wiz.h b/include/SDL_config_wiz.h index 9be04d92a9..149446e572 100644 --- a/include/SDL_config_wiz.h +++ b/include/SDL_config_wiz.h @@ -75,7 +75,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index 9a421ba63d..2a21714940 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -331,6 +331,7 @@ extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, const char *fmt, ...); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); extern DECLSPEC int SDLCALL SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...); extern DECLSPEC int SDLCALL SDL_vsnprintf(char *text, size_t maxlen, const char *fmt, va_list ap); diff --git a/premake/Linux/SDL_config_premake.h b/premake/Linux/SDL_config_premake.h index dfb017ab8e..40727f13f0 100644 --- a/premake/Linux/SDL_config_premake.h +++ b/premake/Linux/SDL_config_premake.h @@ -128,7 +128,7 @@ #define HAVE_STRCASECMP 1 /* #undef HAVE__STRNICMP */ #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI /**/ diff --git a/premake/MinGW/SDL_config_premake.h b/premake/MinGW/SDL_config_premake.h index c696dd20fb..86bc2502b5 100644 --- a/premake/MinGW/SDL_config_premake.h +++ b/premake/MinGW/SDL_config_premake.h @@ -118,7 +118,7 @@ typedef unsigned int uintptr_t; #define HAVE_STRNCMP 1 #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 diff --git a/premake/VisualC/VS2008/SDL_config_premake.h b/premake/VisualC/VS2008/SDL_config_premake.h index be158a4f00..005c9ac60f 100644 --- a/premake/VisualC/VS2008/SDL_config_premake.h +++ b/premake/VisualC/VS2008/SDL_config_premake.h @@ -118,7 +118,7 @@ typedef unsigned int uintptr_t; #define HAVE_STRNCMP 1 #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 diff --git a/premake/VisualC/VS2010/SDL_config_premake.h b/premake/VisualC/VS2010/SDL_config_premake.h index be158a4f00..005c9ac60f 100644 --- a/premake/VisualC/VS2010/SDL_config_premake.h +++ b/premake/VisualC/VS2010/SDL_config_premake.h @@ -118,7 +118,7 @@ typedef unsigned int uintptr_t; #define HAVE_STRNCMP 1 #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 diff --git a/premake/VisualC/VS2012/SDL_config_premake.h b/premake/VisualC/VS2012/SDL_config_premake.h index be158a4f00..005c9ac60f 100644 --- a/premake/VisualC/VS2012/SDL_config_premake.h +++ b/premake/VisualC/VS2012/SDL_config_premake.h @@ -118,7 +118,7 @@ typedef unsigned int uintptr_t; #define HAVE_STRNCMP 1 #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 diff --git a/premake/Xcode-iOS/SDL_config_premake.h b/premake/Xcode-iOS/SDL_config_premake.h index bc3e083280..fc4478a674 100644 --- a/premake/Xcode-iOS/SDL_config_premake.h +++ b/premake/Xcode-iOS/SDL_config_premake.h @@ -79,7 +79,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/premake/Xcode/Xcode3/SDL_config_premake.h b/premake/Xcode/Xcode3/SDL_config_premake.h index cb1725a275..1aeefc3d14 100644 --- a/premake/Xcode/Xcode3/SDL_config_premake.h +++ b/premake/Xcode/Xcode3/SDL_config_premake.h @@ -85,7 +85,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 diff --git a/premake/Xcode/Xcode4/SDL_config_premake.h b/premake/Xcode/Xcode4/SDL_config_premake.h index cb1725a275..1aeefc3d14 100644 --- a/premake/Xcode/Xcode4/SDL_config_premake.h +++ b/premake/Xcode/Xcode4/SDL_config_premake.h @@ -85,7 +85,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 diff --git a/premake/config/SDL_config_cygwin.template.h b/premake/config/SDL_config_cygwin.template.h index 1beb3ae535..d90122ce83 100644 --- a/premake/config/SDL_config_cygwin.template.h +++ b/premake/config/SDL_config_cygwin.template.h @@ -124,7 +124,7 @@ #define HAVE_STRCASECMP 1 /* #undef HAVE__STRNICMP */ #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI /**/ diff --git a/premake/config/SDL_config_iphoneos.template.h b/premake/config/SDL_config_iphoneos.template.h index 6383cabbb8..6450173567 100644 --- a/premake/config/SDL_config_iphoneos.template.h +++ b/premake/config/SDL_config_iphoneos.template.h @@ -79,7 +79,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 diff --git a/premake/config/SDL_config_linux.template.h b/premake/config/SDL_config_linux.template.h index 5a58f7d168..5897057ea8 100644 --- a/premake/config/SDL_config_linux.template.h +++ b/premake/config/SDL_config_linux.template.h @@ -128,7 +128,7 @@ #define HAVE_STRCASECMP 1 /* #undef HAVE__STRNICMP */ #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI /**/ diff --git a/premake/config/SDL_config_macosx.template.h b/premake/config/SDL_config_macosx.template.h index a22843f556..654b2c1df6 100644 --- a/premake/config/SDL_config_macosx.template.h +++ b/premake/config/SDL_config_macosx.template.h @@ -85,7 +85,7 @@ #define HAVE_STRNCMP 1 #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 diff --git a/premake/config/SDL_config_windows.template.h b/premake/config/SDL_config_windows.template.h index 915ac89d21..04c0b48e6b 100644 --- a/premake/config/SDL_config_windows.template.h +++ b/premake/config/SDL_config_windows.template.h @@ -118,7 +118,7 @@ typedef unsigned int uintptr_t; #define HAVE_STRNCMP 1 #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 -#define HAVE_SSCANF 1 +#define HAVE_VSSCANF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 #define HAVE_ATAN2 1 diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index f923ae7cb9..d291f38280 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -43,7 +43,7 @@ static int UTF8_TrailingBytes(unsigned char c) return 0; } -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOL) +#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOL) static size_t SDL_ScanLong(const char *text, int radix, long *valuep) { @@ -84,7 +84,7 @@ SDL_ScanLong(const char *text, int radix, long *valuep) } #endif -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD) +#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOUL) || !defined(HAVE_STRTOD) static size_t SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep) { @@ -116,7 +116,7 @@ SDL_ScanUnsignedLong(const char *text, int radix, unsigned long *valuep) } #endif -#ifndef HAVE_SSCANF +#ifndef HAVE_VSSCANF static size_t SDL_ScanUintPtrT(const char *text, int radix, uintptr_t * valuep) { @@ -148,7 +148,7 @@ SDL_ScanUintPtrT(const char *text, int radix, uintptr_t * valuep) } #endif -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOLL) +#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOLL) static size_t SDL_ScanLongLong(const char *text, int radix, Sint64 * valuep) { @@ -189,7 +189,7 @@ SDL_ScanLongLong(const char *text, int radix, Sint64 * valuep) } #endif -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOULL) +#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOULL) static size_t SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 * valuep) { @@ -221,7 +221,7 @@ SDL_ScanUnsignedLongLong(const char *text, int radix, Uint64 * valuep) } #endif -#if !defined(HAVE_SSCANF) || !defined(HAVE_STRTOD) +#if !defined(HAVE_VSSCANF) || !defined(HAVE_STRTOD) static size_t SDL_ScanFloat(const char *text, double *valuep) { @@ -967,25 +967,29 @@ SDL_strncasecmp(const char *str1, const char *str2, size_t maxlen) #endif /* HAVE_STRNCASECMP */ } -#ifdef HAVE_SSCANF int SDL_sscanf(const char *text, const char *fmt, ...) { int rc; va_list ap; va_start(ap, fmt); - rc = vsscanf(text, fmt, ap); + rc = SDL_vsscanf(text, fmt, ap); va_end(ap); return rc; } + +#ifdef HAVE_VSSCANF +int +SDL_vsscanf(const char *text, const char *fmt, va_list ap) +{ + return vsscanf(text, fmt, ap); +} #else int -SDL_sscanf(const char *text, const char *fmt, ...) +SDL_vsscanf(const char *text, const char *fmt, ...) { - va_list ap; int retval = 0; - va_start(ap, fmt); while (*fmt) { if (*fmt == ' ') { while (SDL_isspace((unsigned char) *text)) { @@ -1239,11 +1243,10 @@ SDL_sscanf(const char *text, const char *fmt, ...) /* Text didn't match format specifier */ break; } - va_end(ap); return retval; } -#endif /* HAVE_SSCANF */ +#endif /* HAVE_VSSCANF */ int SDL_snprintf(char *text, size_t maxlen, const char *fmt, ...) From 1e6421b1a31db1cac28cf61a1028d7df73bf9e9c Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 24 Nov 2013 23:36:15 -0500 Subject: [PATCH 195/402] We don't need to check for snprintf() anymore, we don't use it. SDL_snprintf() is built on vsnprintf() where available. --- CMakeLists.txt | 3 +-- configure.in | 3 +-- include/SDL_config.h.cmake | 1 - include/SDL_config_android.h | 1 - include/SDL_config_iphoneos.h | 1 - include/SDL_config_macosx.h | 1 - include/SDL_config_pandora.h | 1 - include/SDL_config_psp.h | 1 - include/SDL_config_wiz.h | 1 - premake/Linux/SDL_config_premake.h | 1 - premake/Xcode-iOS/SDL_config_premake.h | 1 - premake/Xcode/Xcode3/SDL_config_premake.h | 1 - premake/Xcode/Xcode4/SDL_config_premake.h | 1 - premake/config/SDL_config_cygwin.template.h | 1 - premake/config/SDL_config_iphoneos.template.h | 1 - premake/config/SDL_config_linux.template.h | 1 - premake/config/SDL_config_macosx.template.h | 1 - 17 files changed, 2 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 30cbaa4972..bef514cb89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -503,14 +503,13 @@ if(LIBC) check_c_source_compiles("#include #include int main() { }" HAVE_MPROTECT) - # FIXME: we don't care if you have snprintf, etc, any more. We only care if you have vsnprintf. Clean this up. foreach(_FN strtod malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove memcmp strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp - vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp + vsscanf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname ) string(TOUPPER ${_FN} _UPPER) diff --git a/configure.in b/configure.in index 423620a22c..5a5f7da1e6 100644 --- a/configure.in +++ b/configure.in @@ -268,8 +268,7 @@ if test x$enable_libc = xyes; then AC_DEFINE(HAVE_MPROTECT, 1, [ ]) ]), ) - dnl FIXME: we don't care if you have snprintf, etc, any more. We only care if you have vsnprintf. Clean this up. - AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname) + AC_CHECK_FUNCS(malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname) AC_CHECK_LIB(m, pow, [LIBS="$LIBS -lm"; EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lm"]) AC_CHECK_FUNCS(atan atan2 acos asin ceil copysign cos cosf fabs floor log pow scalbn sin sinf sqrt) diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index d0b025d4d5..e4f9f99fbb 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -125,7 +125,6 @@ #cmakedefine HAVE__STRNICMP 1 #cmakedefine HAVE_STRNCASECMP 1 #cmakedefine HAVE_VSSCANF 1 -#cmakedefine HAVE_SNPRINTF 1 #cmakedefine HAVE_VSNPRINTF 1 #cmakedefine HAVE_M_PI 1 #cmakedefine HAVE_ATAN 1 diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h index b0c99fc847..d9bd9d1c1f 100644 --- a/include/SDL_config_android.h +++ b/include/SDL_config_android.h @@ -82,7 +82,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 diff --git a/include/SDL_config_iphoneos.h b/include/SDL_config_iphoneos.h index abe18f14c6..348df13c28 100644 --- a/include/SDL_config_iphoneos.h +++ b/include/SDL_config_iphoneos.h @@ -80,7 +80,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h index b89b5534bf..1db36464aa 100644 --- a/include/SDL_config_macosx.h +++ b/include/SDL_config_macosx.h @@ -83,7 +83,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 diff --git a/include/SDL_config_pandora.h b/include/SDL_config_pandora.h index eab66cb400..4a95de78b2 100644 --- a/include/SDL_config_pandora.h +++ b/include/SDL_config_pandora.h @@ -82,7 +82,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_CEIL 1 diff --git a/include/SDL_config_psp.h b/include/SDL_config_psp.h index a62477d362..ca7cac603a 100644 --- a/include/SDL_config_psp.h +++ b/include/SDL_config_psp.h @@ -80,7 +80,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 diff --git a/include/SDL_config_wiz.h b/include/SDL_config_wiz.h index 149446e572..acfe4fcfd3 100644 --- a/include/SDL_config_wiz.h +++ b/include/SDL_config_wiz.h @@ -76,7 +76,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_CEIL 1 diff --git a/premake/Linux/SDL_config_premake.h b/premake/Linux/SDL_config_premake.h index 40727f13f0..a611c2bb1c 100644 --- a/premake/Linux/SDL_config_premake.h +++ b/premake/Linux/SDL_config_premake.h @@ -129,7 +129,6 @@ /* #undef HAVE__STRNICMP */ #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI /**/ #define HAVE_ATAN 1 diff --git a/premake/Xcode-iOS/SDL_config_premake.h b/premake/Xcode-iOS/SDL_config_premake.h index fc4478a674..e885661fd8 100644 --- a/premake/Xcode-iOS/SDL_config_premake.h +++ b/premake/Xcode-iOS/SDL_config_premake.h @@ -80,7 +80,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 diff --git a/premake/Xcode/Xcode3/SDL_config_premake.h b/premake/Xcode/Xcode3/SDL_config_premake.h index 1aeefc3d14..77dc90eb36 100644 --- a/premake/Xcode/Xcode3/SDL_config_premake.h +++ b/premake/Xcode/Xcode3/SDL_config_premake.h @@ -86,7 +86,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 diff --git a/premake/Xcode/Xcode4/SDL_config_premake.h b/premake/Xcode/Xcode4/SDL_config_premake.h index 1aeefc3d14..77dc90eb36 100644 --- a/premake/Xcode/Xcode4/SDL_config_premake.h +++ b/premake/Xcode/Xcode4/SDL_config_premake.h @@ -86,7 +86,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 diff --git a/premake/config/SDL_config_cygwin.template.h b/premake/config/SDL_config_cygwin.template.h index d90122ce83..9e3f9099d1 100644 --- a/premake/config/SDL_config_cygwin.template.h +++ b/premake/config/SDL_config_cygwin.template.h @@ -125,7 +125,6 @@ /* #undef HAVE__STRNICMP */ #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI /**/ #define HAVE_ATAN 1 diff --git a/premake/config/SDL_config_iphoneos.template.h b/premake/config/SDL_config_iphoneos.template.h index 6450173567..7aa74bdc99 100644 --- a/premake/config/SDL_config_iphoneos.template.h +++ b/premake/config/SDL_config_iphoneos.template.h @@ -80,7 +80,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 #define HAVE_ATAN 1 diff --git a/premake/config/SDL_config_linux.template.h b/premake/config/SDL_config_linux.template.h index 5897057ea8..0e2477912a 100644 --- a/premake/config/SDL_config_linux.template.h +++ b/premake/config/SDL_config_linux.template.h @@ -129,7 +129,6 @@ /* #undef HAVE__STRNICMP */ #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI /**/ #define HAVE_ATAN 1 diff --git a/premake/config/SDL_config_macosx.template.h b/premake/config/SDL_config_macosx.template.h index 654b2c1df6..c53440a4ed 100644 --- a/premake/config/SDL_config_macosx.template.h +++ b/premake/config/SDL_config_macosx.template.h @@ -86,7 +86,6 @@ #define HAVE_STRCASECMP 1 #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 -#define HAVE_SNPRINTF 1 #define HAVE_VSNPRINTF 1 #define HAVE_CEIL 1 #define HAVE_COPYSIGN 1 From 67606b7780c842b1fed95f9e276e879003eb15ba Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 25 Nov 2013 00:11:52 -0500 Subject: [PATCH 196/402] Regenerate the configure scripts. --- configure | 21 +++------------------ test/configure | 3 ++- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/configure b/configure index 45c32cc3e2..a5ce2e388b 100755 --- a/configure +++ b/configure @@ -16581,7 +16581,7 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi - for ac_func in malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf snprintf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname + for ac_func in malloc calloc realloc free getenv setenv putenv unsetenv qsort abs bcopy memset memcpy memmove strlen strlcpy strlcat strdup _strrev _strupr _strlwr strchr strrchr strstr itoa _ltoa _uitoa _ultoa strtol strtoul _i64toa _ui64toa strtoll strtoull atoi atof strcmp strncmp _stricmp strcasecmp _strnicmp strncasecmp vsscanf vsnprintf fseeko fseeko64 sigaction setjmp nanosleep sysconf sysctlbyname do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -16792,6 +16792,7 @@ SOURCES="$SOURCES $srcdir/src/*.c" SOURCES="$SOURCES $srcdir/src/atomic/*.c" SOURCES="$SOURCES $srcdir/src/audio/*.c" SOURCES="$SOURCES $srcdir/src/cpuinfo/*.c" +SOURCES="$SOURCES $srcdir/src/dynapi/*.c" SOURCES="$SOURCES $srcdir/src/events/*.c" SOURCES="$SOURCES $srcdir/src/file/*.c" SOURCES="$SOURCES $srcdir/src/haptic/*.c" @@ -19437,11 +19438,6 @@ fi fi if test x$have_x = xyes; then - # Only allow dynamically loaded X11 if the X11 function pointers - # will not end up in the global namespace, which causes problems - # with other libraries calling X11 functions. - x11_symbols_private=$have_gcc_fvisibility - # Check whether --enable-x11-shared was given. if test "${enable_x11_shared+set}" = set; then : enableval=$enable_x11_shared; @@ -19452,7 +19448,6 @@ fi case "$host" in *-*-darwin*) - x11_symbols_private=yes x11_lib='/usr/X11R6/lib/libX11.6.dylib' x11ext_lib='/usr/X11R6/lib/libXext.6.dylib' xcursor_lib='/usr/X11R6/lib/libXcursor.1.dylib' @@ -19520,7 +19515,7 @@ $as_echo "#define SDL_VIDEO_DRIVER_X11 1" >>confdefs.h SDL_CFLAGS="$SDL_CFLAGS $X_CFLAGS" if test x$enable_x11_shared = xmaybe; then - enable_x11_shared=$x11_symbols_private + enable_x11_shared=yes fi if test x$have_loadso != xyes && \ test x$enable_x11_shared = xyes; then @@ -19528,13 +19523,6 @@ $as_echo "#define SDL_VIDEO_DRIVER_X11 1" >>confdefs.h $as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic X11 loading" >&2;} enable_x11_shared=no fi - if test x$x11_symbols_private != xyes && \ - test x$enable_x11_shared = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading" >&5 -$as_echo "$as_me: WARNING: You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading" >&2;} - enable_x11_shared=no - fi - if test x$have_loadso = xyes && \ test x$enable_x11_shared = xyes && test x$x11_lib != x && test x$x11ext_lib != x; then echo "-- dynamic libX11 -> $x11_lib" @@ -22746,9 +22734,6 @@ $as_echo "#define SDL_FILESYSTEM_HAIKU 1" >>confdefs.h CheckOpenGLX11 CheckPTHREAD - # Good optimization on Mac OS X, yes... - EXTRA_CFLAGS="$EXTRA_CFLAGS -falign-loops=16" - # Need this or things might misbuild on a G3. EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL" diff --git a/test/configure b/test/configure index 14fb4d34d9..c4545ecb86 100755 --- a/test/configure +++ b/test/configure @@ -586,8 +586,8 @@ ac_subst_vars='LTLIBOBJS LIBOBJS SDL_TTF_LIB XLIB -GLESLIB GLES2LIB +GLESLIB GLLIB CPP XMKMF @@ -3913,6 +3913,7 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for TTF_Init in -lSDL2_ttf" >&5 $as_echo_n "checking for TTF_Init in -lSDL2_ttf... " >&6; } if ${ac_cv_lib_SDL2_ttf_TTF_Init+:} false; then : From eb362fb9ae95f85aaff9a3402ec6ef7632bb98f2 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 9 Dec 2013 13:30:35 -0500 Subject: [PATCH 197/402] Patched stdlib changes to compile on Windows. --- src/atomic/SDL_atomic.c | 4 +++- src/stdlib/SDL_getenv.c | 3 +-- src/stdlib/SDL_string.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/atomic/SDL_atomic.c b/src/atomic/SDL_atomic.c index 60d6f511be..265d0bd520 100644 --- a/src/atomic/SDL_atomic.c +++ b/src/atomic/SDL_atomic.c @@ -152,7 +152,9 @@ SDL_AtomicSet(SDL_atomic_t *a, int v) void* SDL_AtomicSetPtr(void **a, void *v) { -#ifdef HAVE_MSC_ATOMICS +#if defined(HAVE_MSC_ATOMICS) && (_M_IX86) + return (void *) _InterlockedExchange((long *)a, (long) v); +#elif defined(HAVE_MSC_ATOMICS) && (!_M_IX86) return _InterlockedExchangePointer(a, v); #elif defined(HAVE_GCC_ATOMICS) return __sync_lock_test_and_set(a, v); diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c index 10fa7c5c1b..55b93e39ec 100644 --- a/src/stdlib/SDL_getenv.c +++ b/src/stdlib/SDL_getenv.c @@ -26,13 +26,12 @@ #include "SDL_stdinc.h" -#if !defined(SDL_setenv) && defined(__WIN32__) +#if defined(__WIN32__) && (!defined(HAVE_SETENV) || !defined(HAVE_GETENV)) /* Note this isn't thread-safe! */ static char *SDL_envmem = NULL; /* Ugh, memory leak */ static size_t SDL_envmemlen = 0; #endif - /* Put a variable into the environment */ #if defined(HAVE_SETENV) int diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index d291f38280..be07ebb45b 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -986,7 +986,7 @@ SDL_vsscanf(const char *text, const char *fmt, va_list ap) } #else int -SDL_vsscanf(const char *text, const char *fmt, ...) +SDL_vsscanf(const char *text, const char *fmt, va_list ap) { int retval = 0; From f807f62f56da578eb5ef93cbde613726a98b9b3d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 24 Nov 2013 23:56:17 -0500 Subject: [PATCH 198/402] Make internal SDL sources include SDL_internal.h instead of SDL_config.h The new header will include SDL_config.h, but allows for other global stuff. --- src/SDL.c | 2 +- src/SDL_assert.c | 2 +- src/SDL_error.c | 2 +- src/SDL_error_c.h | 2 +- src/SDL_hints.c | 2 +- src/SDL_internal.h | 28 ++++++++++++++++++++++ src/SDL_log.c | 2 +- src/atomic/SDL_atomic.c | 2 +- src/atomic/SDL_spinlock.c | 2 +- src/audio/SDL_audio.c | 2 +- src/audio/SDL_audio_c.h | 2 +- src/audio/SDL_audiocvt.c | 2 +- src/audio/SDL_audiodev.c | 2 +- src/audio/SDL_audiodev_c.h | 2 +- src/audio/SDL_audiomem.h | 2 +- src/audio/SDL_audiotypecvt.c | 2 +- src/audio/SDL_mixer.c | 2 +- src/audio/SDL_sysaudio.h | 2 +- src/audio/SDL_wave.c | 2 +- src/audio/SDL_wave.h | 2 +- src/audio/alsa/SDL_alsa_audio.c | 2 +- src/audio/alsa/SDL_alsa_audio.h | 2 +- src/audio/android/SDL_androidaudio.c | 2 +- src/audio/android/SDL_androidaudio.h | 2 +- src/audio/arts/SDL_artsaudio.c | 2 +- src/audio/arts/SDL_artsaudio.h | 2 +- src/audio/bsd/SDL_bsdaudio.c | 2 +- src/audio/bsd/SDL_bsdaudio.h | 2 +- src/audio/coreaudio/SDL_coreaudio.c | 2 +- src/audio/coreaudio/SDL_coreaudio.h | 2 +- src/audio/directsound/SDL_directsound.c | 2 +- src/audio/directsound/SDL_directsound.h | 2 +- src/audio/disk/SDL_diskaudio.c | 2 +- src/audio/disk/SDL_diskaudio.h | 2 +- src/audio/dsp/SDL_dspaudio.c | 2 +- src/audio/dsp/SDL_dspaudio.h | 2 +- src/audio/dummy/SDL_dummyaudio.c | 2 +- src/audio/dummy/SDL_dummyaudio.h | 2 +- src/audio/esd/SDL_esdaudio.c | 2 +- src/audio/esd/SDL_esdaudio.h | 2 +- src/audio/fusionsound/SDL_fsaudio.c | 2 +- src/audio/fusionsound/SDL_fsaudio.h | 2 +- src/audio/haiku/SDL_haikuaudio.cc | 2 +- src/audio/haiku/SDL_haikuaudio.h | 2 +- src/audio/nas/SDL_nasaudio.c | 2 +- src/audio/nas/SDL_nasaudio.h | 2 +- src/audio/paudio/SDL_paudio.c | 2 +- src/audio/paudio/SDL_paudio.h | 2 +- src/audio/pulseaudio/SDL_pulseaudio.c | 2 +- src/audio/pulseaudio/SDL_pulseaudio.h | 2 +- src/audio/qsa/SDL_qsa_audio.c | 2 +- src/audio/qsa/SDL_qsa_audio.h | 2 +- src/audio/sdlgenaudiocvt.pl | 2 +- src/audio/sndio/SDL_sndioaudio.c | 2 +- src/audio/sndio/SDL_sndioaudio.h | 2 +- src/audio/sun/SDL_sunaudio.c | 2 +- src/audio/sun/SDL_sunaudio.h | 2 +- src/audio/winmm/SDL_winmm.c | 2 +- src/audio/winmm/SDL_winmm.h | 2 +- src/audio/xaudio2/SDL_xaudio2.c | 2 +- src/core/android/SDL_android.c | 2 +- src/core/android/SDL_android.h | 2 +- src/core/linux/SDL_evdev.c | 2 +- src/core/linux/SDL_evdev.h | 2 +- src/core/linux/SDL_udev.h | 2 +- src/core/windows/SDL_windows.c | 2 +- src/cpuinfo/SDL_cpuinfo.c | 2 +- src/events/SDL_clipboardevents.c | 2 +- src/events/SDL_clipboardevents_c.h | 2 +- src/events/SDL_dropevents.c | 2 +- src/events/SDL_dropevents_c.h | 2 +- src/events/SDL_events.c | 2 +- src/events/SDL_events_c.h | 2 +- src/events/SDL_gesture.c | 2 +- src/events/SDL_gesture_c.h | 2 +- src/events/SDL_keyboard.c | 2 +- src/events/SDL_keyboard_c.h | 2 +- src/events/SDL_mouse.c | 2 +- src/events/SDL_mouse_c.h | 2 +- src/events/SDL_quit.c | 2 +- src/events/SDL_sysevents.h | 2 +- src/events/SDL_touch.c | 2 +- src/events/SDL_touch_c.h | 2 +- src/events/SDL_windowevents.c | 2 +- src/events/SDL_windowevents_c.h | 2 +- src/file/SDL_rwops.c | 2 +- src/filesystem/cocoa/SDL_sysfilesystem.m | 2 +- src/filesystem/dummy/SDL_sysfilesystem.c | 2 +- src/filesystem/haiku/SDL_sysfilesystem.cc | 2 +- src/filesystem/unix/SDL_sysfilesystem.c | 2 +- src/filesystem/windows/SDL_sysfilesystem.c | 2 +- src/haptic/SDL_haptic.c | 2 +- src/haptic/SDL_syshaptic.h | 2 +- src/haptic/darwin/SDL_syshaptic.c | 2 +- src/haptic/dummy/SDL_syshaptic.c | 2 +- src/haptic/linux/SDL_syshaptic.c | 2 +- src/haptic/windows/SDL_syshaptic.c | 2 +- src/joystick/SDL_gamecontroller.c | 2 +- src/joystick/SDL_gamecontrollerdb.h | 2 +- src/joystick/SDL_joystick.c | 2 +- src/joystick/SDL_joystick_c.h | 2 +- src/joystick/SDL_sysjoystick.h | 2 +- src/joystick/android/SDL_sysjoystick.c | 2 +- src/joystick/bsd/SDL_sysjoystick.c | 2 +- src/joystick/darwin/SDL_sysjoystick.c | 2 +- src/joystick/darwin/SDL_sysjoystick_c.h | 2 +- src/joystick/dummy/SDL_sysjoystick.c | 2 +- src/joystick/haiku/SDL_haikujoystick.cc | 2 +- src/joystick/iphoneos/SDL_sysjoystick.m | 2 +- src/joystick/linux/SDL_sysjoystick.c | 2 +- src/joystick/windows/SDL_dxjoystick.c | 2 +- src/joystick/windows/SDL_dxjoystick_c.h | 2 +- src/joystick/windows/SDL_mmjoystick.c | 2 +- src/libm/math_libm.h | 2 +- src/loadso/dlopen/SDL_sysloadso.c | 2 +- src/loadso/dummy/SDL_sysloadso.c | 2 +- src/loadso/haiku/SDL_sysloadso.c | 2 +- src/loadso/windows/SDL_sysloadso.c | 2 +- src/main/android/SDL_android_main.c | 2 +- src/main/dummy/SDL_dummy_main.c | 2 +- src/main/haiku/SDL_BApp.h | 2 +- src/main/haiku/SDL_BeApp.cc | 2 +- src/main/haiku/SDL_BeApp.h | 2 +- src/power/SDL_power.c | 2 +- src/power/android/SDL_syspower.c | 2 +- src/power/haiku/SDL_syspower.c | 2 +- src/power/linux/SDL_syspower.c | 2 +- src/power/macosx/SDL_syspower.c | 2 +- src/power/psp/SDL_syspower.c | 2 +- src/power/uikit/SDL_syspower.h | 2 +- src/power/uikit/SDL_syspower.m | 2 +- src/power/windows/SDL_syspower.c | 2 +- src/render/SDL_render.c | 2 +- src/render/SDL_sysrender.h | 2 +- src/render/SDL_yuv_mmx.c | 2 +- src/render/SDL_yuv_sw.c | 2 +- src/render/SDL_yuv_sw_c.h | 2 +- src/render/direct3d/SDL_render_d3d.c | 2 +- src/render/opengl/SDL_render_gl.c | 2 +- src/render/opengl/SDL_shaders_gl.c | 2 +- src/render/opengl/SDL_shaders_gl.h | 2 +- src/render/opengles/SDL_render_gles.c | 2 +- src/render/opengles2/SDL_render_gles2.c | 2 +- src/render/opengles2/SDL_shaders_gles2.c | 2 +- src/render/opengles2/SDL_shaders_gles2.h | 2 +- src/render/psp/SDL_render_psp.c | 2 +- src/render/software/SDL_blendfillrect.c | 2 +- src/render/software/SDL_blendfillrect.h | 2 +- src/render/software/SDL_blendline.c | 2 +- src/render/software/SDL_blendline.h | 2 +- src/render/software/SDL_blendpoint.c | 2 +- src/render/software/SDL_blendpoint.h | 2 +- src/render/software/SDL_draw.h | 2 +- src/render/software/SDL_drawline.c | 2 +- src/render/software/SDL_drawline.h | 2 +- src/render/software/SDL_drawpoint.c | 2 +- src/render/software/SDL_drawpoint.h | 2 +- src/render/software/SDL_render_sw.c | 2 +- src/render/software/SDL_rotate.c | 2 +- src/stdlib/SDL_getenv.c | 2 +- src/stdlib/SDL_iconv.c | 2 +- src/stdlib/SDL_malloc.c | 2 +- src/stdlib/SDL_qsort.c | 2 +- src/stdlib/SDL_stdlib.c | 2 +- src/stdlib/SDL_string.c | 2 +- src/thread/SDL_systhread.h | 2 +- src/thread/SDL_thread.c | 2 +- src/thread/SDL_thread_c.h | 2 +- src/thread/generic/SDL_syscond.c | 2 +- src/thread/generic/SDL_sysmutex.c | 2 +- src/thread/generic/SDL_sysmutex_c.h | 2 +- src/thread/generic/SDL_syssem.c | 2 +- src/thread/generic/SDL_systhread.c | 2 +- src/thread/generic/SDL_systhread_c.h | 2 +- src/thread/generic/SDL_systls.c | 2 +- src/thread/psp/SDL_syscond.c | 2 +- src/thread/psp/SDL_sysmutex.c | 2 +- src/thread/psp/SDL_sysmutex_c.h | 2 +- src/thread/pthread/SDL_syscond.c | 2 +- src/thread/pthread/SDL_sysmutex.c | 2 +- src/thread/pthread/SDL_sysmutex_c.h | 2 +- src/thread/pthread/SDL_syssem.c | 2 +- src/thread/pthread/SDL_systhread.c | 2 +- src/thread/pthread/SDL_systhread_c.h | 2 +- src/thread/pthread/SDL_systls.c | 2 +- src/thread/windows/SDL_sysmutex.c | 2 +- src/thread/windows/SDL_syssem.c | 2 +- src/thread/windows/SDL_systhread.c | 2 +- src/thread/windows/SDL_systhread_c.h | 2 +- src/thread/windows/SDL_systls.c | 2 +- src/timer/SDL_timer.c | 2 +- src/timer/SDL_timer_c.h | 2 +- src/timer/dummy/SDL_systimer.c | 2 +- src/timer/haiku/SDL_systimer.c | 2 +- src/timer/unix/SDL_systimer.c | 2 +- src/timer/windows/SDL_systimer.c | 2 +- src/video/SDL_RLEaccel.c | 2 +- src/video/SDL_RLEaccel_c.h | 2 +- src/video/SDL_blit.c | 2 +- src/video/SDL_blit.h | 2 +- src/video/SDL_blit_0.c | 2 +- src/video/SDL_blit_1.c | 2 +- src/video/SDL_blit_A.c | 2 +- src/video/SDL_blit_N.c | 2 +- src/video/SDL_blit_auto.c | 2 +- src/video/SDL_blit_auto.h | 2 +- src/video/SDL_blit_copy.c | 2 +- src/video/SDL_blit_slow.c | 2 +- src/video/SDL_blit_slow.h | 2 +- src/video/SDL_bmp.c | 2 +- src/video/SDL_clipboard.c | 2 +- src/video/SDL_egl.c | 2 +- src/video/SDL_egl_c.h | 2 +- src/video/SDL_fillrect.c | 2 +- src/video/SDL_pixels.c | 2 +- src/video/SDL_pixels_c.h | 2 +- src/video/SDL_rect.c | 2 +- src/video/SDL_rect_c.h | 2 +- src/video/SDL_shape.c | 2 +- src/video/SDL_shape_internals.h | 2 +- src/video/SDL_stretch.c | 2 +- src/video/SDL_surface.c | 2 +- src/video/SDL_sysvideo.h | 2 +- src/video/SDL_video.c | 2 +- src/video/android/SDL_androidclipboard.c | 2 +- src/video/android/SDL_androidclipboard.h | 2 +- src/video/android/SDL_androidevents.c | 2 +- src/video/android/SDL_androidevents.h | 2 +- src/video/android/SDL_androidgl.c | 2 +- src/video/android/SDL_androidkeyboard.c | 2 +- src/video/android/SDL_androidkeyboard.h | 2 +- src/video/android/SDL_androidtouch.c | 2 +- src/video/android/SDL_androidtouch.h | 2 +- src/video/android/SDL_androidvideo.c | 2 +- src/video/android/SDL_androidvideo.h | 2 +- src/video/android/SDL_androidwindow.c | 2 +- src/video/android/SDL_androidwindow.h | 2 +- src/video/cocoa/SDL_cocoaclipboard.h | 2 +- src/video/cocoa/SDL_cocoaclipboard.m | 2 +- src/video/cocoa/SDL_cocoaevents.h | 2 +- src/video/cocoa/SDL_cocoaevents.m | 2 +- src/video/cocoa/SDL_cocoakeyboard.h | 2 +- src/video/cocoa/SDL_cocoakeyboard.m | 2 +- src/video/cocoa/SDL_cocoamessagebox.h | 2 +- src/video/cocoa/SDL_cocoamessagebox.m | 2 +- src/video/cocoa/SDL_cocoamodes.h | 2 +- src/video/cocoa/SDL_cocoamodes.m | 2 +- src/video/cocoa/SDL_cocoamouse.h | 2 +- src/video/cocoa/SDL_cocoamouse.m | 2 +- src/video/cocoa/SDL_cocoamousetap.h | 2 +- src/video/cocoa/SDL_cocoamousetap.m | 2 +- src/video/cocoa/SDL_cocoaopengl.h | 2 +- src/video/cocoa/SDL_cocoaopengl.m | 2 +- src/video/cocoa/SDL_cocoashape.h | 2 +- src/video/cocoa/SDL_cocoashape.m | 2 +- src/video/cocoa/SDL_cocoavideo.h | 2 +- src/video/cocoa/SDL_cocoavideo.m | 2 +- src/video/cocoa/SDL_cocoawindow.h | 2 +- src/video/cocoa/SDL_cocoawindow.m | 2 +- src/video/directfb/SDL_DirectFB_WM.c | 2 +- src/video/directfb/SDL_DirectFB_dyn.c | 2 +- src/video/directfb/SDL_DirectFB_events.c | 2 +- src/video/directfb/SDL_DirectFB_modes.c | 2 +- src/video/directfb/SDL_DirectFB_mouse.c | 2 +- src/video/directfb/SDL_DirectFB_opengl.c | 2 +- src/video/directfb/SDL_DirectFB_render.c | 2 +- src/video/directfb/SDL_DirectFB_shape.c | 2 +- src/video/directfb/SDL_DirectFB_video.c | 4 ++-- src/video/directfb/SDL_DirectFB_video.h | 2 +- src/video/directfb/SDL_DirectFB_window.c | 2 +- src/video/dummy/SDL_nullevents.c | 2 +- src/video/dummy/SDL_nullevents_c.h | 2 +- src/video/dummy/SDL_nullframebuffer.c | 2 +- src/video/dummy/SDL_nullframebuffer_c.h | 2 +- src/video/dummy/SDL_nullvideo.c | 2 +- src/video/dummy/SDL_nullvideo.h | 2 +- src/video/haiku/SDL_BWin.h | 2 +- src/video/haiku/SDL_bclipboard.cc | 2 +- src/video/haiku/SDL_bclipboard.h | 2 +- src/video/haiku/SDL_bevents.cc | 2 +- src/video/haiku/SDL_bframebuffer.cc | 2 +- src/video/haiku/SDL_bkeyboard.cc | 2 +- src/video/haiku/SDL_bmodes.cc | 2 +- src/video/haiku/SDL_bopengl.cc | 2 +- src/video/haiku/SDL_bvideo.cc | 2 +- src/video/haiku/SDL_bwindow.cc | 2 +- src/video/pandora/SDL_pandora.c | 2 +- src/video/pandora/SDL_pandora.h | 2 +- src/video/pandora/SDL_pandora_events.c | 2 +- src/video/pandora/SDL_pandora_events.h | 2 +- src/video/psp/SDL_pspvideo.c | 2 +- src/video/psp/SDL_pspvideo.h | 2 +- src/video/raspberry/SDL_rpievents.c | 2 +- src/video/raspberry/SDL_rpimouse.c | 2 +- src/video/raspberry/SDL_rpiopengles.c | 2 +- src/video/raspberry/SDL_rpiopengles.h | 2 +- src/video/raspberry/SDL_rpivideo.c | 2 +- src/video/raspberry/SDL_rpivideo.h | 2 +- src/video/sdlgenblit.pl | 2 +- src/video/uikit/SDL_uikitappdelegate.m | 2 +- src/video/uikit/SDL_uikitevents.m | 2 +- src/video/uikit/SDL_uikitmessagebox.h | 2 +- src/video/uikit/SDL_uikitmessagebox.m | 2 +- src/video/uikit/SDL_uikitmodes.h | 2 +- src/video/uikit/SDL_uikitmodes.m | 2 +- src/video/uikit/SDL_uikitopengles.m | 2 +- src/video/uikit/SDL_uikitopenglview.m | 2 +- src/video/uikit/SDL_uikitvideo.m | 2 +- src/video/uikit/SDL_uikitview.m | 2 +- src/video/uikit/SDL_uikitviewcontroller.m | 2 +- src/video/uikit/SDL_uikitwindow.m | 2 +- src/video/windows/SDL_windowsclipboard.c | 2 +- src/video/windows/SDL_windowsclipboard.h | 2 +- src/video/windows/SDL_windowsevents.c | 2 +- src/video/windows/SDL_windowsevents.h | 2 +- src/video/windows/SDL_windowsframebuffer.c | 2 +- src/video/windows/SDL_windowsframebuffer.h | 2 +- src/video/windows/SDL_windowskeyboard.c | 2 +- src/video/windows/SDL_windowskeyboard.h | 2 +- src/video/windows/SDL_windowsmessagebox.c | 2 +- src/video/windows/SDL_windowsmessagebox.h | 2 +- src/video/windows/SDL_windowsmodes.c | 2 +- src/video/windows/SDL_windowsmodes.h | 2 +- src/video/windows/SDL_windowsmouse.c | 2 +- src/video/windows/SDL_windowsmouse.h | 2 +- src/video/windows/SDL_windowsopengl.c | 2 +- src/video/windows/SDL_windowsopengl.h | 2 +- src/video/windows/SDL_windowsopengles.c | 2 +- src/video/windows/SDL_windowsopengles.h | 2 +- src/video/windows/SDL_windowsshape.c | 2 +- src/video/windows/SDL_windowsshape.h | 2 +- src/video/windows/SDL_windowsvideo.c | 2 +- src/video/windows/SDL_windowsvideo.h | 2 +- src/video/windows/SDL_windowswindow.c | 2 +- src/video/windows/SDL_windowswindow.h | 2 +- src/video/x11/SDL_x11clipboard.c | 2 +- src/video/x11/SDL_x11clipboard.h | 2 +- src/video/x11/SDL_x11dyn.c | 2 +- src/video/x11/SDL_x11dyn.h | 2 +- src/video/x11/SDL_x11events.c | 2 +- src/video/x11/SDL_x11events.h | 2 +- src/video/x11/SDL_x11framebuffer.c | 2 +- src/video/x11/SDL_x11framebuffer.h | 2 +- src/video/x11/SDL_x11keyboard.c | 2 +- src/video/x11/SDL_x11keyboard.h | 2 +- src/video/x11/SDL_x11messagebox.c | 2 +- src/video/x11/SDL_x11modes.c | 2 +- src/video/x11/SDL_x11modes.h | 2 +- src/video/x11/SDL_x11mouse.c | 2 +- src/video/x11/SDL_x11mouse.h | 2 +- src/video/x11/SDL_x11opengl.c | 2 +- src/video/x11/SDL_x11opengl.h | 2 +- src/video/x11/SDL_x11opengles.c | 2 +- src/video/x11/SDL_x11opengles.h | 2 +- src/video/x11/SDL_x11shape.c | 2 +- src/video/x11/SDL_x11shape.h | 2 +- src/video/x11/SDL_x11touch.c | 2 +- src/video/x11/SDL_x11touch.h | 2 +- src/video/x11/SDL_x11video.c | 2 +- src/video/x11/SDL_x11video.h | 2 +- src/video/x11/SDL_x11window.c | 2 +- src/video/x11/SDL_x11window.h | 2 +- src/video/x11/SDL_x11xinput2.c | 2 +- src/video/x11/SDL_x11xinput2.h | 2 +- src/video/x11/imKStoUCS.c | 2 +- 365 files changed, 393 insertions(+), 365 deletions(-) create mode 100644 src/SDL_internal.h diff --git a/src/SDL.c b/src/SDL.c index 7fe5669ac2..d1a3ab5a2a 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "./SDL_internal.h" #if defined(__WIN32__) #include "core/windows/SDL_windows.h" diff --git a/src/SDL_assert.c b/src/SDL_assert.c index 41c6ad6c0e..13e571f5c3 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "./SDL_internal.h" #if defined(__WIN32__) #include "core/windows/SDL_windows.h" diff --git a/src/SDL_error.c b/src/SDL_error.c index 98ef84ac6f..bc9b10a737 100644 --- a/src/SDL_error.c +++ b/src/SDL_error.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "./SDL_internal.h" /* Simple error handling in SDL */ diff --git a/src/SDL_error_c.h b/src/SDL_error_c.h index 2014cc1e77..49e6c69ebf 100644 --- a/src/SDL_error_c.h +++ b/src/SDL_error_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "./SDL_internal.h" /* This file defines a structure that carries language-independent error messages diff --git a/src/SDL_hints.c b/src/SDL_hints.c index a1eae9ffda..837e738777 100644 --- a/src/SDL_hints.c +++ b/src/SDL_hints.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "./SDL_internal.h" #include "SDL_hints.h" #include "SDL_error.h" diff --git a/src/SDL_internal.h b/src/SDL_internal.h new file mode 100644 index 0000000000..b3578769c8 --- /dev/null +++ b/src/SDL_internal.h @@ -0,0 +1,28 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#ifndef _SDL_internal_h +#define _SDL_internal_h + +#include "SDL_config.h" + +#endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/SDL_log.c b/src/SDL_log.c index 18611ca9b0..7a2d8ac27b 100644 --- a/src/SDL_log.c +++ b/src/SDL_log.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "./SDL_internal.h" #if defined(__WIN32__) #include "core/windows/SDL_windows.h" diff --git a/src/atomic/SDL_atomic.c b/src/atomic/SDL_atomic.c index 265d0bd520..dce2c104f1 100644 --- a/src/atomic/SDL_atomic.c +++ b/src/atomic/SDL_atomic.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_atomic.h" diff --git a/src/atomic/SDL_spinlock.c b/src/atomic/SDL_spinlock.c index 0826a3f92a..f4346c5c48 100644 --- a/src/atomic/SDL_spinlock.c +++ b/src/atomic/SDL_spinlock.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifdef __WIN32__ #include "../core/windows/SDL_windows.h" diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 0f32ec978f..a21af0b127 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Allow access to a raw mixing buffer */ diff --git a/src/audio/SDL_audio_c.h b/src/audio/SDL_audio_c.h index 6abae300bb..71b04cf76b 100644 --- a/src/audio/SDL_audio_c.h +++ b/src/audio/SDL_audio_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Functions and variables exported from SDL_audio.c for SDL_sysaudio.c */ diff --git a/src/audio/SDL_audiocvt.c b/src/audio/SDL_audiocvt.c index fc23b5d586..92ceeb1413 100644 --- a/src/audio/SDL_audiocvt.c +++ b/src/audio/SDL_audiocvt.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Functions for audio drivers to perform runtime conversion of audio format */ diff --git a/src/audio/SDL_audiodev.c b/src/audio/SDL_audiodev.c index af45a8b90e..0ecb26b9d7 100644 --- a/src/audio/SDL_audiodev.c +++ b/src/audio/SDL_audiodev.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Get the name of the audio device we use for output */ diff --git a/src/audio/SDL_audiodev_c.h b/src/audio/SDL_audiodev_c.h index d439926b96..d2e1ddbb9c 100644 --- a/src/audio/SDL_audiodev_c.h +++ b/src/audio/SDL_audiodev_c.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ #include "SDL.h" -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_sysaudio.h" /* Open the audio device for playback, and don't block if busy */ diff --git a/src/audio/SDL_audiomem.h b/src/audio/SDL_audiomem.h index 8c027c3a5f..9e462c4775 100644 --- a/src/audio/SDL_audiomem.h +++ b/src/audio/SDL_audiomem.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #define SDL_AllocAudioMem SDL_malloc #define SDL_FreeAudioMem SDL_free diff --git a/src/audio/SDL_audiotypecvt.c b/src/audio/SDL_audiotypecvt.c index 6245c534bb..5522041dbd 100644 --- a/src/audio/SDL_audiotypecvt.c +++ b/src/audio/SDL_audiotypecvt.c @@ -20,7 +20,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_audio.h" #include "SDL_audio_c.h" diff --git a/src/audio/SDL_mixer.c b/src/audio/SDL_mixer.c index 37907596f1..87ceac96ea 100644 --- a/src/audio/SDL_mixer.c +++ b/src/audio/SDL_mixer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This provides the default mixing callback for the SDL audio routines */ diff --git a/src/audio/SDL_sysaudio.h b/src/audio/SDL_sysaudio.h index 83919c6e4c..b4d6069def 100644 --- a/src/audio/SDL_sysaudio.h +++ b/src/audio/SDL_sysaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_sysaudio_h #define _SDL_sysaudio_h diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c index fac24cb3bb..4d09cf30c5 100644 --- a/src/audio/SDL_wave.c +++ b/src/audio/SDL_wave.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Microsoft WAVE file loading routines */ diff --git a/src/audio/SDL_wave.h b/src/audio/SDL_wave.h index d82399cb8a..4fdc8cb039 100644 --- a/src/audio/SDL_wave.h +++ b/src/audio/SDL_wave.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* WAVE files are little-endian */ diff --git a/src/audio/alsa/SDL_alsa_audio.c b/src/audio/alsa/SDL_alsa_audio.c index 5ff4cef4c1..b60f71dcdb 100644 --- a/src/audio/alsa/SDL_alsa_audio.c +++ b/src/audio/alsa/SDL_alsa_audio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_ALSA diff --git a/src/audio/alsa/SDL_alsa_audio.h b/src/audio/alsa/SDL_alsa_audio.h index 31c6534038..78e892d8d6 100644 --- a/src/audio/alsa/SDL_alsa_audio.h +++ b/src/audio/alsa/SDL_alsa_audio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_ALSA_audio_h #define _SDL_ALSA_audio_h diff --git a/src/audio/android/SDL_androidaudio.c b/src/audio/android/SDL_androidaudio.c index 94e27f32f9..ac9fd9ded3 100644 --- a/src/audio/android/SDL_androidaudio.c +++ b/src/audio/android/SDL_androidaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_ANDROID diff --git a/src/audio/android/SDL_androidaudio.h b/src/audio/android/SDL_androidaudio.h index c02ad1a7a3..bad6a42a6c 100644 --- a/src/audio/android/SDL_androidaudio.h +++ b/src/audio/android/SDL_androidaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_androidaudio_h #define _SDL_androidaudio_h diff --git a/src/audio/arts/SDL_artsaudio.c b/src/audio/arts/SDL_artsaudio.c index 7e835c18a2..516602dc70 100644 --- a/src/audio/arts/SDL_artsaudio.c +++ b/src/audio/arts/SDL_artsaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_ARTS diff --git a/src/audio/arts/SDL_artsaudio.h b/src/audio/arts/SDL_artsaudio.h index 1387cc5c06..94fa5257d2 100644 --- a/src/audio/arts/SDL_artsaudio.h +++ b/src/audio/arts/SDL_artsaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_artscaudio_h #define _SDL_artscaudio_h diff --git a/src/audio/bsd/SDL_bsdaudio.c b/src/audio/bsd/SDL_bsdaudio.c index 6694683bd4..90fd9a4ffb 100644 --- a/src/audio/bsd/SDL_bsdaudio.c +++ b/src/audio/bsd/SDL_bsdaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_BSD diff --git a/src/audio/bsd/SDL_bsdaudio.h b/src/audio/bsd/SDL_bsdaudio.h index b64be31b2a..2550a9edd9 100644 --- a/src/audio/bsd/SDL_bsdaudio.h +++ b/src/audio/bsd/SDL_bsdaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_bsdaudio_h #define _SDL_bsdaudio_h diff --git a/src/audio/coreaudio/SDL_coreaudio.c b/src/audio/coreaudio/SDL_coreaudio.c index a35135a2fc..653b8ceb5b 100644 --- a/src/audio/coreaudio/SDL_coreaudio.c +++ b/src/audio/coreaudio/SDL_coreaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_audio.h" #include "../SDL_audio_c.h" #include "../SDL_sysaudio.h" diff --git a/src/audio/coreaudio/SDL_coreaudio.h b/src/audio/coreaudio/SDL_coreaudio.h index 2f0db5ba88..da003aa635 100644 --- a/src/audio/coreaudio/SDL_coreaudio.h +++ b/src/audio/coreaudio/SDL_coreaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_coreaudio_h #define _SDL_coreaudio_h diff --git a/src/audio/directsound/SDL_directsound.c b/src/audio/directsound/SDL_directsound.c index 86563a62e5..b3d08736d6 100644 --- a/src/audio/directsound/SDL_directsound.c +++ b/src/audio/directsound/SDL_directsound.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_DSOUND diff --git a/src/audio/directsound/SDL_directsound.h b/src/audio/directsound/SDL_directsound.h index 758299f14f..46dbd3fcb5 100644 --- a/src/audio/directsound/SDL_directsound.h +++ b/src/audio/directsound/SDL_directsound.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_directsound_h #define _SDL_directsound_h diff --git a/src/audio/disk/SDL_diskaudio.c b/src/audio/disk/SDL_diskaudio.c index 0dc650e127..7429c0e659 100644 --- a/src/audio/disk/SDL_diskaudio.c +++ b/src/audio/disk/SDL_diskaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_DISK diff --git a/src/audio/disk/SDL_diskaudio.h b/src/audio/disk/SDL_diskaudio.h index 7e5b48406f..94d44abc64 100644 --- a/src/audio/disk/SDL_diskaudio.h +++ b/src/audio/disk/SDL_diskaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_diskaudio_h #define _SDL_diskaudio_h diff --git a/src/audio/dsp/SDL_dspaudio.c b/src/audio/dsp/SDL_dspaudio.c index e3190170df..10426bc3d0 100644 --- a/src/audio/dsp/SDL_dspaudio.c +++ b/src/audio/dsp/SDL_dspaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_OSS diff --git a/src/audio/dsp/SDL_dspaudio.h b/src/audio/dsp/SDL_dspaudio.h index 62ed45f181..5c3204a14a 100644 --- a/src/audio/dsp/SDL_dspaudio.h +++ b/src/audio/dsp/SDL_dspaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_dspaudio_h #define _SDL_dspaudio_h diff --git a/src/audio/dummy/SDL_dummyaudio.c b/src/audio/dummy/SDL_dummyaudio.c index c3e8ea415d..a113032082 100644 --- a/src/audio/dummy/SDL_dummyaudio.c +++ b/src/audio/dummy/SDL_dummyaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* Output audio to nowhere... */ diff --git a/src/audio/dummy/SDL_dummyaudio.h b/src/audio/dummy/SDL_dummyaudio.h index c0015a54dc..1b948311f6 100644 --- a/src/audio/dummy/SDL_dummyaudio.h +++ b/src/audio/dummy/SDL_dummyaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_dummyaudio_h #define _SDL_dummyaudio_h diff --git a/src/audio/esd/SDL_esdaudio.c b/src/audio/esd/SDL_esdaudio.c index 8bba640988..28c45c7587 100644 --- a/src/audio/esd/SDL_esdaudio.c +++ b/src/audio/esd/SDL_esdaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_ESD diff --git a/src/audio/esd/SDL_esdaudio.h b/src/audio/esd/SDL_esdaudio.h index 26bea9cf01..4f7723767d 100644 --- a/src/audio/esd/SDL_esdaudio.h +++ b/src/audio/esd/SDL_esdaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_esdaudio_h #define _SDL_esdaudio_h diff --git a/src/audio/fusionsound/SDL_fsaudio.c b/src/audio/fusionsound/SDL_fsaudio.c index 49ad2c163b..452a9a812f 100644 --- a/src/audio/fusionsound/SDL_fsaudio.c +++ b/src/audio/fusionsound/SDL_fsaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_FUSIONSOUND diff --git a/src/audio/fusionsound/SDL_fsaudio.h b/src/audio/fusionsound/SDL_fsaudio.h index 7f22775014..2e3d28d878 100644 --- a/src/audio/fusionsound/SDL_fsaudio.h +++ b/src/audio/fusionsound/SDL_fsaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_fsaudio_h #define _SDL_fsaudio_h diff --git a/src/audio/haiku/SDL_haikuaudio.cc b/src/audio/haiku/SDL_haikuaudio.cc index 38154e5f73..09549c0edb 100644 --- a/src/audio/haiku/SDL_haikuaudio.cc +++ b/src/audio/haiku/SDL_haikuaudio.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_HAIKU diff --git a/src/audio/haiku/SDL_haikuaudio.h b/src/audio/haiku/SDL_haikuaudio.h index 61f9dec832..17621974cb 100644 --- a/src/audio/haiku/SDL_haikuaudio.h +++ b/src/audio/haiku/SDL_haikuaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_beaudio_h #define _SDL_beaudio_h diff --git a/src/audio/nas/SDL_nasaudio.c b/src/audio/nas/SDL_nasaudio.c index c2bf677452..7b09d7edee 100644 --- a/src/audio/nas/SDL_nasaudio.c +++ b/src/audio/nas/SDL_nasaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_NAS diff --git a/src/audio/nas/SDL_nasaudio.h b/src/audio/nas/SDL_nasaudio.h index 85bd761dd4..f44d74be94 100644 --- a/src/audio/nas/SDL_nasaudio.h +++ b/src/audio/nas/SDL_nasaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_nasaudio_h #define _SDL_nasaudio_h diff --git a/src/audio/paudio/SDL_paudio.c b/src/audio/paudio/SDL_paudio.c index 8a248af4e3..4cbebb0d81 100644 --- a/src/audio/paudio/SDL_paudio.c +++ b/src/audio/paudio/SDL_paudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_PAUDIO diff --git a/src/audio/paudio/SDL_paudio.h b/src/audio/paudio/SDL_paudio.h index 7be1ed6513..f21c21f8fa 100644 --- a/src/audio/paudio/SDL_paudio.h +++ b/src/audio/paudio/SDL_paudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_paudaudio_h #define _SDL_paudaudio_h diff --git a/src/audio/pulseaudio/SDL_pulseaudio.c b/src/audio/pulseaudio/SDL_pulseaudio.c index 5923eaecce..0ac71817e5 100644 --- a/src/audio/pulseaudio/SDL_pulseaudio.c +++ b/src/audio/pulseaudio/SDL_pulseaudio.c @@ -25,7 +25,7 @@ was the cleanest way to move it to 1.3. The 1.2 target was written by Stéphan Kochen: stephan .a.t. kochen.nl */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_PULSEAUDIO diff --git a/src/audio/pulseaudio/SDL_pulseaudio.h b/src/audio/pulseaudio/SDL_pulseaudio.h index cb96039918..648f29d2bc 100644 --- a/src/audio/pulseaudio/SDL_pulseaudio.h +++ b/src/audio/pulseaudio/SDL_pulseaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_pulseaudio_h #define _SDL_pulseaudio_h diff --git a/src/audio/qsa/SDL_qsa_audio.c b/src/audio/qsa/SDL_qsa_audio.c index 78f69c0d88..7bc91d4eb3 100644 --- a/src/audio/qsa/SDL_qsa_audio.c +++ b/src/audio/qsa/SDL_qsa_audio.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_QSA diff --git a/src/audio/qsa/SDL_qsa_audio.h b/src/audio/qsa/SDL_qsa_audio.h index 1717d08786..e89b2c3afe 100644 --- a/src/audio/qsa/SDL_qsa_audio.h +++ b/src/audio/qsa/SDL_qsa_audio.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef __SDL_QSA_AUDIO_H__ #define __SDL_QSA_AUDIO_H__ diff --git a/src/audio/sdlgenaudiocvt.pl b/src/audio/sdlgenaudiocvt.pl index 474ce8112e..25a6c2e178 100755 --- a/src/audio/sdlgenaudiocvt.pl +++ b/src/audio/sdlgenaudiocvt.pl @@ -57,7 +57,7 @@ sub outputHeader { 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_audio.h" #include "SDL_audio_c.h" diff --git a/src/audio/sndio/SDL_sndioaudio.c b/src/audio/sndio/SDL_sndioaudio.c index 309472da02..a8ed63c54a 100644 --- a/src/audio/sndio/SDL_sndioaudio.c +++ b/src/audio/sndio/SDL_sndioaudio.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_SNDIO diff --git a/src/audio/sndio/SDL_sndioaudio.h b/src/audio/sndio/SDL_sndioaudio.h index 94e1542e44..ca72c71280 100644 --- a/src/audio/sndio/SDL_sndioaudio.h +++ b/src/audio/sndio/SDL_sndioaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_sndioaudio_h #define _SDL_sndioaudio_h diff --git a/src/audio/sun/SDL_sunaudio.c b/src/audio/sun/SDL_sunaudio.c index 98acf44468..8b867b5b99 100644 --- a/src/audio/sun/SDL_sunaudio.c +++ b/src/audio/sun/SDL_sunaudio.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_SUNAUDIO diff --git a/src/audio/sun/SDL_sunaudio.h b/src/audio/sun/SDL_sunaudio.h index 9b92266fb1..fb47eb84bc 100644 --- a/src/audio/sun/SDL_sunaudio.h +++ b/src/audio/sun/SDL_sunaudio.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_sunaudio_h #define _SDL_sunaudio_h diff --git a/src/audio/winmm/SDL_winmm.c b/src/audio/winmm/SDL_winmm.c index 4220afd41e..20a9c78ad1 100644 --- a/src/audio/winmm/SDL_winmm.c +++ b/src/audio/winmm/SDL_winmm.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_WINMM diff --git a/src/audio/winmm/SDL_winmm.h b/src/audio/winmm/SDL_winmm.h index 5a0574d1ec..784f7b8abb 100644 --- a/src/audio/winmm/SDL_winmm.h +++ b/src/audio/winmm/SDL_winmm.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_winmm_h #define _SDL_winmm_h diff --git a/src/audio/xaudio2/SDL_xaudio2.c b/src/audio/xaudio2/SDL_xaudio2.c index 504a4204ba..5ec8abcd6b 100644 --- a/src/audio/xaudio2/SDL_xaudio2.c +++ b/src/audio/xaudio2/SDL_xaudio2.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_AUDIO_DRIVER_XAUDIO2 diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 0482efd08a..c3944f41ad 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_stdinc.h" #include "SDL_assert.h" #include "SDL_log.h" diff --git a/src/core/android/SDL_android.h b/src/core/android/SDL_android.h index 2219069b95..fc1546779e 100644 --- a/src/core/android/SDL_android.h +++ b/src/core/android/SDL_android.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus diff --git a/src/core/linux/SDL_evdev.c b/src/core/linux/SDL_evdev.c index 92dc4fed71..5c424f2a2d 100644 --- a/src/core/linux/SDL_evdev.c +++ b/src/core/linux/SDL_evdev.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_INPUT_LINUXEV diff --git a/src/core/linux/SDL_evdev.h b/src/core/linux/SDL_evdev.h index b9311d4f3f..0a0f44dd61 100644 --- a/src/core/linux/SDL_evdev.h +++ b/src/core/linux/SDL_evdev.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_evdev_h #define _SDL_evdev_h diff --git a/src/core/linux/SDL_udev.h b/src/core/linux/SDL_udev.h index 1c26f11044..f7d48c8b2a 100644 --- a/src/core/linux/SDL_udev.h +++ b/src/core/linux/SDL_udev.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_udev_h #define _SDL_udev_h diff --git a/src/core/windows/SDL_windows.c b/src/core/windows/SDL_windows.c index 6a13ab167b..7580608bae 100644 --- a/src/core/windows/SDL_windows.c +++ b/src/core/windows/SDL_windows.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef __WIN32__ diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index fcb600656f..c73dd80c1b 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #if defined(__WIN32__) #include "../core/windows/SDL_windows.h" diff --git a/src/events/SDL_clipboardevents.c b/src/events/SDL_clipboardevents.c index 99ead8f507..2a2f5ae022 100644 --- a/src/events/SDL_clipboardevents.c +++ b/src/events/SDL_clipboardevents.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Clipboard event handling code for SDL */ diff --git a/src/events/SDL_clipboardevents_c.h b/src/events/SDL_clipboardevents_c.h index 4f320f041a..9cd1953859 100644 --- a/src/events/SDL_clipboardevents_c.h +++ b/src/events/SDL_clipboardevents_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_clipboardevents_c_h #define _SDL_clipboardevents_c_h diff --git a/src/events/SDL_dropevents.c b/src/events/SDL_dropevents.c index 1ce2f1c1ba..553d1c3f01 100644 --- a/src/events/SDL_dropevents.c +++ b/src/events/SDL_dropevents.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Drag and drop event handling code for SDL */ diff --git a/src/events/SDL_dropevents_c.h b/src/events/SDL_dropevents_c.h index d658e447c1..0458653a1f 100644 --- a/src/events/SDL_dropevents_c.h +++ b/src/events/SDL_dropevents_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_dropevents_c_h #define _SDL_dropevents_c_h diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 99845034af..0510b51816 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General event handling code for SDL */ diff --git a/src/events/SDL_events_c.h b/src/events/SDL_events_c.h index f365ee3edd..7ddda19206 100644 --- a/src/events/SDL_events_c.h +++ b/src/events/SDL_events_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Useful functions and variables from SDL_events.c */ #include "SDL_events.h" diff --git a/src/events/SDL_gesture.c b/src/events/SDL_gesture.c index c50092c744..6841f7305a 100644 --- a/src/events/SDL_gesture.c +++ b/src/events/SDL_gesture.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General mouse handling code for SDL */ diff --git a/src/events/SDL_gesture_c.h b/src/events/SDL_gesture_c.h index 08ba2e80c5..d172cba4e6 100644 --- a/src/events/SDL_gesture_c.h +++ b/src/events/SDL_gesture_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_gesture_c_h #define _SDL_gesture_c_h diff --git a/src/events/SDL_keyboard.c b/src/events/SDL_keyboard.c index 34d94d0ef4..b56a466159 100644 --- a/src/events/SDL_keyboard.c +++ b/src/events/SDL_keyboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General keyboard handling code for SDL */ diff --git a/src/events/SDL_keyboard_c.h b/src/events/SDL_keyboard_c.h index cd9f1bb6bd..5a99d971d2 100644 --- a/src/events/SDL_keyboard_c.h +++ b/src/events/SDL_keyboard_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_keyboard_c_h #define _SDL_keyboard_c_h diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 8eb4414704..0d17670c94 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General mouse handling code for SDL */ diff --git a/src/events/SDL_mouse_c.h b/src/events/SDL_mouse_c.h index 427b3b156a..a8b8aa5e5d 100644 --- a/src/events/SDL_mouse_c.h +++ b/src/events/SDL_mouse_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_mouse_c_h #define _SDL_mouse_c_h diff --git a/src/events/SDL_quit.c b/src/events/SDL_quit.c index 5e9f8ad851..14cf89dc50 100644 --- a/src/events/SDL_quit.c +++ b/src/events/SDL_quit.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General quit handling code for SDL */ diff --git a/src/events/SDL_sysevents.h b/src/events/SDL_sysevents.h index 11c4286297..a25247f5a5 100644 --- a/src/events/SDL_sysevents.h +++ b/src/events/SDL_sysevents.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "../video/SDL_sysvideo.h" diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index 1874ba7f5f..d37cee2d8a 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General touch handling code for SDL */ diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index d0a2cf2f78..8786c61ecb 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "../../include/SDL_touch.h" #ifndef _SDL_touch_c_h diff --git a/src/events/SDL_windowevents.c b/src/events/SDL_windowevents.c index 9011f68e14..28041c242c 100644 --- a/src/events/SDL_windowevents.c +++ b/src/events/SDL_windowevents.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Window event handling code for SDL */ diff --git a/src/events/SDL_windowevents_c.h b/src/events/SDL_windowevents_c.h index 0d14a03497..c97d2affe9 100644 --- a/src/events/SDL_windowevents_c.h +++ b/src/events/SDL_windowevents_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_windowevents_c_h #define _SDL_windowevents_c_h diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index d71dbfdf36..c994c8fddb 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -20,7 +20,7 @@ */ /* Need this so Linux systems define fseek64o, ftell64o and off64_t */ #define _LARGEFILE64_SOURCE -#include "SDL_config.h" +#include "../SDL_internal.h" #if defined(__WIN32__) #include "../core/windows/SDL_windows.h" diff --git a/src/filesystem/cocoa/SDL_sysfilesystem.m b/src/filesystem/cocoa/SDL_sysfilesystem.m index 587c35cc02..2b29cc9a49 100644 --- a/src/filesystem/cocoa/SDL_sysfilesystem.m +++ b/src/filesystem/cocoa/SDL_sysfilesystem.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_FILESYSTEM_COCOA diff --git a/src/filesystem/dummy/SDL_sysfilesystem.c b/src/filesystem/dummy/SDL_sysfilesystem.c index a6bd57767c..4c92362e74 100644 --- a/src/filesystem/dummy/SDL_sysfilesystem.c +++ b/src/filesystem/dummy/SDL_sysfilesystem.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_FILESYSTEM_DUMMY diff --git a/src/filesystem/haiku/SDL_sysfilesystem.cc b/src/filesystem/haiku/SDL_sysfilesystem.cc index dd75dfe067..701a98e177 100644 --- a/src/filesystem/haiku/SDL_sysfilesystem.cc +++ b/src/filesystem/haiku/SDL_sysfilesystem.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_FILESYSTEM_HAIKU diff --git a/src/filesystem/unix/SDL_sysfilesystem.c b/src/filesystem/unix/SDL_sysfilesystem.c index 0f6e62e245..0046c2d034 100644 --- a/src/filesystem/unix/SDL_sysfilesystem.c +++ b/src/filesystem/unix/SDL_sysfilesystem.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_FILESYSTEM_UNIX diff --git a/src/filesystem/windows/SDL_sysfilesystem.c b/src/filesystem/windows/SDL_sysfilesystem.c index 7b101ffed1..8da41719cd 100644 --- a/src/filesystem/windows/SDL_sysfilesystem.c +++ b/src/filesystem/windows/SDL_sysfilesystem.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_FILESYSTEM_WINDOWS diff --git a/src/haptic/SDL_haptic.c b/src/haptic/SDL_haptic.c index 33dd4277c1..c629deaf1f 100644 --- a/src/haptic/SDL_haptic.c +++ b/src/haptic/SDL_haptic.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_syshaptic.h" #include "SDL_haptic_c.h" diff --git a/src/haptic/SDL_syshaptic.h b/src/haptic/SDL_syshaptic.h index ac5198ffd8..bb4095dcb1 100644 --- a/src/haptic/SDL_syshaptic.h +++ b/src/haptic/SDL_syshaptic.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_haptic.h" diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index c999a77d3f..12dceee428 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_HAPTIC_IOKIT diff --git a/src/haptic/dummy/SDL_syshaptic.c b/src/haptic/dummy/SDL_syshaptic.c index 29084eb179..1c9f5af47d 100644 --- a/src/haptic/dummy/SDL_syshaptic.c +++ b/src/haptic/dummy/SDL_syshaptic.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if defined(SDL_HAPTIC_DUMMY) || defined(SDL_HAPTIC_DISABLED) diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index e209d0500c..aa937ed895 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_HAPTIC_LINUX diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index 1506235e7e..ed2c98cc63 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_HAPTIC_DINPUT diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index abb78db3ee..940e205487 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This is the game controller API for Simple DirectMedia Layer */ diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 21f9aaadec..39ae4efeb7 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Default mappings we support diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c index f635d4a3ed..69aa37d5ab 100644 --- a/src/joystick/SDL_joystick.c +++ b/src/joystick/SDL_joystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This is the joystick API for Simple DirectMedia Layer */ diff --git a/src/joystick/SDL_joystick_c.h b/src/joystick/SDL_joystick_c.h index 38bc78553c..32410638c3 100644 --- a/src/joystick/SDL_joystick_c.h +++ b/src/joystick/SDL_joystick_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Useful functions and variables from SDL_joystick.c */ #include "SDL_joystick.h" diff --git a/src/joystick/SDL_sysjoystick.h b/src/joystick/SDL_sysjoystick.h index 3aeaf08213..b125c1c736 100644 --- a/src/joystick/SDL_sysjoystick.h +++ b/src/joystick/SDL_sysjoystick.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This is the system specific header for the SDL joystick API */ diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 2af8235bfb..0772eaed25 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_ANDROID diff --git a/src/joystick/bsd/SDL_sysjoystick.c b/src/joystick/bsd/SDL_sysjoystick.c index 41a8693d6e..3b4c6cd671 100644 --- a/src/joystick/bsd/SDL_sysjoystick.c +++ b/src/joystick/bsd/SDL_sysjoystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_USBHID diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index 125fdc0e25..ace659709d 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_IOKIT diff --git a/src/joystick/darwin/SDL_sysjoystick_c.h b/src/joystick/darwin/SDL_sysjoystick_c.h index f99dbd8af8..a44d9a4bda 100644 --- a/src/joystick/darwin/SDL_sysjoystick_c.h +++ b/src/joystick/darwin/SDL_sysjoystick_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_JOYSTICK_IOKIT_H diff --git a/src/joystick/dummy/SDL_sysjoystick.c b/src/joystick/dummy/SDL_sysjoystick.c index 7dd9153b25..4ec6d1bdf5 100644 --- a/src/joystick/dummy/SDL_sysjoystick.c +++ b/src/joystick/dummy/SDL_sysjoystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if defined(SDL_JOYSTICK_DUMMY) || defined(SDL_JOYSTICK_DISABLED) diff --git a/src/joystick/haiku/SDL_haikujoystick.cc b/src/joystick/haiku/SDL_haikujoystick.cc index b429465bed..e3c9841404 100644 --- a/src/joystick/haiku/SDL_haikujoystick.cc +++ b/src/joystick/haiku/SDL_haikujoystick.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_HAIKU diff --git a/src/joystick/iphoneos/SDL_sysjoystick.m b/src/joystick/iphoneos/SDL_sysjoystick.m index 6082389ff6..31d40a5fcb 100644 --- a/src/joystick/iphoneos/SDL_sysjoystick.m +++ b/src/joystick/iphoneos/SDL_sysjoystick.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* This is the system specific header for the SDL joystick API */ diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index b7b1c5327a..a8e10bc758 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_LINUX diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index d8149a301c..919d980b87 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_DINPUT diff --git a/src/joystick/windows/SDL_dxjoystick_c.h b/src/joystick/windows/SDL_dxjoystick_c.h index 1a4703e5e8..9e04881b87 100644 --- a/src/joystick/windows/SDL_dxjoystick_c.h +++ b/src/joystick/windows/SDL_dxjoystick_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_JOYSTICK_DINPUT_H diff --git a/src/joystick/windows/SDL_mmjoystick.c b/src/joystick/windows/SDL_mmjoystick.c index e012d44664..824ecc93b0 100644 --- a/src/joystick/windows/SDL_mmjoystick.c +++ b/src/joystick/windows/SDL_mmjoystick.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_JOYSTICK_WINMM diff --git a/src/libm/math_libm.h b/src/libm/math_libm.h index 45a34d8ae8..861dece36c 100644 --- a/src/libm/math_libm.h +++ b/src/libm/math_libm.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Math routines from uClibc: http://www.uclibc.org */ diff --git a/src/loadso/dlopen/SDL_sysloadso.c b/src/loadso/dlopen/SDL_sysloadso.c index c2cbdd4c0f..337f050de4 100644 --- a/src/loadso/dlopen/SDL_sysloadso.c +++ b/src/loadso/dlopen/SDL_sysloadso.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_LOADSO_DLOPEN diff --git a/src/loadso/dummy/SDL_sysloadso.c b/src/loadso/dummy/SDL_sysloadso.c index d890a14890..652b6f4e1b 100644 --- a/src/loadso/dummy/SDL_sysloadso.c +++ b/src/loadso/dummy/SDL_sysloadso.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if defined(SDL_LOADSO_DUMMY) || defined(SDL_LOADSO_DISABLED) diff --git a/src/loadso/haiku/SDL_sysloadso.c b/src/loadso/haiku/SDL_sysloadso.c index 0c3608d74c..95a4ce9343 100644 --- a/src/loadso/haiku/SDL_sysloadso.c +++ b/src/loadso/haiku/SDL_sysloadso.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_LOADSO_HAIKU diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c index 21e7a6c546..fe6f19fc54 100644 --- a/src/loadso/windows/SDL_sysloadso.c +++ b/src/loadso/windows/SDL_sysloadso.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_LOADSO_WINDOWS diff --git a/src/main/android/SDL_android_main.c b/src/main/android/SDL_android_main.c index 8f00f39d90..a2603bed74 100644 --- a/src/main/android/SDL_android_main.c +++ b/src/main/android/SDL_android_main.c @@ -1,5 +1,5 @@ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef __ANDROID__ diff --git a/src/main/dummy/SDL_dummy_main.c b/src/main/dummy/SDL_dummy_main.c index 87955239a8..4737d45902 100644 --- a/src/main/dummy/SDL_dummy_main.c +++ b/src/main/dummy/SDL_dummy_main.c @@ -1,6 +1,6 @@ /* Include the SDL main definition header */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_main.h" #ifdef main diff --git a/src/main/haiku/SDL_BApp.h b/src/main/haiku/SDL_BApp.h index d2e4993606..bbdb34c095 100644 --- a/src/main/haiku/SDL_BApp.h +++ b/src/main/haiku/SDL_BApp.h @@ -31,7 +31,7 @@ extern "C" { #endif -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_video.h" diff --git a/src/main/haiku/SDL_BeApp.cc b/src/main/haiku/SDL_BeApp.cc index e0df2a1009..959ccbc6cb 100644 --- a/src/main/haiku/SDL_BeApp.cc +++ b/src/main/haiku/SDL_BeApp.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if defined(__HAIKU__) diff --git a/src/main/haiku/SDL_BeApp.h b/src/main/haiku/SDL_BeApp.h index 5bc5251d34..ccee0b210b 100644 --- a/src/main/haiku/SDL_BeApp.h +++ b/src/main/haiku/SDL_BeApp.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef __cplusplus diff --git a/src/power/SDL_power.c b/src/power/SDL_power.c index 2ce336004e..0ce4f6863f 100644 --- a/src/power/SDL_power.c +++ b/src/power/SDL_power.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_power.h" /* diff --git a/src/power/android/SDL_syspower.c b/src/power/android/SDL_syspower.c index adedd04c7c..9f4c55f59c 100644 --- a/src/power/android/SDL_syspower.c +++ b/src/power/android/SDL_syspower.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_POWER_DISABLED #if SDL_POWER_ANDROID diff --git a/src/power/haiku/SDL_syspower.c b/src/power/haiku/SDL_syspower.c index 5ed0a22375..a627a90771 100644 --- a/src/power/haiku/SDL_syspower.c +++ b/src/power/haiku/SDL_syspower.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* !!! FIXME: does this thing even work on Haiku? */ #ifndef SDL_POWER_DISABLED diff --git a/src/power/linux/SDL_syspower.c b/src/power/linux/SDL_syspower.c index d9616de257..b8169806e4 100644 --- a/src/power/linux/SDL_syspower.c +++ b/src/power/linux/SDL_syspower.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_POWER_DISABLED #if SDL_POWER_LINUX diff --git a/src/power/macosx/SDL_syspower.c b/src/power/macosx/SDL_syspower.c index 572dcfdd08..d60cdbc148 100644 --- a/src/power/macosx/SDL_syspower.c +++ b/src/power/macosx/SDL_syspower.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_POWER_DISABLED #if SDL_POWER_MACOSX diff --git a/src/power/psp/SDL_syspower.c b/src/power/psp/SDL_syspower.c index 8c791bba4d..b1096b8072 100644 --- a/src/power/psp/SDL_syspower.c +++ b/src/power/psp/SDL_syspower.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_POWER_DISABLED #if SDL_POWER_PSP diff --git a/src/power/uikit/SDL_syspower.h b/src/power/uikit/SDL_syspower.h index ce3bc2e739..187ee590d2 100644 --- a/src/power/uikit/SDL_syspower.h +++ b/src/power/uikit/SDL_syspower.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_POWER_UIKIT diff --git a/src/power/uikit/SDL_syspower.m b/src/power/uikit/SDL_syspower.m index f870ea2a9b..cf1c207c74 100644 --- a/src/power/uikit/SDL_syspower.m +++ b/src/power/uikit/SDL_syspower.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_POWER_DISABLED #if SDL_POWER_UIKIT diff --git a/src/power/windows/SDL_syspower.c b/src/power/windows/SDL_syspower.c index 29ddb0f8f1..d2485fb455 100644 --- a/src/power/windows/SDL_syspower.c +++ b/src/power/windows/SDL_syspower.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_POWER_DISABLED #if SDL_POWER_WINDOWS diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index 5bf4775b52..aa717149cc 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* The SDL 2D rendering system */ diff --git a/src/render/SDL_sysrender.h b/src/render/SDL_sysrender.h index b3d68688b5..c2eaa3f1a7 100644 --- a/src/render/SDL_sysrender.h +++ b/src/render/SDL_sysrender.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_sysrender_h #define _SDL_sysrender_h diff --git a/src/render/SDL_yuv_mmx.c b/src/render/SDL_yuv_mmx.c index b223d2d281..9e9976f015 100644 --- a/src/render/SDL_yuv_mmx.c +++ b/src/render/SDL_yuv_mmx.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #if (__GNUC__ > 2) && defined(__i386__) && __OPTIMIZE__ && SDL_ASSEMBLY_ROUTINES diff --git a/src/render/SDL_yuv_sw.c b/src/render/SDL_yuv_sw.c index 14b825d9cc..39387a2af2 100644 --- a/src/render/SDL_yuv_sw.c +++ b/src/render/SDL_yuv_sw.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This is the software implementation of the YUV texture support */ diff --git a/src/render/SDL_yuv_sw_c.h b/src/render/SDL_yuv_sw_c.h index f1280417fc..75fe93637a 100644 --- a/src/render/SDL_yuv_sw_c.h +++ b/src/render/SDL_yuv_sw_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index a4c6027573..74dbea2f5b 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 77b688d638..1cd03d461c 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_OGL && !SDL_RENDER_DISABLED diff --git a/src/render/opengl/SDL_shaders_gl.c b/src/render/opengl/SDL_shaders_gl.c index ebf641bb2b..80e173b82e 100644 --- a/src/render/opengl/SDL_shaders_gl.c +++ b/src/render/opengl/SDL_shaders_gl.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_OGL && !SDL_RENDER_DISABLED diff --git a/src/render/opengl/SDL_shaders_gl.h b/src/render/opengl/SDL_shaders_gl.h index c4b7e0b18d..4080b1d3ae 100644 --- a/src/render/opengl/SDL_shaders_gl.h +++ b/src/render/opengl/SDL_shaders_gl.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* OpenGL shader implementation */ diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 3be1998d85..10e42567f9 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_OGL_ES && !SDL_RENDER_DISABLED diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index e9ee1623c5..f7ac5613ba 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c index fb6921fd09..e4bbebb09b 100644 --- a/src/render/opengles2/SDL_shaders_gles2.c +++ b/src/render/opengles2/SDL_shaders_gles2.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_OGL_ES2 && !SDL_RENDER_DISABLED diff --git a/src/render/opengles2/SDL_shaders_gles2.h b/src/render/opengles2/SDL_shaders_gles2.h index 73f706649f..eeee876a3d 100644 --- a/src/render/opengles2/SDL_shaders_gles2.h +++ b/src/render/opengles2/SDL_shaders_gles2.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_OGL_ES2 diff --git a/src/render/psp/SDL_render_psp.c b/src/render/psp/SDL_render_psp.c index b8cd265de4..c867af364a 100644 --- a/src/render/psp/SDL_render_psp.c +++ b/src/render/psp/SDL_render_psp.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_RENDER_PSP diff --git a/src/render/software/SDL_blendfillrect.c b/src/render/software/SDL_blendfillrect.c index ea05ea64b5..4ba2fca300 100644 --- a/src/render/software/SDL_blendfillrect.c +++ b/src/render/software/SDL_blendfillrect.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if !SDL_RENDER_DISABLED diff --git a/src/render/software/SDL_blendfillrect.h b/src/render/software/SDL_blendfillrect.h index ed7981dafb..cdae7d0ece 100644 --- a/src/render/software/SDL_blendfillrect.h +++ b/src/render/software/SDL_blendfillrect.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int SDL_BlendFillRect(SDL_Surface * dst, const SDL_Rect * rect, SDL_BlendMode blendMode, Uint8 r, Uint8 g, Uint8 b, Uint8 a); diff --git a/src/render/software/SDL_blendline.c b/src/render/software/SDL_blendline.c index 2ab0231b5d..c090a50cef 100644 --- a/src/render/software/SDL_blendline.c +++ b/src/render/software/SDL_blendline.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if !SDL_RENDER_DISABLED diff --git a/src/render/software/SDL_blendline.h b/src/render/software/SDL_blendline.h index 813240144b..aa818068a0 100644 --- a/src/render/software/SDL_blendline.h +++ b/src/render/software/SDL_blendline.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int SDL_BlendLine(SDL_Surface * dst, int x1, int y1, int x2, int y2, SDL_BlendMode blendMode, Uint8 r, Uint8 g, Uint8 b, Uint8 a); diff --git a/src/render/software/SDL_blendpoint.c b/src/render/software/SDL_blendpoint.c index e2fa66fd80..eecf203f58 100644 --- a/src/render/software/SDL_blendpoint.c +++ b/src/render/software/SDL_blendpoint.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if !SDL_RENDER_DISABLED diff --git a/src/render/software/SDL_blendpoint.h b/src/render/software/SDL_blendpoint.h index ec7cfa754f..cbfb4be28d 100644 --- a/src/render/software/SDL_blendpoint.h +++ b/src/render/software/SDL_blendpoint.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int SDL_BlendPoint(SDL_Surface * dst, int x, int y, SDL_BlendMode blendMode, Uint8 r, Uint8 g, Uint8 b, Uint8 a); diff --git a/src/render/software/SDL_draw.h b/src/render/software/SDL_draw.h index c529e98ee2..f643abb20c 100644 --- a/src/render/software/SDL_draw.h +++ b/src/render/software/SDL_draw.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "../../video/SDL_blit.h" diff --git a/src/render/software/SDL_drawline.c b/src/render/software/SDL_drawline.c index 5cda4ccca2..71bee9de37 100644 --- a/src/render/software/SDL_drawline.c +++ b/src/render/software/SDL_drawline.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if !SDL_RENDER_DISABLED diff --git a/src/render/software/SDL_drawline.h b/src/render/software/SDL_drawline.h index 5b6a098499..08b975a53e 100644 --- a/src/render/software/SDL_drawline.h +++ b/src/render/software/SDL_drawline.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int SDL_DrawLine(SDL_Surface * dst, int x1, int y1, int x2, int y2, Uint32 color); diff --git a/src/render/software/SDL_drawpoint.c b/src/render/software/SDL_drawpoint.c index 1ae8419c1c..c5c74e0ea5 100644 --- a/src/render/software/SDL_drawpoint.c +++ b/src/render/software/SDL_drawpoint.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if !SDL_RENDER_DISABLED diff --git a/src/render/software/SDL_drawpoint.h b/src/render/software/SDL_drawpoint.h index 512ef6471c..2beb453f5e 100644 --- a/src/render/software/SDL_drawpoint.h +++ b/src/render/software/SDL_drawpoint.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int SDL_DrawPoint(SDL_Surface * dst, int x, int y, Uint32 color); diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c index 29aab8c8fb..cd42d9b622 100644 --- a/src/render/software/SDL_render_sw.c +++ b/src/render/software/SDL_render_sw.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if !SDL_RENDER_DISABLED diff --git a/src/render/software/SDL_rotate.c b/src/render/software/SDL_rotate.c index 3006eda623..f29d70d4f1 100644 --- a/src/render/software/SDL_rotate.c +++ b/src/render/software/SDL_rotate.c @@ -28,7 +28,7 @@ freely, subject to the following restrictions: Andreas Schiffler -- aschiffler at ferzkopp dot net */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if defined(__WIN32__) #include "../../core/windows/SDL_windows.h" diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c index 55b93e39ec..348fe45c2d 100644 --- a/src/stdlib/SDL_getenv.c +++ b/src/stdlib/SDL_getenv.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #if defined(__WIN32__) #include "../core/windows/SDL_windows.h" diff --git a/src/stdlib/SDL_iconv.c b/src/stdlib/SDL_iconv.c index 4de2ebe3f5..8963177c71 100644 --- a/src/stdlib/SDL_iconv.c +++ b/src/stdlib/SDL_iconv.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This file contains portable iconv functions for SDL */ diff --git a/src/stdlib/SDL_malloc.c b/src/stdlib/SDL_malloc.c index 7a85a3b49d..91d07c5670 100644 --- a/src/stdlib/SDL_malloc.c +++ b/src/stdlib/SDL_malloc.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This file contains portable memory management functions for SDL */ diff --git a/src/stdlib/SDL_qsort.c b/src/stdlib/SDL_qsort.c index 0130d5a3b1..8329a35e36 100644 --- a/src/stdlib/SDL_qsort.c +++ b/src/stdlib/SDL_qsort.c @@ -41,7 +41,7 @@ * * Gareth McCaughan Peterhouse Cambridge 1998 */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* #include diff --git a/src/stdlib/SDL_stdlib.c b/src/stdlib/SDL_stdlib.c index 2cb31cb063..082c95684d 100644 --- a/src/stdlib/SDL_stdlib.c +++ b/src/stdlib/SDL_stdlib.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This file contains portable stdlib functions for SDL */ diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index be07ebb45b..c351e3ace7 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This file contains portable string manipulation functions for SDL */ diff --git a/src/thread/SDL_systhread.h b/src/thread/SDL_systhread.h index 3c8ba899b3..82af6e425b 100644 --- a/src/thread/SDL_systhread.h +++ b/src/thread/SDL_systhread.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* These are functions that need to be implemented by a port of SDL */ diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index 362e75a420..268bb8e837 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* System independent thread management routines for SDL */ diff --git a/src/thread/SDL_thread_c.h b/src/thread/SDL_thread_c.h index 8d76a5f392..b6e0eebfcc 100644 --- a/src/thread/SDL_thread_c.h +++ b/src/thread/SDL_thread_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_thread_c_h #define _SDL_thread_c_h diff --git a/src/thread/generic/SDL_syscond.c b/src/thread/generic/SDL_syscond.c index 5c8fe8bd66..90fe4eac21 100644 --- a/src/thread/generic/SDL_syscond.c +++ b/src/thread/generic/SDL_syscond.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* An implementation of condition variables using semaphores and mutexes */ /* diff --git a/src/thread/generic/SDL_sysmutex.c b/src/thread/generic/SDL_sysmutex.c index 3e3c1fea90..f2a567c6d9 100644 --- a/src/thread/generic/SDL_sysmutex.c +++ b/src/thread/generic/SDL_sysmutex.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* An implementation of mutexes using semaphores */ diff --git a/src/thread/generic/SDL_sysmutex_c.h b/src/thread/generic/SDL_sysmutex_c.h index 8d6dbdc2be..6a3a8015f8 100644 --- a/src/thread/generic/SDL_sysmutex_c.h +++ b/src/thread/generic/SDL_sysmutex_c.h @@ -18,5 +18,5 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/generic/SDL_syssem.c b/src/thread/generic/SDL_syssem.c index bfb011dda7..71b191bbbf 100644 --- a/src/thread/generic/SDL_syssem.c +++ b/src/thread/generic/SDL_syssem.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* An implementation of semaphores using mutexes and condition variables */ diff --git a/src/thread/generic/SDL_systhread.c b/src/thread/generic/SDL_systhread.c index ab7f4bad9e..22b04d414c 100644 --- a/src/thread/generic/SDL_systhread.c +++ b/src/thread/generic/SDL_systhread.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* Thread management routines for SDL */ diff --git a/src/thread/generic/SDL_systhread_c.h b/src/thread/generic/SDL_systhread_c.h index b6c99c90e3..afabbc7961 100644 --- a/src/thread/generic/SDL_systhread_c.h +++ b/src/thread/generic/SDL_systhread_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* Stub until we implement threads on this platform */ typedef int SYS_ThreadHandle; diff --git a/src/thread/generic/SDL_systls.c b/src/thread/generic/SDL_systls.c index bdb83dbf9a..6016138921 100644 --- a/src/thread/generic/SDL_systls.c +++ b/src/thread/generic/SDL_systls.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "../SDL_thread_c.h" diff --git a/src/thread/psp/SDL_syscond.c b/src/thread/psp/SDL_syscond.c index f540cddb6d..3bdcc2fdc3 100644 --- a/src/thread/psp/SDL_syscond.c +++ b/src/thread/psp/SDL_syscond.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* An implementation of condition variables using semaphores and mutexes */ /* diff --git a/src/thread/psp/SDL_sysmutex.c b/src/thread/psp/SDL_sysmutex.c index 6bb68a23d1..731a2de6b8 100644 --- a/src/thread/psp/SDL_sysmutex.c +++ b/src/thread/psp/SDL_sysmutex.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* An implementation of mutexes using semaphores */ diff --git a/src/thread/psp/SDL_sysmutex_c.h b/src/thread/psp/SDL_sysmutex_c.h index 8d6dbdc2be..6a3a8015f8 100644 --- a/src/thread/psp/SDL_sysmutex_c.h +++ b/src/thread/psp/SDL_sysmutex_c.h @@ -18,5 +18,5 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/pthread/SDL_syscond.c b/src/thread/pthread/SDL_syscond.c index 1eb4f29f98..32342bf12e 100644 --- a/src/thread/pthread/SDL_syscond.c +++ b/src/thread/pthread/SDL_syscond.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include #include diff --git a/src/thread/pthread/SDL_sysmutex.c b/src/thread/pthread/SDL_sysmutex.c index bd238da367..b18d8fc001 100644 --- a/src/thread/pthread/SDL_sysmutex.c +++ b/src/thread/pthread/SDL_sysmutex.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #define _GNU_SOURCE #include diff --git a/src/thread/pthread/SDL_sysmutex_c.h b/src/thread/pthread/SDL_sysmutex_c.h index 2e2eae47e2..d99b09403a 100644 --- a/src/thread/pthread/SDL_sysmutex_c.h +++ b/src/thread/pthread/SDL_sysmutex_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_mutex_c_h #define _SDL_mutex_c_h diff --git a/src/thread/pthread/SDL_syssem.c b/src/thread/pthread/SDL_syssem.c index e1613fc307..4194b96652 100644 --- a/src/thread/pthread/SDL_syssem.c +++ b/src/thread/pthread/SDL_syssem.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include #include diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c index 4c23478e50..08bd182d9b 100644 --- a/src/thread/pthread/SDL_systhread.c +++ b/src/thread/pthread/SDL_systhread.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include diff --git a/src/thread/pthread/SDL_systhread_c.h b/src/thread/pthread/SDL_systhread_c.h index f134b0b33e..c5699c46bb 100644 --- a/src/thread/pthread/SDL_systhread_c.h +++ b/src/thread/pthread/SDL_systhread_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include diff --git a/src/thread/pthread/SDL_systls.c b/src/thread/pthread/SDL_systls.c index 9ef6e51ac8..cce8754c83 100644 --- a/src/thread/pthread/SDL_systls.c +++ b/src/thread/pthread/SDL_systls.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_thread.h" #include "../SDL_thread_c.h" diff --git a/src/thread/windows/SDL_sysmutex.c b/src/thread/windows/SDL_sysmutex.c index 60e9c6c87a..17e9257dc4 100644 --- a/src/thread/windows/SDL_sysmutex.c +++ b/src/thread/windows/SDL_sysmutex.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_THREAD_WINDOWS diff --git a/src/thread/windows/SDL_syssem.c b/src/thread/windows/SDL_syssem.c index 8dc72bcb94..7f178b7b6f 100644 --- a/src/thread/windows/SDL_syssem.c +++ b/src/thread/windows/SDL_syssem.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_THREAD_WINDOWS diff --git a/src/thread/windows/SDL_systhread.c b/src/thread/windows/SDL_systhread.c index aa2db2e233..3972ffdfc2 100644 --- a/src/thread/windows/SDL_systhread.c +++ b/src/thread/windows/SDL_systhread.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_THREAD_WINDOWS diff --git a/src/thread/windows/SDL_systhread_c.h b/src/thread/windows/SDL_systhread_c.h index f9f013bb7f..e346f433a3 100644 --- a/src/thread/windows/SDL_systhread_c.h +++ b/src/thread/windows/SDL_systhread_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_systhread_c_h #define _SDL_systhread_c_h diff --git a/src/thread/windows/SDL_systls.c b/src/thread/windows/SDL_systls.c index 90941ee624..6a82d2f863 100644 --- a/src/thread/windows/SDL_systls.c +++ b/src/thread/windows/SDL_systls.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_THREAD_WINDOWS diff --git a/src/timer/SDL_timer.c b/src/timer/SDL_timer.c index 2980f4dc7a..fca57ac05e 100644 --- a/src/timer/SDL_timer.c +++ b/src/timer/SDL_timer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_timer.h" #include "SDL_timer_c.h" diff --git a/src/timer/SDL_timer_c.h b/src/timer/SDL_timer_c.h index 1574853108..6fe0679ce5 100644 --- a/src/timer/SDL_timer_c.h +++ b/src/timer/SDL_timer_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Useful functions and variables from SDL_timer.c */ #include "SDL_timer.h" diff --git a/src/timer/dummy/SDL_systimer.c b/src/timer/dummy/SDL_systimer.c index 387675db1f..828610a653 100644 --- a/src/timer/dummy/SDL_systimer.c +++ b/src/timer/dummy/SDL_systimer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if defined(SDL_TIMER_DUMMY) || defined(SDL_TIMERS_DISABLED) diff --git a/src/timer/haiku/SDL_systimer.c b/src/timer/haiku/SDL_systimer.c index 591c711329..213682b3dd 100644 --- a/src/timer/haiku/SDL_systimer.c +++ b/src/timer/haiku/SDL_systimer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_TIMER_HAIKU diff --git a/src/timer/unix/SDL_systimer.c b/src/timer/unix/SDL_systimer.c index 88a40ba511..1d9636a610 100644 --- a/src/timer/unix/SDL_systimer.c +++ b/src/timer/unix/SDL_systimer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_TIMER_UNIX diff --git a/src/timer/windows/SDL_systimer.c b/src/timer/windows/SDL_systimer.c index c3b54f5df0..ebe4272e86 100644 --- a/src/timer/windows/SDL_systimer.c +++ b/src/timer/windows/SDL_systimer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_TIMER_WINDOWS diff --git a/src/video/SDL_RLEaccel.c b/src/video/SDL_RLEaccel.c index 6db43b0922..e8bfca713e 100644 --- a/src/video/SDL_RLEaccel.c +++ b/src/video/SDL_RLEaccel.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* * RLE encoding for software colorkey and alpha-channel acceleration diff --git a/src/video/SDL_RLEaccel_c.h b/src/video/SDL_RLEaccel_c.h index 986d114886..69bfa0d83d 100644 --- a/src/video/SDL_RLEaccel_c.h +++ b/src/video/SDL_RLEaccel_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Useful functions and variables from SDL_RLEaccel.c */ diff --git a/src/video/SDL_blit.c b/src/video/SDL_blit.c index 7b4f9edc9b..00bb2e1a0e 100644 --- a/src/video/SDL_blit.c +++ b/src/video/SDL_blit.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_sysvideo.h" diff --git a/src/video/SDL_blit.h b/src/video/SDL_blit.h index 07d3af7031..8eb47e173a 100644 --- a/src/video/SDL_blit.h +++ b/src/video/SDL_blit.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_blit_h #define _SDL_blit_h diff --git a/src/video/SDL_blit_0.c b/src/video/SDL_blit_0.c index ba709745e0..3f413446a1 100644 --- a/src/video/SDL_blit_0.c +++ b/src/video/SDL_blit_0.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_blit.h" diff --git a/src/video/SDL_blit_1.c b/src/video/SDL_blit_1.c index 67503e8791..a129ca9410 100644 --- a/src/video/SDL_blit_1.c +++ b/src/video/SDL_blit_1.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_blit.h" diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index 46d46136f9..bb1f3d55c4 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_blit.h" diff --git a/src/video/SDL_blit_N.c b/src/video/SDL_blit_N.c index 84c96e2dcb..25610120d8 100644 --- a/src/video/SDL_blit_N.c +++ b/src/video/SDL_blit_N.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_endian.h" diff --git a/src/video/SDL_blit_auto.c b/src/video/SDL_blit_auto.c index 251c5fe808..1e6ff3cb03 100644 --- a/src/video/SDL_blit_auto.c +++ b/src/video/SDL_blit_auto.c @@ -19,7 +19,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* *INDENT-OFF* */ diff --git a/src/video/SDL_blit_auto.h b/src/video/SDL_blit_auto.h index ed0115e72f..750c0a198f 100644 --- a/src/video/SDL_blit_auto.h +++ b/src/video/SDL_blit_auto.h @@ -19,7 +19,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* *INDENT-OFF* */ diff --git a/src/video/SDL_blit_copy.c b/src/video/SDL_blit_copy.c index 80519e099e..556f998584 100644 --- a/src/video/SDL_blit_copy.c +++ b/src/video/SDL_blit_copy.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_blit.h" diff --git a/src/video/SDL_blit_slow.c b/src/video/SDL_blit_slow.c index 1f4bce2eef..85de417a8a 100644 --- a/src/video/SDL_blit_slow.c +++ b/src/video/SDL_blit_slow.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_blit.h" diff --git a/src/video/SDL_blit_slow.h b/src/video/SDL_blit_slow.h index 15b5c79ab2..1c1a4dd1a3 100644 --- a/src/video/SDL_blit_slow.h +++ b/src/video/SDL_blit_slow.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" extern void SDL_Blit_Slow(SDL_BlitInfo * info); diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c index c8f1a1689e..65345d283f 100644 --- a/src/video/SDL_bmp.c +++ b/src/video/SDL_bmp.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Code to load and save surfaces in Windows BMP format. diff --git a/src/video/SDL_clipboard.c b/src/video/SDL_clipboard.c index 8c0626ef29..99ab20fa56 100644 --- a/src/video/SDL_clipboard.c +++ b/src/video/SDL_clipboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_clipboard.h" #include "SDL_sysvideo.h" diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 3ef24b038a..3731a6c19d 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -18,7 +18,7 @@ * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #if SDL_VIDEO_OPENGL_EGL diff --git a/src/video/SDL_egl_c.h b/src/video/SDL_egl_c.h index 30d2b2de43..75e9fbd657 100644 --- a/src/video/SDL_egl_c.h +++ b/src/video/SDL_egl_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_egl_h #define _SDL_egl_h diff --git a/src/video/SDL_fillrect.c b/src/video/SDL_fillrect.c index 51f33147ad..d1ddc8853f 100644 --- a/src/video/SDL_fillrect.c +++ b/src/video/SDL_fillrect.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_blit.h" diff --git a/src/video/SDL_pixels.c b/src/video/SDL_pixels.c index 0300155fc4..3daa85f059 100644 --- a/src/video/SDL_pixels.c +++ b/src/video/SDL_pixels.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* General (mostly internal) pixel/color manipulation routines for SDL */ diff --git a/src/video/SDL_pixels_c.h b/src/video/SDL_pixels_c.h index 0b5d9a0064..94fe38c10b 100644 --- a/src/video/SDL_pixels_c.h +++ b/src/video/SDL_pixels_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* Useful functions and variables from SDL_pixel.c */ diff --git a/src/video/SDL_rect.c b/src/video/SDL_rect.c index b6393fb2d3..5c9997a4a9 100644 --- a/src/video/SDL_rect.c +++ b/src/video/SDL_rect.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_rect.h" #include "SDL_rect_c.h" diff --git a/src/video/SDL_rect_c.h b/src/video/SDL_rect_c.h index a7fd49cf8e..1a76bac7e6 100644 --- a/src/video/SDL_rect_c.h +++ b/src/video/SDL_rect_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" extern SDL_bool SDL_GetSpanEnclosingRect(int width, int height, int numrects, const SDL_Rect * rects, SDL_Rect *span); diff --git a/src/video/SDL_shape.c b/src/video/SDL_shape.c index 308fefce5d..4f9f1c1a84 100644 --- a/src/video/SDL_shape.c +++ b/src/video/SDL_shape.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL.h" #include "SDL_assert.h" diff --git a/src/video/SDL_shape_internals.h b/src/video/SDL_shape_internals.h index 27b51241be..a74bd385c0 100644 --- a/src/video/SDL_shape_internals.h +++ b/src/video/SDL_shape_internals.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_shape_internals_h #define _SDL_shape_internals_h diff --git a/src/video/SDL_stretch.c b/src/video/SDL_stretch.c index 3eafc2055d..8f5517d066 100644 --- a/src/video/SDL_stretch.c +++ b/src/video/SDL_stretch.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* This a stretch blit implementation based on ideas given to me by Tomasz Cejner - thanks! :) diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index d4c852a16c..8ccb64438a 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #include "SDL_video.h" #include "SDL_sysvideo.h" diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 49f8363ad0..94ff9b3234 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" #ifndef _SDL_sysvideo_h #define _SDL_sysvideo_h diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 46f8ffc6eb..658ac8e14a 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* The high-level video driver subsystem */ diff --git a/src/video/android/SDL_androidclipboard.c b/src/video/android/SDL_androidclipboard.c index 19a70a305d..17420338ec 100644 --- a/src/video/android/SDL_androidclipboard.c +++ b/src/video/android/SDL_androidclipboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidclipboard.h b/src/video/android/SDL_androidclipboard.h index d1cdaf1c47..9c599350d5 100644 --- a/src/video/android/SDL_androidclipboard.h +++ b/src/video/android/SDL_androidclipboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_androidclipboard_h #define _SDL_androidclipboard_h diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c index bee9d38852..da102ccf69 100644 --- a/src/video/android/SDL_androidevents.c +++ b/src/video/android/SDL_androidevents.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidevents.h b/src/video/android/SDL_androidevents.h index 970131c712..bfab50550e 100644 --- a/src/video/android/SDL_androidevents.h +++ b/src/video/android/SDL_androidevents.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_androidvideo.h" diff --git a/src/video/android/SDL_androidgl.c b/src/video/android/SDL_androidgl.c index 010465d795..8f0d1aeddf 100644 --- a/src/video/android/SDL_androidgl.c +++ b/src/video/android/SDL_androidgl.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidkeyboard.c b/src/video/android/SDL_androidkeyboard.c index 97152b503f..034c302338 100644 --- a/src/video/android/SDL_androidkeyboard.c +++ b/src/video/android/SDL_androidkeyboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidkeyboard.h b/src/video/android/SDL_androidkeyboard.h index da8da9b750..4c1cef1a15 100644 --- a/src/video/android/SDL_androidkeyboard.h +++ b/src/video/android/SDL_androidkeyboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_androidvideo.h" diff --git a/src/video/android/SDL_androidtouch.c b/src/video/android/SDL_androidtouch.c index 208594d045..f6cc0d0d5b 100644 --- a/src/video/android/SDL_androidtouch.c +++ b/src/video/android/SDL_androidtouch.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidtouch.h b/src/video/android/SDL_androidtouch.h index 346d73a664..0601bea648 100644 --- a/src/video/android/SDL_androidtouch.h +++ b/src/video/android/SDL_androidtouch.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_androidvideo.h" diff --git a/src/video/android/SDL_androidvideo.c b/src/video/android/SDL_androidvideo.c index aea5a48d31..91247dea4a 100644 --- a/src/video/android/SDL_androidvideo.c +++ b/src/video/android/SDL_androidvideo.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidvideo.h b/src/video/android/SDL_androidvideo.h index 3f509ab222..3762f3ddc7 100644 --- a/src/video/android/SDL_androidvideo.h +++ b/src/video/android/SDL_androidvideo.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_androidvideo_h #define _SDL_androidvideo_h diff --git a/src/video/android/SDL_androidwindow.c b/src/video/android/SDL_androidwindow.c index cdc3a5cd67..673b9d98f9 100644 --- a/src/video/android/SDL_androidwindow.c +++ b/src/video/android/SDL_androidwindow.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_ANDROID diff --git a/src/video/android/SDL_androidwindow.h b/src/video/android/SDL_androidwindow.h index ed042765d2..88c1bc3217 100644 --- a/src/video/android/SDL_androidwindow.h +++ b/src/video/android/SDL_androidwindow.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_androidwindow_h #define _SDL_androidwindow_h diff --git a/src/video/cocoa/SDL_cocoaclipboard.h b/src/video/cocoa/SDL_cocoaclipboard.h index 74515dd94f..03ac3cb352 100644 --- a/src/video/cocoa/SDL_cocoaclipboard.h +++ b/src/video/cocoa/SDL_cocoaclipboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoaclipboard_h #define _SDL_cocoaclipboard_h diff --git a/src/video/cocoa/SDL_cocoaclipboard.m b/src/video/cocoa/SDL_cocoaclipboard.m index 62c34b53fc..0b7d39f7d8 100644 --- a/src/video/cocoa/SDL_cocoaclipboard.m +++ b/src/video/cocoa/SDL_cocoaclipboard.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoaevents.h b/src/video/cocoa/SDL_cocoaevents.h index 4057748bae..f9ca15dcec 100644 --- a/src/video/cocoa/SDL_cocoaevents.h +++ b/src/video/cocoa/SDL_cocoaevents.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoaevents_h #define _SDL_cocoaevents_h diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index 30a63d8f74..c0231e0a46 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA #include "SDL_timer.h" diff --git a/src/video/cocoa/SDL_cocoakeyboard.h b/src/video/cocoa/SDL_cocoakeyboard.h index 4343b9c390..2bef16078b 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.h +++ b/src/video/cocoa/SDL_cocoakeyboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoakeyboard_h #define _SDL_cocoakeyboard_h diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index f8764fb25c..406de234e0 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoamessagebox.h b/src/video/cocoa/SDL_cocoamessagebox.h index e1890b27af..0d329a46ca 100644 --- a/src/video/cocoa/SDL_cocoamessagebox.h +++ b/src/video/cocoa/SDL_cocoamessagebox.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoamessagebox.m b/src/video/cocoa/SDL_cocoamessagebox.m index 78b80ae693..f371096f66 100644 --- a/src/video/cocoa/SDL_cocoamessagebox.m +++ b/src/video/cocoa/SDL_cocoamessagebox.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoamodes.h b/src/video/cocoa/SDL_cocoamodes.h index 06ed931501..2eb79e1252 100644 --- a/src/video/cocoa/SDL_cocoamodes.h +++ b/src/video/cocoa/SDL_cocoamodes.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoamodes_h #define _SDL_cocoamodes_h diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m index 501684fc90..3eb6f05acc 100644 --- a/src/video/cocoa/SDL_cocoamodes.m +++ b/src/video/cocoa/SDL_cocoamodes.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoamouse.h b/src/video/cocoa/SDL_cocoamouse.h index eb6f5891f8..a49e5cb82e 100644 --- a/src/video/cocoa/SDL_cocoamouse.h +++ b/src/video/cocoa/SDL_cocoamouse.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoamouse_h #define _SDL_cocoamouse_h diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index e834423465..e38a4f44c3 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoamousetap.h b/src/video/cocoa/SDL_cocoamousetap.h index a13d97bb55..a656020ccb 100644 --- a/src/video/cocoa/SDL_cocoamousetap.h +++ b/src/video/cocoa/SDL_cocoamousetap.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoamousetap_h #define _SDL_cocoamousetap_h diff --git a/src/video/cocoa/SDL_cocoamousetap.m b/src/video/cocoa/SDL_cocoamousetap.m index 5b61270f58..f0f617dfa8 100644 --- a/src/video/cocoa/SDL_cocoamousetap.m +++ b/src/video/cocoa/SDL_cocoamousetap.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoaopengl.h b/src/video/cocoa/SDL_cocoaopengl.h index e7ef1f66c1..ab635e8a5f 100644 --- a/src/video/cocoa/SDL_cocoaopengl.h +++ b/src/video/cocoa/SDL_cocoaopengl.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoaopengl_h #define _SDL_cocoaopengl_h diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 443a5bc3de..54aae973fb 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" /* NSOpenGL implementation of SDL OpenGL support */ diff --git a/src/video/cocoa/SDL_cocoashape.h b/src/video/cocoa/SDL_cocoashape.h index 3b656c1a94..f415444f0d 100644 --- a/src/video/cocoa/SDL_cocoashape.h +++ b/src/video/cocoa/SDL_cocoashape.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoashape_h #define _SDL_cocoashape_h diff --git a/src/video/cocoa/SDL_cocoashape.m b/src/video/cocoa/SDL_cocoashape.m index d8034ec49b..a6ea87951b 100644 --- a/src/video/cocoa/SDL_cocoashape.m +++ b/src/video/cocoa/SDL_cocoashape.m @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoavideo.h b/src/video/cocoa/SDL_cocoavideo.h index 5f8be5316a..00ea495512 100644 --- a/src/video/cocoa/SDL_cocoavideo.h +++ b/src/video/cocoa/SDL_cocoavideo.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoavideo_h #define _SDL_cocoavideo_h diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m index d1b958768b..18408e9493 100644 --- a/src/video/cocoa/SDL_cocoavideo.m +++ b/src/video/cocoa/SDL_cocoavideo.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 44eb969362..1a7178c59c 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_cocoawindow_h #define _SDL_cocoawindow_h diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 9a88cfdeb6..f025b7c256 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_COCOA diff --git a/src/video/directfb/SDL_DirectFB_WM.c b/src/video/directfb/SDL_DirectFB_WM.c index 83912bdeda..202e7b02b8 100644 --- a/src/video/directfb/SDL_DirectFB_WM.c +++ b/src/video/directfb/SDL_DirectFB_WM.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_dyn.c b/src/video/directfb/SDL_DirectFB_dyn.c index cbbfa175b1..8b7fa8085f 100644 --- a/src/video/directfb/SDL_DirectFB_dyn.c +++ b/src/video/directfb/SDL_DirectFB_dyn.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_events.c b/src/video/directfb/SDL_DirectFB_events.c index cb669bce17..f5cd6ef32e 100644 --- a/src/video/directfb/SDL_DirectFB_events.c +++ b/src/video/directfb/SDL_DirectFB_events.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_modes.c b/src/video/directfb/SDL_DirectFB_modes.c index c6d1bb49c3..0b54acd176 100644 --- a/src/video/directfb/SDL_DirectFB_modes.c +++ b/src/video/directfb/SDL_DirectFB_modes.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_mouse.c b/src/video/directfb/SDL_DirectFB_mouse.c index fb5ed4e7b0..7c630456d5 100644 --- a/src/video/directfb/SDL_DirectFB_mouse.c +++ b/src/video/directfb/SDL_DirectFB_mouse.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_opengl.c b/src/video/directfb/SDL_DirectFB_opengl.c index fac05e6f2c..16b3bb1471 100644 --- a/src/video/directfb/SDL_DirectFB_opengl.c +++ b/src/video/directfb/SDL_DirectFB_opengl.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_render.c b/src/video/directfb/SDL_DirectFB_render.c index 219f52070a..c719e4879b 100644 --- a/src/video/directfb/SDL_DirectFB_render.c +++ b/src/video/directfb/SDL_DirectFB_render.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB #include "SDL_DirectFB_window.h" diff --git a/src/video/directfb/SDL_DirectFB_shape.c b/src/video/directfb/SDL_DirectFB_shape.c index 358078f152..75ca63b6ad 100644 --- a/src/video/directfb/SDL_DirectFB_shape.c +++ b/src/video/directfb/SDL_DirectFB_shape.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/directfb/SDL_DirectFB_video.c b/src/video/directfb/SDL_DirectFB_video.c index 4e5eae4ed1..f701d7f1f0 100644 --- a/src/video/directfb/SDL_DirectFB_video.c +++ b/src/video/directfb/SDL_DirectFB_video.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB @@ -35,7 +35,7 @@ #include "SDL_DirectFB_WM.h" -#include "SDL_config.h" +#include "../../SDL_internal.h" /* DirectFB video driver implementation. */ diff --git a/src/video/directfb/SDL_DirectFB_video.h b/src/video/directfb/SDL_DirectFB_video.h index b40bac0d53..77f6d72d8c 100644 --- a/src/video/directfb/SDL_DirectFB_video.h +++ b/src/video/directfb/SDL_DirectFB_video.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_DirectFB_video_h #define _SDL_DirectFB_video_h diff --git a/src/video/directfb/SDL_DirectFB_window.c b/src/video/directfb/SDL_DirectFB_window.c index e373d4bebc..4913f7cf14 100644 --- a/src/video/directfb/SDL_DirectFB_window.c +++ b/src/video/directfb/SDL_DirectFB_window.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DIRECTFB diff --git a/src/video/dummy/SDL_nullevents.c b/src/video/dummy/SDL_nullevents.c index 8315609a97..2271a48cf3 100644 --- a/src/video/dummy/SDL_nullevents.c +++ b/src/video/dummy/SDL_nullevents.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DUMMY diff --git a/src/video/dummy/SDL_nullevents_c.h b/src/video/dummy/SDL_nullevents_c.h index 1a8294cb80..e18bab9a0a 100644 --- a/src/video/dummy/SDL_nullevents_c.h +++ b/src/video/dummy/SDL_nullevents_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_nullvideo.h" diff --git a/src/video/dummy/SDL_nullframebuffer.c b/src/video/dummy/SDL_nullframebuffer.c index f18ceea266..93fafe4865 100644 --- a/src/video/dummy/SDL_nullframebuffer.c +++ b/src/video/dummy/SDL_nullframebuffer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DUMMY diff --git a/src/video/dummy/SDL_nullframebuffer_c.h b/src/video/dummy/SDL_nullframebuffer_c.h index 57dd2adbc9..ddd331d74a 100644 --- a/src/video/dummy/SDL_nullframebuffer_c.h +++ b/src/video/dummy/SDL_nullframebuffer_c.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int SDL_DUMMY_CreateWindowFramebuffer(_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch); extern int SDL_DUMMY_UpdateWindowFramebuffer(_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects); diff --git a/src/video/dummy/SDL_nullvideo.c b/src/video/dummy/SDL_nullvideo.c index 9d6ea67850..48cbd2d109 100644 --- a/src/video/dummy/SDL_nullvideo.c +++ b/src/video/dummy/SDL_nullvideo.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_DUMMY diff --git a/src/video/dummy/SDL_nullvideo.h b/src/video/dummy/SDL_nullvideo.h index 7d0a8259e5..94497c38bd 100644 --- a/src/video/dummy/SDL_nullvideo.h +++ b/src/video/dummy/SDL_nullvideo.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_nullvideo_h #define _SDL_nullvideo_h diff --git a/src/video/haiku/SDL_BWin.h b/src/video/haiku/SDL_BWin.h index a0fa3e7264..5aca508c42 100644 --- a/src/video/haiku/SDL_BWin.h +++ b/src/video/haiku/SDL_BWin.h @@ -26,7 +26,7 @@ extern "C" { #endif -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL.h" #include "SDL_syswm.h" #include "SDL_bframebuffer.h" diff --git a/src/video/haiku/SDL_bclipboard.cc b/src/video/haiku/SDL_bclipboard.cc index 0a68c82cfa..b75655f321 100644 --- a/src/video/haiku/SDL_bclipboard.cc +++ b/src/video/haiku/SDL_bclipboard.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bclipboard.h b/src/video/haiku/SDL_bclipboard.h index 9ffbf9e79a..2a572ffee6 100644 --- a/src/video/haiku/SDL_bclipboard.h +++ b/src/video/haiku/SDL_bclipboard.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef SDL_BCLIPBOARD_H #define SDL_BCLIPBOARD_H diff --git a/src/video/haiku/SDL_bevents.cc b/src/video/haiku/SDL_bevents.cc index bda01ef1a9..0fe930572d 100644 --- a/src/video/haiku/SDL_bevents.cc +++ b/src/video/haiku/SDL_bevents.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bframebuffer.cc b/src/video/haiku/SDL_bframebuffer.cc index ef8f51c832..4ca28ab669 100644 --- a/src/video/haiku/SDL_bframebuffer.cc +++ b/src/video/haiku/SDL_bframebuffer.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bkeyboard.cc b/src/video/haiku/SDL_bkeyboard.cc index bbc4d32430..c6ba16148f 100644 --- a/src/video/haiku/SDL_bkeyboard.cc +++ b/src/video/haiku/SDL_bkeyboard.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bmodes.cc b/src/video/haiku/SDL_bmodes.cc index 62b17dd22b..cf358d7f39 100644 --- a/src/video/haiku/SDL_bmodes.cc +++ b/src/video/haiku/SDL_bmodes.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bopengl.cc b/src/video/haiku/SDL_bopengl.cc index 4aacbb1992..22bc087de1 100644 --- a/src/video/haiku/SDL_bopengl.cc +++ b/src/video/haiku/SDL_bopengl.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bvideo.cc b/src/video/haiku/SDL_bvideo.cc index d9cc5be9a7..812291a4a2 100644 --- a/src/video/haiku/SDL_bvideo.cc +++ b/src/video/haiku/SDL_bvideo.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU diff --git a/src/video/haiku/SDL_bwindow.cc b/src/video/haiku/SDL_bwindow.cc index f91f08bde8..b3c309d18a 100644 --- a/src/video/haiku/SDL_bwindow.cc +++ b/src/video/haiku/SDL_bwindow.cc @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_HAIKU #include "../SDL_sysvideo.h" diff --git a/src/video/pandora/SDL_pandora.c b/src/video/pandora/SDL_pandora.c index 1ebf82952a..2e182bb1d5 100644 --- a/src/video/pandora/SDL_pandora.c +++ b/src/video/pandora/SDL_pandora.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_PANDORA diff --git a/src/video/pandora/SDL_pandora.h b/src/video/pandora/SDL_pandora.h index 05aafda213..a5edcd419c 100644 --- a/src/video/pandora/SDL_pandora.h +++ b/src/video/pandora/SDL_pandora.h @@ -24,7 +24,7 @@ #include -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "../SDL_sysvideo.h" typedef struct SDL_VideoData diff --git a/src/video/pandora/SDL_pandora_events.c b/src/video/pandora/SDL_pandora_events.c index de0351907e..32592821cd 100644 --- a/src/video/pandora/SDL_pandora_events.c +++ b/src/video/pandora/SDL_pandora_events.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_PANDORA diff --git a/src/video/pandora/SDL_pandora_events.h b/src/video/pandora/SDL_pandora_events.h index 9aee724745..aefe6f74a5 100644 --- a/src/video/pandora/SDL_pandora_events.h +++ b/src/video/pandora/SDL_pandora_events.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern void PND_PumpEvents(_THIS); diff --git a/src/video/psp/SDL_pspvideo.c b/src/video/psp/SDL_pspvideo.c index 64b48eb5e5..bc68a660d9 100644 --- a/src/video/psp/SDL_pspvideo.c +++ b/src/video/psp/SDL_pspvideo.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_PSP diff --git a/src/video/psp/SDL_pspvideo.h b/src/video/psp/SDL_pspvideo.h index 5b6435f56b..0ade001aba 100644 --- a/src/video/psp/SDL_pspvideo.h +++ b/src/video/psp/SDL_pspvideo.h @@ -24,7 +24,7 @@ #include -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "../SDL_sysvideo.h" typedef struct SDL_VideoData diff --git a/src/video/raspberry/SDL_rpievents.c b/src/video/raspberry/SDL_rpievents.c index 8f6cc54537..7e8559c72a 100644 --- a/src/video/raspberry/SDL_rpievents.c +++ b/src/video/raspberry/SDL_rpievents.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_RPI diff --git a/src/video/raspberry/SDL_rpimouse.c b/src/video/raspberry/SDL_rpimouse.c index 429214b912..6d222d3d92 100644 --- a/src/video/raspberry/SDL_rpimouse.c +++ b/src/video/raspberry/SDL_rpimouse.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_RPI diff --git a/src/video/raspberry/SDL_rpiopengles.c b/src/video/raspberry/SDL_rpiopengles.c index 23c89fe0d0..46d7e02916 100644 --- a/src/video/raspberry/SDL_rpiopengles.c +++ b/src/video/raspberry/SDL_rpiopengles.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_RPI && SDL_VIDEO_OPENGL_EGL diff --git a/src/video/raspberry/SDL_rpiopengles.h b/src/video/raspberry/SDL_rpiopengles.h index f98c8709d8..e1afa701e8 100644 --- a/src/video/raspberry/SDL_rpiopengles.h +++ b/src/video/raspberry/SDL_rpiopengles.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_rpiopengles_h #define _SDL_rpiopengles_h diff --git a/src/video/raspberry/SDL_rpivideo.c b/src/video/raspberry/SDL_rpivideo.c index 8d9994dd36..f9922b5f5c 100644 --- a/src/video/raspberry/SDL_rpivideo.c +++ b/src/video/raspberry/SDL_rpivideo.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_RPI diff --git a/src/video/raspberry/SDL_rpivideo.h b/src/video/raspberry/SDL_rpivideo.h index 6359badc9c..14be2e42ae 100644 --- a/src/video/raspberry/SDL_rpivideo.h +++ b/src/video/raspberry/SDL_rpivideo.h @@ -22,7 +22,7 @@ #ifndef __SDL_RPIVIDEO_H__ #define __SDL_RPIVIDEO_H__ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "../SDL_sysvideo.h" #include "bcm_host.h" diff --git a/src/video/sdlgenblit.pl b/src/video/sdlgenblit.pl index 1097488f5d..fb87f75094 100755 --- a/src/video/sdlgenblit.pl +++ b/src/video/sdlgenblit.pl @@ -100,7 +100,7 @@ sub open_file { misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../SDL_internal.h" /* *INDENT-OFF* */ diff --git a/src/video/uikit/SDL_uikitappdelegate.m b/src/video/uikit/SDL_uikitappdelegate.m index 4a32320056..7078ac5dea 100644 --- a/src/video/uikit/SDL_uikitappdelegate.m +++ b/src/video/uikit/SDL_uikitappdelegate.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitevents.m b/src/video/uikit/SDL_uikitevents.m index 16c120d79d..c94bff4b9f 100644 --- a/src/video/uikit/SDL_uikitevents.m +++ b/src/video/uikit/SDL_uikitevents.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitmessagebox.h b/src/video/uikit/SDL_uikitmessagebox.h index 7bee1ec17a..f5817579ee 100644 --- a/src/video/uikit/SDL_uikitmessagebox.h +++ b/src/video/uikit/SDL_uikitmessagebox.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitmessagebox.m b/src/video/uikit/SDL_uikitmessagebox.m index 5ec7e8b470..c01f9bc86e 100644 --- a/src/video/uikit/SDL_uikitmessagebox.m +++ b/src/video/uikit/SDL_uikitmessagebox.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitmodes.h b/src/video/uikit/SDL_uikitmodes.h index 249bda164e..edc4ca2e49 100644 --- a/src/video/uikit/SDL_uikitmodes.h +++ b/src/video/uikit/SDL_uikitmodes.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_uikitmodes_h #define _SDL_uikitmodes_h diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index f093a81c6c..54c27736e2 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitopengles.m b/src/video/uikit/SDL_uikitopengles.m index d1cb207455..f782ffd1f1 100644 --- a/src/video/uikit/SDL_uikitopengles.m +++ b/src/video/uikit/SDL_uikitopengles.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitopenglview.m b/src/video/uikit/SDL_uikitopenglview.m index b43f3455f5..4a9a69e868 100644 --- a/src/video/uikit/SDL_uikitopenglview.m +++ b/src/video/uikit/SDL_uikitopenglview.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m index 7be5b1d666..c19c637fbc 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitview.m b/src/video/uikit/SDL_uikitview.m index ca9cd06613..841ebbb34e 100644 --- a/src/video/uikit/SDL_uikitview.m +++ b/src/video/uikit/SDL_uikitview.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitviewcontroller.m b/src/video/uikit/SDL_uikitviewcontroller.m index 077c160da8..df7b90e67b 100644 --- a/src/video/uikit/SDL_uikitviewcontroller.m +++ b/src/video/uikit/SDL_uikitviewcontroller.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/uikit/SDL_uikitwindow.m b/src/video/uikit/SDL_uikitwindow.m index a8b8e67721..08b91949e7 100644 --- a/src/video/uikit/SDL_uikitwindow.m +++ b/src/video/uikit/SDL_uikitwindow.m @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_UIKIT diff --git a/src/video/windows/SDL_windowsclipboard.c b/src/video/windows/SDL_windowsclipboard.c index 15eea1aa88..2af0570636 100644 --- a/src/video/windows/SDL_windowsclipboard.c +++ b/src/video/windows/SDL_windowsclipboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsclipboard.h b/src/video/windows/SDL_windowsclipboard.h index 410e757aea..53f5d729cd 100644 --- a/src/video/windows/SDL_windowsclipboard.h +++ b/src/video/windows/SDL_windowsclipboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsclipboard_h #define _SDL_windowsclipboard_h diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index aaebc0ac1f..49ea4c7595 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsevents.h b/src/video/windows/SDL_windowsevents.h index 4fc146e766..ccf7aa0008 100644 --- a/src/video/windows/SDL_windowsevents.h +++ b/src/video/windows/SDL_windowsevents.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsevents_h #define _SDL_windowsevents_h diff --git a/src/video/windows/SDL_windowsframebuffer.c b/src/video/windows/SDL_windowsframebuffer.c index 93af4c5e83..29923bef39 100644 --- a/src/video/windows/SDL_windowsframebuffer.c +++ b/src/video/windows/SDL_windowsframebuffer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsframebuffer.h b/src/video/windows/SDL_windowsframebuffer.h index 4d7a2ba0d8..c59d28e0cb 100644 --- a/src/video/windows/SDL_windowsframebuffer.h +++ b/src/video/windows/SDL_windowsframebuffer.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int WIN_CreateWindowFramebuffer(_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch); extern int WIN_UpdateWindowFramebuffer(_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects); diff --git a/src/video/windows/SDL_windowskeyboard.c b/src/video/windows/SDL_windowskeyboard.c index 17d4eed45f..86c0074ec4 100644 --- a/src/video/windows/SDL_windowskeyboard.c +++ b/src/video/windows/SDL_windowskeyboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowskeyboard.h b/src/video/windows/SDL_windowskeyboard.h index c79d1d0ff1..cd5ee70e3d 100644 --- a/src/video/windows/SDL_windowskeyboard.h +++ b/src/video/windows/SDL_windowskeyboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowskeyboard_h #define _SDL_windowskeyboard_h diff --git a/src/video/windows/SDL_windowsmessagebox.c b/src/video/windows/SDL_windowsmessagebox.c index 06937adba9..a9fcfda650 100644 --- a/src/video/windows/SDL_windowsmessagebox.c +++ b/src/video/windows/SDL_windowsmessagebox.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsmessagebox.h b/src/video/windows/SDL_windowsmessagebox.h index 8780a2e864..1f79b16197 100644 --- a/src/video/windows/SDL_windowsmessagebox.h +++ b/src/video/windows/SDL_windowsmessagebox.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsmodes.c b/src/video/windows/SDL_windowsmodes.c index f583b0baaf..43d0c97720 100644 --- a/src/video/windows/SDL_windowsmodes.c +++ b/src/video/windows/SDL_windowsmodes.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsmodes.h b/src/video/windows/SDL_windowsmodes.h index c13670b1cb..e1926b1536 100644 --- a/src/video/windows/SDL_windowsmodes.h +++ b/src/video/windows/SDL_windowsmodes.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsmodes_h #define _SDL_windowsmodes_h diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 2298dc89a8..967e400da1 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsmouse.h b/src/video/windows/SDL_windowsmouse.h index c63eee6985..5e88184e48 100644 --- a/src/video/windows/SDL_windowsmouse.h +++ b/src/video/windows/SDL_windowsmouse.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsmouse_h #define _SDL_windowsmouse_h diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index e383e7277f..247976b8d5 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsopengl.h b/src/video/windows/SDL_windowsopengl.h index 155dbde97f..f8934b0652 100644 --- a/src/video/windows/SDL_windowsopengl.h +++ b/src/video/windows/SDL_windowsopengl.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsopengl_h #define _SDL_windowsopengl_h diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c index 8f73971eb4..79d3cc6ae2 100644 --- a/src/video/windows/SDL_windowsopengles.c +++ b/src/video/windows/SDL_windowsopengles.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS && SDL_VIDEO_OPENGL_EGL diff --git a/src/video/windows/SDL_windowsopengles.h b/src/video/windows/SDL_windowsopengles.h index f027d02ab3..c94fe52e61 100644 --- a/src/video/windows/SDL_windowsopengles.h +++ b/src/video/windows/SDL_windowsopengles.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_winopengles_h #define _SDL_winopengles_h diff --git a/src/video/windows/SDL_windowsshape.c b/src/video/windows/SDL_windowsshape.c index fdbcdfc76f..07b50560f0 100644 --- a/src/video/windows/SDL_windowsshape.c +++ b/src/video/windows/SDL_windowsshape.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsshape.h b/src/video/windows/SDL_windowsshape.h index 06aaea11e7..4be4b51b8d 100644 --- a/src/video/windows/SDL_windowsshape.h +++ b/src/video/windows/SDL_windowsshape.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsshape_h #define _SDL_windowsshape_h diff --git a/src/video/windows/SDL_windowsvideo.c b/src/video/windows/SDL_windowsvideo.c index 8f708cf0d7..b2cfcbe817 100644 --- a/src/video/windows/SDL_windowsvideo.c +++ b/src/video/windows/SDL_windowsvideo.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowsvideo.h b/src/video/windows/SDL_windowsvideo.h index 689f17708e..bf6613dedc 100644 --- a/src/video/windows/SDL_windowsvideo.h +++ b/src/video/windows/SDL_windowsvideo.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowsvideo_h #define _SDL_windowsvideo_h diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 8529cea316..5cba9ff2c7 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WINDOWS diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h index 1cf114516d..743c322f71 100644 --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_windowswindow_h #define _SDL_windowswindow_h diff --git a/src/video/x11/SDL_x11clipboard.c b/src/video/x11/SDL_x11clipboard.c index e6ca86bc39..b2adde8dfe 100644 --- a/src/video/x11/SDL_x11clipboard.c +++ b/src/video/x11/SDL_x11clipboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11clipboard.h b/src/video/x11/SDL_x11clipboard.h index 999d163f77..2c6c5516d5 100644 --- a/src/video/x11/SDL_x11clipboard.h +++ b/src/video/x11/SDL_x11clipboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11clipboard_h #define _SDL_x11clipboard_h diff --git a/src/video/x11/SDL_x11dyn.c b/src/video/x11/SDL_x11dyn.c index 24caea49f3..fa7b3ab385 100644 --- a/src/video/x11/SDL_x11dyn.c +++ b/src/video/x11/SDL_x11dyn.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11dyn.h b/src/video/x11/SDL_x11dyn.h index 168c07e225..f06fc60f2b 100644 --- a/src/video/x11/SDL_x11dyn.h +++ b/src/video/x11/SDL_x11dyn.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11dyn_h #define _SDL_x11dyn_h diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 44ca1cd7dc..1bf4219952 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11events.h b/src/video/x11/SDL_x11events.h index 3b61175598..0af685cbad 100644 --- a/src/video/x11/SDL_x11events.h +++ b/src/video/x11/SDL_x11events.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11events_h #define _SDL_x11events_h diff --git a/src/video/x11/SDL_x11framebuffer.c b/src/video/x11/SDL_x11framebuffer.c index af39147f46..2bfc0ef4d4 100644 --- a/src/video/x11/SDL_x11framebuffer.c +++ b/src/video/x11/SDL_x11framebuffer.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11framebuffer.h b/src/video/x11/SDL_x11framebuffer.h index 8e4c21ae75..f5fd4f3f99 100644 --- a/src/video/x11/SDL_x11framebuffer.h +++ b/src/video/x11/SDL_x11framebuffer.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" extern int X11_CreateWindowFramebuffer(_THIS, SDL_Window * window, diff --git a/src/video/x11/SDL_x11keyboard.c b/src/video/x11/SDL_x11keyboard.c index f3b83c968a..6b8c4df78d 100644 --- a/src/video/x11/SDL_x11keyboard.c +++ b/src/video/x11/SDL_x11keyboard.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11keyboard.h b/src/video/x11/SDL_x11keyboard.h index 5a02311512..5cab9a595e 100644 --- a/src/video/x11/SDL_x11keyboard.h +++ b/src/video/x11/SDL_x11keyboard.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11keyboard_h #define _SDL_x11keyboard_h diff --git a/src/video/x11/SDL_x11messagebox.c b/src/video/x11/SDL_x11messagebox.c index 81c1480050..1fb936a04a 100644 --- a/src/video/x11/SDL_x11messagebox.c +++ b/src/video/x11/SDL_x11messagebox.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c index ad3b56f34f..c5a1d79968 100644 --- a/src/video/x11/SDL_x11modes.c +++ b/src/video/x11/SDL_x11modes.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11modes.h b/src/video/x11/SDL_x11modes.h index 5d9789c915..7103d721f3 100644 --- a/src/video/x11/SDL_x11modes.h +++ b/src/video/x11/SDL_x11modes.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11modes_h #define _SDL_x11modes_h diff --git a/src/video/x11/SDL_x11mouse.c b/src/video/x11/SDL_x11mouse.c index 4bcd9d6c85..ea0f32dad6 100644 --- a/src/video/x11/SDL_x11mouse.c +++ b/src/video/x11/SDL_x11mouse.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11mouse.h b/src/video/x11/SDL_x11mouse.h index ee7a14afe7..d50bc32451 100644 --- a/src/video/x11/SDL_x11mouse.h +++ b/src/video/x11/SDL_x11mouse.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11mouse_h #define _SDL_x11mouse_h diff --git a/src/video/x11/SDL_x11opengl.c b/src/video/x11/SDL_x11opengl.c index a41033a706..73a65571e1 100644 --- a/src/video/x11/SDL_x11opengl.c +++ b/src/video/x11/SDL_x11opengl.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11opengl.h b/src/video/x11/SDL_x11opengl.h index 27d7f9a2fe..fcf7fe24d7 100644 --- a/src/video/x11/SDL_x11opengl.h +++ b/src/video/x11/SDL_x11opengl.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11opengl_h #define _SDL_x11opengl_h diff --git a/src/video/x11/SDL_x11opengles.c b/src/video/x11/SDL_x11opengles.c index 71517a80cb..a6cdeebc84 100644 --- a/src/video/x11/SDL_x11opengles.c +++ b/src/video/x11/SDL_x11opengles.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 && SDL_VIDEO_OPENGL_EGL diff --git a/src/video/x11/SDL_x11opengles.h b/src/video/x11/SDL_x11opengles.h index ed2a551b7f..16480c3984 100644 --- a/src/video/x11/SDL_x11opengles.h +++ b/src/video/x11/SDL_x11opengles.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11opengles_h #define _SDL_x11opengles_h diff --git a/src/video/x11/SDL_x11shape.c b/src/video/x11/SDL_x11shape.c index af89851e68..1d5ae764fe 100644 --- a/src/video/x11/SDL_x11shape.c +++ b/src/video/x11/SDL_x11shape.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11shape.h b/src/video/x11/SDL_x11shape.h index 96b4a8b0ab..3a3663d8ee 100644 --- a/src/video/x11/SDL_x11shape.h +++ b/src/video/x11/SDL_x11shape.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11shape_h #define _SDL_x11shape_h diff --git a/src/video/x11/SDL_x11touch.c b/src/video/x11/SDL_x11touch.c index a6ce981605..0e83d6c2da 100644 --- a/src/video/x11/SDL_x11touch.c +++ b/src/video/x11/SDL_x11touch.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11touch.h b/src/video/x11/SDL_x11touch.h index ac451a8578..71263d156d 100644 --- a/src/video/x11/SDL_x11touch.h +++ b/src/video/x11/SDL_x11touch.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11touch_h #define _SDL_x11touch_h diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index 49183e63c3..065211db49 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 68a0413263..005ca5d6b0 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11video_h #define _SDL_x11video_h diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index 300719999d..fe2596d543 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11window.h b/src/video/x11/SDL_x11window.h index b0eff5cf4a..b8eda772f0 100644 --- a/src/video/x11/SDL_x11window.h +++ b/src/video/x11/SDL_x11window.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11window_h #define _SDL_x11window_h diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 8993561eb2..967ddeb729 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 diff --git a/src/video/x11/SDL_x11xinput2.h b/src/video/x11/SDL_x11xinput2.h index 920c170930..ee0e276369 100644 --- a/src/video/x11/SDL_x11xinput2.h +++ b/src/video/x11/SDL_x11xinput2.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_x11xinput2_h #define _SDL_x11xinput2_h diff --git a/src/video/x11/imKStoUCS.c b/src/video/x11/imKStoUCS.c index 5dd6b1ddda..e4f086464e 100644 --- a/src/video/x11/imKStoUCS.c +++ b/src/video/x11/imKStoUCS.c @@ -22,7 +22,7 @@ be used in advertising or otherwise to promote the sale, use or other deal- ings in this Software without prior written authorization from the XFree86 Project. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_X11 From 29ffc1b3be395ce855e22daa6ed8501ea3ce507e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 9 Dec 2013 16:03:18 -0500 Subject: [PATCH 199/402] Implemented the Dynamic API magic. --- CMakeLists.txt | 1 + VisualC/SDL/SDL_VS2008.vcproj | 16 + VisualC/SDL/SDL_VS2010.vcxproj | 4 + VisualC/SDL/SDL_VS2012.vcxproj | 4 + VisualC/SDL/SDL_VS2013.vcxproj | 4 + Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj | 28 + Xcode/SDL/SDL.xcodeproj/project.pbxproj | 48 ++ configure.in | 1 + include/SDL_thread.h | 5 + premake/projects/SDL2.lua | 1 + src/SDL_internal.h | 10 + src/audio/SDL_audio.c | 4 + src/dynapi/SDL_dynapi.c | 302 ++++++++++ src/dynapi/SDL_dynapi.h | 50 ++ src/dynapi/SDL_dynapi_overrides.h | 571 +++++++++++++++++++ src/dynapi/SDL_dynapi_procs.h | 599 ++++++++++++++++++++ src/dynapi/gendynapi.pl | 141 +++++ src/haptic/windows/SDL_syshaptic.c | 4 + src/joystick/windows/SDL_dxjoystick.c | 4 + src/thread/SDL_thread.c | 8 +- src/timer/SDL_timer.c | 4 + 21 files changed, 1808 insertions(+), 1 deletion(-) create mode 100644 src/dynapi/SDL_dynapi.c create mode 100644 src/dynapi/SDL_dynapi.h create mode 100644 src/dynapi/SDL_dynapi_overrides.h create mode 100644 src/dynapi/SDL_dynapi_procs.h create mode 100755 src/dynapi/gendynapi.pl diff --git a/CMakeLists.txt b/CMakeLists.txt index bef514cb89..3871d96cd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -240,6 +240,7 @@ file(GLOB SOURCE_FILES ${SDL2_SOURCE_DIR}/src/atomic/*.c ${SDL2_SOURCE_DIR}/src/audio/*.c ${SDL2_SOURCE_DIR}/src/cpuinfo/*.c + ${SDL2_SOURCE_DIR}/src/dynapi/*.c ${SDL2_SOURCE_DIR}/src/events/*.c ${SDL2_SOURCE_DIR}/src/file/*.c ${SDL2_SOURCE_DIR}/src/libm/*.c diff --git a/VisualC/SDL/SDL_VS2008.vcproj b/VisualC/SDL/SDL_VS2008.vcproj index 7d48e6144f..fe3aed7130 100644 --- a/VisualC/SDL/SDL_VS2008.vcproj +++ b/VisualC/SDL/SDL_VS2008.vcproj @@ -1224,6 +1224,22 @@ RelativePath="..\..\src\core\windows\SDL_windows.h" > + + + + + + + + diff --git a/VisualC/SDL/SDL_VS2010.vcxproj b/VisualC/SDL/SDL_VS2010.vcxproj index 7a17ced35d..1689541164 100644 --- a/VisualC/SDL/SDL_VS2010.vcxproj +++ b/VisualC/SDL/SDL_VS2010.vcxproj @@ -479,6 +479,9 @@ + + + @@ -559,6 +562,7 @@ + diff --git a/VisualC/SDL/SDL_VS2012.vcxproj b/VisualC/SDL/SDL_VS2012.vcxproj index f60a4d9aa6..ae0ad9d1d0 100644 --- a/VisualC/SDL/SDL_VS2012.vcxproj +++ b/VisualC/SDL/SDL_VS2012.vcxproj @@ -270,6 +270,9 @@ + + + @@ -350,6 +353,7 @@ + diff --git a/VisualC/SDL/SDL_VS2013.vcxproj b/VisualC/SDL/SDL_VS2013.vcxproj index df6019a62b..110793f2d6 100644 --- a/VisualC/SDL/SDL_VS2013.vcxproj +++ b/VisualC/SDL/SDL_VS2013.vcxproj @@ -273,6 +273,9 @@ + + + @@ -352,6 +355,7 @@ + diff --git a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj index 78d1c0b8d4..8541fa3433 100755 --- a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj @@ -67,6 +67,11 @@ 04F7808512FB753F00FC43C0 /* SDL_nullframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = 04F7808312FB753F00FC43C0 /* SDL_nullframebuffer.c */; }; 04FFAB8B12E23B8D00BA343D /* SDL_atomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 04FFAB8912E23B8D00BA343D /* SDL_atomic.c */; }; 04FFAB8C12E23B8D00BA343D /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 04FFAB8A12E23B8D00BA343D /* SDL_spinlock.c */; }; + 56A6702E18565E450007D20F /* SDL_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6702D18565E450007D20F /* SDL_internal.h */; }; + 56A6703518565E760007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6703118565E760007D20F /* SDL_dynapi_overrides.h */; }; + 56A6703618565E760007D20F /* SDL_dynapi_procs.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6703218565E760007D20F /* SDL_dynapi_procs.h */; }; + 56A6703718565E760007D20F /* SDL_dynapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 56A6703318565E760007D20F /* SDL_dynapi.c */; }; + 56A6703818565E760007D20F /* SDL_dynapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6703418565E760007D20F /* SDL_dynapi.h */; }; 56C181DF17C44D5E00406AE3 /* SDL_filesystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 56C181DE17C44D5E00406AE3 /* SDL_filesystem.h */; }; 56C181E217C44D7A00406AE3 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 56C181E117C44D7A00406AE3 /* SDL_sysfilesystem.m */; }; 56EA86FB13E9EC2B002E47EB /* SDL_coreaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 56EA86F913E9EC2B002E47EB /* SDL_coreaudio.c */; }; @@ -260,6 +265,11 @@ 04F7808312FB753F00FC43C0 /* SDL_nullframebuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_nullframebuffer.c; sourceTree = ""; }; 04FFAB8912E23B8D00BA343D /* SDL_atomic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_atomic.c; sourceTree = ""; }; 04FFAB8A12E23B8D00BA343D /* SDL_spinlock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_spinlock.c; sourceTree = ""; }; + 56A6702D18565E450007D20F /* SDL_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_internal.h; path = ../../src/SDL_internal.h; sourceTree = ""; }; + 56A6703118565E760007D20F /* SDL_dynapi_overrides.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi_overrides.h; path = ../../src/dynapi/SDL_dynapi_overrides.h; sourceTree = ""; }; + 56A6703218565E760007D20F /* SDL_dynapi_procs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi_procs.h; path = ../../src/dynapi/SDL_dynapi_procs.h; sourceTree = ""; }; + 56A6703318565E760007D20F /* SDL_dynapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_dynapi.c; path = ../../src/dynapi/SDL_dynapi.c; sourceTree = ""; }; + 56A6703418565E760007D20F /* SDL_dynapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi.h; path = ../../src/dynapi/SDL_dynapi.h; sourceTree = ""; }; 56C181DE17C44D5E00406AE3 /* SDL_filesystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_filesystem.h; sourceTree = ""; }; 56C181E117C44D7A00406AE3 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_sysfilesystem.m; path = ../../src/filesystem/cocoa/SDL_sysfilesystem.m; sourceTree = ""; }; 56EA86F913E9EC2B002E47EB /* SDL_coreaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_coreaudio.c; path = coreaudio/SDL_coreaudio.c; sourceTree = ""; }; @@ -552,6 +562,17 @@ name = CustomTemplate; sourceTree = ""; }; + 56A6702F18565E4F0007D20F /* dynapi */ = { + isa = PBXGroup; + children = ( + 56A6703118565E760007D20F /* SDL_dynapi_overrides.h */, + 56A6703218565E760007D20F /* SDL_dynapi_procs.h */, + 56A6703318565E760007D20F /* SDL_dynapi.c */, + 56A6703418565E760007D20F /* SDL_dynapi.h */, + ); + name = dynapi; + sourceTree = ""; + }; 56C181E017C44D6900406AE3 /* filesystem */ = { isa = PBXGroup; children = ( @@ -737,6 +758,7 @@ 04B2ECEF1025CEB900F9BC5F /* atomic */, FD99B8FB0DD52EDC00FB1D6B /* audio */, FD99B98A0DD52EDC00FB1D6B /* cpuinfo */, + 56A6702F18565E4F0007D20F /* dynapi */, FD99B98C0DD52EDC00FB1D6B /* events */, FD99B99D0DD52EDC00FB1D6B /* file */, 56C181E017C44D6900406AE3 /* filesystem */, @@ -749,6 +771,7 @@ FD99B9E00DD52EDC00FB1D6B /* thread */, FD99BA1E0DD52EDC00FB1D6B /* timer */, FDA682420DF2374D00F98A1A /* video */, + 56A6702D18565E450007D20F /* SDL_internal.h */, 04F2AF551104ABD200D6DDF7 /* SDL_assert.c */, 04BAC09A1300C1290055DE28 /* SDL_assert_c.h */, FD99B9D40DD52EDC00FB1D6B /* SDL_error_c.h */, @@ -941,6 +964,7 @@ FDA684530DF2374E00F98A1A /* SDL_blit_auto.h in Headers */, FDA684550DF2374E00F98A1A /* SDL_blit_copy.h in Headers */, FDA6845D0DF2374E00F98A1A /* SDL_pixels_c.h in Headers */, + 56A6703618565E760007D20F /* SDL_dynapi_procs.h in Headers */, FDA684630DF2374E00F98A1A /* SDL_RLEaccel_c.h in Headers */, FDA684670DF2374E00F98A1A /* SDL_sysvideo.h in Headers */, FDA685FC0DF244C800F98A1A /* SDL_nullevents_c.h in Headers */, @@ -953,7 +977,9 @@ FD689F200E26E5D900F90B21 /* SDL_uikitvideo.h in Headers */, FD689F240E26E5D900F90B21 /* SDL_uikitwindow.h in Headers */, FD689F260E26E5D900F90B21 /* SDL_uikitopenglview.h in Headers */, + 56A6703818565E760007D20F /* SDL_dynapi.h in Headers */, FD689FCF0E26E9D400F90B21 /* SDL_uikitappdelegate.h in Headers */, + 56A6703518565E760007D20F /* SDL_dynapi_overrides.h in Headers */, 047677BD0EA76A31008ABAF1 /* SDL_syshaptic.h in Headers */, 046387420F0B5B7D0041FD65 /* SDL_blit_slow.h in Headers */, 006E9888119552DD001DE610 /* SDL_rwopsbundlesupport.h in Headers */, @@ -989,6 +1015,7 @@ AA7558A21595D55500BBD41B /* SDL_cpuinfo.h in Headers */, AA7558A31595D55500BBD41B /* SDL_endian.h in Headers */, AA7558A41595D55500BBD41B /* SDL_error.h in Headers */, + 56A6702E18565E450007D20F /* SDL_internal.h in Headers */, AA7558A51595D55500BBD41B /* SDL_events.h in Headers */, AA7558A61595D55500BBD41B /* SDL_gesture.h in Headers */, AA7558A71595D55500BBD41B /* SDL_haptic.h in Headers */, @@ -1117,6 +1144,7 @@ FD6526700DE8FCDD002AD96B /* SDL_cpuinfo.c in Sources */, FD6526710DE8FCDD002AD96B /* SDL_events.c in Sources */, FD6526720DE8FCDD002AD96B /* SDL_keyboard.c in Sources */, + 56A6703718565E760007D20F /* SDL_dynapi.c in Sources */, FD6526730DE8FCDD002AD96B /* SDL_mouse.c in Sources */, FD6526740DE8FCDD002AD96B /* SDL_quit.c in Sources */, FD6526750DE8FCDD002AD96B /* SDL_windowevents.c in Sources */, diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj index 9002cc656f..fa8e493474 100755 --- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj @@ -393,6 +393,21 @@ 566CDE90148F0AC200C5A9BB /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = 566CDE8E148F0AC200C5A9BB /* SDL_dropevents.c */; }; 567E2F1C17C44BB2005F1892 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = 567E2F1B17C44BB2005F1892 /* SDL_sysfilesystem.m */; }; 567E2F2117C44C35005F1892 /* SDL_filesystem.h in Headers */ = {isa = PBXBuildFile; fileRef = 567E2F2017C44C35005F1892 /* SDL_filesystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56A670091856545C0007D20F /* SDL_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A670081856545C0007D20F /* SDL_internal.h */; }; + 56A6700A1856545C0007D20F /* SDL_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A670081856545C0007D20F /* SDL_internal.h */; }; + 56A6700B1856545C0007D20F /* SDL_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A670081856545C0007D20F /* SDL_internal.h */; }; + 56A67021185654B40007D20F /* SDL_dynapi_procs.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6701D185654B40007D20F /* SDL_dynapi_procs.h */; }; + 56A67022185654B40007D20F /* SDL_dynapi_procs.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6701D185654B40007D20F /* SDL_dynapi_procs.h */; }; + 56A67023185654B40007D20F /* SDL_dynapi_procs.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6701D185654B40007D20F /* SDL_dynapi_procs.h */; }; + 56A67024185654B40007D20F /* SDL_dynapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 56A6701E185654B40007D20F /* SDL_dynapi.c */; }; + 56A67025185654B40007D20F /* SDL_dynapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 56A6701E185654B40007D20F /* SDL_dynapi.c */; }; + 56A67026185654B40007D20F /* SDL_dynapi.c in Sources */ = {isa = PBXBuildFile; fileRef = 56A6701E185654B40007D20F /* SDL_dynapi.c */; }; + 56A67027185654B40007D20F /* SDL_dynapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6701F185654B40007D20F /* SDL_dynapi.h */; }; + 56A67028185654B40007D20F /* SDL_dynapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6701F185654B40007D20F /* SDL_dynapi.h */; }; + 56A67029185654B40007D20F /* SDL_dynapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A6701F185654B40007D20F /* SDL_dynapi.h */; }; + 56A6702A185654B40007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */; }; + 56A6702B185654B40007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */; }; + 56A6702C185654B40007D20F /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */; }; A77E6EB4167AB0A90010E40B /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */; settings = {ATTRIBUTES = (Public, ); }; }; A77E6EB5167AB0A90010E40B /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */; settings = {ATTRIBUTES = (Public, ); }; }; AA0AD09D16648D1700CE5896 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = BBFC088A164C6514003E6A99 /* SDL_gamecontroller.c */; }; @@ -994,6 +1009,11 @@ 566CDE8E148F0AC200C5A9BB /* SDL_dropevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dropevents.c; sourceTree = ""; }; 567E2F1B17C44BB2005F1892 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_sysfilesystem.m; path = ../../src/filesystem/cocoa/SDL_sysfilesystem.m; sourceTree = ""; }; 567E2F2017C44C35005F1892 /* SDL_filesystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_filesystem.h; sourceTree = ""; }; + 56A670081856545C0007D20F /* SDL_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_internal.h; path = ../../src/SDL_internal.h; sourceTree = ""; }; + 56A6701D185654B40007D20F /* SDL_dynapi_procs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi_procs.h; path = ../../src/dynapi/SDL_dynapi_procs.h; sourceTree = ""; }; + 56A6701E185654B40007D20F /* SDL_dynapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_dynapi.c; path = ../../src/dynapi/SDL_dynapi.c; sourceTree = ""; }; + 56A6701F185654B40007D20F /* SDL_dynapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi.h; path = ../../src/dynapi/SDL_dynapi.h; sourceTree = ""; }; + 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dynapi_overrides.h; path = ../../src/dynapi/SDL_dynapi_overrides.h; sourceTree = ""; }; A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = ""; }; AA0F8490178D5ECC00823F9D /* SDL_systls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = ""; }; AA628AC8159367B7005138DD /* SDL_rotate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_rotate.c; sourceTree = ""; }; @@ -1651,6 +1671,7 @@ 04BDFD7312E6671700899322 /* atomic */, 04BDFD7612E6671700899322 /* audio */, 04BDFDD312E6671700899322 /* cpuinfo */, + 56A6701C1856549B0007D20F /* dynapi */, 04BDFDD512E6671700899322 /* events */, 567E2F1F17C44BBB005F1892 /* filesystem */, 04BDFDEC12E6671700899322 /* file */, @@ -1663,6 +1684,7 @@ 04BDFE6412E6671800899322 /* thread */, 04BDFE9512E6671800899322 /* timer */, 04BDFEA712E6671800899322 /* video */, + 56A670081856545C0007D20F /* SDL_internal.h */, 04BDFE5512E6671700899322 /* SDL_assert_c.h */, 04BDFE5612E6671700899322 /* SDL_assert.c */, 04BDFE5812E6671700899322 /* SDL_error_c.h */, @@ -1682,6 +1704,17 @@ name = filesystem; sourceTree = ""; }; + 56A6701C1856549B0007D20F /* dynapi */ = { + isa = PBXGroup; + children = ( + 56A6701D185654B40007D20F /* SDL_dynapi_procs.h */, + 56A6701E185654B40007D20F /* SDL_dynapi.c */, + 56A6701F185654B40007D20F /* SDL_dynapi.h */, + 56A67020185654B40007D20F /* SDL_dynapi_overrides.h */, + ); + name = dynapi; + sourceTree = ""; + }; BEC562FE0761C0E800A33029 /* Linked Frameworks */ = { isa = PBXGroup; children = ( @@ -1747,6 +1780,7 @@ AA7558061595D4D800BBD41B /* SDL_clipboard.h in Headers */, AA7558081595D4D800BBD41B /* SDL_config_macosx.h in Headers */, AA75580A1595D4D800BBD41B /* SDL_config.h in Headers */, + 56A670091856545C0007D20F /* SDL_internal.h in Headers */, AA75580C1595D4D800BBD41B /* SDL_copying.h in Headers */, AA75580E1595D4D800BBD41B /* SDL_cpuinfo.h in Headers */, AA7558101595D4D800BBD41B /* SDL_endian.h in Headers */, @@ -1805,6 +1839,7 @@ 04BD004512E6671800899322 /* scancodes_linux.h in Headers */, 04BD004712E6671800899322 /* scancodes_xfree86.h in Headers */, 04BD004912E6671800899322 /* SDL_clipboardevents_c.h in Headers */, + 56A6702A185654B40007D20F /* SDL_dynapi_overrides.h in Headers */, 04BD004B12E6671800899322 /* SDL_events_c.h in Headers */, 04BD004D12E6671800899322 /* SDL_gesture_c.h in Headers */, 04BD004F12E6671800899322 /* SDL_keyboard_c.h in Headers */, @@ -1855,6 +1890,7 @@ 04BD01EE12E6671800899322 /* SDL_x11opengles.h in Headers */, 04BD01F212E6671800899322 /* SDL_x11shape.h in Headers */, 04BD01F312E6671800899322 /* SDL_x11sym.h in Headers */, + 56A67021185654B40007D20F /* SDL_dynapi_procs.h in Headers */, 04BD01F512E6671800899322 /* SDL_x11touch.h in Headers */, 04BD01F712E6671800899322 /* SDL_x11video.h in Headers */, 04BD01F912E6671800899322 /* SDL_x11window.h in Headers */, @@ -1865,6 +1901,7 @@ 04F7804A12FB74A200FC43C0 /* SDL_blendfillrect.h in Headers */, 04F7804C12FB74A200FC43C0 /* SDL_blendline.h in Headers */, 04F7804E12FB74A200FC43C0 /* SDL_blendpoint.h in Headers */, + 56A67027185654B40007D20F /* SDL_dynapi.h in Headers */, 04F7804F12FB74A200FC43C0 /* SDL_draw.h in Headers */, 04F7805112FB74A200FC43C0 /* SDL_drawline.h in Headers */, 04F7805312FB74A200FC43C0 /* SDL_drawpoint.h in Headers */, @@ -1917,6 +1954,7 @@ AA75582F1595D4D800BBD41B /* SDL_name.h in Headers */, AA7558311595D4D800BBD41B /* SDL_opengl.h in Headers */, AA7558331595D4D800BBD41B /* SDL_opengles.h in Headers */, + 56A67028185654B40007D20F /* SDL_dynapi.h in Headers */, AA7558351595D4D800BBD41B /* SDL_opengles2.h in Headers */, AA7558371595D4D800BBD41B /* SDL_pixels.h in Headers */, AA7558391595D4D800BBD41B /* SDL_platform.h in Headers */, @@ -1928,6 +1966,7 @@ AA7558451595D4D800BBD41B /* SDL_rwops.h in Headers */, AA7558471595D4D800BBD41B /* SDL_scancode.h in Headers */, AA7558491595D4D800BBD41B /* SDL_shape.h in Headers */, + 56A6702B185654B40007D20F /* SDL_dynapi_overrides.h in Headers */, AA75584B1595D4D800BBD41B /* SDL_stdinc.h in Headers */, AA75584D1595D4D800BBD41B /* SDL_surface.h in Headers */, AA75584F1595D4D800BBD41B /* SDL_system.h in Headers */, @@ -1939,6 +1978,7 @@ AA75585B1595D4D800BBD41B /* SDL_version.h in Headers */, AA75585D1595D4D800BBD41B /* SDL_video.h in Headers */, 04BD022512E6671800899322 /* SDL_diskaudio.h in Headers */, + 56A6700A1856545C0007D20F /* SDL_internal.h in Headers */, 04BD022D12E6671800899322 /* SDL_dummyaudio.h in Headers */, 04BD023512E6671800899322 /* SDL_coreaudio.h in Headers */, 04BD024312E6671800899322 /* SDL_audio_c.h in Headers */, @@ -1953,6 +1993,7 @@ 04BD026212E6671800899322 /* scancodes_xfree86.h in Headers */, 04BD026412E6671800899322 /* SDL_clipboardevents_c.h in Headers */, 04BD026612E6671800899322 /* SDL_events_c.h in Headers */, + 56A67022185654B40007D20F /* SDL_dynapi_procs.h in Headers */, 04BD026812E6671800899322 /* SDL_gesture_c.h in Headers */, 04BD026A12E6671800899322 /* SDL_keyboard_c.h in Headers */, 04BD026C12E6671800899322 /* SDL_mouse_c.h in Headers */, @@ -2063,6 +2104,7 @@ DB313FE117554B71006C0E22 /* SDL_name.h in Headers */, DB313FE217554B71006C0E22 /* SDL_opengl.h in Headers */, DB313FE317554B71006C0E22 /* SDL_opengles.h in Headers */, + 56A67029185654B40007D20F /* SDL_dynapi.h in Headers */, DB313FE417554B71006C0E22 /* SDL_opengles2.h in Headers */, DB313FE517554B71006C0E22 /* SDL_pixels.h in Headers */, DB313FE617554B71006C0E22 /* SDL_platform.h in Headers */, @@ -2074,6 +2116,7 @@ DB313FEC17554B71006C0E22 /* SDL_rwops.h in Headers */, DB313FED17554B71006C0E22 /* SDL_scancode.h in Headers */, DB313FEE17554B71006C0E22 /* SDL_shape.h in Headers */, + 56A6702C185654B40007D20F /* SDL_dynapi_overrides.h in Headers */, DB313FEF17554B71006C0E22 /* SDL_stdinc.h in Headers */, DB313FF017554B71006C0E22 /* SDL_surface.h in Headers */, DB313FF117554B71006C0E22 /* SDL_system.h in Headers */, @@ -2085,6 +2128,7 @@ DB313FF717554B71006C0E22 /* SDL_version.h in Headers */, DB313FF817554B71006C0E22 /* SDL_video.h in Headers */, DB313F7417554B71006C0E22 /* SDL_diskaudio.h in Headers */, + 56A6700B1856545C0007D20F /* SDL_internal.h in Headers */, DB313F7517554B71006C0E22 /* SDL_dummyaudio.h in Headers */, DB313F7617554B71006C0E22 /* SDL_coreaudio.h in Headers */, DB313F7717554B71006C0E22 /* SDL_audio_c.h in Headers */, @@ -2099,6 +2143,7 @@ DB313F8017554B71006C0E22 /* scancodes_xfree86.h in Headers */, DB313F8117554B71006C0E22 /* SDL_clipboardevents_c.h in Headers */, DB313F8217554B71006C0E22 /* SDL_events_c.h in Headers */, + 56A67023185654B40007D20F /* SDL_dynapi_procs.h in Headers */, DB313F8317554B71006C0E22 /* SDL_gesture_c.h in Headers */, DB313F8417554B71006C0E22 /* SDL_keyboard_c.h in Headers */, DB313F8517554B71006C0E22 /* SDL_mouse_c.h in Headers */, @@ -2442,6 +2487,7 @@ 0442EC1D12FE1BCB004C9285 /* SDL_render_sw.c in Sources */, 0442EC5A12FE1C60004C9285 /* SDL_x11framebuffer.c in Sources */, 0442EC5F12FE1C75004C9285 /* SDL_hints.c in Sources */, + 56A67024185654B40007D20F /* SDL_dynapi.c in Sources */, 04BAC0C81300C2160055DE28 /* SDL_log.c in Sources */, 0435673E1303160F00BA5428 /* SDL_shaders_gl.c in Sources */, 566CDE90148F0AC200C5A9BB /* SDL_dropevents.c in Sources */, @@ -2560,6 +2606,7 @@ 04F7805E12FB74A200FC43C0 /* SDL_drawpoint.c in Sources */, 0442EC1912FE1BBA004C9285 /* SDL_render_gl.c in Sources */, 0442EC1F12FE1BCB004C9285 /* SDL_render_sw.c in Sources */, + 56A67025185654B40007D20F /* SDL_dynapi.c in Sources */, 0442EC5C12FE1C60004C9285 /* SDL_x11framebuffer.c in Sources */, 0442EC6012FE1C75004C9285 /* SDL_hints.c in Sources */, 04BAC0C91300C2160055DE28 /* SDL_log.c in Sources */, @@ -2678,6 +2725,7 @@ DB31406017554B71006C0E22 /* SDL_drawpoint.c in Sources */, DB31406117554B71006C0E22 /* SDL_render_gl.c in Sources */, DB31406217554B71006C0E22 /* SDL_render_sw.c in Sources */, + 56A67026185654B40007D20F /* SDL_dynapi.c in Sources */, DB31406317554B71006C0E22 /* SDL_x11framebuffer.c in Sources */, DB31406417554B71006C0E22 /* SDL_hints.c in Sources */, DB31406517554B71006C0E22 /* SDL_log.c in Sources */, diff --git a/configure.in b/configure.in index 5a5f7da1e6..17f5d187c5 100644 --- a/configure.in +++ b/configure.in @@ -326,6 +326,7 @@ SOURCES="$SOURCES $srcdir/src/*.c" SOURCES="$SOURCES $srcdir/src/atomic/*.c" SOURCES="$SOURCES $srcdir/src/audio/*.c" SOURCES="$SOURCES $srcdir/src/cpuinfo/*.c" +SOURCES="$SOURCES $srcdir/src/dynapi/*.c" SOURCES="$SOURCES $srcdir/src/events/*.c" SOURCES="$SOURCES $srcdir/src/file/*.c" SOURCES="$SOURCES $srcdir/src/haptic/*.c" diff --git a/include/SDL_thread.h b/include/SDL_thread.h index f1e01c920f..8f50f6e50d 100644 --- a/include/SDL_thread.h +++ b/include/SDL_thread.h @@ -111,7 +111,12 @@ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, /** * Create a thread. */ +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) +#else #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) +#endif #else diff --git a/premake/projects/SDL2.lua b/premake/projects/SDL2.lua index 56dee8e219..e5a4aa0811 100755 --- a/premake/projects/SDL2.lua +++ b/premake/projects/SDL2.lua @@ -69,6 +69,7 @@ SDL_project "SDL2" "/audio/disk/", "/audio/dummy/", "/cpuinfo/", + "/dynapi/", "/events/", "/file/", "/haptic/", diff --git a/src/SDL_internal.h b/src/SDL_internal.h index b3578769c8..3ccae74c98 100644 --- a/src/SDL_internal.h +++ b/src/SDL_internal.h @@ -21,6 +21,16 @@ #ifndef _SDL_internal_h #define _SDL_internal_h +#include "dynapi/SDL_dynapi.h" + +#if SDL_DYNAMIC_API +#include "dynapi/SDL_dynapi_overrides.h" +/* force DECLSPEC and SDLCALL off...it's all internal symbols now. + These will have actual #defines during SDL_dynapi.c only */ +#define DECLSPEC +#define SDLCALL +#endif + #include "SDL_config.h" #endif diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index a21af0b127..c068887ae4 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -1036,7 +1036,11 @@ open_audio_device(const char *devname, int iscapture, /* !!! FIXME: this is nasty. */ #if defined(__WIN32__) && !defined(HAVE_LIBC) #undef SDL_CreateThread +#if SDL_DYNAMIC_API + device->thread = SDL_CreateThread_REAL(SDL_RunAudio, name, device, NULL, NULL); +#else device->thread = SDL_CreateThread(SDL_RunAudio, name, device, NULL, NULL); +#endif #else device->thread = SDL_CreateThread(SDL_RunAudio, name, device); #endif diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c new file mode 100644 index 0000000000..f04a9048e1 --- /dev/null +++ b/src/dynapi/SDL_dynapi.c @@ -0,0 +1,302 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#include "SDL_config.h" +#include "SDL_dynapi.h" + +#if SDL_DYNAMIC_API + +#include "SDL.h" + +/* !!! FIXME: Shouldn't these be included in SDL.h? */ +#include "SDL_shape.h" +#include "SDL_syswm.h" + +/* This is the version of the dynamic API. This doesn't match the SDL version + and should not change until there's been a major revamp in API/ABI. + So 2.0.5 adds functions over 2.0.4? This number doesn't change; + the sizeof (jump_table) changes instead. But 2.1.0 changes how a function + works in an incompatible way or removes a function? This number changes, + since sizeof (jump_table) isn't sufficient anymore. It's likely + we'll forget to bump every time we add a function, so this is the + failsafe switch for major API change decisions. Respect it and use it + sparingly. */ +#define SDL_DYNAPI_VERSION 1 + +static void SDL_InitDynamicAPI(void); + + +/* BE CAREFUL CALLING ANY SDL CODE IN HERE, IT WILL BLOW UP. + Even self-contained stuff might call SDL_Error and break everything. */ + + +/* behold, the macro salsa! */ + +/* !!! FIXME: ...disabled...until we write it. :) */ +#define DISABLE_JUMP_MAGIC 1 + +#if DISABLE_JUMP_MAGIC +/* Can't use the macro for varargs nonsense. This is atrocious. */ +#define SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, logname, prio) \ + _static void SDL_Log##logname##name(int category, const char *fmt, ...) { \ + va_list ap; initcall; va_start(ap, fmt); \ + jump_table.SDL_LogMessageV(category, SDL_LOG_PRIORITY_##prio, fmt, ap); \ + va_end(ap); \ + } + +#define SDL_DYNAPI_VARARGS(_static, name, initcall) \ + _static int SDL_SetError##name(const char *fmt, ...) { \ + char buf[512]; /* !!! FIXME: dynamic allocation */ \ + va_list ap; initcall; va_start(ap, fmt); \ + jump_table.SDL_vsnprintf(buf, sizeof (buf), fmt, ap); \ + va_end(ap); \ + return jump_table.SDL_SetError("%s", buf); \ + } \ + _static int SDL_sscanf##name(const char *buf, const char *fmt, ...) { \ + int retval; va_list ap; initcall; va_start(ap, fmt); \ + retval = jump_table.SDL_vsscanf(buf, fmt, ap); \ + va_end(ap); \ + return retval; \ + } \ + _static int SDL_snprintf##name(char *buf, size_t buflen, const char *fmt, ...) { \ + int retval; va_list ap; initcall; va_start(ap, fmt); \ + retval = jump_table.SDL_vsnprintf(buf, buflen, fmt, ap); \ + va_end(ap); \ + return retval; \ + } \ + _static void SDL_Log##name(const char *fmt, ...) { \ + va_list ap; initcall; va_start(ap, fmt); \ + jump_table.SDL_LogMessageV(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, fmt, ap); \ + va_end(ap); \ + } \ + _static void SDL_LogMessage##name(int category, SDL_LogPriority priority, const char *fmt, ...) { \ + va_list ap; initcall; va_start(ap, fmt); \ + jump_table.SDL_LogMessageV(category, priority, fmt, ap); \ + va_end(ap); \ + } \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Verbose, VERBOSE) \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Debug, DEBUG) \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Info, INFO) \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Warn, WARN) \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Error, ERROR) \ + SDL_DYNAPI_VARARGS_LOGFN(_static, name, initcall, Critical, CRITICAL) +#endif + + +/* Typedefs for function pointers for jump table, and predeclare funcs */ +/* The DEFAULT funcs will init jump table and then call real function. */ +/* The REAL funcs are the actual functions, name-mangled to not clash. */ +#define SDL_DYNAPI_PROC(rc,fn,params,args,ret) \ + typedef rc (*SDL_DYNAPIFN_##fn) params; \ + static rc fn##_DEFAULT params; \ + extern rc fn##_REAL params; +#include "SDL_dynapi_procs.h" +#undef SDL_DYNAPI_PROC + +/* The jump table! */ +typedef struct { + #define SDL_DYNAPI_PROC(rc,fn,params,args,ret) SDL_DYNAPIFN_##fn fn; + #include "SDL_dynapi_procs.h" + #undef SDL_DYNAPI_PROC +} SDL_DYNAPI_jump_table; + +/* Predeclare the default functions for initializing the jump table. */ +#define SDL_DYNAPI_PROC(rc,fn,params,args,ret) static rc fn##_DEFAULT params; +#include "SDL_dynapi_procs.h" +#undef SDL_DYNAPI_PROC + +/* The actual jump table. */ +static SDL_DYNAPI_jump_table jump_table = { + #define SDL_DYNAPI_PROC(rc,fn,params,args,ret) fn##_DEFAULT, + #include "SDL_dynapi_procs.h" + #undef SDL_DYNAPI_PROC +}; + +/* Default functions init the function table then call right thing. */ +#if DISABLE_JUMP_MAGIC +#define SDL_DYNAPI_PROC(rc,fn,params,args,ret) \ + static rc fn##_DEFAULT params { \ + SDL_InitDynamicAPI(); \ + ret jump_table.fn args; \ + } +#define SDL_DYNAPI_PROC_NO_VARARGS 1 +#include "SDL_dynapi_procs.h" +#undef SDL_DYNAPI_PROC +#undef SDL_DYNAPI_PROC_NO_VARARGS +SDL_DYNAPI_VARARGS(static, _DEFAULT, SDL_InitDynamicAPI()) +#else +/* !!! FIXME: need the jump magic. */ +#error Write me. +#endif + +/* Public API functions to jump into the jump table. */ +#if DISABLE_JUMP_MAGIC +#define SDL_DYNAPI_PROC(rc,fn,params,args,ret) \ + rc fn params { ret jump_table.fn args; } +#define SDL_DYNAPI_PROC_NO_VARARGS 1 +#include "SDL_dynapi_procs.h" +#undef SDL_DYNAPI_PROC +#undef SDL_DYNAPI_PROC_NO_VARARGS +SDL_DYNAPI_VARARGS(,,) +#else +/* !!! FIXME: need the jump magic. */ +#error Write me. +#endif + + + +/* Here's the exported entry point that fills in the jump table. */ +/* Use specific types when an "int" might suffice to keep this sane. */ +typedef Sint32 (SDLCALL *SDL_DYNAPI_ENTRYFN)(Uint32 apiver, void *table, Uint32 tablesize); +extern DECLSPEC Sint32 SDLCALL SDL_DYNAPI_entry(Uint32, void *, Uint32); + +Sint32 +SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize) +{ + SDL_DYNAPI_jump_table *output_jump_table = (SDL_DYNAPI_jump_table *) table; + + if (apiver != SDL_DYNAPI_VERSION) { + /* !!! FIXME: can maybe handle older versions? */ + return -1; /* not compatible. */ + } else if (tablesize > sizeof (jump_table)) { + return -1; /* newer version of SDL with functions we can't provide. */ + } + + /* Init our jump table first. */ + #define SDL_DYNAPI_PROC(rc,fn,params,args,ret) jump_table.fn = fn##_REAL; + #include "SDL_dynapi_procs.h" + #undef SDL_DYNAPI_PROC + + /* Then the external table... */ + if (output_jump_table != &jump_table) { + jump_table.SDL_memcpy(output_jump_table, &jump_table, tablesize); + } + + /* Safe to call SDL functions now; jump table is initialized! */ + + return 0; /* success! */ +} + + +/* Obviously we can't use SDL_LoadObject() to load SDL. :) */ +/* Also obviously, we never close the loaded library. */ +#if defined(_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +static SDL_INLINE void *get_sdlapi_entry(const char *fname, const char *sym) +{ + HANDLE lib = LoadLibraryA(fname); + return lib ? GetProcAddress(lib, sym) : NULL; +} + +#elif defined(__HAIKU__) +#include +static SDL_INLINE void *get_sdlapi_entry(const char *fname, const char *sym) +{ + image_id lib = load_add_on(fname); + void *retval = NULL; + if ((lib < 0) || (get_image_symbol(lib, sym, B_SYMBOL_TYPE_TEXT, &retval) != B_NO_ERROR)) { + retval = NULL; + } + return retval; +} +#elif defined(unix) || defined(__APPLE__) +#include +static SDL_INLINE void *get_sdlapi_entry(const char *fname, const char *sym) +{ + void *lib = dlopen(fname, RTLD_NOW | RTLD_LOCAL); + return lib ? dlsym(lib, sym) : NULL; +} +#else +#error Please define your platform. +#endif + + +static void +SDL_InitDynamicAPILocked(void) +{ + const char *libname = SDL_getenv_REAL("SDL_DYNAMIC_API"); + SDL_DYNAPI_ENTRYFN entry = SDL_DYNAPI_entry; /* funcs from here by default. */ + + if (libname) { + entry = (SDL_DYNAPI_ENTRYFN) get_sdlapi_entry(libname, "SDL_DYNAPI_entry"); + if (!entry) { + /* !!! FIXME: fail to startup here instead? */ + /* !!! FIXME: definitely warn user. */ + /* Just fill in the function pointers from this library. */ + entry = SDL_DYNAPI_entry; + } + } + + if (entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table)) < 0) { + /* !!! FIXME: fail to startup here instead? */ + /* !!! FIXME: definitely warn user. */ + /* Just fill in the function pointers from this library. */ + if (entry != SDL_DYNAPI_entry) { + if (!SDL_DYNAPI_entry(SDL_DYNAPI_VERSION, &jump_table, sizeof (jump_table))) { + /* !!! FIXME: now we're screwed. Should definitely abort now. */ + } + } + } + + /* we intentionally never close the newly-loaded lib, of course. */ +} + +static void +SDL_InitDynamicAPI(void) +{ + /* So the theory is that every function in the jump table defaults to + * calling this function, and then replaces itself with a version that + * doesn't call this function anymore. But it's possible that, in an + * extreme corner case, you can have a second thread hit this function + * while the jump table is being initialized by the first. + * In this case, a spinlock is really painful compared to what spinlocks + * _should_ be used for, but this would only happen once, and should be + * insanely rare, as you would have to spin a thread outside of SDL (as + * SDL_CreateThread() would also call this function before building the + * new thread). + */ + static volatile SDL_bool already_initialized = SDL_FALSE; + + /* SDL_AtomicLock calls SDL mutex functions to emulate if + SDL_ATOMIC_DISABLED, which we can't do here, so in such a + configuration, you're on your own. */ + #if !SDL_ATOMIC_DISABLED + static SDL_SpinLock lock = 0; + SDL_AtomicLock_REAL(&lock); + #endif + + if (!already_initialized) { + SDL_InitDynamicAPILocked(); + already_initialized = SDL_TRUE; + } + + #if !SDL_ATOMIC_DISABLED + SDL_AtomicUnlock_REAL(&lock); + #endif +} + +#endif /* SDL_DYNAMIC_API */ + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/dynapi/SDL_dynapi.h b/src/dynapi/SDL_dynapi.h new file mode 100644 index 0000000000..eb1c014408 --- /dev/null +++ b/src/dynapi/SDL_dynapi.h @@ -0,0 +1,50 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_dynapi_h +#define _SDL_dynapi_h + +/* IMPORTANT: + This is the master switch to disabling the dynamic API. We made it so you + have to hand-edit an internal source file in SDL to turn it off; you + can do it if you want it badly enough, but hopefully you won't want to. + You should understand the ramifications of turning this off: it makes it + hard to update your SDL in the field, and impossible if you've statically + linked SDL into your app. Understand that platforms change, and if we can't + drop in an updated SDL, your application can definitely break some time + in the future, even if it's fine today. + To be sure, as new system-level video and audio APIs are introduced, an + updated SDL can transparently take advantage of them, but your program will + not without this feature. Think hard before turning it off. +*/ +#ifdef SDL_DYNAMIC_API /* Tried to force it on the command line? */ +#error Nope, you have to edit this file to force this off. +#endif + +#if defined(__APPLE__) && TARGET_OS_IPHONE /* probably not useful on iOS. */ +#define SDL_DYNAMIC_API 0 +#else /* everyone else. */ +#define SDL_DYNAMIC_API 1 +#endif + +#endif + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h new file mode 100644 index 0000000000..dfa5509fac --- /dev/null +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -0,0 +1,571 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* vi: set ts=4 sw=4 expandtab: */ + +/* DO NOT EDIT THIS FILE BY HAND. It is autogenerated by gendynapi.pl. */ + +#if !SDL_DYNAMIC_API +#error You should not be here. +#endif + +/* so annoying. */ +#if defined(__thumb__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)) +#define SDL_MemoryBarrierRelease SDL_MemoryBarrierRelease_REAL +#define SDL_MemoryBarrierAcquire SDL_MemoryBarrierAcquire_REAL +#endif + +#define SDL_SetError SDL_SetError_REAL +#define SDL_Log SDL_Log_REAL +#define SDL_LogVerbose SDL_LogVerbose_REAL +#define SDL_LogDebug SDL_LogDebug_REAL +#define SDL_LogInfo SDL_LogInfo_REAL +#define SDL_LogWarn SDL_LogWarn_REAL +#define SDL_LogError SDL_LogError_REAL +#define SDL_LogCritical SDL_LogCritical_REAL +#define SDL_LogMessage SDL_LogMessage_REAL +#define SDL_sscanf SDL_sscanf_REAL +#define SDL_snprintf SDL_snprintf_REAL +#define SDL_CreateThread SDL_CreateThread_REAL +#define SDL_RWFromFP SDL_RWFromFP_REAL +#define SDL_RegisterApp SDL_RegisterApp_REAL +#define SDL_UnregisterApp SDL_UnregisterApp_REAL +#define SDL_Direct3D9GetAdapterIndex SDL_Direct3D9GetAdapterIndex_REAL +#define SDL_RenderGetD3D9Device SDL_RenderGetD3D9Device_REAL +#define SDL_iPhoneSetAnimationCallback SDL_iPhoneSetAnimationCallback_REAL +#define SDL_iPhoneSetEventPump SDL_iPhoneSetEventPump_REAL +#define SDL_AndroidGetJNIEnv SDL_AndroidGetJNIEnv_REAL +#define SDL_AndroidGetActivity SDL_AndroidGetActivity_REAL +#define SDL_AndroidGetInternalStoragePath SDL_AndroidGetInternalStoragePath_REAL +#define SDL_AndroidGetExternalStorageState SDL_AndroidGetExternalStorageState_REAL +#define SDL_AndroidGetExternalStoragePath SDL_AndroidGetExternalStoragePath_REAL +#define SDL_Init SDL_Init_REAL +#define SDL_InitSubSystem SDL_InitSubSystem_REAL +#define SDL_QuitSubSystem SDL_QuitSubSystem_REAL +#define SDL_WasInit SDL_WasInit_REAL +#define SDL_Quit SDL_Quit_REAL +#define SDL_ReportAssertion SDL_ReportAssertion_REAL +#define SDL_SetAssertionHandler SDL_SetAssertionHandler_REAL +#define SDL_GetAssertionReport SDL_GetAssertionReport_REAL +#define SDL_ResetAssertionReport SDL_ResetAssertionReport_REAL +#define SDL_AtomicTryLock SDL_AtomicTryLock_REAL +#define SDL_AtomicLock SDL_AtomicLock_REAL +#define SDL_AtomicUnlock SDL_AtomicUnlock_REAL +#define SDL_AtomicCAS SDL_AtomicCAS_REAL +#define SDL_AtomicSet SDL_AtomicSet_REAL +#define SDL_AtomicGet SDL_AtomicGet_REAL +#define SDL_AtomicAdd SDL_AtomicAdd_REAL +#define SDL_AtomicCASPtr SDL_AtomicCASPtr_REAL +#define SDL_AtomicSetPtr SDL_AtomicSetPtr_REAL +#define SDL_AtomicGetPtr SDL_AtomicGetPtr_REAL +#define SDL_GetNumAudioDrivers SDL_GetNumAudioDrivers_REAL +#define SDL_GetAudioDriver SDL_GetAudioDriver_REAL +#define SDL_AudioInit SDL_AudioInit_REAL +#define SDL_AudioQuit SDL_AudioQuit_REAL +#define SDL_GetCurrentAudioDriver SDL_GetCurrentAudioDriver_REAL +#define SDL_OpenAudio SDL_OpenAudio_REAL +#define SDL_GetNumAudioDevices SDL_GetNumAudioDevices_REAL +#define SDL_GetAudioDeviceName SDL_GetAudioDeviceName_REAL +#define SDL_OpenAudioDevice SDL_OpenAudioDevice_REAL +#define SDL_GetAudioStatus SDL_GetAudioStatus_REAL +#define SDL_GetAudioDeviceStatus SDL_GetAudioDeviceStatus_REAL +#define SDL_PauseAudio SDL_PauseAudio_REAL +#define SDL_PauseAudioDevice SDL_PauseAudioDevice_REAL +#define SDL_LoadWAV_RW SDL_LoadWAV_RW_REAL +#define SDL_FreeWAV SDL_FreeWAV_REAL +#define SDL_BuildAudioCVT SDL_BuildAudioCVT_REAL +#define SDL_ConvertAudio SDL_ConvertAudio_REAL +#define SDL_MixAudio SDL_MixAudio_REAL +#define SDL_MixAudioFormat SDL_MixAudioFormat_REAL +#define SDL_LockAudio SDL_LockAudio_REAL +#define SDL_LockAudioDevice SDL_LockAudioDevice_REAL +#define SDL_UnlockAudio SDL_UnlockAudio_REAL +#define SDL_UnlockAudioDevice SDL_UnlockAudioDevice_REAL +#define SDL_CloseAudio SDL_CloseAudio_REAL +#define SDL_CloseAudioDevice SDL_CloseAudioDevice_REAL +#define SDL_SetClipboardText SDL_SetClipboardText_REAL +#define SDL_GetClipboardText SDL_GetClipboardText_REAL +#define SDL_HasClipboardText SDL_HasClipboardText_REAL +#define SDL_GetCPUCount SDL_GetCPUCount_REAL +#define SDL_GetCPUCacheLineSize SDL_GetCPUCacheLineSize_REAL +#define SDL_HasRDTSC SDL_HasRDTSC_REAL +#define SDL_HasAltiVec SDL_HasAltiVec_REAL +#define SDL_HasMMX SDL_HasMMX_REAL +#define SDL_Has3DNow SDL_Has3DNow_REAL +#define SDL_HasSSE SDL_HasSSE_REAL +#define SDL_HasSSE2 SDL_HasSSE2_REAL +#define SDL_HasSSE3 SDL_HasSSE3_REAL +#define SDL_HasSSE41 SDL_HasSSE41_REAL +#define SDL_HasSSE42 SDL_HasSSE42_REAL +#define SDL_GetSystemRAM SDL_GetSystemRAM_REAL +#define SDL_GetError SDL_GetError_REAL +#define SDL_ClearError SDL_ClearError_REAL +#define SDL_Error SDL_Error_REAL +#define SDL_PumpEvents SDL_PumpEvents_REAL +#define SDL_PeepEvents SDL_PeepEvents_REAL +#define SDL_HasEvent SDL_HasEvent_REAL +#define SDL_HasEvents SDL_HasEvents_REAL +#define SDL_FlushEvent SDL_FlushEvent_REAL +#define SDL_FlushEvents SDL_FlushEvents_REAL +#define SDL_PollEvent SDL_PollEvent_REAL +#define SDL_WaitEvent SDL_WaitEvent_REAL +#define SDL_WaitEventTimeout SDL_WaitEventTimeout_REAL +#define SDL_PushEvent SDL_PushEvent_REAL +#define SDL_SetEventFilter SDL_SetEventFilter_REAL +#define SDL_GetEventFilter SDL_GetEventFilter_REAL +#define SDL_AddEventWatch SDL_AddEventWatch_REAL +#define SDL_DelEventWatch SDL_DelEventWatch_REAL +#define SDL_FilterEvents SDL_FilterEvents_REAL +#define SDL_EventState SDL_EventState_REAL +#define SDL_RegisterEvents SDL_RegisterEvents_REAL +#define SDL_GetBasePath SDL_GetBasePath_REAL +#define SDL_GetPrefPath SDL_GetPrefPath_REAL +#define SDL_GameControllerAddMapping SDL_GameControllerAddMapping_REAL +#define SDL_GameControllerMappingForGUID SDL_GameControllerMappingForGUID_REAL +#define SDL_GameControllerMapping SDL_GameControllerMapping_REAL +#define SDL_IsGameController SDL_IsGameController_REAL +#define SDL_GameControllerNameForIndex SDL_GameControllerNameForIndex_REAL +#define SDL_GameControllerOpen SDL_GameControllerOpen_REAL +#define SDL_GameControllerName SDL_GameControllerName_REAL +#define SDL_GameControllerGetAttached SDL_GameControllerGetAttached_REAL +#define SDL_GameControllerGetJoystick SDL_GameControllerGetJoystick_REAL +#define SDL_GameControllerEventState SDL_GameControllerEventState_REAL +#define SDL_GameControllerUpdate SDL_GameControllerUpdate_REAL +#define SDL_GameControllerGetAxisFromString SDL_GameControllerGetAxisFromString_REAL +#define SDL_GameControllerGetStringForAxis SDL_GameControllerGetStringForAxis_REAL +#define SDL_GameControllerGetBindForAxis SDL_GameControllerGetBindForAxis_REAL +#define SDL_GameControllerGetAxis SDL_GameControllerGetAxis_REAL +#define SDL_GameControllerGetButtonFromString SDL_GameControllerGetButtonFromString_REAL +#define SDL_GameControllerGetStringForButton SDL_GameControllerGetStringForButton_REAL +#define SDL_GameControllerGetBindForButton SDL_GameControllerGetBindForButton_REAL +#define SDL_GameControllerGetButton SDL_GameControllerGetButton_REAL +#define SDL_GameControllerClose SDL_GameControllerClose_REAL +#define SDL_RecordGesture SDL_RecordGesture_REAL +#define SDL_SaveAllDollarTemplates SDL_SaveAllDollarTemplates_REAL +#define SDL_SaveDollarTemplate SDL_SaveDollarTemplate_REAL +#define SDL_LoadDollarTemplates SDL_LoadDollarTemplates_REAL +#define SDL_NumHaptics SDL_NumHaptics_REAL +#define SDL_HapticName SDL_HapticName_REAL +#define SDL_HapticOpen SDL_HapticOpen_REAL +#define SDL_HapticOpened SDL_HapticOpened_REAL +#define SDL_HapticIndex SDL_HapticIndex_REAL +#define SDL_MouseIsHaptic SDL_MouseIsHaptic_REAL +#define SDL_HapticOpenFromMouse SDL_HapticOpenFromMouse_REAL +#define SDL_JoystickIsHaptic SDL_JoystickIsHaptic_REAL +#define SDL_HapticOpenFromJoystick SDL_HapticOpenFromJoystick_REAL +#define SDL_HapticClose SDL_HapticClose_REAL +#define SDL_HapticNumEffects SDL_HapticNumEffects_REAL +#define SDL_HapticNumEffectsPlaying SDL_HapticNumEffectsPlaying_REAL +#define SDL_HapticQuery SDL_HapticQuery_REAL +#define SDL_HapticNumAxes SDL_HapticNumAxes_REAL +#define SDL_HapticEffectSupported SDL_HapticEffectSupported_REAL +#define SDL_HapticNewEffect SDL_HapticNewEffect_REAL +#define SDL_HapticUpdateEffect SDL_HapticUpdateEffect_REAL +#define SDL_HapticRunEffect SDL_HapticRunEffect_REAL +#define SDL_HapticStopEffect SDL_HapticStopEffect_REAL +#define SDL_HapticDestroyEffect SDL_HapticDestroyEffect_REAL +#define SDL_HapticGetEffectStatus SDL_HapticGetEffectStatus_REAL +#define SDL_HapticSetGain SDL_HapticSetGain_REAL +#define SDL_HapticSetAutocenter SDL_HapticSetAutocenter_REAL +#define SDL_HapticPause SDL_HapticPause_REAL +#define SDL_HapticUnpause SDL_HapticUnpause_REAL +#define SDL_HapticStopAll SDL_HapticStopAll_REAL +#define SDL_HapticRumbleSupported SDL_HapticRumbleSupported_REAL +#define SDL_HapticRumbleInit SDL_HapticRumbleInit_REAL +#define SDL_HapticRumblePlay SDL_HapticRumblePlay_REAL +#define SDL_HapticRumbleStop SDL_HapticRumbleStop_REAL +#define SDL_SetHintWithPriority SDL_SetHintWithPriority_REAL +#define SDL_SetHint SDL_SetHint_REAL +#define SDL_GetHint SDL_GetHint_REAL +#define SDL_AddHintCallback SDL_AddHintCallback_REAL +#define SDL_DelHintCallback SDL_DelHintCallback_REAL +#define SDL_ClearHints SDL_ClearHints_REAL +#define SDL_NumJoysticks SDL_NumJoysticks_REAL +#define SDL_JoystickNameForIndex SDL_JoystickNameForIndex_REAL +#define SDL_JoystickOpen SDL_JoystickOpen_REAL +#define SDL_JoystickName SDL_JoystickName_REAL +#define SDL_JoystickGetDeviceGUID SDL_JoystickGetDeviceGUID_REAL +#define SDL_JoystickGetGUID SDL_JoystickGetGUID_REAL +#define SDL_JoystickGetGUIDString SDL_JoystickGetGUIDString_REAL +#define SDL_JoystickGetGUIDFromString SDL_JoystickGetGUIDFromString_REAL +#define SDL_JoystickGetAttached SDL_JoystickGetAttached_REAL +#define SDL_JoystickInstanceID SDL_JoystickInstanceID_REAL +#define SDL_JoystickNumAxes SDL_JoystickNumAxes_REAL +#define SDL_JoystickNumBalls SDL_JoystickNumBalls_REAL +#define SDL_JoystickNumHats SDL_JoystickNumHats_REAL +#define SDL_JoystickNumButtons SDL_JoystickNumButtons_REAL +#define SDL_JoystickUpdate SDL_JoystickUpdate_REAL +#define SDL_JoystickEventState SDL_JoystickEventState_REAL +#define SDL_JoystickGetAxis SDL_JoystickGetAxis_REAL +#define SDL_JoystickGetHat SDL_JoystickGetHat_REAL +#define SDL_JoystickGetBall SDL_JoystickGetBall_REAL +#define SDL_JoystickGetButton SDL_JoystickGetButton_REAL +#define SDL_JoystickClose SDL_JoystickClose_REAL +#define SDL_GetKeyboardFocus SDL_GetKeyboardFocus_REAL +#define SDL_GetKeyboardState SDL_GetKeyboardState_REAL +#define SDL_GetModState SDL_GetModState_REAL +#define SDL_SetModState SDL_SetModState_REAL +#define SDL_GetKeyFromScancode SDL_GetKeyFromScancode_REAL +#define SDL_GetScancodeFromKey SDL_GetScancodeFromKey_REAL +#define SDL_GetScancodeName SDL_GetScancodeName_REAL +#define SDL_GetScancodeFromName SDL_GetScancodeFromName_REAL +#define SDL_GetKeyName SDL_GetKeyName_REAL +#define SDL_GetKeyFromName SDL_GetKeyFromName_REAL +#define SDL_StartTextInput SDL_StartTextInput_REAL +#define SDL_IsTextInputActive SDL_IsTextInputActive_REAL +#define SDL_StopTextInput SDL_StopTextInput_REAL +#define SDL_SetTextInputRect SDL_SetTextInputRect_REAL +#define SDL_HasScreenKeyboardSupport SDL_HasScreenKeyboardSupport_REAL +#define SDL_IsScreenKeyboardShown SDL_IsScreenKeyboardShown_REAL +#define SDL_LoadObject SDL_LoadObject_REAL +#define SDL_LoadFunction SDL_LoadFunction_REAL +#define SDL_UnloadObject SDL_UnloadObject_REAL +#define SDL_LogSetAllPriority SDL_LogSetAllPriority_REAL +#define SDL_LogSetPriority SDL_LogSetPriority_REAL +#define SDL_LogGetPriority SDL_LogGetPriority_REAL +#define SDL_LogResetPriorities SDL_LogResetPriorities_REAL +#define SDL_LogMessageV SDL_LogMessageV_REAL +#define SDL_LogGetOutputFunction SDL_LogGetOutputFunction_REAL +#define SDL_LogSetOutputFunction SDL_LogSetOutputFunction_REAL +#define SDL_SetMainReady SDL_SetMainReady_REAL +#define SDL_ShowMessageBox SDL_ShowMessageBox_REAL +#define SDL_ShowSimpleMessageBox SDL_ShowSimpleMessageBox_REAL +#define SDL_GetMouseFocus SDL_GetMouseFocus_REAL +#define SDL_GetMouseState SDL_GetMouseState_REAL +#define SDL_GetRelativeMouseState SDL_GetRelativeMouseState_REAL +#define SDL_WarpMouseInWindow SDL_WarpMouseInWindow_REAL +#define SDL_SetRelativeMouseMode SDL_SetRelativeMouseMode_REAL +#define SDL_GetRelativeMouseMode SDL_GetRelativeMouseMode_REAL +#define SDL_CreateCursor SDL_CreateCursor_REAL +#define SDL_CreateColorCursor SDL_CreateColorCursor_REAL +#define SDL_CreateSystemCursor SDL_CreateSystemCursor_REAL +#define SDL_SetCursor SDL_SetCursor_REAL +#define SDL_GetCursor SDL_GetCursor_REAL +#define SDL_GetDefaultCursor SDL_GetDefaultCursor_REAL +#define SDL_FreeCursor SDL_FreeCursor_REAL +#define SDL_ShowCursor SDL_ShowCursor_REAL +#define SDL_CreateMutex SDL_CreateMutex_REAL +#define SDL_LockMutex SDL_LockMutex_REAL +#define SDL_TryLockMutex SDL_TryLockMutex_REAL +#define SDL_UnlockMutex SDL_UnlockMutex_REAL +#define SDL_DestroyMutex SDL_DestroyMutex_REAL +#define SDL_CreateSemaphore SDL_CreateSemaphore_REAL +#define SDL_DestroySemaphore SDL_DestroySemaphore_REAL +#define SDL_SemWait SDL_SemWait_REAL +#define SDL_SemTryWait SDL_SemTryWait_REAL +#define SDL_SemWaitTimeout SDL_SemWaitTimeout_REAL +#define SDL_SemPost SDL_SemPost_REAL +#define SDL_SemValue SDL_SemValue_REAL +#define SDL_CreateCond SDL_CreateCond_REAL +#define SDL_DestroyCond SDL_DestroyCond_REAL +#define SDL_CondSignal SDL_CondSignal_REAL +#define SDL_CondBroadcast SDL_CondBroadcast_REAL +#define SDL_CondWait SDL_CondWait_REAL +#define SDL_CondWaitTimeout SDL_CondWaitTimeout_REAL +#define SDL_GetPixelFormatName SDL_GetPixelFormatName_REAL +#define SDL_PixelFormatEnumToMasks SDL_PixelFormatEnumToMasks_REAL +#define SDL_MasksToPixelFormatEnum SDL_MasksToPixelFormatEnum_REAL +#define SDL_AllocFormat SDL_AllocFormat_REAL +#define SDL_FreeFormat SDL_FreeFormat_REAL +#define SDL_AllocPalette SDL_AllocPalette_REAL +#define SDL_SetPixelFormatPalette SDL_SetPixelFormatPalette_REAL +#define SDL_SetPaletteColors SDL_SetPaletteColors_REAL +#define SDL_FreePalette SDL_FreePalette_REAL +#define SDL_MapRGB SDL_MapRGB_REAL +#define SDL_MapRGBA SDL_MapRGBA_REAL +#define SDL_GetRGB SDL_GetRGB_REAL +#define SDL_GetRGBA SDL_GetRGBA_REAL +#define SDL_CalculateGammaRamp SDL_CalculateGammaRamp_REAL +#define SDL_GetPlatform SDL_GetPlatform_REAL +#define SDL_GetPowerInfo SDL_GetPowerInfo_REAL +#define SDL_HasIntersection SDL_HasIntersection_REAL +#define SDL_IntersectRect SDL_IntersectRect_REAL +#define SDL_UnionRect SDL_UnionRect_REAL +#define SDL_EnclosePoints SDL_EnclosePoints_REAL +#define SDL_IntersectRectAndLine SDL_IntersectRectAndLine_REAL +#define SDL_GetNumRenderDrivers SDL_GetNumRenderDrivers_REAL +#define SDL_GetRenderDriverInfo SDL_GetRenderDriverInfo_REAL +#define SDL_CreateWindowAndRenderer SDL_CreateWindowAndRenderer_REAL +#define SDL_CreateRenderer SDL_CreateRenderer_REAL +#define SDL_CreateSoftwareRenderer SDL_CreateSoftwareRenderer_REAL +#define SDL_GetRenderer SDL_GetRenderer_REAL +#define SDL_GetRendererInfo SDL_GetRendererInfo_REAL +#define SDL_GetRendererOutputSize SDL_GetRendererOutputSize_REAL +#define SDL_CreateTexture SDL_CreateTexture_REAL +#define SDL_CreateTextureFromSurface SDL_CreateTextureFromSurface_REAL +#define SDL_QueryTexture SDL_QueryTexture_REAL +#define SDL_SetTextureColorMod SDL_SetTextureColorMod_REAL +#define SDL_GetTextureColorMod SDL_GetTextureColorMod_REAL +#define SDL_SetTextureAlphaMod SDL_SetTextureAlphaMod_REAL +#define SDL_GetTextureAlphaMod SDL_GetTextureAlphaMod_REAL +#define SDL_SetTextureBlendMode SDL_SetTextureBlendMode_REAL +#define SDL_GetTextureBlendMode SDL_GetTextureBlendMode_REAL +#define SDL_UpdateTexture SDL_UpdateTexture_REAL +#define SDL_UpdateYUVTexture SDL_UpdateYUVTexture_REAL +#define SDL_LockTexture SDL_LockTexture_REAL +#define SDL_UnlockTexture SDL_UnlockTexture_REAL +#define SDL_RenderTargetSupported SDL_RenderTargetSupported_REAL +#define SDL_SetRenderTarget SDL_SetRenderTarget_REAL +#define SDL_GetRenderTarget SDL_GetRenderTarget_REAL +#define SDL_RenderSetLogicalSize SDL_RenderSetLogicalSize_REAL +#define SDL_RenderGetLogicalSize SDL_RenderGetLogicalSize_REAL +#define SDL_RenderSetViewport SDL_RenderSetViewport_REAL +#define SDL_RenderGetViewport SDL_RenderGetViewport_REAL +#define SDL_RenderSetClipRect SDL_RenderSetClipRect_REAL +#define SDL_RenderGetClipRect SDL_RenderGetClipRect_REAL +#define SDL_RenderSetScale SDL_RenderSetScale_REAL +#define SDL_RenderGetScale SDL_RenderGetScale_REAL +#define SDL_SetRenderDrawColor SDL_SetRenderDrawColor_REAL +#define SDL_GetRenderDrawColor SDL_GetRenderDrawColor_REAL +#define SDL_SetRenderDrawBlendMode SDL_SetRenderDrawBlendMode_REAL +#define SDL_GetRenderDrawBlendMode SDL_GetRenderDrawBlendMode_REAL +#define SDL_RenderClear SDL_RenderClear_REAL +#define SDL_RenderDrawPoint SDL_RenderDrawPoint_REAL +#define SDL_RenderDrawPoints SDL_RenderDrawPoints_REAL +#define SDL_RenderDrawLine SDL_RenderDrawLine_REAL +#define SDL_RenderDrawLines SDL_RenderDrawLines_REAL +#define SDL_RenderDrawRect SDL_RenderDrawRect_REAL +#define SDL_RenderDrawRects SDL_RenderDrawRects_REAL +#define SDL_RenderFillRect SDL_RenderFillRect_REAL +#define SDL_RenderFillRects SDL_RenderFillRects_REAL +#define SDL_RenderCopy SDL_RenderCopy_REAL +#define SDL_RenderCopyEx SDL_RenderCopyEx_REAL +#define SDL_RenderReadPixels SDL_RenderReadPixels_REAL +#define SDL_RenderPresent SDL_RenderPresent_REAL +#define SDL_DestroyTexture SDL_DestroyTexture_REAL +#define SDL_DestroyRenderer SDL_DestroyRenderer_REAL +#define SDL_GL_BindTexture SDL_GL_BindTexture_REAL +#define SDL_GL_UnbindTexture SDL_GL_UnbindTexture_REAL +#define SDL_RWFromFile SDL_RWFromFile_REAL +#define SDL_RWFromMem SDL_RWFromMem_REAL +#define SDL_RWFromConstMem SDL_RWFromConstMem_REAL +#define SDL_AllocRW SDL_AllocRW_REAL +#define SDL_FreeRW SDL_FreeRW_REAL +#define SDL_ReadU8 SDL_ReadU8_REAL +#define SDL_ReadLE16 SDL_ReadLE16_REAL +#define SDL_ReadBE16 SDL_ReadBE16_REAL +#define SDL_ReadLE32 SDL_ReadLE32_REAL +#define SDL_ReadBE32 SDL_ReadBE32_REAL +#define SDL_ReadLE64 SDL_ReadLE64_REAL +#define SDL_ReadBE64 SDL_ReadBE64_REAL +#define SDL_WriteU8 SDL_WriteU8_REAL +#define SDL_WriteLE16 SDL_WriteLE16_REAL +#define SDL_WriteBE16 SDL_WriteBE16_REAL +#define SDL_WriteLE32 SDL_WriteLE32_REAL +#define SDL_WriteBE32 SDL_WriteBE32_REAL +#define SDL_WriteLE64 SDL_WriteLE64_REAL +#define SDL_WriteBE64 SDL_WriteBE64_REAL +#define SDL_CreateShapedWindow SDL_CreateShapedWindow_REAL +#define SDL_IsShapedWindow SDL_IsShapedWindow_REAL +#define SDL_SetWindowShape SDL_SetWindowShape_REAL +#define SDL_GetShapedWindowMode SDL_GetShapedWindowMode_REAL +#define SDL_malloc SDL_malloc_REAL +#define SDL_calloc SDL_calloc_REAL +#define SDL_realloc SDL_realloc_REAL +#define SDL_free SDL_free_REAL +#define SDL_getenv SDL_getenv_REAL +#define SDL_setenv SDL_setenv_REAL +#define SDL_qsort SDL_qsort_REAL +#define SDL_abs SDL_abs_REAL +#define SDL_isdigit SDL_isdigit_REAL +#define SDL_isspace SDL_isspace_REAL +#define SDL_toupper SDL_toupper_REAL +#define SDL_tolower SDL_tolower_REAL +#define SDL_memset SDL_memset_REAL +#define SDL_memcpy SDL_memcpy_REAL +#define SDL_memmove SDL_memmove_REAL +#define SDL_memcmp SDL_memcmp_REAL +#define SDL_wcslen SDL_wcslen_REAL +#define SDL_wcslcpy SDL_wcslcpy_REAL +#define SDL_wcslcat SDL_wcslcat_REAL +#define SDL_strlen SDL_strlen_REAL +#define SDL_strlcpy SDL_strlcpy_REAL +#define SDL_utf8strlcpy SDL_utf8strlcpy_REAL +#define SDL_strlcat SDL_strlcat_REAL +#define SDL_strdup SDL_strdup_REAL +#define SDL_strrev SDL_strrev_REAL +#define SDL_strupr SDL_strupr_REAL +#define SDL_strlwr SDL_strlwr_REAL +#define SDL_strchr SDL_strchr_REAL +#define SDL_strrchr SDL_strrchr_REAL +#define SDL_strstr SDL_strstr_REAL +#define SDL_itoa SDL_itoa_REAL +#define SDL_uitoa SDL_uitoa_REAL +#define SDL_ltoa SDL_ltoa_REAL +#define SDL_ultoa SDL_ultoa_REAL +#define SDL_lltoa SDL_lltoa_REAL +#define SDL_ulltoa SDL_ulltoa_REAL +#define SDL_atoi SDL_atoi_REAL +#define SDL_atof SDL_atof_REAL +#define SDL_strtol SDL_strtol_REAL +#define SDL_strtoul SDL_strtoul_REAL +#define SDL_strtoll SDL_strtoll_REAL +#define SDL_strtoull SDL_strtoull_REAL +#define SDL_strtod SDL_strtod_REAL +#define SDL_strcmp SDL_strcmp_REAL +#define SDL_strncmp SDL_strncmp_REAL +#define SDL_strcasecmp SDL_strcasecmp_REAL +#define SDL_strncasecmp SDL_strncasecmp_REAL +#define SDL_vsnprintf SDL_vsnprintf_REAL +#define SDL_acos SDL_acos_REAL +#define SDL_asin SDL_asin_REAL +#define SDL_atan SDL_atan_REAL +#define SDL_atan2 SDL_atan2_REAL +#define SDL_ceil SDL_ceil_REAL +#define SDL_copysign SDL_copysign_REAL +#define SDL_cos SDL_cos_REAL +#define SDL_cosf SDL_cosf_REAL +#define SDL_fabs SDL_fabs_REAL +#define SDL_floor SDL_floor_REAL +#define SDL_log SDL_log_REAL +#define SDL_pow SDL_pow_REAL +#define SDL_scalbn SDL_scalbn_REAL +#define SDL_sin SDL_sin_REAL +#define SDL_sinf SDL_sinf_REAL +#define SDL_sqrt SDL_sqrt_REAL +#define SDL_iconv_open SDL_iconv_open_REAL +#define SDL_iconv_close SDL_iconv_close_REAL +#define SDL_iconv SDL_iconv_REAL +#define SDL_iconv_string SDL_iconv_string_REAL +#define SDL_CreateRGBSurface SDL_CreateRGBSurface_REAL +#define SDL_CreateRGBSurfaceFrom SDL_CreateRGBSurfaceFrom_REAL +#define SDL_FreeSurface SDL_FreeSurface_REAL +#define SDL_SetSurfacePalette SDL_SetSurfacePalette_REAL +#define SDL_LockSurface SDL_LockSurface_REAL +#define SDL_UnlockSurface SDL_UnlockSurface_REAL +#define SDL_LoadBMP_RW SDL_LoadBMP_RW_REAL +#define SDL_SaveBMP_RW SDL_SaveBMP_RW_REAL +#define SDL_SetSurfaceRLE SDL_SetSurfaceRLE_REAL +#define SDL_SetColorKey SDL_SetColorKey_REAL +#define SDL_GetColorKey SDL_GetColorKey_REAL +#define SDL_SetSurfaceColorMod SDL_SetSurfaceColorMod_REAL +#define SDL_GetSurfaceColorMod SDL_GetSurfaceColorMod_REAL +#define SDL_SetSurfaceAlphaMod SDL_SetSurfaceAlphaMod_REAL +#define SDL_GetSurfaceAlphaMod SDL_GetSurfaceAlphaMod_REAL +#define SDL_SetSurfaceBlendMode SDL_SetSurfaceBlendMode_REAL +#define SDL_GetSurfaceBlendMode SDL_GetSurfaceBlendMode_REAL +#define SDL_SetClipRect SDL_SetClipRect_REAL +#define SDL_GetClipRect SDL_GetClipRect_REAL +#define SDL_ConvertSurface SDL_ConvertSurface_REAL +#define SDL_ConvertSurfaceFormat SDL_ConvertSurfaceFormat_REAL +#define SDL_ConvertPixels SDL_ConvertPixels_REAL +#define SDL_FillRect SDL_FillRect_REAL +#define SDL_FillRects SDL_FillRects_REAL +#define SDL_UpperBlit SDL_UpperBlit_REAL +#define SDL_LowerBlit SDL_LowerBlit_REAL +#define SDL_SoftStretch SDL_SoftStretch_REAL +#define SDL_UpperBlitScaled SDL_UpperBlitScaled_REAL +#define SDL_LowerBlitScaled SDL_LowerBlitScaled_REAL +#define SDL_GetWindowWMInfo SDL_GetWindowWMInfo_REAL +#define SDL_GetThreadName SDL_GetThreadName_REAL +#define SDL_ThreadID SDL_ThreadID_REAL +#define SDL_GetThreadID SDL_GetThreadID_REAL +#define SDL_SetThreadPriority SDL_SetThreadPriority_REAL +#define SDL_WaitThread SDL_WaitThread_REAL +#define SDL_DetachThread SDL_DetachThread_REAL +#define SDL_TLSCreate SDL_TLSCreate_REAL +#define SDL_TLSGet SDL_TLSGet_REAL +#define SDL_TLSSet SDL_TLSSet_REAL +#define SDL_GetTicks SDL_GetTicks_REAL +#define SDL_GetPerformanceCounter SDL_GetPerformanceCounter_REAL +#define SDL_GetPerformanceFrequency SDL_GetPerformanceFrequency_REAL +#define SDL_Delay SDL_Delay_REAL +#define SDL_AddTimer SDL_AddTimer_REAL +#define SDL_RemoveTimer SDL_RemoveTimer_REAL +#define SDL_GetNumTouchDevices SDL_GetNumTouchDevices_REAL +#define SDL_GetTouchDevice SDL_GetTouchDevice_REAL +#define SDL_GetNumTouchFingers SDL_GetNumTouchFingers_REAL +#define SDL_GetTouchFinger SDL_GetTouchFinger_REAL +#define SDL_GetVersion SDL_GetVersion_REAL +#define SDL_GetRevision SDL_GetRevision_REAL +#define SDL_GetRevisionNumber SDL_GetRevisionNumber_REAL +#define SDL_GetNumVideoDrivers SDL_GetNumVideoDrivers_REAL +#define SDL_GetVideoDriver SDL_GetVideoDriver_REAL +#define SDL_VideoInit SDL_VideoInit_REAL +#define SDL_VideoQuit SDL_VideoQuit_REAL +#define SDL_GetCurrentVideoDriver SDL_GetCurrentVideoDriver_REAL +#define SDL_GetNumVideoDisplays SDL_GetNumVideoDisplays_REAL +#define SDL_GetDisplayName SDL_GetDisplayName_REAL +#define SDL_GetDisplayBounds SDL_GetDisplayBounds_REAL +#define SDL_GetNumDisplayModes SDL_GetNumDisplayModes_REAL +#define SDL_GetDisplayMode SDL_GetDisplayMode_REAL +#define SDL_GetDesktopDisplayMode SDL_GetDesktopDisplayMode_REAL +#define SDL_GetCurrentDisplayMode SDL_GetCurrentDisplayMode_REAL +#define SDL_GetClosestDisplayMode SDL_GetClosestDisplayMode_REAL +#define SDL_GetWindowDisplayIndex SDL_GetWindowDisplayIndex_REAL +#define SDL_SetWindowDisplayMode SDL_SetWindowDisplayMode_REAL +#define SDL_GetWindowDisplayMode SDL_GetWindowDisplayMode_REAL +#define SDL_GetWindowPixelFormat SDL_GetWindowPixelFormat_REAL +#define SDL_CreateWindow SDL_CreateWindow_REAL +#define SDL_CreateWindowFrom SDL_CreateWindowFrom_REAL +#define SDL_GetWindowID SDL_GetWindowID_REAL +#define SDL_GetWindowFromID SDL_GetWindowFromID_REAL +#define SDL_GetWindowFlags SDL_GetWindowFlags_REAL +#define SDL_SetWindowTitle SDL_SetWindowTitle_REAL +#define SDL_GetWindowTitle SDL_GetWindowTitle_REAL +#define SDL_SetWindowIcon SDL_SetWindowIcon_REAL +#define SDL_SetWindowData SDL_SetWindowData_REAL +#define SDL_GetWindowData SDL_GetWindowData_REAL +#define SDL_SetWindowPosition SDL_SetWindowPosition_REAL +#define SDL_GetWindowPosition SDL_GetWindowPosition_REAL +#define SDL_SetWindowSize SDL_SetWindowSize_REAL +#define SDL_GetWindowSize SDL_GetWindowSize_REAL +#define SDL_SetWindowMinimumSize SDL_SetWindowMinimumSize_REAL +#define SDL_GetWindowMinimumSize SDL_GetWindowMinimumSize_REAL +#define SDL_SetWindowMaximumSize SDL_SetWindowMaximumSize_REAL +#define SDL_GetWindowMaximumSize SDL_GetWindowMaximumSize_REAL +#define SDL_SetWindowBordered SDL_SetWindowBordered_REAL +#define SDL_ShowWindow SDL_ShowWindow_REAL +#define SDL_HideWindow SDL_HideWindow_REAL +#define SDL_RaiseWindow SDL_RaiseWindow_REAL +#define SDL_MaximizeWindow SDL_MaximizeWindow_REAL +#define SDL_MinimizeWindow SDL_MinimizeWindow_REAL +#define SDL_RestoreWindow SDL_RestoreWindow_REAL +#define SDL_SetWindowFullscreen SDL_SetWindowFullscreen_REAL +#define SDL_GetWindowSurface SDL_GetWindowSurface_REAL +#define SDL_UpdateWindowSurface SDL_UpdateWindowSurface_REAL +#define SDL_UpdateWindowSurfaceRects SDL_UpdateWindowSurfaceRects_REAL +#define SDL_SetWindowGrab SDL_SetWindowGrab_REAL +#define SDL_GetWindowGrab SDL_GetWindowGrab_REAL +#define SDL_SetWindowBrightness SDL_SetWindowBrightness_REAL +#define SDL_GetWindowBrightness SDL_GetWindowBrightness_REAL +#define SDL_SetWindowGammaRamp SDL_SetWindowGammaRamp_REAL +#define SDL_GetWindowGammaRamp SDL_GetWindowGammaRamp_REAL +#define SDL_DestroyWindow SDL_DestroyWindow_REAL +#define SDL_IsScreenSaverEnabled SDL_IsScreenSaverEnabled_REAL +#define SDL_EnableScreenSaver SDL_EnableScreenSaver_REAL +#define SDL_DisableScreenSaver SDL_DisableScreenSaver_REAL +#define SDL_GL_LoadLibrary SDL_GL_LoadLibrary_REAL +#define SDL_GL_GetProcAddress SDL_GL_GetProcAddress_REAL +#define SDL_GL_UnloadLibrary SDL_GL_UnloadLibrary_REAL +#define SDL_GL_ExtensionSupported SDL_GL_ExtensionSupported_REAL +#define SDL_GL_SetAttribute SDL_GL_SetAttribute_REAL +#define SDL_GL_GetAttribute SDL_GL_GetAttribute_REAL +#define SDL_GL_CreateContext SDL_GL_CreateContext_REAL +#define SDL_GL_MakeCurrent SDL_GL_MakeCurrent_REAL +#define SDL_GL_GetCurrentWindow SDL_GL_GetCurrentWindow_REAL +#define SDL_GL_GetCurrentContext SDL_GL_GetCurrentContext_REAL +#define SDL_GL_GetDrawableSize SDL_GL_GetDrawableSize_REAL +#define SDL_GL_SetSwapInterval SDL_GL_SetSwapInterval_REAL +#define SDL_GL_GetSwapInterval SDL_GL_GetSwapInterval_REAL +#define SDL_GL_SwapWindow SDL_GL_SwapWindow_REAL +#define SDL_GL_DeleteContext SDL_GL_DeleteContext_REAL +#define SDL_vsscanf SDL_vsscanf_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h new file mode 100644 index 0000000000..c860f202bf --- /dev/null +++ b/src/dynapi/SDL_dynapi_procs.h @@ -0,0 +1,599 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* vi: set ts=4 sw=4 expandtab: */ + +/* + DO NOT EDIT THIS FILE BY HAND. It is autogenerated by gendynapi.pl. + NEVER REARRANGE THIS FILE, THE ORDER IS ABI LAW. + Changing this file means bumping SDL_DYNAPI_VERSION. You can safely add + new items to the end of the file, though. + Also, this file gets included multiple times, don't add #pragma once, etc. +*/ + +/* direct jump magic can use these, the rest needs special code. */ +#if !SDL_DYNAPI_PROC_NO_VARARGS +SDL_DYNAPI_PROC(int,SDL_SetError,(const char *a, ...),(a),return) +SDL_DYNAPI_PROC(void,SDL_Log,(const char *a, ...),(a),) +SDL_DYNAPI_PROC(void,SDL_LogVerbose,(int a, const char *b, ...),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogDebug,(int a, const char *b, ...),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogInfo,(int a, const char *b, ...),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogWarn,(int a, const char *b, ...),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogError,(int a, const char *b, ...),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogCritical,(int a, const char *b, ...),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogMessage,(int a, SDL_LogPriority b, const char *c, ...),(a,b,c),) +SDL_DYNAPI_PROC(int,SDL_sscanf,(const char *a, const char *b, ...),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_snprintf,(char *a, size_t b, const char *c, ...),(a,b,c),return) +#endif + +#ifdef SDL_CreateThread +#undef SDL_CreateThread +#endif + +#if defined(__WIN32__) && !defined(HAVE_LIBC) +SDL_DYNAPI_PROC(SDL_Thread*,SDL_CreateThread,(SDL_ThreadFunction a, const char *b, void *c, pfnSDL_CurrentBeginThread d, pfnSDL_CurrentEndThread e),(a,b,c,d,e),return) +#else +SDL_DYNAPI_PROC(SDL_Thread*,SDL_CreateThread,(SDL_ThreadFunction a, const char *b, void *c),(a,b,c),return) +#endif + +#ifdef HAVE_STDIO_H +SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromFP,(FILE *a, SDL_bool b),(a,b),return) +#else +SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromFP,(void *a, SDL_bool b),(a,b),return) +#endif + +#ifdef __thumb__ /* so annoying. */ +SDL_DYNAPI_PROC(void,SDL_MemoryBarrierRelease,(void),(),) +SDL_DYNAPI_PROC(void,SDL_MemoryBarrierAcquire,(void),(),) +#endif + +#ifdef __WIN32__ +SDL_DYNAPI_PROC(int,SDL_RegisterApp,(char *a, Uint32 b, void *c),(a,b,c),return) +SDL_DYNAPI_PROC(void,SDL_UnregisterApp,(void),(),) +SDL_DYNAPI_PROC(int,SDL_Direct3D9GetAdapterIndex,(int a),(a),return) +SDL_DYNAPI_PROC(IDirect3DDevice9*,SDL_RenderGetD3D9Device,(SDL_Renderer *a),(a),return) +#endif + +#if defined(__IPHONEOS__) && __IPHONEOS__ +SDL_DYNAPI_PROC(int,SDL_iPhoneSetAnimationCallback,(SDL_Window *a, int b, void c, void *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(void,SDL_iPhoneSetEventPump,(SDL_bool a),(a),) +#endif + +#if defined(__ANDROID__) && __ANDROID__ +SDL_DYNAPI_PROC(void*,SDL_AndroidGetJNIEnv,(void),(),return) +SDL_DYNAPI_PROC(void*,SDL_AndroidGetActivity,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_AndroidGetInternalStoragePath,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_AndroidGetExternalStorageState,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_AndroidGetExternalStoragePath,(void),(),return) +#endif + +SDL_DYNAPI_PROC(int,SDL_Init,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(int,SDL_InitSubSystem,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(void,SDL_QuitSubSystem,(Uint32 a),(a),) +SDL_DYNAPI_PROC(Uint32,SDL_WasInit,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(void,SDL_Quit,(void),(),) +SDL_DYNAPI_PROC(SDL_assert_state,SDL_ReportAssertion,(SDL_assert_data *a, const char *b, const char *c, int d),(a,b,c,d),return) +SDL_DYNAPI_PROC(void,SDL_SetAssertionHandler,(SDL_AssertionHandler a, void *b),(a,b),) +SDL_DYNAPI_PROC(const SDL_assert_data*,SDL_GetAssertionReport,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_ResetAssertionReport,(void),(),) +SDL_DYNAPI_PROC(SDL_bool,SDL_AtomicTryLock,(SDL_SpinLock *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_AtomicLock,(SDL_SpinLock *a),(a),) +SDL_DYNAPI_PROC(void,SDL_AtomicUnlock,(SDL_SpinLock *a),(a),) +SDL_DYNAPI_PROC(SDL_bool,SDL_AtomicCAS,(SDL_atomic_t *a, int b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_AtomicSet,(SDL_atomic_t *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_AtomicGet,(SDL_atomic_t *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_AtomicAdd,(SDL_atomic_t *a, int b),(a,b),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_AtomicCASPtr,(void **a, void *b, void *c),(a,b,c),return) +SDL_DYNAPI_PROC(void*,SDL_AtomicSetPtr,(void **a, void *b),(a,b),return) +SDL_DYNAPI_PROC(void*,SDL_AtomicGetPtr,(void **a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GetNumAudioDrivers,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_GetAudioDriver,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_AudioInit,(const char *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_AudioQuit,(void),(),) +SDL_DYNAPI_PROC(const char*,SDL_GetCurrentAudioDriver,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_OpenAudio,(SDL_AudioSpec *a, SDL_AudioSpec *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetNumAudioDevices,(int a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GetAudioDeviceName,(int a, int b),(a,b),return) +SDL_DYNAPI_PROC(SDL_AudioDeviceID,SDL_OpenAudioDevice,(const char *a, int b, const SDL_AudioSpec *c, SDL_AudioSpec *d, int e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(SDL_AudioStatus,SDL_GetAudioStatus,(void),(),return) +SDL_DYNAPI_PROC(SDL_AudioStatus,SDL_GetAudioDeviceStatus,(SDL_AudioDeviceID a),(a),return) +SDL_DYNAPI_PROC(void,SDL_PauseAudio,(int a),(a),) +SDL_DYNAPI_PROC(void,SDL_PauseAudioDevice,(SDL_AudioDeviceID a, int b),(a,b),) +SDL_DYNAPI_PROC(SDL_AudioSpec*,SDL_LoadWAV_RW,(SDL_RWops *a, int b, SDL_AudioSpec *c, Uint8 **d, Uint32 *e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(void,SDL_FreeWAV,(Uint8 *a),(a),) +SDL_DYNAPI_PROC(int,SDL_BuildAudioCVT,(SDL_AudioCVT *a, SDL_AudioFormat b, Uint8 c, int d, SDL_AudioFormat e, Uint8 f, int g),(a,b,c,d,e,f,g),return) +SDL_DYNAPI_PROC(int,SDL_ConvertAudio,(SDL_AudioCVT *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_MixAudio,(Uint8 *a, const Uint8 *b, Uint32 c, int d),(a,b,c,d),) +SDL_DYNAPI_PROC(void,SDL_MixAudioFormat,(Uint8 *a, const Uint8 *b, SDL_AudioFormat c, Uint32 d, int e),(a,b,c,d,e),) +SDL_DYNAPI_PROC(void,SDL_LockAudio,(void),(),) +SDL_DYNAPI_PROC(void,SDL_LockAudioDevice,(SDL_AudioDeviceID a),(a),) +SDL_DYNAPI_PROC(void,SDL_UnlockAudio,(void),(),) +SDL_DYNAPI_PROC(void,SDL_UnlockAudioDevice,(SDL_AudioDeviceID a),(a),) +SDL_DYNAPI_PROC(void,SDL_CloseAudio,(void),(),) +SDL_DYNAPI_PROC(void,SDL_CloseAudioDevice,(SDL_AudioDeviceID a),(a),) +SDL_DYNAPI_PROC(int,SDL_SetClipboardText,(const char *a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_GetClipboardText,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasClipboardText,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetCPUCount,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetCPUCacheLineSize,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasRDTSC,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasAltiVec,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasMMX,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_Has3DNow,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE2,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE3,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE41,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasSSE42,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetSystemRAM,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_GetError,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_ClearError,(void),(),) +SDL_DYNAPI_PROC(int,SDL_Error,(SDL_errorcode a),(a),return) +SDL_DYNAPI_PROC(void,SDL_PumpEvents,(void),(),) +SDL_DYNAPI_PROC(int,SDL_PeepEvents,(SDL_Event *a, int b, SDL_eventaction c, Uint32 d, Uint32 e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasEvent,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasEvents,(Uint32 a, Uint32 b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_FlushEvent,(Uint32 a),(a),) +SDL_DYNAPI_PROC(void,SDL_FlushEvents,(Uint32 a, Uint32 b),(a,b),) +SDL_DYNAPI_PROC(int,SDL_PollEvent,(SDL_Event *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_WaitEvent,(SDL_Event *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_WaitEventTimeout,(SDL_Event *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_PushEvent,(SDL_Event *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_SetEventFilter,(SDL_EventFilter a, void *b),(a,b),) +SDL_DYNAPI_PROC(SDL_bool,SDL_GetEventFilter,(SDL_EventFilter *a, void **b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_AddEventWatch,(SDL_EventFilter a, void *b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_DelEventWatch,(SDL_EventFilter a, void *b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_FilterEvents,(SDL_EventFilter a, void *b),(a,b),) +SDL_DYNAPI_PROC(Uint8,SDL_EventState,(Uint32 a, int b),(a,b),return) +SDL_DYNAPI_PROC(Uint32,SDL_RegisterEvents,(int a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_GetBasePath,(void),(),return) +SDL_DYNAPI_PROC(char*,SDL_GetPrefPath,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GameControllerAddMapping,(const char *a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_GameControllerMappingForGUID,(SDL_JoystickGUID a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_GameControllerMapping,(SDL_GameController *a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_IsGameController,(int a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GameControllerNameForIndex,(int a),(a),return) +SDL_DYNAPI_PROC(SDL_GameController*,SDL_GameControllerOpen,(int a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GameControllerName,(SDL_GameController *a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_GameControllerGetAttached,(SDL_GameController *a),(a),return) +SDL_DYNAPI_PROC(SDL_Joystick*,SDL_GameControllerGetJoystick,(SDL_GameController *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GameControllerEventState,(int a),(a),return) +SDL_DYNAPI_PROC(void,SDL_GameControllerUpdate,(void),(),) +SDL_DYNAPI_PROC(SDL_GameControllerAxis,SDL_GameControllerGetAxisFromString,(const char *a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GameControllerGetStringForAxis,(SDL_GameControllerAxis a),(a),return) +SDL_DYNAPI_PROC(SDL_GameControllerButtonBind,SDL_GameControllerGetBindForAxis,(SDL_GameController *a, SDL_GameControllerAxis b),(a,b),return) +SDL_DYNAPI_PROC(Sint16,SDL_GameControllerGetAxis,(SDL_GameController *a, SDL_GameControllerAxis b),(a,b),return) +SDL_DYNAPI_PROC(SDL_GameControllerButton,SDL_GameControllerGetButtonFromString,(const char *a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GameControllerGetStringForButton,(SDL_GameControllerButton a),(a),return) +SDL_DYNAPI_PROC(SDL_GameControllerButtonBind,SDL_GameControllerGetBindForButton,(SDL_GameController *a, SDL_GameControllerButton b),(a,b),return) +SDL_DYNAPI_PROC(Uint8,SDL_GameControllerGetButton,(SDL_GameController *a, SDL_GameControllerButton b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_GameControllerClose,(SDL_GameController *a),(a),) +SDL_DYNAPI_PROC(int,SDL_RecordGesture,(SDL_TouchID a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SaveAllDollarTemplates,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SaveDollarTemplate,(SDL_GestureID a, SDL_RWops *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_LoadDollarTemplates,(SDL_TouchID a, SDL_RWops *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_NumHaptics,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_HapticName,(int a),(a),return) +SDL_DYNAPI_PROC(SDL_Haptic*,SDL_HapticOpen,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticOpened,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticIndex,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_MouseIsHaptic,(void),(),return) +SDL_DYNAPI_PROC(SDL_Haptic*,SDL_HapticOpenFromMouse,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_JoystickIsHaptic,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(SDL_Haptic*,SDL_HapticOpenFromJoystick,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_HapticClose,(SDL_Haptic *a),(a),) +SDL_DYNAPI_PROC(int,SDL_HapticNumEffects,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticNumEffectsPlaying,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(unsigned int,SDL_HapticQuery,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticNumAxes,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticEffectSupported,(SDL_Haptic *a, SDL_HapticEffect *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_HapticNewEffect,(SDL_Haptic *a, SDL_HapticEffect *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_HapticUpdateEffect,(SDL_Haptic *a, int b, SDL_HapticEffect *c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_HapticRunEffect,(SDL_Haptic *a, int b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_HapticStopEffect,(SDL_Haptic *a, int b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_HapticDestroyEffect,(SDL_Haptic *a, int b),(a,b),) +SDL_DYNAPI_PROC(int,SDL_HapticGetEffectStatus,(SDL_Haptic *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_HapticSetGain,(SDL_Haptic *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_HapticSetAutocenter,(SDL_Haptic *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_HapticPause,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticUnpause,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticStopAll,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticRumbleSupported,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticRumbleInit,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_HapticRumblePlay,(SDL_Haptic *a, float b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_HapticRumbleStop,(SDL_Haptic *a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_SetHintWithPriority,(const char *a, const char *b, SDL_HintPriority c),(a,b,c),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_SetHint,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(const char*,SDL_GetHint,(const char *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_AddHintCallback,(const char *a, SDL_HintCallback b, void *c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_DelHintCallback,(const char *a, SDL_HintCallback b, void *c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_ClearHints,(void),(),) +SDL_DYNAPI_PROC(int,SDL_NumJoysticks,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_JoystickNameForIndex,(int a),(a),return) +SDL_DYNAPI_PROC(SDL_Joystick*,SDL_JoystickOpen,(int a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_JoystickName,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(SDL_JoystickGUID,SDL_JoystickGetDeviceGUID,(int a),(a),return) +SDL_DYNAPI_PROC(SDL_JoystickGUID,SDL_JoystickGetGUID,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_JoystickGetGUIDString,(SDL_JoystickGUID a, char *b, int c),(a,b,c),) +SDL_DYNAPI_PROC(SDL_JoystickGUID,SDL_JoystickGetGUIDFromString,(const char *a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_JoystickGetAttached,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(SDL_JoystickID,SDL_JoystickInstanceID,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_JoystickNumAxes,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_JoystickNumBalls,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_JoystickNumHats,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_JoystickNumButtons,(SDL_Joystick *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_JoystickUpdate,(void),(),) +SDL_DYNAPI_PROC(int,SDL_JoystickEventState,(int a),(a),return) +SDL_DYNAPI_PROC(Sint16,SDL_JoystickGetAxis,(SDL_Joystick *a, int b),(a,b),return) +SDL_DYNAPI_PROC(Uint8,SDL_JoystickGetHat,(SDL_Joystick *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_JoystickGetBall,(SDL_Joystick *a, int b, int *c, int *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(Uint8,SDL_JoystickGetButton,(SDL_Joystick *a, int b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_JoystickClose,(SDL_Joystick *a),(a),) +SDL_DYNAPI_PROC(SDL_Window*,SDL_GetKeyboardFocus,(void),(),return) +SDL_DYNAPI_PROC(const Uint8*,SDL_GetKeyboardState,(int *a),(a),return) +SDL_DYNAPI_PROC(SDL_Keymod,SDL_GetModState,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_SetModState,(SDL_Keymod a),(a),) +SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeyFromScancode,(SDL_Scancode a),(a),return) +SDL_DYNAPI_PROC(SDL_Scancode,SDL_GetScancodeFromKey,(SDL_Keycode a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GetScancodeName,(SDL_Scancode a),(a),return) +SDL_DYNAPI_PROC(SDL_Scancode,SDL_GetScancodeFromName,(const char *a),(a),return) +SDL_DYNAPI_PROC(const char*,SDL_GetKeyName,(SDL_Keycode a),(a),return) +SDL_DYNAPI_PROC(SDL_Keycode,SDL_GetKeyFromName,(const char *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_StartTextInput,(void),(),) +SDL_DYNAPI_PROC(SDL_bool,SDL_IsTextInputActive,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_StopTextInput,(void),(),) +SDL_DYNAPI_PROC(void,SDL_SetTextInputRect,(SDL_Rect *a),(a),) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasScreenKeyboardSupport,(void),(),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_IsScreenKeyboardShown,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(void*,SDL_LoadObject,(const char *a),(a),return) +SDL_DYNAPI_PROC(void*,SDL_LoadFunction,(void *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_UnloadObject,(void *a),(a),) +SDL_DYNAPI_PROC(void,SDL_LogSetAllPriority,(SDL_LogPriority a),(a),) +SDL_DYNAPI_PROC(void,SDL_LogSetPriority,(int a, SDL_LogPriority b),(a,b),) +SDL_DYNAPI_PROC(SDL_LogPriority,SDL_LogGetPriority,(int a),(a),return) +SDL_DYNAPI_PROC(void,SDL_LogResetPriorities,(void),(),) +SDL_DYNAPI_PROC(void,SDL_LogMessageV,(int a, SDL_LogPriority b, const char *c, va_list d),(a,b,c,d),) +SDL_DYNAPI_PROC(void,SDL_LogGetOutputFunction,(SDL_LogOutputFunction *a, void **b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_LogSetOutputFunction,(SDL_LogOutputFunction a, void *b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_SetMainReady,(void),(),) +SDL_DYNAPI_PROC(int,SDL_ShowMessageBox,(const SDL_MessageBoxData *a, int *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_ShowSimpleMessageBox,(Uint32 a, const char *b, const char *c, SDL_Window *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(SDL_Window*,SDL_GetMouseFocus,(void),(),return) +SDL_DYNAPI_PROC(Uint32,SDL_GetMouseState,(int *a, int *b),(a,b),return) +SDL_DYNAPI_PROC(Uint32,SDL_GetRelativeMouseState,(int *a, int *b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_WarpMouseInWindow,(SDL_Window *a, int b, int c),(a,b,c),) +SDL_DYNAPI_PROC(int,SDL_SetRelativeMouseMode,(SDL_bool a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_GetRelativeMouseMode,(void),(),return) +SDL_DYNAPI_PROC(SDL_Cursor*,SDL_CreateCursor,(const Uint8 *a, const Uint8 *b, int c, int d, int e, int f),(a,b,c,d,e,f),return) +SDL_DYNAPI_PROC(SDL_Cursor*,SDL_CreateColorCursor,(SDL_Surface *a, int b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(SDL_Cursor*,SDL_CreateSystemCursor,(SDL_SystemCursor a),(a),return) +SDL_DYNAPI_PROC(void,SDL_SetCursor,(SDL_Cursor *a),(a),) +SDL_DYNAPI_PROC(SDL_Cursor*,SDL_GetCursor,(void),(),return) +SDL_DYNAPI_PROC(SDL_Cursor*,SDL_GetDefaultCursor,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_FreeCursor,(SDL_Cursor *a),(a),) +SDL_DYNAPI_PROC(int,SDL_ShowCursor,(int a),(a),return) +SDL_DYNAPI_PROC(SDL_mutex*,SDL_CreateMutex,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_LockMutex,(SDL_mutex *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_TryLockMutex,(SDL_mutex *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_UnlockMutex,(SDL_mutex *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_DestroyMutex,(SDL_mutex *a),(a),) +SDL_DYNAPI_PROC(SDL_sem*,SDL_CreateSemaphore,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(void,SDL_DestroySemaphore,(SDL_sem *a),(a),) +SDL_DYNAPI_PROC(int,SDL_SemWait,(SDL_sem *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SemTryWait,(SDL_sem *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SemWaitTimeout,(SDL_sem *a, Uint32 b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SemPost,(SDL_sem *a),(a),return) +SDL_DYNAPI_PROC(Uint32,SDL_SemValue,(SDL_sem *a),(a),return) +SDL_DYNAPI_PROC(SDL_cond*,SDL_CreateCond,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_DestroyCond,(SDL_cond *a),(a),) +SDL_DYNAPI_PROC(int,SDL_CondSignal,(SDL_cond *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_CondBroadcast,(SDL_cond *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_CondWait,(SDL_cond *a, SDL_mutex *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_CondWaitTimeout,(SDL_cond *a, SDL_mutex *b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(const char*,SDL_GetPixelFormatName,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_PixelFormatEnumToMasks,(Uint32 a, int *b, Uint32 *c, Uint32 *d, Uint32 *e, Uint32 *f),(a,b,c,d,e,f),return) +SDL_DYNAPI_PROC(Uint32,SDL_MasksToPixelFormatEnum,(int a, Uint32 b, Uint32 c, Uint32 d, Uint32 e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(SDL_PixelFormat*,SDL_AllocFormat,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(void,SDL_FreeFormat,(SDL_PixelFormat *a),(a),) +SDL_DYNAPI_PROC(SDL_Palette*,SDL_AllocPalette,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetPixelFormatPalette,(SDL_PixelFormat *a, SDL_Palette *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SetPaletteColors,(SDL_Palette *a, const SDL_Color *b, int c, int d),(a,b,c,d),return) +SDL_DYNAPI_PROC(void,SDL_FreePalette,(SDL_Palette *a),(a),) +SDL_DYNAPI_PROC(Uint32,SDL_MapRGB,(const SDL_PixelFormat *a, Uint8 b, Uint8 c, Uint8 d),(a,b,c,d),return) +SDL_DYNAPI_PROC(Uint32,SDL_MapRGBA,(const SDL_PixelFormat *a, Uint8 b, Uint8 c, Uint8 d, Uint8 e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(void,SDL_GetRGB,(Uint32 a, const SDL_PixelFormat *b, Uint8 *c, Uint8 *d, Uint8 *e),(a,b,c,d,e),) +SDL_DYNAPI_PROC(void,SDL_GetRGBA,(Uint32 a, const SDL_PixelFormat *b, Uint8 *c, Uint8 *d, Uint8 *e, Uint8 *f),(a,b,c,d,e,f),) +SDL_DYNAPI_PROC(void,SDL_CalculateGammaRamp,(float a, Uint16 *b),(a,b),) +SDL_DYNAPI_PROC(const char*,SDL_GetPlatform,(void),(),return) +SDL_DYNAPI_PROC(SDL_PowerState,SDL_GetPowerInfo,(int *a, int *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasIntersection,(const SDL_Rect *a, const SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_IntersectRect,(const SDL_Rect *a, const SDL_Rect *b, SDL_Rect *c),(a,b,c),return) +SDL_DYNAPI_PROC(void,SDL_UnionRect,(const SDL_Rect *a, const SDL_Rect *b, SDL_Rect *c),(a,b,c),) +SDL_DYNAPI_PROC(SDL_bool,SDL_EnclosePoints,(const SDL_Point *a, int b, const SDL_Rect *c, SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_IntersectRectAndLine,(const SDL_Rect *a, int *b, int *c, int *d, int *e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(int,SDL_GetNumRenderDrivers,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetRenderDriverInfo,(int a, SDL_RendererInfo *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_CreateWindowAndRenderer,(int a, int b, Uint32 c, SDL_Window **d, SDL_Renderer **e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(SDL_Renderer*,SDL_CreateRenderer,(SDL_Window *a, int b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(SDL_Renderer*,SDL_CreateSoftwareRenderer,(SDL_Surface *a),(a),return) +SDL_DYNAPI_PROC(SDL_Renderer*,SDL_GetRenderer,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GetRendererInfo,(SDL_Renderer *a, SDL_RendererInfo *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetRendererOutputSize,(SDL_Renderer *a, int *b, int *c),(a,b,c),return) +SDL_DYNAPI_PROC(SDL_Texture*,SDL_CreateTexture,(SDL_Renderer *a, Uint32 b, int c, int d, int e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(SDL_Texture*,SDL_CreateTextureFromSurface,(SDL_Renderer *a, SDL_Surface *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_QueryTexture,(SDL_Texture *a, Uint32 *b, int *c, int *d, int *e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(int,SDL_SetTextureColorMod,(SDL_Texture *a, Uint8 b, Uint8 c, Uint8 d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_GetTextureColorMod,(SDL_Texture *a, Uint8 *b, Uint8 *c, Uint8 *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_SetTextureAlphaMod,(SDL_Texture *a, Uint8 b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetTextureAlphaMod,(SDL_Texture *a, Uint8 *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SetTextureBlendMode,(SDL_Texture *a, SDL_BlendMode b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetTextureBlendMode,(SDL_Texture *a, SDL_BlendMode *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_UpdateTexture,(SDL_Texture *a, const SDL_Rect *b, const void *c, int d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_UpdateYUVTexture,(SDL_Texture *a, const SDL_Rect *b, const Uint8 *c, int d, const Uint8 *e, int f, const Uint8 *g, int h),(a,b,c,d,e,f,g,h),return) +SDL_DYNAPI_PROC(int,SDL_LockTexture,(SDL_Texture *a, const SDL_Rect *b, void **c, int *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(void,SDL_UnlockTexture,(SDL_Texture *a),(a),) +SDL_DYNAPI_PROC(SDL_bool,SDL_RenderTargetSupported,(SDL_Renderer *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetRenderTarget,(SDL_Renderer *a, SDL_Texture *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_Texture*,SDL_GetRenderTarget,(SDL_Renderer *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_RenderSetLogicalSize,(SDL_Renderer *a, int b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(void,SDL_RenderGetLogicalSize,(SDL_Renderer *a, int *b, int *c),(a,b,c),) +SDL_DYNAPI_PROC(int,SDL_RenderSetViewport,(SDL_Renderer *a, const SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_RenderGetViewport,(SDL_Renderer *a, SDL_Rect *b),(a,b),) +SDL_DYNAPI_PROC(int,SDL_RenderSetClipRect,(SDL_Renderer *a, const SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_RenderGetClipRect,(SDL_Renderer *a, SDL_Rect *b),(a,b),) +SDL_DYNAPI_PROC(int,SDL_RenderSetScale,(SDL_Renderer *a, float b, float c),(a,b,c),return) +SDL_DYNAPI_PROC(void,SDL_RenderGetScale,(SDL_Renderer *a, float *b, float *c),(a,b,c),) +SDL_DYNAPI_PROC(int,SDL_SetRenderDrawColor,(SDL_Renderer *a, Uint8 b, Uint8 c, Uint8 d, Uint8 e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(int,SDL_GetRenderDrawColor,(SDL_Renderer *a, Uint8 *b, Uint8 *c, Uint8 *d, Uint8 *e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(int,SDL_SetRenderDrawBlendMode,(SDL_Renderer *a, SDL_BlendMode b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetRenderDrawBlendMode,(SDL_Renderer *a, SDL_BlendMode *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_RenderClear,(SDL_Renderer *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_RenderDrawPoint,(SDL_Renderer *a, int b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_RenderDrawPoints,(SDL_Renderer *a, const SDL_Point *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_RenderDrawLine,(SDL_Renderer *a, int b, int c, int d, int e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(int,SDL_RenderDrawLines,(SDL_Renderer *a, const SDL_Point *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_RenderDrawRect,(SDL_Renderer *a, const SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_RenderDrawRects,(SDL_Renderer *a, const SDL_Rect *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_RenderFillRect,(SDL_Renderer *a, const SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_RenderFillRects,(SDL_Renderer *a, const SDL_Rect *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_RenderCopy,(SDL_Renderer *a, SDL_Texture *b, const SDL_Rect *c, const SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_RenderCopyEx,(SDL_Renderer *a, SDL_Texture *b, const SDL_Rect *c, const SDL_Rect *d, const double e, const SDL_Point *f, const SDL_RendererFlip g),(a,b,c,d,e,f,g),return) +SDL_DYNAPI_PROC(int,SDL_RenderReadPixels,(SDL_Renderer *a, const SDL_Rect *b, Uint32 c, void *d, int e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(void,SDL_RenderPresent,(SDL_Renderer *a),(a),) +SDL_DYNAPI_PROC(void,SDL_DestroyTexture,(SDL_Texture *a),(a),) +SDL_DYNAPI_PROC(void,SDL_DestroyRenderer,(SDL_Renderer *a),(a),) +SDL_DYNAPI_PROC(int,SDL_GL_BindTexture,(SDL_Texture *a, float *b, float *c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_GL_UnbindTexture,(SDL_Texture *a),(a),return) +SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromFile,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromMem,(void *a, int b),(a,b),return) +SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromConstMem,(const void *a, int b),(a,b),return) +SDL_DYNAPI_PROC(SDL_RWops*,SDL_AllocRW,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_FreeRW,(SDL_RWops *a),(a),) +SDL_DYNAPI_PROC(Uint8,SDL_ReadU8,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(Uint16,SDL_ReadLE16,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(Uint16,SDL_ReadBE16,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(Uint32,SDL_ReadLE32,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(Uint32,SDL_ReadBE32,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(Uint64,SDL_ReadLE64,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(Uint64,SDL_ReadBE64,(SDL_RWops *a),(a),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteU8,(SDL_RWops *a, Uint8 b),(a,b),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteLE16,(SDL_RWops *a, Uint16 b),(a,b),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteBE16,(SDL_RWops *a, Uint16 b),(a,b),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteLE32,(SDL_RWops *a, Uint32 b),(a,b),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteBE32,(SDL_RWops *a, Uint32 b),(a,b),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteLE64,(SDL_RWops *a, Uint64 b),(a,b),return) +SDL_DYNAPI_PROC(size_t,SDL_WriteBE64,(SDL_RWops *a, Uint64 b),(a,b),return) +SDL_DYNAPI_PROC(SDL_Window*,SDL_CreateShapedWindow,(const char *a, unsigned int b, unsigned int c, unsigned int d, unsigned int e, Uint32 f),(a,b,c,d,e,f),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_IsShapedWindow,(const SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetWindowShape,(SDL_Window *a, SDL_Surface *b, SDL_WindowShapeMode *c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_GetShapedWindowMode,(SDL_Window *a, SDL_WindowShapeMode *b),(a,b),return) +SDL_DYNAPI_PROC(void*,SDL_malloc,(size_t a),(a),return) +SDL_DYNAPI_PROC(void*,SDL_calloc,(size_t a, size_t b),(a,b),return) +SDL_DYNAPI_PROC(void*,SDL_realloc,(void *a, size_t b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_free,(void *a),(a),) +SDL_DYNAPI_PROC(char*,SDL_getenv,(const char *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_setenv,(const char *a, const char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(void,SDL_qsort,(void *a, size_t b, size_t c, int (*d)(const void *, const void *)),(a,b,c,d),) +SDL_DYNAPI_PROC(int,SDL_abs,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_isdigit,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_isspace,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_toupper,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_tolower,(int a),(a),return) +SDL_DYNAPI_PROC(void*,SDL_memset,(void *a, int b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(void*,SDL_memcpy,(void *a, const void *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(void*,SDL_memmove,(void *a, const void *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_memcmp,(const void *a, const void *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(size_t,SDL_wcslen,(const wchar_t *a),(a),return) +SDL_DYNAPI_PROC(size_t,SDL_wcslcpy,(wchar_t *a, const wchar_t *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(size_t,SDL_wcslcat,(wchar_t *a, const wchar_t *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(size_t,SDL_strlen,(const char *a),(a),return) +SDL_DYNAPI_PROC(size_t,SDL_strlcpy,(char *a, const char *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(size_t,SDL_utf8strlcpy,(char *a, const char *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(size_t,SDL_strlcat,(char *a, const char *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(char*,SDL_strdup,(const char *a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_strrev,(char *a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_strupr,(char *a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_strlwr,(char *a),(a),return) +SDL_DYNAPI_PROC(char*,SDL_strchr,(const char *a, int b),(a,b),return) +SDL_DYNAPI_PROC(char*,SDL_strrchr,(const char *a, int b),(a,b),return) +SDL_DYNAPI_PROC(char*,SDL_strstr,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(char*,SDL_itoa,(int a, char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(char*,SDL_uitoa,(unsigned int a, char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(char*,SDL_ltoa,(long a, char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(char*,SDL_ultoa,(unsigned long a, char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(char*,SDL_lltoa,(Sint64 a, char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(char*,SDL_ulltoa,(Uint64 a, char *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_atoi,(const char *a),(a),return) +SDL_DYNAPI_PROC(double,SDL_atof,(const char *a),(a),return) +SDL_DYNAPI_PROC(long,SDL_strtol,(const char *a, char **b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(unsigned long,SDL_strtoul,(const char *a, char **b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(Sint64,SDL_strtoll,(const char *a, char **b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(Uint64,SDL_strtoull,(const char *a, char **b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(double,SDL_strtod,(const char *a, char **b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_strcmp,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_strncmp,(const char *a, const char *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_strcasecmp,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_strncasecmp,(const char *a, const char *b, size_t c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_vsnprintf,(char *a, size_t b, const char *c, va_list d),(a,b,c,d),return) +SDL_DYNAPI_PROC(double,SDL_acos,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_asin,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_atan,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_atan2,(double a, double b),(a,b),return) +SDL_DYNAPI_PROC(double,SDL_ceil,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_copysign,(double a, double b),(a,b),return) +SDL_DYNAPI_PROC(double,SDL_cos,(double a),(a),return) +SDL_DYNAPI_PROC(float,SDL_cosf,(float a),(a),return) +SDL_DYNAPI_PROC(double,SDL_fabs,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_floor,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_log,(double a),(a),return) +SDL_DYNAPI_PROC(double,SDL_pow,(double a, double b),(a,b),return) +SDL_DYNAPI_PROC(double,SDL_scalbn,(double a, int b),(a,b),return) +SDL_DYNAPI_PROC(double,SDL_sin,(double a),(a),return) +SDL_DYNAPI_PROC(float,SDL_sinf,(float a),(a),return) +SDL_DYNAPI_PROC(double,SDL_sqrt,(double a),(a),return) +SDL_DYNAPI_PROC(SDL_iconv_t,SDL_iconv_open,(const char *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_iconv_close,(SDL_iconv_t a),(a),return) +SDL_DYNAPI_PROC(size_t,SDL_iconv,(SDL_iconv_t a, const char **b, size_t *c, char **d, size_t *e),(a,b,c,d,e),return) +SDL_DYNAPI_PROC(char*,SDL_iconv_string,(const char *a, const char *b, const char *c, size_t d),(a,b,c,d),return) +SDL_DYNAPI_PROC(SDL_Surface*,SDL_CreateRGBSurface,(Uint32 a, int b, int c, int d, Uint32 e, Uint32 f, Uint32 g, Uint32 h),(a,b,c,d,e,f,g,h),return) +SDL_DYNAPI_PROC(SDL_Surface*,SDL_CreateRGBSurfaceFrom,(void *a, int b, int c, int d, int e, Uint32 f, Uint32 g, Uint32 h, Uint32 i),(a,b,c,d,e,f,g,h,i),return) +SDL_DYNAPI_PROC(void,SDL_FreeSurface,(SDL_Surface *a),(a),) +SDL_DYNAPI_PROC(int,SDL_SetSurfacePalette,(SDL_Surface *a, SDL_Palette *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_LockSurface,(SDL_Surface *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_UnlockSurface,(SDL_Surface *a),(a),) +SDL_DYNAPI_PROC(SDL_Surface*,SDL_LoadBMP_RW,(SDL_RWops *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SaveBMP_RW,(SDL_Surface *a, SDL_RWops *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_SetSurfaceRLE,(SDL_Surface *a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SetColorKey,(SDL_Surface *a, int b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_GetColorKey,(SDL_Surface *a, Uint32 *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SetSurfaceColorMod,(SDL_Surface *a, Uint8 b, Uint8 c, Uint8 d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_GetSurfaceColorMod,(SDL_Surface *a, Uint8 *b, Uint8 *c, Uint8 *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_SetSurfaceAlphaMod,(SDL_Surface *a, Uint8 b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetSurfaceAlphaMod,(SDL_Surface *a, Uint8 *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_SetSurfaceBlendMode,(SDL_Surface *a, SDL_BlendMode b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetSurfaceBlendMode,(SDL_Surface *a, SDL_BlendMode *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_SetClipRect,(SDL_Surface *a, const SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_GetClipRect,(SDL_Surface *a, SDL_Rect *b),(a,b),) +SDL_DYNAPI_PROC(SDL_Surface*,SDL_ConvertSurface,(SDL_Surface *a, const SDL_PixelFormat *b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(SDL_Surface*,SDL_ConvertSurfaceFormat,(SDL_Surface *a, Uint32 b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_ConvertPixels,(int a, int b, Uint32 c, const void *d, int e, Uint32 f, void *g, int h),(a,b,c,d,e,f,g,h),return) +SDL_DYNAPI_PROC(int,SDL_FillRect,(SDL_Surface *a, const SDL_Rect *b, Uint32 c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_FillRects,(SDL_Surface *a, const SDL_Rect *b, int c, Uint32 d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_UpperBlit,(SDL_Surface *a, const SDL_Rect *b, SDL_Surface *c, SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_LowerBlit,(SDL_Surface *a, SDL_Rect *b, SDL_Surface *c, SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_SoftStretch,(SDL_Surface *a, const SDL_Rect *b, SDL_Surface *c, const SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_UpperBlitScaled,(SDL_Surface *a, const SDL_Rect *b, SDL_Surface *c, SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_LowerBlitScaled,(SDL_Surface *a, SDL_Rect *b, SDL_Surface *c, SDL_Rect *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_GetWindowWMInfo,(SDL_Window *a, SDL_SysWMinfo *b),(a,b),return) +SDL_DYNAPI_PROC(const char*,SDL_GetThreadName,(SDL_Thread *a),(a),return) +SDL_DYNAPI_PROC(SDL_threadID,SDL_ThreadID,(void),(),return) +SDL_DYNAPI_PROC(SDL_threadID,SDL_GetThreadID,(SDL_Thread *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetThreadPriority,(SDL_ThreadPriority a),(a),return) +SDL_DYNAPI_PROC(void,SDL_WaitThread,(SDL_Thread *a, int *b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_DetachThread,(SDL_Thread *a),(a),) +SDL_DYNAPI_PROC(SDL_TLSID,SDL_TLSCreate,(void),(),return) +SDL_DYNAPI_PROC(void*,SDL_TLSGet,(SDL_TLSID a),(a),return) +SDL_DYNAPI_PROC(int,SDL_TLSSet,(SDL_TLSID a, const void *b, void (*c)(void*)),(a,b,c),return) +SDL_DYNAPI_PROC(Uint32,SDL_GetTicks,(void),(),return) +SDL_DYNAPI_PROC(Uint64,SDL_GetPerformanceCounter,(void),(),return) +SDL_DYNAPI_PROC(Uint64,SDL_GetPerformanceFrequency,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_Delay,(Uint32 a),(a),) +SDL_DYNAPI_PROC(SDL_TimerID,SDL_AddTimer,(Uint32 a, SDL_TimerCallback b, void *c),(a,b,c),return) +SDL_DYNAPI_PROC(SDL_bool,SDL_RemoveTimer,(SDL_TimerID a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GetNumTouchDevices,(void),(),return) +SDL_DYNAPI_PROC(SDL_TouchID,SDL_GetTouchDevice,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GetNumTouchFingers,(SDL_TouchID a),(a),return) +SDL_DYNAPI_PROC(SDL_Finger*,SDL_GetTouchFinger,(SDL_TouchID a, int b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_GetVersion,(SDL_version *a),(a),) +SDL_DYNAPI_PROC(const char*,SDL_GetRevision,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetRevisionNumber,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetNumVideoDrivers,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_GetVideoDriver,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_VideoInit,(const char *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_VideoQuit,(void),(),) +SDL_DYNAPI_PROC(const char*,SDL_GetCurrentVideoDriver,(void),(),return) +SDL_DYNAPI_PROC(int,SDL_GetNumVideoDisplays,(void),(),return) +SDL_DYNAPI_PROC(const char*,SDL_GetDisplayName,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GetDisplayBounds,(int a, SDL_Rect *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetNumDisplayModes,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GetDisplayMode,(int a, int b, SDL_DisplayMode *c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_GetDesktopDisplayMode,(int a, SDL_DisplayMode *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetCurrentDisplayMode,(int a, SDL_DisplayMode *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_DisplayMode*,SDL_GetClosestDisplayMode,(int a, const SDL_DisplayMode *b, SDL_DisplayMode *c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_GetWindowDisplayIndex,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetWindowDisplayMode,(SDL_Window *a, const SDL_DisplayMode *b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GetWindowDisplayMode,(SDL_Window *a, SDL_DisplayMode *b),(a,b),return) +SDL_DYNAPI_PROC(Uint32,SDL_GetWindowPixelFormat,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(SDL_Window*,SDL_CreateWindow,(const char *a, int b, int c, int d, int e, Uint32 f),(a,b,c,d,e,f),return) +SDL_DYNAPI_PROC(SDL_Window*,SDL_CreateWindowFrom,(const void *a),(a),return) +SDL_DYNAPI_PROC(Uint32,SDL_GetWindowID,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(SDL_Window*,SDL_GetWindowFromID,(Uint32 a),(a),return) +SDL_DYNAPI_PROC(Uint32,SDL_GetWindowFlags,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_SetWindowTitle,(SDL_Window *a, const char *b),(a,b),) +SDL_DYNAPI_PROC(const char*,SDL_GetWindowTitle,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_SetWindowIcon,(SDL_Window *a, SDL_Surface *b),(a,b),) +SDL_DYNAPI_PROC(void*,SDL_SetWindowData,(SDL_Window *a, const char *b, void *c),(a,b,c),return) +SDL_DYNAPI_PROC(void*,SDL_GetWindowData,(SDL_Window *a, const char *b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_SetWindowPosition,(SDL_Window *a, int b, int c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_GetWindowPosition,(SDL_Window *a, int *b, int *c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_SetWindowSize,(SDL_Window *a, int b, int c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_GetWindowSize,(SDL_Window *a, int *b, int *c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_SetWindowMinimumSize,(SDL_Window *a, int b, int c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_GetWindowMinimumSize,(SDL_Window *a, int *b, int *c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_SetWindowMaximumSize,(SDL_Window *a, int b, int c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_GetWindowMaximumSize,(SDL_Window *a, int *b, int *c),(a,b,c),) +SDL_DYNAPI_PROC(void,SDL_SetWindowBordered,(SDL_Window *a, SDL_bool b),(a,b),) +SDL_DYNAPI_PROC(void,SDL_ShowWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(void,SDL_HideWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(void,SDL_RaiseWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(void,SDL_MaximizeWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(void,SDL_MinimizeWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(void,SDL_RestoreWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(int,SDL_SetWindowFullscreen,(SDL_Window *a, Uint32 b),(a,b),return) +SDL_DYNAPI_PROC(SDL_Surface*,SDL_GetWindowSurface,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_UpdateWindowSurface,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_UpdateWindowSurfaceRects,(SDL_Window *a, const SDL_Rect *b, int c),(a,b,c),return) +SDL_DYNAPI_PROC(void,SDL_SetWindowGrab,(SDL_Window *a, SDL_bool b),(a,b),) +SDL_DYNAPI_PROC(SDL_bool,SDL_GetWindowGrab,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetWindowBrightness,(SDL_Window *a, float b),(a,b),return) +SDL_DYNAPI_PROC(float,SDL_GetWindowBrightness,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_SetWindowGammaRamp,(SDL_Window *a, const Uint16 *b, const Uint16 *c, const Uint16 *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(int,SDL_GetWindowGammaRamp,(SDL_Window *a, Uint16 *b, Uint16 *c, Uint16 *d),(a,b,c,d),return) +SDL_DYNAPI_PROC(void,SDL_DestroyWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(SDL_bool,SDL_IsScreenSaverEnabled,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_EnableScreenSaver,(void),(),) +SDL_DYNAPI_PROC(void,SDL_DisableScreenSaver,(void),(),) +SDL_DYNAPI_PROC(int,SDL_GL_LoadLibrary,(const char *a),(a),return) +SDL_DYNAPI_PROC(void*,SDL_GL_GetProcAddress,(const char *a),(a),return) +SDL_DYNAPI_PROC(void,SDL_GL_UnloadLibrary,(void),(),) +SDL_DYNAPI_PROC(SDL_bool,SDL_GL_ExtensionSupported,(const char *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GL_SetAttribute,(SDL_GLattr a, int b),(a,b),return) +SDL_DYNAPI_PROC(int,SDL_GL_GetAttribute,(SDL_GLattr a, int *b),(a,b),return) +SDL_DYNAPI_PROC(SDL_GLContext,SDL_GL_CreateContext,(SDL_Window *a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GL_MakeCurrent,(SDL_Window *a, SDL_GLContext b),(a,b),return) +SDL_DYNAPI_PROC(SDL_Window*,SDL_GL_GetCurrentWindow,(void),(),return) +SDL_DYNAPI_PROC(SDL_GLContext,SDL_GL_GetCurrentContext,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_GL_GetDrawableSize,(SDL_Window *a, int *b, int *c),(a,b,c),) +SDL_DYNAPI_PROC(int,SDL_GL_SetSwapInterval,(int a),(a),return) +SDL_DYNAPI_PROC(int,SDL_GL_GetSwapInterval,(void),(),return) +SDL_DYNAPI_PROC(void,SDL_GL_SwapWindow,(SDL_Window *a),(a),) +SDL_DYNAPI_PROC(void,SDL_GL_DeleteContext,(SDL_GLContext a),(a),) +SDL_DYNAPI_PROC(int,SDL_vsscanf,(const char *a, const char *b, va_list c),(a,b,c),return) diff --git a/src/dynapi/gendynapi.pl b/src/dynapi/gendynapi.pl new file mode 100755 index 0000000000..b76afbd8a0 --- /dev/null +++ b/src/dynapi/gendynapi.pl @@ -0,0 +1,141 @@ +#!/usr/bin/perl -w + +# Simple DirectMedia Layer +# Copyright (C) 1997-2013 Sam Lantinga +# +# This software is provided 'as-is', without any express or implied +# warranty. In no event will the authors be held liable for any damages +# arising from the use of this software. +# +# Permission is granted to anyone to use this software for any purpose, +# including commercial applications, and to alter it and redistribute it +# freely, subject to the following restrictions: +# +# 1. The origin of this software must not be misrepresented; you must not +# claim that you wrote the original software. If you use this software +# in a product, an acknowledgment in the product documentation would be +# appreciated but is not required. +# 2. Altered source versions must be plainly marked as such, and must not be +# misrepresented as being the original software. +# 3. This notice may not be removed or altered from any source distribution. + +# WHAT IS THIS? +# When you add a public API to SDL, please run this script, make sure the +# output looks sane (hg diff, it adds to existing files), and commit it. +# It keeps the dynamic API jump table operating correctly. + +# If you wanted this to be readable, you shouldn't have used perl. + +use warnings; +use strict; +use File::Basename; + +chdir(dirname(__FILE__) . '/../..'); +my $sdl_dynapi_procs_h = "src/dynapi/SDL_dynapi_procs.h"; +my $sdl_dynapi_overrides_h = "src/dynapi/SDL_dynapi_overrides.h"; + +my %existing = (); +if (-f $sdl_dynapi_procs_h) { + open(SDL_DYNAPI_PROCS_H, '<', $sdl_dynapi_procs_h) or die("Can't open $sdl_dynapi_procs_h: $!\n"); + while () { + if (/\ASDL_DYNAPI_PROC\(.*?,(.*?),/) { + $existing{$1} = 1; + } + } + close(SDL_DYNAPI_PROCS_H) +} + +open(SDL_DYNAPI_PROCS_H, '>>', $sdl_dynapi_procs_h) or die("Can't open $sdl_dynapi_procs_h: $!\n"); +open(SDL_DYNAPI_OVERRIDES_H, '>>', $sdl_dynapi_overrides_h) or die("Can't open $sdl_dynapi_overrides_h: $!\n"); + +opendir(HEADERS, 'include') or die("Can't open include dir: $!\n"); +while (readdir(HEADERS)) { + next if not /\.h\Z/; + my $header = "include/$_"; + open(HEADER, '<', $header) or die("Can't open $header: $!\n"); + while (

) { + chomp; + next if not /\A\s*extern\s+DECLSPEC/; + my $decl = "$_ "; + if (not $decl =~ /\)\s*;/) { + while (
) { + chomp; + s/\A\s+//; + s/\s+\Z//; + $decl .= "$_ "; + last if /\)\s*;/; + } + } + + $decl =~ s/\s+\Z//; + #print("DECL: [$decl]\n"); + + if ($decl =~ /\A\s*extern\s+DECLSPEC\s+(const\s+|)(unsigned\s+|)(.*?)\s*(\*?)\s*SDLCALL\s+(.*?)\s*\((.*?)\);/) { + my $rc = "$1$2$3$4"; + my $fn = $5; + + next if $existing{$fn}; # already slotted into the jump table. + + my @params = split(',', $6); + + #print("rc == '$rc', fn == '$fn', params == '$params'\n"); + + my $retstr = ($rc eq 'void') ? '' : 'return'; + my $paramstr = '('; + my $argstr = '('; + my $i = 0; + foreach (@params) { + my $str = $_; + $str =~ s/\A\s+//; + $str =~ s/\s+\Z//; + #print("1PARAM: $str\n"); + if ($str eq 'void') { + $paramstr .= 'void'; + } elsif ($str eq '...') { + if ($i > 0) { + $paramstr .= ', '; + } + $paramstr .= $str; + } elsif ($str =~ /\A\s*((const\s+|)(unsigned\s+|)([a-zA-Z0-9_]*)\s*([\*\s]*))\s*(.*?)\Z/) { + #print("PARSED: [$1], [$2], [$3], [$4], [$5]\n"); + my $type = $1; + my $var = $6; + $type =~ s/\A\s+//; + $type =~ s/\s+\Z//; + $var =~ s/\A\s+//; + $var =~ s/\s+\Z//; + $type =~ s/\s*\*\Z/*/g; + $type =~ s/\s*(\*+)\Z/ $1/; + #print("SPLIT: ($type, $var)\n"); + my $name = chr(ord('a') + $i); + if ($i > 0) { + $paramstr .= ', '; + $argstr .= ','; + } + my $spc = ($type =~ /\*\Z/) ? '' : ' '; + $paramstr .= "$type$spc$name"; + $argstr .= "$name"; + } + $i++; + } + + $paramstr = '(void' if ($i == 0); # Just to make this consistent. + + $paramstr .= ')'; + $argstr .= ')'; + + print("NEW: $decl\n"); + print SDL_DYNAPI_PROCS_H "SDL_DYNAPI_PROC($rc,$fn,$paramstr,$argstr,$retstr)\n"; + print SDL_DYNAPI_OVERRIDES_H "#define $fn ${fn}_REAL\n"; + } else { + print("Failed to parse decl [$decl]!\n"); + } + } + close(HEADER); +} +closedir(HEADERS); + +close(SDL_DYNAPI_PROCS_H); +close(SDL_DYNAPI_OVERRIDES_H); + +# vi: set ts=4 sw=4 expandtab: diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index ed2c98cc63..3025f9bbcb 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -428,7 +428,11 @@ SDL_SYS_HapticOpenFromXInput(SDL_Haptic * haptic, Uint8 userid) #if defined(__WIN32__) && !defined(HAVE_LIBC) /* !!! FIXME: this is nasty. */ #undef SDL_CreateThread + #if SDL_DYNAMIC_API + haptic->hwdata->thread = SDL_CreateThread_REAL(SDL_RunXInputHaptic, threadName, haptic->hwdata, NULL, NULL); + #else haptic->hwdata->thread = SDL_CreateThread(SDL_RunXInputHaptic, threadName, haptic->hwdata, NULL, NULL); + #endif #else haptic->hwdata->thread = SDL_CreateThread(SDL_RunXInputHaptic, threadName, haptic->hwdata); #endif diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index 919d980b87..c8a0d7babd 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -630,7 +630,11 @@ SDL_SYS_JoystickInit(void) /* spin up the thread to detect hotplug of devices */ #if defined(__WIN32__) && !defined(HAVE_LIBC) #undef SDL_CreateThread +#if SDL_DYNAMIC_API + s_threadJoystick= SDL_CreateThread_REAL( SDL_JoystickThread, "SDL_joystick", NULL, NULL, NULL ); +#else s_threadJoystick= SDL_CreateThread( SDL_JoystickThread, "SDL_joystick", NULL, NULL, NULL ); +#endif #else s_threadJoystick = SDL_CreateThread( SDL_JoystickThread, "SDL_joystick", NULL ); #endif diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index 268bb8e837..ce51489205 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -296,8 +296,14 @@ SDL_RunThread(void *data) } } -#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD +#ifdef SDL_CreateThread #undef SDL_CreateThread +#endif +#if SDL_DYNAMIC_API +#define SDL_CreateThread SDL_CreateThread_REAL +#endif + +#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD DECLSPEC SDL_Thread *SDLCALL SDL_CreateThread(int (SDLCALL * fn) (void *), const char *name, void *data, diff --git a/src/timer/SDL_timer.c b/src/timer/SDL_timer.c index fca57ac05e..3996b360e4 100644 --- a/src/timer/SDL_timer.c +++ b/src/timer/SDL_timer.c @@ -224,7 +224,11 @@ SDL_TimerInit(void) /* !!! FIXME: this is nasty. */ #if defined(__WIN32__) && !defined(HAVE_LIBC) #undef SDL_CreateThread +#if SDL_DYNAMIC_API + data->thread = SDL_CreateThread_REAL(SDL_TimerThread, name, data, NULL, NULL); +#else data->thread = SDL_CreateThread(SDL_TimerThread, name, data, NULL, NULL); +#endif #else data->thread = SDL_CreateThread(SDL_TimerThread, name, data); #endif From 8861d279f3393812efd704d8620d400af9371674 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 00:31:19 -0500 Subject: [PATCH 200/402] Patched to compile on OpenBSD. --- src/dynapi/SDL_dynapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c index f04a9048e1..7174518622 100644 --- a/src/dynapi/SDL_dynapi.c +++ b/src/dynapi/SDL_dynapi.c @@ -220,7 +220,7 @@ static SDL_INLINE void *get_sdlapi_entry(const char *fname, const char *sym) } return retval; } -#elif defined(unix) || defined(__APPLE__) +#elif defined(unix) || defined(__unix__) || defined(__APPLE__) #include static SDL_INLINE void *get_sdlapi_entry(const char *fname, const char *sym) { From b3f42eeebb101d9e404609534bc41aba5da826ec Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 00:40:48 -0500 Subject: [PATCH 201/402] Patched to compile on Android (I think). --- src/atomic/SDL_atomic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/atomic/SDL_atomic.c b/src/atomic/SDL_atomic.c index dce2c104f1..8be9a474ed 100644 --- a/src/atomic/SDL_atomic.c +++ b/src/atomic/SDL_atomic.c @@ -204,6 +204,7 @@ SDL_AtomicGetPtr(void **a) } #ifdef __thumb__ +#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) __asm__( " .align 2\n" " .globl _SDL_MemoryBarrierRelease\n" @@ -215,5 +216,6 @@ __asm__( " bx lr\n" ); #endif +#endif /* vi: set ts=4 sw=4 expandtab: */ From 2c81ceb8d8ad613dc7a624d76affa4dfd5114c97 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 00:45:29 -0500 Subject: [PATCH 202/402] Add Dynamic API to Android makefile. --- Android.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/Android.mk b/Android.mk index c8e67da7b3..4f94082042 100755 --- a/Android.mk +++ b/Android.mk @@ -24,6 +24,7 @@ LOCAL_SRC_FILES := \ $(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \ $(wildcard $(LOCAL_PATH)/src/core/android/*.c) \ $(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \ + $(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \ $(wildcard $(LOCAL_PATH)/src/events/*.c) \ $(wildcard $(LOCAL_PATH)/src/file/*.c) \ $(wildcard $(LOCAL_PATH)/src/haptic/*.c) \ From c5493ff116d4d0fc6e0bbab018449719b4206b6f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 00:46:39 -0500 Subject: [PATCH 203/402] Updated Dynamic API jumptable. --- src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + 2 files changed, 2 insertions(+) diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index dfa5509fac..613582d1d6 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -569,3 +569,4 @@ #define SDL_GL_SwapWindow SDL_GL_SwapWindow_REAL #define SDL_GL_DeleteContext SDL_GL_DeleteContext_REAL #define SDL_vsscanf SDL_vsscanf_REAL +#define SDL_GameControllerAddMappingsFromRW SDL_GameControllerAddMappingsFromRW_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index c860f202bf..ba60861388 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -597,3 +597,4 @@ SDL_DYNAPI_PROC(int,SDL_GL_GetSwapInterval,(void),(),return) SDL_DYNAPI_PROC(void,SDL_GL_SwapWindow,(SDL_Window *a),(a),) SDL_DYNAPI_PROC(void,SDL_GL_DeleteContext,(SDL_GLContext a),(a),) SDL_DYNAPI_PROC(int,SDL_vsscanf,(const char *a, const char *b, va_list c),(a,b,c),return) +SDL_DYNAPI_PROC(int,SDL_GameControllerAddMappingsFromRW,(SDL_RWops *a, int b),(a,b),return) From ee5007226d182e27b8c5249b2c0f3fcbc321e12a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 00:51:31 -0500 Subject: [PATCH 204/402] Another Android fix. --- src/dynapi/SDL_dynapi_procs.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index ba60861388..cf34efc953 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -60,7 +60,8 @@ SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromFP,(FILE *a, SDL_bool b),(a,b),return) SDL_DYNAPI_PROC(SDL_RWops*,SDL_RWFromFP,(void *a, SDL_bool b),(a,b),return) #endif -#ifdef __thumb__ /* so annoying. */ +/* so annoying. */ +#if defined(__thumb__) && (defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__)) SDL_DYNAPI_PROC(void,SDL_MemoryBarrierRelease,(void),(),) SDL_DYNAPI_PROC(void,SDL_MemoryBarrierAcquire,(void),(),) #endif From ef220bdb6964a609ac4a0b165efb18cfb4a90028 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 00:58:03 -0500 Subject: [PATCH 205/402] Patched to compile on Cygwin. --- src/dynapi/SDL_dynapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c index 7174518622..144bc84648 100644 --- a/src/dynapi/SDL_dynapi.c +++ b/src/dynapi/SDL_dynapi.c @@ -198,7 +198,7 @@ SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize) /* Obviously we can't use SDL_LoadObject() to load SDL. :) */ /* Also obviously, we never close the loaded library. */ -#if defined(_WINDOWS) +#if defined(_WINDOWS) || defined(__CYGWIN__) #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif From 79ec0341f22bd713e064d277d526ab8455d10542 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 8 Jan 2014 01:07:57 -0500 Subject: [PATCH 206/402] Maybe fix Cygwin. --- src/dynapi/SDL_dynapi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c index 144bc84648..8266185cb7 100644 --- a/src/dynapi/SDL_dynapi.c +++ b/src/dynapi/SDL_dynapi.c @@ -198,7 +198,7 @@ SDL_DYNAPI_entry(Uint32 apiver, void *table, Uint32 tablesize) /* Obviously we can't use SDL_LoadObject() to load SDL. :) */ /* Also obviously, we never close the loaded library. */ -#if defined(_WINDOWS) || defined(__CYGWIN__) +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN 1 #endif From 21f8502e6705190281f5c201ecd7174565f8069d Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Wed, 8 Jan 2014 14:18:11 -0500 Subject: [PATCH 207/402] some fixes to the testshape.c code so it more correctly works. --- test/testshape.c | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/test/testshape.c b/test/testshape.c index c202d8ec6a..bffa540e8c 100644 --- a/test/testshape.c +++ b/test/testshape.c @@ -19,12 +19,11 @@ #define SHAPED_WINDOW_Y 150 #define SHAPED_WINDOW_DIMENSION 640 -#define TICK_INTERVAL 1000/10 - typedef struct LoadedPicture { SDL_Surface *surface; SDL_Texture *texture; SDL_WindowShapeMode mode; + const char* name; } LoadedPicture; void render(SDL_Renderer *renderer,SDL_Texture *texture,SDL_Rect texture_dimensions) @@ -39,17 +38,6 @@ void render(SDL_Renderer *renderer,SDL_Texture *texture,SDL_Rect texture_dimensi SDL_RenderPresent(renderer); } -static Uint32 next_time; - -Uint32 time_left() -{ - Uint32 now = SDL_GetTicks(); - if(next_time <= now) - return 0; - else - return next_time - now; -} - int main(int argc,char** argv) { Uint8 num_pictures; @@ -87,18 +75,19 @@ int main(int argc,char** argv) pictures[i].surface = NULL; for(i=0;iformat; - if(format->Amask != 0) { + if(SDL_ISPIXELFORMAT_ALPHA(format->format)) { pictures[i].mode.mode = ShapeModeBinarizeAlpha; pictures[i].mode.parameters.binarizationCutoff = 255; } @@ -108,7 +97,11 @@ int main(int argc,char** argv) } } - window = SDL_CreateShapedWindow("SDL_Shape test",SHAPED_WINDOW_X,SHAPED_WINDOW_Y,SHAPED_WINDOW_DIMENSION,SHAPED_WINDOW_DIMENSION,SDL_WINDOW_RESIZABLE); + window = SDL_CreateShapedWindow("SDL_Shape test", + SHAPED_WINDOW_X, SHAPED_WINDOW_Y, + SHAPED_WINDOW_DIMENSION,SHAPED_WINDOW_DIMENSION, + 0); + SDL_SetWindowPosition(window, SHAPED_WINDOW_X, SHAPED_WINDOW_Y); if(window == NULL) { for(i=0;i= num_pictures) current_picture = 0; + SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Changing to shaped bmp: %s", pictures[current_picture].name); SDL_QueryTexture(pictures[current_picture].texture,(Uint32 *)&pixelFormat,(int *)&access,&texture_dimensions.w,&texture_dimensions.h); SDL_SetWindowSize(window,texture_dimensions.w,texture_dimensions.h); SDL_SetWindowShape(window,pictures[current_picture].surface,&pictures[current_picture].mode); @@ -183,8 +179,7 @@ int main(int argc,char** argv) event_pending = 0; } render(renderer,pictures[current_picture].texture,texture_dimensions); - SDL_Delay(time_left()); - next_time += TICK_INTERVAL; + SDL_Delay(10); } /* Free the textures. */ From 104ec049d4dc6315d6ae710683f9bfc826c83a2b Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Wed, 8 Jan 2014 14:53:08 -0500 Subject: [PATCH 208/402] define a font-size for the "unicode" message box font so the text isn't unreadable on linux systems --- src/video/x11/SDL_x11messagebox.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/x11/SDL_x11messagebox.c b/src/video/x11/SDL_x11messagebox.c index 1fb936a04a..a3dcc65402 100644 --- a/src/video/x11/SDL_x11messagebox.c +++ b/src/video/x11/SDL_x11messagebox.c @@ -48,7 +48,7 @@ #define MIN_DIALOG_HEIGHT 100 /* Minimum dialog height */ static const char g_MessageBoxFontLatin1[] = "-*-*-medium-r-normal--0-120-*-*-p-0-iso8859-1"; -static const char g_MessageBoxFont[] = "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"; +static const char g_MessageBoxFont[] = "-*-*-*-*-*-*-*-120-*-*-*-*-*-*"; static const SDL_MessageBoxColor g_default_colors[ SDL_MESSAGEBOX_COLOR_MAX ] = { { 56, 54, 53 }, /* SDL_MESSAGEBOX_COLOR_BACKGROUND, */ From a91a2b9e50d1387a09099b6af274161635f811e5 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 9 Jan 2014 13:56:21 -0300 Subject: [PATCH 209/402] Dynamic loading support for Wayland --- configure | 70 ++++++++- configure.in | 50 +++++- include/SDL_config.h.in | 4 + src/video/wayland/SDL_waylanddyn.c | 195 ++++++++++++++++++++++++ src/video/wayland/SDL_waylanddyn.h | 103 +++++++++++++ src/video/wayland/SDL_waylandevents.c | 28 ++-- src/video/wayland/SDL_waylandevents_c.h | 2 +- src/video/wayland/SDL_waylandmouse.c | 33 ++-- src/video/wayland/SDL_waylandmouse.h | 2 +- src/video/wayland/SDL_waylandopengles.c | 13 +- src/video/wayland/SDL_waylandopengles.h | 2 +- src/video/wayland/SDL_waylandsym.h | 102 +++++++++++++ src/video/wayland/SDL_waylandtouch.c | 13 +- src/video/wayland/SDL_waylandtouch.h | 37 ++--- src/video/wayland/SDL_waylandvideo.c | 76 ++++++--- src/video/wayland/SDL_waylandvideo.h | 13 +- src/video/wayland/SDL_waylandwindow.c | 18 +-- src/video/wayland/SDL_waylandwindow.h | 2 +- 18 files changed, 654 insertions(+), 109 deletions(-) create mode 100644 src/video/wayland/SDL_waylanddyn.c create mode 100644 src/video/wayland/SDL_waylanddyn.h create mode 100644 src/video/wayland/SDL_waylandsym.h diff --git a/configure b/configure index a5ce2e388b..6fcddc3c77 100755 --- a/configure +++ b/configure @@ -819,6 +819,7 @@ enable_diskaudio enable_dummyaudio enable_video_wayland enable_video_wayland_qt_touch +enable_wayland_shared enable_video_x11 with_x enable_x11_shared @@ -1538,6 +1539,7 @@ Optional Features: --enable-video-wayland-qt-touch QtWayland server support for Wayland video driver [[default=yes]] + --enable-wayland-shared dynamically load Wayland support [[default=maybe]] --enable-video-x11 use X11 video driver [[default=yes]] --enable-x11-shared dynamically load X11 support [[default=maybe]] --enable-video-x11-xcursor @@ -18705,8 +18707,8 @@ $as_echo_n "checking for Wayland support... " >&6; } video_wayland=no if test x$PKG_CONFIG != xno; then if $PKG_CONFIG --exists wayland-client wayland-egl wayland-cursor egl xkbcommon ; then - WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor egl xkbcommon` - WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor egl xkbcommon` + WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor xkbcommon` + WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor xkbcommon` video_wayland=yes fi fi @@ -18724,7 +18726,69 @@ $as_echo "#define SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH 1" >>confdefs.h fi SOURCES="$SOURCES $srcdir/src/video/wayland/*.c" EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + # Check whether --enable-wayland-shared was given. +if test "${enable_wayland_shared+set}" = set; then : + enableval=$enable_wayland_shared; +else + enable_wayland_shared=maybe +fi + + + case "$host" in + *) + wayland_client_lib=`find_lib "libwayland-client.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + wayland_egl_lib=`find_lib "libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + if test x$wayland_egl_lib = x; then + wayland_egl_lib=`find_lib "mesa-egl/libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + fi + wayland_cursor_lib=`find_lib "libwayland-cursor.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + xkbcommon_lib=`find_lib "libxkbcommon.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + ;; + esac + + if test x$enable_wayland_shared = xmaybe; then + enable_wayland_shared=yes + fi + if test x$have_loadso != xyes && \ + test x$enable_wayland_shared = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic WAYLAND loading" >&5 +$as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic WAYLAND loading" >&2;} + enable_wayland_shared=no + fi + if test x$have_loadso = xyes && \ + test x$enable_wayland_shared = xyes && \ + test x$wayland_client_lib != x && \ + test x$wayland_egl_lib != x && \ + test x$wayland_cursor_lib != x && \ + test x$xkbcommon_lib != x; then + echo "-- dynamic libwayland-client -> $wayland_client_lib" + echo "-- dynamic libwayland-egl -> $wayland_egl_lib" + echo "-- dynamic libwayland-cursor -> $wayland_cursor_lib" + echo "-- dynamic xkbcommon -> $xkbcommon_lib" + +cat >>confdefs.h <<_ACEOF +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC "$wayland_client_lib" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL "$wayland_egl_lib" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR "$wayland_cursor_lib" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON "$xkbcommon_lib" +_ACEOF + + else + enable_wayland_shared=no + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + fi have_video=yes fi fi diff --git a/configure.in b/configure.in index 17f5d187c5..27eadba305 100644 --- a/configure.in +++ b/configure.in @@ -1133,8 +1133,8 @@ AC_HELP_STRING([--enable-video-wayland-qt-touch], [QtWayland server support for video_wayland=no if test x$PKG_CONFIG != xno; then if $PKG_CONFIG --exists wayland-client wayland-egl wayland-cursor egl xkbcommon ; then - WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor egl xkbcommon` - WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor egl xkbcommon` + WAYLAND_CFLAGS=`$PKG_CONFIG --cflags wayland-client wayland-egl wayland-cursor xkbcommon` + WAYLAND_LIBS=`$PKG_CONFIG --libs wayland-client wayland-egl wayland-cursor xkbcommon` video_wayland=yes fi fi @@ -1147,8 +1147,50 @@ AC_HELP_STRING([--enable-video-wayland-qt-touch], [QtWayland server support for fi SOURCES="$SOURCES $srcdir/src/video/wayland/*.c" EXTRA_CFLAGS="$EXTRA_CFLAGS $WAYLAND_CFLAGS" - dnl FIXME do dynamic loading code here. - EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + AC_ARG_ENABLE(wayland-shared, +AC_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [[default=maybe]]]), + , enable_wayland_shared=maybe) + + dnl FIXME: Do BSD and OS X need special cases? + case "$host" in + *) + wayland_client_lib=[`find_lib "libwayland-client.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + wayland_egl_lib=[`find_lib "libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + if test x$wayland_egl_lib = x; then + dnl This works in Ubuntu 13.10, maybe others + wayland_egl_lib=[`find_lib "mesa-egl/libwayland-egl.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + fi + wayland_cursor_lib=[`find_lib "libwayland-cursor.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + xkbcommon_lib=[`find_lib "libxkbcommon.so.*" "$WAYLAND_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + ;; + esac + + if test x$enable_wayland_shared = xmaybe; then + enable_wayland_shared=yes + fi + if test x$have_loadso != xyes && \ + test x$enable_wayland_shared = xyes; then + AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic WAYLAND loading]) + enable_wayland_shared=no + fi + if test x$have_loadso = xyes && \ + test x$enable_wayland_shared = xyes && \ + test x$wayland_client_lib != x && \ + test x$wayland_egl_lib != x && \ + test x$wayland_cursor_lib != x && \ + test x$xkbcommon_lib != x; then + echo "-- dynamic libwayland-client -> $wayland_client_lib" + echo "-- dynamic libwayland-egl -> $wayland_egl_lib" + echo "-- dynamic libwayland-cursor -> $wayland_cursor_lib" + echo "-- dynamic xkbcommon -> $xkbcommon_lib" + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC, "$wayland_client_lib", [ ]) + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, "$wayland_egl_lib", [ ]) + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, "$wayland_cursor_lib", [ ]) + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON, "$xkbcommon_lib", [ ]) + else + enable_wayland_shared=no + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + fi have_video=yes fi fi diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index e96bdfaa15..eb7b4b9696 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -263,6 +263,10 @@ #undef SDL_VIDEO_DRIVER_WINDOWS #undef SDL_VIDEO_DRIVER_WAYLAND #undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON #undef SDL_VIDEO_DRIVER_X11 #undef SDL_VIDEO_DRIVER_RPI #undef SDL_VIDEO_DRIVER_X11_DYNAMIC diff --git a/src/video/wayland/SDL_waylanddyn.c b/src/video/wayland/SDL_waylanddyn.c new file mode 100644 index 0000000000..c2ee8d84e4 --- /dev/null +++ b/src/video/wayland/SDL_waylanddyn.c @@ -0,0 +1,195 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_WAYLAND + +#define DEBUG_DYNAMIC_WAYLAND 0 + +#include "SDL_waylanddyn.h" + +#if DEBUG_DYNAMIC_WAYLAND +#include "SDL_log.h" +#endif + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC + +#include "SDL_name.h" +#include "SDL_loadso.h" + +typedef struct +{ + void *lib; + const char *libname; +} waylanddynlib; + +#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC NULL +#endif +#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL NULL +#endif +#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR NULL +#endif +#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON +#define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON NULL +#endif + +static waylanddynlib waylandlibs[] = { + {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC}, + {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL}, + {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR}, + {NULL, SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON} +}; + +static void * +WAYLAND_GetSym(const char *fnname, int *pHasModule) +{ + int i; + void *fn = NULL; + for (i = 0; i < SDL_TABLESIZE(waylandlibs); i++) { + if (waylandlibs[i].lib != NULL) { + fn = SDL_LoadFunction(waylandlibs[i].lib, fnname); + if (fn != NULL) + break; + } + } + +#if DEBUG_DYNAMIC_WAYLAND + if (fn != NULL) + SDL_Log("WAYLAND: Found '%s' in %s (%p)\n", fnname, waylandlibs[i].libname, fn); + else + SDL_Log("WAYLAND: Symbol '%s' NOT FOUND!\n", fnname); +#endif + + if (fn == NULL) + *pHasModule = 0; /* kill this module. */ + + return fn; +} + +#endif /* SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */ + +/* Define all the function pointers and wrappers... */ +#define SDL_WAYLAND_MODULE(modname) int SDL_WAYLAND_HAVE_##modname = 0; +#define SDL_WAYLAND_SYM(rc,fn,params) SDL_DYNWAYLANDFN_##fn WAYLAND_##fn = NULL; +#define SDL_WAYLAND_INTERFACE(iface) const struct wl_interface *WAYLAND_##iface = NULL; +#include "SDL_waylandsym.h" +#undef SDL_WAYLAND_MODULE +#undef SDL_WAYLAND_SYM +#undef SDL_WAYLAND_INTERFACE + +static int wayland_load_refcount = 0; + +void +SDL_WAYLAND_UnloadSymbols(void) +{ + /* Don't actually unload if more than one module is using the libs... */ + if (wayland_load_refcount > 0) { + if (--wayland_load_refcount == 0) { +#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC + int i; +#endif + + /* set all the function pointers to NULL. */ +#define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 0; +#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = NULL; +#define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = NULL; +#include "SDL_waylandsym.h" +#undef SDL_WAYLAND_MODULE +#undef SDL_WAYLAND_SYM +#undef SDL_WAYLAND_INTERFACE + + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC + for (i = 0; i < SDL_TABLESIZE(waylandlibs); i++) { + if (waylandlibs[i].lib != NULL) { + SDL_UnloadObject(waylandlibs[i].lib); + waylandlibs[i].lib = NULL; + } + } +#endif + } + } +} + +/* returns non-zero if all needed symbols were loaded. */ +int +SDL_WAYLAND_LoadSymbols(void) +{ + int rc = 1; /* always succeed if not using Dynamic WAYLAND stuff. */ + + /* deal with multiple modules (dga, wayland, etc) needing these symbols... */ + if (wayland_load_refcount++ == 0) { +#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC + int i; + int *thismod = NULL; + for (i = 0; i < SDL_TABLESIZE(waylandlibs); i++) { + if (waylandlibs[i].libname != NULL) { + waylandlibs[i].lib = SDL_LoadObject(waylandlibs[i].libname); + } + } + +#define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 1; /* default yes */ +#define SDL_WAYLAND_SYM(rc,fn,params) +#define SDL_WAYLAND_INTERFACE(iface) +#include "SDL_waylandsym.h" +#undef SDL_WAYLAND_MODULE +#undef SDL_WAYLAND_SYM +#undef SDL_WAYLAND_INTERFACE + +#define SDL_WAYLAND_MODULE(modname) thismod = &SDL_WAYLAND_HAVE_##modname; +#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = (SDL_DYNWAYLANDFN_##fn) WAYLAND_GetSym(#fn,thismod); +#define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = (struct wl_interface *) WAYLAND_GetSym(#iface,thismod); +#include "SDL_waylandsym.h" +#undef SDL_WAYLAND_MODULE +#undef SDL_WAYLAND_SYM +#undef SDL_WAYLAND_INTERFACE + + if (SDL_WAYLAND_HAVE_WAYLAND_CLIENT) { + /* all required symbols loaded. */ + SDL_ClearError(); + } else { + /* in case something got loaded... */ + SDL_WAYLAND_UnloadSymbols(); + rc = 0; + } + +#else /* no dynamic WAYLAND */ + +#define SDL_WAYLAND_MODULE(modname) SDL_WAYLAND_HAVE_##modname = 1; /* default yes */ +#define SDL_WAYLAND_SYM(rc,fn,params) WAYLAND_##fn = fn; +#define SDL_WAYLAND_INTERFACE(iface) WAYLAND_##iface = &iface; +#include "SDL_waylandsym.h" +#undef SDL_WAYLAND_MODULE +#undef SDL_WAYLAND_SYM +#undef SDL_WAYLAND_INTERFACE + +#endif + } + + return rc; +} + +#endif /* SDL_VIDEO_DRIVER_WAYLAND */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylanddyn.h b/src/video/wayland/SDL_waylanddyn.h new file mode 100644 index 0000000000..bf1bc924ec --- /dev/null +++ b/src/video/wayland/SDL_waylanddyn.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_waylanddyn_h +#define _SDL_waylanddyn_h + +#include "../../SDL_internal.h" + +/* We can't include wayland-client.h here + * but we need some structs from it + */ +struct wl_interface; +struct wl_proxy; +struct wl_event_queue; +struct wl_display; +struct wl_surface; +struct wl_shm; + +#include +#include "wayland-cursor.h" +#include "wayland-util.h" +#include "xkbcommon/xkbcommon.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +int SDL_WAYLAND_LoadSymbols(void); +void SDL_WAYLAND_UnloadSymbols(void); + +#define SDL_WAYLAND_MODULE(modname) extern int SDL_WAYLAND_HAVE_##modname; +#define SDL_WAYLAND_SYM(rc,fn,params) \ + typedef rc (*SDL_DYNWAYLANDFN_##fn) params; \ + extern SDL_DYNWAYLANDFN_##fn WAYLAND_##fn; +#define SDL_WAYLAND_INTERFACE(iface) extern const struct wl_interface *WAYLAND_##iface; +#include "SDL_waylandsym.h" +#undef SDL_WAYLAND_MODULE +#undef SDL_WAYLAND_SYM +#undef SDL_WAYLAND_INTERFACE + + +#ifdef __cplusplus +} +#endif + +#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC + +#ifdef _WAYLAND_CLIENT_H +#error Do not include wayland-client ahead of SDL_waylanddyn.h in dynamic loading mode +#endif + +/* wayland-client-protocol.h included from wayland-client.h + * has inline functions that require these to be defined in dynamic loading mode + */ + +#define wl_proxy_create (*WAYLAND_wl_proxy_create) +#define wl_proxy_destroy (*WAYLAND_wl_proxy_destroy) +#define wl_proxy_marshal (*WAYLAND_wl_proxy_marshal) +#define wl_proxy_set_user_data (*WAYLAND_wl_proxy_set_user_data) +#define wl_proxy_get_user_data (*WAYLAND_wl_proxy_get_user_data) +#define wl_proxy_add_listener (*WAYLAND_wl_proxy_add_listener) + +#define wl_seat_interface (*WAYLAND_wl_seat_interface) +#define wl_surface_interface (*WAYLAND_wl_surface_interface) +#define wl_shm_pool_interface (*WAYLAND_wl_shm_pool_interface) +#define wl_buffer_interface (*WAYLAND_wl_buffer_interface) +#define wl_registry_interface (*WAYLAND_wl_registry_interface) +#define wl_shell_surface_interface (*WAYLAND_wl_shell_surface_interface) +#define wl_region_interface (*WAYLAND_wl_region_interface) +#define wl_pointer_interface (*WAYLAND_wl_pointer_interface) +#define wl_keyboard_interface (*WAYLAND_wl_keyboard_interface) +#define wl_compositor_interface (*WAYLAND_wl_compositor_interface) +#define wl_output_interface (*WAYLAND_wl_output_interface) +#define wl_shell_interface (*WAYLAND_wl_shell_interface) +#define wl_shm_interface (*WAYLAND_wl_shm_interface) + +#endif /* SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC */ + +#include "wayland-client.h" +#include "wayland-egl.h" + +#endif /* !defined _SDL_waylanddyn_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c index b002a05004..3af798d76e 100644 --- a/src/video/wayland/SDL_waylandevents.c +++ b/src/video/wayland/SDL_waylandevents.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_stdinc.h" #include "SDL_assert.h" @@ -32,6 +32,8 @@ #include "SDL_waylandevents_c.h" #include "SDL_waylandwindow.h" +#include "SDL_waylanddyn.h" + #include #include #include @@ -60,14 +62,14 @@ Wayland_PumpEvents(_THIS) SDL_VideoData *d = _this->driverdata; struct pollfd pfd[1]; - pfd[0].fd = wl_display_get_fd(d->display); + pfd[0].fd = WAYLAND_wl_display_get_fd(d->display); pfd[0].events = POLLIN; poll(pfd, 1, 0); if (pfd[0].revents & POLLIN) - wl_display_dispatch(d->display); + WAYLAND_wl_display_dispatch(d->display); else - wl_display_dispatch_pending(d->display); + WAYLAND_wl_display_dispatch_pending(d->display); } static void @@ -199,7 +201,7 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, return; } - input->xkb.keymap = xkb_map_new_from_string(input->display->xkb_context, + input->xkb.keymap = WAYLAND_xkb_keymap_new_from_string(input->display->xkb_context, map_str, XKB_KEYMAP_FORMAT_TEXT_V1, 0); @@ -211,10 +213,10 @@ keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, return; } - input->xkb.state = xkb_state_new(input->xkb.keymap); + input->xkb.state = WAYLAND_xkb_state_new(input->xkb.keymap); if (!input->xkb.state) { fprintf(stderr, "failed to create XKB state\n"); - xkb_map_unref(input->xkb.keymap); + WAYLAND_xkb_keymap_unref(input->xkb.keymap); input->xkb.keymap = NULL; return; } @@ -266,11 +268,11 @@ keyboard_handle_key(void *data, struct wl_keyboard *keyboard, return; // TODO can this happen? - if (xkb_key_get_syms(input->xkb.state, key + 8, &syms) != 1) + if (WAYLAND_xkb_state_key_get_syms(input->xkb.state, key + 8, &syms) != 1) return; if (state) { - size = xkb_keysym_to_utf8(syms[0], text, sizeof text); + size = WAYLAND_xkb_keysym_to_utf8(syms[0], text, sizeof text); if (size > 0) { text[size] = 0; @@ -287,7 +289,7 @@ keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard, { struct SDL_WaylandInput *input = data; - xkb_state_update_mask(input->xkb.state, mods_depressed, mods_latched, + WAYLAND_xkb_state_update_mask(input->xkb.state, mods_depressed, mods_latched, mods_locked, 0, 0, group); } @@ -349,7 +351,7 @@ Wayland_display_add_input(SDL_VideoData *d, uint32_t id) wl_seat_add_listener(input->seat, &seat_listener, input); wl_seat_set_user_data(input->seat, input); - wayland_schedule_write(d); + WAYLAND_wl_display_flush(d->display); } void Wayland_display_destroy_input(SDL_VideoData *d) @@ -369,10 +371,10 @@ void Wayland_display_destroy_input(SDL_VideoData *d) wl_seat_destroy(input->seat); if (input->xkb.state) - xkb_state_unref(input->xkb.state); + WAYLAND_xkb_state_unref(input->xkb.state); if (input->xkb.keymap) - xkb_map_unref(input->xkb.keymap); + WAYLAND_xkb_keymap_unref(input->xkb.keymap); free(input); d->input = NULL; diff --git a/src/video/wayland/SDL_waylandevents_c.h b/src/video/wayland/SDL_waylandevents_c.h index ed5ff7cc80..cc88cde9de 100644 --- a/src/video/wayland/SDL_waylandevents_c.h +++ b/src/video/wayland/SDL_waylandevents_c.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_waylandevents_h #define _SDL_waylandevents_h diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c index 62c65e94c8..3609db6982 100644 --- a/src/video/wayland/SDL_waylandmouse.c +++ b/src/video/wayland/SDL_waylandmouse.c @@ -31,14 +31,17 @@ #include #include +#include "../../SDL_internal.h" #include "../SDL_sysvideo.h" -#include "SDL_config.h" #include "SDL_mouse.h" #include "../../events/SDL_mouse_c.h" #include "SDL_waylandvideo.h" #include "SDL_waylandevents_c.h" +#include "SDL_waylanddyn.h" +#include "wayland-cursor.h" + #include "SDL_assert.h" #if SDL_VIDEO_DRIVER_WAYLAND @@ -210,7 +213,7 @@ CreateCursorFromWlCursor(SDL_VideoData *d, struct wl_cursor *wlcursor) data->buffer = NULL; data->surface = wl_compositor_create_surface(d->compositor); wl_surface_attach(data->surface, - wl_cursor_image_get_buffer(wlcursor->images[0]), + WAYLAND_wl_cursor_image_get_buffer(wlcursor->images[0]), 0, 0); wl_surface_damage(data->surface, @@ -236,7 +239,7 @@ Wayland_CreateDefaultCursor() SDL_VideoData *data = device->driverdata; return CreateCursorFromWlCursor (data, - wl_cursor_theme_get_cursor(data->cursor_theme, + WAYLAND_wl_cursor_theme_get_cursor(data->cursor_theme, "left_ptr")); } @@ -254,40 +257,40 @@ Wayland_CreateSystemCursor(SDL_SystemCursor id) SDL_assert(0); return NULL; case SDL_SYSTEM_CURSOR_ARROW: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); break; case SDL_SYSTEM_CURSOR_IBEAM: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "xterm"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "xterm"); break; case SDL_SYSTEM_CURSOR_WAIT: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "wait"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "wait"); break; case SDL_SYSTEM_CURSOR_CROSSHAIR: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; case SDL_SYSTEM_CURSOR_WAITARROW: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "wait"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "wait"); break; case SDL_SYSTEM_CURSOR_SIZENWSE: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; case SDL_SYSTEM_CURSOR_SIZENESW: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; case SDL_SYSTEM_CURSOR_SIZEWE: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; case SDL_SYSTEM_CURSOR_SIZENS: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; case SDL_SYSTEM_CURSOR_SIZEALL: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; case SDL_SYSTEM_CURSOR_NO: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "xterm"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "xterm"); break; case SDL_SYSTEM_CURSOR_HAND: - cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); + cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "hand1"); break; } diff --git a/src/video/wayland/SDL_waylandmouse.h b/src/video/wayland/SDL_waylandmouse.h index f434b9d82c..3ccd7f1ce8 100644 --- a/src/video/wayland/SDL_waylandmouse.h +++ b/src/video/wayland/SDL_waylandmouse.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_mouse.h" #include "SDL_waylandvideo.h" diff --git a/src/video/wayland/SDL_waylandopengles.c b/src/video/wayland/SDL_waylandopengles.c index 7a13839816..47f0161c4b 100644 --- a/src/video/wayland/SDL_waylandopengles.c +++ b/src/video/wayland/SDL_waylandopengles.c @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #if SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL @@ -26,6 +26,7 @@ #include "SDL_waylandopengles.h" #include "SDL_waylandwindow.h" #include "SDL_waylandevents_c.h" +#include "SDL_waylanddyn.h" /* EGL implementation of SDL OpenGL ES support */ @@ -37,7 +38,7 @@ Wayland_GLES_LoadLibrary(_THIS, const char *path) { ret = SDL_EGL_LoadLibrary(_this, path, (NativeDisplayType) data->display); Wayland_PumpEvents(_this); - wayland_schedule_write(data); + WAYLAND_wl_display_flush(data->display); return ret; } @@ -48,7 +49,7 @@ Wayland_GLES_CreateContext(_THIS, SDL_Window * window) { SDL_GLContext context; context = SDL_EGL_CreateContext(_this, ((SDL_WindowData *) window->driverdata)->egl_surface); - wayland_schedule_write(_this->driverdata); + WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display ); return context; } @@ -57,7 +58,7 @@ void Wayland_GLES_SwapWindow(_THIS, SDL_Window *window) { SDL_EGL_SwapBuffers(_this, ((SDL_WindowData *) window->driverdata)->egl_surface); - wayland_schedule_write(_this->driverdata); + WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display ); } @@ -73,7 +74,7 @@ Wayland_GLES_MakeCurrent(_THIS, SDL_Window * window, SDL_GLContext context) ret = SDL_EGL_MakeCurrent(_this, NULL, NULL); } - wayland_schedule_write(_this->driverdata); + WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display ); return ret; } @@ -82,7 +83,7 @@ void Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context) { SDL_EGL_DeleteContext(_this, context); - wayland_schedule_write(_this->driverdata); + WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display ); } #endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */ diff --git a/src/video/wayland/SDL_waylandopengles.h b/src/video/wayland/SDL_waylandopengles.h index 2deed0c14b..084a4bdd67 100644 --- a/src/video/wayland/SDL_waylandopengles.h +++ b/src/video/wayland/SDL_waylandopengles.h @@ -18,7 +18,7 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_waylandopengles_h #define _SDL_waylandopengles_h diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h new file mode 100644 index 0000000000..1494d3f48e --- /dev/null +++ b/src/video/wayland/SDL_waylandsym.h @@ -0,0 +1,102 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* *INDENT-OFF* */ + +SDL_WAYLAND_MODULE(WAYLAND_CLIENT) +SDL_WAYLAND_SYM(void, wl_proxy_marshal, (struct wl_proxy *, uint32_t, ...)) +SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_create, (struct wl_proxy *, const struct wl_interface *)) +SDL_WAYLAND_SYM(void, wl_proxy_destroy, (struct wl_proxy *)) +SDL_WAYLAND_SYM(int, wl_proxy_add_listener, (struct wl_proxy *, void (**)(void), void *)) +SDL_WAYLAND_SYM(void, wl_proxy_set_user_data, (struct wl_proxy *, void *)) +SDL_WAYLAND_SYM(void *, wl_proxy_get_user_data, (struct wl_proxy *)) +SDL_WAYLAND_SYM(uint32_t, wl_proxy_get_id, (struct wl_proxy *)) +SDL_WAYLAND_SYM(const char *, wl_proxy_get_class, (struct wl_proxy *)) +SDL_WAYLAND_SYM(void, wl_proxy_set_queue, (struct wl_proxy *, struct wl_event_queue *)) +SDL_WAYLAND_SYM(struct wl_display *, wl_display_connect, (const char *)) +SDL_WAYLAND_SYM(struct wl_display *, wl_display_connect_to_fd, (int)) +SDL_WAYLAND_SYM(void, wl_display_disconnect, (struct wl_display *)) +SDL_WAYLAND_SYM(int, wl_display_get_fd, (struct wl_display *)) +SDL_WAYLAND_SYM(int, wl_display_dispatch, (struct wl_display *)) +SDL_WAYLAND_SYM(int, wl_display_dispatch_queue, (struct wl_display *, struct wl_event_queue *)) +SDL_WAYLAND_SYM(int, wl_display_dispatch_queue_pending, (struct wl_display *, struct wl_event_queue *)) +SDL_WAYLAND_SYM(int, wl_display_dispatch_pending, (struct wl_display *)) +SDL_WAYLAND_SYM(int, wl_display_get_error, (struct wl_display *)) +SDL_WAYLAND_SYM(int, wl_display_flush, (struct wl_display *)) +SDL_WAYLAND_SYM(int, wl_display_roundtrip, (struct wl_display *)) +SDL_WAYLAND_SYM(struct wl_event_queue *, wl_display_create_queue, (struct wl_display *)) +SDL_WAYLAND_SYM(void, wl_log_set_handler_client, (wl_log_func_t)) +SDL_WAYLAND_SYM(void, wl_list_init, (struct wl_list *)) +SDL_WAYLAND_SYM(void, wl_list_insert, (struct wl_list *, struct wl_list *) ) +SDL_WAYLAND_SYM(void, wl_list_remove, (struct wl_list *)) +SDL_WAYLAND_SYM(int, wl_list_length, (const struct wl_list *)) +SDL_WAYLAND_SYM(int, wl_list_empty, (const struct wl_list *)) +SDL_WAYLAND_SYM(void, wl_list_insert_list, (struct wl_list *, struct wl_list *)) + +SDL_WAYLAND_INTERFACE(wl_seat_interface) +SDL_WAYLAND_INTERFACE(wl_surface_interface) +SDL_WAYLAND_INTERFACE(wl_shm_pool_interface) +SDL_WAYLAND_INTERFACE(wl_buffer_interface) +SDL_WAYLAND_INTERFACE(wl_registry_interface) +SDL_WAYLAND_INTERFACE(wl_shell_surface_interface) +SDL_WAYLAND_INTERFACE(wl_region_interface) +SDL_WAYLAND_INTERFACE(wl_pointer_interface) +SDL_WAYLAND_INTERFACE(wl_keyboard_interface) +SDL_WAYLAND_INTERFACE(wl_compositor_interface) +SDL_WAYLAND_INTERFACE(wl_output_interface) +SDL_WAYLAND_INTERFACE(wl_shell_interface) +SDL_WAYLAND_INTERFACE(wl_shm_interface) + +SDL_WAYLAND_MODULE(WAYLAND_EGL) +SDL_WAYLAND_SYM(struct wl_egl_window *, wl_egl_window_create, (struct wl_surface *, int, int)) +SDL_WAYLAND_SYM(void, wl_egl_window_destroy, (struct wl_egl_window *)) +SDL_WAYLAND_SYM(void, wl_egl_window_resize, (struct wl_egl_window *, int, int, int, int)) +SDL_WAYLAND_SYM(void, wl_egl_window_get_attached_size, (struct wl_egl_window *, int *, int *)) + +SDL_WAYLAND_MODULE(WAYLAND_CURSOR) +SDL_WAYLAND_SYM(struct wl_cursor_theme *, wl_cursor_theme_load, (const char *, int , struct wl_shm *)) +SDL_WAYLAND_SYM(void, wl_cursor_theme_destroy, (struct wl_cursor_theme *)) +SDL_WAYLAND_SYM(struct wl_cursor *, wl_cursor_theme_get_cursor, (struct wl_cursor_theme *, const char *)) +SDL_WAYLAND_SYM(struct wl_buffer *, wl_cursor_image_get_buffer, (struct wl_cursor_image *)) +SDL_WAYLAND_SYM(int, wl_cursor_frame, (struct wl_cursor *, uint32_t)) + +SDL_WAYLAND_MODULE(WAYLAND_XKB) +SDL_WAYLAND_SYM(int, xkb_state_key_get_syms, (struct xkb_state *, xkb_keycode_t, const xkb_keysym_t **)) +SDL_WAYLAND_SYM(int, xkb_keysym_to_utf8, (xkb_keysym_t, char *, size_t) ) +SDL_WAYLAND_SYM(struct xkb_keymap *, xkb_keymap_new_from_string, (struct xkb_context *, const char *, enum xkb_keymap_format, enum xkb_keymap_compile_flags)) +SDL_WAYLAND_SYM(struct xkb_state *, xkb_state_new, (struct xkb_keymap *) ) +SDL_WAYLAND_SYM(void, xkb_keymap_unref, (struct xkb_keymap *) ) +SDL_WAYLAND_SYM(void, xkb_state_unref, (struct xkb_state *) ) +SDL_WAYLAND_SYM(void, xkb_context_unref, (struct xkb_context *) ) +SDL_WAYLAND_SYM(struct xkb_context *, xkb_context_new, (enum xkb_context_flags flags) ) +SDL_WAYLAND_SYM(enum xkb_state_component, xkb_state_update_mask, (struct xkb_state *state,\ + xkb_mod_mask_t depressed_mods,\ + xkb_mod_mask_t latched_mods,\ + xkb_mod_mask_t locked_mods,\ + xkb_layout_index_t depressed_layout,\ + xkb_layout_index_t latched_layout,\ + xkb_layout_index_t locked_layout) ) + + +/* *INDENT-ON* */ + +/* vi: set ts=4 sw=4 expandtab: */ +//SDL_WAYLAND_SYM(ret, fn, params) \ No newline at end of file diff --git a/src/video/wayland/SDL_waylandtouch.c b/src/video/wayland/SDL_waylandtouch.c index 9edf2e7ed5..2c55d6d9ff 100644 --- a/src/video/wayland/SDL_waylandtouch.c +++ b/src/video/wayland/SDL_waylandtouch.c @@ -21,7 +21,7 @@ /* Contributed by Thomas Perl */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @@ -118,6 +118,7 @@ touch_handle_configure(void *data, { } + /* wayland-qt-touch-extension.c BEGINS */ static const struct qt_touch_extension_listener touch_listener = { @@ -183,13 +184,23 @@ WL_EXPORT const struct wl_interface qt_windowmanager_interface = { /* wayland-qt-surface-extension.c BEGINS */ extern const struct wl_interface qt_extended_surface_interface; +#ifndef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC extern const struct wl_interface wl_surface_interface; +#endif static const struct wl_interface *qt_surface_extension_types[] = { NULL, NULL, &qt_extended_surface_interface, +#ifdef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC + /* FIXME: Set this dynamically to (*WAYLAND_wl_surface_interface) ? + * The value comes from auto generated code and does + * not appear to actually be used anywhere + */ + NULL, +#else &wl_surface_interface, +#endif }; static const struct wl_message qt_surface_extension_requests[] = { diff --git a/src/video/wayland/SDL_waylandtouch.h b/src/video/wayland/SDL_waylandtouch.h index ccb645bd9f..fe5149922e 100644 --- a/src/video/wayland/SDL_waylandtouch.h +++ b/src/video/wayland/SDL_waylandtouch.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @@ -29,8 +29,9 @@ #include "SDL_waylandvideo.h" #include #include -#include "wayland-client.h" #include "wayland-util.h" +#include "SDL_waylanddyn.h" + void Wayland_touch_create(SDL_VideoData *data, uint32_t id); void Wayland_touch_destroy(SDL_VideoData *data); @@ -89,7 +90,7 @@ qt_surface_extension_get_user_data(struct qt_surface_extension *qt_surface_exten static inline void qt_surface_extension_destroy(struct qt_surface_extension *qt_surface_extension) { - wl_proxy_destroy((struct wl_proxy *) qt_surface_extension); + WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_surface_extension); } static inline struct qt_extended_surface * @@ -102,7 +103,7 @@ qt_surface_extension_get_extended_surface(struct qt_surface_extension *qt_surfac if (!id) return NULL; - wl_proxy_marshal((struct wl_proxy *) qt_surface_extension, + WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_surface_extension, QT_SURFACE_EXTENSION_GET_EXTENDED_SURFACE, id, surface); return (struct qt_extended_surface *) id; @@ -166,39 +167,39 @@ qt_extended_surface_add_listener(struct qt_extended_surface *qt_extended_surface static inline void qt_extended_surface_set_user_data(struct qt_extended_surface *qt_extended_surface, void *user_data) { - wl_proxy_set_user_data((struct wl_proxy *) qt_extended_surface, user_data); + WAYLAND_wl_proxy_set_user_data((struct wl_proxy *) qt_extended_surface, user_data); } static inline void * qt_extended_surface_get_user_data(struct qt_extended_surface *qt_extended_surface) { - return wl_proxy_get_user_data((struct wl_proxy *) qt_extended_surface); + return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *) qt_extended_surface); } static inline void qt_extended_surface_destroy(struct qt_extended_surface *qt_extended_surface) { - wl_proxy_destroy((struct wl_proxy *) qt_extended_surface); + WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_extended_surface); } static inline void qt_extended_surface_update_generic_property(struct qt_extended_surface *qt_extended_surface, const char *name, struct wl_array *value) { - wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, + WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, QT_EXTENDED_SURFACE_UPDATE_GENERIC_PROPERTY, name, value); } static inline void qt_extended_surface_set_content_orientation(struct qt_extended_surface *qt_extended_surface, int32_t orientation) { - wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, + WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, QT_EXTENDED_SURFACE_SET_CONTENT_ORIENTATION, orientation); } static inline void qt_extended_surface_set_window_flags(struct qt_extended_surface *qt_extended_surface, int32_t flags) { - wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, + WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_extended_surface, QT_EXTENDED_SURFACE_SET_WINDOW_FLAGS, flags); } @@ -269,25 +270,25 @@ qt_touch_extension_add_listener(struct qt_touch_extension *qt_touch_extension, static inline void qt_touch_extension_set_user_data(struct qt_touch_extension *qt_touch_extension, void *user_data) { - wl_proxy_set_user_data((struct wl_proxy *) qt_touch_extension, user_data); + WAYLAND_wl_proxy_set_user_data((struct wl_proxy *) qt_touch_extension, user_data); } static inline void * qt_touch_extension_get_user_data(struct qt_touch_extension *qt_touch_extension) { - return wl_proxy_get_user_data((struct wl_proxy *) qt_touch_extension); + return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *) qt_touch_extension); } static inline void qt_touch_extension_destroy(struct qt_touch_extension *qt_touch_extension) { - wl_proxy_destroy((struct wl_proxy *) qt_touch_extension); + WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_touch_extension); } static inline void qt_touch_extension_dummy(struct qt_touch_extension *qt_touch_extension) { - wl_proxy_marshal((struct wl_proxy *) qt_touch_extension, + WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_touch_extension, QT_TOUCH_EXTENSION_DUMMY); } @@ -324,25 +325,25 @@ qt_windowmanager_add_listener(struct qt_windowmanager *qt_windowmanager, static inline void qt_windowmanager_set_user_data(struct qt_windowmanager *qt_windowmanager, void *user_data) { - wl_proxy_set_user_data((struct wl_proxy *) qt_windowmanager, user_data); + WAYLAND_wl_proxy_set_user_data((struct wl_proxy *) qt_windowmanager, user_data); } static inline void * qt_windowmanager_get_user_data(struct qt_windowmanager *qt_windowmanager) { - return wl_proxy_get_user_data((struct wl_proxy *) qt_windowmanager); + return WAYLAND_wl_proxy_get_user_data((struct wl_proxy *) qt_windowmanager); } static inline void qt_windowmanager_destroy(struct qt_windowmanager *qt_windowmanager) { - wl_proxy_destroy((struct wl_proxy *) qt_windowmanager); + WAYLAND_wl_proxy_destroy((struct wl_proxy *) qt_windowmanager); } static inline void qt_windowmanager_open_url(struct qt_windowmanager *qt_windowmanager, uint32_t remaining, const char *url) { - wl_proxy_marshal((struct wl_proxy *) qt_windowmanager, + WAYLAND_wl_proxy_marshal((struct wl_proxy *) qt_windowmanager, QT_WINDOWMANAGER_OPEN_URL, remaining, url); } diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index 5c845ac450..b8db46981f 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -19,10 +19,11 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "SDL_video.h" #include "SDL_mouse.h" +#include "SDL_stdinc.h" #include "../../events/SDL_events_c.h" #include "SDL_waylandvideo.h" @@ -35,6 +36,9 @@ #include #include +#include "SDL_waylanddyn.h" +#include + #define WAYLANDVID_DRIVER_NAME "wayland" struct wayland_mode { @@ -59,10 +63,12 @@ static int Wayland_Available(void) { struct wl_display *display = NULL; - - display = wl_display_connect(NULL); - if (display != NULL) { - wl_display_disconnect(display); + if (SDL_WAYLAND_LoadSymbols()) { + display = WAYLAND_wl_display_connect(NULL); + if (display != NULL) { + WAYLAND_wl_display_disconnect(display); + } + SDL_WAYLAND_UnloadSymbols(); } return (display != NULL); @@ -72,12 +78,17 @@ static void Wayland_DeleteDevice(SDL_VideoDevice *device) { SDL_free(device); + SDL_WAYLAND_UnloadSymbols(); } static SDL_VideoDevice * Wayland_CreateDevice(int devindex) { SDL_VideoDevice *device; + + if (!SDL_WAYLAND_LoadSymbols()) { + return NULL; + } /* Initialize all variables that we clean on shutdown */ device = SDL_calloc(1, sizeof(SDL_VideoDevice)); @@ -133,13 +144,13 @@ wayland_add_mode(SDL_VideoData *d, SDL_DisplayMode m) return; /* Add new mode to the list */ - mode = SDL_calloc(1, sizeof *mode); + mode = (struct wayland_mode *) SDL_calloc(1, sizeof *mode); if (!mode) return; mode->mode = m; - wl_list_insert(&d->modes_list, &mode->link); + WAYLAND_wl_list_insert(&d->modes_list, &mode->link); } static void @@ -227,7 +238,7 @@ display_handle_global(void *data, struct wl_registry *registry, uint32_t id, const char *interface, uint32_t version) { SDL_VideoData *d = data; - + if (strcmp(interface, "wl_compositor") == 0) { d->compositor = wl_registry_bind(d->registry, id, &wl_compositor_interface, 1); } else if (strcmp(interface, "wl_output") == 0) { @@ -239,8 +250,8 @@ display_handle_global(void *data, struct wl_registry *registry, uint32_t id, d->shell = wl_registry_bind(d->registry, id, &wl_shell_interface, 1); } else if (strcmp(interface, "wl_shm") == 0) { d->shm = wl_registry_bind(registry, id, &wl_shm_interface, 1); - d->cursor_theme = wl_cursor_theme_load(NULL, 32, d->shm); - d->default_cursor = wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); + d->cursor_theme = WAYLAND_wl_cursor_theme_load(NULL, 32, d->shm); + d->default_cursor = WAYLAND_wl_cursor_theme_get_cursor(d->cursor_theme, "left_ptr"); wl_shm_add_listener(d->shm, &shm_listener, d); #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @@ -265,7 +276,10 @@ int Wayland_VideoInit(_THIS) { SDL_VideoData *data; - + SDL_VideoDisplay display; + SDL_DisplayMode mode; + int i; + data = malloc(sizeof *data); if (data == NULL) return 0; @@ -273,29 +287,41 @@ Wayland_VideoInit(_THIS) _this->driverdata = data; - wl_list_init(&data->modes_list); + WAYLAND_wl_list_init(&data->modes_list); - data->display = wl_display_connect(NULL); + data->display = WAYLAND_wl_display_connect(NULL); if (data->display == NULL) { SDL_SetError("Failed to connect to a Wayland display"); return 0; } data->registry = wl_display_get_registry(data->display); + + if ( data->registry == NULL) { + SDL_SetError("Failed to get the Wayland registry"); + return 0; + } + wl_registry_add_listener(data->registry, ®istry_listener, data); - while (data->screen_allocation.width == 0) - wl_display_dispatch(data->display); + for (i=0; i < 100; i++) { + if (data->screen_allocation.width != 0 || WAYLAND_wl_display_get_error(data->display) != 0) { + break; + } + WAYLAND_wl_display_dispatch(data->display); + } + + if (data->screen_allocation.width == 0) { + SDL_SetError("Failed while waiting for screen allocation: %d ", WAYLAND_wl_display_get_error(data->display)); + return 0; + } - data->xkb_context = xkb_context_new(0); + data->xkb_context = WAYLAND_xkb_context_new(0); if (!data->xkb_context) { SDL_SetError("Failed to create XKB context"); return 0; } - SDL_VideoDisplay display; - SDL_DisplayMode mode; - /* Use a fake 32-bpp desktop mode */ mode.format = SDL_PIXELFORMAT_RGB888; mode.w = data->screen_allocation.width; @@ -311,7 +337,7 @@ Wayland_VideoInit(_THIS) Wayland_InitMouse (); - wayland_schedule_write(data); + WAYLAND_wl_display_flush(data->display); return 0; } @@ -363,7 +389,7 @@ Wayland_VideoQuit(_THIS) Wayland_display_destroy_input(data); if (data->xkb_context) { - xkb_context_unref(data->xkb_context); + WAYLAND_xkb_context_unref(data->xkb_context); data->xkb_context = NULL; } #ifdef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH @@ -380,7 +406,7 @@ Wayland_VideoQuit(_THIS) wl_shm_destroy(data->shm); if (data->cursor_theme) - wl_cursor_theme_destroy(data->cursor_theme); + WAYLAND_wl_cursor_theme_destroy(data->cursor_theme); if (data->shell) wl_shell_destroy(data->shell); @@ -389,12 +415,12 @@ Wayland_VideoQuit(_THIS) wl_compositor_destroy(data->compositor); if (data->display) { - wl_display_flush(data->display); - wl_display_disconnect(data->display); + WAYLAND_wl_display_flush(data->display); + WAYLAND_wl_display_disconnect(data->display); } wl_list_for_each_safe(m, t, &data->modes_list, link) { - wl_list_remove(&m->link); + WAYLAND_wl_list_remove(&m->link); free(m); } diff --git a/src/video/wayland/SDL_waylandvideo.h b/src/video/wayland/SDL_waylandvideo.h index c44a264188..71f93044d5 100644 --- a/src/video/wayland/SDL_waylandvideo.h +++ b/src/video/wayland/SDL_waylandvideo.h @@ -19,16 +19,13 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_waylandvideo_h #define _SDL_waylandvideo_h -#include -#include -#include - #include +#include "wayland-util.h" struct xkb_context; struct SDL_WaylandInput; @@ -72,12 +69,6 @@ typedef struct { uint32_t shm_formats; } SDL_VideoData; -static inline void -wayland_schedule_write(SDL_VideoData *data) -{ - wl_display_flush(data->display); -} - #endif /* _SDL_nullvideo_h */ /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index f864520cf7..090c494f04 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #include "../SDL_sysvideo.h" #include "../../events/SDL_windowevents_c.h" @@ -104,7 +104,7 @@ void Wayland_ShowWindow(_THIS, SDL_Window *window) else wl_shell_surface_set_toplevel(wind->shell_surface); - wayland_schedule_write(_this->driverdata); + WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display ); } void @@ -120,7 +120,7 @@ Wayland_SetWindowFullscreen(_THIS, SDL_Window * window, else wl_shell_surface_set_toplevel(wind->shell_surface); - wayland_schedule_write(_this->driverdata); + WAYLAND_wl_display_flush( ((SDL_VideoData*)_this->driverdata)->display ); } int Wayland_CreateWindow(_THIS, SDL_Window *window) @@ -162,7 +162,7 @@ int Wayland_CreateWindow(_THIS, SDL_Window *window) c->surface_extension, data->surface); } #endif /* SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH */ - data->egl_window = wl_egl_window_create(data->surface, + data->egl_window = WAYLAND_wl_egl_window_create(data->surface, window->w, window->h); /* Create the GLES window surface */ @@ -192,7 +192,7 @@ int Wayland_CreateWindow(_THIS, SDL_Window *window) wl_surface_set_opaque_region(data->surface, region); wl_region_destroy(region); - wayland_schedule_write(c); + WAYLAND_wl_display_flush(c->display); return 0; } @@ -203,9 +203,9 @@ void Wayland_SetWindowSize(_THIS, SDL_Window * window) SDL_WindowData *wind = window->driverdata; struct wl_region *region; - wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0); + WAYLAND_wl_egl_window_resize(wind->egl_window, window->w, window->h, 0, 0); - region = wl_compositor_create_region(data->compositor); + region =wl_compositor_create_region(data->compositor); wl_region_add(region, 0, 0, window->w, window->h); wl_surface_set_opaque_region(wind->surface, region); wl_region_destroy(region); @@ -220,7 +220,7 @@ void Wayland_DestroyWindow(_THIS, SDL_Window *window) if (data) { SDL_EGL_DestroySurface(_this, wind->egl_surface); - wl_egl_window_destroy(wind->egl_window); + WAYLAND_wl_egl_window_destroy(wind->egl_window); if (wind->shell_surface) wl_shell_surface_destroy(wind->shell_surface); @@ -232,7 +232,7 @@ void Wayland_DestroyWindow(_THIS, SDL_Window *window) wl_surface_destroy(wind->surface); SDL_free(wind); - wayland_schedule_write(data); + WAYLAND_wl_display_flush(data->display); } } diff --git a/src/video/wayland/SDL_waylandwindow.h b/src/video/wayland/SDL_waylandwindow.h index f65dc8fefb..789c43d39a 100644 --- a/src/video/wayland/SDL_waylandwindow.h +++ b/src/video/wayland/SDL_waylandwindow.h @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -#include "SDL_config.h" +#include "../../SDL_internal.h" #ifndef _SDL_waylandwindow_h #define _SDL_waylandwindow_h From d35d32f6fe2c480e264c7003cfcd728dc28b483e Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 14 Jan 2014 21:29:38 -0300 Subject: [PATCH 210/402] Make EGL loading more resilient. Lesson learned while trying to run L4D2 under Wayland :) --- src/video/SDL_egl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 3731a6c19d..36fcac6ebc 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -181,8 +181,8 @@ SDL_EGL_LoadLibrary(_THIS, const char *egl_path, NativeDisplayType native_displa if (egl_path != NULL) { dll_handle = SDL_LoadObject(egl_path); } - /* Catch the case where the application isn't linked with EGL */ - if ((SDL_LoadFunction(dll_handle, "eglChooseConfig") == NULL) && (egl_path == NULL)) { + /* Try loading a EGL symbol, if it does not work try the default library paths */ + if (SDL_LoadFunction(dll_handle, "eglChooseConfig") == NULL) { if (dll_handle != NULL) { SDL_UnloadObject(dll_handle); } From bac6aa1187631842a6a9b43a1045294d179328ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Tue, 14 Jan 2014 17:33:24 -0800 Subject: [PATCH 211/402] Mac: Trigger SDL_FINGERUP for all touches. Fixes bug #2348. Thanks to Alex Szpakowski for the patch! --- src/video/cocoa/SDL_cocoawindow.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index f025b7c256..0ed653159f 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -699,9 +699,11 @@ - (void)handleTouches:(cocoaTouchType)type withEvent:(NSEvent *)event touches = [event touchesMatchingPhase:NSTouchPhaseBegan inView:nil]; break; case COCOA_TOUCH_UP: - case COCOA_TOUCH_CANCELLED: touches = [event touchesMatchingPhase:NSTouchPhaseEnded inView:nil]; break; + case COCOA_TOUCH_CANCELLED: + touches = [event touchesMatchingPhase:NSTouchPhaseCancelled inView:nil]; + break; case COCOA_TOUCH_MOVE: touches = [event touchesMatchingPhase:NSTouchPhaseMoved inView:nil]; break; From 11bdda971d3f598331d93618ed80df81a856ed51 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 15 Jan 2014 12:29:17 -0300 Subject: [PATCH 212/402] Adds README-dynapi.txt based on Ryan's G+ post (lightly edited) Original post: https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U --- README-dynapi.txt | 130 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 README-dynapi.txt diff --git a/README-dynapi.txt b/README-dynapi.txt new file mode 100644 index 0000000000..da52f3a328 --- /dev/null +++ b/README-dynapi.txt @@ -0,0 +1,130 @@ +================================================================================ +Dynamic API +================================================================================ +Originally posted by Ryan at https://plus.google.com/103391075724026391227/posts/TB8UfnDYu4U + +Background: + +- The Steam Runtime has (at least in theory) a really kick-ass build of SDL2, + but developers are shipping their own SDL2 with individual Steam games. + These games might stop getting updates, but a newer SDL2 might be needed later. + Certainly we'll always be fixing bugs in SDL, even if a new video target isn't + ever needed, and these fixes won't make it to a game shipping its own SDL. +- Even if we replace the SDL2 in those games with a compatible one, that is to + say, edit a developer's Steam depot (yuck!), there are developers that are + statically linking SDL2 that we can't do this for. We can't even force the + dynamic loader to ignore their SDL2 in this case, of course. +- If you don't ship an SDL2 with the game in some form, people that disabled the + Steam Runtime, or just tried to run the game from the command line instead of + Steam might find themselves unable to run the game, due to a missing dependency. +- If you want to ship on non-Steam platforms like GOG or Humble Bundle, or target + generic Linux boxes that may or may not have SDL2 installed, you have to ship + the library or risk a total failure to launch. So now, you might have to have + a non-Steam build plus a Steam build (that is, one with and one without SDL2 + included), which is inconvenient if you could have had one universal build + that works everywhere. +- We like the zlib license, but the biggest complaint from the open source + community about the license change is the static linking. The LGPL forced this + as a legal, not technical issue, but zlib doesn't care. Even those that aren't + concerned about the GNU freedoms found themselves solving the same problems: + swapping in a newer SDL to an older game often times can save the day. + Static linking stops this dead. + +So here's what we did: + +SDL now has, internally, a table of function pointers. So, this is what SDL_Init +now looks like: + + UInt32 SDL_Init(Uint32 flags) + { + return jump_table.SDL_Init(flags); + } + +Except that is all done with a bunch of macro magic so we don't have to maintain +every one of these. + +What is jump_table.SDL_init()? Eventually, that's a function pointer of the real +SDL_Init() that you've been calling all this time. But at startup, it looks more +like this: + + Uint32 SDL_Init_DEFAULT(Uint32 flags) + { + SDL_InitDynamicAPI(); + return jump_table.SDL_Init(flags); + } + +SDL_InitDynamicAPI() fills in jump_table with all the actual SDL function +pointers, which means that this _DEFAULT function never gets called again. +First call to any SDL function sets the whole thing up. + +So you might be asking, what was the value in that? Isn't this what the operating +system's dynamic loader was supposed to do for us? Yes, but now we've got this +level of indirection, we can do things like this: + + export SDL_DYNAMIC_API=/my/actual/libSDL-2.0.so.0 + ./MyGameThatIsStaticallyLinkedToSDL2 + +And now, this game that is staticallly linked to SDL, can still be overridden +with a newer, or better, SDL. The statically linked one will only be used as +far as calling into the jump table in this case. But in cases where no override +is desired, the statically linked version will provide its own jump table, +and everyone is happy. + +So now: +- Developers can statically link SDL, and users can still replace it. + (We'd still rather you ship a shared library, though!) +- Developers can ship an SDL with their game, Valve can override it for, say, + new features on SteamOS, or distros can override it for their own needs, + but it'll also just work in the default case. +- Developers can ship the same package to everyone (Humble Bundle, GOG, etc), + and it'll do the right thing. +- End users (and Valve) can update a game's SDL in almost any case, + to keep abandoned games running on newer platforms. +- Everyone develops with SDL exactly as they have been doing all along. + Same headers, same ABI. Just get the latest version to enable this magic. + + +A little more about SDL_InitDynamicAPI(): + +Internally, InitAPI does some locking to make sure everything waits until a +single thread initializes everything (although even SDL_CreateThread() goes +through here before spinning a thread, too), and then decides if it should use +an external SDL library. If not, it sets up the jump table using the current +SDL's function pointers (which might be statically linked into a program, or in +a shared library of its own). If so, it loads that library and looks for and +calls a single function: + + SInt32 SDL_DYNAPI_entry(Uint32 version, void *table, Uint32 tablesize); + +That function takes a version number (more on that in a moment), the address of +the jump table, and the size, in bytes, of the table. +Now, we've got policy here: this table's layout never changes; new stuff gets +added to the end. Therefore SDL_DYNAPI_entry() knows that it can provide all +the needed functions if tablesize <= sizeof its own jump table. If tablesize is +bigger (say, SDL 2.0.4 is trying to load SDL 2.0.3), then we know to abort, but +if it's smaller, we know we can provide the entire API that the caller needs. + +The version variable is a failsafe switch. +Right now it's always 1. This number changes when there are major API changes +(so we know if the tablesize might be smaller, or entries in it have changed). +Right now SDL_DYNAPI_entry gives up if the version doesn't match, but it's not +inconceivable to have a small dispatch library that only supplies this one +function and loads different, otherwise-incompatible SDL libraries and has the +right one initialize the jump table based on the version. For something that +must generically catch lots of different versions of SDL over time, like the +Steam Client, this isn't a bad option. + +Finally, I'm sure some people are reading this and thinking +"I don't want that overhead in my project!" +To which I would point out that the extra function call through the jump table +probably wouldn't even show up in a profile, but lucky you: this can all be +disabled. You can build SDL without this if you absolutely must, but we would +encourage you not to do that. However, on heavily locked down platforms like +iOS, or maybe when debugging, it makes sense to disable it. The way this is +designed in SDL, you just have to change one #define, and the entire system +vaporizes out, and SDL functions exactly like it always did. Most of it is +macro magic, so the system is contained to one C file and a few headers. +However, this is on by default and you have to edit a header file to turn it +off. Our hopes is that if we make it easy to disable, but not too easy, +everyone will ultimately be able to get what they want, but we've gently +nudged everyone towards what we think is the best solution. From a55a760fb207cb4a61018e2694dd30a48baac658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 15 Jan 2014 10:40:14 -0800 Subject: [PATCH 213/402] Tests: Refactor key modifier checking. --- src/test/SDL_test_common.c | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 72b73e3f66..690a076296 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1293,7 +1293,11 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) break; } break; - case SDL_KEYDOWN: + case SDL_KEYDOWN: { + SDL_bool withControl = !!(event->key.keysym.mod & KMOD_CTRL); + SDL_bool withShift = !!(event->key.keysym.mod & KMOD_SHIFT); + SDL_bool withAlt = !!(event->key.keysym.mod & KMOD_ALT); + switch (event->key.keysym.sym) { /* Add hotkeys here */ case SDLK_PRINTSCREEN: { @@ -1308,7 +1312,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_EQUALS: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-+ double the size of the window */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1319,7 +1323,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_MINUS: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-- half the size of the window */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1330,12 +1334,12 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_c: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-C copy awesome text! */ SDL_SetClipboardText("SDL rocks!\nYou know it!"); printf("Copied text to clipboard\n"); } - if (event->key.keysym.mod & KMOD_ALT) { + if (withAlt) { /* Alt-C toggle a render clip rectangle */ for (i = 0; i < state->num_windows; ++i) { int w, h; @@ -1357,7 +1361,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_v: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-V paste awesome text! */ char *text = SDL_GetClipboardText(); if (*text) { @@ -1369,7 +1373,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_g: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-G toggle grab */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1378,7 +1382,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_m: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-M maximize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1392,13 +1396,13 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_r: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-R toggle mouse relative mode */ SDL_SetRelativeMouseMode(!SDL_GetRelativeMouseMode() ? SDL_TRUE : SDL_FALSE); } break; case SDLK_z: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-Z minimize */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1407,7 +1411,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_RETURN: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-Enter toggle fullscreen */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1418,7 +1422,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN); } } - } else if (event->key.keysym.mod & KMOD_ALT) { + } else if (withAlt) { /* Alt-Enter toggle fullscreen desktop */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1432,7 +1436,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_b: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { /* Ctrl-B toggle window border */ SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); if (window) { @@ -1443,18 +1447,18 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) } break; case SDLK_0: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_INFORMATION, "Test Message", "You're awesome!", window); } break; case SDLK_1: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { FullscreenTo(0, event->key.windowID); } break; case SDLK_2: - if (event->key.keysym.mod & KMOD_CTRL) { + if (withControl) { FullscreenTo(1, event->key.windowID); } break; @@ -1474,6 +1478,7 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) break; } break; + } case SDL_QUIT: *done = 1; break; From bf853e2198361a7a62a9d0be1c02ee5541f3e700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 15 Jan 2014 11:08:55 -0800 Subject: [PATCH 214/402] Test: Add Shift-Enter to switch between FS and desktop FS. --- src/test/SDL_test_common.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 690a076296..38b093a433 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1433,7 +1433,19 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP); } } + } else if (withShift) { + /* Shift-Enter toggle fullscreen desktop / fullscreen */ + SDL_Window *window = SDL_GetWindowFromID(event->key.windowID); + if (window) { + Uint32 flags = SDL_GetWindowFlags(window); + if ((flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN); + } else { + SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP); + } + } } + break; case SDLK_b: if (withControl) { From cce16dfb702c9fea46bcf451db451de219866adc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 15 Jan 2014 11:17:09 -0800 Subject: [PATCH 215/402] Allow switching between FS and desktop FS. This should fix bug #2057 (https://bugzilla.libsdl.org/show_bug.cgi?id=2057) --- src/video/SDL_sysvideo.h | 1 + src/video/SDL_video.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 94ff9b3234..c70beefa7b 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -79,6 +79,7 @@ struct SDL_Window int min_w, min_h; int max_w, max_h; Uint32 flags; + Uint32 last_fullscreen_flags; /* Stored position and size for windowed mode */ SDL_Rect windowed; diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 658ac8e14a..a4a8c6ef3a 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -115,6 +115,7 @@ static SDL_VideoDevice *_this = NULL; return retval; \ } +#define FULLSCREEN_MASK ( SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_FULLSCREEN ) #ifdef __MACOSX__ /* Support for Mac OS X fullscreen spaces */ @@ -1096,6 +1097,7 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) #ifdef __MACOSX__ if (Cocoa_SetWindowFullscreenSpace(window, fullscreen)) { + window->last_fullscreen_flags = window->flags; return; } #endif @@ -1112,7 +1114,9 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) /* See if anything needs to be done now */ if ((display->fullscreen_window == window) == fullscreen) { - return; + if ((window->last_fullscreen_flags & FULLSCREEN_MASK) == (window->flags & FULLSCREEN_MASK)) { + return; + } } /* See if there are any fullscreen windows */ @@ -1157,6 +1161,8 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) } SDL_RestoreMousePosition(other); + + window->last_fullscreen_flags = window->flags; return; } } @@ -1175,6 +1181,8 @@ SDL_UpdateFullscreenMode(SDL_Window * window, SDL_bool fullscreen) /* Restore the cursor position */ SDL_RestoreMousePosition(window); + + window->last_fullscreen_flags = window->flags; } #define CREATE_FLAGS \ @@ -1277,6 +1285,7 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) } } window->flags = ((flags & CREATE_FLAGS) | SDL_WINDOW_HIDDEN); + window->last_fullscreen_flags = window->flags; window->brightness = 1.0f; window->next = _this->windows; @@ -1318,6 +1327,7 @@ SDL_CreateWindowFrom(const void *data) window->magic = &_this->window_magic; window->id = _this->next_object_id++; window->flags = SDL_WINDOW_FOREIGN; + window->last_fullscreen_flags = window->flags; window->brightness = 1.0f; window->next = _this->windows; if (_this->windows) { @@ -1378,6 +1388,7 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags) window->title = NULL; window->icon = NULL; window->flags = ((flags & CREATE_FLAGS) | SDL_WINDOW_HIDDEN); + window->last_fullscreen_flags = window->flags; if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) { if (_this->CreateWindow(_this, window) < 0) { @@ -1857,7 +1868,6 @@ SDL_RestoreWindow(SDL_Window * window) } } -#define FULLSCREEN_MASK ( SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_FULLSCREEN ) int SDL_SetWindowFullscreen(SDL_Window * window, Uint32 flags) { From 234635421e6fa80b9e62644637bebcac94ff7dd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 15 Jan 2014 11:31:56 -0800 Subject: [PATCH 216/402] Mac: Don't give windows focus back when we're closing them. Fixes bug #1840 (https://bugzilla.libsdl.org/show_bug.cgi?id=1840) --- src/video/cocoa/SDL_cocoawindow.m | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 0ed653159f..f7a03915bf 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -299,9 +299,14 @@ - (void)close !!! FIXME: http://bugzilla.libsdl.org/show_bug.cgi?id=1825 */ windows = [NSApp orderedWindows]; - if ([windows count] > 0) { - NSWindow *win = (NSWindow *) [windows objectAtIndex:0]; + for (NSWindow *win in windows) + { + if (win == window) { + continue; + } + [win makeKeyAndOrderFront:self]; + break; } } From e9265b06109482986e989937666205b6f1d14000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 15 Jan 2014 11:34:03 -0800 Subject: [PATCH 217/402] Don't minimize fullscreen windows when destroying them. Previously, we'd minimize fullscreen windows (if SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS was set) during SDL_DestroyWindow if they had keyboard focus, because we call SDL_SetKeyboardFocus(NULL) which yields a OnWindowsFocusLost event. Related to https://bugzilla.libsdl.org/show_bug.cgi?id=1840 --- src/video/SDL_sysvideo.h | 2 ++ src/video/SDL_video.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index c70beefa7b..aabdffe94a 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -93,6 +93,8 @@ struct SDL_Window SDL_Surface *surface; SDL_bool surface_valid; + SDL_bool is_destroying; + SDL_WindowShaper *shaper; SDL_WindowUserData *data; diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index a4a8c6ef3a..26e2344596 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1288,6 +1288,7 @@ SDL_CreateWindow(const char *title, int x, int y, int w, int h, Uint32 flags) window->last_fullscreen_flags = window->flags; window->brightness = 1.0f; window->next = _this->windows; + window->is_destroying = SDL_FALSE; if (_this->windows) { _this->windows->prev = window; @@ -1328,6 +1329,7 @@ SDL_CreateWindowFrom(const void *data) window->id = _this->next_object_id++; window->flags = SDL_WINDOW_FOREIGN; window->last_fullscreen_flags = window->flags; + window->is_destroying = SDL_FALSE; window->brightness = 1.0f; window->next = _this->windows; if (_this->windows) { @@ -1389,6 +1391,7 @@ SDL_RecreateWindow(SDL_Window * window, Uint32 flags) window->icon = NULL; window->flags = ((flags & CREATE_FLAGS) | SDL_WINDOW_HIDDEN); window->last_fullscreen_flags = window->flags; + window->is_destroying = SDL_FALSE; if (_this->CreateWindow && !(flags & SDL_WINDOW_FOREIGN)) { if (_this->CreateWindow(_this, window) < 0) { @@ -2169,7 +2172,7 @@ ShouldMinimizeOnFocusLoss(SDL_Window * window) { const char *hint; - if (!(window->flags & SDL_WINDOW_FULLSCREEN)) { + if (!(window->flags & SDL_WINDOW_FULLSCREEN) || window->is_destroying) { return SDL_FALSE; } @@ -2228,6 +2231,8 @@ SDL_DestroyWindow(SDL_Window * window) CHECK_WINDOW_MAGIC(window, ); + window->is_destroying = SDL_TRUE; + /* Restore video mode, etc. */ SDL_HideWindow(window); From 30113c0d3432246f296bebb5ce425ab96913826b Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 16 Jan 2014 11:33:39 -0300 Subject: [PATCH 218/402] Fix to compile against the Wayland v1.4 headers --- src/video/wayland/SDL_waylanddyn.h | 1 + src/video/wayland/SDL_waylandsym.h | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/video/wayland/SDL_waylanddyn.h b/src/video/wayland/SDL_waylanddyn.h index bf1bc924ec..a1ff557164 100644 --- a/src/video/wayland/SDL_waylanddyn.h +++ b/src/video/wayland/SDL_waylanddyn.h @@ -78,6 +78,7 @@ void SDL_WAYLAND_UnloadSymbols(void); #define wl_proxy_set_user_data (*WAYLAND_wl_proxy_set_user_data) #define wl_proxy_get_user_data (*WAYLAND_wl_proxy_get_user_data) #define wl_proxy_add_listener (*WAYLAND_wl_proxy_add_listener) +#define wl_proxy_marshal_constructor (*WAYLAND_wl_proxy_marshal_constructor) #define wl_seat_interface (*WAYLAND_wl_seat_interface) #define wl_surface_interface (*WAYLAND_wl_surface_interface) diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h index 1494d3f48e..6d65a44bea 100644 --- a/src/video/wayland/SDL_waylandsym.h +++ b/src/video/wayland/SDL_waylandsym.h @@ -51,6 +51,10 @@ SDL_WAYLAND_SYM(int, wl_list_length, (const struct wl_list *)) SDL_WAYLAND_SYM(int, wl_list_empty, (const struct wl_list *)) SDL_WAYLAND_SYM(void, wl_list_insert_list, (struct wl_list *, struct wl_list *)) +/* These functions are available in Wayland >= 1.4 */ +SDL_WAYLAND_MODULE(WAYLAND_CLIENT_1_4) +SDL_WAYLAND_SYM(void, wl_proxy_marshal_constructor, (uint32_t opcode, const struct wl_interface *interface, ...)) + SDL_WAYLAND_INTERFACE(wl_seat_interface) SDL_WAYLAND_INTERFACE(wl_surface_interface) SDL_WAYLAND_INTERFACE(wl_shm_pool_interface) From de3a65be04673ee66d4cdb42c62b041c25071f06 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 16 Jan 2014 15:02:41 -0300 Subject: [PATCH 219/402] Fixes prototype declaration for wl_proxy_marshal_constructor [Wayland 1.4] --- src/video/wayland/SDL_waylandsym.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h index 6d65a44bea..c810fab487 100644 --- a/src/video/wayland/SDL_waylandsym.h +++ b/src/video/wayland/SDL_waylandsym.h @@ -53,7 +53,7 @@ SDL_WAYLAND_SYM(void, wl_list_insert_list, (struct wl_list *, struct wl_list *)) /* These functions are available in Wayland >= 1.4 */ SDL_WAYLAND_MODULE(WAYLAND_CLIENT_1_4) -SDL_WAYLAND_SYM(void, wl_proxy_marshal_constructor, (uint32_t opcode, const struct wl_interface *interface, ...)) +SDL_WAYLAND_SYM(struct wl_proxy *, wl_proxy_marshal_constructor, (struct wl_proxy *, uint32_t opcode, const struct wl_interface *interface, ...)) SDL_WAYLAND_INTERFACE(wl_seat_interface) SDL_WAYLAND_INTERFACE(wl_surface_interface) From 8391847129cb4a985ff9664fb29836c0ef9374fe Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 18 Jan 2014 11:47:03 -0800 Subject: [PATCH 220/402] Make sure you clean up the associated renderer when destroying a window. --- src/test/SDL_test_common.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index 38b093a433..f07a0c0cbf 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1281,9 +1281,17 @@ SDLTest_CommonEvent(SDLTest_CommonState * state, SDL_Event * event, int *done) { SDL_Window *window = SDL_GetWindowFromID(event->window.windowID); if (window) { - SDL_DestroyWindow(window); for (i = 0; i < state->num_windows; ++i) { if (window == state->windows[i]) { + if (state->targets[i]) { + SDL_DestroyTexture(state->targets[i]); + state->targets[i] = NULL; + } + if (state->renderers[i]) { + SDL_DestroyRenderer(state->renderers[i]); + state->renderers[i] = NULL; + } + SDL_DestroyWindow(state->windows[i]); state->windows[i] = NULL; break; } From 1024d2849cd92ba7abbfa369852be8b92a03f28d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 20 Jan 2014 12:53:44 -0500 Subject: [PATCH 221/402] Patched to compile if Wayland is disabled via SDL_config.h (thanks, Martin!). Fixes Bugzilla #2351. --- src/video/wayland/SDL_waylandevents.c | 4 ++++ src/video/wayland/SDL_waylandmouse.c | 8 +++++--- src/video/wayland/SDL_waylandvideo.c | 4 ++++ src/video/wayland/SDL_waylandwindow.c | 4 ++++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c index 3af798d76e..6178574214 100644 --- a/src/video/wayland/SDL_waylandevents.c +++ b/src/video/wayland/SDL_waylandevents.c @@ -21,6 +21,8 @@ #include "../../SDL_internal.h" +#if SDL_VIDEO_DRIVER_WAYLAND + #include "SDL_stdinc.h" #include "SDL_assert.h" @@ -380,4 +382,6 @@ void Wayland_display_destroy_input(SDL_VideoData *d) d->input = NULL; } +#endif /* SDL_VIDEO_DRIVER_WAYLAND */ + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c index 3609db6982..ae634b62e2 100644 --- a/src/video/wayland/SDL_waylandmouse.c +++ b/src/video/wayland/SDL_waylandmouse.c @@ -19,6 +19,10 @@ 3. This notice may not be removed or altered from any source distribution. */ +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_WAYLAND + #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif @@ -31,7 +35,6 @@ #include #include -#include "../../SDL_internal.h" #include "../SDL_sysvideo.h" #include "SDL_mouse.h" @@ -44,7 +47,6 @@ #include "SDL_assert.h" -#if SDL_VIDEO_DRIVER_WAYLAND typedef struct { struct wl_buffer *buffer; @@ -407,4 +409,4 @@ Wayland_FiniMouse(void) mouse->WarpMouse = NULL; mouse->SetRelativeMouseMode = NULL; } -#endif +#endif /* SDL_VIDEO_DRIVER_WAYLAND */ diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index b8db46981f..0d4ff19614 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -21,6 +21,8 @@ #include "../../SDL_internal.h" +#if SDL_VIDEO_DRIVER_WAYLAND + #include "SDL_video.h" #include "SDL_mouse.h" #include "SDL_stdinc.h" @@ -429,4 +431,6 @@ Wayland_VideoQuit(_THIS) _this->driverdata = NULL; } +#endif /* SDL_VIDEO_DRIVER_WAYLAND */ + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index 090c494f04..3b3fc1a6d1 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -21,6 +21,8 @@ #include "../../SDL_internal.h" +#if SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL + #include "../SDL_sysvideo.h" #include "../../events/SDL_windowevents_c.h" #include "../SDL_egl_c.h" @@ -236,4 +238,6 @@ void Wayland_DestroyWindow(_THIS, SDL_Window *window) } } +#endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */ + /* vi: set ts=4 sw=4 expandtab: */ From b87ddf5713bd3d87211ef698d24eeb4b45d344c8 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 20 Jan 2014 20:25:43 -0300 Subject: [PATCH 222/402] Move Wayland driver above dummy, check for driver availability before creation --- src/video/SDL_video.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 26e2344596..157cfa9e71 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -83,11 +83,11 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_RPI &RPI_bootstrap, #endif -#if SDL_VIDEO_DRIVER_DUMMY - &DUMMY_bootstrap, -#endif #if SDL_VIDEO_DRIVER_WAYLAND &Wayland_bootstrap, +#endif +#if SDL_VIDEO_DRIVER_DUMMY + &DUMMY_bootstrap, #endif NULL }; @@ -447,8 +447,10 @@ SDL_VideoInit(const char *driver_name) if (driver_name != NULL) { for (i = 0; bootstrap[i]; ++i) { if (SDL_strncasecmp(bootstrap[i]->name, driver_name, SDL_strlen(driver_name)) == 0) { - video = bootstrap[i]->create(index); - break; + if (bootstrap[i]->available()) { + video = bootstrap[i]->create(index); + break; + } } } } else { From b4038b995b94fdffc6eac34b39a654c8d5ae33b8 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 21 Jan 2014 13:58:15 -0500 Subject: [PATCH 223/402] Fixed dynamic loading of NAS in CMake project. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3871d96cd7..279f503fee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -213,6 +213,7 @@ dep_option(PULSEAUDIO_SHARED "Dynamically load PulseAudio support" ON "PULSEAU set_option(ARTS "Support the Analog Real Time Synthesizer" ${UNIX_SYS}) dep_option(ARTS_SHARED "Dynamically load aRts audio support" ON "ARTS" OFF) set_option(NAS "Support the NAS audio API" ${UNIX_SYS}) +set_option(NAS_SHARED "Dynamically load NAS audio API" ${UNIX_SYS}) set_option(SNDIO "Support the sndio audio API" ${UNIX_SYS}) set_option(RPATH "Use an rpath when linking SDL" ${UNIX_SYS}) set_option(CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" OFF) From be5a9261a64908b70a2efceea0f02b8de6eaa70d Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 21 Jan 2014 18:20:12 -0300 Subject: [PATCH 224/402] Fixes 2356, [Android] SDL_JoystickGetAttached does not function Also fix a potential NULL pointer access in android/SDL_SYS_JoystickGetGUID --- src/joystick/android/SDL_sysjoystick.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 0772eaed25..229a48dca0 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -284,6 +284,10 @@ Android_RemoveJoystick(int device_id) } const int retval = item->device_instance; + if (item->joystick) { + item->joystick->hwdata = NULL; + } + if (prev != NULL) { prev->next = item->next; } else { @@ -507,7 +511,14 @@ SDL_JoystickGUID SDL_SYS_JoystickGetDeviceGUID( int device_index ) SDL_JoystickGUID SDL_SYS_JoystickGetGUID(SDL_Joystick * joystick) { - return ((SDL_joylist_item*)joystick->hwdata)->guid; + SDL_JoystickGUID guid; + + if (joystick->hwdata != NULL) { + return ((SDL_joylist_item*)joystick->hwdata)->guid; + } + + SDL_zero(guid); + return guid; } #endif /* SDL_JOYSTICK_ANDROID */ From 88f5e85db94a7ef7496468ffbb424ff0c60c0ae7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 21 Jan 2014 16:28:53 -0500 Subject: [PATCH 225/402] Fixed XF86 VidMode extension dynamic loading with CMake project. --- cmake/sdlchecks.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index c2286b87ab..0dc549eae2 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -491,11 +491,11 @@ macro(CheckX11) endif(VIDEO_X11_XSHAPE AND HAVE_XSHAPE_H) if(VIDEO_X11_XVM AND HAVE_XF86VM_H) - if(HAVE_X11_SHARED AND XF86VMODE_LIB) - set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XF86VMODE_LIB_SONAME}\"") - else(HAVE_X11_SHARED AND XF86VMODE_LIB) - list(APPEND EXTRA_LIBS ${XF86VMODE_LIB}) - endif(HAVE_X11_SHARED AND XF86VMODE_LIB) + if(HAVE_X11_SHARED AND XXF86VM_LIB) + set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XXF86VM_LIB_SONAME}\"") + else(HAVE_X11_SHARED AND XXF86VM_LIB) + list(APPEND EXTRA_LIBS ${XXF86VM_LIB}) + endif(HAVE_X11_SHARED AND XXF86VM_LIB) set(SDL_VIDEO_DRIVER_X11_XVIDMODE 1) set(HAVE_VIDEO_X11_XVM TRUE) endif(VIDEO_X11_XVM AND HAVE_XF86VM_H) From 7818c591967133d10dbb300f0561d2b9db07a6d4 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 22 Jan 2014 12:39:34 -0500 Subject: [PATCH 226/402] Fix detection of iOS for disabling dynamic API. --- src/dynapi/SDL_dynapi.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/dynapi/SDL_dynapi.h b/src/dynapi/SDL_dynapi.h index eb1c014408..9801ba1c3d 100644 --- a/src/dynapi/SDL_dynapi.h +++ b/src/dynapi/SDL_dynapi.h @@ -39,7 +39,11 @@ #error Nope, you have to edit this file to force this off. #endif -#if defined(__APPLE__) && TARGET_OS_IPHONE /* probably not useful on iOS. */ +#ifdef __APPLE__ +#include "TargetConditionals.h" +#endif + +#if TARGET_OS_IPHONE /* probably not useful on iOS. */ #define SDL_DYNAMIC_API 0 #else /* everyone else. */ #define SDL_DYNAMIC_API 1 From 00d106b9baeec0ab519d1c27a4c60815f088ade6 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 23 Jan 2014 08:44:25 -0300 Subject: [PATCH 227/402] Bug 2358 - [Android] Joystick Button Mappings are strange (fix by David Brady) --- src/joystick/android/SDL_sysjoystick.c | 71 +++++++++++++++++++------- 1 file changed, 53 insertions(+), 18 deletions(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 229a48dca0..2065145cd8 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -85,35 +85,70 @@ keycode_to_SDL(int keycode) int button = 0; switch(keycode) { - /* D-Pad key codes (API 1), these get mapped to 0...4 */ - case AKEYCODE_DPAD_UP: - case AKEYCODE_DPAD_DOWN: - case AKEYCODE_DPAD_LEFT: - case AKEYCODE_DPAD_RIGHT: - case AKEYCODE_DPAD_CENTER: - button = keycode - AKEYCODE_DPAD_UP; - break; - - /* Some gamepad buttons (API 9), these get mapped to 5...19*/ + /* Some gamepad buttons (API 9) */ case AKEYCODE_BUTTON_A: + button = SDL_CONTROLLER_BUTTON_A; + break; case AKEYCODE_BUTTON_B: - case AKEYCODE_BUTTON_C: + button = SDL_CONTROLLER_BUTTON_B; + break; case AKEYCODE_BUTTON_X: + button = SDL_CONTROLLER_BUTTON_X; + break; case AKEYCODE_BUTTON_Y: - case AKEYCODE_BUTTON_Z: + button = SDL_CONTROLLER_BUTTON_Y; + break; case AKEYCODE_BUTTON_L1: - case AKEYCODE_BUTTON_L2: + button = SDL_CONTROLLER_BUTTON_LEFTSHOULDER; + break; case AKEYCODE_BUTTON_R1: - case AKEYCODE_BUTTON_R2: + button = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER; + break; case AKEYCODE_BUTTON_THUMBL: + button = SDL_CONTROLLER_BUTTON_LEFTSTICK; + break; case AKEYCODE_BUTTON_THUMBR: + button = SDL_CONTROLLER_BUTTON_RIGHTSTICK; + break; case AKEYCODE_BUTTON_START: + button = SDL_CONTROLLER_BUTTON_START; + break; case AKEYCODE_BUTTON_SELECT: + button = SDL_CONTROLLER_BUTTON_BACK; + break; case AKEYCODE_BUTTON_MODE: - button = keycode - AKEYCODE_BUTTON_A + 5; + button = SDL_CONTROLLER_BUTTON_GUIDE; break; - - + case AKEYCODE_BUTTON_L2: + button = SDL_CONTROLLER_BUTTON_MAX; /* Not supported by GameController */ + break; + case AKEYCODE_BUTTON_R2: + button = SDL_CONTROLLER_BUTTON_MAX+1; /* Not supported by GameController */ + break; + case AKEYCODE_BUTTON_C: + button = SDL_CONTROLLER_BUTTON_MAX+2; /* Not supported by GameController */ + break; + case AKEYCODE_BUTTON_Z: + button = SDL_CONTROLLER_BUTTON_MAX+3; /* Not supported by GameController */ + break; + + /* D-Pad key codes (API 1) */ + case AKEYCODE_DPAD_UP: + button = SDL_CONTROLLER_BUTTON_DPAD_UP; + break; + case AKEYCODE_DPAD_DOWN: + button = SDL_CONTROLLER_BUTTON_DPAD_DOWN; + break; + case AKEYCODE_DPAD_LEFT: + button = SDL_CONTROLLER_BUTTON_DPAD_LEFT; + break; + case AKEYCODE_DPAD_RIGHT: + button = SDL_CONTROLLER_BUTTON_DPAD_RIGHT; + break; + case AKEYCODE_DPAD_CENTER: + button = SDL_CONTROLLER_BUTTON_MAX+4; /* Not supported by GameController */ + break; + /* More gamepad buttons (API 12), these get mapped to 20...35*/ case AKEYCODE_BUTTON_1: case AKEYCODE_BUTTON_2: @@ -131,7 +166,7 @@ keycode_to_SDL(int keycode) case AKEYCODE_BUTTON_14: case AKEYCODE_BUTTON_15: case AKEYCODE_BUTTON_16: - button = keycode - AKEYCODE_BUTTON_1 + 20; + button = keycode - AKEYCODE_BUTTON_1 + SDL_CONTROLLER_BUTTON_MAX + 5; break; default: From 9137ed82d9c7994d4f044dad1b28bed41b11fd6a Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 24 Jan 2014 09:54:04 -0300 Subject: [PATCH 228/402] Bug 2358 - [Android] Sort joystick axes - Fix by David Brady --- .../src/org/libsdl/app/SDLActivity.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 1fe66132b2..a7cb0557c6 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -2,6 +2,9 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; import android.app.*; import android.content.*; @@ -922,6 +925,13 @@ class SDLJoystick { public String name; public ArrayList axes; } + class RangeComparator implements Comparator + { + @Override + public int compare(InputDevice.MotionRange arg0, InputDevice.MotionRange arg1) { + return arg0.getAxis() - arg1.getAxis(); + } + } private ArrayList mJoysticks; @@ -948,8 +958,10 @@ public void pollInputDevices() { joystick.name = joystickDevice.getName(); joystick.axes = new ArrayList(); - for (InputDevice.MotionRange range : joystickDevice.getMotionRanges()) { - if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) { + List ranges = joystickDevice.getMotionRanges(); + Collections.sort(ranges, new RangeComparator()); + for (InputDevice.MotionRange range : ranges ) { + if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ) { joystick.axes.add(range); } } From e03d5a766755022749598358e4ef3f27a60a01b8 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Sat, 25 Jan 2014 15:05:44 -0500 Subject: [PATCH 229/402] autoconf script tweaks - fix up chmodding sdl2-config - remove duplicate enable_atomic section - add pretty summary of what was found/enabled --- configure | 131 ++++++++++++++++++++++++++++++++++++++++++++++----- configure.in | 119 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 230 insertions(+), 20 deletions(-) diff --git a/configure b/configure index 6fcddc3c77..07bc1561be 100755 --- a/configure +++ b/configure @@ -1507,7 +1507,6 @@ Optional Features: --enable-loadso Enable the shared object loading subsystem [[default=yes]] --enable-cpuinfo Enable the cpuinfo subsystem [[default=yes]] - --enable-atomic Enable the atomic operations [[default=yes]] --enable-assembly Enable assembly routines [[default=yes]] --enable-ssemath Allow GCC to use SSE floating point math [[default=no]] @@ -16821,6 +16820,8 @@ if test x$enable_atomic != xyes; then $as_echo "#define SDL_ATOMIC_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} atomic" fi # Check whether --enable-audio was given. if test "${enable_audio+set}" = set; then : @@ -16833,6 +16834,8 @@ if test x$enable_audio != xyes; then $as_echo "#define SDL_AUDIO_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} audio" fi # Check whether --enable-video was given. if test "${enable_video+set}" = set; then : @@ -16845,6 +16848,8 @@ if test x$enable_video != xyes; then $as_echo "#define SDL_VIDEO_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} video" fi # Check whether --enable-render was given. if test "${enable_render+set}" = set; then : @@ -16857,6 +16862,8 @@ if test x$enable_render != xyes; then $as_echo "#define SDL_RENDER_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} render" fi # Check whether --enable-events was given. if test "${enable_events+set}" = set; then : @@ -16869,6 +16876,8 @@ if test x$enable_events != xyes; then $as_echo "#define SDL_EVENTS_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} events" fi # Check whether --enable-joystick was given. if test "${enable_joystick+set}" = set; then : @@ -16881,6 +16890,8 @@ if test x$enable_joystick != xyes; then $as_echo "#define SDL_JOYSTICK_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} joystick" fi # Check whether --enable-haptic was given. if test "${enable_haptic+set}" = set; then : @@ -16893,6 +16904,8 @@ if test x$enable_haptic != xyes; then $as_echo "#define SDL_HAPTIC_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} haptic" fi # Check whether --enable-power was given. if test "${enable_power+set}" = set; then : @@ -16905,6 +16918,8 @@ if test x$enable_power != xyes; then $as_echo "#define SDL_POWER_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} power" fi # Check whether --enable-filesystem was given. if test "${enable_filesystem+set}" = set; then : @@ -16917,6 +16932,8 @@ if test x$enable_filesystem != xyes; then $as_echo "#define SDL_FILESYSTEM_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} filesystem" fi # Check whether --enable-threads was given. if test "${enable_threads+set}" = set; then : @@ -16929,6 +16946,8 @@ if test x$enable_threads != xyes; then $as_echo "#define SDL_THREADS_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} threads" fi # Check whether --enable-timers was given. if test "${enable_timers+set}" = set; then : @@ -16941,6 +16960,8 @@ if test x$enable_timers != xyes; then $as_echo "#define SDL_TIMERS_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} timers" fi # Check whether --enable-file was given. if test "${enable_file+set}" = set; then : @@ -16953,6 +16974,8 @@ if test x$enable_file != xyes; then $as_echo "#define SDL_FILE_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} file" fi # Check whether --enable-loadso was given. if test "${enable_loadso+set}" = set; then : @@ -16965,6 +16988,8 @@ if test x$enable_loadso != xyes; then $as_echo "#define SDL_LOADSO_DISABLED 1" >>confdefs.h +else + SUMMARY_modules="${SUMMARY_modules} loadso" fi # Check whether --enable-cpuinfo was given. if test "${enable_cpuinfo+set}" = set; then : @@ -16977,18 +17002,8 @@ if test x$enable_cpuinfo != xyes; then $as_echo "#define SDL_CPUINFO_DISABLED 1" >>confdefs.h -fi -# Check whether --enable-atomic was given. -if test "${enable_atomic+set}" = set; then : - enableval=$enable_atomic; else - enable_atomic=yes -fi - -if test x$enable_atomic != xyes; then - -$as_echo "#define SDL_ATOMIC_DISABLED 1" >>confdefs.h - + SUMMARY_modules="${SUMMARY_modules} cpuinfo" fi # Check whether --enable-assembly was given. if test "${enable_assembly+set}" = set; then : @@ -16998,6 +17013,8 @@ else fi if test x$enable_assembly = xyes; then + SUMMARY_modules="${SUMMARY_modules} assembly" + $as_echo "#define SDL_ASSEMBLY_ROUTINES 1" >>confdefs.h @@ -17083,6 +17100,7 @@ $as_echo "$have_gcc_mmx" >&6; } if test x$have_gcc_mmx = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $mmx_CFLAGS" + SUMMARY_math="${SUMMARY_math} mmx" fi fi @@ -17133,6 +17151,7 @@ $as_echo "$have_gcc_3dnow" >&6; } if test x$have_gcc_3dnow = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $amd3dnow_CFLAGS" + SUMMARY_math="${SUMMARY_math} 3dnow" fi fi @@ -17189,6 +17208,7 @@ $as_echo "$have_gcc_sse" >&6; } if test x$have_gcc_sse = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $sse_CFLAGS" + SUMMARY_math="${SUMMARY_math} sse" fi fi @@ -17245,6 +17265,7 @@ $as_echo "$have_gcc_sse2" >&6; } if test x$have_gcc_sse2 = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $sse2_CFLAGS" + SUMMARY_math="${SUMMARY_math} sse2" fi fi @@ -17393,6 +17414,7 @@ $as_echo "#define HAVE_ALTIVEC_H 1" >>confdefs.h fi EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS" + SUMMARY_math="${SUMMARY_math} altivec" fi fi fi @@ -17474,6 +17496,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_oss" >&5 $as_echo "$have_oss" >&6; } if test x$have_oss = xyes; then + SUMMARY_audio="${SUMMARY_audio} oss" $as_echo "#define SDL_AUDIO_DRIVER_OSS 1" >>confdefs.h @@ -17738,8 +17761,10 @@ cat >>confdefs.h <<_ACEOF #define SDL_AUDIO_DRIVER_ALSA_DYNAMIC "$alsa_lib" _ACEOF + SUMMARY_audio="${SUMMARY_audio} alsa(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ALSA_LIBS" + SUMMARY_audio="${SUMMARY_audio} alsa" fi have_audio=yes fi @@ -18021,8 +18046,10 @@ cat >>confdefs.h <<_ACEOF #define SDL_AUDIO_DRIVER_ESD_DYNAMIC "$esd_lib" _ACEOF + SUMMARY_audio="${SUMMARY_audio} esd(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ESD_LIBS" + SUMMARY_audio="${SUMMARY_audio} esd" fi have_audio=yes fi @@ -18124,6 +18151,7 @@ cat >>confdefs.h <<_ACEOF #define SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "$pulseaudio_lib" _ACEOF + SUMMARY_audio="${SUMMARY_audio} pulse(dynamic)" case "$host" in # On Solaris, pulseaudio must be linked deferred explicitly @@ -18134,6 +18162,7 @@ _ACEOF esac else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PULSEAUDIO_LIBS" + SUMMARY_audio="${SUMMARY_audio} pulse" fi have_audio=yes fi @@ -18252,8 +18281,10 @@ cat >>confdefs.h <<_ACEOF #define SDL_AUDIO_DRIVER_ARTS_DYNAMIC "$arts_lib" _ACEOF + SUMMARY_audio="${SUMMARY_audio} arts(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARTS_LIBS" + SUMMARY_audio="${SUMMARY_audio} arts" fi have_audio=yes fi @@ -18359,8 +18390,10 @@ cat >>confdefs.h <<_ACEOF #define SDL_AUDIO_DRIVER_NAS_DYNAMIC "$nas_lib" _ACEOF + SUMMARY_audio="${SUMMARY_audio} nas(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $NAS_LIBS" + SUMMARY_audio="${SUMMARY_audio} nas" fi @@ -18465,8 +18498,10 @@ cat >>confdefs.h <<_ACEOF #define SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "$sndio_lib" _ACEOF + SUMMARY_audio="${SUMMARY_audio} sndio(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SNDIO_LIBS" + SUMMARY_audio="${SUMMARY_audio} sndio" fi @@ -18493,6 +18528,7 @@ fi $as_echo "#define SDL_AUDIO_DRIVER_DISK 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/audio/disk/*.c" + SUMMARY_audio="${SUMMARY_audio} disk" fi } @@ -18510,6 +18546,7 @@ fi $as_echo "#define SDL_AUDIO_DRIVER_DUMMY 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c" + SUMMARY_audio="${SUMMARY_audio} dummy" fi } @@ -18785,9 +18822,11 @@ cat >>confdefs.h <<_ACEOF #define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON "$xkbcommon_lib" _ACEOF + SUMMARY_video="${SUMMARY_video} wayland(dynamic)" else enable_wayland_shared=no EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + SUMMARY_video="${SUMMARY_video} wayland" fi have_video=yes fi @@ -19601,9 +19640,11 @@ cat >>confdefs.h <<_ACEOF #define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "$x11ext_lib" _ACEOF + SUMMARY_video="${SUMMARY_video} x11(dynamic)" else enable_x11_shared=no EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext" + SUMMARY_video="${SUMMARY_video} x11" fi have_video=yes @@ -19825,6 +19866,7 @@ fi $as_echo "#define SDL_VIDEO_DRIVER_X11_XCURSOR 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xcursor" fi # Check whether --enable-video-x11-xinerama was given. if test "${enable_video_x11_xinerama+set}" = set; then : @@ -19906,6 +19948,7 @@ fi $as_echo "#define SDL_VIDEO_DRIVER_X11_XINERAMA 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xinerama" fi # Check whether --enable-video-x11-xinput was given. if test "${enable_video_x11_xinput+set}" = set; then : @@ -19984,6 +20027,7 @@ fi fi fi if test x$definitely_enable_video_x11_xinput = xyes; then + SUMMARY_video_x11="${SUMMARY_video_x11} xinput2" $as_echo "#define SDL_VIDEO_DRIVER_X11_XINPUT2 1" >>confdefs.h @@ -20018,6 +20062,7 @@ if ac_fn_c_try_compile "$LINENO"; then : have_xinput2_multitouch=yes $as_echo "#define SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -20104,6 +20149,7 @@ fi $as_echo "#define SDL_VIDEO_DRIVER_X11_XRANDR 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xrandr" fi # Check whether --enable-video-x11-scrnsaver was given. if test "${enable_video_x11_scrnsaver+set}" = set; then : @@ -20184,6 +20230,7 @@ fi $as_echo "#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xscrnsaver" fi # Check whether --enable-video-x11-xshape was given. if test "${enable_video_x11_xshape+set}" = set; then : @@ -20207,6 +20254,7 @@ fi $as_echo "#define SDL_VIDEO_DRIVER_X11_XSHAPE 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xshape" fi fi # Check whether --enable-video-x11-vm was given. @@ -20289,6 +20337,7 @@ fi $as_echo "#define SDL_VIDEO_DRIVER_X11_XVIDMODE 1" >>confdefs.h + SUMMARY_video_x11="${SUMMARY_video_x11} xvidmode" fi fi fi @@ -20302,6 +20351,7 @@ $as_echo "#define SDL_VIDEO_DRIVER_HAIKU 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/video/haiku/*.cc" have_video=yes + SUMMARY_video="${SUMMARY_video} haiku" fi } @@ -20348,6 +20398,7 @@ $as_echo "$have_cocoa" >&6; } $as_echo "#define SDL_VIDEO_DRIVER_COCOA 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/video/cocoa/*.m" + SUMMARY_video="${SUMMARY_video} cocoa" have_video=yes fi fi @@ -20534,8 +20585,10 @@ cat >>confdefs.h <<_ACEOF #define SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "$directfb_lib" _ACEOF + SUMMARY_video="${SUMMARY_video} directfb(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS" + SUMMARY_video="${SUMMARY_video} directfb" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $directfb_shared" >&5 $as_echo "$directfb_shared" >&6; } @@ -20641,8 +20694,10 @@ cat >>confdefs.h <<_ACEOF _ACEOF fusionsound_shared=yes + SUMMARY_audio="${SUMMARY_audio} fusionsound(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FUSIONSOUND_LIBS" + SUMMARY_audio="${SUMMARY_audio} fusionsound" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $fusionsound_shared" >&5 $as_echo "$fusionsound_shared" >&6; } @@ -20667,6 +20722,7 @@ $as_echo "#define SDL_VIDEO_DRIVER_DUMMY 1" >>confdefs.h SOURCES="$SOURCES $srcdir/src/video/dummy/*.c" have_video=yes + SUMMARY_video="${SUMMARY_video} dummy" fi } @@ -20717,6 +20773,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_GLX 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl" fi fi } @@ -20796,6 +20853,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_ES 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL_ES 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl_es1" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL ES v2 headers" >&5 @@ -20831,6 +20889,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_ES2 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL_ES2 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl_es2" fi fi } @@ -20847,6 +20906,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_WGL 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl" fi } @@ -20886,6 +20946,7 @@ $as_echo "#define SDL_VIDEO_OPENGL 1" >>confdefs.h $as_echo "#define SDL_VIDEO_OPENGL_EGL 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl_es1" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenGL ES v2 headers" >&5 @@ -20924,6 +20985,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_ES2 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL_ES2 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl_es2" fi fi } @@ -20941,6 +21003,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_HAIKU 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL" + SUMMARY_video="${SUMMARY_video} opengl" fi } @@ -20956,6 +21019,7 @@ $as_echo "#define SDL_VIDEO_OPENGL_CGL 1" >>confdefs.h $as_echo "#define SDL_VIDEO_RENDER_OGL 1" >>confdefs.h + SUMMARY_video="${SUMMARY_video} opengl" case "$host" in *-*-darwin*) if test x$enable_video_cocoa = xyes; then @@ -20999,6 +21063,7 @@ $as_echo "$use_input_events" >&6; } $as_echo "#define SDL_INPUT_LINUXEV 1" >>confdefs.h + SUMMARY_input="${SUMMARY_input} linuxev" fi } @@ -21038,6 +21103,7 @@ $as_echo "$use_input_kd" >&6; } $as_echo "#define SDL_INPUT_LINUXKD 1" >>confdefs.h + SUMMARY_input="${SUMMARY_input} linuxkd" fi } @@ -21181,6 +21247,7 @@ $as_echo "$enable_input_tslib" >&6; } $as_echo "#define SDL_INPUT_TSLIB 1" >>confdefs.h EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts" + SUMMARY_input="${SUMMARY_input} ts" fi fi } @@ -21704,6 +21771,9 @@ fi + SUMMARY_video="${SUMMARY_video} directx" + SUMMARY_audio="${SUMMARY_audio} directx" + # FIXME: latest Cygwin finds dinput headers, but we die on other win32 headers. # FIXME: ...so force it off for now. case "$host" in @@ -23024,6 +23094,37 @@ __EOF__ ac_config_files="$ac_config_files Makefile:Makefile.in:Makefile.rules sdl2-config SDL2.spec sdl2.pc" +ac_config_commands="$ac_config_commands sdl2_config" + + +SUMMARY="SDL2 Configure Summary:\n" +if test x$enable_shared = xyes; then + SUMMARY="${SUMMARY}Building Shared Libraries\n" +fi +if test x$enable_static = xyes; then + SUMMARY="${SUMMARY}Building Static Libraries\n" +fi +SUMMARY="${SUMMARY}Enabled modules :${SUMMARY_modules}\n" +SUMMARY="${SUMMARY}Assembly Math :${SUMMARY_math}\n" +SUMMARY="${SUMMARY}Audio drivers :${SUMMARY_audio}\n" +SUMMARY="${SUMMARY}Video drivers :${SUMMARY_video}\n" +if test x$have_x = xyes; then + SUMMARY="${SUMMARY}X11 libraries :${SUMMARY_video_x11}\n" +fi +SUMMARY="${SUMMARY}Input drivers :${SUMMARY_input}\n" +if test x$enable_libudev = xyes; then + SUMMARY="${SUMMARY}Using libudev : YES\n" +else + SUMMARY="${SUMMARY}Using libudev : NO\n" +fi +if test x$have_dbus_dbus_h_hdr = xyes; then + SUMMARY="${SUMMARY}Using dbus : YES\n" +else + SUMMARY="${SUMMARY}Using dbus : NO\n" +fi +ac_config_commands="$ac_config_commands summary" + + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -24091,6 +24192,7 @@ fi +SUMMARY="$SUMMARY" _ACEOF @@ -24106,6 +24208,8 @@ do "sdl2-config") CONFIG_FILES="$CONFIG_FILES sdl2-config" ;; "SDL2.spec") CONFIG_FILES="$CONFIG_FILES SDL2.spec" ;; "sdl2.pc") CONFIG_FILES="$CONFIG_FILES sdl2.pc" ;; + "sdl2_config") CONFIG_COMMANDS="$CONFIG_COMMANDS sdl2_config" ;; + "summary") CONFIG_COMMANDS="$CONFIG_COMMANDS summary" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -25461,6 +25565,8 @@ compiler_lib_search_path=$lt_compiler_lib_search_path_CXX _LT_EOF ;; + "sdl2_config":C) chmod a+x sdl2-config ;; + "summary":C) echo -en "$SUMMARY" ;; esac done # for ac_tag @@ -25499,4 +25605,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi -chmod a+x sdl2-config diff --git a/configure.in b/configure.in index 27eadba305..a38abd4ba1 100644 --- a/configure.in +++ b/configure.in @@ -348,95 +348,119 @@ AC_HELP_STRING([--enable-atomic], [Enable the atomic operations subsystem [[defa , enable_atomic=yes) if test x$enable_atomic != xyes; then AC_DEFINE(SDL_ATOMIC_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} atomic" fi AC_ARG_ENABLE(audio, AC_HELP_STRING([--enable-audio], [Enable the audio subsystem [[default=yes]]]), , enable_audio=yes) if test x$enable_audio != xyes; then AC_DEFINE(SDL_AUDIO_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} audio" fi AC_ARG_ENABLE(video, AC_HELP_STRING([--enable-video], [Enable the video subsystem [[default=yes]]]), , enable_video=yes) if test x$enable_video != xyes; then AC_DEFINE(SDL_VIDEO_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} video" fi AC_ARG_ENABLE(render, AC_HELP_STRING([--enable-render], [Enable the render subsystem [[default=yes]]]), , enable_render=yes) if test x$enable_render != xyes; then AC_DEFINE(SDL_RENDER_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} render" fi AC_ARG_ENABLE(events, AC_HELP_STRING([--enable-events], [Enable the events subsystem [[default=yes]]]), , enable_events=yes) if test x$enable_events != xyes; then AC_DEFINE(SDL_EVENTS_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} events" fi AC_ARG_ENABLE(joystick, AC_HELP_STRING([--enable-joystick], [Enable the joystick subsystem [[default=yes]]]), , enable_joystick=yes) if test x$enable_joystick != xyes; then AC_DEFINE(SDL_JOYSTICK_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} joystick" fi AC_ARG_ENABLE(haptic, AC_HELP_STRING([--enable-haptic], [Enable the haptic (force feedback) subsystem [[default=yes]]]), , enable_haptic=yes) if test x$enable_haptic != xyes; then AC_DEFINE(SDL_HAPTIC_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} haptic" fi AC_ARG_ENABLE(power, AC_HELP_STRING([--enable-power], [Enable the power subsystem [[default=yes]]]), , enable_power=yes) if test x$enable_power != xyes; then AC_DEFINE(SDL_POWER_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} power" fi AC_ARG_ENABLE(filesystem, AC_HELP_STRING([--enable-filesystem], [Enable the filesystem subsystem [[default=yes]]]), , enable_filesystem=yes) if test x$enable_filesystem != xyes; then AC_DEFINE(SDL_FILESYSTEM_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} filesystem" fi AC_ARG_ENABLE(threads, AC_HELP_STRING([--enable-threads], [Enable the threading subsystem [[default=yes]]]), , enable_threads=yes) if test x$enable_threads != xyes; then AC_DEFINE(SDL_THREADS_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} threads" fi AC_ARG_ENABLE(timers, AC_HELP_STRING([--enable-timers], [Enable the timer subsystem [[default=yes]]]), , enable_timers=yes) if test x$enable_timers != xyes; then AC_DEFINE(SDL_TIMERS_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} timers" fi AC_ARG_ENABLE(file, AC_HELP_STRING([--enable-file], [Enable the file subsystem [[default=yes]]]), , enable_file=yes) if test x$enable_file != xyes; then AC_DEFINE(SDL_FILE_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} file" fi AC_ARG_ENABLE(loadso, AC_HELP_STRING([--enable-loadso], [Enable the shared object loading subsystem [[default=yes]]]), , enable_loadso=yes) if test x$enable_loadso != xyes; then AC_DEFINE(SDL_LOADSO_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} loadso" fi AC_ARG_ENABLE(cpuinfo, AC_HELP_STRING([--enable-cpuinfo], [Enable the cpuinfo subsystem [[default=yes]]]), , enable_cpuinfo=yes) if test x$enable_cpuinfo != xyes; then AC_DEFINE(SDL_CPUINFO_DISABLED, 1, [ ]) -fi -AC_ARG_ENABLE(atomic, -AC_HELP_STRING([--enable-atomic], [Enable the atomic operations [[default=yes]]]), - , enable_atomic=yes) -if test x$enable_atomic != xyes; then - AC_DEFINE(SDL_ATOMIC_DISABLED, 1, [ ]) +else + SUMMARY_modules="${SUMMARY_modules} cpuinfo" fi AC_ARG_ENABLE(assembly, AC_HELP_STRING([--enable-assembly], [Enable assembly routines [[default=yes]]]), , enable_assembly=yes) if test x$enable_assembly = xyes; then + SUMMARY_modules="${SUMMARY_modules} assembly" + AC_DEFINE(SDL_ASSEMBLY_ROUTINES, 1, [ ]) # Make sure that we don't generate floating point code that would @@ -497,6 +521,7 @@ AC_HELP_STRING([--enable-mmx], [use MMX assembly routines [[default=yes]]]), if test x$have_gcc_mmx = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $mmx_CFLAGS" + SUMMARY_math="${SUMMARY_math} mmx" fi fi @@ -526,6 +551,7 @@ AC_HELP_STRING([--enable-3dnow], [use 3DNow! assembly routines [[default=yes]]]) if test x$have_gcc_3dnow = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $amd3dnow_CFLAGS" + SUMMARY_math="${SUMMARY_math} 3dnow" fi fi @@ -562,6 +588,7 @@ AC_HELP_STRING([--enable-sse], [use SSE assembly routines [[default=yes]]]), if test x$have_gcc_sse = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $sse_CFLAGS" + SUMMARY_math="${SUMMARY_math} sse" fi fi @@ -598,6 +625,7 @@ AC_HELP_STRING([--enable-sse2], [use SSE2 assembly routines [[default=no]]]), if test x$have_gcc_sse2 = xyes; then EXTRA_CFLAGS="$EXTRA_CFLAGS $sse2_CFLAGS" + SUMMARY_math="${SUMMARY_math} sse2" fi fi @@ -674,6 +702,7 @@ AC_HELP_STRING([--enable-altivec], [use Altivec assembly routines [[default=yes] AC_DEFINE(HAVE_ALTIVEC_H, 1, [ ]) fi EXTRA_CFLAGS="$EXTRA_CFLAGS $altivec_CFLAGS" + SUMMARY_math="${SUMMARY_math} altivec" fi fi fi @@ -720,6 +749,7 @@ AC_HELP_STRING([--enable-oss], [support the OSS audio API [[default=maybe]]]), fi AC_MSG_RESULT($have_oss) if test x$have_oss = xyes; then + SUMMARY_audio="${SUMMARY_audio} oss" AC_DEFINE(SDL_AUDIO_DRIVER_OSS, 1, [ ]) SOURCES="$SOURCES $srcdir/src/audio/dsp/*.c" have_audio=yes @@ -762,8 +792,10 @@ AC_HELP_STRING([--enable-alsa-shared], [dynamically load ALSA audio support [[de test x$enable_alsa_shared = xyes && test x$alsa_lib != x; then echo "-- dynamic libasound -> $alsa_lib" AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ALSA_DYNAMIC, "$alsa_lib", [ ]) + SUMMARY_audio="${SUMMARY_audio} alsa(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ALSA_LIBS" + SUMMARY_audio="${SUMMARY_audio} alsa" fi have_audio=yes fi @@ -795,8 +827,10 @@ AC_HELP_STRING([--enable-esd-shared], [dynamically load ESD audio support [[defa test x$enable_esd_shared = xyes && test x$esd_lib != x; then echo "-- dynamic libesd -> $esd_lib" AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ESD_DYNAMIC, "$esd_lib", [ ]) + SUMMARY_audio="${SUMMARY_audio} esd(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ESD_LIBS" + SUMMARY_audio="${SUMMARY_audio} esd" fi have_audio=yes fi @@ -842,6 +876,7 @@ AC_HELP_STRING([--enable-pulseaudio-shared], [dynamically load PulseAudio suppor test x$enable_pulseaudio_shared = xyes && test x$pulseaudio_lib != x; then echo "-- dynamic libpulse-simple -> $pulseaudio_lib" AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC, "$pulseaudio_lib", [ ]) + SUMMARY_audio="${SUMMARY_audio} pulse(dynamic)" case "$host" in # On Solaris, pulseaudio must be linked deferred explicitly @@ -852,6 +887,7 @@ AC_HELP_STRING([--enable-pulseaudio-shared], [dynamically load PulseAudio suppor esac else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $PULSEAUDIO_LIBS" + SUMMARY_audio="${SUMMARY_audio} pulse" fi have_audio=yes fi @@ -900,8 +936,10 @@ AC_HELP_STRING([--enable-arts-shared], [dynamically load aRts audio support [[de test x$enable_arts_shared = xyes && test x$arts_lib != x; then echo "-- dynamic libartsc -> $arts_lib" AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_ARTS_DYNAMIC, "$arts_lib", [ ]) + SUMMARY_audio="${SUMMARY_audio} arts(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ARTS_LIBS" + SUMMARY_audio="${SUMMARY_audio} arts" fi have_audio=yes fi @@ -949,8 +987,10 @@ AC_HELP_STRING([--enable-nas-shared], [dynamically load NAS audio support [[defa test x$enable_nas_shared = xyes && test x$nas_lib != x; then echo "-- dynamic libaudio -> $nas_lib" AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_NAS_DYNAMIC, "$nas_lib", [ ]) + SUMMARY_audio="${SUMMARY_audio} nas(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $NAS_LIBS" + SUMMARY_audio="${SUMMARY_audio} nas" fi AC_DEFINE(SDL_AUDIO_DRIVER_NAS, 1, [ ]) @@ -995,8 +1035,10 @@ AC_HELP_STRING([--enable-sndio-shared], [dynamically load sndio audio support [[ test x$enable_sndio_shared = xyes && test x$sndio_lib != x; then echo "-- dynamic libsndio -> $sndio_lib" AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC, "$sndio_lib", [ ]) + SUMMARY_audio="${SUMMARY_audio} sndio(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $SNDIO_LIBS" + SUMMARY_audio="${SUMMARY_audio} sndio" fi AC_DEFINE(SDL_AUDIO_DRIVER_SNDIO, 1, [ ]) @@ -1016,6 +1058,7 @@ AC_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [[def if test x$enable_audio = xyes -a x$enable_diskaudio = xyes; then AC_DEFINE(SDL_AUDIO_DRIVER_DISK, 1, [ ]) SOURCES="$SOURCES $srcdir/src/audio/disk/*.c" + SUMMARY_audio="${SUMMARY_audio} disk" fi } @@ -1028,6 +1071,7 @@ AC_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [[default= if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY, 1, [ ]) SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c" + SUMMARY_audio="${SUMMARY_audio} dummy" fi } @@ -1187,9 +1231,11 @@ AC_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [[de AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, "$wayland_egl_lib", [ ]) AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, "$wayland_cursor_lib", [ ]) AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON, "$xkbcommon_lib", [ ]) + SUMMARY_video="${SUMMARY_video} wayland(dynamic)" else enable_wayland_shared=no EXTRA_LDFLAGS="$EXTRA_LDFLAGS $WAYLAND_LIBS" + SUMMARY_video="${SUMMARY_video} wayland" fi have_video=yes fi @@ -1299,9 +1345,11 @@ AC_HELP_STRING([--enable-x11-shared], [dynamically load X11 support [[default=ma echo "-- dynamic libX11ext -> $x11ext_lib" AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC, "$x11_lib", [ ]) AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT, "$x11ext_lib", [ ]) + SUMMARY_video="${SUMMARY_video} x11(dynamic)" else enable_x11_shared=no EXTRA_LDFLAGS="$EXTRA_LDFLAGS $X_LIBS -lX11 -lXext" + SUMMARY_video="${SUMMARY_video} x11" fi have_video=yes @@ -1378,6 +1426,7 @@ AC_HELP_STRING([--enable-video-x11-xcursor], [enable X11 Xcursor support [[defau fi if test x$definitely_enable_video_x11_xcursor = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_XCURSOR, 1, [ ]) + SUMMARY_video_x11="${SUMMARY_video_x11} xcursor" fi AC_ARG_ENABLE(video-x11-xinerama, AC_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [[default=yes]]]), @@ -1405,6 +1454,7 @@ AC_HELP_STRING([--enable-video-x11-xinerama], [enable X11 Xinerama support [[def fi if test x$definitely_enable_video_x11_xinerama = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINERAMA, 1, [ ]) + SUMMARY_video_x11="${SUMMARY_video_x11} xinerama" fi AC_ARG_ENABLE(video-x11-xinput, AC_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for manymouse, tablets, etc [[default=yes]]]), @@ -1431,6 +1481,7 @@ AC_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for man fi fi if test x$definitely_enable_video_x11_xinput = xyes; then + SUMMARY_video_x11="${SUMMARY_video_x11} xinput2" AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2, 1, [ ]) AC_MSG_CHECKING(for xinput2 multitouch) have_xinput2_multitouch=no @@ -1449,6 +1500,7 @@ XIAllowTouchEvents(Display *a,int b,unsigned int c,Window d,int f) ],[ have_xinput2_multitouch=yes AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH) + SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch" ]) AC_MSG_RESULT($have_xinput2_multitouch) fi @@ -1478,6 +1530,7 @@ AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for ful fi if test x$definitely_enable_video_x11_xrandr = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_XRANDR, 1, [ ]) + SUMMARY_video_x11="${SUMMARY_video_x11} xrandr" fi AC_ARG_ENABLE(video-x11-scrnsaver, AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension [[default=yes]]]), @@ -1504,6 +1557,7 @@ AC_HELP_STRING([--enable-video-x11-scrnsaver], [enable X11 screensaver extension fi if test x$definitely_enable_video_x11_scrnsaver = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSCRNSAVER, 1, [ ]) + SUMMARY_video_x11="${SUMMARY_video_x11} xscrnsaver" fi AC_ARG_ENABLE(video-x11-xshape, AC_HELP_STRING([--enable-video-x11-xshape], [enable X11 XShape support [[default=yes]]]), @@ -1516,6 +1570,7 @@ AC_HELP_STRING([--enable-video-x11-xshape], [enable X11 XShape support [[default ]) if test x$have_shape_h_hdr = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_XSHAPE, 1, [ ]) + SUMMARY_video_x11="${SUMMARY_video_x11} xshape" fi fi AC_ARG_ENABLE(video-x11-vm, @@ -1544,6 +1599,7 @@ AC_HELP_STRING([--enable-video-x11-vm], [use X11 VM extension for fullscreen [[d fi if test x$definitely_enable_video_x11_vm = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_X11_XVIDMODE, 1, [ ]) + SUMMARY_video_x11="${SUMMARY_video_x11} xvidmode" fi fi fi @@ -1556,6 +1612,7 @@ CheckHaikuVideo() AC_DEFINE(SDL_VIDEO_DRIVER_HAIKU, 1, [ ]) SOURCES="$SOURCES $srcdir/src/video/haiku/*.cc" have_video=yes + SUMMARY_video="${SUMMARY_video} haiku" fi } @@ -1582,6 +1639,7 @@ AC_HELP_STRING([--enable-video-cocoa], [use Cocoa video driver [[default=yes]]]) if test x$have_cocoa = xyes; then AC_DEFINE(SDL_VIDEO_DRIVER_COCOA, 1, [ ]) SOURCES="$SOURCES $srcdir/src/video/cocoa/*.m" + SUMMARY_video="${SUMMARY_video} cocoa" have_video=yes fi fi @@ -1655,8 +1713,10 @@ AC_MSG_WARN("directfb $directfb_lib") directfb_shared=yes echo "-- $directfb_lib_spec -> $directfb_lib" AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC, "$directfb_lib", [ ]) + SUMMARY_video="${SUMMARY_video} directfb(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $DIRECTFB_LIBS" + SUMMARY_video="${SUMMARY_video} directfb" fi AC_MSG_RESULT($directfb_shared) have_video=yes @@ -1704,8 +1764,10 @@ AC_HELP_STRING([--enable-fusionsound-shared], [dynamically load fusionsound audi test x$enable_fusionsound_shared = xyes; then AC_DEFINE_UNQUOTED(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC, "libfusionsound.so", [ ]) fusionsound_shared=yes + SUMMARY_audio="${SUMMARY_audio} fusionsound(dynamic)" else EXTRA_LDFLAGS="$EXTRA_LDFLAGS $FUSIONSOUND_LIBS" + SUMMARY_audio="${SUMMARY_audio} fusionsound" fi AC_MSG_RESULT($fusionsound_shared) @@ -1724,6 +1786,7 @@ AC_HELP_STRING([--enable-video-dummy], [use dummy video driver [[default=yes]]]) AC_DEFINE(SDL_VIDEO_DRIVER_DUMMY, 1, [ ]) SOURCES="$SOURCES $srcdir/src/video/dummy/*.c" have_video=yes + SUMMARY_video="${SUMMARY_video} dummy" fi } @@ -1750,6 +1813,7 @@ CheckOpenGLX11() AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_OPENGL_GLX, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl" fi fi } @@ -1789,6 +1853,7 @@ CheckOpenGLESX11() if test x$video_opengles_v1 = xyes; then AC_DEFINE(SDL_VIDEO_OPENGL_ES, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl_es1" fi AC_MSG_CHECKING(for OpenGL ES v2 headers) @@ -1804,6 +1869,7 @@ CheckOpenGLESX11() if test x$video_opengles_v2 = xyes; then AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl_es2" fi fi } @@ -1815,6 +1881,7 @@ CheckWINDOWSGL() AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_OPENGL_WGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl" fi } @@ -1835,6 +1902,7 @@ CheckWINDOWSGLES() if test x$video_opengl_egl = xyes; then AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_OPENGL_EGL, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl_es1" fi AC_MSG_CHECKING(for OpenGL ES v2 headers) @@ -1851,6 +1919,7 @@ CheckWINDOWSGLES() AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_OPENGL_ES2, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL_ES2, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl_es2" fi fi } @@ -1863,6 +1932,7 @@ CheckHaikuGL() AC_DEFINE(SDL_VIDEO_OPENGL_HAIKU, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ]) EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lGL" + SUMMARY_video="${SUMMARY_video} opengl" fi } @@ -1873,6 +1943,7 @@ CheckMacGL() AC_DEFINE(SDL_VIDEO_OPENGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_OPENGL_CGL, 1, [ ]) AC_DEFINE(SDL_VIDEO_RENDER_OGL, 1, [ ]) + SUMMARY_video="${SUMMARY_video} opengl" case "$host" in *-*-darwin*) if test x$enable_video_cocoa = xyes; then @@ -1900,6 +1971,7 @@ CheckInputEvents() AC_MSG_RESULT($use_input_events) if test x$use_input_events = xyes; then AC_DEFINE(SDL_INPUT_LINUXEV, 1, [ ]) + SUMMARY_input="${SUMMARY_input} linuxev" fi } @@ -1922,6 +1994,7 @@ CheckInputKD() AC_MSG_RESULT($use_input_kd) if test x$use_input_kd = xyes; then AC_DEFINE(SDL_INPUT_LINUXKD, 1, [ ]) + SUMMARY_input="${SUMMARY_input} linuxkd" fi } @@ -1984,6 +2057,7 @@ AC_HELP_STRING([--enable-input-tslib], [use the Touchscreen library for input [[ if test x$enable_input_tslib = xyes; then AC_DEFINE(SDL_INPUT_TSLIB, 1, [ ]) EXTRA_LDFLAGS="$EXTRA_LDFLAGS -lts" + SUMMARY_input="${SUMMARY_input} ts" fi fi } @@ -2262,6 +2336,9 @@ AC_HELP_STRING([--enable-directx], [use DirectX for Windows audio/video [[defaul AC_CHECK_HEADER(dinput.h, have_dinput=yes) AC_CHECK_HEADER(xaudio2.h, have_xaudio2=yes) + SUMMARY_video="${SUMMARY_video} directx" + SUMMARY_audio="${SUMMARY_audio} directx" + # FIXME: latest Cygwin finds dinput headers, but we die on other win32 headers. # FIXME: ...so force it off for now. case "$host" in @@ -3076,5 +3153,33 @@ __EOF__ AC_CONFIG_FILES([ Makefile:Makefile.in:Makefile.rules sdl2-config SDL2.spec sdl2.pc ]) +AC_CONFIG_COMMANDS([sdl2_config],[chmod a+x sdl2-config]) + +SUMMARY="SDL2 Configure Summary:\n" +if test x$enable_shared = xyes; then + SUMMARY="${SUMMARY}Building Shared Libraries\n" +fi +if test x$enable_static = xyes; then + SUMMARY="${SUMMARY}Building Static Libraries\n" +fi +SUMMARY="${SUMMARY}Enabled modules :${SUMMARY_modules}\n" +SUMMARY="${SUMMARY}Assembly Math :${SUMMARY_math}\n" +SUMMARY="${SUMMARY}Audio drivers :${SUMMARY_audio}\n" +SUMMARY="${SUMMARY}Video drivers :${SUMMARY_video}\n" +if test x$have_x = xyes; then + SUMMARY="${SUMMARY}X11 libraries :${SUMMARY_video_x11}\n" +fi +SUMMARY="${SUMMARY}Input drivers :${SUMMARY_input}\n" +if test x$enable_libudev = xyes; then + SUMMARY="${SUMMARY}Using libudev : YES\n" +else + SUMMARY="${SUMMARY}Using libudev : NO\n" +fi +if test x$have_dbus_dbus_h_hdr = xyes; then + SUMMARY="${SUMMARY}Using dbus : YES\n" +else + SUMMARY="${SUMMARY}Using dbus : NO\n" +fi +AC_CONFIG_COMMANDS([summary], [echo -en "$SUMMARY"], [SUMMARY="$SUMMARY"]) + AC_OUTPUT -chmod a+x sdl2-config From ba5181758e0b0e48dfe78f0131a6688459f5cca5 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Sat, 25 Jan 2014 15:13:16 -0500 Subject: [PATCH 230/402] correct grammar on UNIX missing dependency status notice. --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 279f503fee..6b552c0d4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1189,9 +1189,9 @@ message(STATUS " Build Shared Library: ${SDL_SHARED}") message(STATUS " Build Static Library: ${SDL_STATIC}") message(STATUS "") if(UNIX) - message(STATUS "Something was not detected, although your are sure that it") - message(STATUS "has been properly installed? Then make sure, you have set") - message(STATUS "the CFLAGS and LDFLAGS environment variables correctly.") + message(STATUS "If something was not detected, although the libraries") + message(STATUS "were installed, then make sure you have set the") + message(STATUS "CFLAGS and LDFLAGS environment variables correctly.") message(STATUS "") endif(UNIX) From acec704c1cfc8a4a7e815759a060d6763f11d99d Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Sat, 25 Jan 2014 16:08:39 -0500 Subject: [PATCH 231/402] quick fix for CMAKE SOVERSION number so it matches what is output by the configure script --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b552c0d4a..08c565890b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake) set(SDL_MAJOR_VERSION 2) set(SDL_MINOR_VERSION 0) set(SDL_MICRO_VERSION 1) -set(SDL_INTERFACE_AGE 0) +set(SDL_INTERFACE_AGE 1) set(SDL_BINARY_AGE 1) set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}") From 2d795df3a2871a497ec8a6f07cdc7b4ad5b8e63c Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 26 Jan 2014 23:42:25 +0100 Subject: [PATCH 232/402] Fixed typo in documentation. --- README-raspberrypi.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-raspberrypi.txt b/README-raspberrypi.txt index af1ccea6e1..22b4bbc9ee 100644 --- a/README-raspberrypi.txt +++ b/README-raspberrypi.txt @@ -124,7 +124,7 @@ Reference: http://www.raspberrypi.org/phpBB3/viewtopic.php?t=5062 The Text Input API is supported, with translation of scan codes done via the kernel symbol tables. For this to work, SDL needs access to a valid console. -If you notice there's no SDL_TEXTINPUT message being emmited, double check that +If you notice there's no SDL_TEXTINPUT message being emitted, double check that your app has read access to one of the following: * /proc/self/fd/0 From 86c431c46e5204b447ff70f1c71f288850f2c8ed Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 26 Jan 2014 23:50:35 +0100 Subject: [PATCH 233/402] Removed unused variable from Java class for Android. The audio thread was moved to native side and "protected" prevented a warning. --- android-project/src/org/libsdl/app/SDLActivity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index a7cb0557c6..cf352503e7 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -42,7 +42,6 @@ public class SDLActivity extends Activity { protected static Thread mSDLThread; // Audio - protected static Thread mAudioThread; protected static AudioTrack mAudioTrack; // Load the .so From f064618b63a8d505ee1c244e5d23df42cdec7abb Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 27 Jan 2014 17:59:19 -0300 Subject: [PATCH 234/402] [Android] Fixes Bug 2370, don't send accelerometer changes when Android_JNI_GetAccelerometerValues return SDL_FALSE (thanks to Jairo Luiz) --- src/joystick/android/SDL_sysjoystick.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 2065145cd8..33aa5c35e8 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -497,10 +497,11 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) while (item) { if (item->is_accelerometer) { if (item->joystick) { - Android_JNI_GetAccelerometerValues(values); - for ( i = 0; i < 3; i++ ) { - value = (Sint16)(values[i] * 32767.0f); - SDL_PrivateJoystickAxis(item->joystick, i, value); + if (Android_JNI_GetAccelerometerValues(values)) { + for ( i = 0; i < 3; i++ ) { + value = (Sint16)(values[i] * 32767.0f); + SDL_PrivateJoystickAxis(item->joystick, i, value); + } } } break; From 59f9548edcab3dba646bd6a9242f4bf1cea6ec83 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 27 Jan 2014 16:10:15 -0500 Subject: [PATCH 235/402] Patched to compile on Windows when not supporting Direct3D. --- src/render/direct3d/SDL_render_d3d.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 74dbea2f5b..87edadc833 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1890,12 +1890,16 @@ D3D_DestroyRenderer(SDL_Renderer * renderer) } SDL_free(renderer); } +#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ +/* This function needs to always exist for the Dynamic API. */ IDirect3DDevice9 * SDL_RenderGetD3D9Device(SDL_Renderer * renderer) { + IDirect3DDevice9 *device = NULL; + +#if SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; - IDirect3DDevice9 *device; // Make sure that this is a D3D renderer if (renderer->DestroyRenderer != D3D_DestroyRenderer) { @@ -1907,9 +1911,9 @@ SDL_RenderGetD3D9Device(SDL_Renderer * renderer) if (device) { IDirect3DDevice9_AddRef( device ); } +#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ + return device; } -#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ - /* vi: set ts=4 sw=4 expandtab: */ From 83bacba537772c5c7b9b0168a78e3d12647c541d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 27 Jan 2014 16:13:13 -0500 Subject: [PATCH 236/402] Patched to compile...uh, everywhere. :) --- src/render/direct3d/SDL_render_d3d.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 87edadc833..c7c5432e95 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1892,7 +1892,8 @@ D3D_DestroyRenderer(SDL_Renderer * renderer) } #endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ -/* This function needs to always exist for the Dynamic API. */ +#ifdef __WIN32__ +/* This function needs to always exist on Windows, for the Dynamic API. */ IDirect3DDevice9 * SDL_RenderGetD3D9Device(SDL_Renderer * renderer) { @@ -1915,5 +1916,6 @@ SDL_RenderGetD3D9Device(SDL_Renderer * renderer) return device; } +#endif /* vi: set ts=4 sw=4 expandtab: */ From cea0bbdccf82ef7e7385aa48ee375c4864fedab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Mon, 27 Jan 2014 13:43:04 -0800 Subject: [PATCH 237/402] X11: Don't redraw dialog box when mouse moves. This fixes bug #2343. (https://bugzilla.libsdl.org/show_bug.cgi?id=2343) Thanks to Melker Narikka for the patch. --- src/video/x11/SDL_x11messagebox.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/video/x11/SDL_x11messagebox.c b/src/video/x11/SDL_x11messagebox.c index a3dcc65402..7d0cb25b17 100644 --- a/src/video/x11/SDL_x11messagebox.c +++ b/src/video/x11/SDL_x11messagebox.c @@ -560,7 +560,11 @@ X11_MessageBoxLoop( SDL_MessageBoxDataX11 *data ) case MotionNotify: if ( has_focus ) { /* Mouse moved... */ + int previndex = data->mouse_over_index; data->mouse_over_index = GetHitButtonIndex( data, e.xbutton.x, e.xbutton.y ); + if (data->mouse_over_index == previndex) { + draw = SDL_FALSE; + } } break; From f978d89b43b35ebab2c348d93b1ea0d8d73e89bf Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 28 Jan 2014 00:05:23 -0500 Subject: [PATCH 238/402] CMake: Enable missing timer subsystem on Mac OS X and Haiku. --- CMakeLists.txt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08c565890b..d37983888b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -963,6 +963,13 @@ elseif(APPLE) set(SDL_FRAMEWORK_IOKIT 1) endif() + if(SDL_TIMERS) + set(SDL_TIMER_UNIX 1) + file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/unix/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${TIMER_SOURCES}) + set(HAVE_SDL_TIMERS TRUE) + endif(SDL_TIMERS) + if(SDL_FILESYSTEM) set(SDL_FILESYSTEM_COCOA 1) file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/cocoa/*.m) @@ -1024,6 +1031,13 @@ elseif(HAIKU) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(HAVE_SDL_FILESYSTEM TRUE) + if(SDL_TIMERS) + set(SDL_TIMER_HAIKU 1) + file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/haiku/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${TIMER_SOURCES}) + set(HAVE_SDL_TIMERS TRUE) + endif(SDL_TIMERS) + if(VIDEO_OPENGL) # TODO: Use FIND_PACKAGE(OpenGL) instead set(SDL_VIDEO_OPENGL 1) From 5f91bf34e03ad98f8d497938b581b7dcccaccb01 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 28 Jan 2014 09:13:46 -0300 Subject: [PATCH 239/402] Preserve binary compatibility in SDL_SYSWM_TYPE (thanks Gerry JJ!) Also moved Wayland structures to the bottom of the union for OCD related issues. --- include/SDL_syswm.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index c43a78d283..c83330bad2 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -101,10 +101,10 @@ typedef enum SDL_SYSWM_UNKNOWN, SDL_SYSWM_WINDOWS, SDL_SYSWM_X11, - SDL_SYSWM_WAYLAND, SDL_SYSWM_DIRECTFB, SDL_SYSWM_COCOA, SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, } SDL_SYSWM_TYPE; /** @@ -176,14 +176,6 @@ struct SDL_SysWMinfo Window window; /**< The X11 window */ } x11; #endif -#if defined(SDL_VIDEO_DRIVER_WAYLAND) - struct - { - struct wl_display *display; /**< Wayland display */ - struct wl_surface *surface; /**< Wayland surface */ - struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */ - } wl; -#endif #if defined(SDL_VIDEO_DRIVER_DIRECTFB) struct { @@ -203,6 +195,14 @@ struct SDL_SysWMinfo { UIWindow *window; /* The UIKit window */ } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */ + } wl; #endif /* Can't have an empty union */ int dummy; From d9663cff062705b34f59da91ac04fdc318e3b96a Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 28 Jan 2014 11:39:37 -0300 Subject: [PATCH 240/402] [Wayland] Fixes segfault when mouse enters window --- src/video/wayland/SDL_waylandevents.c | 109 +++++++++++++++----------- src/video/wayland/SDL_waylandmouse.c | 2 + 2 files changed, 65 insertions(+), 46 deletions(-) diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c index 6178574214..568c668bd4 100644 --- a/src/video/wayland/SDL_waylandevents.c +++ b/src/video/wayland/SDL_waylandevents.c @@ -86,10 +86,19 @@ pointer_handle_enter(void *data, struct wl_pointer *pointer, /* enter event for a window we've just destroyed */ return; } - - input->pointer_focus = wl_surface_get_user_data(surface); - window = input->pointer_focus; - SDL_SetMouseFocus(window->sdlwindow); + + /* This handler will be called twice in Wayland 1.4 + * Once for the window surface which has valid user data + * and again for the mouse cursor surface which does not have valid user data + * We ignore the later + */ + + window = (SDL_WindowData *)wl_surface_get_user_data(surface); + + if (window) { + input->pointer_focus = window; + SDL_SetMouseFocus(window->sdlwindow); + } } static void @@ -98,8 +107,10 @@ pointer_handle_leave(void *data, struct wl_pointer *pointer, { struct SDL_WaylandInput *input = data; - SDL_SetMouseFocus(NULL); - input->pointer_focus = NULL; + if (input->pointer_focus) { + SDL_SetMouseFocus(NULL); + input->pointer_focus = NULL; + } } static void @@ -110,8 +121,9 @@ pointer_handle_motion(void *data, struct wl_pointer *pointer, SDL_WindowData *window = input->pointer_focus; int sx = wl_fixed_to_int(sx_w); int sy = wl_fixed_to_int(sy_w); - - SDL_SendMouseMotion(window->sdlwindow, 0, 0, sx, sy); + if (input->pointer_focus) { + SDL_SendMouseMotion(window->sdlwindow, 0, 0, sx, sy); + } } static void @@ -122,29 +134,31 @@ pointer_handle_button(void *data, struct wl_pointer *pointer, uint32_t serial, SDL_WindowData *window = input->pointer_focus; enum wl_pointer_button_state state = state_w; uint32_t sdl_button; + + if (input->pointer_focus) { + switch (button) { + case BTN_LEFT: + sdl_button = SDL_BUTTON_LEFT; + break; + case BTN_MIDDLE: + sdl_button = SDL_BUTTON_MIDDLE; + break; + case BTN_RIGHT: + sdl_button = SDL_BUTTON_RIGHT; + break; + case BTN_SIDE: + sdl_button = SDL_BUTTON_X1; + break; + case BTN_EXTRA: + sdl_button = SDL_BUTTON_X2; + break; + default: + return; + } - switch (button) { - case BTN_LEFT: - sdl_button = SDL_BUTTON_LEFT; - break; - case BTN_MIDDLE: - sdl_button = SDL_BUTTON_MIDDLE; - break; - case BTN_RIGHT: - sdl_button = SDL_BUTTON_RIGHT; - break; - case BTN_SIDE: - sdl_button = SDL_BUTTON_X1; - break; - case BTN_EXTRA: - sdl_button = SDL_BUTTON_X2; - break; - default: - return; + SDL_SendMouseButton(window->sdlwindow, 0, + state ? SDL_PRESSED : SDL_RELEASED, sdl_button); } - - SDL_SendMouseButton(window->sdlwindow, 0, - state ? SDL_PRESSED : SDL_RELEASED, sdl_button); } static void @@ -156,20 +170,22 @@ pointer_handle_axis(void *data, struct wl_pointer *pointer, enum wl_pointer_axis a = axis; int x, y; - switch (a) { - case WL_POINTER_AXIS_VERTICAL_SCROLL: - x = 0; - y = wl_fixed_to_int(value); - break; - case WL_POINTER_AXIS_HORIZONTAL_SCROLL: - x = wl_fixed_to_int(value); - y = 0; - break; - default: - return; - } + if (input->pointer_focus) { + switch (a) { + case WL_POINTER_AXIS_VERTICAL_SCROLL: + x = 0; + y = wl_fixed_to_int(value); + break; + case WL_POINTER_AXIS_HORIZONTAL_SCROLL: + x = wl_fixed_to_int(value); + y = 0; + break; + default: + return; + } - SDL_SendMouseWheel(window->sdlwindow, 0, x, y); + SDL_SendMouseWheel(window->sdlwindow, 0, x, y); + } } static const struct wl_pointer_listener pointer_listener = { @@ -234,7 +250,9 @@ keyboard_handle_enter(void *data, struct wl_keyboard *keyboard, input->keyboard_focus = window; window->keyboard_device = input; - SDL_SetKeyboardFocus(window->sdlwindow); + if (window) { + SDL_SetKeyboardFocus(window->sdlwindow); + } } static void @@ -340,11 +358,10 @@ Wayland_display_add_input(SDL_VideoData *d, uint32_t id) { struct SDL_WaylandInput *input; - input = malloc(sizeof *input); + input = SDL_calloc(1, sizeof *input); if (input == NULL) return; - memset(input, 0, sizeof *input); input->display = d; input->seat = wl_registry_bind(d->registry, id, &wl_seat_interface, 1); @@ -378,7 +395,7 @@ void Wayland_display_destroy_input(SDL_VideoData *d) if (input->xkb.keymap) WAYLAND_xkb_keymap_unref(input->xkb.keymap); - free(input); + SDL_free(input); d->input = NULL; } diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c index ae634b62e2..6f6605ea60 100644 --- a/src/video/wayland/SDL_waylandmouse.c +++ b/src/video/wayland/SDL_waylandmouse.c @@ -181,6 +181,7 @@ Wayland_CreateCursor(SDL_Surface *surface, int hot_x, int hot_y) surface->h * surface->pitch); data->surface = wl_compositor_create_surface(wd->compositor); + wl_surface_set_user_data(data->surface, NULL); wl_surface_attach(data->surface, data->buffer, 0, @@ -214,6 +215,7 @@ CreateCursorFromWlCursor(SDL_VideoData *d, struct wl_cursor *wlcursor) * reference to it here */ data->buffer = NULL; data->surface = wl_compositor_create_surface(d->compositor); + wl_surface_set_user_data(data->surface, NULL); wl_surface_attach(data->surface, WAYLAND_wl_cursor_image_get_buffer(wlcursor->images[0]), 0, From e714375b7419688f959248d8191d29007b63ab0e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 28 Jan 2014 12:37:04 -0500 Subject: [PATCH 241/402] Some CMake fixes for static linking on Windows from the OpenFL project. --- CMakeLists.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d37983888b..2860789837 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,6 +149,19 @@ if(NOT ("$ENV{CFLAGS}" STREQUAL "")) # Hackish, but does the trick on Win32 list(APPEND EXTRA_LDFLAGS "$ENV{LDFLAGS}") endif(NOT ("$ENV{CFLAGS}" STREQUAL "")) +if(MSVC) + option(FORCE_STATIC_VCRT "Force /MT for static VC runtimes" OFF) + if(FORCE_STATIC_VCRT) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif() + endforeach(flag_var) + endif() +endif(MSVC) + # Those are used for pkg-config and friends, so that the SDL2.pc, sdl2-config, # etc. are created correctly. set(SDL_LIBS "-lSDL2") @@ -1234,8 +1247,14 @@ if(SDL_SHARED) endif(SDL_SHARED) if(SDL_STATIC) + set (BUILD_SHARED_LIBS FALSE) add_library(SDL2-static STATIC ${SOURCE_FILES}) set_target_properties(SDL2-static PROPERTIES OUTPUT_NAME "SDL2") + if(WINDOWS) + set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB") + set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB") + set_target_properties(SDL2-static PROPERTIES STATIC_LIBRARY_FLAGS "/NODEFAULTLIB") + endif(WINDOWS) # TODO: Win32 platforms keep the same suffix .lib for import and static # libraries - do we need to consider this? set(_INSTALL_LIBS "SDL2-static" ${_INSTALL_LIBS}) From 276c8b3541be607eeb63b86659ca2c7589ae2224 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 28 Jan 2014 12:42:01 -0500 Subject: [PATCH 242/402] Move to no-argument version of "endif()" in CMakeLists.txt. --- CMakeLists.txt | 247 +++++++++++++++++++++++++------------------------ 1 file changed, 124 insertions(+), 123 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2860789837..f206fb5821 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,17 +51,17 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8) else() set(ARCH_64 FALSE) set(PROCESSOR_ARCH "x86") -endif(CMAKE_SIZEOF_VOID_P EQUAL 8) +endif() set(LIBNAME SDL2) if(NOT LIBTYPE) set(LIBTYPE SHARED) -endif(NOT LIBTYPE) +endif() # Get the platform if(WIN32) if(NOT WINDOWS) set(WINDOWS TRUE) - endif(NOT WINDOWS) + endif() elseif(UNIX AND NOT APPLE) if(CMAKE_SYSTEM_NAME MATCHES ".*Linux") set(LINUX TRUE) @@ -106,13 +106,13 @@ if(UNIX AND NOT APPLE) set(UNIX_SYS ON) else() set(UNIX_SYS OFF) -endif(UNIX AND NOT APPLE) +endif() if(UNIX OR APPLE) set(UNIX_OR_MAC_SYS ON) else() set(UNIX_OR_MAC_SYS OFF) -endif(UNIX OR APPLE) +endif() # Default option knobs if(APPLE OR ARCH_64) @@ -120,7 +120,7 @@ if(APPLE OR ARCH_64) endif() if(UNIX OR MINGW OR MSYS) set(OPT_DEF_LIBC ON) -endif(UNIX OR MINGW OR MSYS) +endif() # Compiler info if(CMAKE_COMPILER_IS_GNUCC) @@ -134,20 +134,20 @@ elseif(MSVC_VERSION GREATER 1400) # VisualStudio 8.0+ #set(CMAKE_C_FLAGS "/ZI /WX- / else() set(OPT_DEF_ASM FALSE) -endif(CMAKE_COMPILER_IS_GNUCC) +endif() # Default flags, if not set otherwise if("$ENV{CFLAGS}" STREQUAL "") if(USE_GCC OR USE_CLANG) set(CMAKE_C_FLAGS "-g -O3") - endif(USE_GCC OR USE_CLANG) + endif() else("$ENV{CFLAGS}" STREQUAL "") set(CMAKE_C_FLAGS "$ENV{CFLAGS}") list(APPEND EXTRA_CFLAGS "$ENV{CFLAGS}") -endif("$ENV{CFLAGS}" STREQUAL "") +endif() if(NOT ("$ENV{CFLAGS}" STREQUAL "")) # Hackish, but does the trick on Win32 list(APPEND EXTRA_LDFLAGS "$ENV{LDFLAGS}") -endif(NOT ("$ENV{CFLAGS}" STREQUAL "")) +endif() if(MSVC) option(FORCE_STATIC_VCRT "Force /MT for static VC runtimes" OFF) @@ -160,7 +160,7 @@ if(MSVC) endif() endforeach(flag_var) endif() -endif(MSVC) +endif() # Those are used for pkg-config and friends, so that the SDL2.pc, sdl2-config, # etc. are created correctly. @@ -177,9 +177,9 @@ if(CYGWIN) if(HAVE_GCC_NO_CYGWIN) list(APPEND EXTRA_LDFLAGS "-mno-cygwin") list(APPEND SDL_LIBS "-mno-cygwin") - endif(HAVE_GCC_NO_CYGWIN) + endif() set(SDL_CFLAGS "${SDL_CFLAGS} -I/usr/include/mingw") -endif(CYGWIN) +endif() add_definitions(-DUSING_GENERATED_CONFIG_H) # General includes @@ -278,7 +278,7 @@ elseif(ASSERTIONS STREQUAL "paranoid") set(SDL_DEFAULT_ASSERT_LEVEL 3) else() message_error("unknown assertion level") -endif(ASSERTIONS STREQUAL "auto") +endif() set(HAVE_ASSERTIONS ${ASSERTIONS}) # Compiler option evaluation @@ -289,7 +289,7 @@ if(USE_GCC OR USE_CLANG) #error Dependency tracking requires GCC 3.0 or newer #endif int main(int argc, char **argv) { }" HAVE_DEPENDENCY_TRACKING) - endif(DEPENDENCY_TRACKING) + endif() if(GCC_ATOMICS) check_c_source_compiles("int main(int argc, char **argv) { @@ -305,8 +305,8 @@ if(USE_GCC OR USE_CLANG) int a; __sync_lock_test_and_set(&a, 1); __sync_lock_release(&a); }" HAVE_GCC_SYNC_LOCK_TEST_AND_SET) - endif(NOT HAVE_GCC_ATOMICS) - endif(GCC_ATOMICS) + endif() + endif() set(CMAKE_REQUIRED_FLAGS "-mpreferred-stack-boundary=2") check_c_source_compiles("int x = 0; int main(int argc, char **argv) {}" @@ -321,16 +321,16 @@ if(USE_GCC OR USE_CLANG) int main(int argc, char **argv) {}" HAVE_GCC_FVISIBILITY) if(HAVE_GCC_FVISIBILITY) list(APPEND EXTRA_CFLAGS "-fvisibility=hidden") - endif(HAVE_GCC_FVISIBILITY) + endif() set(CMAKE_REQUIRED_FLAGS) check_c_compiler_flag(-Wall HAVE_GCC_WALL) if(HAVE_GCC_WALL) if(HAIKU) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar") - endif(HAIKU) - endif(HAVE_GCC_WALL) -endif(USE_GCC OR USE_CLANG) + endif() + endif() +endif() if(ASSEMBLY) if(USE_GCC OR USE_CLANG) @@ -357,9 +357,9 @@ if(ASSEMBLY) int main(int argc, char **argv) { }" HAVE_MMX) if(HAVE_MMX) list(APPEND EXTRA_CFLAGS "-mmmx") - endif(HAVE_MMX) + endif() set(CMAKE_REQUIRED_FLAGS) - endif(MMX) + endif() if(3DNOW) set(CMAKE_REQUIRED_FLAGS "-m3dnow") @@ -374,9 +374,9 @@ if(ASSEMBLY) }" HAVE_3DNOW) if(HAVE_3DNOW) list(APPEND EXTRA_CFLAGS "-m3dnow") - endif(HAVE_3DNOW) + endif() set(CMAKE_REQUIRED_FLAGS) - endif(3DNOW) + endif() if(SSE) set(CMAKE_REQUIRED_FLAGS "-msse") @@ -397,9 +397,9 @@ if(ASSEMBLY) int main(int argc, char **argv) { }" HAVE_SSE) if(HAVE_SSE) list(APPEND EXTRA_CFLAGS "-msse") - endif(HAVE_SSE) + endif() set(CMAKE_REQUIRED_FLAGS) - endif(SSE) + endif() if(SSE2) set(CMAKE_REQUIRED_FLAGS "-msse2") @@ -420,18 +420,18 @@ if(ASSEMBLY) int main(int argc, char **argv) { }" HAVE_SSE2) if(HAVE_SSE2) list(APPEND EXTRA_CFLAGS "-msse2") - endif(HAVE_SSE2) + endif() set(CMAKE_REQUIRED_FLAGS) - endif(SSE2) + endif() if(SSEMATH) if(SSE OR SSE2) if(USE_GCC) list(APPEND EXTRA_CFLAGS "-mfpmath=387") - endif(USE_GCC) + endif() set(HAVE_SSEMATH TRUE) - endif(SSE OR SSE2) - endif(SSEMATH) + endif() + endif() if(ALTIVEC) set(CMAKE_REQUIRED_FLAGS "-maltivec") @@ -453,26 +453,26 @@ if(ASSEMBLY) set(SDL_ALTIVEC_BLITTERS 1) if(HAVE_ALTIVEC_H_HDR) set(HAVE_ALTIVEC_H 1) - endif(HAVE_ALTIVEC_H_HDR) - endif(HAVE_ALTIVEC OR HAVE_ALTIVEC_H_HDR) - endif(ALTIVEC) + endif() + endif() + endif() elseif(MSVC_VERSION GREATER 1500) # TODO: SDL_cpuinfo.h needs to support the user's configuration wish # for MSVC - right now it is always activated if(NOT ARCH_64) set(HAVE_MMX TRUE) set(HAVE_3DNOW TRUE) - endif(NOT ARCH_64) + endif() set(HAVE_SSE TRUE) set(HAVE_SSE2 TRUE) set(SDL_ASSEMBLY_ROUTINES 1) - endif(USE_GCC OR USE_CLANG) + endif() # TODO: #else(ASSEMBLY) # if(USE_GCC OR USE_CLANG) # list(APPEND EXTRA_CFLAGS "-mno-sse" "-mno-sse2" "-mno-mmx") -# endif(USE_GCC OR USE_CLANG) -endif(ASSEMBLY) +# endif() +endif() # TODO: Can't deactivate on FreeBSD? w/o LIBC, SDL_stdinc.h can't define # anything. @@ -496,7 +496,7 @@ if(LIBC) endforeach() if(NOT CYGWIN AND NOT MINGW) set(HAVE_ALLOCA 1) - endif(NOT CYGWIN AND NOT MINGW) + endif() set(HAVE_M_PI 1) add_definitions(-D_USE_MATH_DEFINES) # needed for M_PI set(STDC_HEADERS 1) @@ -544,21 +544,21 @@ if(LIBC) endforeach() set(CMAKE_REQUIRED_LIBRARIES) list(APPEND EXTRA_LIBS m) - endif(HAVE_LIBM) + endif() check_library_exists(iconv iconv_open "" HAVE_LIBICONV) if(HAVE_LIBICONV) list(APPEND EXTRA_LIBS iconv) - endif(HAVE_LIBICONV) + endif() check_struct_has_member("struct sigaction" "sa_sigaction" "signal.h" HAVE_SA_SIGACTION) - endif(WINDOWS AND NOT MINGW) + endif() else(LIBC) if(WINDOWS) set(HAVE_STDARG_H 1) set(HAVE_STDDEF_H 1) - endif(WINDOWS) -endif(LIBC) + endif() +endif() # Enable/disable various subsystems of the SDL library @@ -566,24 +566,24 @@ foreach(_SUB ${SDL_SUBSYSTEMS}) string(TOUPPER ${_SUB} _OPT) if(NOT SDL_${_OPT}) set(SDL_${_OPT}_DISABLED 1) - endif(NOT SDL_${_OPT}) + endif() endforeach() if(SDL_JOYSTICK) file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES}) -endif(SDL_JOYSTICK) +endif() if(SDL_HAPTIC) if(NOT SDL_JOYSTICK) # Haptic requires some private functions from the joystick subsystem. message_error("SDL_HAPTIC requires SDL_JOYSTICK, which is not enabled") - endif(NOT SDL_JOYSTICK) + endif() file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${HAPTIC_SOURCES}) -endif(SDL_HAPTIC) +endif() if(SDL_POWER) file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${POWER_SOURCES}) -endif(SDL_POWER) +endif() # TODO: in configure.in, the test for LOADSO and SDL_DLOPEN is a bit weird: # if LOADSO is not wanted, SDL_LOADSO_DISABLED is set # If however on Unix or APPLE dlopen() is detected via CheckDLOPEN(), @@ -597,21 +597,21 @@ if(SDL_AUDIO) file(GLOB DUMMYAUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/dummy/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${DUMMYAUDIO_SOURCES}) set(HAVE_DUMMYAUDIO TRUE) - endif(DUMMYAUDIO) + endif() if(DISKAUDIO) set(SDL_AUDIO_DRIVER_DISK 1) file(GLOB DISKAUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/disk/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${DISKAUDIO_SOURCES}) set(HAVE_DISKAUDIO TRUE) - endif(DISKAUDIO) -endif(SDL_AUDIO) + endif() +endif() if(SDL_DLOPEN) # Relevant for Unix/Darwin only if(UNIX OR APPLE) CheckDLOPEN() - endif(UNIX OR APPLE) -endif(SDL_DLOPEN) + endif() +endif() if(SDL_VIDEO) if(VIDEO_DUMMY) @@ -620,8 +620,8 @@ if(SDL_VIDEO) set(SOURCE_FILES ${SOURCE_FILES} ${VIDEO_DUMMY_SOURCES}) set(HAVE_VIDEO_DUMMY TRUE) set(HAVE_SDL_VIDEO TRUE) - endif(VIDEO_DUMMY) -endif(SDL_VIDEO) + endif() +endif() # Platform-specific options and settings if(UNIX AND NOT APPLE) @@ -650,7 +650,7 @@ if(UNIX AND NOT APPLE) CheckNAS() CheckSNDIO() CheckFusionSound() - endif(SDL_AUDIO) + endif() if(SDL_VIDEO) CheckX11() @@ -658,7 +658,7 @@ if(UNIX AND NOT APPLE) CheckOpenGLX11() CheckOpenGLESX11() CheckWayland() - endif(SDL_VIDEO) + endif() if(LINUX) check_c_source_compiles(" @@ -684,24 +684,24 @@ if(UNIX AND NOT APPLE) if(HAVE_INPUT_EVENTS) set(SDL_INPUT_LINUXEV 1) - endif(HAVE_INPUT_EVENTS) + endif() if(SDL_HAPTIC AND HAVE_INPUT_EVENTS) set(SDL_HAPTIC_LINUX 1) file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/linux/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${HAPTIC_SOURCES}) set(HAVE_SDL_HAPTIC TRUE) - endif(SDL_HAPTIC AND HAVE_INPUT_EVENTS) + endif() if(HAVE_INPUT_KD) set(SDL_INPUT_LINUXKD 1) - endif(HAVE_INPUT_KD) + endif() check_include_file("libudev.h" HAVE_LIBUDEV_H) # !!! FIXME: this needs pkg-config to find the include path, I think. check_include_file("dbus/dbus.h" HAVE_DBUS_DBUS_H) - endif(LINUX) + endif() if(INPUT_TSLIB) check_c_source_compiles(" @@ -710,8 +710,8 @@ if(UNIX AND NOT APPLE) if(HAVE_INPUT_TSLIB) set(SDL_INPUT_TSLIB 1) list(APPEND EXTRA_LIBS ts) - endif(HAVE_INPUT_TSLIB) - endif(INPUT_TSLIB) + endif() + endif() if(SDL_JOYSTICK) CheckUSBHID() # seems to be BSD specific - limit the test to BSD only? @@ -720,8 +720,8 @@ if(UNIX AND NOT APPLE) file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/linux/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES}) set(HAVE_SDL_JOYSTICK TRUE) - endif(LINUX) - endif(SDL_JOYSTICK) + endif() + endif() CheckPTHREAD() @@ -734,14 +734,14 @@ if(UNIX AND NOT APPLE) check_library_exists(c clock_gettime "" FOUND_CLOCK_GETTIME) if(FOUND_CLOCK_GETTIME) set(HAVE_CLOCK_GETTIME 1) - endif(FOUND_CLOCK_GETTIME) - endif(HAVE_CLOCK_GETTIME) - endif(CLOCK_GETTIME) + endif() + endif() + endif() check_include_file(linux/version.h HAVE_LINUX_VERSION_H) if(HAVE_LINUX_VERSION_H) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_LINUX_VERSION_H") - endif(HAVE_LINUX_VERSION_H) + endif() if(SDL_POWER) if(LINUX) @@ -749,22 +749,22 @@ if(UNIX AND NOT APPLE) file(GLOB POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/linux/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${POWER_SOURCES}) set(HAVE_SDL_POWER TRUE) - endif(LINUX) - endif(SDL_POWER) + endif() + endif() if(SDL_FILESYSTEM) set(SDL_FILESYSTEM_UNIX 1) file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/unix/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(HAVE_SDL_FILESYSTEM TRUE) - endif(SDL_FILESYSTEM) + endif() if(SDL_TIMERS) set(SDL_TIMER_UNIX 1) file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/unix/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${TIMER_SOURCES}) set(HAVE_SDL_TIMERS TRUE) - endif(SDL_TIMERS) + endif() if(RPATH) set(SDL_RLD_FLAGS "") @@ -775,7 +775,7 @@ if(UNIX AND NOT APPLE) endif() set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(HAVE_RPATH TRUE) - endif(RPATH) + endif() elseif(WINDOWS) find_program(WINDRES windres) @@ -791,7 +791,7 @@ elseif(WINDOWS) if(DIRECTX) if("$ENV{DXSDK_DIR}" STREQUAL "") message_error("DIRECTX requires the \$DXSDK_DIR environment variable to be set") - endif("$ENV{DXSDK_DIR}" STREQUAL "") + endif() set(CMAKE_REQUIRED_FLAGS "/I\"$ENV{DXSDK_DIR}\\Include\"") check_include_file(d3d9.h HAVE_D3D_H) check_include_file(ddraw.h HAVE_DDRAW_H) @@ -805,7 +805,7 @@ elseif(WINDOWS) include_directories($ENV{DXSDK_DIR}\\Include) endif() set(CMAKE_REQUIRED_FLAGS) - endif(DIRECTX) + endif() if(SDL_AUDIO) set(SDL_AUDIO_DRIVER_WINMM 1) @@ -817,20 +817,20 @@ elseif(WINDOWS) set(SDL_AUDIO_DRIVER_DSOUND 1) file(GLOB DSOUND_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/directsound/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${DSOUND_AUDIO_SOURCES}) - endif(HAVE_DSOUND_H) + endif() if(HAVE_XAUDIO2_H) set(SDL_AUDIO_DRIVER_XAUDIO2 1) file(GLOB XAUDIO2_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/xaudio2/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${XAUDIO2_AUDIO_SOURCES}) - endif(HAVE_XAUDIO2_H) - endif(SDL_AUDIO) + endif() + endif() if(SDL_VIDEO) # requires SDL_LOADSO on Windows (IME, DX, etc.) if(NOT SDL_LOADSO) message_error("SDL_VIDEO requires SDL_LOADSO, which is not enabled") - endif(NOT SDL_LOADSO) + endif() set(SDL_VIDEO_DRIVER_WINDOWS 1) file(GLOB WIN_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/windows/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${WIN_VIDEO_SOURCES}) @@ -838,9 +838,9 @@ elseif(WINDOWS) if(RENDER_D3D AND HAVE_D3D_H) set(SDL_VIDEO_RENDER_D3D 1) set(HAVE_RENDER_D3D TRUE) - endif(RENDER_D3D AND HAVE_D3D_H) + endif() set(HAVE_SDL_VIDEO TRUE) - endif(SDL_VIDEO) + endif() if(SDL_THREADS) set(SDL_THREAD_WINDOWS 1) @@ -851,20 +851,20 @@ elseif(WINDOWS) ${SDL2_SOURCE_DIR}/src/thread/windows/SDL_systls.c ${SDL2_SOURCE_DIR}/src/thread/generic/SDL_syscond.c) set(HAVE_SDL_THREADS TRUE) - endif(SDL_THREADS) + endif() if(SDL_POWER) set(SDL_POWER_WINDOWS 1) set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/power/windows/SDL_syspower.c) set(HAVE_SDL_POWER TRUE) - endif(SDL_POWER) + endif() if(SDL_FILESYSTEM) set(SDL_FILESYSTEM_WINDOWS 1) file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/windows/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(HAVE_SDL_FILESYSTEM TRUE) - endif(SDL_FILESYSTEM) + endif() # Libraries for Win32 native and MinGW list(APPEND EXTRA_LIBS user32 gdi32 winmm imm32 ole32 oleaut32 version uuid) @@ -876,14 +876,14 @@ elseif(WINDOWS) file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/windows/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${TIMER_SOURCES}) set(HAVE_SDL_TIMERS TRUE) - endif(SDL_TIMERS) + endif() if(SDL_LOADSO) set(SDL_LOADSO_WINDOWS 1) file(GLOB LOADSO_SOURCES ${SDL2_SOURCE_DIR}/src/loadso/windows/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${LOADSO_SOURCES}) set(HAVE_SDL_LOADSO TRUE) - endif(SDL_LOADSO) + endif() file(GLOB CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/windows/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${CORE_SOURCES}) @@ -894,8 +894,8 @@ elseif(WINDOWS) set(SDL_VIDEO_OPENGL_WGL 1) set(SDL_VIDEO_RENDER_OGL 1) set(HAVE_VIDEO_OPENGL TRUE) - endif(VIDEO_OPENGL) - endif(SDL_VIDEO) + endif() + endif() if(SDL_JOYSTICK) if(HAVE_DINPUT_H) @@ -905,15 +905,15 @@ elseif(WINDOWS) else() set(SDL_JOYSTICK_WINMM 1) set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/joystick/windows/SDL_mmjoystick.c) - endif(HAVE_DINPUT_H) + endif() set(HAVE_SDL_JOYSTICK TRUE) - endif(SDL_JOYSTICK) + endif() if(SDL_HAPTIC AND HAVE_DINPUT_H) set(SDL_HAPTIC_DINPUT 1) set(SOURCE_FILES ${SOURCE_FILES} ${SDL2_SOURCE_DIR}/src/haptic/windows/SDL_syshaptic.c) set(HAVE_SDL_HAPTIC TRUE) - endif(SDL_HAPTIC AND HAVE_DINPUT_H) + endif() file(GLOB VERSION_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.rc) file(GLOB SDLMAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/windows/*.c) @@ -922,7 +922,7 @@ elseif(WINDOWS) list(APPEND EXTRA_LDFLAGS "-mwindows") set(SDL_CFLAGS "${SDL_CFLAGS} -Dmain=SDL_main") list(APPEND SDL_LIBS "-lmingw32" "-lSDL2main" "-mwindows") - endif(MINGW OR CYGWIN) + endif() elseif(APPLE) # TODO: rework this for proper MacOS X, iOS and Darwin support @@ -1026,10 +1026,10 @@ elseif(APPLE) if(DARWIN) find_library(OpenGL_LIBRARY OpenGL) list(APPEND EXTRA_LIBRARIES ${OpenGL_LIBRARY}) - endif(DARWIN) + endif() set(HAVE_VIDEO_OPENGL TRUE) - endif(VIDEO_OPENGL) - endif(SDL_VIDEO) + endif() + endif() CheckPTHREAD() elseif(HAIKU) @@ -1058,8 +1058,8 @@ elseif(HAIKU) set(SDL_VIDEO_RENDER_OGL 1) list(APPEND EXTRA_LIBS GL) set(HAVE_VIDEO_OPENGL TRUE) - endif(VIDEO_OPENGL) - endif(SDL_VIDEO) + endif() + endif() CheckPTHREAD() endif() @@ -1079,45 +1079,45 @@ if(NOT HAVE_SDL_JOYSTICK) file(GLOB JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/dummy/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${JOYSTICK_SOURCES}) endif() -endif(NOT HAVE_SDL_JOYSTICK) +endif() if(NOT HAVE_SDL_HAPTIC) set(SDL_HAPTIC_DISABLED 1) file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/dummy/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${HAPTIC_SOURCES}) -endif(NOT HAVE_SDL_HAPTIC) +endif() if(NOT HAVE_SDL_LOADSO) set(SDL_LOADSO_DISABLED 1) file(GLOB LOADSO_SOURCES ${SDL2_SOURCE_DIR}/src/loadso/dummy/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${LOADSO_SOURCES}) -endif(NOT HAVE_SDL_LOADSO) +endif() if(NOT HAVE_SDL_FILESYSTEM) set(SDL_FILESYSTEM_DISABLED 1) file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/dummy/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) -endif(NOT HAVE_SDL_FILESYSTEM) +endif() # We always need to have threads and timers around if(NOT HAVE_SDL_THREADS) set(SDL_THREADS_DISABLED 1) file(GLOB THREADS_SOURCES ${SDL2_SOURCE_DIR}/src/thread/generic/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${THREADS_SOURCES}) -endif(NOT HAVE_SDL_THREADS) +endif() if(NOT HAVE_SDL_TIMERS) set(SDL_TIMERS_DISABLED 1) file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/dummy/*.c) set(SOURCE_FILES ${SOURCE_FILES} ${TIMER_SOURCES}) -endif(NOT HAVE_SDL_TIMERS) +endif() if(NOT SDLMAIN_SOURCES) file(GLOB SDLMAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/dummy/*.c) -endif(NOT SDLMAIN_SOURCES) +endif() # Append the -MMD -MT flags # if(DEPENDENCY_TRACKING) # if(COMPILER_IS_GNUCC) # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -MMD -MT \$@") -# endif(COMPILER_IS_GNUCC) -# endif(DEPENDENCY_TRACKING) +# endif() +# endif() configure_file("${SDL2_SOURCE_DIR}/include/SDL_config.h.cmake" "${SDL2_BINARY_DIR}/include/SDL_config.h") @@ -1125,13 +1125,13 @@ configure_file("${SDL2_SOURCE_DIR}/include/SDL_config.h.cmake" # Prepare the flags and remove duplicates if(EXTRA_LDFLAGS) list(REMOVE_DUPLICATES EXTRA_LDFLAGS) -endif(EXTRA_LDFLAGS) +endif() if(EXTRA_LIBS) list(REMOVE_DUPLICATES EXTRA_LIBS) -endif(EXTRA_LIBS) +endif() if(EXTRA_CFLAGS) list(REMOVE_DUPLICATES EXTRA_CFLAGS) -endif(EXTRA_CFLAGS) +endif() listtostr(EXTRA_CFLAGS _EXTRA_CFLAGS) set(EXTRA_CFLAGS ${_EXTRA_CFLAGS}) @@ -1151,14 +1151,14 @@ if(NOT WINDOWS OR CYGWIN) else(SDL_STATIC) set(ENABLE_STATIC_TRUE "#") set(ENABLE_STATIC_FALSE "") - endif(SDL_STATIC) + endif() if(SDL_SHARED) set(ENABLE_SHARED_TRUE "") set(ENABLE_SHARED_FALSE "#") else(SDL_SHARED) set(ENABLE_SHARED_TRUE "#") set(ENABLE_SHARED_FALSE "") - endif(SDL_SHARED) + endif() # Clean up the different lists listtostr(EXTRA_LIBS _EXTRA_LIBS "-l") @@ -1180,7 +1180,7 @@ if(NOT WINDOWS OR CYGWIN) "${SDL2_BINARY_DIR}/sdl2-config" @ONLY) configure_file("${SDL2_SOURCE_DIR}/SDL2.spec.in" "${SDL2_BINARY_DIR}/SDL2.spec" @ONLY) -endif(NOT WINDOWS OR CYGWIN) +endif() ##### Info output ##### message(STATUS "") @@ -1220,7 +1220,7 @@ if(UNIX) message(STATUS "were installed, then make sure you have set the") message(STATUS "CFLAGS and LDFLAGS environment variables correctly.") message(STATUS "") -endif(UNIX) +endif() # Ensure that the extra cflags are used at compile time set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") @@ -1241,10 +1241,10 @@ if(SDL_SHARED) VERSION ${SDL_VERSION} SOVERSION ${LT_CURRENT} OUTPUT_NAME "SDL2") - endif(UNIX) + endif() set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS}) target_link_libraries(SDL2 ${EXTRA_LIBS} ${EXTRA_LDFLAGS}) -endif(SDL_SHARED) +endif() if(SDL_STATIC) set (BUILD_SHARED_LIBS FALSE) @@ -1254,12 +1254,12 @@ if(SDL_STATIC) set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB") set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB") set_target_properties(SDL2-static PROPERTIES STATIC_LIBRARY_FLAGS "/NODEFAULTLIB") - endif(WINDOWS) + endif() # TODO: Win32 platforms keep the same suffix .lib for import and static # libraries - do we need to consider this? set(_INSTALL_LIBS "SDL2-static" ${_INSTALL_LIBS}) target_link_libraries(SDL2-static ${EXTRA_LIBS} ${EXTRA_LDFLAGS}) -endif(SDL_STATIC) +endif() ##### Installation targets ##### install(TARGETS ${_INSTALL_LIBS} @@ -1280,7 +1280,7 @@ if(SDL_SHARED) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink \"libSDL2-2.0.so\" \"libSDL2.so\")") install(FILES ${SDL2_BINARY_DIR}/libSDL2.so DESTINATION "lib${LIB_SUFFIX}") -endif(SDL_SHARED) +endif() if(NOT WINDOWS OR CYGWIN) if(FREEBSD) @@ -1289,8 +1289,9 @@ if(NOT WINDOWS OR CYGWIN) else(FREEBSD) install(FILES ${SDL2_BINARY_DIR}/sdl2.pc DESTINATION "lib${LIB_SUFFIX}/pkgconfig") - endif(FREEBSD) + endif() install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION bin) # TODO: what about the .spec file? Is it only needed for RPM creation? install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "share/aclocal") -endif(NOT WINDOWS OR CYGWIN) +endif() + From 1fcfbd4d1db7b9568871fce9f9c74eebc1928d4d Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 29 Jan 2014 00:27:54 +0100 Subject: [PATCH 243/402] Fixed comments in joystick implementation files claiming to be headers. It seems comments were originally copied from SDL_sysjoystick.h. --- src/joystick/dummy/SDL_sysjoystick.c | 2 +- src/joystick/haiku/SDL_haikujoystick.cc | 2 +- src/joystick/iphoneos/SDL_sysjoystick.m | 2 +- src/joystick/linux/SDL_sysjoystick.c | 2 +- src/joystick/psp/SDL_sysjoystick.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/joystick/dummy/SDL_sysjoystick.c b/src/joystick/dummy/SDL_sysjoystick.c index 4ec6d1bdf5..56e633d211 100644 --- a/src/joystick/dummy/SDL_sysjoystick.c +++ b/src/joystick/dummy/SDL_sysjoystick.c @@ -22,7 +22,7 @@ #if defined(SDL_JOYSTICK_DUMMY) || defined(SDL_JOYSTICK_DISABLED) -/* This is the system specific header for the SDL joystick API */ +/* This is the dummy implementation of the SDL joystick API */ #include "SDL_joystick.h" #include "../SDL_sysjoystick.h" diff --git a/src/joystick/haiku/SDL_haikujoystick.cc b/src/joystick/haiku/SDL_haikujoystick.cc index e3c9841404..1dc50d4830 100644 --- a/src/joystick/haiku/SDL_haikujoystick.cc +++ b/src/joystick/haiku/SDL_haikujoystick.cc @@ -22,7 +22,7 @@ #ifdef SDL_JOYSTICK_HAIKU -/* This is the system specific header for the SDL joystick API */ +/* This is the Haiku implementation of the SDL joystick API */ #include #include diff --git a/src/joystick/iphoneos/SDL_sysjoystick.m b/src/joystick/iphoneos/SDL_sysjoystick.m index 31d40a5fcb..da8ba70bbb 100644 --- a/src/joystick/iphoneos/SDL_sysjoystick.m +++ b/src/joystick/iphoneos/SDL_sysjoystick.m @@ -20,7 +20,7 @@ */ #include "../../SDL_internal.h" -/* This is the system specific header for the SDL joystick API */ +/* This is the iOS implementation of the SDL joystick API */ #include "SDL_joystick.h" #include "../SDL_sysjoystick.h" diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index a8e10bc758..3f329b8424 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -26,7 +26,7 @@ #error SDL now requires a Linux 2.4+ kernel with /dev/input/event support. #endif -/* This is the system specific header for the SDL joystick API */ +/* This is the Linux implementation of the SDL joystick API */ #include #include diff --git a/src/joystick/psp/SDL_sysjoystick.c b/src/joystick/psp/SDL_sysjoystick.c index b953372d64..b48034e6a4 100644 --- a/src/joystick/psp/SDL_sysjoystick.c +++ b/src/joystick/psp/SDL_sysjoystick.c @@ -19,7 +19,7 @@ 3. This notice may not be removed or altered from any source distribution. */ -/* This is the system specific header for the SDL joystick API */ +/* This is the PSP implementation of the SDL joystick API */ #include #include From e7f955585d0b08c3f985c9d173df0a6f0e6e7f9b Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Wed, 29 Jan 2014 00:29:14 +0100 Subject: [PATCH 244/402] Fixed spaces in source file license comment. --- src/test/SDL_test_harness.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/test/SDL_test_harness.c b/src/test/SDL_test_harness.c index 1bfe9c2817..d90bda5370 100644 --- a/src/test/SDL_test_harness.c +++ b/src/test/SDL_test_harness.c @@ -1,22 +1,22 @@ /* -Simple DirectMedia Layer -Copyright (C) 1997-2013 Sam Lantinga - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software -in a product, an acknowledgment in the product documentation would be -appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ #include "SDL_config.h" From 9e7b965e4190c37825c73249803a3b7e9fcb724c Mon Sep 17 00:00:00 2001 From: dbrady Date: Tue, 28 Jan 2014 15:28:20 -0800 Subject: [PATCH 245/402] fixed hat code validation. --- .../src/org/libsdl/app/SDLActivity.java | 26 +++++++++++++++---- src/core/android/SDL_android.c | 8 ++++++ src/joystick/android/SDL_sysjoystick.c | 20 ++++++++++++++ src/joystick/android/SDL_sysjoystick_c.h | 1 + 4 files changed, 50 insertions(+), 5 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index cf352503e7..3ce26ad3fe 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -262,6 +262,8 @@ boolean sendCommand(int command, Object data) { public static native int onNativePadUp(int device_id, int keycode); public static native void onNativeJoy(int device_id, int axis, float value); + public static native void onNativeHat(int device_id, int hat_id, + int x, int y); public static native void onNativeKeyDown(int keycode); public static native void onNativeKeyUp(int keycode); public static native void onNativeKeyboardFocusLost(); @@ -923,6 +925,7 @@ class SDLJoystick { public int device_id; public String name; public ArrayList axes; + public ArrayList hats; } class RangeComparator implements Comparator { @@ -956,17 +959,25 @@ public void pollInputDevices() { joystick.device_id = deviceIds[i]; joystick.name = joystickDevice.getName(); joystick.axes = new ArrayList(); + joystick.hats = new ArrayList(); List ranges = joystickDevice.getMotionRanges(); Collections.sort(ranges, new RangeComparator()); for (InputDevice.MotionRange range : ranges ) { - if ( (range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ) { - joystick.axes.add(range); - } + if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0 ) { + if (range.getAxis() == MotionEvent.AXIS_HAT_X || + range.getAxis() == MotionEvent.AXIS_HAT_Y) { + joystick.hats.add(range); + } + else { + joystick.axes.add(range); + } + } } mJoysticks.add(joystick); - SDLActivity.nativeAddJoystick(joystick.device_id, joystick.name, 0, -1, joystick.axes.size(), 0, 0); + SDLActivity.nativeAddJoystick(joystick.device_id, joystick.name, 0, -1, + joystick.axes.size(), joystick.hats.size()/2, 0); } } } @@ -1019,7 +1030,12 @@ public boolean handleMotionEvent(MotionEvent event) { /* Normalize the value to -1...1 */ float value = ( event.getAxisValue( range.getAxis(), actionPointerIndex) - range.getMin() ) / range.getRange() * 2.0f - 1.0f; SDLActivity.onNativeJoy(joystick.device_id, i, value ); - } + } + for (int i = 0; i < joystick.hats.size(); i+=2) { + int hatX = Math.round(event.getAxisValue( joystick.hats.get(i).getAxis(), actionPointerIndex ) ); + int hatY = Math.round(event.getAxisValue( joystick.hats.get(i+1).getAxis(), actionPointerIndex ) ); + SDLActivity.onNativeHat(joystick.device_id, i/2, hatX, hatY ); + } } break; default: diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index c3944f41ad..73ece9f59f 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -172,6 +172,14 @@ void Java_org_libsdl_app_SDLActivity_onNativeJoy( Android_OnJoy(device_id, axis, value); } +/* POV Hat */ +void Java_org_libsdl_app_SDLActivity_onNativeHat( + JNIEnv* env, jclass jcls, + jint device_id, jint hat_id, jint x, jint y) +{ + Android_OnHat(device_id, hat_id, x, y); +} + int Java_org_libsdl_app_SDLActivity_nativeAddJoystick( JNIEnv* env, jclass jcls, diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 33aa5c35e8..773bd98697 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -226,6 +226,26 @@ Android_OnJoy(int device_id, int axis, float value) return 0; } +int +Android_OnHat(int device_id, int hat_id, int x, int y) +{ + const Uint8 position_map[3][3] = { + {SDL_HAT_LEFTUP, SDL_HAT_UP, SDL_HAT_RIGHTUP}, + {SDL_HAT_LEFT, SDL_HAT_CENTERED, SDL_HAT_RIGHT}, + {SDL_HAT_LEFTDOWN, SDL_HAT_DOWN, SDL_HAT_RIGHTDOWN} + }; + + if (x >= -1 && x <=1 && y >= -1 && y <= 1) { + SDL_joylist_item *item = JoystickByDeviceId(device_id); + if (item && item->joystick) { + SDL_PrivateJoystickHat(item->joystick, hat_id, position_map[y+1][x+1] ); + } + return 0; + } + + return -1; +} + int Android_AddJoystick(int device_id, const char *name, SDL_bool is_accelerometer, int nbuttons, int naxes, int nhats, int nballs) diff --git a/src/joystick/android/SDL_sysjoystick_c.h b/src/joystick/android/SDL_sysjoystick_c.h index 1c1d975c6b..c62395b902 100644 --- a/src/joystick/android/SDL_sysjoystick_c.h +++ b/src/joystick/android/SDL_sysjoystick_c.h @@ -27,6 +27,7 @@ extern int Android_OnPadDown(int device_id, int keycode); extern int Android_OnPadUp(int device_id, int keycode); extern int Android_OnJoy(int device_id, int axisnum, float value); +extern int Android_OnHat(int device_id, int hat_id, int x, int y); extern int Android_AddJoystick(int device_id, const char *name, SDL_bool is_accelerometer, int nbuttons, int naxes, int nhats, int nballs); extern int Android_RemoveJoystick(int device_id); From 3ba8ff6031890a52d70b2aa7d9ea5e024a94b502 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 29 Jan 2014 18:37:23 -0800 Subject: [PATCH 246/402] Mac: [NSApp keyWindow] is not valid in windowDidBecomeKey: This fixes weird behavior on Mac where our first responder reverts to the window itself, rather than the SDLTranslatorResponder, after the window has lost focus once. This causes Escape to call cancelOperation: on the NSWindow, which by default removes our fullscreen-ness. When someone has turned off SDL_TEXTINPUT we should probably set another initial responder that handles the Escape behavior, so that SDL_TEXTINPUT doesn't change fullscreen behavior (and possibly other behavior) like it does now. --- src/video/cocoa/SDL_cocoakeyboard.m | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index 406de234e0..6f8a6efd8c 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -506,7 +506,12 @@ - (NSArray *) validAttributesForMarkedText { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSView *parentView = [[NSApp keyWindow] contentView]; + SDL_Window *window = SDL_GetKeyboardFocus(); + NSWindow *nswindow = nil; + if (window) + nswindow = ((SDL_WindowData*)window->driverdata)->nswindow; + + NSView *parentView = [nswindow contentView]; /* We only keep one field editor per process, since only the front most * window can receive text input events, so it make no sense to keep more @@ -523,7 +528,7 @@ - (NSArray *) validAttributesForMarkedText /* DEBUG_IME(@"add fieldEdit to window contentView"); */ [data->fieldEdit removeFromSuperview]; [parentView addSubview: data->fieldEdit]; - [[NSApp keyWindow] makeFirstResponder: data->fieldEdit]; + [nswindow makeFirstResponder: data->fieldEdit]; } [pool release]; From 702766e47e754f0baa894f9a35e5c0c38ed590d5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 30 Jan 2014 12:27:00 -0800 Subject: [PATCH 247/402] * Added TranslateMessage call to SDL default message pump - was causing problems in S2 tools mode apps that used Qt. Qt relies on the WM_CHAR message generated by TranslateMessage and keyboard input was showing up in the UI as mixed-case. (Depending on which message pump got a given message - both SDL and Qt pump messages for the entire process.) Sam will review and possibly tweak this change before propagating to public SDL, but I'm checking this version in so I can integrate into S2 and fix the issue there. --- src/video/windows/SDL_windowsevents.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 49ea4c7595..26532d852e 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -550,24 +550,6 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) returnCode = 0; break; - case WM_UNICHAR: - { - if (wParam == UNICODE_NOCHAR) { - returnCode = 1; - break; - } - } - /* no break */ - case WM_CHAR: - { - char text[5]; - - WIN_ConvertUTF32toUTF8(wParam, text); - SDL_SendKeyboardText(text); - } - returnCode = 0; - break; - #ifdef WM_INPUTLANGCHANGE case WM_INPUTLANGCHANGE: { @@ -866,6 +848,7 @@ WIN_PumpEvents(_THIS) const Uint8 *keystate; MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { + TranslateMessage(&msg); DispatchMessage(&msg); } From 478f4504191a87be2afee318e3465e07f2882b34 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 30 Jan 2014 12:27:24 -0800 Subject: [PATCH 248/402] Document Michael's changes adding TranslateMessage() back to the SDL message loop. --- src/video/windows/SDL_windowsevents.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 26532d852e..5b27d6d916 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -550,6 +550,12 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) returnCode = 0; break; + case WM_UNICHAR: + case WM_CHAR: + /* Ignore WM_CHAR messages that come from TranslateMessage(), since we handle WM_KEY* messages directly */ + returnCode = 0; + break; + #ifdef WM_INPUTLANGCHANGE case WM_INPUTLANGCHANGE: { @@ -848,7 +854,8 @@ WIN_PumpEvents(_THIS) const Uint8 *keystate; MSG msg; while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { - TranslateMessage(&msg); + /* Always translate the message in case it's a non-SDL window (e.g. with Qt integration) */ + TranslateMessage(&msg); DispatchMessage(&msg); } From 7b8f6a90d756185adeb22c5b234ab8993323a235 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 30 Jan 2014 12:30:40 -0800 Subject: [PATCH 249/402] Add a new hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that allows SDL_CreateWindowFrom() to set the pixel format of another SDL_Window (and also will set the SDL_WINDOW_OPENGL flag on the window created with SDL_CreateWindowFrom()). The reasoning behind this change is that source2 in -tools mode has a single OpenGL context that is used with multiple different windows. Some of those windows are created outside the engine (i.e. with Qt) and therefore we need to use SDL_CreateWindowFrom() to get an SDL_Window for those. The requirement for sharing an OpenGL context across multiple different windows is that each window has the same pixel format. To facilitate this, I now set SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT for the main window before calling SDL_CreateWindowFrom(). When I do this, SDL_CreateWindowFrom() will: 1. Set the pixel format of the returned window to the same pixel format as this SDL_Window passed in with the hint 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for OpenGL rendering. I only currently implemented this for Win32/WGL so implementing it for other platforms (i.e. X11) remains a TODO. CR: SamL Some pseudocode that shows how this is used in Source2: HWND hExternalHwnd; // HWND that was established outside of SDL // Create main window (happens inside platwindow.cpp) SDL_Window *mainWindow = SDL_CreateWindow( , SDL_WINDOW_OPENGL .. ); // Create GL context, happens inside rendersystemgl SDL_GLContext onlyContext = SDL_GL_CreateContext( mainWindow ); // Now I need to create another window from hEternalHwnd for my swap chain that will have the same pixel format as mainWindow, so set the hint SDL_SetHint( SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT, CFmtStr( %p, mainWindow) ); // Create the secondary window. This returned window will have SDL_WINDOW_OPENGL set and share a pixel format with mainWindow from the hint SDL_Window *secondaryWindow = SDL_CreateWindowFrom( hExternalHwnd ); // To render to the main window: SDL_GL_MakeCurrent( mainWindow, onlyContext ); // Do some rendering to main window // To render to the secondary window: SDL_GLMakeCurrent( secondaryWindow, onlyContext ); // Do some rendering to secondary window --- include/SDL_hints.h | 19 +++++++++++++++++++ src/video/windows/SDL_windowsopengl.c | 20 ++++++++++++++++++++ src/video/windows/SDL_windowsopengl.h | 1 + src/video/windows/SDL_windowswindow.c | 26 ++++++++++++++++++++++++++ 4 files changed, 66 insertions(+) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 9aad2e32ec..ab65c2ade6 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -328,6 +328,25 @@ extern "C" { */ #define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: + +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + /** * \brief An enumeration of hint priorities */ diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index 247976b8d5..53cf555e41 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -759,6 +759,26 @@ WIN_GL_DeleteContext(_THIS, SDL_GLContext context) _this->gl_data->wglDeleteContext((HGLRC) context); } + +SDL_bool +WIN_GL_SetPixelFormatFrom(_THIS, SDL_Window * fromWindow, SDL_Window * toWindow) +{ + HDC hfromdc = ((SDL_WindowData *) fromWindow->driverdata)->hdc; + HDC htodc = ((SDL_WindowData *) toWindow->driverdata)->hdc; + BOOL result; + + /* get the pixel format of the fromWindow */ + int pixel_format = GetPixelFormat(hfromdc); + PIXELFORMATDESCRIPTOR pfd; + SDL_memset(&pfd, 0, sizeof(pfd)); + DescribePixelFormat(hfromdc, pixel_format, sizeof(pfd), &pfd); + + /* set the pixel format of the toWindow */ + result = SetPixelFormat(htodc, pixel_format, &pfd); + + return result ? SDL_TRUE : SDL_FALSE; +} + #endif /* SDL_VIDEO_OPENGL_WGL */ #endif /* SDL_VIDEO_DRIVER_WINDOWS */ diff --git a/src/video/windows/SDL_windowsopengl.h b/src/video/windows/SDL_windowsopengl.h index f8934b0652..a331098d25 100644 --- a/src/video/windows/SDL_windowsopengl.h +++ b/src/video/windows/SDL_windowsopengl.h @@ -64,6 +64,7 @@ extern int WIN_GL_GetSwapInterval(_THIS); extern void WIN_GL_SwapWindow(_THIS, SDL_Window * window); extern void WIN_GL_DeleteContext(_THIS, SDL_GLContext context); extern void WIN_GL_InitExtensions(_THIS); +extern SDL_bool WIN_GL_SetPixelFormatFrom(_THIS, SDL_Window * fromWindow, SDL_Window * toWindow); #ifndef WGL_ARB_pixel_format #define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000 diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 5cba9ff2c7..9617dc0092 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -32,6 +32,7 @@ #include "SDL_windowsvideo.h" #include "SDL_windowswindow.h" +#include "SDL_hints.h" /* Dropfile support */ #include @@ -337,6 +338,31 @@ WIN_CreateWindowFrom(_THIS, SDL_Window * window, const void *data) if (SetupWindowData(_this, window, hwnd, SDL_FALSE) < 0) { return -1; } + +#if SDL_VIDEO_OPENGL_WGL + { + const char *hint = SDL_GetHint(SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT); + if (hint) { + // This hint is a pointer (in string form) of the address of + // the window to share a pixel format with + SDL_Window *otherWindow = NULL; + SDL_sscanf(hint, "%p", (void**)&otherWindow); + + // Do some error checking on the pointer + if (otherWindow != NULL && otherWindow->magic == &_this->window_magic) + { + // If the otherWindow has SDL_WINDOW_OPENGL set, set it for the new window as well + if (otherWindow->flags & SDL_WINDOW_OPENGL) + { + window->flags |= SDL_WINDOW_OPENGL; + if(!WIN_GL_SetPixelFormatFrom(_this, otherWindow, window)) { + return -1; + } + } + } + } + } +#endif return 0; } From 32b43b04fa1db4d00b2d0613acb792f6a2edf527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 29 Jan 2014 18:38:13 -0800 Subject: [PATCH 250/402] Add SDL_GL_ResetAttributes. --- include/SDL_video.h | 5 ++ src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + src/video/SDL_video.c | 77 ++++++++++++++++++------------- 4 files changed, 51 insertions(+), 33 deletions(-) diff --git a/include/SDL_video.h b/include/SDL_video.h index 4a53f9b340..414d26aa24 100644 --- a/include/SDL_video.h +++ b/include/SDL_video.h @@ -865,6 +865,11 @@ extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char *extension); +/** + * \brief Reset all previously set OpenGL context attributes to their default values + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + /** * \brief Set an OpenGL window attribute before window creation. */ diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index 613582d1d6..f58dde0fe7 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -570,3 +570,4 @@ #define SDL_GL_DeleteContext SDL_GL_DeleteContext_REAL #define SDL_vsscanf SDL_vsscanf_REAL #define SDL_GameControllerAddMappingsFromRW SDL_GameControllerAddMappingsFromRW_REAL +#define SDL_GL_ResetAttributes SDL_GL_ResetAttributes_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index cf34efc953..8291d22847 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -599,3 +599,4 @@ SDL_DYNAPI_PROC(void,SDL_GL_SwapWindow,(SDL_Window *a),(a),) SDL_DYNAPI_PROC(void,SDL_GL_DeleteContext,(SDL_GLContext a),(a),) SDL_DYNAPI_PROC(int,SDL_vsscanf,(const char *a, const char *b, va_list c),(a,b,c),return) SDL_DYNAPI_PROC(int,SDL_GameControllerAddMappingsFromRW,(SDL_RWops *a, int b),(a,b),return) +SDL_DYNAPI_PROC(void,SDL_GL_ResetAttributes,(void),(),) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 157cfa9e71..2e20feabec 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -477,39 +477,7 @@ SDL_VideoInit(const char *driver_name) /* Set some very sane GL defaults */ _this->gl_config.driver_loaded = 0; _this->gl_config.dll_handle = NULL; - _this->gl_config.red_size = 3; - _this->gl_config.green_size = 3; - _this->gl_config.blue_size = 2; - _this->gl_config.alpha_size = 0; - _this->gl_config.buffer_size = 0; - _this->gl_config.depth_size = 16; - _this->gl_config.stencil_size = 0; - _this->gl_config.double_buffer = 1; - _this->gl_config.accum_red_size = 0; - _this->gl_config.accum_green_size = 0; - _this->gl_config.accum_blue_size = 0; - _this->gl_config.accum_alpha_size = 0; - _this->gl_config.stereo = 0; - _this->gl_config.multisamplebuffers = 0; - _this->gl_config.multisamplesamples = 0; - _this->gl_config.retained_backing = 1; - _this->gl_config.accelerated = -1; /* accelerated or not, both are fine */ - _this->gl_config.profile_mask = 0; -#if SDL_VIDEO_OPENGL - _this->gl_config.major_version = 2; - _this->gl_config.minor_version = 1; -#elif SDL_VIDEO_OPENGL_ES2 - _this->gl_config.major_version = 2; - _this->gl_config.minor_version = 0; - _this->gl_config.profile_mask = SDL_GL_CONTEXT_PROFILE_ES; -#elif SDL_VIDEO_OPENGL_ES - _this->gl_config.major_version = 1; - _this->gl_config.minor_version = 1; - _this->gl_config.profile_mask = SDL_GL_CONTEXT_PROFILE_ES; -#endif - _this->gl_config.flags = 0; - - _this->gl_config.share_with_current_context = 0; + SDL_GL_ResetAttributes(); _this->current_glwin_tls = SDL_TLSCreate(); _this->current_glctx_tls = SDL_TLSCreate(); @@ -2547,6 +2515,49 @@ SDL_GL_ExtensionSupported(const char *extension) #endif } +void +SDL_GL_ResetAttributes() +{ + if (!_this) { + return; + } + + _this->gl_config.red_size = 3; + _this->gl_config.green_size = 3; + _this->gl_config.blue_size = 2; + _this->gl_config.alpha_size = 0; + _this->gl_config.buffer_size = 0; + _this->gl_config.depth_size = 16; + _this->gl_config.stencil_size = 0; + _this->gl_config.double_buffer = 1; + _this->gl_config.accum_red_size = 0; + _this->gl_config.accum_green_size = 0; + _this->gl_config.accum_blue_size = 0; + _this->gl_config.accum_alpha_size = 0; + _this->gl_config.stereo = 0; + _this->gl_config.multisamplebuffers = 0; + _this->gl_config.multisamplesamples = 0; + _this->gl_config.retained_backing = 1; + _this->gl_config.accelerated = -1; /* accelerated or not, both are fine */ + _this->gl_config.profile_mask = 0; +#if SDL_VIDEO_OPENGL + _this->gl_config.major_version = 2; + _this->gl_config.minor_version = 1; +#elif SDL_VIDEO_OPENGL_ES2 + _this->gl_config.major_version = 2; + _this->gl_config.minor_version = 0; + _this->gl_config.profile_mask = SDL_GL_CONTEXT_PROFILE_ES; +#elif SDL_VIDEO_OPENGL_ES + _this->gl_config.major_version = 1; + _this->gl_config.minor_version = 1; + _this->gl_config.profile_mask = SDL_GL_CONTEXT_PROFILE_ES; +#endif + _this->gl_config.flags = 0; + _this->gl_config.framebuffer_srgb_capable = 0; + + _this->gl_config.share_with_current_context = 0; +} + int SDL_GL_SetAttribute(SDL_GLattr attr, int value) { From 94819683e13bd18d42bd9e613355643b16f0eb48 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 30 Jan 2014 20:27:13 -0300 Subject: [PATCH 251/402] Detect Xrandr >= 1.2 at build time --- configure | 32 ++++++++++++++++++++++++-------- configure.in | 17 ++++++++++++----- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/configure b/configure index 07bc1561be..f9b61e12e2 100755 --- a/configure +++ b/configure @@ -20077,17 +20077,33 @@ else fi if test x$enable_video_x11_xrandr = xyes; then - definitely_enable_video_x11_xrandr=no - ac_fn_c_check_header_compile "$LINENO" "X11/extensions/Xrandr.h" "ac_cv_header_X11_extensions_Xrandr_h" "#include + definitely_enable_video_x11_xrandr=no + have_xrandr_h_hdr=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ -" -if test "x$ac_cv_header_X11_extensions_Xrandr_h" = xyes; then : - have_xrandr_h_hdr=yes -else - have_xrandr_h_hdr=no -fi + #include + #include + +int +main () +{ + + XRRScreenResources *res = NULL; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + have_xrandr_h_hdr=yes + $as_echo "#define SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH 1" >>confdefs.h + + SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch" + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test x$have_xrandr_h_hdr = xyes; then if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then echo "-- dynamic libXrandr -> $xrandr_lib" diff --git a/configure.in b/configure.in index a38abd4ba1..9eb0805d99 100644 --- a/configure.in +++ b/configure.in @@ -1508,12 +1508,19 @@ XIAllowTouchEvents(Display *a,int b,unsigned int c,Window d,int f) AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for fullscreen [[default=yes]]]), , enable_video_x11_xrandr=yes) if test x$enable_video_x11_xrandr = xyes; then + dnl XRRScreenResources is only present in Xrandr >= 1.2, we use that as a test. definitely_enable_video_x11_xrandr=no - AC_CHECK_HEADER(X11/extensions/Xrandr.h, - have_xrandr_h_hdr=yes, - have_xrandr_h_hdr=no, - [#include - ]) + have_xrandr_h_hdr=no + AC_TRY_COMPILE([ + #include + #include + ],[ + XRRScreenResources *res = NULL; + ],[ + have_xrandr_h_hdr=yes + AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH) + SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch" + ]) if test x$have_xrandr_h_hdr = xyes; then if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then echo "-- dynamic libXrandr -> $xrandr_lib" From 306011acca490afbb1add7a1a226a3a2b305c0d5 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 30 Jan 2014 20:29:58 -0300 Subject: [PATCH 252/402] Treacherous copy/paste! --- configure | 3 --- configure.in | 2 -- 2 files changed, 5 deletions(-) diff --git a/configure b/configure index f9b61e12e2..a2e554f037 100755 --- a/configure +++ b/configure @@ -20098,9 +20098,6 @@ _ACEOF if ac_fn_c_try_compile "$LINENO"; then : have_xrandr_h_hdr=yes - $as_echo "#define SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH 1" >>confdefs.h - - SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext diff --git a/configure.in b/configure.in index 9eb0805d99..69f650aa66 100644 --- a/configure.in +++ b/configure.in @@ -1518,8 +1518,6 @@ AC_HELP_STRING([--enable-video-x11-xrandr], [enable X11 Xrandr extension for ful XRRScreenResources *res = NULL; ],[ have_xrandr_h_hdr=yes - AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH) - SUMMARY_video_x11="${SUMMARY_video_x11} xinput2_multitouch" ]) if test x$have_xrandr_h_hdr = xyes; then if test x$enable_x11_shared = xyes && test x$xrandr_lib != x ; then From dc737f973e7e5704677bd568fe0f86f796c2b6bf Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 2 Feb 2014 00:33:31 -0800 Subject: [PATCH 253/402] Fixed bug 2376 - no SDL_HasAVX Haneef Mubarak AVX is the successor to SSE* and is fairly widely available. As such, it really ought to be detectable. This functionality ought to be trivial to implement, and not having it means being forced to write an ugly workaround to check for AVX (so that normal SSE can be used if AVX is not available). Here is an example on detecting AVX from SO (it actually shows ways to cehck for all of teh fancy instructions): http://stackoverflow.com/questions/6121792/how-to-check-if-a-cpu-supports-the-sse3-instruction-set --- include/SDL_cpuinfo.h | 5 +++++ src/cpuinfo/SDL_cpuinfo.c | 33 +++++++++++++++++++++++++++++++ src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + test/testautomation_platform.c | 4 ++++ test/testplatform.c | 1 + 6 files changed, 45 insertions(+) diff --git a/include/SDL_cpuinfo.h b/include/SDL_cpuinfo.h index 6d72bbb81c..96099a2130 100644 --- a/include/SDL_cpuinfo.h +++ b/include/SDL_cpuinfo.h @@ -134,6 +134,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); */ extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); +/** + * This function returns true if the CPU has AVX features. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + /** * This function returns the amount of RAM configured in the system, in MB. */ diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index c73dd80c1b..ebd21bd7dc 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -18,7 +18,11 @@ misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ +#ifdef TEST_MAIN +#include "SDL_config.h" +#else #include "../SDL_internal.h" +#endif #if defined(__WIN32__) #include "../core/windows/SDL_windows.h" @@ -55,6 +59,7 @@ #define CPU_HAS_SSE3 0x00000040 #define CPU_HAS_SSE41 0x00000100 #define CPU_HAS_SSE42 0x00000200 +#define CPU_HAS_AVX 0x00000400 #if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__ /* This is the brute force way of detecting instruction sets... @@ -329,6 +334,21 @@ CPU_haveSSE42(void) return 0; } +static SDL_INLINE int +CPU_haveAVX(void) +{ + if (CPU_haveCPUID()) { + int a, b, c, d; + + cpuid(1, a, b, c, d); + if (a >= 1) { + cpuid(1, a, b, c, d); + return (c & 0x10000000); + } + } + return 0; +} + static int SDL_CPUCount = 0; int @@ -523,6 +543,9 @@ SDL_GetCPUFeatures(void) if (CPU_haveSSE42()) { SDL_CPUFeatures |= CPU_HAS_SSE42; } + if (CPU_haveAVX()) { + SDL_CPUFeatures |= CPU_HAS_AVX; + } } return SDL_CPUFeatures; } @@ -608,6 +631,15 @@ SDL_HasSSE42(void) return SDL_FALSE; } +SDL_bool +SDL_HasAVX(void) +{ + if (SDL_GetCPUFeatures() & CPU_HAS_AVX) { + return SDL_TRUE; + } + return SDL_FALSE; +} + static int SDL_SystemRAM = 0; int @@ -673,6 +705,7 @@ main() printf("SSE3: %d\n", SDL_HasSSE3()); printf("SSE4.1: %d\n", SDL_HasSSE41()); printf("SSE4.2: %d\n", SDL_HasSSE42()); + printf("AVX: %d\n", SDL_HasAVX()); printf("RAM: %d MB\n", SDL_GetSystemRAM()); return 0; } diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index f58dde0fe7..2d683b6d3b 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -571,3 +571,4 @@ #define SDL_vsscanf SDL_vsscanf_REAL #define SDL_GameControllerAddMappingsFromRW SDL_GameControllerAddMappingsFromRW_REAL #define SDL_GL_ResetAttributes SDL_GL_ResetAttributes_REAL +#define SDL_HasAVX SDL_HasAVX_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 8291d22847..93bcf453cc 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -600,3 +600,4 @@ SDL_DYNAPI_PROC(void,SDL_GL_DeleteContext,(SDL_GLContext a),(a),) SDL_DYNAPI_PROC(int,SDL_vsscanf,(const char *a, const char *b, va_list c),(a,b,c),return) SDL_DYNAPI_PROC(int,SDL_GameControllerAddMappingsFromRW,(SDL_RWops *a, int b),(a,b),return) SDL_DYNAPI_PROC(void,SDL_GL_ResetAttributes,(void),(),) +SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX,(void),(),return) diff --git a/test/testautomation_platform.c b/test/testautomation_platform.c index 19896b48df..ba7d30369f 100644 --- a/test/testautomation_platform.c +++ b/test/testautomation_platform.c @@ -163,6 +163,7 @@ int platform_testGetFunctions (void *arg) * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE3 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE41 * http://wiki.libsdl.org/moin.cgi/SDL_HasSSE42 + * http://wiki.libsdl.org/moin.cgi/SDL_HasAVX */ int platform_testHasFunctions (void *arg) { @@ -197,6 +198,9 @@ int platform_testHasFunctions (void *arg) ret = SDL_HasSSE42(); SDLTest_AssertPass("SDL_HasSSE42()"); + ret = SDL_HasAVX(); + SDLTest_AssertPass("SDL_HasAVX()"); + return TEST_COMPLETED; } diff --git a/test/testplatform.c b/test/testplatform.c index a8ed39dd2a..d3da8a7196 100644 --- a/test/testplatform.c +++ b/test/testplatform.c @@ -153,6 +153,7 @@ TestCPUInfo(SDL_bool verbose) SDL_Log("SSE3 %s\n", SDL_HasSSE3()? "detected" : "not detected"); SDL_Log("SSE4.1 %s\n", SDL_HasSSE41()? "detected" : "not detected"); SDL_Log("SSE4.2 %s\n", SDL_HasSSE42()? "detected" : "not detected"); + SDL_Log("AVX %s\n", SDL_HasAVX()? "detected" : "not detected"); SDL_Log("System RAM %d MB\n", SDL_GetSystemRAM()); } return (0); From 668fd46b2b945947d6df61b088c0be45ac84bd07 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 2 Feb 2014 00:53:27 -0800 Subject: [PATCH 254/402] Fixed bug 2374 - Update copyright for 2014... Is it that time already?? --- COPYING.txt | 2 +- Xcode/SDL/pkg-support/resources/License.txt | 2 +- debian/copyright | 10 +++++----- include/SDL.h | 2 +- include/SDL_assert.h | 2 +- include/SDL_atomic.h | 2 +- include/SDL_audio.h | 2 +- include/SDL_bits.h | 2 +- include/SDL_blendmode.h | 2 +- include/SDL_clipboard.h | 2 +- include/SDL_config.h | 2 +- include/SDL_config.h.cmake | 2 +- include/SDL_config.h.in | 2 +- include/SDL_config_android.h | 2 +- include/SDL_config_iphoneos.h | 2 +- include/SDL_config_macosx.h | 2 +- include/SDL_config_minimal.h | 2 +- include/SDL_config_pandora.h | 2 +- include/SDL_config_psp.h | 2 +- include/SDL_config_windows.h | 2 +- include/SDL_config_wiz.h | 2 +- include/SDL_copying.h | 2 +- include/SDL_cpuinfo.h | 2 +- include/SDL_egl.h | 4 ++-- include/SDL_endian.h | 2 +- include/SDL_error.h | 2 +- include/SDL_events.h | 2 +- include/SDL_filesystem.h | 2 +- include/SDL_gamecontroller.h | 2 +- include/SDL_gesture.h | 2 +- include/SDL_haptic.h | 2 +- include/SDL_hints.h | 2 +- include/SDL_joystick.h | 2 +- include/SDL_keyboard.h | 2 +- include/SDL_keycode.h | 2 +- include/SDL_loadso.h | 2 +- include/SDL_log.h | 2 +- include/SDL_main.h | 2 +- include/SDL_messagebox.h | 2 +- include/SDL_mouse.h | 2 +- include/SDL_mutex.h | 2 +- include/SDL_opengl.h | 2 +- include/SDL_opengles.h | 2 +- include/SDL_opengles2.h | 4 ++-- include/SDL_pixels.h | 2 +- include/SDL_platform.h | 2 +- include/SDL_power.h | 2 +- include/SDL_quit.h | 2 +- include/SDL_rect.h | 2 +- include/SDL_render.h | 2 +- include/SDL_rwops.h | 2 +- include/SDL_scancode.h | 2 +- include/SDL_shape.h | 2 +- include/SDL_stdinc.h | 2 +- include/SDL_surface.h | 2 +- include/SDL_system.h | 2 +- include/SDL_syswm.h | 2 +- include/SDL_test.h | 2 +- include/SDL_test_assert.h | 2 +- include/SDL_test_common.h | 2 +- include/SDL_test_compare.h | 2 +- include/SDL_test_crc32.h | 2 +- include/SDL_test_font.h | 2 +- include/SDL_test_fuzzer.h | 2 +- include/SDL_test_harness.h | 2 +- include/SDL_test_images.h | 2 +- include/SDL_test_log.h | 2 +- include/SDL_test_md5.h | 2 +- include/SDL_test_random.h | 2 +- include/SDL_thread.h | 2 +- include/SDL_timer.h | 2 +- include/SDL_touch.h | 2 +- include/SDL_types.h | 2 +- include/SDL_version.h | 2 +- include/SDL_video.h | 2 +- include/begin_code.h | 2 +- include/close_code.h | 2 +- premake/Linux/SDL_config_premake.h | 2 +- premake/MinGW/SDL_config_premake.h | 2 +- premake/VisualC/VS2008/SDL_config_premake.h | 2 +- premake/VisualC/VS2010/SDL_config_premake.h | 2 +- premake/VisualC/VS2012/SDL_config_premake.h | 2 +- premake/Xcode-iOS/SDL_config_premake.h | 2 +- premake/Xcode/Xcode3/SDL_config_premake.h | 2 +- premake/Xcode/Xcode4/SDL_config_premake.h | 2 +- premake/config/SDL_config_cygwin.template.h | 2 +- premake/config/SDL_config_iphoneos.template.h | 2 +- premake/config/SDL_config_linux.template.h | 2 +- premake/config/SDL_config_macosx.template.h | 2 +- premake/config/SDL_config_minimal.template.h | 2 +- premake/config/SDL_config_windows.template.h | 2 +- premake/premake4.lua | 4 ++-- premake/projects/SDL2.lua | 4 ++-- premake/projects/SDL2main.lua | 4 ++-- premake/projects/SDL2test.lua | 4 ++-- premake/projects/accelerometer.lua | 4 ++-- premake/projects/checkkeys.lua | 4 ++-- premake/projects/fireworks.lua | 4 ++-- premake/projects/happy.lua | 4 ++-- premake/projects/keyboard.lua | 4 ++-- premake/projects/loopwave.lua | 4 ++-- premake/projects/mixer.lua | 4 ++-- premake/projects/rectangles.lua | 4 ++-- premake/projects/testatomic.lua | 4 ++-- premake/projects/testaudioinfo.lua | 4 ++-- premake/projects/testautomation.lua | 4 ++-- premake/projects/testdraw2.lua | 4 ++-- premake/projects/testdrawchessboard.lua | 4 ++-- premake/projects/testerror.lua | 4 ++-- premake/projects/testfile.lua | 4 ++-- premake/projects/testfilesystem.lua | 4 ++-- premake/projects/testgamecontroller.lua | 4 ++-- premake/projects/testgesture.lua | 4 ++-- premake/projects/testgl2.lua | 4 ++-- premake/projects/testgles.lua | 4 ++-- premake/projects/testhaptic.lua | 4 ++-- premake/projects/testiconv.lua | 4 ++-- premake/projects/testime.lua | 4 ++-- premake/projects/testintersection.lua | 4 ++-- premake/projects/testjoystick.lua | 4 ++-- premake/projects/testkeys.lua | 4 ++-- premake/projects/testloadso.lua | 4 ++-- premake/projects/testlock.lua | 4 ++-- premake/projects/testmessage.lua | 4 ++-- premake/projects/testmultiaudio.lua | 4 ++-- premake/projects/testnative.lua | 4 ++-- premake/projects/testoverlay2.lua | 4 ++-- premake/projects/testplatform.lua | 4 ++-- premake/projects/testpower.lua | 4 ++-- premake/projects/testrelative.lua | 4 ++-- premake/projects/testrendercopyex.lua | 4 ++-- premake/projects/testrendertarget.lua | 4 ++-- premake/projects/testresample.lua | 4 ++-- premake/projects/testrumble.lua | 4 ++-- premake/projects/testscale.lua | 4 ++-- premake/projects/testsem.lua | 4 ++-- premake/projects/testshader.lua | 4 ++-- premake/projects/testshape.lua | 4 ++-- premake/projects/testsprite2.lua | 4 ++-- premake/projects/testspriteminimal.lua | 4 ++-- premake/projects/teststreaming.lua | 4 ++-- premake/projects/testthread.lua | 4 ++-- premake/projects/testtimer.lua | 4 ++-- premake/projects/testver.lua | 4 ++-- premake/projects/testwm2.lua | 4 ++-- premake/projects/torturethread.lua | 4 ++-- premake/projects/touch.lua | 4 ++-- premake/util/sdl_check_compile.lua | 4 ++-- premake/util/sdl_dependency_checkers.lua | 4 ++-- premake/util/sdl_depends.lua | 4 ++-- premake/util/sdl_file.lua | 4 ++-- premake/util/sdl_gen_config.lua | 4 ++-- premake/util/sdl_projects.lua | 4 ++-- premake/util/sdl_string.lua | 4 ++-- src/SDL.c | 2 +- src/SDL_assert.c | 2 +- src/SDL_assert_c.h | 2 +- src/SDL_error.c | 2 +- src/SDL_error_c.h | 2 +- src/SDL_hints.c | 2 +- src/SDL_internal.h | 2 +- src/SDL_log.c | 2 +- src/atomic/SDL_atomic.c | 2 +- src/atomic/SDL_spinlock.c | 2 +- src/audio/SDL_audio.c | 2 +- src/audio/SDL_audio_c.h | 2 +- src/audio/SDL_audiocvt.c | 2 +- src/audio/SDL_audiodev.c | 2 +- src/audio/SDL_audiodev_c.h | 2 +- src/audio/SDL_audiomem.h | 2 +- src/audio/SDL_audiotypecvt.c | 2 +- src/audio/SDL_mixer.c | 2 +- src/audio/SDL_sysaudio.h | 2 +- src/audio/SDL_wave.c | 2 +- src/audio/SDL_wave.h | 2 +- src/audio/alsa/SDL_alsa_audio.c | 2 +- src/audio/alsa/SDL_alsa_audio.h | 2 +- src/audio/android/SDL_androidaudio.c | 2 +- src/audio/android/SDL_androidaudio.h | 2 +- src/audio/arts/SDL_artsaudio.c | 2 +- src/audio/arts/SDL_artsaudio.h | 2 +- src/audio/bsd/SDL_bsdaudio.c | 2 +- src/audio/bsd/SDL_bsdaudio.h | 2 +- src/audio/coreaudio/SDL_coreaudio.c | 2 +- src/audio/coreaudio/SDL_coreaudio.h | 2 +- src/audio/directsound/SDL_directsound.c | 2 +- src/audio/directsound/SDL_directsound.h | 2 +- src/audio/disk/SDL_diskaudio.c | 2 +- src/audio/disk/SDL_diskaudio.h | 2 +- src/audio/dsp/SDL_dspaudio.c | 2 +- src/audio/dsp/SDL_dspaudio.h | 2 +- src/audio/dummy/SDL_dummyaudio.c | 2 +- src/audio/dummy/SDL_dummyaudio.h | 2 +- src/audio/esd/SDL_esdaudio.c | 2 +- src/audio/esd/SDL_esdaudio.h | 2 +- src/audio/fusionsound/SDL_fsaudio.c | 2 +- src/audio/fusionsound/SDL_fsaudio.h | 2 +- src/audio/haiku/SDL_haikuaudio.cc | 2 +- src/audio/haiku/SDL_haikuaudio.h | 2 +- src/audio/nas/SDL_nasaudio.c | 2 +- src/audio/nas/SDL_nasaudio.h | 2 +- src/audio/paudio/SDL_paudio.c | 2 +- src/audio/paudio/SDL_paudio.h | 2 +- src/audio/psp/SDL_pspaudio.c | 2 +- src/audio/psp/SDL_pspaudio.h | 2 +- src/audio/pulseaudio/SDL_pulseaudio.c | 2 +- src/audio/pulseaudio/SDL_pulseaudio.h | 2 +- src/audio/qsa/SDL_qsa_audio.c | 2 +- src/audio/qsa/SDL_qsa_audio.h | 2 +- src/audio/sdlgenaudiocvt.pl | 2 +- src/audio/sndio/SDL_sndioaudio.c | 2 +- src/audio/sndio/SDL_sndioaudio.h | 2 +- src/audio/sun/SDL_sunaudio.c | 2 +- src/audio/sun/SDL_sunaudio.h | 2 +- src/audio/winmm/SDL_winmm.c | 2 +- src/audio/winmm/SDL_winmm.h | 2 +- src/audio/xaudio2/SDL_xaudio2.c | 2 +- src/core/android/SDL_android.c | 2 +- src/core/android/SDL_android.h | 2 +- src/core/linux/SDL_evdev.c | 2 +- src/core/linux/SDL_evdev.h | 2 +- src/core/linux/SDL_udev.c | 2 +- src/core/linux/SDL_udev.h | 2 +- src/core/windows/SDL_windows.c | 2 +- src/core/windows/SDL_windows.h | 2 +- src/cpuinfo/SDL_cpuinfo.c | 2 +- src/dynapi/SDL_dynapi.c | 2 +- src/dynapi/SDL_dynapi.h | 2 +- src/dynapi/SDL_dynapi_overrides.h | 2 +- src/dynapi/SDL_dynapi_procs.h | 2 +- src/dynapi/gendynapi.pl | 2 +- src/events/SDL_clipboardevents.c | 2 +- src/events/SDL_clipboardevents_c.h | 2 +- src/events/SDL_dropevents.c | 2 +- src/events/SDL_dropevents_c.h | 2 +- src/events/SDL_events.c | 2 +- src/events/SDL_events_c.h | 2 +- src/events/SDL_gesture.c | 2 +- src/events/SDL_gesture_c.h | 2 +- src/events/SDL_keyboard.c | 2 +- src/events/SDL_keyboard_c.h | 2 +- src/events/SDL_mouse.c | 2 +- src/events/SDL_mouse_c.h | 2 +- src/events/SDL_quit.c | 2 +- src/events/SDL_sysevents.h | 2 +- src/events/SDL_touch.c | 2 +- src/events/SDL_touch_c.h | 2 +- src/events/SDL_windowevents.c | 2 +- src/events/SDL_windowevents_c.h | 2 +- src/events/blank_cursor.h | 2 +- src/events/default_cursor.h | 2 +- src/events/scancodes_darwin.h | 2 +- src/events/scancodes_linux.h | 2 +- src/events/scancodes_windows.h | 2 +- src/events/scancodes_xfree86.h | 2 +- src/file/SDL_rwops.c | 2 +- src/filesystem/cocoa/SDL_sysfilesystem.m | 2 +- src/filesystem/dummy/SDL_sysfilesystem.c | 2 +- src/filesystem/haiku/SDL_sysfilesystem.cc | 2 +- src/filesystem/unix/SDL_sysfilesystem.c | 2 +- src/filesystem/windows/SDL_sysfilesystem.c | 2 +- src/haptic/SDL_haptic.c | 2 +- src/haptic/SDL_haptic_c.h | 2 +- src/haptic/SDL_syshaptic.h | 2 +- src/haptic/darwin/SDL_syshaptic.c | 2 +- src/haptic/dummy/SDL_syshaptic.c | 2 +- src/haptic/linux/SDL_syshaptic.c | 2 +- src/haptic/windows/SDL_syshaptic.c | 2 +- src/joystick/SDL_gamecontroller.c | 2 +- src/joystick/SDL_gamecontrollerdb.h | 2 +- src/joystick/SDL_joystick.c | 2 +- src/joystick/SDL_joystick_c.h | 2 +- src/joystick/SDL_sysjoystick.h | 2 +- src/joystick/android/SDL_sysjoystick.c | 2 +- src/joystick/android/SDL_sysjoystick_c.h | 2 +- src/joystick/bsd/SDL_sysjoystick.c | 2 +- src/joystick/darwin/SDL_sysjoystick.c | 2 +- src/joystick/darwin/SDL_sysjoystick_c.h | 2 +- src/joystick/dummy/SDL_sysjoystick.c | 2 +- src/joystick/haiku/SDL_haikujoystick.cc | 2 +- src/joystick/iphoneos/SDLUIAccelerationDelegate.h | 2 +- src/joystick/iphoneos/SDLUIAccelerationDelegate.m | 2 +- src/joystick/iphoneos/SDL_sysjoystick.m | 2 +- src/joystick/linux/SDL_sysjoystick.c | 2 +- src/joystick/linux/SDL_sysjoystick_c.h | 2 +- src/joystick/psp/SDL_sysjoystick.c | 2 +- src/joystick/windows/SDL_dxjoystick.c | 2 +- src/joystick/windows/SDL_dxjoystick_c.h | 2 +- src/joystick/windows/SDL_mmjoystick.c | 2 +- src/libm/math_libm.h | 2 +- src/loadso/dlopen/SDL_sysloadso.c | 2 +- src/loadso/dummy/SDL_sysloadso.c | 2 +- src/loadso/haiku/SDL_sysloadso.c | 2 +- src/loadso/windows/SDL_sysloadso.c | 2 +- src/main/haiku/SDL_BApp.h | 2 +- src/main/haiku/SDL_BeApp.cc | 2 +- src/main/haiku/SDL_BeApp.h | 2 +- src/main/psp/SDL_psp_main.c | 2 +- src/main/windows/version.rc | 2 +- src/power/SDL_power.c | 2 +- src/power/android/SDL_syspower.c | 2 +- src/power/haiku/SDL_syspower.c | 2 +- src/power/linux/SDL_syspower.c | 2 +- src/power/macosx/SDL_syspower.c | 2 +- src/power/psp/SDL_syspower.c | 2 +- src/power/uikit/SDL_syspower.h | 2 +- src/power/uikit/SDL_syspower.m | 2 +- src/power/windows/SDL_syspower.c | 2 +- src/render/SDL_render.c | 2 +- src/render/SDL_sysrender.h | 2 +- src/render/SDL_yuv_mmx.c | 2 +- src/render/SDL_yuv_sw.c | 2 +- src/render/SDL_yuv_sw_c.h | 2 +- src/render/direct3d/SDL_render_d3d.c | 2 +- src/render/opengl/SDL_render_gl.c | 2 +- src/render/opengl/SDL_shaders_gl.c | 2 +- src/render/opengl/SDL_shaders_gl.h | 2 +- src/render/opengles/SDL_render_gles.c | 2 +- src/render/opengles2/SDL_render_gles2.c | 2 +- src/render/opengles2/SDL_shaders_gles2.c | 2 +- src/render/opengles2/SDL_shaders_gles2.h | 2 +- src/render/psp/SDL_render_psp.c | 2 +- src/render/software/SDL_blendfillrect.c | 2 +- src/render/software/SDL_blendfillrect.h | 2 +- src/render/software/SDL_blendline.c | 2 +- src/render/software/SDL_blendline.h | 2 +- src/render/software/SDL_blendpoint.c | 2 +- src/render/software/SDL_blendpoint.h | 2 +- src/render/software/SDL_draw.h | 2 +- src/render/software/SDL_drawline.c | 2 +- src/render/software/SDL_drawline.h | 2 +- src/render/software/SDL_drawpoint.c | 2 +- src/render/software/SDL_drawpoint.h | 2 +- src/render/software/SDL_render_sw.c | 2 +- src/render/software/SDL_render_sw_c.h | 2 +- src/stdlib/SDL_getenv.c | 2 +- src/stdlib/SDL_iconv.c | 2 +- src/stdlib/SDL_malloc.c | 2 +- src/stdlib/SDL_stdlib.c | 2 +- src/stdlib/SDL_string.c | 2 +- src/test/SDL_test_assert.c | 2 +- src/test/SDL_test_common.c | 2 +- src/test/SDL_test_compare.c | 2 +- src/test/SDL_test_crc32.c | 2 +- src/test/SDL_test_font.c | 2 +- src/test/SDL_test_fuzzer.c | 2 +- src/test/SDL_test_harness.c | 2 +- src/test/SDL_test_imageBlit.c | 2 +- src/test/SDL_test_imageBlitBlend.c | 2 +- src/test/SDL_test_imageFace.c | 2 +- src/test/SDL_test_imagePrimitives.c | 2 +- src/test/SDL_test_imagePrimitivesBlend.c | 2 +- src/test/SDL_test_log.c | 2 +- src/test/SDL_test_md5.c | 2 +- src/test/SDL_test_random.c | 2 +- src/thread/SDL_systhread.h | 2 +- src/thread/SDL_thread.c | 2 +- src/thread/SDL_thread_c.h | 2 +- src/thread/generic/SDL_syscond.c | 2 +- src/thread/generic/SDL_sysmutex.c | 2 +- src/thread/generic/SDL_sysmutex_c.h | 2 +- src/thread/generic/SDL_syssem.c | 2 +- src/thread/generic/SDL_systhread.c | 2 +- src/thread/generic/SDL_systhread_c.h | 2 +- src/thread/generic/SDL_systls.c | 2 +- src/thread/psp/SDL_syscond.c | 2 +- src/thread/psp/SDL_sysmutex.c | 2 +- src/thread/psp/SDL_sysmutex_c.h | 2 +- src/thread/psp/SDL_syssem.c | 2 +- src/thread/psp/SDL_systhread.c | 2 +- src/thread/psp/SDL_systhread_c.h | 2 +- src/thread/pthread/SDL_syscond.c | 2 +- src/thread/pthread/SDL_sysmutex.c | 2 +- src/thread/pthread/SDL_sysmutex_c.h | 2 +- src/thread/pthread/SDL_syssem.c | 2 +- src/thread/pthread/SDL_systhread.c | 2 +- src/thread/pthread/SDL_systhread_c.h | 2 +- src/thread/pthread/SDL_systls.c | 2 +- src/thread/windows/SDL_sysmutex.c | 2 +- src/thread/windows/SDL_syssem.c | 2 +- src/thread/windows/SDL_systhread.c | 2 +- src/thread/windows/SDL_systhread_c.h | 2 +- src/thread/windows/SDL_systls.c | 2 +- src/timer/SDL_timer.c | 2 +- src/timer/SDL_timer_c.h | 2 +- src/timer/dummy/SDL_systimer.c | 2 +- src/timer/haiku/SDL_systimer.c | 2 +- src/timer/psp/SDL_systimer.c | 2 +- src/timer/unix/SDL_systimer.c | 2 +- src/timer/windows/SDL_systimer.c | 2 +- src/video/SDL_RLEaccel.c | 2 +- src/video/SDL_RLEaccel_c.h | 2 +- src/video/SDL_blit.c | 2 +- src/video/SDL_blit.h | 2 +- src/video/SDL_blit_0.c | 2 +- src/video/SDL_blit_1.c | 2 +- src/video/SDL_blit_A.c | 2 +- src/video/SDL_blit_N.c | 2 +- src/video/SDL_blit_auto.c | 2 +- src/video/SDL_blit_auto.h | 2 +- src/video/SDL_blit_copy.c | 2 +- src/video/SDL_blit_copy.h | 2 +- src/video/SDL_blit_slow.c | 2 +- src/video/SDL_blit_slow.h | 2 +- src/video/SDL_bmp.c | 2 +- src/video/SDL_clipboard.c | 2 +- src/video/SDL_egl.c | 2 +- src/video/SDL_egl_c.h | 2 +- src/video/SDL_fillrect.c | 2 +- src/video/SDL_pixels.c | 2 +- src/video/SDL_pixels_c.h | 2 +- src/video/SDL_rect.c | 2 +- src/video/SDL_rect_c.h | 2 +- src/video/SDL_shape.c | 2 +- src/video/SDL_shape_internals.h | 2 +- src/video/SDL_stretch.c | 2 +- src/video/SDL_surface.c | 2 +- src/video/SDL_sysvideo.h | 2 +- src/video/SDL_video.c | 2 +- src/video/android/SDL_androidclipboard.c | 2 +- src/video/android/SDL_androidclipboard.h | 2 +- src/video/android/SDL_androidevents.c | 2 +- src/video/android/SDL_androidevents.h | 2 +- src/video/android/SDL_androidgl.c | 2 +- src/video/android/SDL_androidkeyboard.c | 2 +- src/video/android/SDL_androidkeyboard.h | 2 +- src/video/android/SDL_androidtouch.c | 2 +- src/video/android/SDL_androidtouch.h | 2 +- src/video/android/SDL_androidvideo.c | 2 +- src/video/android/SDL_androidvideo.h | 2 +- src/video/android/SDL_androidwindow.c | 2 +- src/video/android/SDL_androidwindow.h | 2 +- src/video/cocoa/SDL_cocoaclipboard.h | 2 +- src/video/cocoa/SDL_cocoaclipboard.m | 2 +- src/video/cocoa/SDL_cocoaevents.h | 2 +- src/video/cocoa/SDL_cocoaevents.m | 2 +- src/video/cocoa/SDL_cocoakeyboard.h | 2 +- src/video/cocoa/SDL_cocoakeyboard.m | 2 +- src/video/cocoa/SDL_cocoamessagebox.h | 2 +- src/video/cocoa/SDL_cocoamessagebox.m | 2 +- src/video/cocoa/SDL_cocoamodes.h | 2 +- src/video/cocoa/SDL_cocoamodes.m | 2 +- src/video/cocoa/SDL_cocoamouse.h | 2 +- src/video/cocoa/SDL_cocoamouse.m | 2 +- src/video/cocoa/SDL_cocoamousetap.h | 2 +- src/video/cocoa/SDL_cocoamousetap.m | 2 +- src/video/cocoa/SDL_cocoaopengl.h | 2 +- src/video/cocoa/SDL_cocoaopengl.m | 2 +- src/video/cocoa/SDL_cocoashape.h | 2 +- src/video/cocoa/SDL_cocoashape.m | 2 +- src/video/cocoa/SDL_cocoavideo.h | 2 +- src/video/cocoa/SDL_cocoavideo.m | 2 +- src/video/cocoa/SDL_cocoawindow.h | 2 +- src/video/cocoa/SDL_cocoawindow.m | 2 +- src/video/directfb/SDL_DirectFB_WM.c | 2 +- src/video/directfb/SDL_DirectFB_WM.h | 2 +- src/video/directfb/SDL_DirectFB_dyn.c | 2 +- src/video/directfb/SDL_DirectFB_dyn.h | 2 +- src/video/directfb/SDL_DirectFB_events.c | 2 +- src/video/directfb/SDL_DirectFB_events.h | 2 +- src/video/directfb/SDL_DirectFB_modes.c | 2 +- src/video/directfb/SDL_DirectFB_modes.h | 2 +- src/video/directfb/SDL_DirectFB_mouse.c | 2 +- src/video/directfb/SDL_DirectFB_mouse.h | 2 +- src/video/directfb/SDL_DirectFB_opengl.c | 2 +- src/video/directfb/SDL_DirectFB_opengl.h | 2 +- src/video/directfb/SDL_DirectFB_render.c | 2 +- src/video/directfb/SDL_DirectFB_render.h | 2 +- src/video/directfb/SDL_DirectFB_shape.c | 2 +- src/video/directfb/SDL_DirectFB_shape.h | 2 +- src/video/directfb/SDL_DirectFB_video.c | 2 +- src/video/directfb/SDL_DirectFB_video.h | 2 +- src/video/directfb/SDL_DirectFB_window.c | 2 +- src/video/directfb/SDL_DirectFB_window.h | 2 +- src/video/dummy/SDL_nullevents.c | 2 +- src/video/dummy/SDL_nullevents_c.h | 2 +- src/video/dummy/SDL_nullframebuffer.c | 2 +- src/video/dummy/SDL_nullframebuffer_c.h | 2 +- src/video/dummy/SDL_nullvideo.c | 2 +- src/video/dummy/SDL_nullvideo.h | 2 +- src/video/haiku/SDL_BWin.h | 2 +- src/video/haiku/SDL_bclipboard.cc | 2 +- src/video/haiku/SDL_bclipboard.h | 2 +- src/video/haiku/SDL_bevents.cc | 2 +- src/video/haiku/SDL_bevents.h | 2 +- src/video/haiku/SDL_bframebuffer.cc | 2 +- src/video/haiku/SDL_bframebuffer.h | 2 +- src/video/haiku/SDL_bkeyboard.cc | 2 +- src/video/haiku/SDL_bkeyboard.h | 2 +- src/video/haiku/SDL_bmodes.cc | 2 +- src/video/haiku/SDL_bmodes.h | 2 +- src/video/haiku/SDL_bopengl.cc | 2 +- src/video/haiku/SDL_bopengl.h | 2 +- src/video/haiku/SDL_bvideo.cc | 2 +- src/video/haiku/SDL_bvideo.h | 2 +- src/video/haiku/SDL_bwindow.cc | 2 +- src/video/haiku/SDL_bwindow.h | 2 +- src/video/pandora/SDL_pandora.c | 2 +- src/video/pandora/SDL_pandora.h | 2 +- src/video/pandora/SDL_pandora_events.c | 2 +- src/video/pandora/SDL_pandora_events.h | 2 +- src/video/psp/SDL_pspevents.c | 2 +- src/video/psp/SDL_pspevents_c.h | 2 +- src/video/psp/SDL_pspgl.c | 2 +- src/video/psp/SDL_pspgl_c.h | 2 +- src/video/psp/SDL_pspmouse.c | 2 +- src/video/psp/SDL_pspmouse_c.h | 2 +- src/video/psp/SDL_pspvideo.c | 2 +- src/video/psp/SDL_pspvideo.h | 2 +- src/video/raspberry/SDL_rpievents.c | 2 +- src/video/raspberry/SDL_rpievents_c.h | 2 +- src/video/raspberry/SDL_rpimouse.c | 2 +- src/video/raspberry/SDL_rpimouse.h | 2 +- src/video/raspberry/SDL_rpiopengles.c | 2 +- src/video/raspberry/SDL_rpiopengles.h | 2 +- src/video/raspberry/SDL_rpivideo.c | 2 +- src/video/raspberry/SDL_rpivideo.h | 2 +- src/video/sdlgenblit.pl | 2 +- src/video/uikit/SDL_uikitappdelegate.h | 2 +- src/video/uikit/SDL_uikitappdelegate.m | 2 +- src/video/uikit/SDL_uikitevents.h | 2 +- src/video/uikit/SDL_uikitevents.m | 2 +- src/video/uikit/SDL_uikitmessagebox.h | 2 +- src/video/uikit/SDL_uikitmessagebox.m | 2 +- src/video/uikit/SDL_uikitmodes.h | 2 +- src/video/uikit/SDL_uikitmodes.m | 2 +- src/video/uikit/SDL_uikitopengles.h | 2 +- src/video/uikit/SDL_uikitopengles.m | 2 +- src/video/uikit/SDL_uikitopenglview.h | 2 +- src/video/uikit/SDL_uikitopenglview.m | 2 +- src/video/uikit/SDL_uikitvideo.h | 2 +- src/video/uikit/SDL_uikitvideo.m | 2 +- src/video/uikit/SDL_uikitview.h | 2 +- src/video/uikit/SDL_uikitview.m | 2 +- src/video/uikit/SDL_uikitviewcontroller.h | 2 +- src/video/uikit/SDL_uikitviewcontroller.m | 2 +- src/video/uikit/SDL_uikitwindow.h | 2 +- src/video/uikit/SDL_uikitwindow.m | 2 +- src/video/uikit/keyinfotable.h | 2 +- src/video/wayland/SDL_waylanddyn.c | 2 +- src/video/wayland/SDL_waylanddyn.h | 2 +- src/video/wayland/SDL_waylandevents.c | 2 +- src/video/wayland/SDL_waylandevents_c.h | 2 +- src/video/wayland/SDL_waylandmouse.c | 2 +- src/video/wayland/SDL_waylandmouse.h | 2 +- src/video/wayland/SDL_waylandopengles.c | 4 ++-- src/video/wayland/SDL_waylandopengles.h | 2 +- src/video/wayland/SDL_waylandsym.h | 4 ++-- src/video/wayland/SDL_waylandtouch.c | 2 +- src/video/wayland/SDL_waylandtouch.h | 2 +- src/video/wayland/SDL_waylandvideo.c | 2 +- src/video/wayland/SDL_waylandvideo.h | 2 +- src/video/wayland/SDL_waylandwindow.c | 2 +- src/video/wayland/SDL_waylandwindow.h | 2 +- src/video/windows/SDL_vkeys.h | 2 +- src/video/windows/SDL_windowsclipboard.c | 2 +- src/video/windows/SDL_windowsclipboard.h | 2 +- src/video/windows/SDL_windowsevents.c | 2 +- src/video/windows/SDL_windowsevents.h | 2 +- src/video/windows/SDL_windowsframebuffer.c | 2 +- src/video/windows/SDL_windowsframebuffer.h | 2 +- src/video/windows/SDL_windowskeyboard.c | 2 +- src/video/windows/SDL_windowskeyboard.h | 2 +- src/video/windows/SDL_windowsmessagebox.c | 2 +- src/video/windows/SDL_windowsmessagebox.h | 2 +- src/video/windows/SDL_windowsmodes.c | 2 +- src/video/windows/SDL_windowsmodes.h | 2 +- src/video/windows/SDL_windowsmouse.c | 2 +- src/video/windows/SDL_windowsmouse.h | 2 +- src/video/windows/SDL_windowsopengl.c | 2 +- src/video/windows/SDL_windowsopengl.h | 2 +- src/video/windows/SDL_windowsopengles.c | 2 +- src/video/windows/SDL_windowsopengles.h | 2 +- src/video/windows/SDL_windowsshape.c | 2 +- src/video/windows/SDL_windowsshape.h | 2 +- src/video/windows/SDL_windowsvideo.c | 2 +- src/video/windows/SDL_windowsvideo.h | 2 +- src/video/windows/SDL_windowswindow.c | 2 +- src/video/windows/SDL_windowswindow.h | 2 +- src/video/x11/SDL_x11clipboard.c | 2 +- src/video/x11/SDL_x11clipboard.h | 2 +- src/video/x11/SDL_x11dyn.c | 2 +- src/video/x11/SDL_x11dyn.h | 2 +- src/video/x11/SDL_x11events.c | 2 +- src/video/x11/SDL_x11events.h | 2 +- src/video/x11/SDL_x11framebuffer.c | 2 +- src/video/x11/SDL_x11framebuffer.h | 2 +- src/video/x11/SDL_x11keyboard.c | 2 +- src/video/x11/SDL_x11keyboard.h | 2 +- src/video/x11/SDL_x11messagebox.c | 2 +- src/video/x11/SDL_x11messagebox.h | 2 +- src/video/x11/SDL_x11modes.c | 2 +- src/video/x11/SDL_x11modes.h | 2 +- src/video/x11/SDL_x11mouse.c | 2 +- src/video/x11/SDL_x11mouse.h | 2 +- src/video/x11/SDL_x11opengl.c | 2 +- src/video/x11/SDL_x11opengl.h | 2 +- src/video/x11/SDL_x11opengles.c | 2 +- src/video/x11/SDL_x11opengles.h | 2 +- src/video/x11/SDL_x11shape.c | 2 +- src/video/x11/SDL_x11shape.h | 2 +- src/video/x11/SDL_x11sym.h | 2 +- src/video/x11/SDL_x11touch.c | 2 +- src/video/x11/SDL_x11touch.h | 2 +- src/video/x11/SDL_x11video.c | 2 +- src/video/x11/SDL_x11video.h | 2 +- src/video/x11/SDL_x11window.c | 2 +- src/video/x11/SDL_x11window.h | 2 +- src/video/x11/SDL_x11xinput2.c | 2 +- src/video/x11/SDL_x11xinput2.h | 2 +- test/checkkeys.c | 2 +- test/controllermap.c | 2 +- test/loopwave.c | 2 +- test/testatomic.c | 2 +- test/testaudioinfo.c | 2 +- test/testautomation.c | 2 +- test/testdraw2.c | 2 +- test/testdrawchessboard.c | 2 +- test/testdropfile.c | 2 +- test/testerror.c | 2 +- test/testfile.c | 2 +- test/testfilesystem.c | 2 +- test/testgamecontroller.c | 2 +- test/testgesture.c | 2 +- test/testgl2.c | 2 +- test/testgles.c | 2 +- test/testgles2.c | 2 +- test/testhaptic.c | 2 +- test/testiconv.c | 2 +- test/testime.c | 2 +- test/testintersections.c | 2 +- test/testjoystick.c | 2 +- test/testkeys.c | 2 +- test/testloadso.c | 2 +- test/testlock.c | 2 +- test/testmessage.c | 2 +- test/testmultiaudio.c | 2 +- test/testnative.c | 2 +- test/testnative.h | 2 +- test/testnativew32.c | 2 +- test/testnativex11.c | 2 +- test/testoverlay2.c | 2 +- test/testplatform.c | 2 +- test/testpower.c | 2 +- test/testrelative.c | 2 +- test/testrendercopyex.c | 2 +- test/testrendertarget.c | 2 +- test/testresample.c | 2 +- test/testrumble.c | 2 +- test/testscale.c | 2 +- test/testsem.c | 2 +- test/testshader.c | 2 +- test/testshape.c | 2 +- test/testsprite2.c | 2 +- test/testspriteminimal.c | 2 +- test/teststreaming.c | 2 +- test/testthread.c | 2 +- test/testtimer.c | 2 +- test/testver.c | 2 +- test/testviewport.c | 2 +- test/testwm2.c | 2 +- test/torturethread.c | 2 +- 662 files changed, 733 insertions(+), 733 deletions(-) diff --git a/COPYING.txt b/COPYING.txt index 391424f799..e0d7cc4379 100644 --- a/COPYING.txt +++ b/COPYING.txt @@ -1,6 +1,6 @@ Simple DirectMedia Layer -Copyright (C) 1997-2013 Sam Lantinga +Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/Xcode/SDL/pkg-support/resources/License.txt b/Xcode/SDL/pkg-support/resources/License.txt index 18f109c3f7..4b6f777e65 100644 --- a/Xcode/SDL/pkg-support/resources/License.txt +++ b/Xcode/SDL/pkg-support/resources/License.txt @@ -1,6 +1,6 @@ Simple DirectMedia Layer -Copyright (C) 1997-2013 Sam Lantinga +Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/debian/copyright b/debian/copyright index a53d19be09..53254644b2 100644 --- a/debian/copyright +++ b/debian/copyright @@ -4,7 +4,7 @@ Upstream-Contact: Sam Lantinga Source: http://www.libsdl.org/ Files: * -Copyright: 1997-2012 Sam Lantinga +Copyright: 1997-2014 Sam Lantinga License: zlib/libpng Files: src/libm/* @@ -36,7 +36,7 @@ Copyright: 1998 Gareth McCaughan License: Gareth_McCaughan Files: src/test/SDL_test_md5.c -Copyright: 1997-2012 Sam Lantinga +Copyright: 1997-2014 Sam Lantinga 1990 RSA Data Security, Inc. License: zlib/libpng and RSA_Data_Security @@ -50,12 +50,12 @@ Copyright: 1994-2003 The XFree86 Project, Inc. License: MIT/X11 Files: test/testhaptic.c -Copyright: 1997-2011 Sam Lantinga +Copyright: 1997-2014 Sam Lantinga 2008 Edgar Simo Serra License: BSD_3_clause Files: test/testrumble.c -Copyright: 1997-2011 Sam Lantinga +Copyright: 1997-2014 Sam Lantinga 2011 Edgar Simo Serra License: BSD_3_clause @@ -173,7 +173,7 @@ License: BSD_3_clause (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Comment: - Copyright (C) 1997-2011 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga . This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL.h b/include/SDL.h index c0c067ca58..a9077095fe 100644 --- a/include/SDL.h +++ b/include/SDL.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_assert.h b/include/SDL_assert.h index 4329434064..e67dca92d9 100644 --- a/include/SDL_assert.h +++ b/include/SDL_assert.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_atomic.h b/include/SDL_atomic.h index 43ba7543b6..bb3a9b657d 100644 --- a/include/SDL_atomic.h +++ b/include/SDL_atomic.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_audio.h b/include/SDL_audio.h index b9da236fc5..4c987d5110 100644 --- a/include/SDL_audio.h +++ b/include/SDL_audio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_bits.h b/include/SDL_bits.h index b1ed20bf72..341524fd9f 100644 --- a/include/SDL_bits.h +++ b/include/SDL_bits.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_blendmode.h b/include/SDL_blendmode.h index 85aa474595..8c257be9c0 100644 --- a/include/SDL_blendmode.h +++ b/include/SDL_blendmode.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_clipboard.h b/include/SDL_clipboard.h index 1f5742d167..74e2b32fe7 100644 --- a/include/SDL_clipboard.h +++ b/include/SDL_clipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config.h b/include/SDL_config.h index 4d74bab7aa..d46573ba4a 100644 --- a/include/SDL_config.h +++ b/include/SDL_config.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index e4f9f99fbb..e21afbde21 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index eb7b4b9696..5cfeb75df0 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_android.h b/include/SDL_config_android.h index d9bd9d1c1f..738dd94cca 100644 --- a/include/SDL_config_android.h +++ b/include/SDL_config_android.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_iphoneos.h b/include/SDL_config_iphoneos.h index 348df13c28..a0f55b6a7e 100644 --- a/include/SDL_config_iphoneos.h +++ b/include/SDL_config_iphoneos.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h index 1db36464aa..e627aef268 100644 --- a/include/SDL_config_macosx.h +++ b/include/SDL_config_macosx.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_minimal.h b/include/SDL_config_minimal.h index 3248bdda13..1bddafea76 100644 --- a/include/SDL_config_minimal.h +++ b/include/SDL_config_minimal.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_pandora.h b/include/SDL_config_pandora.h index 4a95de78b2..ac8b08508c 100644 --- a/include/SDL_config_pandora.h +++ b/include/SDL_config_pandora.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_psp.h b/include/SDL_config_psp.h index ca7cac603a..2f9d023c5e 100644 --- a/include/SDL_config_psp.h +++ b/include/SDL_config_psp.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_windows.h b/include/SDL_config_windows.h index 167e26a670..0be3260e7d 100644 --- a/include/SDL_config_windows.h +++ b/include/SDL_config_windows.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_config_wiz.h b/include/SDL_config_wiz.h index acfe4fcfd3..7efc20bc96 100644 --- a/include/SDL_config_wiz.h +++ b/include/SDL_config_wiz.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_copying.h b/include/SDL_copying.h index 3a8fb758a1..0964da84f4 100644 --- a/include/SDL_copying.h +++ b/include/SDL_copying.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_cpuinfo.h b/include/SDL_cpuinfo.h index 96099a2130..b8eb278554 100644 --- a/include/SDL_cpuinfo.h +++ b/include/SDL_cpuinfo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_egl.h b/include/SDL_egl.h index fc8fde4a65..bda7c5046a 100644 --- a/include/SDL_egl.h +++ b/include/SDL_egl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -1386,4 +1386,4 @@ extern "C" { -#endif /* _MSC_VER */ \ No newline at end of file +#endif /* _MSC_VER */ diff --git a/include/SDL_endian.h b/include/SDL_endian.h index 3450316c0a..161c418de9 100644 --- a/include/SDL_endian.h +++ b/include/SDL_endian.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_error.h b/include/SDL_error.h index 2b8bb4165f..5776cfa260 100644 --- a/include/SDL_error.h +++ b/include/SDL_error.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_events.h b/include/SDL_events.h index 81ff4dd564..9be48c3a57 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_filesystem.h b/include/SDL_filesystem.h index ea8a1b56f9..de3e227d42 100644 --- a/include/SDL_filesystem.h +++ b/include/SDL_filesystem.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_gamecontroller.h b/include/SDL_gamecontroller.h index 891f356335..b00ad713d1 100644 --- a/include/SDL_gamecontroller.h +++ b/include/SDL_gamecontroller.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_gesture.h b/include/SDL_gesture.h index 015fe02090..dbc1692423 100644 --- a/include/SDL_gesture.h +++ b/include/SDL_gesture.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_haptic.h b/include/SDL_haptic.h index a029eb9969..234975abe3 100644 --- a/include/SDL_haptic.h +++ b/include/SDL_haptic.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_hints.h b/include/SDL_hints.h index ab65c2ade6..0c0f88f69e 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_joystick.h b/include/SDL_joystick.h index a2843bae21..b0b1c6673f 100644 --- a/include/SDL_joystick.h +++ b/include/SDL_joystick.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_keyboard.h b/include/SDL_keyboard.h index e10f9fd15a..586a26cff2 100644 --- a/include/SDL_keyboard.h +++ b/include/SDL_keyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_keycode.h b/include/SDL_keycode.h index de584e126b..d5f5dd0aef 100644 --- a/include/SDL_keycode.h +++ b/include/SDL_keycode.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_loadso.h b/include/SDL_loadso.h index 790d0a724c..0359eae17d 100644 --- a/include/SDL_loadso.h +++ b/include/SDL_loadso.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_log.h b/include/SDL_log.h index 79ae4cde43..5c2bca5932 100644 --- a/include/SDL_log.h +++ b/include/SDL_log.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_main.h b/include/SDL_main.h index da80a780b6..1f2bad3fbd 100644 --- a/include/SDL_main.h +++ b/include/SDL_main.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_messagebox.h b/include/SDL_messagebox.h index cb1a1ccff0..6004da0f5f 100644 --- a/include/SDL_messagebox.h +++ b/include/SDL_messagebox.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_mouse.h b/include/SDL_mouse.h index 36c29e90a7..ebfd18fa74 100644 --- a/include/SDL_mouse.h +++ b/include/SDL_mouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_mutex.h b/include/SDL_mutex.h index 2b5df0ec33..3e8b4dbed9 100644 --- a/include/SDL_mutex.h +++ b/include/SDL_mutex.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_opengl.h b/include/SDL_opengl.h index 2f120aa95a..b48ea7abe9 100644 --- a/include/SDL_opengl.h +++ b/include/SDL_opengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_opengles.h b/include/SDL_opengles.h index 00e60f5c17..d88e1573f9 100644 --- a/include/SDL_opengles.h +++ b/include/SDL_opengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_opengles2.h b/include/SDL_opengles2.h index f51cfc23f0..2c05479231 100644 --- a/include/SDL_opengles2.h +++ b/include/SDL_opengles2.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -2787,4 +2787,4 @@ typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); #ifndef APIENTRY #define APIENTRY GL_APIENTRY -#endif \ No newline at end of file +#endif diff --git a/include/SDL_pixels.h b/include/SDL_pixels.h index 99fcd9aac1..5abf92a85d 100644 --- a/include/SDL_pixels.h +++ b/include/SDL_pixels.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_platform.h b/include/SDL_platform.h index 7e56c45b84..5856e168e1 100644 --- a/include/SDL_platform.h +++ b/include/SDL_platform.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_power.h b/include/SDL_power.h index 4f70c5bb16..cf71c98249 100644 --- a/include/SDL_power.h +++ b/include/SDL_power.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_quit.h b/include/SDL_quit.h index 485e42db04..8a786445d1 100644 --- a/include/SDL_quit.h +++ b/include/SDL_quit.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_rect.h b/include/SDL_rect.h index 7132e1b440..0a95a33449 100644 --- a/include/SDL_rect.h +++ b/include/SDL_rect.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_render.h b/include/SDL_render.h index 94bf1e6a7d..77f706a9b2 100644 --- a/include/SDL_render.h +++ b/include/SDL_render.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_rwops.h b/include/SDL_rwops.h index d257442382..4bdd7876a3 100644 --- a/include/SDL_rwops.h +++ b/include/SDL_rwops.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_scancode.h b/include/SDL_scancode.h index 00b47a3b80..4b3be28fb4 100644 --- a/include/SDL_scancode.h +++ b/include/SDL_scancode.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_shape.h b/include/SDL_shape.h index 63f850c942..53029306e3 100644 --- a/include/SDL_shape.h +++ b/include/SDL_shape.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_stdinc.h b/include/SDL_stdinc.h index 2a21714940..6de724e9a1 100644 --- a/include/SDL_stdinc.h +++ b/include/SDL_stdinc.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_surface.h b/include/SDL_surface.h index e18153a694..aa8d821741 100644 --- a/include/SDL_surface.h +++ b/include/SDL_surface.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_system.h b/include/SDL_system.h index 9af2a4c2ce..7913ddf19c 100644 --- a/include/SDL_system.h +++ b/include/SDL_system.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index c83330bad2..ff4d47e853 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test.h b/include/SDL_test.h index 7e0de08948..ae649a420f 100644 --- a/include/SDL_test.h +++ b/include/SDL_test.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_assert.h b/include/SDL_test_assert.h index beba16f5ed..79c84d6064 100644 --- a/include/SDL_test_assert.h +++ b/include/SDL_test_assert.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_common.h b/include/SDL_test_common.h index 5f67aa650c..45c9edafd2 100644 --- a/include/SDL_test_common.h +++ b/include/SDL_test_common.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_compare.h b/include/SDL_test_compare.h index 98ca8ce81e..f1353a8d25 100644 --- a/include/SDL_test_compare.h +++ b/include/SDL_test_compare.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_crc32.h b/include/SDL_test_crc32.h index f0a84a48c2..a180fe3bbc 100644 --- a/include/SDL_test_crc32.h +++ b/include/SDL_test_crc32.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_font.h b/include/SDL_test_font.h index aa9286b4aa..dd19f07826 100644 --- a/include/SDL_test_font.h +++ b/include/SDL_test_font.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_fuzzer.h b/include/SDL_test_fuzzer.h index a528ddc5e2..640180397c 100644 --- a/include/SDL_test_fuzzer.h +++ b/include/SDL_test_fuzzer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_harness.h b/include/SDL_test_harness.h index 935038e904..2c1e2ade84 100644 --- a/include/SDL_test_harness.h +++ b/include/SDL_test_harness.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_images.h b/include/SDL_test_images.h index 21cf39ff7f..0562799618 100644 --- a/include/SDL_test_images.h +++ b/include/SDL_test_images.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_log.h b/include/SDL_test_log.h index a581d2e754..76ce105835 100644 --- a/include/SDL_test_log.h +++ b/include/SDL_test_log.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_md5.h b/include/SDL_test_md5.h index b0d4b7b041..029e164bf8 100644 --- a/include/SDL_test_md5.h +++ b/include/SDL_test_md5.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_test_random.h b/include/SDL_test_random.h index ce6192c257..6c5660d80d 100644 --- a/include/SDL_test_random.h +++ b/include/SDL_test_random.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_thread.h b/include/SDL_thread.h index 8f50f6e50d..4e48cc34c1 100644 --- a/include/SDL_thread.h +++ b/include/SDL_thread.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_timer.h b/include/SDL_timer.h index 28ab415b40..a48e0466e1 100644 --- a/include/SDL_timer.h +++ b/include/SDL_timer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_touch.h b/include/SDL_touch.h index 9e6d7c65fb..017deb28b8 100644 --- a/include/SDL_touch.h +++ b/include/SDL_touch.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_types.h b/include/SDL_types.h index bb485cdb0e..cd3ba33cd3 100644 --- a/include/SDL_types.h +++ b/include/SDL_types.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_version.h b/include/SDL_version.h index dc52c85c0a..66acca99c5 100644 --- a/include/SDL_version.h +++ b/include/SDL_version.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/SDL_video.h b/include/SDL_video.h index 414d26aa24..49ea37ad00 100644 --- a/include/SDL_video.h +++ b/include/SDL_video.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/begin_code.h b/include/begin_code.h index 968a540a4d..fbed7d4a57 100644 --- a/include/begin_code.h +++ b/include/begin_code.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/include/close_code.h b/include/close_code.h index 4901482d5c..9826f14786 100644 --- a/include/close_code.h +++ b/include/close_code.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/Linux/SDL_config_premake.h b/premake/Linux/SDL_config_premake.h index a611c2bb1c..f76594a98e 100644 --- a/premake/Linux/SDL_config_premake.h +++ b/premake/Linux/SDL_config_premake.h @@ -1,7 +1,7 @@ /* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/MinGW/SDL_config_premake.h b/premake/MinGW/SDL_config_premake.h index 86bc2502b5..6df215856a 100644 --- a/premake/MinGW/SDL_config_premake.h +++ b/premake/MinGW/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/VisualC/VS2008/SDL_config_premake.h b/premake/VisualC/VS2008/SDL_config_premake.h index 005c9ac60f..d570b015f4 100644 --- a/premake/VisualC/VS2008/SDL_config_premake.h +++ b/premake/VisualC/VS2008/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/VisualC/VS2010/SDL_config_premake.h b/premake/VisualC/VS2010/SDL_config_premake.h index 005c9ac60f..d570b015f4 100644 --- a/premake/VisualC/VS2010/SDL_config_premake.h +++ b/premake/VisualC/VS2010/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/VisualC/VS2012/SDL_config_premake.h b/premake/VisualC/VS2012/SDL_config_premake.h index 005c9ac60f..d570b015f4 100644 --- a/premake/VisualC/VS2012/SDL_config_premake.h +++ b/premake/VisualC/VS2012/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/Xcode-iOS/SDL_config_premake.h b/premake/Xcode-iOS/SDL_config_premake.h index e885661fd8..e0a8641733 100644 --- a/premake/Xcode-iOS/SDL_config_premake.h +++ b/premake/Xcode-iOS/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/Xcode/Xcode3/SDL_config_premake.h b/premake/Xcode/Xcode3/SDL_config_premake.h index 77dc90eb36..e48e8797d1 100644 --- a/premake/Xcode/Xcode3/SDL_config_premake.h +++ b/premake/Xcode/Xcode3/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/Xcode/Xcode4/SDL_config_premake.h b/premake/Xcode/Xcode4/SDL_config_premake.h index 77dc90eb36..e48e8797d1 100644 --- a/premake/Xcode/Xcode4/SDL_config_premake.h +++ b/premake/Xcode/Xcode4/SDL_config_premake.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/config/SDL_config_cygwin.template.h b/premake/config/SDL_config_cygwin.template.h index 9e3f9099d1..46d6f36b61 100644 --- a/premake/config/SDL_config_cygwin.template.h +++ b/premake/config/SDL_config_cygwin.template.h @@ -1,7 +1,7 @@ /* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/config/SDL_config_iphoneos.template.h b/premake/config/SDL_config_iphoneos.template.h index 7aa74bdc99..227c376838 100644 --- a/premake/config/SDL_config_iphoneos.template.h +++ b/premake/config/SDL_config_iphoneos.template.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/config/SDL_config_linux.template.h b/premake/config/SDL_config_linux.template.h index 0e2477912a..7560a880ba 100644 --- a/premake/config/SDL_config_linux.template.h +++ b/premake/config/SDL_config_linux.template.h @@ -1,7 +1,7 @@ /* include/SDL_config.h. Generated from SDL_config.h.in by configure. */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/config/SDL_config_macosx.template.h b/premake/config/SDL_config_macosx.template.h index c53440a4ed..9264681f75 100644 --- a/premake/config/SDL_config_macosx.template.h +++ b/premake/config/SDL_config_macosx.template.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/config/SDL_config_minimal.template.h b/premake/config/SDL_config_minimal.template.h index fe3cebc7ed..d7c62db2a5 100644 --- a/premake/config/SDL_config_minimal.template.h +++ b/premake/config/SDL_config_minimal.template.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/config/SDL_config_windows.template.h b/premake/config/SDL_config_windows.template.h index 04c0b48e6b..5872690985 100644 --- a/premake/config/SDL_config_windows.template.h +++ b/premake/config/SDL_config_windows.template.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/premake/premake4.lua b/premake/premake4.lua index 9fedcdc181..1ebbaf5d23 100755 --- a/premake/premake4.lua +++ b/premake/premake4.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -479,4 +479,4 @@ if _OPTIONS["help"] == nil then -- generation is over, now execute the generated file, setup the premake -- solution, and let premake execute the action and generate the project files dofile(genFile) -end -- end check for not being in help mode \ No newline at end of file +end -- end check for not being in help mode diff --git a/premake/projects/SDL2.lua b/premake/projects/SDL2.lua index e5a4aa0811..f2031c3917 100755 --- a/premake/projects/SDL2.lua +++ b/premake/projects/SDL2.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -402,4 +402,4 @@ SDL_project "SDL2" "$(SDKROOT)/UIKit.framework", "$(SDKROOT)/Foundation.framework", "$(SDKROOT)/CoreAudio.framework" - } \ No newline at end of file + } diff --git a/premake/projects/SDL2main.lua b/premake/projects/SDL2main.lua index f5c556f1c1..5cc59d4d54 100755 --- a/premake/projects/SDL2main.lua +++ b/premake/projects/SDL2main.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -28,4 +28,4 @@ SDL_project "SDL2main" SDL_paths { "/main/windows/" } SDL_dependency "macosx or ios" SDL_os "macosx|ios|cygwin" - SDL_paths { "/main/dummy/" } \ No newline at end of file + SDL_paths { "/main/dummy/" } diff --git a/premake/projects/SDL2test.lua b/premake/projects/SDL2test.lua index f2d9c2b56b..2b9c652afe 100755 --- a/premake/projects/SDL2test.lua +++ b/premake/projects/SDL2test.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "SDL2test" SDL_language "C" SDL_sourcedir "../src" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_paths { "/test/" } \ No newline at end of file + SDL_paths { "/test/" } diff --git a/premake/projects/accelerometer.lua b/premake/projects/accelerometer.lua index bef7942c61..93cffb5cae 100755 --- a/premake/projects/accelerometer.lua +++ b/premake/projects/accelerometer.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "accelerometer" SDL_sourcedir "../Xcode-iOS/Demos" SDL_projectLocation "Demos" SDL_projectDependencies { "SDL2" } - SDL_files { "/src/common.*", "/src/accelerometer.*", "/Info.plist", "/data/ship.bmp", "/data/space.bmp" } \ No newline at end of file + SDL_files { "/src/common.*", "/src/accelerometer.*", "/Info.plist", "/data/ship.bmp", "/data/space.bmp" } diff --git a/premake/projects/checkkeys.lua b/premake/projects/checkkeys.lua index a2740ed2c3..7907c5e349 100755 --- a/premake/projects/checkkeys.lua +++ b/premake/projects/checkkeys.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "checkkeys" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/checkkeys.*" } \ No newline at end of file + SDL_files { "/checkkeys.*" } diff --git a/premake/projects/fireworks.lua b/premake/projects/fireworks.lua index 68dc0ce537..d5a69a1ffd 100755 --- a/premake/projects/fireworks.lua +++ b/premake/projects/fireworks.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "fireworks" SDL_sourcedir "../Xcode-iOS/Demos" SDL_projectLocation "Demos" SDL_projectDependencies { "SDL2" } - SDL_files { "/src/common.*", "/src/fireworks.*", "/Info.plist", "/data/stroke.bmp" } \ No newline at end of file + SDL_files { "/src/common.*", "/src/fireworks.*", "/Info.plist", "/data/stroke.bmp" } diff --git a/premake/projects/happy.lua b/premake/projects/happy.lua index ca9bc319ae..b6104c6461 100755 --- a/premake/projects/happy.lua +++ b/premake/projects/happy.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "happy" SDL_sourcedir "../Xcode-iOS/Demos" SDL_projectLocation "Demos" SDL_projectDependencies { "SDL2" } - SDL_files { "/src/common.*", "/src/happy.*", "/Info.plist", "/data/icon.bmp" } \ No newline at end of file + SDL_files { "/src/common.*", "/src/happy.*", "/Info.plist", "/data/icon.bmp" } diff --git a/premake/projects/keyboard.lua b/premake/projects/keyboard.lua index 4dc6ba8270..88f7567be6 100755 --- a/premake/projects/keyboard.lua +++ b/premake/projects/keyboard.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "keyboard" SDL_sourcedir "../Xcode-iOS/Demos" SDL_projectLocation "Demos" SDL_projectDependencies { "SDL2" } - SDL_files { "/src/common.*", "/src/keyboard.*", "/Info.plist", "/data/bitmapfont/kromasky_16x16.bmp" } \ No newline at end of file + SDL_files { "/src/common.*", "/src/keyboard.*", "/Info.plist", "/data/bitmapfont/kromasky_16x16.bmp" } diff --git a/premake/projects/loopwave.lua b/premake/projects/loopwave.lua index 1ca1f2da07..d267ed9e55 100755 --- a/premake/projects/loopwave.lua +++ b/premake/projects/loopwave.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "loopwave" -- a list of items to copy from the sourcedir to the destination SDL_copy { "sample.wav" } SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/loopwave.*" } \ No newline at end of file + SDL_files { "/loopwave.*" } diff --git a/premake/projects/mixer.lua b/premake/projects/mixer.lua index cb146a5e69..9a8fd02c7f 100755 --- a/premake/projects/mixer.lua +++ b/premake/projects/mixer.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "mixer" SDL_projectDependencies { "SDL2" } SDL_files { "/src/common.*", "/src/mixer.*", "/Info.plist", "/data/drums/ds_kick_big_amb.wav", "/data/drums/ds_brush_snare.wav", - "/data/drums/ds_loose_skin_mute.wav", "/data/drums/ds_china.wav" } \ No newline at end of file + "/data/drums/ds_loose_skin_mute.wav", "/data/drums/ds_china.wav" } diff --git a/premake/projects/rectangles.lua b/premake/projects/rectangles.lua index 200ee4bd61..aa46ff4c50 100755 --- a/premake/projects/rectangles.lua +++ b/premake/projects/rectangles.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "rectangles" SDL_sourcedir "../Xcode-iOS/Demos" SDL_projectLocation "Demos" SDL_projectDependencies { "SDL2" } - SDL_files { "/src/common.*", "/src/rectangles.*", "/Info.plist", } \ No newline at end of file + SDL_files { "/src/common.*", "/src/rectangles.*", "/Info.plist", } diff --git a/premake/projects/testatomic.lua b/premake/projects/testatomic.lua index ac6bff99a8..816f46efa0 100755 --- a/premake/projects/testatomic.lua +++ b/premake/projects/testatomic.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testatomic" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testatomic.*" } \ No newline at end of file + SDL_files { "/testatomic.*" } diff --git a/premake/projects/testaudioinfo.lua b/premake/projects/testaudioinfo.lua index a0e8a66c6a..a43b126146 100755 --- a/premake/projects/testaudioinfo.lua +++ b/premake/projects/testaudioinfo.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testaudioinfo" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testaudioinfo.*" } \ No newline at end of file + SDL_files { "/testaudioinfo.*" } diff --git a/premake/projects/testautomation.lua b/premake/projects/testautomation.lua index b654f8a41e..de6c45b769 100755 --- a/premake/projects/testautomation.lua +++ b/premake/projects/testautomation.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testautomation" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testautomation*" } \ No newline at end of file + SDL_files { "/testautomation*" } diff --git a/premake/projects/testdraw2.lua b/premake/projects/testdraw2.lua index 51d66cb5e7..99f4cda48e 100755 --- a/premake/projects/testdraw2.lua +++ b/premake/projects/testdraw2.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testdraw2" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testdraw2.*" } \ No newline at end of file + SDL_files { "/testdraw2.*" } diff --git a/premake/projects/testdrawchessboard.lua b/premake/projects/testdrawchessboard.lua index d1f66aeb18..de9d78cb81 100755 --- a/premake/projects/testdrawchessboard.lua +++ b/premake/projects/testdrawchessboard.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testchessboard" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testdrawchessboard.*" } \ No newline at end of file + SDL_files { "/testdrawchessboard.*" } diff --git a/premake/projects/testerror.lua b/premake/projects/testerror.lua index 5d7e9aafb7..6e53f8b140 100755 --- a/premake/projects/testerror.lua +++ b/premake/projects/testerror.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testerror" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testerror.*" } \ No newline at end of file + SDL_files { "/testerror.*" } diff --git a/premake/projects/testfile.lua b/premake/projects/testfile.lua index d878140cb4..c791041aef 100755 --- a/premake/projects/testfile.lua +++ b/premake/projects/testfile.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testfile" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testfile.*" } \ No newline at end of file + SDL_files { "/testfile.*" } diff --git a/premake/projects/testfilesystem.lua b/premake/projects/testfilesystem.lua index 44b28a2b56..5128d52820 100755 --- a/premake/projects/testfilesystem.lua +++ b/premake/projects/testfilesystem.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testfilesystem" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testfilesystem.*" } \ No newline at end of file + SDL_files { "/testfilesystem.*" } diff --git a/premake/projects/testgamecontroller.lua b/premake/projects/testgamecontroller.lua index ae562591eb..53a9358b68 100755 --- a/premake/projects/testgamecontroller.lua +++ b/premake/projects/testgamecontroller.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testgamecontroller" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testgamecontroller.*" } \ No newline at end of file + SDL_files { "/testgamecontroller.*" } diff --git a/premake/projects/testgesture.lua b/premake/projects/testgesture.lua index aa2d2370ea..6c21668222 100755 --- a/premake/projects/testgesture.lua +++ b/premake/projects/testgesture.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testgesture" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testgesture.*" } \ No newline at end of file + SDL_files { "/testgesture.*" } diff --git a/premake/projects/testgl2.lua b/premake/projects/testgl2.lua index d8da8f0930..69e93336b0 100755 --- a/premake/projects/testgl2.lua +++ b/premake/projects/testgl2.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -31,4 +31,4 @@ SDL_project "testgl2" SDL_dependency "OpenGL" -- opengl is platform independent SDL_depfunc "OpenGL" - SDL_files { "/testgl2.*" } \ No newline at end of file + SDL_files { "/testgl2.*" } diff --git a/premake/projects/testgles.lua b/premake/projects/testgles.lua index cfae1daf2a..ea77c1f7d3 100755 --- a/premake/projects/testgles.lua +++ b/premake/projects/testgles.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testgles" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testgles.*" } \ No newline at end of file + SDL_files { "/testgles.*" } diff --git a/premake/projects/testhaptic.lua b/premake/projects/testhaptic.lua index 992ea7ecb4..70aeb3af06 100755 --- a/premake/projects/testhaptic.lua +++ b/premake/projects/testhaptic.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testhaptic" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testhaptic.*" } \ No newline at end of file + SDL_files { "/testhaptic.*" } diff --git a/premake/projects/testiconv.lua b/premake/projects/testiconv.lua index 89a5406cb3..db60ab751d 100755 --- a/premake/projects/testiconv.lua +++ b/premake/projects/testiconv.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -26,4 +26,4 @@ SDL_project "testiconv" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } SDL_files { "/testiconv.*" } - SDL_copy { "utf8.txt" } \ No newline at end of file + SDL_copy { "utf8.txt" } diff --git a/premake/projects/testime.lua b/premake/projects/testime.lua index 1584fbd663..6744d1d1c6 100755 --- a/premake/projects/testime.lua +++ b/premake/projects/testime.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testime" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testime.*" } \ No newline at end of file + SDL_files { "/testime.*" } diff --git a/premake/projects/testintersection.lua b/premake/projects/testintersection.lua index 73cf8e6c79..11cdfe1bf3 100755 --- a/premake/projects/testintersection.lua +++ b/premake/projects/testintersection.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testintersection" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testintersection.*" } \ No newline at end of file + SDL_files { "/testintersection.*" } diff --git a/premake/projects/testjoystick.lua b/premake/projects/testjoystick.lua index 7ce8f70acd..c4abcb0ebd 100755 --- a/premake/projects/testjoystick.lua +++ b/premake/projects/testjoystick.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testjoystick" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testjoystick.*" } \ No newline at end of file + SDL_files { "/testjoystick.*" } diff --git a/premake/projects/testkeys.lua b/premake/projects/testkeys.lua index d385d23bfa..d95b458d32 100755 --- a/premake/projects/testkeys.lua +++ b/premake/projects/testkeys.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testkeys" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testkeys.*" } \ No newline at end of file + SDL_files { "/testkeys.*" } diff --git a/premake/projects/testloadso.lua b/premake/projects/testloadso.lua index 5a761147a8..99621eea9a 100755 --- a/premake/projects/testloadso.lua +++ b/premake/projects/testloadso.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testloadso" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testloadso.*" } \ No newline at end of file + SDL_files { "/testloadso.*" } diff --git a/premake/projects/testlock.lua b/premake/projects/testlock.lua index 3db3c732dc..94ef0223e8 100755 --- a/premake/projects/testlock.lua +++ b/premake/projects/testlock.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testlock" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testlock.*" } \ No newline at end of file + SDL_files { "/testlock.*" } diff --git a/premake/projects/testmessage.lua b/premake/projects/testmessage.lua index 96c3e85a85..1c71bd6c36 100755 --- a/premake/projects/testmessage.lua +++ b/premake/projects/testmessage.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testmessage" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testmessage.*" } \ No newline at end of file + SDL_files { "/testmessage.*" } diff --git a/premake/projects/testmultiaudio.lua b/premake/projects/testmultiaudio.lua index 6b7ac0ac2e..cd761f9753 100755 --- a/premake/projects/testmultiaudio.lua +++ b/premake/projects/testmultiaudio.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -26,4 +26,4 @@ SDL_project "testmultiaudio" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } SDL_files { "/testmultiaudio.*" } - SDL_copy { "sample.wav" } \ No newline at end of file + SDL_copy { "sample.wav" } diff --git a/premake/projects/testnative.lua b/premake/projects/testnative.lua index 01f5dbb1e7..4354d38516 100755 --- a/premake/projects/testnative.lua +++ b/premake/projects/testnative.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -37,4 +37,4 @@ SDL_project "testnative" SDL_dependency "linux" SDL_os "linux" SDL_depfunc "X11" - SDL_files { "/testnativex11.*" } \ No newline at end of file + SDL_files { "/testnativex11.*" } diff --git a/premake/projects/testoverlay2.lua b/premake/projects/testoverlay2.lua index d2806b3e6b..4d4049af25 100755 --- a/premake/projects/testoverlay2.lua +++ b/premake/projects/testoverlay2.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "testoverlay2" -- a list of items to copy from the sourcedir to the destination SDL_copy { "moose.dat" } SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testoverlay2.*" } \ No newline at end of file + SDL_files { "/testoverlay2.*" } diff --git a/premake/projects/testplatform.lua b/premake/projects/testplatform.lua index ab9e886de9..3db191e899 100755 --- a/premake/projects/testplatform.lua +++ b/premake/projects/testplatform.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testplatform" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testplatform.*" } \ No newline at end of file + SDL_files { "/testplatform.*" } diff --git a/premake/projects/testpower.lua b/premake/projects/testpower.lua index 5be61e9dd0..cc993530d9 100755 --- a/premake/projects/testpower.lua +++ b/premake/projects/testpower.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testpower" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testpower.*" } \ No newline at end of file + SDL_files { "/testpower.*" } diff --git a/premake/projects/testrelative.lua b/premake/projects/testrelative.lua index f04c4c7d1b..69104d0667 100755 --- a/premake/projects/testrelative.lua +++ b/premake/projects/testrelative.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testrelative" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testrelative.*" } \ No newline at end of file + SDL_files { "/testrelative.*" } diff --git a/premake/projects/testrendercopyex.lua b/premake/projects/testrendercopyex.lua index ef1c36ac39..15f3b596dd 100755 --- a/premake/projects/testrendercopyex.lua +++ b/premake/projects/testrendercopyex.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -26,4 +26,4 @@ SDL_project "testrendercopyex" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } SDL_files { "/testrendercopyex.*" } - SDL_copy { "icon.bmp", "sample.bmp" } \ No newline at end of file + SDL_copy { "icon.bmp", "sample.bmp" } diff --git a/premake/projects/testrendertarget.lua b/premake/projects/testrendertarget.lua index 5dcd71a0c6..6bee7061e0 100755 --- a/premake/projects/testrendertarget.lua +++ b/premake/projects/testrendertarget.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "testrendertarget" -- a list of items to copy from the sourcedir to the destination SDL_copy { "sample.bmp", "icon.bmp" } SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testrendertarget.*" } \ No newline at end of file + SDL_files { "/testrendertarget.*" } diff --git a/premake/projects/testresample.lua b/premake/projects/testresample.lua index c42aeaa423..703d3dd608 100755 --- a/premake/projects/testresample.lua +++ b/premake/projects/testresample.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "testresample" -- a list of items to copy from the sourcedir to the destination SDL_copy { "sample.wav" } SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testresample.*" } \ No newline at end of file + SDL_files { "/testresample.*" } diff --git a/premake/projects/testrumble.lua b/premake/projects/testrumble.lua index a4a9f68791..60dffec504 100755 --- a/premake/projects/testrumble.lua +++ b/premake/projects/testrumble.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testrumble" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testrumble.*" } \ No newline at end of file + SDL_files { "/testrumble.*" } diff --git a/premake/projects/testscale.lua b/premake/projects/testscale.lua index 18e1418b25..9e25e6a5f4 100755 --- a/premake/projects/testscale.lua +++ b/premake/projects/testscale.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "testscale" -- a list of items to copy from the sourcedir to the destination SDL_copy { "sample.bmp", "icon.bmp" } SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testscale.*" } \ No newline at end of file + SDL_files { "/testscale.*" } diff --git a/premake/projects/testsem.lua b/premake/projects/testsem.lua index a527991957..29995e94aa 100755 --- a/premake/projects/testsem.lua +++ b/premake/projects/testsem.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testsem" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testsem.*" } \ No newline at end of file + SDL_files { "/testsem.*" } diff --git a/premake/projects/testshader.lua b/premake/projects/testshader.lua index 9066578524..08cec95a62 100755 --- a/premake/projects/testshader.lua +++ b/premake/projects/testshader.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -32,4 +32,4 @@ SDL_project "testshader" SDL_dependency "OpenGL" -- opengl is platform independent SDL_depfunc "OpenGL" - SDL_files { "/testshader.*" } \ No newline at end of file + SDL_files { "/testshader.*" } diff --git a/premake/projects/testshape.lua b/premake/projects/testshape.lua index 22e9846c4b..ca5ecefbf8 100755 --- a/premake/projects/testshape.lua +++ b/premake/projects/testshape.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -29,4 +29,4 @@ SDL_project "testshape" -- a list of items to copy from the sourcedir to the destination SDL_copy { "shapes/*.bmp" } SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testshape.*" } \ No newline at end of file + SDL_files { "/testshape.*" } diff --git a/premake/projects/testsprite2.lua b/premake/projects/testsprite2.lua index b4e09265ad..3f1d284dd0 100755 --- a/premake/projects/testsprite2.lua +++ b/premake/projects/testsprite2.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -27,4 +27,4 @@ SDL_project "testsprite2" -- a list of items to copy from the sourcedir to the destination SDL_copy { "icon.bmp" } SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testsprite2.*" } \ No newline at end of file + SDL_files { "/testsprite2.*" } diff --git a/premake/projects/testspriteminimal.lua b/premake/projects/testspriteminimal.lua index 26f891bc9c..c51c213e56 100755 --- a/premake/projects/testspriteminimal.lua +++ b/premake/projects/testspriteminimal.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -26,4 +26,4 @@ SDL_project "testspriteminimal" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } SDL_files { "/testspriteminimal.*" } - SDL_copy { "icon.bmp" } \ No newline at end of file + SDL_copy { "icon.bmp" } diff --git a/premake/projects/teststreaming.lua b/premake/projects/teststreaming.lua index 8f76b06f89..ad3e426ac1 100755 --- a/premake/projects/teststreaming.lua +++ b/premake/projects/teststreaming.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -26,4 +26,4 @@ SDL_project "teststreaming" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } SDL_files { "/teststreaming.*" } - SDL_copy { "moose.dat" } \ No newline at end of file + SDL_copy { "moose.dat" } diff --git a/premake/projects/testthread.lua b/premake/projects/testthread.lua index 43e018f1b7..2b223163df 100755 --- a/premake/projects/testthread.lua +++ b/premake/projects/testthread.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testthread" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testthread.*" } \ No newline at end of file + SDL_files { "/testthread.*" } diff --git a/premake/projects/testtimer.lua b/premake/projects/testtimer.lua index 54e4d50fa3..5bf92fba18 100755 --- a/premake/projects/testtimer.lua +++ b/premake/projects/testtimer.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testtimer" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testtimer.*" } \ No newline at end of file + SDL_files { "/testtimer.*" } diff --git a/premake/projects/testver.lua b/premake/projects/testver.lua index 4b2152a91d..346dcc4fe9 100755 --- a/premake/projects/testver.lua +++ b/premake/projects/testver.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testver" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/testver.*" } \ No newline at end of file + SDL_files { "/testver.*" } diff --git a/premake/projects/testwm2.lua b/premake/projects/testwm2.lua index 53a4911c09..65fd31233d 100755 --- a/premake/projects/testwm2.lua +++ b/premake/projects/testwm2.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "testwm2" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2test", "SDL2" } - SDL_files { "/testwm2.*" } \ No newline at end of file + SDL_files { "/testwm2.*" } diff --git a/premake/projects/torturethread.lua b/premake/projects/torturethread.lua index 3f3e7001dd..864f49afa3 100755 --- a/premake/projects/torturethread.lua +++ b/premake/projects/torturethread.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "torturethread" SDL_sourcedir "../test" SDL_projectLocation "tests" SDL_projectDependencies { "SDL2main", "SDL2" } - SDL_files { "/torturethread.*" } \ No newline at end of file + SDL_files { "/torturethread.*" } diff --git a/premake/projects/touch.lua b/premake/projects/touch.lua index 9868700383..c871ce6019 100755 --- a/premake/projects/touch.lua +++ b/premake/projects/touch.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -25,4 +25,4 @@ SDL_project "touch" SDL_sourcedir "../Xcode-iOS/Demos" SDL_projectLocation "Demos" SDL_projectDependencies { "SDL2" } - SDL_files { "/src/common.*", "/src/touch.*", "/Info.plist", "/data/stroke.bmp" } \ No newline at end of file + SDL_files { "/src/common.*", "/src/touch.*", "/Info.plist", "/data/stroke.bmp" } diff --git a/premake/util/sdl_check_compile.lua b/premake/util/sdl_check_compile.lua index 3371359cf7..a8a8fc7c7a 100755 --- a/premake/util/sdl_check_compile.lua +++ b/premake/util/sdl_check_compile.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -304,4 +304,4 @@ function check_type_size(typename) return 0 end return tonumber(result) -end \ No newline at end of file +end diff --git a/premake/util/sdl_dependency_checkers.lua b/premake/util/sdl_dependency_checkers.lua index 4f771e2010..dc5d9b7f57 100755 --- a/premake/util/sdl_dependency_checkers.lua +++ b/premake/util/sdl_dependency_checkers.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -201,4 +201,4 @@ SDL_registerDependencyChecker("ESD", esdDep) SDL_registerDependencyChecker("NAS", nasDep) SDL_registerDependencyChecker("OSS", ossDep) SDL_registerDependencyChecker("DLOpen", dlOpenDep) -SDL_registerDependencyChecker("X11", x11Dep) \ No newline at end of file +SDL_registerDependencyChecker("X11", x11Dep) diff --git a/premake/util/sdl_depends.lua b/premake/util/sdl_depends.lua index fb25ddb095..254eb587ec 100755 --- a/premake/util/sdl_depends.lua +++ b/premake/util/sdl_depends.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -71,4 +71,4 @@ function find_dependency_dir_windows(env, main_search_paths, main_dir_path, sub_ end -- we want the path in terms of '/' return found_dir, abs_path -end \ No newline at end of file +end diff --git a/premake/util/sdl_file.lua b/premake/util/sdl_file.lua index 015897e50a..e4fb156ceb 100755 --- a/premake/util/sdl_file.lua +++ b/premake/util/sdl_file.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -138,4 +138,4 @@ os.getenvpath = function(...) end -- normalize path to unix return path:gsub("\\", "/"):gsub("//", "/") -end \ No newline at end of file +end diff --git a/premake/util/sdl_gen_config.lua b/premake/util/sdl_gen_config.lua index 8e59e67d3a..a0150ac5a2 100755 --- a/premake/util/sdl_gen_config.lua +++ b/premake/util/sdl_gen_config.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -65,4 +65,4 @@ function endGeneration() configFile:write(templateFileContents) end configFile:close() -end \ No newline at end of file +end diff --git a/premake/util/sdl_projects.lua b/premake/util/sdl_projects.lua index 0a891700dc..7bc752cd8f 100755 --- a/premake/util/sdl_projects.lua +++ b/premake/util/sdl_projects.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -458,4 +458,4 @@ function SDL_files(tbl) end if not currentDep.compat then return end currentDep.files = tbl -end \ No newline at end of file +end diff --git a/premake/util/sdl_string.lua b/premake/util/sdl_string.lua index d05e5a7f23..470d7cd9dc 100755 --- a/premake/util/sdl_string.lua +++ b/premake/util/sdl_string.lua @@ -1,4 +1,4 @@ --- Copyright (C) 1997-2011 Sam Lantinga +-- Copyright (C) 1997-2014 Sam Lantinga -- -- This software is provided 'as-is', without any express or implied -- warranty. In no event will the authors be held liable for any damages @@ -100,4 +100,4 @@ function implode(tbl, prefix, pre, post, join, suffix) result = result .. suffix end return result -end \ No newline at end of file +end diff --git a/src/SDL.c b/src/SDL.c index d1a3ab5a2a..9a8da1eebb 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_assert.c b/src/SDL_assert.c index 13e571f5c3..d0de82400f 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_assert_c.h b/src/SDL_assert_c.h index 29802c04ed..f94b24c29f 100644 --- a/src/SDL_assert_c.h +++ b/src/SDL_assert_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_error.c b/src/SDL_error.c index bc9b10a737..ecbf4507b1 100644 --- a/src/SDL_error.c +++ b/src/SDL_error.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_error_c.h b/src/SDL_error_c.h index 49e6c69ebf..98c20c4922 100644 --- a/src/SDL_error_c.h +++ b/src/SDL_error_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_hints.c b/src/SDL_hints.c index 837e738777..365459ec76 100644 --- a/src/SDL_hints.c +++ b/src/SDL_hints.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_internal.h b/src/SDL_internal.h index 3ccae74c98..cb66abd8ee 100644 --- a/src/SDL_internal.h +++ b/src/SDL_internal.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/SDL_log.c b/src/SDL_log.c index 7a2d8ac27b..8cd2483cf9 100644 --- a/src/SDL_log.c +++ b/src/SDL_log.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/atomic/SDL_atomic.c b/src/atomic/SDL_atomic.c index 8be9a474ed..be3f4002bb 100644 --- a/src/atomic/SDL_atomic.c +++ b/src/atomic/SDL_atomic.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/atomic/SDL_spinlock.c b/src/atomic/SDL_spinlock.c index f4346c5c48..5edeb1d73b 100644 --- a/src/atomic/SDL_spinlock.c +++ b/src/atomic/SDL_spinlock.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index c068887ae4..40cb539232 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audio_c.h b/src/audio/SDL_audio_c.h index 71b04cf76b..2ea4e148cf 100644 --- a/src/audio/SDL_audio_c.h +++ b/src/audio/SDL_audio_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audiocvt.c b/src/audio/SDL_audiocvt.c index 92ceeb1413..b167b94a0f 100644 --- a/src/audio/SDL_audiocvt.c +++ b/src/audio/SDL_audiocvt.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audiodev.c b/src/audio/SDL_audiodev.c index 0ecb26b9d7..e9af621195 100644 --- a/src/audio/SDL_audiodev.c +++ b/src/audio/SDL_audiodev.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audiodev_c.h b/src/audio/SDL_audiodev_c.h index d2e1ddbb9c..1ad0dc1015 100644 --- a/src/audio/SDL_audiodev_c.h +++ b/src/audio/SDL_audiodev_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audiomem.h b/src/audio/SDL_audiomem.h index 9e462c4775..3711ac9450 100644 --- a/src/audio/SDL_audiomem.h +++ b/src/audio/SDL_audiomem.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_audiotypecvt.c b/src/audio/SDL_audiotypecvt.c index 5522041dbd..18e2277364 100644 --- a/src/audio/SDL_audiotypecvt.c +++ b/src/audio/SDL_audiotypecvt.c @@ -1,7 +1,7 @@ /* DO NOT EDIT! This file is generated by sdlgenaudiocvt.pl */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_mixer.c b/src/audio/SDL_mixer.c index 87ceac96ea..42a1c6873d 100644 --- a/src/audio/SDL_mixer.c +++ b/src/audio/SDL_mixer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_sysaudio.h b/src/audio/SDL_sysaudio.h index b4d6069def..9fe31c807e 100644 --- a/src/audio/SDL_sysaudio.h +++ b/src/audio/SDL_sysaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_wave.c b/src/audio/SDL_wave.c index 4d09cf30c5..903264ca9c 100644 --- a/src/audio/SDL_wave.c +++ b/src/audio/SDL_wave.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/SDL_wave.h b/src/audio/SDL_wave.h index 4fdc8cb039..c53ad590ab 100644 --- a/src/audio/SDL_wave.h +++ b/src/audio/SDL_wave.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/alsa/SDL_alsa_audio.c b/src/audio/alsa/SDL_alsa_audio.c index b60f71dcdb..1f3def3f60 100644 --- a/src/audio/alsa/SDL_alsa_audio.c +++ b/src/audio/alsa/SDL_alsa_audio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/alsa/SDL_alsa_audio.h b/src/audio/alsa/SDL_alsa_audio.h index 78e892d8d6..45353883db 100644 --- a/src/audio/alsa/SDL_alsa_audio.h +++ b/src/audio/alsa/SDL_alsa_audio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/android/SDL_androidaudio.c b/src/audio/android/SDL_androidaudio.c index ac9fd9ded3..0c85b83cbf 100644 --- a/src/audio/android/SDL_androidaudio.c +++ b/src/audio/android/SDL_androidaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/android/SDL_androidaudio.h b/src/audio/android/SDL_androidaudio.h index bad6a42a6c..ab49f000f9 100644 --- a/src/audio/android/SDL_androidaudio.h +++ b/src/audio/android/SDL_androidaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/arts/SDL_artsaudio.c b/src/audio/arts/SDL_artsaudio.c index 516602dc70..72fba70cc9 100644 --- a/src/audio/arts/SDL_artsaudio.c +++ b/src/audio/arts/SDL_artsaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/arts/SDL_artsaudio.h b/src/audio/arts/SDL_artsaudio.h index 94fa5257d2..fb7706fcf1 100644 --- a/src/audio/arts/SDL_artsaudio.h +++ b/src/audio/arts/SDL_artsaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/bsd/SDL_bsdaudio.c b/src/audio/bsd/SDL_bsdaudio.c index 90fd9a4ffb..f415fe040b 100644 --- a/src/audio/bsd/SDL_bsdaudio.c +++ b/src/audio/bsd/SDL_bsdaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/bsd/SDL_bsdaudio.h b/src/audio/bsd/SDL_bsdaudio.h index 2550a9edd9..625bdb549e 100644 --- a/src/audio/bsd/SDL_bsdaudio.h +++ b/src/audio/bsd/SDL_bsdaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/coreaudio/SDL_coreaudio.c b/src/audio/coreaudio/SDL_coreaudio.c index 653b8ceb5b..9501102894 100644 --- a/src/audio/coreaudio/SDL_coreaudio.c +++ b/src/audio/coreaudio/SDL_coreaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/coreaudio/SDL_coreaudio.h b/src/audio/coreaudio/SDL_coreaudio.h index da003aa635..41e8cea2b0 100644 --- a/src/audio/coreaudio/SDL_coreaudio.h +++ b/src/audio/coreaudio/SDL_coreaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/directsound/SDL_directsound.c b/src/audio/directsound/SDL_directsound.c index b3d08736d6..067683cccb 100644 --- a/src/audio/directsound/SDL_directsound.c +++ b/src/audio/directsound/SDL_directsound.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/directsound/SDL_directsound.h b/src/audio/directsound/SDL_directsound.h index 46dbd3fcb5..b873391fb7 100644 --- a/src/audio/directsound/SDL_directsound.h +++ b/src/audio/directsound/SDL_directsound.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/disk/SDL_diskaudio.c b/src/audio/disk/SDL_diskaudio.c index 7429c0e659..cc4e3efc67 100644 --- a/src/audio/disk/SDL_diskaudio.c +++ b/src/audio/disk/SDL_diskaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/disk/SDL_diskaudio.h b/src/audio/disk/SDL_diskaudio.h index 94d44abc64..9c5a7afaf9 100644 --- a/src/audio/disk/SDL_diskaudio.h +++ b/src/audio/disk/SDL_diskaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/dsp/SDL_dspaudio.c b/src/audio/dsp/SDL_dspaudio.c index 10426bc3d0..eea5a5f862 100644 --- a/src/audio/dsp/SDL_dspaudio.c +++ b/src/audio/dsp/SDL_dspaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/dsp/SDL_dspaudio.h b/src/audio/dsp/SDL_dspaudio.h index 5c3204a14a..5cbb563b91 100644 --- a/src/audio/dsp/SDL_dspaudio.h +++ b/src/audio/dsp/SDL_dspaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/dummy/SDL_dummyaudio.c b/src/audio/dummy/SDL_dummyaudio.c index a113032082..671e222cff 100644 --- a/src/audio/dummy/SDL_dummyaudio.c +++ b/src/audio/dummy/SDL_dummyaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/dummy/SDL_dummyaudio.h b/src/audio/dummy/SDL_dummyaudio.h index 1b948311f6..185401113b 100644 --- a/src/audio/dummy/SDL_dummyaudio.h +++ b/src/audio/dummy/SDL_dummyaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/esd/SDL_esdaudio.c b/src/audio/esd/SDL_esdaudio.c index 28c45c7587..e675272dca 100644 --- a/src/audio/esd/SDL_esdaudio.c +++ b/src/audio/esd/SDL_esdaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/esd/SDL_esdaudio.h b/src/audio/esd/SDL_esdaudio.h index 4f7723767d..e0d5d4cdf3 100644 --- a/src/audio/esd/SDL_esdaudio.h +++ b/src/audio/esd/SDL_esdaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/fusionsound/SDL_fsaudio.c b/src/audio/fusionsound/SDL_fsaudio.c index 452a9a812f..b8367715fa 100644 --- a/src/audio/fusionsound/SDL_fsaudio.c +++ b/src/audio/fusionsound/SDL_fsaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/fusionsound/SDL_fsaudio.h b/src/audio/fusionsound/SDL_fsaudio.h index 2e3d28d878..1f9d6bd273 100644 --- a/src/audio/fusionsound/SDL_fsaudio.h +++ b/src/audio/fusionsound/SDL_fsaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/haiku/SDL_haikuaudio.cc b/src/audio/haiku/SDL_haikuaudio.cc index 09549c0edb..dddb779221 100644 --- a/src/audio/haiku/SDL_haikuaudio.cc +++ b/src/audio/haiku/SDL_haikuaudio.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/haiku/SDL_haikuaudio.h b/src/audio/haiku/SDL_haikuaudio.h index 17621974cb..c6c019e9c1 100644 --- a/src/audio/haiku/SDL_haikuaudio.h +++ b/src/audio/haiku/SDL_haikuaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/nas/SDL_nasaudio.c b/src/audio/nas/SDL_nasaudio.c index 7b09d7edee..a41a480f2c 100644 --- a/src/audio/nas/SDL_nasaudio.c +++ b/src/audio/nas/SDL_nasaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/nas/SDL_nasaudio.h b/src/audio/nas/SDL_nasaudio.h index f44d74be94..e1ee6a521c 100644 --- a/src/audio/nas/SDL_nasaudio.h +++ b/src/audio/nas/SDL_nasaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/paudio/SDL_paudio.c b/src/audio/paudio/SDL_paudio.c index 4cbebb0d81..032d8d2cd8 100644 --- a/src/audio/paudio/SDL_paudio.c +++ b/src/audio/paudio/SDL_paudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/paudio/SDL_paudio.h b/src/audio/paudio/SDL_paudio.h index f21c21f8fa..5a1a648843 100644 --- a/src/audio/paudio/SDL_paudio.h +++ b/src/audio/paudio/SDL_paudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/psp/SDL_pspaudio.c b/src/audio/psp/SDL_pspaudio.c index 8576d95e19..5b17059261 100644 --- a/src/audio/psp/SDL_pspaudio.c +++ b/src/audio/psp/SDL_pspaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/psp/SDL_pspaudio.h b/src/audio/psp/SDL_pspaudio.h index 139476c6ba..8e420f3135 100644 --- a/src/audio/psp/SDL_pspaudio.h +++ b/src/audio/psp/SDL_pspaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/pulseaudio/SDL_pulseaudio.c b/src/audio/pulseaudio/SDL_pulseaudio.c index 0ac71817e5..c3e1238b47 100644 --- a/src/audio/pulseaudio/SDL_pulseaudio.c +++ b/src/audio/pulseaudio/SDL_pulseaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/pulseaudio/SDL_pulseaudio.h b/src/audio/pulseaudio/SDL_pulseaudio.h index 648f29d2bc..a75409bc0a 100644 --- a/src/audio/pulseaudio/SDL_pulseaudio.h +++ b/src/audio/pulseaudio/SDL_pulseaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/qsa/SDL_qsa_audio.c b/src/audio/qsa/SDL_qsa_audio.c index 7bc91d4eb3..d6b8a68004 100644 --- a/src/audio/qsa/SDL_qsa_audio.c +++ b/src/audio/qsa/SDL_qsa_audio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/qsa/SDL_qsa_audio.h b/src/audio/qsa/SDL_qsa_audio.h index e89b2c3afe..66650d2a35 100644 --- a/src/audio/qsa/SDL_qsa_audio.h +++ b/src/audio/qsa/SDL_qsa_audio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/sdlgenaudiocvt.pl b/src/audio/sdlgenaudiocvt.pl index 25a6c2e178..73c021aa4b 100755 --- a/src/audio/sdlgenaudiocvt.pl +++ b/src/audio/sdlgenaudiocvt.pl @@ -38,7 +38,7 @@ sub outputHeader { /* DO NOT EDIT! This file is generated by sdlgenaudiocvt.pl */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/sndio/SDL_sndioaudio.c b/src/audio/sndio/SDL_sndioaudio.c index a8ed63c54a..a0e578303f 100644 --- a/src/audio/sndio/SDL_sndioaudio.c +++ b/src/audio/sndio/SDL_sndioaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/sndio/SDL_sndioaudio.h b/src/audio/sndio/SDL_sndioaudio.h index ca72c71280..b8dadb7db5 100644 --- a/src/audio/sndio/SDL_sndioaudio.h +++ b/src/audio/sndio/SDL_sndioaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/sun/SDL_sunaudio.c b/src/audio/sun/SDL_sunaudio.c index 8b867b5b99..7efe30ecec 100644 --- a/src/audio/sun/SDL_sunaudio.c +++ b/src/audio/sun/SDL_sunaudio.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/sun/SDL_sunaudio.h b/src/audio/sun/SDL_sunaudio.h index fb47eb84bc..df05e6fcaf 100644 --- a/src/audio/sun/SDL_sunaudio.h +++ b/src/audio/sun/SDL_sunaudio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/winmm/SDL_winmm.c b/src/audio/winmm/SDL_winmm.c index 20a9c78ad1..2de9e76fcf 100644 --- a/src/audio/winmm/SDL_winmm.c +++ b/src/audio/winmm/SDL_winmm.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/winmm/SDL_winmm.h b/src/audio/winmm/SDL_winmm.h index 784f7b8abb..47996c1aa0 100644 --- a/src/audio/winmm/SDL_winmm.h +++ b/src/audio/winmm/SDL_winmm.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/audio/xaudio2/SDL_xaudio2.c b/src/audio/xaudio2/SDL_xaudio2.c index 5ec8abcd6b..a2ac16db23 100644 --- a/src/audio/xaudio2/SDL_xaudio2.c +++ b/src/audio/xaudio2/SDL_xaudio2.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 73ece9f59f..d806208e75 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/android/SDL_android.h b/src/core/android/SDL_android.h index fc1546779e..1294cd9ce0 100644 --- a/src/core/android/SDL_android.h +++ b/src/core/android/SDL_android.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/linux/SDL_evdev.c b/src/core/linux/SDL_evdev.c index 5c424f2a2d..19333f2576 100644 --- a/src/core/linux/SDL_evdev.c +++ b/src/core/linux/SDL_evdev.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/linux/SDL_evdev.h b/src/core/linux/SDL_evdev.h index 0a0f44dd61..f6398ea583 100644 --- a/src/core/linux/SDL_evdev.h +++ b/src/core/linux/SDL_evdev.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/linux/SDL_udev.c b/src/core/linux/SDL_udev.c index c08c287e81..da03b7332a 100644 --- a/src/core/linux/SDL_udev.c +++ b/src/core/linux/SDL_udev.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/linux/SDL_udev.h b/src/core/linux/SDL_udev.h index f7d48c8b2a..9a8782a76c 100644 --- a/src/core/linux/SDL_udev.h +++ b/src/core/linux/SDL_udev.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/windows/SDL_windows.c b/src/core/windows/SDL_windows.c index 7580608bae..25a1c4f25c 100644 --- a/src/core/windows/SDL_windows.c +++ b/src/core/windows/SDL_windows.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/core/windows/SDL_windows.h b/src/core/windows/SDL_windows.h index 90cd6b2abc..4a24111a42 100644 --- a/src/core/windows/SDL_windows.h +++ b/src/core/windows/SDL_windows.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index ebd21bd7dc..11acea5746 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/dynapi/SDL_dynapi.c b/src/dynapi/SDL_dynapi.c index 8266185cb7..220ec9ba2c 100644 --- a/src/dynapi/SDL_dynapi.c +++ b/src/dynapi/SDL_dynapi.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/dynapi/SDL_dynapi.h b/src/dynapi/SDL_dynapi.h index 9801ba1c3d..3752de1c5a 100644 --- a/src/dynapi/SDL_dynapi.h +++ b/src/dynapi/SDL_dynapi.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index 2d683b6d3b..feefa58dbd 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 93bcf453cc..e00d73ac6c 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/dynapi/gendynapi.pl b/src/dynapi/gendynapi.pl index b76afbd8a0..091a08c7a3 100755 --- a/src/dynapi/gendynapi.pl +++ b/src/dynapi/gendynapi.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w # Simple DirectMedia Layer -# Copyright (C) 1997-2013 Sam Lantinga +# Copyright (C) 1997-2014 Sam Lantinga # # This software is provided 'as-is', without any express or implied # warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_clipboardevents.c b/src/events/SDL_clipboardevents.c index 2a2f5ae022..3ef7bed264 100644 --- a/src/events/SDL_clipboardevents.c +++ b/src/events/SDL_clipboardevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_clipboardevents_c.h b/src/events/SDL_clipboardevents_c.h index 9cd1953859..c71da2a47d 100644 --- a/src/events/SDL_clipboardevents_c.h +++ b/src/events/SDL_clipboardevents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_dropevents.c b/src/events/SDL_dropevents.c index 553d1c3f01..4830d14f8b 100644 --- a/src/events/SDL_dropevents.c +++ b/src/events/SDL_dropevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_dropevents_c.h b/src/events/SDL_dropevents_c.h index 0458653a1f..cb5e1dc57b 100644 --- a/src/events/SDL_dropevents_c.h +++ b/src/events/SDL_dropevents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 0510b51816..3944ade21e 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_events_c.h b/src/events/SDL_events_c.h index 7ddda19206..11d6e304d4 100644 --- a/src/events/SDL_events_c.h +++ b/src/events/SDL_events_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_gesture.c b/src/events/SDL_gesture.c index 6841f7305a..a6ef5b5dd5 100644 --- a/src/events/SDL_gesture.c +++ b/src/events/SDL_gesture.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_gesture_c.h b/src/events/SDL_gesture_c.h index d172cba4e6..3f1ed9b158 100644 --- a/src/events/SDL_gesture_c.h +++ b/src/events/SDL_gesture_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_keyboard.c b/src/events/SDL_keyboard.c index b56a466159..d5443893b2 100644 --- a/src/events/SDL_keyboard.c +++ b/src/events/SDL_keyboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_keyboard_c.h b/src/events/SDL_keyboard_c.h index 5a99d971d2..05b5253823 100644 --- a/src/events/SDL_keyboard_c.h +++ b/src/events/SDL_keyboard_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 0d17670c94..5e33cd5b1b 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_mouse_c.h b/src/events/SDL_mouse_c.h index a8b8aa5e5d..e0d917cbc4 100644 --- a/src/events/SDL_mouse_c.h +++ b/src/events/SDL_mouse_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_quit.c b/src/events/SDL_quit.c index 14cf89dc50..db7af98fab 100644 --- a/src/events/SDL_quit.c +++ b/src/events/SDL_quit.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_sysevents.h b/src/events/SDL_sysevents.h index a25247f5a5..a5be7bc31f 100644 --- a/src/events/SDL_sysevents.h +++ b/src/events/SDL_sysevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index d37cee2d8a..14a337a9ae 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_touch_c.h b/src/events/SDL_touch_c.h index 8786c61ecb..f9781789ca 100644 --- a/src/events/SDL_touch_c.h +++ b/src/events/SDL_touch_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_windowevents.c b/src/events/SDL_windowevents.c index 28041c242c..146cbc5407 100644 --- a/src/events/SDL_windowevents.c +++ b/src/events/SDL_windowevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/SDL_windowevents_c.h b/src/events/SDL_windowevents_c.h index c97d2affe9..9ad34a3422 100644 --- a/src/events/SDL_windowevents_c.h +++ b/src/events/SDL_windowevents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/blank_cursor.h b/src/events/blank_cursor.h index 6efb4741e1..423fa13863 100644 --- a/src/events/blank_cursor.h +++ b/src/events/blank_cursor.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/default_cursor.h b/src/events/default_cursor.h index 8c2dcfcff2..6e09380ef8 100644 --- a/src/events/default_cursor.h +++ b/src/events/default_cursor.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/scancodes_darwin.h b/src/events/scancodes_darwin.h index 77c728bc73..42fcbdfa27 100644 --- a/src/events/scancodes_darwin.h +++ b/src/events/scancodes_darwin.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/scancodes_linux.h b/src/events/scancodes_linux.h index 4d819da1b7..dbf7a7a5b7 100644 --- a/src/events/scancodes_linux.h +++ b/src/events/scancodes_linux.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/scancodes_windows.h b/src/events/scancodes_windows.h index 3462e14ef3..fa894e4813 100644 --- a/src/events/scancodes_windows.h +++ b/src/events/scancodes_windows.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/events/scancodes_xfree86.h b/src/events/scancodes_xfree86.h index fadcfbfd90..8b10c3d90f 100644 --- a/src/events/scancodes_xfree86.h +++ b/src/events/scancodes_xfree86.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index c994c8fddb..aac044a0a8 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/filesystem/cocoa/SDL_sysfilesystem.m b/src/filesystem/cocoa/SDL_sysfilesystem.m index 2b29cc9a49..adcebd68b7 100644 --- a/src/filesystem/cocoa/SDL_sysfilesystem.m +++ b/src/filesystem/cocoa/SDL_sysfilesystem.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/filesystem/dummy/SDL_sysfilesystem.c b/src/filesystem/dummy/SDL_sysfilesystem.c index 4c92362e74..7e860939a9 100644 --- a/src/filesystem/dummy/SDL_sysfilesystem.c +++ b/src/filesystem/dummy/SDL_sysfilesystem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/filesystem/haiku/SDL_sysfilesystem.cc b/src/filesystem/haiku/SDL_sysfilesystem.cc index 701a98e177..b83d4d0a1a 100644 --- a/src/filesystem/haiku/SDL_sysfilesystem.cc +++ b/src/filesystem/haiku/SDL_sysfilesystem.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/filesystem/unix/SDL_sysfilesystem.c b/src/filesystem/unix/SDL_sysfilesystem.c index 0046c2d034..0349476eb8 100644 --- a/src/filesystem/unix/SDL_sysfilesystem.c +++ b/src/filesystem/unix/SDL_sysfilesystem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/filesystem/windows/SDL_sysfilesystem.c b/src/filesystem/windows/SDL_sysfilesystem.c index 8da41719cd..caa299acb3 100644 --- a/src/filesystem/windows/SDL_sysfilesystem.c +++ b/src/filesystem/windows/SDL_sysfilesystem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/SDL_haptic.c b/src/haptic/SDL_haptic.c index c629deaf1f..2bbcd18c46 100644 --- a/src/haptic/SDL_haptic.c +++ b/src/haptic/SDL_haptic.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/SDL_haptic_c.h b/src/haptic/SDL_haptic_c.h index 678a08f0a6..b318fff11b 100644 --- a/src/haptic/SDL_haptic_c.h +++ b/src/haptic/SDL_haptic_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/SDL_syshaptic.h b/src/haptic/SDL_syshaptic.h index bb4095dcb1..5c3735daf2 100644 --- a/src/haptic/SDL_syshaptic.h +++ b/src/haptic/SDL_syshaptic.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index 12dceee428..b939802f61 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/dummy/SDL_syshaptic.c b/src/haptic/dummy/SDL_syshaptic.c index 1c9f5af47d..2d2185e4ec 100644 --- a/src/haptic/dummy/SDL_syshaptic.c +++ b/src/haptic/dummy/SDL_syshaptic.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index aa937ed895..47860d8d45 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index 3025f9bbcb..34ce2de00b 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 940e205487..a9fe3276ae 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 39ae4efeb7..f8d49a5560 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/SDL_joystick.c b/src/joystick/SDL_joystick.c index 69aa37d5ab..062ece3335 100644 --- a/src/joystick/SDL_joystick.c +++ b/src/joystick/SDL_joystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/SDL_joystick_c.h b/src/joystick/SDL_joystick_c.h index 32410638c3..bb0c0205ae 100644 --- a/src/joystick/SDL_joystick_c.h +++ b/src/joystick/SDL_joystick_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/SDL_sysjoystick.h b/src/joystick/SDL_sysjoystick.h index b125c1c736..6c7a4af959 100644 --- a/src/joystick/SDL_sysjoystick.h +++ b/src/joystick/SDL_sysjoystick.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index 773bd98697..ce49fa9338 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/android/SDL_sysjoystick_c.h b/src/joystick/android/SDL_sysjoystick_c.h index c62395b902..3d56b0b995 100644 --- a/src/joystick/android/SDL_sysjoystick_c.h +++ b/src/joystick/android/SDL_sysjoystick_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/bsd/SDL_sysjoystick.c b/src/joystick/bsd/SDL_sysjoystick.c index 3b4c6cd671..2a09f923d3 100644 --- a/src/joystick/bsd/SDL_sysjoystick.c +++ b/src/joystick/bsd/SDL_sysjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index ace659709d..6961f0fb24 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/darwin/SDL_sysjoystick_c.h b/src/joystick/darwin/SDL_sysjoystick_c.h index a44d9a4bda..6f3372f2b2 100644 --- a/src/joystick/darwin/SDL_sysjoystick_c.h +++ b/src/joystick/darwin/SDL_sysjoystick_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/dummy/SDL_sysjoystick.c b/src/joystick/dummy/SDL_sysjoystick.c index 56e633d211..0d45b6ce29 100644 --- a/src/joystick/dummy/SDL_sysjoystick.c +++ b/src/joystick/dummy/SDL_sysjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/haiku/SDL_haikujoystick.cc b/src/joystick/haiku/SDL_haikujoystick.cc index 1dc50d4830..95757bc1df 100644 --- a/src/joystick/haiku/SDL_haikujoystick.cc +++ b/src/joystick/haiku/SDL_haikujoystick.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/iphoneos/SDLUIAccelerationDelegate.h b/src/joystick/iphoneos/SDLUIAccelerationDelegate.h index 733357b497..bb3e0d61f9 100644 --- a/src/joystick/iphoneos/SDLUIAccelerationDelegate.h +++ b/src/joystick/iphoneos/SDLUIAccelerationDelegate.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/iphoneos/SDLUIAccelerationDelegate.m b/src/joystick/iphoneos/SDLUIAccelerationDelegate.m index 0037c585b0..a099fcf381 100644 --- a/src/joystick/iphoneos/SDLUIAccelerationDelegate.m +++ b/src/joystick/iphoneos/SDLUIAccelerationDelegate.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/iphoneos/SDL_sysjoystick.m b/src/joystick/iphoneos/SDL_sysjoystick.m index da8ba70bbb..b89bd78ed7 100644 --- a/src/joystick/iphoneos/SDL_sysjoystick.m +++ b/src/joystick/iphoneos/SDL_sysjoystick.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c index 3f329b8424..c37a22d58c 100644 --- a/src/joystick/linux/SDL_sysjoystick.c +++ b/src/joystick/linux/SDL_sysjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/linux/SDL_sysjoystick_c.h b/src/joystick/linux/SDL_sysjoystick_c.h index 4e942b54ce..16d16e26bb 100644 --- a/src/joystick/linux/SDL_sysjoystick_c.h +++ b/src/joystick/linux/SDL_sysjoystick_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/psp/SDL_sysjoystick.c b/src/joystick/psp/SDL_sysjoystick.c index b48034e6a4..d01489bb8c 100644 --- a/src/joystick/psp/SDL_sysjoystick.c +++ b/src/joystick/psp/SDL_sysjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index c8a0d7babd..9021213985 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/windows/SDL_dxjoystick_c.h b/src/joystick/windows/SDL_dxjoystick_c.h index 9e04881b87..2808fed560 100644 --- a/src/joystick/windows/SDL_dxjoystick_c.h +++ b/src/joystick/windows/SDL_dxjoystick_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/joystick/windows/SDL_mmjoystick.c b/src/joystick/windows/SDL_mmjoystick.c index 824ecc93b0..c28ed91b52 100644 --- a/src/joystick/windows/SDL_mmjoystick.c +++ b/src/joystick/windows/SDL_mmjoystick.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/libm/math_libm.h b/src/libm/math_libm.h index 861dece36c..20432bd285 100644 --- a/src/libm/math_libm.h +++ b/src/libm/math_libm.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/loadso/dlopen/SDL_sysloadso.c b/src/loadso/dlopen/SDL_sysloadso.c index 337f050de4..db8422221e 100644 --- a/src/loadso/dlopen/SDL_sysloadso.c +++ b/src/loadso/dlopen/SDL_sysloadso.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/loadso/dummy/SDL_sysloadso.c b/src/loadso/dummy/SDL_sysloadso.c index 652b6f4e1b..0dfb90b0c2 100644 --- a/src/loadso/dummy/SDL_sysloadso.c +++ b/src/loadso/dummy/SDL_sysloadso.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/loadso/haiku/SDL_sysloadso.c b/src/loadso/haiku/SDL_sysloadso.c index 95a4ce9343..c8bba670fc 100644 --- a/src/loadso/haiku/SDL_sysloadso.c +++ b/src/loadso/haiku/SDL_sysloadso.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c index fe6f19fc54..cbbd92978a 100644 --- a/src/loadso/windows/SDL_sysloadso.c +++ b/src/loadso/windows/SDL_sysloadso.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/main/haiku/SDL_BApp.h b/src/main/haiku/SDL_BApp.h index bbdb34c095..1e4a0f5501 100644 --- a/src/main/haiku/SDL_BApp.h +++ b/src/main/haiku/SDL_BApp.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/main/haiku/SDL_BeApp.cc b/src/main/haiku/SDL_BeApp.cc index 959ccbc6cb..d471887fa5 100644 --- a/src/main/haiku/SDL_BeApp.cc +++ b/src/main/haiku/SDL_BeApp.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/main/haiku/SDL_BeApp.h b/src/main/haiku/SDL_BeApp.h index ccee0b210b..a2c9d524f4 100644 --- a/src/main/haiku/SDL_BeApp.h +++ b/src/main/haiku/SDL_BeApp.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/main/psp/SDL_psp_main.c b/src/main/psp/SDL_psp_main.c index 77ef39d5a9..5d04667165 100644 --- a/src/main/psp/SDL_psp_main.c +++ b/src/main/psp/SDL_psp_main.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/main/windows/version.rc b/src/main/windows/version.rc index b096a9149a..6120e25522 100644 --- a/src/main/windows/version.rc +++ b/src/main/windows/version.rc @@ -25,7 +25,7 @@ BEGIN VALUE "FileDescription", "SDL\0" VALUE "FileVersion", "2, 0, 1, 0\0" VALUE "InternalName", "SDL\0" - VALUE "LegalCopyright", "Copyright © 2013 Sam Lantinga\0" + VALUE "LegalCopyright", "Copyright © 2014 Sam Lantinga\0" VALUE "OriginalFilename", "SDL2.dll\0" VALUE "ProductName", "Simple DirectMedia Layer\0" VALUE "ProductVersion", "2, 0, 1, 0\0" diff --git a/src/power/SDL_power.c b/src/power/SDL_power.c index 0ce4f6863f..0e30f90370 100644 --- a/src/power/SDL_power.c +++ b/src/power/SDL_power.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/android/SDL_syspower.c b/src/power/android/SDL_syspower.c index 9f4c55f59c..e363731d37 100644 --- a/src/power/android/SDL_syspower.c +++ b/src/power/android/SDL_syspower.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/haiku/SDL_syspower.c b/src/power/haiku/SDL_syspower.c index a627a90771..aaf61e8b71 100644 --- a/src/power/haiku/SDL_syspower.c +++ b/src/power/haiku/SDL_syspower.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/linux/SDL_syspower.c b/src/power/linux/SDL_syspower.c index b8169806e4..05eb200b48 100644 --- a/src/power/linux/SDL_syspower.c +++ b/src/power/linux/SDL_syspower.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/macosx/SDL_syspower.c b/src/power/macosx/SDL_syspower.c index d60cdbc148..9bcacafde8 100644 --- a/src/power/macosx/SDL_syspower.c +++ b/src/power/macosx/SDL_syspower.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/psp/SDL_syspower.c b/src/power/psp/SDL_syspower.c index b1096b8072..b28a68cfca 100644 --- a/src/power/psp/SDL_syspower.c +++ b/src/power/psp/SDL_syspower.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/uikit/SDL_syspower.h b/src/power/uikit/SDL_syspower.h index 187ee590d2..581c358df7 100644 --- a/src/power/uikit/SDL_syspower.h +++ b/src/power/uikit/SDL_syspower.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/uikit/SDL_syspower.m b/src/power/uikit/SDL_syspower.m index cf1c207c74..e7cb9c23be 100644 --- a/src/power/uikit/SDL_syspower.m +++ b/src/power/uikit/SDL_syspower.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/power/windows/SDL_syspower.c b/src/power/windows/SDL_syspower.c index d2485fb455..0a247ba026 100644 --- a/src/power/windows/SDL_syspower.c +++ b/src/power/windows/SDL_syspower.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index aa717149cc..a9d04cc28b 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/SDL_sysrender.h b/src/render/SDL_sysrender.h index c2eaa3f1a7..511cd9ad7e 100644 --- a/src/render/SDL_sysrender.h +++ b/src/render/SDL_sysrender.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/SDL_yuv_mmx.c b/src/render/SDL_yuv_mmx.c index 9e9976f015..e4ae4acbdc 100644 --- a/src/render/SDL_yuv_mmx.c +++ b/src/render/SDL_yuv_mmx.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/SDL_yuv_sw.c b/src/render/SDL_yuv_sw.c index 39387a2af2..af685b9d4b 100644 --- a/src/render/SDL_yuv_sw.c +++ b/src/render/SDL_yuv_sw.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/SDL_yuv_sw_c.h b/src/render/SDL_yuv_sw_c.h index 75fe93637a..6b4044b6d3 100644 --- a/src/render/SDL_yuv_sw_c.h +++ b/src/render/SDL_yuv_sw_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index c7c5432e95..f02b41e25d 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 1cd03d461c..1789276869 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengl/SDL_shaders_gl.c b/src/render/opengl/SDL_shaders_gl.c index 80e173b82e..8b15298f0b 100644 --- a/src/render/opengl/SDL_shaders_gl.c +++ b/src/render/opengl/SDL_shaders_gl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengl/SDL_shaders_gl.h b/src/render/opengl/SDL_shaders_gl.h index 4080b1d3ae..fdd4db7fc0 100644 --- a/src/render/opengl/SDL_shaders_gl.h +++ b/src/render/opengl/SDL_shaders_gl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 10e42567f9..27be42c6d6 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index f7ac5613ba..b9e67cd827 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengles2/SDL_shaders_gles2.c b/src/render/opengles2/SDL_shaders_gles2.c index e4bbebb09b..3b16cc3dfa 100644 --- a/src/render/opengles2/SDL_shaders_gles2.c +++ b/src/render/opengles2/SDL_shaders_gles2.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/opengles2/SDL_shaders_gles2.h b/src/render/opengles2/SDL_shaders_gles2.h index eeee876a3d..77c75c9f17 100644 --- a/src/render/opengles2/SDL_shaders_gles2.h +++ b/src/render/opengles2/SDL_shaders_gles2.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/psp/SDL_render_psp.c b/src/render/psp/SDL_render_psp.c index c867af364a..7ed80e6e12 100644 --- a/src/render/psp/SDL_render_psp.c +++ b/src/render/psp/SDL_render_psp.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_blendfillrect.c b/src/render/software/SDL_blendfillrect.c index 4ba2fca300..cb184d6342 100644 --- a/src/render/software/SDL_blendfillrect.c +++ b/src/render/software/SDL_blendfillrect.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_blendfillrect.h b/src/render/software/SDL_blendfillrect.h index cdae7d0ece..297c839e1a 100644 --- a/src/render/software/SDL_blendfillrect.h +++ b/src/render/software/SDL_blendfillrect.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_blendline.c b/src/render/software/SDL_blendline.c index c090a50cef..02d748d5fc 100644 --- a/src/render/software/SDL_blendline.c +++ b/src/render/software/SDL_blendline.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_blendline.h b/src/render/software/SDL_blendline.h index aa818068a0..14a7c18a54 100644 --- a/src/render/software/SDL_blendline.h +++ b/src/render/software/SDL_blendline.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_blendpoint.c b/src/render/software/SDL_blendpoint.c index eecf203f58..dab135600c 100644 --- a/src/render/software/SDL_blendpoint.c +++ b/src/render/software/SDL_blendpoint.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_blendpoint.h b/src/render/software/SDL_blendpoint.h index cbfb4be28d..72eaf7b870 100644 --- a/src/render/software/SDL_blendpoint.h +++ b/src/render/software/SDL_blendpoint.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_draw.h b/src/render/software/SDL_draw.h index f643abb20c..ba2ec311cd 100644 --- a/src/render/software/SDL_draw.h +++ b/src/render/software/SDL_draw.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_drawline.c b/src/render/software/SDL_drawline.c index 71bee9de37..1ff84a46d9 100644 --- a/src/render/software/SDL_drawline.c +++ b/src/render/software/SDL_drawline.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_drawline.h b/src/render/software/SDL_drawline.h index 08b975a53e..e3378ae8f5 100644 --- a/src/render/software/SDL_drawline.h +++ b/src/render/software/SDL_drawline.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_drawpoint.c b/src/render/software/SDL_drawpoint.c index c5c74e0ea5..3f2de86c17 100644 --- a/src/render/software/SDL_drawpoint.c +++ b/src/render/software/SDL_drawpoint.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_drawpoint.h b/src/render/software/SDL_drawpoint.h index 2beb453f5e..96933d616b 100644 --- a/src/render/software/SDL_drawpoint.h +++ b/src/render/software/SDL_drawpoint.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c index cd42d9b622..f0eb768f5f 100644 --- a/src/render/software/SDL_render_sw.c +++ b/src/render/software/SDL_render_sw.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/render/software/SDL_render_sw_c.h b/src/render/software/SDL_render_sw_c.h index 7ba0a7eec3..81cb656c97 100644 --- a/src/render/software/SDL_render_sw_c.h +++ b/src/render/software/SDL_render_sw_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/stdlib/SDL_getenv.c b/src/stdlib/SDL_getenv.c index 348fe45c2d..4492110646 100644 --- a/src/stdlib/SDL_getenv.c +++ b/src/stdlib/SDL_getenv.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/stdlib/SDL_iconv.c b/src/stdlib/SDL_iconv.c index 8963177c71..c314bf6821 100644 --- a/src/stdlib/SDL_iconv.c +++ b/src/stdlib/SDL_iconv.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/stdlib/SDL_malloc.c b/src/stdlib/SDL_malloc.c index 91d07c5670..74105f5880 100644 --- a/src/stdlib/SDL_malloc.c +++ b/src/stdlib/SDL_malloc.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/stdlib/SDL_stdlib.c b/src/stdlib/SDL_stdlib.c index 082c95684d..1eb9a12dd1 100644 --- a/src/stdlib/SDL_stdlib.c +++ b/src/stdlib/SDL_stdlib.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/stdlib/SDL_string.c b/src/stdlib/SDL_string.c index c351e3ace7..fb50687cce 100644 --- a/src/stdlib/SDL_string.c +++ b/src/stdlib/SDL_string.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_assert.c b/src/test/SDL_test_assert.c index 6f08d1f5ba..0a594932bf 100644 --- a/src/test/SDL_test_assert.c +++ b/src/test/SDL_test_assert.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index f07a0c0cbf..b2b87a1b20 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_compare.c b/src/test/SDL_test_compare.c index 33f237311b..de7041662a 100644 --- a/src/test/SDL_test_compare.c +++ b/src/test/SDL_test_compare.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_crc32.c b/src/test/SDL_test_crc32.c index d6685c347b..dafe72296b 100644 --- a/src/test/SDL_test_crc32.c +++ b/src/test/SDL_test_crc32.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_font.c b/src/test/SDL_test_font.c index b7d2caa2dd..9e419e317e 100644 --- a/src/test/SDL_test_font.c +++ b/src/test/SDL_test_font.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_fuzzer.c b/src/test/SDL_test_fuzzer.c index d090c150c6..963fc10b87 100644 --- a/src/test/SDL_test_fuzzer.c +++ b/src/test/SDL_test_fuzzer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_harness.c b/src/test/SDL_test_harness.c index d90bda5370..6c36f9d801 100644 --- a/src/test/SDL_test_harness.c +++ b/src/test/SDL_test_harness.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_imageBlit.c b/src/test/SDL_test_imageBlit.c index d1d12952c2..d4c74fb42a 100644 --- a/src/test/SDL_test_imageBlit.c +++ b/src/test/SDL_test_imageBlit.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_imageBlitBlend.c b/src/test/SDL_test_imageBlitBlend.c index 06dbfabd4a..f849d730d7 100644 --- a/src/test/SDL_test_imageBlitBlend.c +++ b/src/test/SDL_test_imageBlitBlend.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_imageFace.c b/src/test/SDL_test_imageFace.c index 46c117a4f6..74fa8341d5 100644 --- a/src/test/SDL_test_imageFace.c +++ b/src/test/SDL_test_imageFace.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_imagePrimitives.c b/src/test/SDL_test_imagePrimitives.c index 93b99d6922..d2aafcbe34 100644 --- a/src/test/SDL_test_imagePrimitives.c +++ b/src/test/SDL_test_imagePrimitives.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_imagePrimitivesBlend.c b/src/test/SDL_test_imagePrimitivesBlend.c index ce9adc51a9..cfe189a05f 100644 --- a/src/test/SDL_test_imagePrimitivesBlend.c +++ b/src/test/SDL_test_imagePrimitivesBlend.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_log.c b/src/test/SDL_test_log.c index caf3ddde43..9a083074cc 100644 --- a/src/test/SDL_test_log.c +++ b/src/test/SDL_test_log.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_md5.c b/src/test/SDL_test_md5.c index 3f42ed3566..8467ccbc47 100644 --- a/src/test/SDL_test_md5.c +++ b/src/test/SDL_test_md5.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/test/SDL_test_random.c b/src/test/SDL_test_random.c index 2c70dbd47d..bc434183c8 100644 --- a/src/test/SDL_test_random.c +++ b/src/test/SDL_test_random.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/SDL_systhread.h b/src/thread/SDL_systhread.h index 82af6e425b..9c9409a5bc 100644 --- a/src/thread/SDL_systhread.h +++ b/src/thread/SDL_systhread.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index ce51489205..6cd933311f 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/SDL_thread_c.h b/src/thread/SDL_thread_c.h index b6e0eebfcc..011d9ba070 100644 --- a/src/thread/SDL_thread_c.h +++ b/src/thread/SDL_thread_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_syscond.c b/src/thread/generic/SDL_syscond.c index 90fe4eac21..64cc634006 100644 --- a/src/thread/generic/SDL_syscond.c +++ b/src/thread/generic/SDL_syscond.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_sysmutex.c b/src/thread/generic/SDL_sysmutex.c index f2a567c6d9..ddcc8cdf45 100644 --- a/src/thread/generic/SDL_sysmutex.c +++ b/src/thread/generic/SDL_sysmutex.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_sysmutex_c.h b/src/thread/generic/SDL_sysmutex_c.h index 6a3a8015f8..f868fade80 100644 --- a/src/thread/generic/SDL_sysmutex_c.h +++ b/src/thread/generic/SDL_sysmutex_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_syssem.c b/src/thread/generic/SDL_syssem.c index 71b191bbbf..c7220a2a47 100644 --- a/src/thread/generic/SDL_syssem.c +++ b/src/thread/generic/SDL_syssem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_systhread.c b/src/thread/generic/SDL_systhread.c index 22b04d414c..6cd29f76e3 100644 --- a/src/thread/generic/SDL_systhread.c +++ b/src/thread/generic/SDL_systhread.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_systhread_c.h b/src/thread/generic/SDL_systhread_c.h index afabbc7961..38e8b208e1 100644 --- a/src/thread/generic/SDL_systhread_c.h +++ b/src/thread/generic/SDL_systhread_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/generic/SDL_systls.c b/src/thread/generic/SDL_systls.c index 6016138921..b73d901fad 100644 --- a/src/thread/generic/SDL_systls.c +++ b/src/thread/generic/SDL_systls.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/psp/SDL_syscond.c b/src/thread/psp/SDL_syscond.c index 3bdcc2fdc3..1abd9a3d9a 100644 --- a/src/thread/psp/SDL_syscond.c +++ b/src/thread/psp/SDL_syscond.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/psp/SDL_sysmutex.c b/src/thread/psp/SDL_sysmutex.c index 731a2de6b8..478575b32b 100644 --- a/src/thread/psp/SDL_sysmutex.c +++ b/src/thread/psp/SDL_sysmutex.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/psp/SDL_sysmutex_c.h b/src/thread/psp/SDL_sysmutex_c.h index 6a3a8015f8..f868fade80 100644 --- a/src/thread/psp/SDL_sysmutex_c.h +++ b/src/thread/psp/SDL_sysmutex_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/psp/SDL_syssem.c b/src/thread/psp/SDL_syssem.c index 8eff409e0b..27d3251a2b 100644 --- a/src/thread/psp/SDL_syssem.c +++ b/src/thread/psp/SDL_syssem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/psp/SDL_systhread.c b/src/thread/psp/SDL_systhread.c index 269defe4d0..d2fbeeb2f3 100644 --- a/src/thread/psp/SDL_systhread.c +++ b/src/thread/psp/SDL_systhread.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/psp/SDL_systhread_c.h b/src/thread/psp/SDL_systhread_c.h index a806edec9b..4f9dac2498 100644 --- a/src/thread/psp/SDL_systhread_c.h +++ b/src/thread/psp/SDL_systhread_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_syscond.c b/src/thread/pthread/SDL_syscond.c index 32342bf12e..c15df86327 100644 --- a/src/thread/pthread/SDL_syscond.c +++ b/src/thread/pthread/SDL_syscond.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_sysmutex.c b/src/thread/pthread/SDL_sysmutex.c index b18d8fc001..36bf394cb7 100644 --- a/src/thread/pthread/SDL_sysmutex.c +++ b/src/thread/pthread/SDL_sysmutex.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_sysmutex_c.h b/src/thread/pthread/SDL_sysmutex_c.h index d99b09403a..bf69bcd160 100644 --- a/src/thread/pthread/SDL_sysmutex_c.h +++ b/src/thread/pthread/SDL_sysmutex_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_syssem.c b/src/thread/pthread/SDL_syssem.c index 4194b96652..358baff28a 100644 --- a/src/thread/pthread/SDL_syssem.c +++ b/src/thread/pthread/SDL_syssem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_systhread.c b/src/thread/pthread/SDL_systhread.c index 08bd182d9b..b570b2abd7 100644 --- a/src/thread/pthread/SDL_systhread.c +++ b/src/thread/pthread/SDL_systhread.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_systhread_c.h b/src/thread/pthread/SDL_systhread_c.h index c5699c46bb..eedb7d1f52 100644 --- a/src/thread/pthread/SDL_systhread_c.h +++ b/src/thread/pthread/SDL_systhread_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/pthread/SDL_systls.c b/src/thread/pthread/SDL_systls.c index cce8754c83..09a2790403 100644 --- a/src/thread/pthread/SDL_systls.c +++ b/src/thread/pthread/SDL_systls.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/windows/SDL_sysmutex.c b/src/thread/windows/SDL_sysmutex.c index 17e9257dc4..8333e11b48 100644 --- a/src/thread/windows/SDL_sysmutex.c +++ b/src/thread/windows/SDL_sysmutex.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/windows/SDL_syssem.c b/src/thread/windows/SDL_syssem.c index 7f178b7b6f..a4f75f5cf0 100644 --- a/src/thread/windows/SDL_syssem.c +++ b/src/thread/windows/SDL_syssem.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/windows/SDL_systhread.c b/src/thread/windows/SDL_systhread.c index 3972ffdfc2..79c40b161a 100644 --- a/src/thread/windows/SDL_systhread.c +++ b/src/thread/windows/SDL_systhread.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/windows/SDL_systhread_c.h b/src/thread/windows/SDL_systhread_c.h index e346f433a3..f3c78e99a4 100644 --- a/src/thread/windows/SDL_systhread_c.h +++ b/src/thread/windows/SDL_systhread_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/thread/windows/SDL_systls.c b/src/thread/windows/SDL_systls.c index 6a82d2f863..6ceadaa122 100644 --- a/src/thread/windows/SDL_systls.c +++ b/src/thread/windows/SDL_systls.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/SDL_timer.c b/src/timer/SDL_timer.c index 3996b360e4..3ec1291b56 100644 --- a/src/timer/SDL_timer.c +++ b/src/timer/SDL_timer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/SDL_timer_c.h b/src/timer/SDL_timer_c.h index 6fe0679ce5..91646d9904 100644 --- a/src/timer/SDL_timer_c.h +++ b/src/timer/SDL_timer_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/dummy/SDL_systimer.c b/src/timer/dummy/SDL_systimer.c index 828610a653..0e2703fc2b 100644 --- a/src/timer/dummy/SDL_systimer.c +++ b/src/timer/dummy/SDL_systimer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/haiku/SDL_systimer.c b/src/timer/haiku/SDL_systimer.c index 213682b3dd..1500f6b26e 100644 --- a/src/timer/haiku/SDL_systimer.c +++ b/src/timer/haiku/SDL_systimer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/psp/SDL_systimer.c b/src/timer/psp/SDL_systimer.c index 61c4690aa4..0f05a13637 100644 --- a/src/timer/psp/SDL_systimer.c +++ b/src/timer/psp/SDL_systimer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/unix/SDL_systimer.c b/src/timer/unix/SDL_systimer.c index 1d9636a610..7c35bef523 100644 --- a/src/timer/unix/SDL_systimer.c +++ b/src/timer/unix/SDL_systimer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/timer/windows/SDL_systimer.c b/src/timer/windows/SDL_systimer.c index ebe4272e86..b1fe30171e 100644 --- a/src/timer/windows/SDL_systimer.c +++ b/src/timer/windows/SDL_systimer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_RLEaccel.c b/src/video/SDL_RLEaccel.c index e8bfca713e..a464dec393 100644 --- a/src/video/SDL_RLEaccel.c +++ b/src/video/SDL_RLEaccel.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_RLEaccel_c.h b/src/video/SDL_RLEaccel_c.h index 69bfa0d83d..271faa0b74 100644 --- a/src/video/SDL_RLEaccel_c.h +++ b/src/video/SDL_RLEaccel_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit.c b/src/video/SDL_blit.c index 00bb2e1a0e..fe30923bc7 100644 --- a/src/video/SDL_blit.c +++ b/src/video/SDL_blit.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit.h b/src/video/SDL_blit.h index 8eb47e173a..caf6c00f3c 100644 --- a/src/video/SDL_blit.h +++ b/src/video/SDL_blit.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_0.c b/src/video/SDL_blit_0.c index 3f413446a1..a820fb379d 100644 --- a/src/video/SDL_blit_0.c +++ b/src/video/SDL_blit_0.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_1.c b/src/video/SDL_blit_1.c index a129ca9410..4dfcabda68 100644 --- a/src/video/SDL_blit_1.c +++ b/src/video/SDL_blit_1.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_A.c b/src/video/SDL_blit_A.c index bb1f3d55c4..31bd0401e0 100644 --- a/src/video/SDL_blit_A.c +++ b/src/video/SDL_blit_A.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_N.c b/src/video/SDL_blit_N.c index 25610120d8..41615be575 100644 --- a/src/video/SDL_blit_N.c +++ b/src/video/SDL_blit_N.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_auto.c b/src/video/SDL_blit_auto.c index 1e6ff3cb03..310839ca0f 100644 --- a/src/video/SDL_blit_auto.c +++ b/src/video/SDL_blit_auto.c @@ -1,7 +1,7 @@ /* DO NOT EDIT! This file is generated by sdlgenblit.pl */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_auto.h b/src/video/SDL_blit_auto.h index 750c0a198f..369e12fc9a 100644 --- a/src/video/SDL_blit_auto.h +++ b/src/video/SDL_blit_auto.h @@ -1,7 +1,7 @@ /* DO NOT EDIT! This file is generated by sdlgenblit.pl */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_copy.c b/src/video/SDL_blit_copy.c index 556f998584..5c62d633d6 100644 --- a/src/video/SDL_blit_copy.c +++ b/src/video/SDL_blit_copy.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_copy.h b/src/video/SDL_blit_copy.h index 8d02a83bba..8b6950ced8 100644 --- a/src/video/SDL_blit_copy.h +++ b/src/video/SDL_blit_copy.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_slow.c b/src/video/SDL_blit_slow.c index 85de417a8a..ca644adcf9 100644 --- a/src/video/SDL_blit_slow.c +++ b/src/video/SDL_blit_slow.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_blit_slow.h b/src/video/SDL_blit_slow.h index 1c1a4dd1a3..c1786e0b5e 100644 --- a/src/video/SDL_blit_slow.h +++ b/src/video/SDL_blit_slow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_bmp.c b/src/video/SDL_bmp.c index 65345d283f..6d24aa25d0 100644 --- a/src/video/SDL_bmp.c +++ b/src/video/SDL_bmp.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_clipboard.c b/src/video/SDL_clipboard.c index 99ab20fa56..a3b38e0455 100644 --- a/src/video/SDL_clipboard.c +++ b/src/video/SDL_clipboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c index 36fcac6ebc..93e7fd5af3 100644 --- a/src/video/SDL_egl.c +++ b/src/video/SDL_egl.c @@ -1,6 +1,6 @@ /* * Simple DirectMedia Layer - * Copyright (C) 1997-2013 Sam Lantinga + * Copyright (C) 1997-2014 Sam Lantinga * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_egl_c.h b/src/video/SDL_egl_c.h index 75e9fbd657..ef58b18e04 100644 --- a/src/video/SDL_egl_c.h +++ b/src/video/SDL_egl_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_fillrect.c b/src/video/SDL_fillrect.c index d1ddc8853f..2bf8a29185 100644 --- a/src/video/SDL_fillrect.c +++ b/src/video/SDL_fillrect.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_pixels.c b/src/video/SDL_pixels.c index 3daa85f059..9eb507e139 100644 --- a/src/video/SDL_pixels.c +++ b/src/video/SDL_pixels.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_pixels_c.h b/src/video/SDL_pixels_c.h index 94fe38c10b..de2916ffa5 100644 --- a/src/video/SDL_pixels_c.h +++ b/src/video/SDL_pixels_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_rect.c b/src/video/SDL_rect.c index 5c9997a4a9..a0456bd691 100644 --- a/src/video/SDL_rect.c +++ b/src/video/SDL_rect.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_rect_c.h b/src/video/SDL_rect_c.h index 1a76bac7e6..e6be32926d 100644 --- a/src/video/SDL_rect_c.h +++ b/src/video/SDL_rect_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_shape.c b/src/video/SDL_shape.c index 4f9f1c1a84..97248bbc80 100644 --- a/src/video/SDL_shape.c +++ b/src/video/SDL_shape.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_shape_internals.h b/src/video/SDL_shape_internals.h index a74bd385c0..b5413e1eaf 100644 --- a/src/video/SDL_shape_internals.h +++ b/src/video/SDL_shape_internals.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_stretch.c b/src/video/SDL_stretch.c index 8f5517d066..a4faacaf40 100644 --- a/src/video/SDL_stretch.c +++ b/src/video/SDL_stretch.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index 8ccb64438a..7caf0fc51b 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index aabdffe94a..47240dbea9 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 2e20feabec..65df4bc997 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidclipboard.c b/src/video/android/SDL_androidclipboard.c index 17420338ec..dcac2e701f 100644 --- a/src/video/android/SDL_androidclipboard.c +++ b/src/video/android/SDL_androidclipboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidclipboard.h b/src/video/android/SDL_androidclipboard.h index 9c599350d5..c1ab140cfa 100644 --- a/src/video/android/SDL_androidclipboard.h +++ b/src/video/android/SDL_androidclipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidevents.c b/src/video/android/SDL_androidevents.c index da102ccf69..164126cf70 100644 --- a/src/video/android/SDL_androidevents.c +++ b/src/video/android/SDL_androidevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidevents.h b/src/video/android/SDL_androidevents.h index bfab50550e..547338d769 100644 --- a/src/video/android/SDL_androidevents.h +++ b/src/video/android/SDL_androidevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidgl.c b/src/video/android/SDL_androidgl.c index 8f0d1aeddf..1f933ce307 100644 --- a/src/video/android/SDL_androidgl.c +++ b/src/video/android/SDL_androidgl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidkeyboard.c b/src/video/android/SDL_androidkeyboard.c index 034c302338..5008cfde6c 100644 --- a/src/video/android/SDL_androidkeyboard.c +++ b/src/video/android/SDL_androidkeyboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidkeyboard.h b/src/video/android/SDL_androidkeyboard.h index 4c1cef1a15..041987aca5 100644 --- a/src/video/android/SDL_androidkeyboard.h +++ b/src/video/android/SDL_androidkeyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidtouch.c b/src/video/android/SDL_androidtouch.c index f6cc0d0d5b..7f11f437d0 100644 --- a/src/video/android/SDL_androidtouch.c +++ b/src/video/android/SDL_androidtouch.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidtouch.h b/src/video/android/SDL_androidtouch.h index 0601bea648..81a0cb50e9 100644 --- a/src/video/android/SDL_androidtouch.h +++ b/src/video/android/SDL_androidtouch.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidvideo.c b/src/video/android/SDL_androidvideo.c index 91247dea4a..f1cf18552e 100644 --- a/src/video/android/SDL_androidvideo.c +++ b/src/video/android/SDL_androidvideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidvideo.h b/src/video/android/SDL_androidvideo.h index 3762f3ddc7..ccd5d7a16c 100644 --- a/src/video/android/SDL_androidvideo.h +++ b/src/video/android/SDL_androidvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidwindow.c b/src/video/android/SDL_androidwindow.c index 673b9d98f9..acbb58206d 100644 --- a/src/video/android/SDL_androidwindow.c +++ b/src/video/android/SDL_androidwindow.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/android/SDL_androidwindow.h b/src/video/android/SDL_androidwindow.h index 88c1bc3217..8de223aa0d 100644 --- a/src/video/android/SDL_androidwindow.h +++ b/src/video/android/SDL_androidwindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoaclipboard.h b/src/video/cocoa/SDL_cocoaclipboard.h index 03ac3cb352..0a5e0dc0db 100644 --- a/src/video/cocoa/SDL_cocoaclipboard.h +++ b/src/video/cocoa/SDL_cocoaclipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoaclipboard.m b/src/video/cocoa/SDL_cocoaclipboard.m index 0b7d39f7d8..495c934c05 100644 --- a/src/video/cocoa/SDL_cocoaclipboard.m +++ b/src/video/cocoa/SDL_cocoaclipboard.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoaevents.h b/src/video/cocoa/SDL_cocoaevents.h index f9ca15dcec..687cf647ec 100644 --- a/src/video/cocoa/SDL_cocoaevents.h +++ b/src/video/cocoa/SDL_cocoaevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index c0231e0a46..b3a6e93fa2 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoakeyboard.h b/src/video/cocoa/SDL_cocoakeyboard.h index 2bef16078b..a85f9b7b08 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.h +++ b/src/video/cocoa/SDL_cocoakeyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m index 6f8a6efd8c..85bf9a0677 100644 --- a/src/video/cocoa/SDL_cocoakeyboard.m +++ b/src/video/cocoa/SDL_cocoakeyboard.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamessagebox.h b/src/video/cocoa/SDL_cocoamessagebox.h index 0d329a46ca..ff468a881d 100644 --- a/src/video/cocoa/SDL_cocoamessagebox.h +++ b/src/video/cocoa/SDL_cocoamessagebox.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamessagebox.m b/src/video/cocoa/SDL_cocoamessagebox.m index f371096f66..730d952eed 100644 --- a/src/video/cocoa/SDL_cocoamessagebox.m +++ b/src/video/cocoa/SDL_cocoamessagebox.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamodes.h b/src/video/cocoa/SDL_cocoamodes.h index 2eb79e1252..4f8e863247 100644 --- a/src/video/cocoa/SDL_cocoamodes.h +++ b/src/video/cocoa/SDL_cocoamodes.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamodes.m b/src/video/cocoa/SDL_cocoamodes.m index 3eb6f05acc..f41c349378 100644 --- a/src/video/cocoa/SDL_cocoamodes.m +++ b/src/video/cocoa/SDL_cocoamodes.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamouse.h b/src/video/cocoa/SDL_cocoamouse.h index a49e5cb82e..a0738eb988 100644 --- a/src/video/cocoa/SDL_cocoamouse.h +++ b/src/video/cocoa/SDL_cocoamouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index e38a4f44c3..98b0e6161e 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamousetap.h b/src/video/cocoa/SDL_cocoamousetap.h index a656020ccb..bf3e738389 100644 --- a/src/video/cocoa/SDL_cocoamousetap.h +++ b/src/video/cocoa/SDL_cocoamousetap.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoamousetap.m b/src/video/cocoa/SDL_cocoamousetap.m index f0f617dfa8..9cf531cb5e 100644 --- a/src/video/cocoa/SDL_cocoamousetap.m +++ b/src/video/cocoa/SDL_cocoamousetap.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoaopengl.h b/src/video/cocoa/SDL_cocoaopengl.h index ab635e8a5f..14fd3ab4ac 100644 --- a/src/video/cocoa/SDL_cocoaopengl.h +++ b/src/video/cocoa/SDL_cocoaopengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 54aae973fb..803b4ecd2f 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoashape.h b/src/video/cocoa/SDL_cocoashape.h index f415444f0d..0ab9980e33 100644 --- a/src/video/cocoa/SDL_cocoashape.h +++ b/src/video/cocoa/SDL_cocoashape.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoashape.m b/src/video/cocoa/SDL_cocoashape.m index a6ea87951b..b3843ccb09 100644 --- a/src/video/cocoa/SDL_cocoashape.m +++ b/src/video/cocoa/SDL_cocoashape.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoavideo.h b/src/video/cocoa/SDL_cocoavideo.h index 00ea495512..f5836bd877 100644 --- a/src/video/cocoa/SDL_cocoavideo.h +++ b/src/video/cocoa/SDL_cocoavideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m index 18408e9493..0ab015f2ff 100644 --- a/src/video/cocoa/SDL_cocoavideo.m +++ b/src/video/cocoa/SDL_cocoavideo.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 1a7178c59c..65e0d4b3d6 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index f7a03915bf..03ece7b9e3 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_WM.c b/src/video/directfb/SDL_DirectFB_WM.c index 202e7b02b8..b48a106983 100644 --- a/src/video/directfb/SDL_DirectFB_WM.c +++ b/src/video/directfb/SDL_DirectFB_WM.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_WM.h b/src/video/directfb/SDL_DirectFB_WM.h index 4c5d539dd1..0bfe07e0d9 100644 --- a/src/video/directfb/SDL_DirectFB_WM.h +++ b/src/video/directfb/SDL_DirectFB_WM.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_dyn.c b/src/video/directfb/SDL_DirectFB_dyn.c index 8b7fa8085f..49c737b042 100644 --- a/src/video/directfb/SDL_DirectFB_dyn.c +++ b/src/video/directfb/SDL_DirectFB_dyn.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_dyn.h b/src/video/directfb/SDL_DirectFB_dyn.h index 52658b01ff..ba57f45336 100644 --- a/src/video/directfb/SDL_DirectFB_dyn.h +++ b/src/video/directfb/SDL_DirectFB_dyn.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_events.c b/src/video/directfb/SDL_DirectFB_events.c index f5cd6ef32e..9c6c79407c 100644 --- a/src/video/directfb/SDL_DirectFB_events.c +++ b/src/video/directfb/SDL_DirectFB_events.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_events.h b/src/video/directfb/SDL_DirectFB_events.h index a69e6bf7c0..db5c7f0fdf 100644 --- a/src/video/directfb/SDL_DirectFB_events.h +++ b/src/video/directfb/SDL_DirectFB_events.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_modes.c b/src/video/directfb/SDL_DirectFB_modes.c index 0b54acd176..73de1fc015 100644 --- a/src/video/directfb/SDL_DirectFB_modes.c +++ b/src/video/directfb/SDL_DirectFB_modes.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_modes.h b/src/video/directfb/SDL_DirectFB_modes.h index 6e439cdc90..7999f606c4 100644 --- a/src/video/directfb/SDL_DirectFB_modes.h +++ b/src/video/directfb/SDL_DirectFB_modes.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_mouse.c b/src/video/directfb/SDL_DirectFB_mouse.c index 7c630456d5..93798f8e3b 100644 --- a/src/video/directfb/SDL_DirectFB_mouse.c +++ b/src/video/directfb/SDL_DirectFB_mouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_mouse.h b/src/video/directfb/SDL_DirectFB_mouse.h index 906f1fb5e2..7ac4868208 100644 --- a/src/video/directfb/SDL_DirectFB_mouse.h +++ b/src/video/directfb/SDL_DirectFB_mouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_opengl.c b/src/video/directfb/SDL_DirectFB_opengl.c index 16b3bb1471..1a378792d3 100644 --- a/src/video/directfb/SDL_DirectFB_opengl.c +++ b/src/video/directfb/SDL_DirectFB_opengl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_opengl.h b/src/video/directfb/SDL_DirectFB_opengl.h index efb11f766a..ecd5bbafbd 100644 --- a/src/video/directfb/SDL_DirectFB_opengl.h +++ b/src/video/directfb/SDL_DirectFB_opengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_render.c b/src/video/directfb/SDL_DirectFB_render.c index c719e4879b..61f9b00c51 100644 --- a/src/video/directfb/SDL_DirectFB_render.c +++ b/src/video/directfb/SDL_DirectFB_render.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_render.h b/src/video/directfb/SDL_DirectFB_render.h index fe888af1af..5405a5e5f9 100644 --- a/src/video/directfb/SDL_DirectFB_render.h +++ b/src/video/directfb/SDL_DirectFB_render.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_shape.c b/src/video/directfb/SDL_DirectFB_shape.c index 75ca63b6ad..64e91f61f1 100644 --- a/src/video/directfb/SDL_DirectFB_shape.c +++ b/src/video/directfb/SDL_DirectFB_shape.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_shape.h b/src/video/directfb/SDL_DirectFB_shape.h index a99778533a..99bff80049 100644 --- a/src/video/directfb/SDL_DirectFB_shape.h +++ b/src/video/directfb/SDL_DirectFB_shape.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_video.c b/src/video/directfb/SDL_DirectFB_video.c index f701d7f1f0..4135fe01e6 100644 --- a/src/video/directfb/SDL_DirectFB_video.c +++ b/src/video/directfb/SDL_DirectFB_video.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_video.h b/src/video/directfb/SDL_DirectFB_video.h index 77f6d72d8c..82250b63d2 100644 --- a/src/video/directfb/SDL_DirectFB_video.h +++ b/src/video/directfb/SDL_DirectFB_video.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_window.c b/src/video/directfb/SDL_DirectFB_window.c index 4913f7cf14..be49696130 100644 --- a/src/video/directfb/SDL_DirectFB_window.c +++ b/src/video/directfb/SDL_DirectFB_window.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/directfb/SDL_DirectFB_window.h b/src/video/directfb/SDL_DirectFB_window.h index 96afc59ec0..a16d160952 100644 --- a/src/video/directfb/SDL_DirectFB_window.h +++ b/src/video/directfb/SDL_DirectFB_window.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/dummy/SDL_nullevents.c b/src/video/dummy/SDL_nullevents.c index 2271a48cf3..22a34bbaa0 100644 --- a/src/video/dummy/SDL_nullevents.c +++ b/src/video/dummy/SDL_nullevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/dummy/SDL_nullevents_c.h b/src/video/dummy/SDL_nullevents_c.h index e18bab9a0a..41e28caa4e 100644 --- a/src/video/dummy/SDL_nullevents_c.h +++ b/src/video/dummy/SDL_nullevents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/dummy/SDL_nullframebuffer.c b/src/video/dummy/SDL_nullframebuffer.c index 93fafe4865..2f1bcab7aa 100644 --- a/src/video/dummy/SDL_nullframebuffer.c +++ b/src/video/dummy/SDL_nullframebuffer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/dummy/SDL_nullframebuffer_c.h b/src/video/dummy/SDL_nullframebuffer_c.h index ddd331d74a..4c582d7d40 100644 --- a/src/video/dummy/SDL_nullframebuffer_c.h +++ b/src/video/dummy/SDL_nullframebuffer_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/dummy/SDL_nullvideo.c b/src/video/dummy/SDL_nullvideo.c index 48cbd2d109..28147bd181 100644 --- a/src/video/dummy/SDL_nullvideo.c +++ b/src/video/dummy/SDL_nullvideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/dummy/SDL_nullvideo.h b/src/video/dummy/SDL_nullvideo.h index 94497c38bd..b0a76c064d 100644 --- a/src/video/dummy/SDL_nullvideo.h +++ b/src/video/dummy/SDL_nullvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_BWin.h b/src/video/haiku/SDL_BWin.h index 5aca508c42..e6de5b0d01 100644 --- a/src/video/haiku/SDL_BWin.h +++ b/src/video/haiku/SDL_BWin.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bclipboard.cc b/src/video/haiku/SDL_bclipboard.cc index b75655f321..9760d0fbaa 100644 --- a/src/video/haiku/SDL_bclipboard.cc +++ b/src/video/haiku/SDL_bclipboard.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bclipboard.h b/src/video/haiku/SDL_bclipboard.h index 2a572ffee6..418ba90b92 100644 --- a/src/video/haiku/SDL_bclipboard.h +++ b/src/video/haiku/SDL_bclipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bevents.cc b/src/video/haiku/SDL_bevents.cc index 0fe930572d..2ffc471386 100644 --- a/src/video/haiku/SDL_bevents.cc +++ b/src/video/haiku/SDL_bevents.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bevents.h b/src/video/haiku/SDL_bevents.h index a83d03b526..9b53f39aa1 100644 --- a/src/video/haiku/SDL_bevents.h +++ b/src/video/haiku/SDL_bevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bframebuffer.cc b/src/video/haiku/SDL_bframebuffer.cc index 4ca28ab669..0c56396065 100644 --- a/src/video/haiku/SDL_bframebuffer.cc +++ b/src/video/haiku/SDL_bframebuffer.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bframebuffer.h b/src/video/haiku/SDL_bframebuffer.h index 935f0e95a3..b0b73d3ca8 100644 --- a/src/video/haiku/SDL_bframebuffer.h +++ b/src/video/haiku/SDL_bframebuffer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bkeyboard.cc b/src/video/haiku/SDL_bkeyboard.cc index c6ba16148f..97f34b23be 100644 --- a/src/video/haiku/SDL_bkeyboard.cc +++ b/src/video/haiku/SDL_bkeyboard.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bkeyboard.h b/src/video/haiku/SDL_bkeyboard.h index b170228a13..0acb42c945 100644 --- a/src/video/haiku/SDL_bkeyboard.h +++ b/src/video/haiku/SDL_bkeyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bmodes.cc b/src/video/haiku/SDL_bmodes.cc index cf358d7f39..b56442b096 100644 --- a/src/video/haiku/SDL_bmodes.cc +++ b/src/video/haiku/SDL_bmodes.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bmodes.h b/src/video/haiku/SDL_bmodes.h index 9ca04d087c..3df862d301 100644 --- a/src/video/haiku/SDL_bmodes.h +++ b/src/video/haiku/SDL_bmodes.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bopengl.cc b/src/video/haiku/SDL_bopengl.cc index 22bc087de1..245cec12ec 100644 --- a/src/video/haiku/SDL_bopengl.cc +++ b/src/video/haiku/SDL_bopengl.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bopengl.h b/src/video/haiku/SDL_bopengl.h index 9ec972eeff..b046de4e4e 100644 --- a/src/video/haiku/SDL_bopengl.h +++ b/src/video/haiku/SDL_bopengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bvideo.cc b/src/video/haiku/SDL_bvideo.cc index 812291a4a2..a526893f8d 100644 --- a/src/video/haiku/SDL_bvideo.cc +++ b/src/video/haiku/SDL_bvideo.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bvideo.h b/src/video/haiku/SDL_bvideo.h index 7f0266a733..925c8b5b2c 100644 --- a/src/video/haiku/SDL_bvideo.h +++ b/src/video/haiku/SDL_bvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bwindow.cc b/src/video/haiku/SDL_bwindow.cc index b3c309d18a..c0a3cee01a 100644 --- a/src/video/haiku/SDL_bwindow.cc +++ b/src/video/haiku/SDL_bwindow.cc @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/haiku/SDL_bwindow.h b/src/video/haiku/SDL_bwindow.h index e3c0b6a3cf..5a39349787 100644 --- a/src/video/haiku/SDL_bwindow.h +++ b/src/video/haiku/SDL_bwindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/pandora/SDL_pandora.c b/src/video/pandora/SDL_pandora.c index 2e182bb1d5..10ca382410 100644 --- a/src/video/pandora/SDL_pandora.c +++ b/src/video/pandora/SDL_pandora.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/pandora/SDL_pandora.h b/src/video/pandora/SDL_pandora.h index a5edcd419c..802365eed4 100644 --- a/src/video/pandora/SDL_pandora.h +++ b/src/video/pandora/SDL_pandora.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/pandora/SDL_pandora_events.c b/src/video/pandora/SDL_pandora_events.c index 32592821cd..eedbc29347 100644 --- a/src/video/pandora/SDL_pandora_events.c +++ b/src/video/pandora/SDL_pandora_events.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/pandora/SDL_pandora_events.h b/src/video/pandora/SDL_pandora_events.h index aefe6f74a5..e628d14a99 100644 --- a/src/video/pandora/SDL_pandora_events.h +++ b/src/video/pandora/SDL_pandora_events.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspevents.c b/src/video/psp/SDL_pspevents.c index 87bc52995a..d096c0616c 100644 --- a/src/video/psp/SDL_pspevents.c +++ b/src/video/psp/SDL_pspevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspevents_c.h b/src/video/psp/SDL_pspevents_c.h index e02c11db3b..af45c4d16d 100644 --- a/src/video/psp/SDL_pspevents_c.h +++ b/src/video/psp/SDL_pspevents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspgl.c b/src/video/psp/SDL_pspgl.c index fbbc20cc4b..d24e722928 100644 --- a/src/video/psp/SDL_pspgl.c +++ b/src/video/psp/SDL_pspgl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspgl_c.h b/src/video/psp/SDL_pspgl_c.h index 8b20d1544c..c0c15d9551 100644 --- a/src/video/psp/SDL_pspgl_c.h +++ b/src/video/psp/SDL_pspgl_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspmouse.c b/src/video/psp/SDL_pspmouse.c index 002a518b4d..8df3d614ea 100644 --- a/src/video/psp/SDL_pspmouse.c +++ b/src/video/psp/SDL_pspmouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspmouse_c.h b/src/video/psp/SDL_pspmouse_c.h index a0836a30a2..d14b84b9ad 100644 --- a/src/video/psp/SDL_pspmouse_c.h +++ b/src/video/psp/SDL_pspmouse_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspvideo.c b/src/video/psp/SDL_pspvideo.c index bc68a660d9..b3787239cc 100644 --- a/src/video/psp/SDL_pspvideo.c +++ b/src/video/psp/SDL_pspvideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/psp/SDL_pspvideo.h b/src/video/psp/SDL_pspvideo.h index 0ade001aba..2e1bb241b2 100644 --- a/src/video/psp/SDL_pspvideo.h +++ b/src/video/psp/SDL_pspvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpievents.c b/src/video/raspberry/SDL_rpievents.c index 7e8559c72a..cdfc746a7f 100644 --- a/src/video/raspberry/SDL_rpievents.c +++ b/src/video/raspberry/SDL_rpievents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpievents_c.h b/src/video/raspberry/SDL_rpievents_c.h index 54d3119d15..e69c5917f9 100644 --- a/src/video/raspberry/SDL_rpievents_c.h +++ b/src/video/raspberry/SDL_rpievents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpimouse.c b/src/video/raspberry/SDL_rpimouse.c index 6d222d3d92..718fef81b9 100644 --- a/src/video/raspberry/SDL_rpimouse.c +++ b/src/video/raspberry/SDL_rpimouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpimouse.h b/src/video/raspberry/SDL_rpimouse.h index aa8eec9ba7..a39e6549d5 100644 --- a/src/video/raspberry/SDL_rpimouse.h +++ b/src/video/raspberry/SDL_rpimouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpiopengles.c b/src/video/raspberry/SDL_rpiopengles.c index 46d7e02916..c6f462b2a0 100644 --- a/src/video/raspberry/SDL_rpiopengles.c +++ b/src/video/raspberry/SDL_rpiopengles.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpiopengles.h b/src/video/raspberry/SDL_rpiopengles.h index e1afa701e8..5ef8f8fffe 100644 --- a/src/video/raspberry/SDL_rpiopengles.h +++ b/src/video/raspberry/SDL_rpiopengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpivideo.c b/src/video/raspberry/SDL_rpivideo.c index f9922b5f5c..8391c762a2 100644 --- a/src/video/raspberry/SDL_rpivideo.c +++ b/src/video/raspberry/SDL_rpivideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/raspberry/SDL_rpivideo.h b/src/video/raspberry/SDL_rpivideo.h index 14be2e42ae..4de8983c3a 100644 --- a/src/video/raspberry/SDL_rpivideo.h +++ b/src/video/raspberry/SDL_rpivideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/sdlgenblit.pl b/src/video/sdlgenblit.pl index fb87f75094..091d5663ca 100755 --- a/src/video/sdlgenblit.pl +++ b/src/video/sdlgenblit.pl @@ -82,7 +82,7 @@ sub open_file { /* DO NOT EDIT! This file is generated by sdlgenblit.pl */ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitappdelegate.h b/src/video/uikit/SDL_uikitappdelegate.h index b375f2e302..d5430beb1b 100644 --- a/src/video/uikit/SDL_uikitappdelegate.h +++ b/src/video/uikit/SDL_uikitappdelegate.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitappdelegate.m b/src/video/uikit/SDL_uikitappdelegate.m index 7078ac5dea..a9924fbcaf 100644 --- a/src/video/uikit/SDL_uikitappdelegate.m +++ b/src/video/uikit/SDL_uikitappdelegate.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitevents.h b/src/video/uikit/SDL_uikitevents.h index 39ee4ca3e6..d9fb4ab36a 100644 --- a/src/video/uikit/SDL_uikitevents.h +++ b/src/video/uikit/SDL_uikitevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitevents.m b/src/video/uikit/SDL_uikitevents.m index c94bff4b9f..94fba878be 100644 --- a/src/video/uikit/SDL_uikitevents.m +++ b/src/video/uikit/SDL_uikitevents.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitmessagebox.h b/src/video/uikit/SDL_uikitmessagebox.h index f5817579ee..86af87b5cf 100644 --- a/src/video/uikit/SDL_uikitmessagebox.h +++ b/src/video/uikit/SDL_uikitmessagebox.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitmessagebox.m b/src/video/uikit/SDL_uikitmessagebox.m index c01f9bc86e..8fa8bc97b3 100644 --- a/src/video/uikit/SDL_uikitmessagebox.m +++ b/src/video/uikit/SDL_uikitmessagebox.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitmodes.h b/src/video/uikit/SDL_uikitmodes.h index edc4ca2e49..ae9ced6597 100644 --- a/src/video/uikit/SDL_uikitmodes.h +++ b/src/video/uikit/SDL_uikitmodes.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitmodes.m b/src/video/uikit/SDL_uikitmodes.m index 54c27736e2..dddb2f1454 100644 --- a/src/video/uikit/SDL_uikitmodes.m +++ b/src/video/uikit/SDL_uikitmodes.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitopengles.h b/src/video/uikit/SDL_uikitopengles.h index cb81648427..947678cae8 100644 --- a/src/video/uikit/SDL_uikitopengles.h +++ b/src/video/uikit/SDL_uikitopengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitopengles.m b/src/video/uikit/SDL_uikitopengles.m index f782ffd1f1..42303e3cb8 100644 --- a/src/video/uikit/SDL_uikitopengles.m +++ b/src/video/uikit/SDL_uikitopengles.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitopenglview.h b/src/video/uikit/SDL_uikitopenglview.h index 344ad6a5ee..f04b5b0bbd 100644 --- a/src/video/uikit/SDL_uikitopenglview.h +++ b/src/video/uikit/SDL_uikitopenglview.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitopenglview.m b/src/video/uikit/SDL_uikitopenglview.m index 4a9a69e868..c6daa1e43e 100644 --- a/src/video/uikit/SDL_uikitopenglview.m +++ b/src/video/uikit/SDL_uikitopenglview.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitvideo.h b/src/video/uikit/SDL_uikitvideo.h index 8969e91e96..ef62982570 100644 --- a/src/video/uikit/SDL_uikitvideo.h +++ b/src/video/uikit/SDL_uikitvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m index c19c637fbc..4893bc1633 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitview.h b/src/video/uikit/SDL_uikitview.h index 3921be136f..ce616c07eb 100644 --- a/src/video/uikit/SDL_uikitview.h +++ b/src/video/uikit/SDL_uikitview.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitview.m b/src/video/uikit/SDL_uikitview.m index 841ebbb34e..f890b7a8e8 100644 --- a/src/video/uikit/SDL_uikitview.m +++ b/src/video/uikit/SDL_uikitview.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitviewcontroller.h b/src/video/uikit/SDL_uikitviewcontroller.h index a69c1e1176..e8d595d9b5 100644 --- a/src/video/uikit/SDL_uikitviewcontroller.h +++ b/src/video/uikit/SDL_uikitviewcontroller.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitviewcontroller.m b/src/video/uikit/SDL_uikitviewcontroller.m index df7b90e67b..447b80b80d 100644 --- a/src/video/uikit/SDL_uikitviewcontroller.m +++ b/src/video/uikit/SDL_uikitviewcontroller.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitwindow.h b/src/video/uikit/SDL_uikitwindow.h index effad90c98..494b028f38 100644 --- a/src/video/uikit/SDL_uikitwindow.h +++ b/src/video/uikit/SDL_uikitwindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/SDL_uikitwindow.m b/src/video/uikit/SDL_uikitwindow.m index 08b91949e7..a1dd1a9e20 100644 --- a/src/video/uikit/SDL_uikitwindow.m +++ b/src/video/uikit/SDL_uikitwindow.m @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/uikit/keyinfotable.h b/src/video/uikit/keyinfotable.h index d588f915ee..1d16868c8c 100644 --- a/src/video/uikit/keyinfotable.h +++ b/src/video/uikit/keyinfotable.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylanddyn.c b/src/video/wayland/SDL_waylanddyn.c index c2ee8d84e4..1ed29db5c0 100644 --- a/src/video/wayland/SDL_waylanddyn.c +++ b/src/video/wayland/SDL_waylanddyn.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylanddyn.h b/src/video/wayland/SDL_waylanddyn.h index a1ff557164..8d9313a2de 100644 --- a/src/video/wayland/SDL_waylanddyn.h +++ b/src/video/wayland/SDL_waylanddyn.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandevents.c b/src/video/wayland/SDL_waylandevents.c index 568c668bd4..cb729001e8 100644 --- a/src/video/wayland/SDL_waylandevents.c +++ b/src/video/wayland/SDL_waylandevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandevents_c.h b/src/video/wayland/SDL_waylandevents_c.h index cc88cde9de..8a6c3fcd65 100644 --- a/src/video/wayland/SDL_waylandevents_c.h +++ b/src/video/wayland/SDL_waylandevents_c.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandmouse.c b/src/video/wayland/SDL_waylandmouse.c index 6f6605ea60..0752695719 100644 --- a/src/video/wayland/SDL_waylandmouse.c +++ b/src/video/wayland/SDL_waylandmouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandmouse.h b/src/video/wayland/SDL_waylandmouse.h index 3ccd7f1ce8..efd29d6ce5 100644 --- a/src/video/wayland/SDL_waylandmouse.h +++ b/src/video/wayland/SDL_waylandmouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandopengles.c b/src/video/wayland/SDL_waylandopengles.c index 47f0161c4b..45078043ca 100644 --- a/src/video/wayland/SDL_waylandopengles.c +++ b/src/video/wayland/SDL_waylandopengles.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -88,4 +88,4 @@ Wayland_GLES_DeleteContext(_THIS, SDL_GLContext context) #endif /* SDL_VIDEO_DRIVER_WAYLAND && SDL_VIDEO_OPENGL_EGL */ -/* vi: set ts=4 sw=4 expandtab: */ \ No newline at end of file +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/wayland/SDL_waylandopengles.h b/src/video/wayland/SDL_waylandopengles.h index 084a4bdd67..77081f81b2 100644 --- a/src/video/wayland/SDL_waylandopengles.h +++ b/src/video/wayland/SDL_waylandopengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandsym.h b/src/video/wayland/SDL_waylandsym.h index c810fab487..c3b4fa5089 100644 --- a/src/video/wayland/SDL_waylandsym.h +++ b/src/video/wayland/SDL_waylandsym.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -103,4 +103,4 @@ SDL_WAYLAND_SYM(enum xkb_state_component, xkb_state_update_mask, (struct xkb_sta /* *INDENT-ON* */ /* vi: set ts=4 sw=4 expandtab: */ -//SDL_WAYLAND_SYM(ret, fn, params) \ No newline at end of file +//SDL_WAYLAND_SYM(ret, fn, params) diff --git a/src/video/wayland/SDL_waylandtouch.c b/src/video/wayland/SDL_waylandtouch.c index 2c55d6d9ff..683c7029fc 100644 --- a/src/video/wayland/SDL_waylandtouch.c +++ b/src/video/wayland/SDL_waylandtouch.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandtouch.h b/src/video/wayland/SDL_waylandtouch.h index fe5149922e..435fd5624a 100644 --- a/src/video/wayland/SDL_waylandtouch.h +++ b/src/video/wayland/SDL_waylandtouch.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index 0d4ff19614..bc935b9bdf 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandvideo.h b/src/video/wayland/SDL_waylandvideo.h index 71f93044d5..06bcdc48de 100644 --- a/src/video/wayland/SDL_waylandvideo.h +++ b/src/video/wayland/SDL_waylandvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index 3b3fc1a6d1..f7b339cfcb 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/wayland/SDL_waylandwindow.h b/src/video/wayland/SDL_waylandwindow.h index 789c43d39a..c1190d521b 100644 --- a/src/video/wayland/SDL_waylandwindow.h +++ b/src/video/wayland/SDL_waylandwindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_vkeys.h b/src/video/windows/SDL_vkeys.h index ca24e8ff9f..1ed155a18d 100644 --- a/src/video/windows/SDL_vkeys.h +++ b/src/video/windows/SDL_vkeys.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsclipboard.c b/src/video/windows/SDL_windowsclipboard.c index 2af0570636..ae3a104aba 100644 --- a/src/video/windows/SDL_windowsclipboard.c +++ b/src/video/windows/SDL_windowsclipboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsclipboard.h b/src/video/windows/SDL_windowsclipboard.h index 53f5d729cd..49c36c4eea 100644 --- a/src/video/windows/SDL_windowsclipboard.h +++ b/src/video/windows/SDL_windowsclipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index 5b27d6d916..f448d2b1ea 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsevents.h b/src/video/windows/SDL_windowsevents.h index ccf7aa0008..b9944ee759 100644 --- a/src/video/windows/SDL_windowsevents.h +++ b/src/video/windows/SDL_windowsevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsframebuffer.c b/src/video/windows/SDL_windowsframebuffer.c index 29923bef39..4292db5a61 100644 --- a/src/video/windows/SDL_windowsframebuffer.c +++ b/src/video/windows/SDL_windowsframebuffer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsframebuffer.h b/src/video/windows/SDL_windowsframebuffer.h index c59d28e0cb..daa42b83e0 100644 --- a/src/video/windows/SDL_windowsframebuffer.h +++ b/src/video/windows/SDL_windowsframebuffer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowskeyboard.c b/src/video/windows/SDL_windowskeyboard.c index 86c0074ec4..0f3c9fcbfb 100644 --- a/src/video/windows/SDL_windowskeyboard.c +++ b/src/video/windows/SDL_windowskeyboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowskeyboard.h b/src/video/windows/SDL_windowskeyboard.h index cd5ee70e3d..3eb0cbf6ba 100644 --- a/src/video/windows/SDL_windowskeyboard.h +++ b/src/video/windows/SDL_windowskeyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsmessagebox.c b/src/video/windows/SDL_windowsmessagebox.c index a9fcfda650..6cffc8adf1 100644 --- a/src/video/windows/SDL_windowsmessagebox.c +++ b/src/video/windows/SDL_windowsmessagebox.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsmessagebox.h b/src/video/windows/SDL_windowsmessagebox.h index 1f79b16197..ea709a4aff 100644 --- a/src/video/windows/SDL_windowsmessagebox.h +++ b/src/video/windows/SDL_windowsmessagebox.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsmodes.c b/src/video/windows/SDL_windowsmodes.c index 43d0c97720..1687e277ad 100644 --- a/src/video/windows/SDL_windowsmodes.c +++ b/src/video/windows/SDL_windowsmodes.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsmodes.h b/src/video/windows/SDL_windowsmodes.h index e1926b1536..d16a5e7a82 100644 --- a/src/video/windows/SDL_windowsmodes.h +++ b/src/video/windows/SDL_windowsmodes.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 967e400da1..f7bcc10d75 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsmouse.h b/src/video/windows/SDL_windowsmouse.h index 5e88184e48..665cdc57bf 100644 --- a/src/video/windows/SDL_windowsmouse.h +++ b/src/video/windows/SDL_windowsmouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsopengl.c b/src/video/windows/SDL_windowsopengl.c index 53cf555e41..739e30ed15 100644 --- a/src/video/windows/SDL_windowsopengl.c +++ b/src/video/windows/SDL_windowsopengl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsopengl.h b/src/video/windows/SDL_windowsopengl.h index a331098d25..b96e0ac1e4 100644 --- a/src/video/windows/SDL_windowsopengl.h +++ b/src/video/windows/SDL_windowsopengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c index 79d3cc6ae2..9cb5218ac8 100644 --- a/src/video/windows/SDL_windowsopengles.c +++ b/src/video/windows/SDL_windowsopengles.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsopengles.h b/src/video/windows/SDL_windowsopengles.h index c94fe52e61..8e232177e9 100644 --- a/src/video/windows/SDL_windowsopengles.h +++ b/src/video/windows/SDL_windowsopengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsshape.c b/src/video/windows/SDL_windowsshape.c index 07b50560f0..9409e2b4d4 100644 --- a/src/video/windows/SDL_windowsshape.c +++ b/src/video/windows/SDL_windowsshape.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsshape.h b/src/video/windows/SDL_windowsshape.h index 4be4b51b8d..9405a501ef 100644 --- a/src/video/windows/SDL_windowsshape.h +++ b/src/video/windows/SDL_windowsshape.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsvideo.c b/src/video/windows/SDL_windowsvideo.c index b2cfcbe817..9ad5613e0b 100644 --- a/src/video/windows/SDL_windowsvideo.c +++ b/src/video/windows/SDL_windowsvideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowsvideo.h b/src/video/windows/SDL_windowsvideo.h index bf6613dedc..b64cbddfb4 100644 --- a/src/video/windows/SDL_windowsvideo.h +++ b/src/video/windows/SDL_windowsvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 9617dc0092..061608d2e2 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h index 743c322f71..99ae48878b 100644 --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11clipboard.c b/src/video/x11/SDL_x11clipboard.c index b2adde8dfe..2999d9837e 100644 --- a/src/video/x11/SDL_x11clipboard.c +++ b/src/video/x11/SDL_x11clipboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11clipboard.h b/src/video/x11/SDL_x11clipboard.h index 2c6c5516d5..46291cf608 100644 --- a/src/video/x11/SDL_x11clipboard.h +++ b/src/video/x11/SDL_x11clipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11dyn.c b/src/video/x11/SDL_x11dyn.c index fa7b3ab385..97760ba322 100644 --- a/src/video/x11/SDL_x11dyn.c +++ b/src/video/x11/SDL_x11dyn.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11dyn.h b/src/video/x11/SDL_x11dyn.h index f06fc60f2b..7d2e077c6a 100644 --- a/src/video/x11/SDL_x11dyn.h +++ b/src/video/x11/SDL_x11dyn.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index 1bf4219952..e99f91c55b 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11events.h b/src/video/x11/SDL_x11events.h index 0af685cbad..e27d53ac56 100644 --- a/src/video/x11/SDL_x11events.h +++ b/src/video/x11/SDL_x11events.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11framebuffer.c b/src/video/x11/SDL_x11framebuffer.c index 2bfc0ef4d4..19d9d0ba0c 100644 --- a/src/video/x11/SDL_x11framebuffer.c +++ b/src/video/x11/SDL_x11framebuffer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11framebuffer.h b/src/video/x11/SDL_x11framebuffer.h index f5fd4f3f99..c73c7487da 100644 --- a/src/video/x11/SDL_x11framebuffer.h +++ b/src/video/x11/SDL_x11framebuffer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11keyboard.c b/src/video/x11/SDL_x11keyboard.c index 6b8c4df78d..36034606e8 100644 --- a/src/video/x11/SDL_x11keyboard.c +++ b/src/video/x11/SDL_x11keyboard.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11keyboard.h b/src/video/x11/SDL_x11keyboard.h index 5cab9a595e..3d1631fe54 100644 --- a/src/video/x11/SDL_x11keyboard.h +++ b/src/video/x11/SDL_x11keyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11messagebox.c b/src/video/x11/SDL_x11messagebox.c index 7d0cb25b17..2a98e3c3e3 100644 --- a/src/video/x11/SDL_x11messagebox.c +++ b/src/video/x11/SDL_x11messagebox.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11messagebox.h b/src/video/x11/SDL_x11messagebox.h index 9b270f8217..d2d171288e 100644 --- a/src/video/x11/SDL_x11messagebox.h +++ b/src/video/x11/SDL_x11messagebox.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c index c5a1d79968..6336f0cab3 100644 --- a/src/video/x11/SDL_x11modes.c +++ b/src/video/x11/SDL_x11modes.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11modes.h b/src/video/x11/SDL_x11modes.h index 7103d721f3..82af1d2d8b 100644 --- a/src/video/x11/SDL_x11modes.h +++ b/src/video/x11/SDL_x11modes.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11mouse.c b/src/video/x11/SDL_x11mouse.c index ea0f32dad6..38bb86656d 100644 --- a/src/video/x11/SDL_x11mouse.c +++ b/src/video/x11/SDL_x11mouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11mouse.h b/src/video/x11/SDL_x11mouse.h index d50bc32451..8a2dac0ea2 100644 --- a/src/video/x11/SDL_x11mouse.h +++ b/src/video/x11/SDL_x11mouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11opengl.c b/src/video/x11/SDL_x11opengl.c index 73a65571e1..1d2603e0b8 100644 --- a/src/video/x11/SDL_x11opengl.c +++ b/src/video/x11/SDL_x11opengl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11opengl.h b/src/video/x11/SDL_x11opengl.h index fcf7fe24d7..ed7f292d45 100644 --- a/src/video/x11/SDL_x11opengl.h +++ b/src/video/x11/SDL_x11opengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11opengles.c b/src/video/x11/SDL_x11opengles.c index a6cdeebc84..bce59b1085 100644 --- a/src/video/x11/SDL_x11opengles.c +++ b/src/video/x11/SDL_x11opengles.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11opengles.h b/src/video/x11/SDL_x11opengles.h index 16480c3984..f6ea71eb74 100644 --- a/src/video/x11/SDL_x11opengles.h +++ b/src/video/x11/SDL_x11opengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11shape.c b/src/video/x11/SDL_x11shape.c index 1d5ae764fe..5152094649 100644 --- a/src/video/x11/SDL_x11shape.c +++ b/src/video/x11/SDL_x11shape.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11shape.h b/src/video/x11/SDL_x11shape.h index 3a3663d8ee..68118cfeb1 100644 --- a/src/video/x11/SDL_x11shape.h +++ b/src/video/x11/SDL_x11shape.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11sym.h b/src/video/x11/SDL_x11sym.h index 1ee982b556..9678bac541 100644 --- a/src/video/x11/SDL_x11sym.h +++ b/src/video/x11/SDL_x11sym.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11touch.c b/src/video/x11/SDL_x11touch.c index 0e83d6c2da..a6da04633b 100644 --- a/src/video/x11/SDL_x11touch.c +++ b/src/video/x11/SDL_x11touch.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11touch.h b/src/video/x11/SDL_x11touch.h index 71263d156d..84de8d63dd 100644 --- a/src/video/x11/SDL_x11touch.h +++ b/src/video/x11/SDL_x11touch.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index 065211db49..63cfa98245 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 005ca5d6b0..68198beccd 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11window.c b/src/video/x11/SDL_x11window.c index fe2596d543..f5ae655bc3 100644 --- a/src/video/x11/SDL_x11window.c +++ b/src/video/x11/SDL_x11window.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11window.h b/src/video/x11/SDL_x11window.h index b8eda772f0..cf0d7f799c 100644 --- a/src/video/x11/SDL_x11window.h +++ b/src/video/x11/SDL_x11window.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 967ddeb729..38c0dd32c4 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/x11/SDL_x11xinput2.h b/src/video/x11/SDL_x11xinput2.h index ee0e276369..3e7178cb91 100644 --- a/src/video/x11/SDL_x11xinput2.h +++ b/src/video/x11/SDL_x11xinput2.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/checkkeys.c b/test/checkkeys.c index 5f2d148476..e157b28923 100644 --- a/test/checkkeys.c +++ b/test/checkkeys.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/controllermap.c b/test/controllermap.c index df4c892c68..2366afea96 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/loopwave.c b/test/loopwave.c index 34d07c2b21..dc3482c02a 100644 --- a/test/loopwave.c +++ b/test/loopwave.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testatomic.c b/test/testatomic.c index b360616d23..006fdedf78 100644 --- a/test/testatomic.c +++ b/test/testatomic.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testaudioinfo.c b/test/testaudioinfo.c index a65db5fa13..76ac942876 100644 --- a/test/testaudioinfo.c +++ b/test/testaudioinfo.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testautomation.c b/test/testautomation.c index 0a181bd9bd..8eab76e9ca 100644 --- a/test/testautomation.c +++ b/test/testautomation.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testdraw2.c b/test/testdraw2.c index 62e2dbf64a..8c14185cbc 100644 --- a/test/testdraw2.c +++ b/test/testdraw2.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testdrawchessboard.c b/test/testdrawchessboard.c index bb30bd8d58..3e6179e147 100644 --- a/test/testdrawchessboard.c +++ b/test/testdrawchessboard.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testdropfile.c b/test/testdropfile.c index 9f4fa7b6a1..ca868eeafd 100644 --- a/test/testdropfile.c +++ b/test/testdropfile.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testerror.c b/test/testerror.c index e9c76ff1f6..1fa60885bd 100644 --- a/test/testerror.c +++ b/test/testerror.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testfile.c b/test/testfile.c index 57ba02f58d..172da865c0 100644 --- a/test/testfile.c +++ b/test/testfile.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testfilesystem.c b/test/testfilesystem.c index e1f251371e..701b98ad69 100644 --- a/test/testfilesystem.c +++ b/test/testfilesystem.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testgamecontroller.c b/test/testgamecontroller.c index 77d63f2d64..440721dc84 100644 --- a/test/testgamecontroller.c +++ b/test/testgamecontroller.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testgesture.c b/test/testgesture.c index 89008fb3c9..f2cf694f3f 100644 --- a/test/testgesture.c +++ b/test/testgesture.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testgl2.c b/test/testgl2.c index f51efe90dc..851485153e 100644 --- a/test/testgl2.c +++ b/test/testgl2.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testgles.c b/test/testgles.c index 314ec7cd89..588cbfb305 100644 --- a/test/testgles.c +++ b/test/testgles.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testgles2.c b/test/testgles2.c index 32b19df413..6e99827b02 100644 --- a/test/testgles2.c +++ b/test/testgles2.c @@ -1,5 +1,5 @@ /* - Copyright (r) 1997-2011 Sam Lantinga + Copyright (r) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testhaptic.c b/test/testhaptic.c index 1e9dd3bdb5..5e335674c2 100644 --- a/test/testhaptic.c +++ b/test/testhaptic.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testiconv.c b/test/testiconv.c index 3165b3426e..1ab4c0368d 100644 --- a/test/testiconv.c +++ b/test/testiconv.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testime.c b/test/testime.c index 3d9789ad68..6f7b6a54d0 100644 --- a/test/testime.c +++ b/test/testime.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testintersections.c b/test/testintersections.c index b4deeecd01..7ea3b5553c 100644 --- a/test/testintersections.c +++ b/test/testintersections.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testjoystick.c b/test/testjoystick.c index 2984145dcd..3e90e98d8e 100644 --- a/test/testjoystick.c +++ b/test/testjoystick.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testkeys.c b/test/testkeys.c index f4a35aba69..97f52a4482 100644 --- a/test/testkeys.c +++ b/test/testkeys.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testloadso.c b/test/testloadso.c index 946aafd20c..da7bab98ab 100644 --- a/test/testloadso.c +++ b/test/testloadso.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testlock.c b/test/testlock.c index 0414fe3168..9ca3ca1994 100644 --- a/test/testlock.c +++ b/test/testlock.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testmessage.c b/test/testmessage.c index 254bd9b3d3..005c479986 100644 --- a/test/testmessage.c +++ b/test/testmessage.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testmultiaudio.c b/test/testmultiaudio.c index 48d628ae35..f0f1ce1c73 100644 --- a/test/testmultiaudio.c +++ b/test/testmultiaudio.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testnative.c b/test/testnative.c index 0ac99b2a3e..c010445f81 100644 --- a/test/testnative.c +++ b/test/testnative.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testnative.h b/test/testnative.h index 275c0d616d..fa0bffc3a5 100644 --- a/test/testnative.h +++ b/test/testnative.h @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2011 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testnativew32.c b/test/testnativew32.c index 2cb57ddebf..f43c22099a 100644 --- a/test/testnativew32.c +++ b/test/testnativew32.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testnativex11.c b/test/testnativex11.c index 9f4150c493..b60c999e50 100644 --- a/test/testnativex11.c +++ b/test/testnativex11.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testoverlay2.c b/test/testoverlay2.c index 4561f98458..441e1f3384 100644 --- a/test/testoverlay2.c +++ b/test/testoverlay2.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testplatform.c b/test/testplatform.c index d3da8a7196..ae367ff4b3 100644 --- a/test/testplatform.c +++ b/test/testplatform.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testpower.c b/test/testpower.c index 1b32143936..058a53fc27 100644 --- a/test/testpower.c +++ b/test/testpower.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testrelative.c b/test/testrelative.c index 9e8e1e2d0e..955a43048e 100644 --- a/test/testrelative.c +++ b/test/testrelative.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testrendercopyex.c b/test/testrendercopyex.c index 0c8ad7defd..95a77a17f1 100644 --- a/test/testrendercopyex.c +++ b/test/testrendercopyex.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testrendertarget.c b/test/testrendertarget.c index ac4aa50040..61a3a5fdde 100644 --- a/test/testrendertarget.c +++ b/test/testrendertarget.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testresample.c b/test/testresample.c index a6e859d36b..783350520e 100644 --- a/test/testresample.c +++ b/test/testresample.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testrumble.c b/test/testrumble.c index ffcaae4a84..74a7e98fc3 100644 --- a/test/testrumble.c +++ b/test/testrumble.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testscale.c b/test/testscale.c index 8449f233d9..edd2c2fd32 100644 --- a/test/testscale.c +++ b/test/testscale.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testsem.c b/test/testsem.c index 6a2a59e675..ca71ec2e65 100644 --- a/test/testsem.c +++ b/test/testsem.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testshader.c b/test/testshader.c index ced43fd968..91ce33130c 100644 --- a/test/testshader.c +++ b/test/testshader.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testshape.c b/test/testshape.c index bffa540e8c..38465df7cc 100644 --- a/test/testshape.c +++ b/test/testshape.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testsprite2.c b/test/testsprite2.c index e61081036f..945280f9fb 100644 --- a/test/testsprite2.c +++ b/test/testsprite2.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testspriteminimal.c b/test/testspriteminimal.c index 157293f306..bdcb8b3895 100644 --- a/test/testspriteminimal.c +++ b/test/testspriteminimal.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/teststreaming.c b/test/teststreaming.c index 1d3f68250f..3b6bbda900 100644 --- a/test/teststreaming.c +++ b/test/teststreaming.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testthread.c b/test/testthread.c index ed9f1f182f..d732320a5e 100644 --- a/test/testthread.c +++ b/test/testthread.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testtimer.c b/test/testtimer.c index ea985e2645..ef6bcb6a8b 100644 --- a/test/testtimer.c +++ b/test/testtimer.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testver.c b/test/testver.c index cf3a545985..e59381f433 100644 --- a/test/testver.c +++ b/test/testver.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testviewport.c b/test/testviewport.c index 022d9880d9..c9d3234090 100644 --- a/test/testviewport.c +++ b/test/testviewport.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/testwm2.c b/test/testwm2.c index 127a4d8773..186e0827a3 100644 --- a/test/testwm2.c +++ b/test/testwm2.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/test/torturethread.c b/test/torturethread.c index b22ee2af7a..bc4e1132f6 100644 --- a/test/torturethread.c +++ b/test/torturethread.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages From 4280ebc28752342bed3c2e7bec5630dea9632853 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 2 Feb 2014 20:55:42 +0100 Subject: [PATCH 255/402] Added additional platform check for __ANDROID__. The macro ANDROID was deprecated with "android-ndk-1.6_r1". --- include/SDL_platform.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/SDL_platform.h b/include/SDL_platform.h index 5856e168e1..afe3389133 100644 --- a/include/SDL_platform.h +++ b/include/SDL_platform.h @@ -60,7 +60,7 @@ #undef __LINUX__ #define __LINUX__ 1 #endif -#if defined(ANDROID) +#if defined(ANDROID) || defined(__ANDROID__) #undef __ANDROID__ #undef __LINUX__ /* do we need to do this? */ #define __ANDROID__ 1 From 5e742260414250ac00ffb85af8c8bd30df59ecc9 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 2 Feb 2014 20:58:46 +0100 Subject: [PATCH 256/402] Fixed including SDL_internal.h twice for DirectFB. --- src/video/directfb/SDL_DirectFB_video.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/video/directfb/SDL_DirectFB_video.c b/src/video/directfb/SDL_DirectFB_video.c index 4135fe01e6..55e9ece3c8 100644 --- a/src/video/directfb/SDL_DirectFB_video.c +++ b/src/video/directfb/SDL_DirectFB_video.c @@ -35,8 +35,6 @@ #include "SDL_DirectFB_WM.h" -#include "../../SDL_internal.h" - /* DirectFB video driver implementation. */ From 3b5d993830569fead2c77f5184b4059f4bb2f550 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Feb 2014 21:38:16 -0500 Subject: [PATCH 257/402] Ignore the buildbot build directories. --- .hgignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.hgignore b/.hgignore index c4b1187798..c04bfc01ad 100644 --- a/.hgignore +++ b/.hgignore @@ -96,3 +96,5 @@ test/testwm2 test/torturethread test/*.exe test/*.dSYM +buildbot +test/buildbot From 2459ecba83e8abc2141eb390368e22644fed3211 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Feb 2014 23:41:46 -0500 Subject: [PATCH 258/402] Added Mir video target (thanks, Brandon!). --- CMakeLists.txt | 2 + cmake/sdlchecks.cmake | 21 ++ configure | 100 +++++++++ configure.in | 37 ++++ include/SDL_config.h.cmake | 1 + include/SDL_config.h.in | 1 + include/SDL_syswm.h | 1 + src/video/SDL_sysvideo.h | 3 + src/video/SDL_video.c | 3 + src/video/mir/SDL_mirevents.c | 246 ++++++++++++++++++++++ src/video/mir/SDL_mirevents.h | 36 ++++ src/video/mir/SDL_mirframebuffer.c | 146 +++++++++++++ src/video/mir/SDL_mirframebuffer.h | 46 +++++ src/video/mir/SDL_mirmouse.c | 145 +++++++++++++ src/video/mir/SDL_mirmouse.h | 37 ++++ src/video/mir/SDL_miropengl.c | 122 +++++++++++ src/video/mir/SDL_miropengl.h | 57 ++++++ src/video/mir/SDL_mirvideo.c | 319 +++++++++++++++++++++++++++++ src/video/mir/SDL_mirvideo.h | 40 ++++ src/video/mir/SDL_mirwindow.c | 216 +++++++++++++++++++ src/video/mir/SDL_mirwindow.h | 69 +++++++ 21 files changed, 1648 insertions(+) create mode 100644 src/video/mir/SDL_mirevents.c create mode 100644 src/video/mir/SDL_mirevents.h create mode 100644 src/video/mir/SDL_mirframebuffer.c create mode 100644 src/video/mir/SDL_mirframebuffer.h create mode 100644 src/video/mir/SDL_mirmouse.c create mode 100644 src/video/mir/SDL_mirmouse.h create mode 100644 src/video/mir/SDL_miropengl.c create mode 100644 src/video/mir/SDL_miropengl.h create mode 100644 src/video/mir/SDL_mirvideo.c create mode 100644 src/video/mir/SDL_mirvideo.h create mode 100644 src/video/mir/SDL_mirwindow.c create mode 100644 src/video/mir/SDL_mirwindow.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f206fb5821..8aa8fd7eaf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -231,6 +231,7 @@ set_option(SNDIO "Support the sndio audio API" ${UNIX_SYS}) set_option(RPATH "Use an rpath when linking SDL" ${UNIX_SYS}) set_option(CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" OFF) set_option(INPUT_TSLIB "Use the Touchscreen library for input" ${UNIX_SYS}) +set_option(VIDEO_MIR "Use Mir video driver" ${UNIX_SYS}) set_option(VIDEO_X11 "Use X11 video driver" ${UNIX_SYS}) set_option(VIDEO_WAYLAND "Use Wayland video driver" ${UNIX_SYS}) dep_option(X11_SHARED "Dynamically load X11 support" ON "VIDEO_X11" OFF) @@ -654,6 +655,7 @@ if(UNIX AND NOT APPLE) if(SDL_VIDEO) CheckX11() + CheckMir() CheckDirectFB() CheckOpenGLX11() CheckOpenGLESX11() diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index 0dc549eae2..2e48d27bb7 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -505,6 +505,27 @@ macro(CheckX11) endif(VIDEO_X11) endmacro(CheckX11) +macro(CheckMir) + if(VIDEO_MIR) + find_library(MIR_LIB mirclient mircommon egl) + pkg_check_modules(MIR_TOOLKIT mirclient mircommon) + pkg_check_modules(EGL egl) + pkg_check_modules(XKB xkbcommon) + + if (MIR_LIB AND MIR_TOOLKIT_FOUND AND EGL_FOUND AND XKB_FOUND) + set(HAVE_VIDEO_MIR TRUE) + set(HAVE_SDL_VIDEO TRUE) + + file(GLOB MIR_SOURCES ${SDL2_SOURCE_DIR}/src/video/mir/*.c) + set(SOURCE_FILES ${SOURCE_FILES} ${MIR_SOURCES}) + set(SDL_VIDEO_DRIVER_MIR 1) + + list(APPEND EXTRA_CFLAGS ${MIR_TOOLKIT_CFLAGS} ${EGL_CLFAGS} ${XKB_CLFLAGS}) + list(APPEND EXTRA_LDFLAGS ${MIR_TOOLKIT_LDFLAGS} ${EGL_LDLAGS} ${XKB_LDLAGS}) + endif (MIR_LIB AND MIR_TOOLKIT_FOUND AND EGL_FOUND AND XKB_FOUND) + endif(VIDEO_MIR) +endmacro(CheckMir) + # Requires: # - EGL macro(CheckWayland) diff --git a/configure b/configure index a2e554f037..ff1802ead6 100755 --- a/configure +++ b/configure @@ -817,6 +817,7 @@ enable_sndio enable_sndio_shared enable_diskaudio enable_dummyaudio +enable_video_mir enable_video_wayland enable_video_wayland_qt_touch enable_wayland_shared @@ -1534,6 +1535,7 @@ Optional Features: --enable-sndio-shared dynamically load sndio audio support [[default=yes]] --enable-diskaudio support the disk writer audio driver [[default=yes]] --enable-dummyaudio support the dummy audio driver [[default=yes]] + --enable-video-mir use Mir video driver [[default=yes]] --enable-video-wayland use Wayland video driver [[default=yes]] --enable-video-wayland-qt-touch QtWayland server support for Wayland video driver @@ -18627,6 +18629,103 @@ $as_echo "$have_gcc_preferred_stack_boundary" >&6; } fi } +CheckMir() +{ + # Check whether --enable-video-mir was given. +if test "${enable_video_mir+set}" = set; then : + enableval=$enable_video_mir; +else + enable_video_mir=yes +fi + + + if test x$enable_video = xyes -a x$enable_video_mir = xyes; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + if test x$PKG_CONFIG != xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mir support" >&5 +$as_echo_n "checking for Mir support... " >&6; } + video_mir=no + tmp_CFLAGS="$CFLAGS" + CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + +int +main () +{ + + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + video_mir=yes + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CFLAGS="$tmp_CFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_mir" >&5 +$as_echo "$video_mir" >&6; } + + if test x$video_mir = xyes; then + $as_echo "#define SDL_VIDEO_DRIVER_MIR 1" >>confdefs.h + + SOURCES="$SOURCES $srcdir/src/video/mir/*.c" + EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs egl mirclient xkbcommon`" + have_video=yes + fi + fi + fi +} CheckWarnAll() { @@ -22451,6 +22550,7 @@ case "$host" in CheckSNDIO CheckX11 CheckWayland + CheckMir CheckDirectFB CheckFusionSound CheckOpenGLX11 diff --git a/configure.in b/configure.in index 69f650aa66..d1e9e6632f 100644 --- a/configure.in +++ b/configure.in @@ -1124,6 +1124,42 @@ CheckStackBoundary() fi } +CheckMir() +{ + AC_ARG_ENABLE(video-mir, + AC_HELP_STRING([--enable-video-mir], [use Mir video driver [[default=yes]]]), + , enable_video_mir=yes) + + if test x$enable_video = xyes -a x$enable_video_mir = xyes; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + + if test x$PKG_CONFIG != xno; then + AC_MSG_CHECKING(for Mir support) + video_mir=no + tmp_CFLAGS="$CFLAGS" + CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" + + AC_TRY_COMPILE([ + #include + #include + #include + ],[ + ],[ + video_mir=yes + ]) + CFLAGS="$tmp_CFLAGS" + AC_MSG_RESULT($video_mir) + + if test x$video_mir = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_MIR) + SOURCES="$SOURCES $srcdir/src/video/mir/*.c" + EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs egl mirclient xkbcommon`" + have_video=yes + fi + fi + fi +} dnl See if GCC's -Wall is supported. CheckWarnAll() @@ -2612,6 +2648,7 @@ case "$host" in CheckSNDIO CheckX11 CheckWayland + CheckMir CheckDirectFB CheckFusionSound CheckOpenGLX11 diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index e21afbde21..ca731f3f96 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -259,6 +259,7 @@ #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@ #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@ #cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@ +#cmakedefine SDL_VIDEO_DRIVER_MIR @SDL_VIDEO_DRIVER_MIR@ #cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index 5cfeb75df0..eb9d805c36 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -267,6 +267,7 @@ #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON +#undef SDL_VIDEO_DRIVER_MIR #undef SDL_VIDEO_DRIVER_X11 #undef SDL_VIDEO_DRIVER_RPI #undef SDL_VIDEO_DRIVER_X11_DYNAMIC diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index ff4d47e853..c26f141faa 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -105,6 +105,7 @@ typedef enum SDL_SYSWM_COCOA, SDL_SYSWM_UIKIT, SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, } SDL_SYSWM_TYPE; /** diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h index 47240dbea9..3ff352a1a9 100644 --- a/src/video/SDL_sysvideo.h +++ b/src/video/SDL_sysvideo.h @@ -345,6 +345,9 @@ extern VideoBootStrap COCOA_bootstrap; #if SDL_VIDEO_DRIVER_X11 extern VideoBootStrap X11_bootstrap; #endif +#if SDL_VIDEO_DRIVER_MIR +extern VideoBootStrap MIR_bootstrap; +#endif #if SDL_VIDEO_DRIVER_DIRECTFB extern VideoBootStrap DirectFB_bootstrap; #endif diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 65df4bc997..338a4cc96d 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -59,6 +59,9 @@ static VideoBootStrap *bootstrap[] = { #if SDL_VIDEO_DRIVER_X11 &X11_bootstrap, #endif +#if SDL_VIDEO_DRIVER_MIR + &MIR_bootstrap, +#endif #if SDL_VIDEO_DRIVER_DIRECTFB &DirectFB_bootstrap, #endif diff --git a/src/video/mir/SDL_mirevents.c b/src/video/mir/SDL_mirevents.c new file mode 100644 index 0000000000..4ac377a60e --- /dev/null +++ b/src/video/mir/SDL_mirevents.c @@ -0,0 +1,246 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#include "../../events/SDL_events_c.h" +#include "../../events/SDL_keyboard_c.h" +#include "../../events/SDL_touch_c.h" +#include "../../events/scancodes_xfree86.h" + +#include "SDL_mirevents.h" +#include "SDL_mirwindow.h" + +#include + +static void +HandleKeyText(int32_t key_code) +{ + char text[8]; + int size = 0; + + size = xkb_keysym_to_utf8(key_code, text, sizeof text); + + if (size > 0) { + text[size] = '\0'; + SDL_SendKeyboardText(text); + } +} + +static void +CheckKeyboardFocus(SDL_Window* sdl_window) +{ + SDL_Window* keyboard_window = SDL_GetKeyboardFocus(); + + if (keyboard_window != sdl_window) + SDL_SetKeyboardFocus(sdl_window); +} + + +/* FIXME + Mir still needs to implement its IM API, for now we assume + a single key press produces a character. +*/ +static void +HandleKeyEvent(MirKeyEvent const ev, SDL_Window* window) +{ + uint32_t scancode = SDL_SCANCODE_UNKNOWN; + Uint8 key_state = ev.action == mir_key_action_up ? SDL_RELEASED : SDL_PRESSED; + + CheckKeyboardFocus(window); + + if (ev.scan_code < SDL_arraysize(xfree86_scancode_table2)) + scancode = xfree86_scancode_table2[ev.scan_code]; + + if (scancode != SDL_SCANCODE_UNKNOWN) + SDL_SendKeyboardKey(key_state, scancode); + + if (key_state == SDL_PRESSED) + HandleKeyText(ev.key_code); +} + +static void +HandleMouseButton(SDL_Window* sdl_window, Uint8 state, MirMotionButton button_state) +{ + static uint32_t last_sdl_button; + uint32_t sdl_button; + + switch (button_state) { + case mir_motion_button_primary: + sdl_button = SDL_BUTTON_LEFT; + break; + case mir_motion_button_secondary: + sdl_button = SDL_BUTTON_RIGHT; + break; + case mir_motion_button_tertiary: + sdl_button = SDL_BUTTON_MIDDLE; + break; + case mir_motion_button_forward: + sdl_button = SDL_BUTTON_X1; + break; + case mir_motion_button_back: + sdl_button = SDL_BUTTON_X2; + break; + default: + sdl_button = last_sdl_button; + break; + } + + last_sdl_button = sdl_button; + SDL_SendMouseButton(sdl_window, 0, state, sdl_button); +} + +static void +HandleTouchPress(int device_id, int source_id, SDL_bool down, float x, float y, float pressure) +{ + SDL_SendTouch(device_id, source_id, down, x, y, pressure); +} + +static void +HandleTouchMotion(int device_id, int source_id, float x, float y, float pressure) +{ + SDL_SendTouchMotion(device_id, source_id, x, y, pressure); +} + +static void +HandleMouseMotion(SDL_Window* sdl_window, int x, int y) +{ + SDL_SendMouseMotion(sdl_window, 0, 0, x, y); +} + +static void +HandleMouseScroll(SDL_Window* sdl_window, int hscroll, int vscroll) +{ + SDL_SendMouseWheel(sdl_window, 0, hscroll, vscroll); +} + +static void +AddTouchDevice(int device_id) +{ + if (SDL_AddTouch(device_id, "") < 0) + SDL_SetError("Error: can't add touch %s, %d", __FILE__, __LINE__); +} + +static void +HandleTouchEvent(MirMotionEvent const motion, int cord_index, SDL_Window* sdl_window) +{ + int device_id = motion.device_id; + int id = motion.pointer_coordinates[cord_index].id; + + int width = sdl_window->w; + int height = sdl_window->h; + float x = motion.pointer_coordinates[cord_index].x; + float y = motion.pointer_coordinates[cord_index].y; + + float n_x = x / width; + float n_y = y / height; + float pressure = motion.pointer_coordinates[cord_index].pressure; + + AddTouchDevice(motion.device_id); + + switch (motion.action) { + case mir_motion_action_down: + case mir_motion_action_pointer_down: + HandleTouchPress(device_id, id, SDL_TRUE, n_x, n_y, pressure); + break; + case mir_motion_action_up: + case mir_motion_action_pointer_up: + HandleTouchPress(device_id, id, SDL_FALSE, n_x, n_y, pressure); + break; + case mir_motion_action_hover_move: + case mir_motion_action_move: + HandleTouchMotion(device_id, id, n_x, n_y, pressure); + break; + default: + break; + } +} + +static void +HandleMouseEvent(MirMotionEvent const motion, int cord_index, SDL_Window* sdl_window) +{ + SDL_SetMouseFocus(sdl_window); + + switch (motion.action) { + case mir_motion_action_down: + case mir_motion_action_pointer_down: + HandleMouseButton(sdl_window, SDL_PRESSED, motion.button_state); + break; + case mir_motion_action_up: + case mir_motion_action_pointer_up: + HandleMouseButton(sdl_window, SDL_RELEASED, motion.button_state); + break; + case mir_motion_action_hover_move: + case mir_motion_action_move: + HandleMouseMotion(sdl_window, + motion.pointer_coordinates[cord_index].x, + motion.pointer_coordinates[cord_index].y); + break; + case mir_motion_action_outside: + SDL_SetMouseFocus(NULL); + break; + case mir_motion_action_scroll: + HandleMouseScroll(sdl_window, + motion.pointer_coordinates[cord_index].hscroll, + motion.pointer_coordinates[cord_index].vscroll); + break; + case mir_motion_action_cancel: + case mir_motion_action_hover_enter: + case mir_motion_action_hover_exit: + break; + default: + break; + } +} + +static void +HandleMotionEvent(MirMotionEvent const motion, SDL_Window* sdl_window) +{ + int cord_index; + for (cord_index = 0; cord_index < motion.pointer_count; cord_index++) { + if (motion.pointer_coordinates[cord_index].tool_type == mir_motion_tool_type_mouse) { + HandleMouseEvent(motion, cord_index, sdl_window); + } + else if (motion.pointer_coordinates[cord_index].tool_type == mir_motion_tool_type_finger) { + HandleTouchEvent(motion, cord_index, sdl_window); + } + } +} + +void +MIR_HandleInput(MirSurface* surface, MirEvent const* ev, void* context) +{ + SDL_Window* window = (SDL_Window*)context; + switch (ev->type) { + case (mir_event_type_key): + HandleKeyEvent(ev->key, window); + break; + case (mir_event_type_motion): + HandleMotionEvent(ev->motion, window); + break; + default: + break; + } +} diff --git a/src/video/mir/SDL_mirevents.h b/src/video/mir/SDL_mirevents.h new file mode 100644 index 0000000000..1be183aa3c --- /dev/null +++ b/src/video/mir/SDL_mirevents.h @@ -0,0 +1,36 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#ifndef _SDL_mirevents_h +#define _SDL_mirevents_h + +#include + +extern void +MIR_HandleInput(MirSurface* surface, MirEvent const* ev, void* context); + +#endif /* _SDL_mirevents_h */ diff --git a/src/video/mir/SDL_mirframebuffer.c b/src/video/mir/SDL_mirframebuffer.c new file mode 100644 index 0000000000..b0b77df391 --- /dev/null +++ b/src/video/mir/SDL_mirframebuffer.c @@ -0,0 +1,146 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" +#include "SDL_mirevents.h" +#include "SDL_mirframebuffer.h" +#include "SDL_mirwindow.h" + +static const Uint32 mir_pixel_format_to_sdl_format[] = { + SDL_PIXELFORMAT_UNKNOWN, /* mir_pixel_format_invalid */ + SDL_PIXELFORMAT_ABGR8888, /* mir_pixel_format_abgr_8888 */ + SDL_PIXELFORMAT_BGR888, /* mir_pixel_format_xbgr_8888 */ + SDL_PIXELFORMAT_ARGB8888, /* mir_pixel_format_argb_8888 */ + SDL_PIXELFORMAT_RGB888, /* mir_pixel_format_xrgb_8888 */ + SDL_PIXELFORMAT_BGR24 /* mir_pixel_format_bgr_888 */ +}; + +Uint32 +MIR_GetSDLPixelFormat(MirPixelFormat format) +{ + return mir_pixel_format_to_sdl_format[format]; +} + +int +MIR_CreateWindowFramebuffer(_THIS, SDL_Window* window, Uint32* format, + void** pixels, int* pitch) +{ + MIR_Data* mir_data = _this->driverdata; + MIR_Window* mir_window; + MirSurfaceParameters surfaceparm; + + if (MIR_CreateWindow(_this, window) < 0) + return SDL_SetError("Failed to created a mir window."); + + mir_window = window->driverdata; + + mir_surface_get_parameters(mir_window->surface, &surfaceparm); + + *format = MIR_GetSDLPixelFormat(surfaceparm.pixel_format); + if (*format == SDL_PIXELFORMAT_UNKNOWN) + return SDL_SetError("Unknown pixel format"); + + *pitch = (((window->w * SDL_BYTESPERPIXEL(*format)) + 3) & ~3); + + *pixels = SDL_malloc(window->h*(*pitch)); + if (*pixels == NULL) + return SDL_OutOfMemory(); + + mir_window->surface = mir_connection_create_surface_sync(mir_data->connection, &surfaceparm); + if (!mir_surface_is_valid(mir_window->surface)) { + const char* error = mir_surface_get_error_message(mir_window->surface); + return SDL_SetError("Failed to created a mir surface: %s", error); + } + + return 0; +} + +int +MIR_UpdateWindowFramebuffer(_THIS, SDL_Window* window, + const SDL_Rect* rects, int numrects) +{ + MIR_Window* mir_window = window->driverdata; + + MirGraphicsRegion region; + int i, j, x, y, w, h, start; + int bytes_per_pixel, bytes_per_row, s_stride, d_stride; + + mir_surface_get_graphics_region(mir_window->surface, ®ion); + + char* s_dest = region.vaddr; + char* pixels = (char*)window->surface->pixels; + + s_stride = window->surface->pitch; + d_stride = region.stride; + bytes_per_pixel = window->surface->format->BytesPerPixel; + + for (i = 0; i < numrects; i++) { + s_dest = region.vaddr; + pixels = (char*)window->surface->pixels; + + x = rects[i].x; + y = rects[i].y; + w = rects[i].w; + h = rects[i].h; + + if (w <= 0 || h <= 0 || (x + w) <= 0 || (y + h) <= 0) + continue; + + if (x < 0) { + x += w; + w += rects[i].x; + } + + if (y < 0) { + y += h; + h += rects[i].y; + } + + if (x + w > window->w) + w = window->w - x; + if (y + h > window->h) + h = window->h - y; + + start = y * s_stride + x; + pixels += start; + s_dest += start; + + bytes_per_row = bytes_per_pixel * w; + for (j = 0; j < h; j++) { + memcpy(s_dest, pixels, bytes_per_row); + pixels += s_stride; + s_dest += d_stride; + } + } + + mir_surface_swap_buffers_sync(mir_window->surface); + + return 0; +} + +void +MIR_DestroyWindowFramebuffer(_THIS, SDL_Window* window) +{ +} diff --git a/src/video/mir/SDL_mirframebuffer.h b/src/video/mir/SDL_mirframebuffer.h new file mode 100644 index 0000000000..704e4aa2e3 --- /dev/null +++ b/src/video/mir/SDL_mirframebuffer.h @@ -0,0 +1,46 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#ifndef _SDL_mirframebuffer_h +#define _SDL_mirframebuffer_h + +#include "../SDL_sysvideo.h" + +#include "SDL_mirvideo.h" + +extern int +MIR_CreateWindowFramebuffer(_THIS, SDL_Window* sdl_window, Uint32* format, + void** pixels, int* pitch); + +extern int +MIR_UpdateWindowFramebuffer(_THIS, SDL_Window* sdl_window, + const SDL_Rect* rects, int numrects); + +extern void +MIR_DestroyWindowFramebuffer(_THIS, SDL_Window* sdl_window); + +#endif /* _SDL_mirframebuffer_h */ diff --git a/src/video/mir/SDL_mirmouse.c b/src/video/mir/SDL_mirmouse.c new file mode 100644 index 0000000000..010e292fde --- /dev/null +++ b/src/video/mir/SDL_mirmouse.c @@ -0,0 +1,145 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#include "SDL_mirmouse.h" + +#include "../../events/SDL_mouse_c.h" +#include "SDL_assert.h" + +static SDL_Cursor* +MIR_CreateDefaultCursor() +{ + SDL_Cursor* cursor; + + cursor = SDL_calloc(1, sizeof(SDL_Cursor)); + if (cursor) { + } + else { + SDL_OutOfMemory(); + } + + return cursor; +} + +static SDL_Cursor* +MIR_CreateCursor(SDL_Surface* sruface, int hot_x, int hot_y) +{ + return MIR_CreateDefaultCursor(); +} + +static SDL_Cursor* +MIR_CreateSystemCursor(SDL_SystemCursor id) +{ + switch(id) { + case SDL_SYSTEM_CURSOR_ARROW: + break; + case SDL_SYSTEM_CURSOR_IBEAM: + break; + case SDL_SYSTEM_CURSOR_WAIT: + break; + case SDL_SYSTEM_CURSOR_CROSSHAIR: + break; + case SDL_SYSTEM_CURSOR_WAITARROW: + break; + case SDL_SYSTEM_CURSOR_SIZENWSE: + break; + case SDL_SYSTEM_CURSOR_SIZENESW: + break; + case SDL_SYSTEM_CURSOR_SIZEWE: + break; + case SDL_SYSTEM_CURSOR_SIZENS: + break; + case SDL_SYSTEM_CURSOR_SIZEALL: + break; + case SDL_SYSTEM_CURSOR_NO: + break; + case SDL_SYSTEM_CURSOR_HAND: + break; + default: + SDL_assert(0); + return NULL; + } + + return MIR_CreateDefaultCursor(); +} + +static void +MIR_FreeCursor(SDL_Cursor* cursor) +{ + if (cursor) + SDL_free(cursor); +} + +static int +MIR_ShowCursor(SDL_Cursor* cursor) +{ + return 0; +} + +static void +MIR_WarpMouse(SDL_Window* window, int x, int y) +{ + SDL_Unsupported(); +} + +static int +MIR_SetRelativeMouseMode(SDL_bool enabled) +{ + return SDL_Unsupported(); +} + +/* TODO Actually implement the cursor, need to wait for mir support */ +void +MIR_InitMouse() +{ + SDL_Mouse* mouse = SDL_GetMouse(); + + mouse->CreateCursor = MIR_CreateCursor; + mouse->ShowCursor = MIR_ShowCursor; + mouse->FreeCursor = MIR_FreeCursor; + mouse->WarpMouse = MIR_WarpMouse; + mouse->CreateSystemCursor = MIR_CreateSystemCursor; + mouse->SetRelativeMouseMode = MIR_SetRelativeMouseMode; + + SDL_SetDefaultCursor(MIR_CreateDefaultCursor()); +} + +void +MIR_FiniMouse() +{ + SDL_Mouse* mouse = SDL_GetMouse(); + + MIR_FreeCursor(mouse->def_cursor); + mouse->def_cursor = NULL; + + mouse->CreateCursor = NULL; + mouse->ShowCursor = NULL; + mouse->FreeCursor = NULL; + mouse->WarpMouse = NULL; + mouse->CreateSystemCursor = NULL; + mouse->SetRelativeMouseMode = NULL; +} diff --git a/src/video/mir/SDL_mirmouse.h b/src/video/mir/SDL_mirmouse.h new file mode 100644 index 0000000000..0832f0f051 --- /dev/null +++ b/src/video/mir/SDL_mirmouse.h @@ -0,0 +1,37 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#ifndef _SDL_mirmouse_h +#define _SDL_mirmouse_h + +extern void +MIR_InitMouse(); + +extern void +MIR_FiniMouse(); + +#endif /* _SDL_mirmouse_h */ diff --git a/src/video/mir/SDL_miropengl.c b/src/video/mir/SDL_miropengl.c new file mode 100644 index 0000000000..fcd6568a9a --- /dev/null +++ b/src/video/mir/SDL_miropengl.c @@ -0,0 +1,122 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" +#include "SDL_miropengl.h" + +#include + +#define DEFAULT_OGL_ES2 "libGLESv2.so" + +void* MIR_GLHandle = NULL; + +void +MIR_GL_SwapWindow(_THIS, SDL_Window* window) +{ + MIR_Window* mir_wind = window->driverdata; + + SDL_EGL_SwapBuffers(_this, mir_wind->egl_surface); +} + +int +MIR_GL_MakeCurrent(_THIS, SDL_Window* window, SDL_GLContext context) +{ + if (window) { + EGLSurface egl_surface = ((MIR_Window*)window->driverdata)->egl_surface; + return SDL_EGL_MakeCurrent(_this, egl_surface, context); + } + + return SDL_EGL_MakeCurrent(_this, NULL, NULL); +} + +SDL_GLContext +MIR_GL_CreateContext(_THIS, SDL_Window* window) +{ + MIR_Window* mir_window = window->driverdata; + + SDL_GLContext context; + context = SDL_EGL_CreateContext(_this, mir_window->egl_surface); + + return context; +} + +int +MIR_GL_LoadLibrary(_THIS, const char* path) +{ + MIR_Data* mir_data = _this->driverdata; + + SDL_EGL_LoadLibrary(_this, path, + mir_connection_get_egl_native_display(mir_data->connection)); + + SDL_EGL_ChooseConfig(_this); + + return 0; +} + +void +MIR_GL_UnloadLibrary(_THIS) +{ + SDL_EGL_UnloadLibrary(_this); + + if (MIR_GLHandle) { + dlclose(MIR_GLHandle); + MIR_GLHandle = NULL; + } +} + +void +Ensure_GL_HandleOpen() +{ + if (!MIR_GLHandle) { + MIR_GLHandle = dlopen(DEFAULT_OGL_ES2, RTLD_GLOBAL); + if (!MIR_GLHandle) { + SDL_SetError("Failed to dlopen library."); + } + } +} + +void* +MIR_GL_GetProcAddress(_THIS, const char* proc) +{ + void* proc_addr = eglGetProcAddress(proc); + + /* FIXME when on the phone/tablet eglGetProcAddress returns NULL through libhybris, + seems to be a problem in android. Also looks like a problem in the android video driver: + src/video/android/SDL_androidgl.c + + Workaround, to just get the address ourself + */ + + if (!proc_addr) { + Ensure_GL_HandleOpen(); + proc_addr = dlsym(MIR_GLHandle, proc); + } + + if (!proc_addr) { + SDL_SetError("Failed to find proc address!"); + } + + return proc_addr; +} diff --git a/src/video/mir/SDL_miropengl.h b/src/video/mir/SDL_miropengl.h new file mode 100644 index 0000000000..dda1d0088a --- /dev/null +++ b/src/video/mir/SDL_miropengl.h @@ -0,0 +1,57 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#ifndef _SDL_miropengl_h +#define _SDL_miropengl_h + +#include "SDL_mirwindow.h" + +#include "../SDL_egl_c.h" + +#define MIR_GL_DeleteContext SDL_EGL_DeleteContext +#define MIR_GL_GetSwapInterval SDL_EGL_GetSwapInterval +#define MIR_GL_SetSwapInterval SDL_EGL_SetSwapInterval + +extern void +MIR_GL_SwapWindow(_THIS, SDL_Window* window); + +extern int +MIR_GL_MakeCurrent(_THIS, SDL_Window* window, SDL_GLContext context); + +extern SDL_GLContext +MIR_GL_CreateContext(_THIS, SDL_Window* window); + +extern int +MIR_GL_LoadLibrary(_THIS, const char* path); + +extern void +MIR_GL_UnloadLibrary(_THIS); + +extern void* +MIR_GL_GetProcAddress(_THIS, const char* proc); + +#endif /* _SDL_miropengl_h */ diff --git a/src/video/mir/SDL_mirvideo.c b/src/video/mir/SDL_mirvideo.c new file mode 100644 index 0000000000..174d9af13f --- /dev/null +++ b/src/video/mir/SDL_mirvideo.c @@ -0,0 +1,319 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" +#include "SDL_video.h" + +#include "SDL_mirframebuffer.h" +#include "SDL_mirmouse.h" +#include "SDL_miropengl.h" +#include "SDL_mirvideo.h" +#include "SDL_mirwindow.h" + +#define MIR_DRIVER_NAME "mir" + +static int +MIR_VideoInit(_THIS); + +static void +MIR_VideoQuit(_THIS); + +static int +MIR_GetDisplayBounds(_THIS, SDL_VideoDisplay* display, SDL_Rect* rect); + +static void +MIR_GetDisplayModes(_THIS, SDL_VideoDisplay* sdl_display); + +static int +MIR_SetDisplayMode(_THIS, SDL_VideoDisplay* sdl_display, SDL_DisplayMode* mode); + +static SDL_WindowShaper* +MIR_CreateShaper(SDL_Window* window) +{ + /* FIXME Im not sure if mir support this atm, will have to come back to this */ + return NULL; +} + +static int +MIR_SetWindowShape(SDL_WindowShaper* shaper, SDL_Surface* shape, SDL_WindowShapeMode* shape_mode) +{ + return SDL_Unsupported(); +} + +static int +MIR_ResizeWindowShape(SDL_Window* window) +{ + return SDL_Unsupported(); +} + +static int +MIR_Available() +{ + return 1; +} + +static void +MIR_DeleteDevice(SDL_VideoDevice* device) +{ + SDL_free(device); +} + +void +MIR_PumpEvents(_THIS) +{ +} + +static SDL_VideoDevice* +MIR_CreateDevice(int device_index) +{ + MIR_Data* mir_data; + SDL_VideoDevice* device = SDL_calloc(1, sizeof(SDL_VideoDevice)); + if (!device) { + SDL_OutOfMemory(); + return NULL; + } + + mir_data = SDL_calloc(1, sizeof(MIR_Data)); + if (!mir_data) { + SDL_OutOfMemory(); + SDL_free(device); + return NULL; + } + + device->driverdata = mir_data; + + /* mirvideo */ + device->VideoInit = MIR_VideoInit; + device->VideoQuit = MIR_VideoQuit; + device->GetDisplayBounds = MIR_GetDisplayBounds; + device->GetDisplayModes = MIR_GetDisplayModes; + device->SetDisplayMode = MIR_SetDisplayMode; + device->free = MIR_DeleteDevice; + + /* miropengles */ + device->GL_SwapWindow = MIR_GL_SwapWindow; + device->GL_MakeCurrent = MIR_GL_MakeCurrent; + device->GL_CreateContext = MIR_GL_CreateContext; + device->GL_DeleteContext = MIR_GL_DeleteContext; + device->GL_LoadLibrary = MIR_GL_LoadLibrary; + device->GL_UnloadLibrary = MIR_GL_UnloadLibrary; + device->GL_GetSwapInterval = MIR_GL_GetSwapInterval; + device->GL_SetSwapInterval = MIR_GL_SetSwapInterval; + device->GL_GetProcAddress = MIR_GL_GetProcAddress; + + /* mirwindow */ + device->CreateWindow = MIR_CreateWindow; + device->DestroyWindow = MIR_DestroyWindow; + device->GetWindowWMInfo = MIR_GetWindowWMInfo; + device->SetWindowFullscreen = MIR_SetWindowFullscreen; + device->MaximizeWindow = MIR_MaximizeWindow; + device->MinimizeWindow = MIR_MinimizeWindow; + device->RestoreWindow = MIR_RestoreWindow; + + device->CreateWindowFrom = NULL; + device->SetWindowTitle = NULL; + device->SetWindowIcon = NULL; + device->SetWindowPosition = NULL; + device->SetWindowSize = NULL; + device->SetWindowMinimumSize = NULL; + device->SetWindowMaximumSize = NULL; + device->ShowWindow = NULL; + device->HideWindow = NULL; + device->RaiseWindow = NULL; + device->SetWindowBordered = NULL; + device->SetWindowGammaRamp = NULL; + device->GetWindowGammaRamp = NULL; + device->SetWindowGrab = NULL; + device->OnWindowEnter = NULL; + + /* mirframebuffer */ + device->CreateWindowFramebuffer = MIR_CreateWindowFramebuffer; + device->UpdateWindowFramebuffer = MIR_UpdateWindowFramebuffer; + device->DestroyWindowFramebuffer = MIR_DestroyWindowFramebuffer; + + device->shape_driver.CreateShaper = MIR_CreateShaper; + device->shape_driver.SetWindowShape = MIR_SetWindowShape; + device->shape_driver.ResizeWindowShape = MIR_ResizeWindowShape; + + device->PumpEvents = MIR_PumpEvents; + + device->SuspendScreenSaver = NULL; + + device->StartTextInput = NULL; + device->StopTextInput = NULL; + device->SetTextInputRect = NULL; + + device->HasScreenKeyboardSupport = NULL; + device->ShowScreenKeyboard = NULL; + device->HideScreenKeyboard = NULL; + device->IsScreenKeyboardShown = NULL; + + device->SetClipboardText = NULL; + device->GetClipboardText = NULL; + device->HasClipboardText = NULL; + + device->ShowMessageBox = NULL; + + return device; +} + +VideoBootStrap MIR_bootstrap = { + MIR_DRIVER_NAME, "SDL Mir video driver", + MIR_Available, MIR_CreateDevice +}; + +static void +MIR_SetCurrentDisplayMode(MirDisplayOutput const* out, SDL_VideoDisplay* display) +{ + SDL_DisplayMode mode = { + .format = SDL_PIXELFORMAT_RGB888, + .w = out->modes[out->current_mode].horizontal_resolution, + .h = out->modes[out->current_mode].vertical_resolution, + .refresh_rate = out->modes[out->current_mode].refresh_rate, + .driverdata = NULL + }; + + display->desktop_mode = mode; + display->current_mode = mode; +} + +static void +MIR_AddAllModesFromDisplay(MirDisplayOutput const* out, SDL_VideoDisplay* display) +{ + int n_mode; + for (n_mode = 0; n_mode < out->num_modes; ++n_mode) { + SDL_DisplayMode mode = { + .format = SDL_PIXELFORMAT_RGB888, + .w = out->modes[n_mode].horizontal_resolution, + .h = out->modes[n_mode].vertical_resolution, + .refresh_rate = out->modes[n_mode].refresh_rate, + .driverdata = NULL + }; + + SDL_AddDisplayMode(display, &mode); + } +} + +static void +MIR_InitDisplays(_THIS) +{ + MIR_Data* mir_data = _this->driverdata; + int d; + + MirDisplayConfiguration* display_config = + mir_connection_create_display_config(mir_data->connection); + + for (d = 0; d < display_config->num_outputs; d++) { + MirDisplayOutput const* out = display_config->outputs + d; + + SDL_VideoDisplay display; + SDL_zero(display); + + if (out->used && + out->connected && + out->num_modes && + out->current_mode < out->num_modes) { + + MIR_SetCurrentDisplayMode(out, &display); + MIR_AddAllModesFromDisplay(out, &display); + + SDL_AddVideoDisplay(&display); + } + } + + mir_display_config_destroy(display_config); +} + +int +MIR_VideoInit(_THIS) +{ + MIR_Data* mir_data = _this->driverdata; + + mir_data->connection = mir_connect_sync(NULL, __PRETTY_FUNCTION__); + + if (!mir_connection_is_valid(mir_data->connection)) + return SDL_SetError("Failed to connect to the Mir Server"); + + MIR_InitDisplays(_this); + MIR_InitMouse(); + + return 0; +} + +void +MIR_VideoQuit(_THIS) +{ + MIR_Data* mir_data = _this->driverdata; + + MIR_FiniMouse(); + + MIR_GL_DeleteContext(_this, NULL); + MIR_GL_UnloadLibrary(_this); + + mir_connection_release(mir_data->connection); + + SDL_free(mir_data); + _this->driverdata = NULL; +} + +static int +MIR_GetDisplayBounds(_THIS, SDL_VideoDisplay* display, SDL_Rect* rect) +{ + MIR_Data* mir_data = _this->driverdata; + int d; + + MirDisplayConfiguration* display_config = + mir_connection_create_display_config(mir_data->connection); + + for (d = 0; d < display_config->num_outputs; d++) { + MirDisplayOutput const* out = display_config->outputs + d; + + if (out->used && + out->connected && + out->num_modes && + out->current_mode < out->num_modes) { + + rect->x = out->position_x; + rect->y = out->position_y; + rect->w = out->modes->horizontal_resolution; + rect->h = out->modes->vertical_resolution; + } + } + + mir_display_config_destroy(display_config); + + return 0; +} + +static void +MIR_GetDisplayModes(_THIS, SDL_VideoDisplay* sdl_display) +{ +} + +static int +MIR_SetDisplayMode(_THIS, SDL_VideoDisplay* sdl_display, SDL_DisplayMode* mode) +{ + return 0; +} diff --git a/src/video/mir/SDL_mirvideo.h b/src/video/mir/SDL_mirvideo.h new file mode 100644 index 0000000000..baa0ef0bec --- /dev/null +++ b/src/video/mir/SDL_mirvideo.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#ifndef _SDL_mirvideo_h_ +#define _SDL_mirvideo_h_ + +#include +#include + +typedef struct +{ + MirConnection* connection; + +} MIR_Data; + +#endif /* _SDL_mirvideo_h_ */ diff --git a/src/video/mir/SDL_mirwindow.c b/src/video/mir/SDL_mirwindow.c new file mode 100644 index 0000000000..53f3d8f73b --- /dev/null +++ b/src/video/mir/SDL_mirwindow.c @@ -0,0 +1,216 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#include "../SDL_egl_c.h" +#include "../SDL_sysvideo.h" + +#include "SDL_mirevents.h" +#include "SDL_mirwindow.h" + +int +IsSurfaceValid(MIR_Window* mir_window) +{ + if (!mir_surface_is_valid(mir_window->surface)) { + const char* error = mir_surface_get_error_message(mir_window->surface); + return SDL_SetError("Failed to created a mir surface: %s", error); + } + + return 0; +} + +MirPixelFormat +FindValidPixelFormat(MIR_Data* mir_data) +{ + unsigned int pf_size = 32; + unsigned int valid_formats; + unsigned int f; + + MirPixelFormat formats[pf_size]; + mir_connection_get_available_surface_formats(mir_data->connection, formats, + pf_size, &valid_formats); + + for (f = 0; f < valid_formats; f++) { + MirPixelFormat cur_pf = formats[f]; + + if (cur_pf == mir_pixel_format_abgr_8888 || + cur_pf == mir_pixel_format_xbgr_8888 || + cur_pf == mir_pixel_format_argb_8888 || + cur_pf == mir_pixel_format_xrgb_8888) { + + return cur_pf; + } + } + + return mir_pixel_format_invalid; +} + +int +MIR_CreateWindow(_THIS, SDL_Window* window) +{ + MIR_Window* mir_window; + MIR_Data* mir_data; + + MirSurfaceParameters surfaceparm = + { + .name = "MirSurface", + .width = window->w, + .height = window->h, + .pixel_format = mir_pixel_format_invalid, + .buffer_usage = mir_buffer_usage_hardware + }; + + MirEventDelegate delegate = { + MIR_HandleInput, + window + }; + + mir_window = SDL_calloc(1, sizeof(MIR_Window)); + if (!mir_window) + return SDL_OutOfMemory(); + + mir_data = _this->driverdata; + window->driverdata = mir_window; + + if (window->x == SDL_WINDOWPOS_UNDEFINED) + window->x = 0; + + if (window->y == SDL_WINDOWPOS_UNDEFINED) + window->y = 0; + + mir_window->mir_data = mir_data; + mir_window->sdl_window = window; + + surfaceparm.pixel_format = FindValidPixelFormat(mir_data); + if (surfaceparm.pixel_format == mir_pixel_format_invalid) { + return SDL_SetError("Failed to find a valid pixel format."); + } + + mir_window->surface = mir_connection_create_surface_sync(mir_data->connection, &surfaceparm); + if (!mir_surface_is_valid(mir_window->surface)) { + const char* error = mir_surface_get_error_message(mir_window->surface); + return SDL_SetError("Failed to created a mir surface: %s", error); + } + + if (window->flags & SDL_WINDOW_OPENGL) { + EGLNativeWindowType egl_native_window = + (EGLNativeWindowType)mir_surface_get_egl_native_window(mir_window->surface); + + mir_window->egl_surface = SDL_EGL_CreateSurface(_this, egl_native_window); + + if (mir_window->egl_surface == EGL_NO_SURFACE) { + return SDL_SetError("Failed to created a window surface %p", + _this->egl_data->egl_display); + } + } + else { + mir_window->egl_surface = EGL_NO_SURFACE; + } + + mir_surface_set_event_handler(mir_window->surface, &delegate); + + return 0; +} + +void +MIR_DestroyWindow(_THIS, SDL_Window* window) +{ + MIR_Data* mir_data = _this->driverdata; + MIR_Window* mir_window = window->driverdata; + + window->driverdata = NULL; + + if (mir_data) { + SDL_EGL_DestroySurface(_this, mir_window->egl_surface); + mir_surface_release_sync(mir_window->surface); + + SDL_free(mir_window); + } +} + +SDL_bool +MIR_GetWindowWMInfo(_THIS, SDL_Window* window, SDL_SysWMinfo* info) +{ + if (info->version.major == SDL_MAJOR_VERSION && + info->version.minor == SDL_MINOR_VERSION) { + + info->subsystem = SDL_SYSWM_MIR; + return SDL_TRUE; + } + + return SDL_FALSE; +} + +void +MIR_SetWindowFullscreen(_THIS, SDL_Window* window, + SDL_VideoDisplay* display, + SDL_bool fullscreen) +{ + MIR_Window* mir_window = window->driverdata; + + if (IsSurfaceValid(mir_window) < 0) + return; + + if (fullscreen) { + mir_surface_set_type(mir_window->surface, mir_surface_state_fullscreen); + } + else { + mir_surface_set_type(mir_window->surface, mir_surface_state_restored); + } +} + +void +MIR_MaximizeWindow(_THIS, SDL_Window* window) +{ + MIR_Window* mir_window = window->driverdata; + + if (IsSurfaceValid(mir_window) < 0) + return; + + mir_surface_set_type(mir_window->surface, mir_surface_state_maximized); +} + +void +MIR_MinimizeWindow(_THIS, SDL_Window* window) +{ + MIR_Window* mir_window = window->driverdata; + + if (IsSurfaceValid(mir_window) < 0) + return; + + mir_surface_set_type(mir_window->surface, mir_surface_state_minimized); +} + +void +MIR_RestoreWindow(_THIS, SDL_Window * window) +{ + MIR_Window* mir_window = window->driverdata; + + if (IsSurfaceValid(mir_window) < 0) + return; + + mir_surface_set_type(mir_window->surface, mir_surface_state_restored); +} diff --git a/src/video/mir/SDL_mirwindow.h b/src/video/mir/SDL_mirwindow.h new file mode 100644 index 0000000000..9377fa045b --- /dev/null +++ b/src/video/mir/SDL_mirwindow.h @@ -0,0 +1,69 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* + Contributed by Brandon Schaefer, +*/ + +#include "SDL_config.h" + +#ifndef _SDL_mirwindow_h +#define _SDL_mirwindow_h + +#include "../SDL_sysvideo.h" +#include "SDL_syswm.h" + +#include "SDL_mirvideo.h" + +typedef struct { + SDL_Window* sdl_window; + MIR_Data* mir_data; + + MirSurface* surface; + EGLSurface egl_surface; + +} MIR_Window; + + +extern int +MIR_CreateWindow(_THIS, SDL_Window* window); + +extern void +MIR_DestroyWindow(_THIS, SDL_Window* window); + +extern void +MIR_SetWindowFullscreen(_THIS, SDL_Window* window, + SDL_VideoDisplay* display, + SDL_bool fullscreen); + +extern void +MIR_MaximizeWindow(_THIS, SDL_Window* window); + +extern void +MIR_MinimizeWindow(_THIS, SDL_Window* window); + +extern void +MIR_RestoreWindow(_THIS, SDL_Window* window); + +extern SDL_bool +MIR_GetWindowWMInfo(_THIS, SDL_Window* window, SDL_SysWMinfo* info); + +#endif /* _SDL_mirwindow */ From 519cc4335c15f26d635288f1239d50f9485613a0 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Feb 2014 23:54:10 -0500 Subject: [PATCH 259/402] Cleaned up headers and footers on Mir code. --- src/video/mir/SDL_mirevents.c | 8 +++++++- src/video/mir/SDL_mirevents.h | 5 +++-- src/video/mir/SDL_mirframebuffer.c | 9 ++++++++- src/video/mir/SDL_mirframebuffer.h | 5 +++-- src/video/mir/SDL_mirmouse.c | 9 ++++++++- src/video/mir/SDL_mirmouse.h | 4 ++-- src/video/mir/SDL_miropengl.c | 9 ++++++++- src/video/mir/SDL_miropengl.h | 5 +++-- src/video/mir/SDL_mirvideo.c | 10 +++++++++- src/video/mir/SDL_mirvideo.h | 5 ++--- src/video/mir/SDL_mirwindow.c | 8 +++++++- src/video/mir/SDL_mirwindow.h | 6 +++--- 12 files changed, 63 insertions(+), 20 deletions(-) diff --git a/src/video/mir/SDL_mirevents.c b/src/video/mir/SDL_mirevents.c index 4ac377a60e..48e09798e6 100644 --- a/src/video/mir/SDL_mirevents.c +++ b/src/video/mir/SDL_mirevents.c @@ -23,7 +23,9 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR #include "../../events/SDL_events_c.h" #include "../../events/SDL_keyboard_c.h" @@ -244,3 +246,7 @@ MIR_HandleInput(MirSurface* surface, MirEvent const* ev, void* context) break; } } + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirevents.h b/src/video/mir/SDL_mirevents.h index 1be183aa3c..b800013a54 100644 --- a/src/video/mir/SDL_mirevents.h +++ b/src/video/mir/SDL_mirevents.h @@ -23,8 +23,6 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" - #ifndef _SDL_mirevents_h #define _SDL_mirevents_h @@ -34,3 +32,6 @@ extern void MIR_HandleInput(MirSurface* surface, MirEvent const* ev, void* context); #endif /* _SDL_mirevents_h */ + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/video/mir/SDL_mirframebuffer.c b/src/video/mir/SDL_mirframebuffer.c index b0b77df391..e662048bda 100644 --- a/src/video/mir/SDL_mirframebuffer.c +++ b/src/video/mir/SDL_mirframebuffer.c @@ -23,7 +23,10 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR + #include "SDL_mirevents.h" #include "SDL_mirframebuffer.h" #include "SDL_mirwindow.h" @@ -144,3 +147,7 @@ void MIR_DestroyWindowFramebuffer(_THIS, SDL_Window* window) { } + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirframebuffer.h b/src/video/mir/SDL_mirframebuffer.h index 704e4aa2e3..72cacda104 100644 --- a/src/video/mir/SDL_mirframebuffer.h +++ b/src/video/mir/SDL_mirframebuffer.h @@ -23,8 +23,6 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" - #ifndef _SDL_mirframebuffer_h #define _SDL_mirframebuffer_h @@ -44,3 +42,6 @@ extern void MIR_DestroyWindowFramebuffer(_THIS, SDL_Window* sdl_window); #endif /* _SDL_mirframebuffer_h */ + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/video/mir/SDL_mirmouse.c b/src/video/mir/SDL_mirmouse.c index 010e292fde..387f868b18 100644 --- a/src/video/mir/SDL_mirmouse.c +++ b/src/video/mir/SDL_mirmouse.c @@ -23,7 +23,9 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR #include "SDL_mirmouse.h" @@ -143,3 +145,8 @@ MIR_FiniMouse() mouse->CreateSystemCursor = NULL; mouse->SetRelativeMouseMode = NULL; } + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/video/mir/SDL_mirmouse.h b/src/video/mir/SDL_mirmouse.h index 0832f0f051..df73246288 100644 --- a/src/video/mir/SDL_mirmouse.h +++ b/src/video/mir/SDL_mirmouse.h @@ -23,8 +23,6 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" - #ifndef _SDL_mirmouse_h #define _SDL_mirmouse_h @@ -35,3 +33,5 @@ extern void MIR_FiniMouse(); #endif /* _SDL_mirmouse_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_miropengl.c b/src/video/mir/SDL_miropengl.c index fcd6568a9a..df180191ed 100644 --- a/src/video/mir/SDL_miropengl.c +++ b/src/video/mir/SDL_miropengl.c @@ -23,7 +23,10 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR + #include "SDL_miropengl.h" #include @@ -120,3 +123,7 @@ MIR_GL_GetProcAddress(_THIS, const char* proc) return proc_addr; } + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_miropengl.h b/src/video/mir/SDL_miropengl.h index dda1d0088a..21311f2070 100644 --- a/src/video/mir/SDL_miropengl.h +++ b/src/video/mir/SDL_miropengl.h @@ -23,8 +23,6 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" - #ifndef _SDL_miropengl_h #define _SDL_miropengl_h @@ -55,3 +53,6 @@ extern void* MIR_GL_GetProcAddress(_THIS, const char* proc); #endif /* _SDL_miropengl_h */ + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/video/mir/SDL_mirvideo.c b/src/video/mir/SDL_mirvideo.c index 174d9af13f..f4c3e3f9b8 100644 --- a/src/video/mir/SDL_mirvideo.c +++ b/src/video/mir/SDL_mirvideo.c @@ -23,7 +23,10 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR + #include "SDL_video.h" #include "SDL_mirframebuffer.h" @@ -317,3 +320,8 @@ MIR_SetDisplayMode(_THIS, SDL_VideoDisplay* sdl_display, SDL_DisplayMode* mode) { return 0; } + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/video/mir/SDL_mirvideo.h b/src/video/mir/SDL_mirvideo.h index baa0ef0bec..1d1e337d4e 100644 --- a/src/video/mir/SDL_mirvideo.h +++ b/src/video/mir/SDL_mirvideo.h @@ -23,8 +23,6 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" - #ifndef _SDL_mirvideo_h_ #define _SDL_mirvideo_h_ @@ -34,7 +32,8 @@ typedef struct { MirConnection* connection; - } MIR_Data; #endif /* _SDL_mirvideo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirwindow.c b/src/video/mir/SDL_mirwindow.c index 53f3d8f73b..f0d8a2af8c 100644 --- a/src/video/mir/SDL_mirwindow.c +++ b/src/video/mir/SDL_mirwindow.c @@ -23,7 +23,9 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR #include "../SDL_egl_c.h" #include "../SDL_sysvideo.h" @@ -214,3 +216,7 @@ MIR_RestoreWindow(_THIS, SDL_Window * window) mir_surface_set_type(mir_window->surface, mir_surface_state_restored); } + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirwindow.h b/src/video/mir/SDL_mirwindow.h index 9377fa045b..caa7c22263 100644 --- a/src/video/mir/SDL_mirwindow.h +++ b/src/video/mir/SDL_mirwindow.h @@ -23,8 +23,6 @@ Contributed by Brandon Schaefer, */ -#include "SDL_config.h" - #ifndef _SDL_mirwindow_h #define _SDL_mirwindow_h @@ -39,7 +37,6 @@ typedef struct { MirSurface* surface; EGLSurface egl_surface; - } MIR_Window; @@ -67,3 +64,6 @@ extern SDL_bool MIR_GetWindowWMInfo(_THIS, SDL_Window* window, SDL_SysWMinfo* info); #endif /* _SDL_mirwindow */ + +/* vi: set ts=4 sw=4 expandtab: */ + From d6f6f691b891cdf91b314650587e0119fd10c658 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Feb 2014 23:53:48 -0500 Subject: [PATCH 260/402] Added some SysWM bits for Mir. --- include/SDL_syswm.h | 13 +++++++++++++ src/video/mir/SDL_mirwindow.c | 4 ++++ 2 files changed, 17 insertions(+) diff --git a/include/SDL_syswm.h b/include/SDL_syswm.h index c26f141faa..40e8ca7c68 100644 --- a/include/SDL_syswm.h +++ b/include/SDL_syswm.h @@ -93,6 +93,11 @@ typedef struct _UIWindow UIWindow; #endif #endif +#if defined(SDL_VIDEO_DRIVER_MIR) +#include +#endif + + /** * These are the various supported windowing subsystems */ @@ -205,6 +210,14 @@ struct SDL_SysWMinfo struct wl_shell_surface *shell_surface; /**< Wayland shell_surface (window manager handle) */ } wl; #endif +#if defined(SDL_VIDEO_DRIVER_MIR) + struct + { + MirConnection *connection; /**< Mir display server connection */ + MirSurface *surface; /**< Mir surface */ + } mir; +#endif + /* Can't have an empty union */ int dummy; } info; diff --git a/src/video/mir/SDL_mirwindow.c b/src/video/mir/SDL_mirwindow.c index f0d8a2af8c..bea1c9b610 100644 --- a/src/video/mir/SDL_mirwindow.c +++ b/src/video/mir/SDL_mirwindow.c @@ -158,8 +158,12 @@ MIR_GetWindowWMInfo(_THIS, SDL_Window* window, SDL_SysWMinfo* info) { if (info->version.major == SDL_MAJOR_VERSION && info->version.minor == SDL_MINOR_VERSION) { + MIR_Window* mir_window = window->driverdata; info->subsystem = SDL_SYSWM_MIR; + info->info.mir.connection = mir_window->mir_data->connection; + info->info.mir.surface = mir_window->surface; + return SDL_TRUE; } From c44ad0bd27c33e11a9e9ccf76cd9ad282ec41993 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Feb 2014 23:55:51 -0500 Subject: [PATCH 261/402] Disable some minor things that need newer Mir dev headers. These headers apparently aren't default in Ubuntu 13.10 yet. --- src/video/mir/SDL_mirevents.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/video/mir/SDL_mirevents.c b/src/video/mir/SDL_mirevents.c index 48e09798e6..dae4e4b80b 100644 --- a/src/video/mir/SDL_mirevents.c +++ b/src/video/mir/SDL_mirevents.c @@ -203,11 +203,13 @@ HandleMouseEvent(MirMotionEvent const motion, int cord_index, SDL_Window* sdl_wi case mir_motion_action_outside: SDL_SetMouseFocus(NULL); break; +#if 0 /* !!! FIXME: needs a newer set of dev headers than Ubuntu 13.10 is shipping atm. */ case mir_motion_action_scroll: HandleMouseScroll(sdl_window, motion.pointer_coordinates[cord_index].hscroll, motion.pointer_coordinates[cord_index].vscroll); break; +#endif case mir_motion_action_cancel: case mir_motion_action_hover_enter: case mir_motion_action_hover_exit: @@ -222,12 +224,16 @@ HandleMotionEvent(MirMotionEvent const motion, SDL_Window* sdl_window) { int cord_index; for (cord_index = 0; cord_index < motion.pointer_count; cord_index++) { +#if 0 /* !!! FIXME: needs a newer set of dev headers than Ubuntu 13.10 is shipping atm. */ if (motion.pointer_coordinates[cord_index].tool_type == mir_motion_tool_type_mouse) { HandleMouseEvent(motion, cord_index, sdl_window); } else if (motion.pointer_coordinates[cord_index].tool_type == mir_motion_tool_type_finger) { HandleTouchEvent(motion, cord_index, sdl_window); } +#else + HandleMouseEvent(motion, cord_index, sdl_window); +#endif } } From 3a8a29c72bbfd71dc87a9faf791e6c9c9fd91b53 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 11:01:32 -0500 Subject: [PATCH 262/402] Bumped copyright date on Mir code. --- src/video/mir/SDL_mirevents.c | 2 +- src/video/mir/SDL_mirevents.h | 2 +- src/video/mir/SDL_mirframebuffer.c | 2 +- src/video/mir/SDL_mirframebuffer.h | 2 +- src/video/mir/SDL_mirmouse.c | 2 +- src/video/mir/SDL_mirmouse.h | 2 +- src/video/mir/SDL_miropengl.c | 2 +- src/video/mir/SDL_miropengl.h | 2 +- src/video/mir/SDL_mirvideo.c | 2 +- src/video/mir/SDL_mirvideo.h | 2 +- src/video/mir/SDL_mirwindow.c | 2 +- src/video/mir/SDL_mirwindow.h | 2 +- 12 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/video/mir/SDL_mirevents.c b/src/video/mir/SDL_mirevents.c index dae4e4b80b..9339a3ca64 100644 --- a/src/video/mir/SDL_mirevents.c +++ b/src/video/mir/SDL_mirevents.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirevents.h b/src/video/mir/SDL_mirevents.h index b800013a54..9219eed157 100644 --- a/src/video/mir/SDL_mirevents.h +++ b/src/video/mir/SDL_mirevents.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirframebuffer.c b/src/video/mir/SDL_mirframebuffer.c index e662048bda..26badf9ff5 100644 --- a/src/video/mir/SDL_mirframebuffer.c +++ b/src/video/mir/SDL_mirframebuffer.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirframebuffer.h b/src/video/mir/SDL_mirframebuffer.h index 72cacda104..b4860fe1f3 100644 --- a/src/video/mir/SDL_mirframebuffer.h +++ b/src/video/mir/SDL_mirframebuffer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirmouse.c b/src/video/mir/SDL_mirmouse.c index 387f868b18..27976a5f6d 100644 --- a/src/video/mir/SDL_mirmouse.c +++ b/src/video/mir/SDL_mirmouse.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirmouse.h b/src/video/mir/SDL_mirmouse.h index df73246288..fd4e47626c 100644 --- a/src/video/mir/SDL_mirmouse.h +++ b/src/video/mir/SDL_mirmouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_miropengl.c b/src/video/mir/SDL_miropengl.c index df180191ed..c5b36a3ae5 100644 --- a/src/video/mir/SDL_miropengl.c +++ b/src/video/mir/SDL_miropengl.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_miropengl.h b/src/video/mir/SDL_miropengl.h index 21311f2070..0f4c973182 100644 --- a/src/video/mir/SDL_miropengl.h +++ b/src/video/mir/SDL_miropengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirvideo.c b/src/video/mir/SDL_mirvideo.c index f4c3e3f9b8..c160f37431 100644 --- a/src/video/mir/SDL_mirvideo.c +++ b/src/video/mir/SDL_mirvideo.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirvideo.h b/src/video/mir/SDL_mirvideo.h index 1d1e337d4e..edeca01a4b 100644 --- a/src/video/mir/SDL_mirvideo.h +++ b/src/video/mir/SDL_mirvideo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirwindow.c b/src/video/mir/SDL_mirwindow.c index bea1c9b610..519f8b3ce3 100644 --- a/src/video/mir/SDL_mirwindow.c +++ b/src/video/mir/SDL_mirwindow.c @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/src/video/mir/SDL_mirwindow.h b/src/video/mir/SDL_mirwindow.h index caa7c22263..411c1485f5 100644 --- a/src/video/mir/SDL_mirwindow.h +++ b/src/video/mir/SDL_mirwindow.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages From a42cf3410856d3051e14cdcce03561a3b6a138e7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 11:14:25 -0500 Subject: [PATCH 263/402] Add Mir to configure script's summary output. --- configure | 1 + configure.in | 1 + 2 files changed, 2 insertions(+) diff --git a/configure b/configure index ff1802ead6..c2630311c3 100755 --- a/configure +++ b/configure @@ -18722,6 +18722,7 @@ $as_echo "$video_mir" >&6; } EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs egl mirclient xkbcommon`" have_video=yes + SUMMARY_video="${SUMMARY_video} mir" fi fi fi diff --git a/configure.in b/configure.in index d1e9e6632f..16c42fd949 100644 --- a/configure.in +++ b/configure.in @@ -1156,6 +1156,7 @@ CheckMir() EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs egl mirclient xkbcommon`" have_video=yes + SUMMARY_video="${SUMMARY_video} mir" fi fi fi From ac7eca63a27f087db8e466457fa3e3b70113a62c Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 11:52:54 -0500 Subject: [PATCH 264/402] Hooked up dynamic loading for Mir. --- cmake/sdlchecks.cmake | 2 + configure | 234 ++++++++++++++++------------- configure.in | 106 ++++++++----- include/SDL_config.h.cmake | 12 ++ include/SDL_config.h.in | 2 + src/video/mir/SDL_mirdyn.c | 177 ++++++++++++++++++++++ src/video/mir/SDL_mirdyn.h | 53 +++++++ src/video/mir/SDL_mirevents.c | 4 +- src/video/mir/SDL_mirframebuffer.c | 14 +- src/video/mir/SDL_mirmouse.c | 2 + src/video/mir/SDL_miropengl.c | 7 +- src/video/mir/SDL_mirsym.h | 48 ++++++ src/video/mir/SDL_mirvideo.c | 42 ++++-- src/video/mir/SDL_mirwindow.c | 33 ++-- 14 files changed, 554 insertions(+), 182 deletions(-) create mode 100644 src/video/mir/SDL_mirdyn.c create mode 100644 src/video/mir/SDL_mirdyn.h create mode 100644 src/video/mir/SDL_mirsym.h diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index 2e48d27bb7..15f06b05f1 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -506,6 +506,7 @@ macro(CheckX11) endmacro(CheckX11) macro(CheckMir) +# !!! FIXME: hook up dynamic loading here. if(VIDEO_MIR) find_library(MIR_LIB mirclient mircommon egl) pkg_check_modules(MIR_TOOLKIT mirclient mircommon) @@ -529,6 +530,7 @@ endmacro(CheckMir) # Requires: # - EGL macro(CheckWayland) +# !!! FIXME: hook up dynamic loading here. if(VIDEO_WAYLAND) pkg_check_modules(WAYLAND wayland-client wayland-cursor wayland-egl egl xkbcommon) if(WAYLAND_FOUND) diff --git a/configure b/configure index c2630311c3..b3e256646b 100755 --- a/configure +++ b/configure @@ -817,10 +817,11 @@ enable_sndio enable_sndio_shared enable_diskaudio enable_dummyaudio -enable_video_mir enable_video_wayland enable_video_wayland_qt_touch enable_wayland_shared +enable_video_mir +enable_mir_shared enable_video_x11 with_x enable_x11_shared @@ -1535,12 +1536,13 @@ Optional Features: --enable-sndio-shared dynamically load sndio audio support [[default=yes]] --enable-diskaudio support the disk writer audio driver [[default=yes]] --enable-dummyaudio support the dummy audio driver [[default=yes]] - --enable-video-mir use Mir video driver [[default=yes]] --enable-video-wayland use Wayland video driver [[default=yes]] --enable-video-wayland-qt-touch QtWayland server support for Wayland video driver [[default=yes]] --enable-wayland-shared dynamically load Wayland support [[default=maybe]] + --enable-video-mir use Mir video driver [[default=yes]] + --enable-mir-shared dynamically load Mir support [[default=maybe]] --enable-video-x11 use X11 video driver [[default=yes]] --enable-x11-shared dynamically load X11 support [[default=maybe]] --enable-video-x11-xcursor @@ -18629,105 +18631,6 @@ $as_echo "$have_gcc_preferred_stack_boundary" >&6; } fi } -CheckMir() -{ - # Check whether --enable-video-mir was given. -if test "${enable_video_mir+set}" = set; then : - enableval=$enable_video_mir; -else - enable_video_mir=yes -fi - - - if test x$enable_video = xyes -a x$enable_video_mir = xyes; then - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - if test x$PKG_CONFIG != xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mir support" >&5 -$as_echo_n "checking for Mir support... " >&6; } - video_mir=no - tmp_CFLAGS="$CFLAGS" - CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include - #include - #include - -int -main () -{ - - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - - video_mir=yes - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CFLAGS="$tmp_CFLAGS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_mir" >&5 -$as_echo "$video_mir" >&6; } - - if test x$video_mir = xyes; then - $as_echo "#define SDL_VIDEO_DRIVER_MIR 1" >>confdefs.h - - SOURCES="$SOURCES $srcdir/src/video/mir/*.c" - EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs egl mirclient xkbcommon`" - have_video=yes - SUMMARY_video="${SUMMARY_video} mir" - fi - fi - fi -} - CheckWarnAll() { { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -Wall option" >&5 @@ -18888,8 +18791,8 @@ fi fi if test x$have_loadso != xyes && \ test x$enable_wayland_shared = xyes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic WAYLAND loading" >&5 -$as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic WAYLAND loading" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic Wayland loading" >&5 +$as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic Wayland loading" >&2;} enable_wayland_shared=no fi if test x$have_loadso = xyes && \ @@ -18901,7 +18804,7 @@ $as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic WA echo "-- dynamic libwayland-client -> $wayland_client_lib" echo "-- dynamic libwayland-egl -> $wayland_egl_lib" echo "-- dynamic libwayland-cursor -> $wayland_cursor_lib" - echo "-- dynamic xkbcommon -> $xkbcommon_lib" + echo "-- dynamic libxkbcommon -> $xkbcommon_lib" cat >>confdefs.h <<_ACEOF #define SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC "$wayland_client_lib" @@ -18933,6 +18836,129 @@ _ACEOF fi } +CheckMir() +{ + # Check whether --enable-video-mir was given. +if test "${enable_video_mir+set}" = set; then : + enableval=$enable_video_mir; +else + enable_video_mir=yes +fi + + + if test x$enable_video = xyes -a x$enable_video_mir = xyes; then + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mir support" >&5 +$as_echo_n "checking for Mir support... " >&6; } + video_mir=no + if test x$PKG_CONFIG != xno; then + if $PKG_CONFIG --exists mirclient egl xkbcommon ; then + MIR_CFLAGS=`$PKG_CONFIG --cflags mirclient egl xkbcommon` + MIR_LIBS=`$PKG_CONFIG --libs mirclient egl xkbcommon` + video_mir=yes + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $video_mir" >&5 +$as_echo "$video_mir" >&6; } + + if test x$video_mir = xyes; then + +$as_echo "#define SDL_VIDEO_DRIVER_MIR 1" >>confdefs.h + + SOURCES="$SOURCES $srcdir/src/video/mir/*.c" + EXTRA_CFLAGS="$EXTRA_CFLAGS $MIR_CFLAGS" + # Check whether --enable-mir-shared was given. +if test "${enable_mir_shared+set}" = set; then : + enableval=$enable_mir_shared; +else + enable_mir_shared=maybe +fi + + + case "$host" in + *) + mirclient_lib=`find_lib "libmirclient.so.*" "$MIR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + xkbcommon_lib=`find_lib "libxkbcommon.so.*" "$MIR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'` + ;; + esac + + if test x$enable_mir_shared = xmaybe; then + enable_mir_shared=yes + fi + if test x$have_loadso != xyes && \ + test x$enable_mir_shared = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You must have SDL_LoadObject() support for dynamic Mir loading" >&5 +$as_echo "$as_me: WARNING: You must have SDL_LoadObject() support for dynamic Mir loading" >&2;} + enable_mir_shared=no + fi + if test x$have_loadso = xyes && \ + test x$enable_mir_shared = xyes && \ + test x$mirclient_lib != x && \ + test x$xkbcommon_lib != x; then + echo "-- dynamic libmirclient -> $mirclient_lib" + echo "-- dynamic libxkbcommon -> $xkbcommon_lib" + +cat >>confdefs.h <<_ACEOF +#define SDL_VIDEO_DRIVER_MIR_DYNAMIC "$mirclient_lib" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON "$xkbcommon_lib" +_ACEOF + + SUMMARY_video="${SUMMARY_video} mir(dynamic)" + else + enable_mir_shared=no + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $MIR_LIBS" + SUMMARY_video="${SUMMARY_video} mir" + fi + have_video=yes + fi + fi +} + + CheckX11() { diff --git a/configure.in b/configure.in index 16c42fd949..4af3d27de1 100644 --- a/configure.in +++ b/configure.in @@ -1124,44 +1124,6 @@ CheckStackBoundary() fi } -CheckMir() -{ - AC_ARG_ENABLE(video-mir, - AC_HELP_STRING([--enable-video-mir], [use Mir video driver [[default=yes]]]), - , enable_video_mir=yes) - - if test x$enable_video = xyes -a x$enable_video_mir = xyes; then - AC_PATH_PROG(PKG_CONFIG, pkg-config, no) - - if test x$PKG_CONFIG != xno; then - AC_MSG_CHECKING(for Mir support) - video_mir=no - tmp_CFLAGS="$CFLAGS" - CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" - - AC_TRY_COMPILE([ - #include - #include - #include - ],[ - ],[ - video_mir=yes - ]) - CFLAGS="$tmp_CFLAGS" - AC_MSG_RESULT($video_mir) - - if test x$video_mir = xyes; then - AC_DEFINE(SDL_VIDEO_DRIVER_MIR) - SOURCES="$SOURCES $srcdir/src/video/mir/*.c" - EXTRA_CFLAGS="$EXTRA_CFLAGS `$PKG_CONFIG --cflags egl mirclient xkbcommon`" - EXTRA_LDFLAGS="$EXTRA_LDFLAGS `$PKG_CONFIG --libs egl mirclient xkbcommon`" - have_video=yes - SUMMARY_video="${SUMMARY_video} mir" - fi - fi - fi -} - dnl See if GCC's -Wall is supported. CheckWarnAll() { @@ -1251,7 +1213,7 @@ AC_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [[de fi if test x$have_loadso != xyes && \ test x$enable_wayland_shared = xyes; then - AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic WAYLAND loading]) + AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic Wayland loading]) enable_wayland_shared=no fi if test x$have_loadso = xyes && \ @@ -1263,7 +1225,7 @@ AC_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [[de echo "-- dynamic libwayland-client -> $wayland_client_lib" echo "-- dynamic libwayland-egl -> $wayland_egl_lib" echo "-- dynamic libwayland-cursor -> $wayland_cursor_lib" - echo "-- dynamic xkbcommon -> $xkbcommon_lib" + echo "-- dynamic libxkbcommon -> $xkbcommon_lib" AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC, "$wayland_client_lib", [ ]) AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL, "$wayland_egl_lib", [ ]) AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR, "$wayland_cursor_lib", [ ]) @@ -1279,6 +1241,70 @@ AC_HELP_STRING([--enable-wayland-shared], [dynamically load Wayland support [[de fi } +dnl Check for Mir +CheckMir() +{ + AC_ARG_ENABLE(video-mir, +AC_HELP_STRING([--enable-video-mir], [use Mir video driver [[default=yes]]]), + ,enable_video_mir=yes) + + if test x$enable_video = xyes -a x$enable_video_mir = xyes; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + AC_MSG_CHECKING(for Mir support) + video_mir=no + if test x$PKG_CONFIG != xno; then + if $PKG_CONFIG --exists mirclient egl xkbcommon ; then + MIR_CFLAGS=`$PKG_CONFIG --cflags mirclient egl xkbcommon` + MIR_LIBS=`$PKG_CONFIG --libs mirclient egl xkbcommon` + video_mir=yes + fi + fi + AC_MSG_RESULT($video_mir) + + if test x$video_mir = xyes; then + AC_DEFINE(SDL_VIDEO_DRIVER_MIR, 1, [ ]) + SOURCES="$SOURCES $srcdir/src/video/mir/*.c" + EXTRA_CFLAGS="$EXTRA_CFLAGS $MIR_CFLAGS" + AC_ARG_ENABLE(mir-shared, +AC_HELP_STRING([--enable-mir-shared], [dynamically load Mir support [[default=maybe]]]), + , enable_mir_shared=maybe) + + dnl FIXME: Do BSD and OS X need special cases? + case "$host" in + *) + mirclient_lib=[`find_lib "libmirclient.so.*" "$MIR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + xkbcommon_lib=[`find_lib "libxkbcommon.so.*" "$MIR_LIBS" | sed 's/.*\/\(.*\)/\1/; q'`] + ;; + esac + + if test x$enable_mir_shared = xmaybe; then + enable_mir_shared=yes + fi + if test x$have_loadso != xyes && \ + test x$enable_mir_shared = xyes; then + AC_MSG_WARN([You must have SDL_LoadObject() support for dynamic Mir loading]) + enable_mir_shared=no + fi + if test x$have_loadso = xyes && \ + test x$enable_mir_shared = xyes && \ + test x$mirclient_lib != x && \ + test x$xkbcommon_lib != x; then + echo "-- dynamic libmirclient -> $mirclient_lib" + echo "-- dynamic libxkbcommon -> $xkbcommon_lib" + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_MIR_DYNAMIC, "$mirclient_lib", [ ]) + AC_DEFINE_UNQUOTED(SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON, "$xkbcommon_lib", [ ]) + SUMMARY_video="${SUMMARY_video} mir(dynamic)" + else + enable_mir_shared=no + EXTRA_LDFLAGS="$EXTRA_LDFLAGS $MIR_LIBS" + SUMMARY_video="${SUMMARY_video} mir" + fi + have_video=yes + fi + fi +} + + dnl Find the X11 include and library directories CheckX11() { diff --git a/include/SDL_config.h.cmake b/include/SDL_config.h.cmake index ca731f3f96..41bc9e1a5e 100644 --- a/include/SDL_config.h.cmake +++ b/include/SDL_config.h.cmake @@ -259,7 +259,19 @@ #cmakedefine SDL_VIDEO_DRIVER_DUMMY @SDL_VIDEO_DRIVER_DUMMY@ #cmakedefine SDL_VIDEO_DRIVER_WINDOWS @SDL_VIDEO_DRIVER_WINDOWS@ #cmakedefine SDL_VIDEO_DRIVER_WAYLAND @SDL_VIDEO_DRIVER_WAYLAND@ + +#if 0 +/* !!! FIXME: in configure script version, missing here: */ +#undef SDL_VIDEO_DRIVER_WAYLAND_QT_TOUCH +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR +#undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON +#endif + #cmakedefine SDL_VIDEO_DRIVER_MIR @SDL_VIDEO_DRIVER_MIR@ +#cmakedefine SDL_VIDEO_DRIVER_MIR_DYNAMIC @SDL_VIDEO_DRIVER_MIR_DYNAMIC@ +#cmakedefine SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON @SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON@ #cmakedefine SDL_VIDEO_DRIVER_X11 @SDL_VIDEO_DRIVER_X11@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC @SDL_VIDEO_DRIVER_X11_DYNAMIC@ #cmakedefine SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT @SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT@ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index eb9d805c36..9ad2d3d27f 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -268,6 +268,8 @@ #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR #undef SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON #undef SDL_VIDEO_DRIVER_MIR +#undef SDL_VIDEO_DRIVER_MIR_DYNAMIC +#undef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON #undef SDL_VIDEO_DRIVER_X11 #undef SDL_VIDEO_DRIVER_RPI #undef SDL_VIDEO_DRIVER_X11_DYNAMIC diff --git a/src/video/mir/SDL_mirdyn.c b/src/video/mir/SDL_mirdyn.c new file mode 100644 index 0000000000..f544d06ec5 --- /dev/null +++ b/src/video/mir/SDL_mirdyn.c @@ -0,0 +1,177 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "../../SDL_internal.h" + +#if SDL_VIDEO_DRIVER_MIR + +#define DEBUG_DYNAMIC_MIR 0 + +#include "SDL_mirdyn.h" + +#if DEBUG_DYNAMIC_MIR +#include "SDL_log.h" +#endif + +#ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC + +#include "SDL_name.h" +#include "SDL_loadso.h" + +typedef struct +{ + void *lib; + const char *libname; +} mirdynlib; + +#ifndef SDL_VIDEO_DRIVER_MIR_DYNAMIC +#define SDL_VIDEO_DRIVER_MIR_DYNAMIC NULL +#endif +#ifndef SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON +#define SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON NULL +#endif + +static mirdynlib mirlibs[] = { + {NULL, SDL_VIDEO_DRIVER_MIR_DYNAMIC}, + {NULL, SDL_VIDEO_DRIVER_MIR_DYNAMIC_XKBCOMMON} +}; + +static void * +MIR_GetSym(const char *fnname, int *pHasModule) +{ + int i; + void *fn = NULL; + for (i = 0; i < SDL_TABLESIZE(mirlibs); i++) { + if (mirlibs[i].lib != NULL) { + fn = SDL_LoadFunction(mirlibs[i].lib, fnname); + if (fn != NULL) + break; + } + } + +#if DEBUG_DYNAMIC_MIR + if (fn != NULL) + SDL_Log("MIR: Found '%s' in %s (%p)\n", fnname, mirlibs[i].libname, fn); + else + SDL_Log("MIR: Symbol '%s' NOT FOUND!\n", fnname); +#endif + + if (fn == NULL) + *pHasModule = 0; /* kill this module. */ + + return fn; +} + +#endif /* SDL_VIDEO_DRIVER_MIR_DYNAMIC */ + +/* Define all the function pointers and wrappers... */ +#define SDL_MIR_MODULE(modname) int SDL_MIR_HAVE_##modname = 0; +#define SDL_MIR_SYM(rc,fn,params) SDL_DYNMIRFN_##fn MIR_##fn = NULL; +#include "SDL_mirsym.h" +#undef SDL_MIR_MODULE +#undef SDL_MIR_SYM + +static int mir_load_refcount = 0; + +void +SDL_MIR_UnloadSymbols(void) +{ + /* Don't actually unload if more than one module is using the libs... */ + if (mir_load_refcount > 0) { + if (--mir_load_refcount == 0) { +#ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC + int i; +#endif + + /* set all the function pointers to NULL. */ +#define SDL_MIR_MODULE(modname) SDL_MIR_HAVE_##modname = 0; +#define SDL_MIR_SYM(rc,fn,params) MIR_##fn = NULL; +#include "SDL_mirsym.h" +#undef SDL_MIR_MODULE +#undef SDL_MIR_SYM + + +#ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC + for (i = 0; i < SDL_TABLESIZE(mirlibs); i++) { + if (mirlibs[i].lib != NULL) { + SDL_UnloadObject(mirlibs[i].lib); + mirlibs[i].lib = NULL; + } + } +#endif + } + } +} + +/* returns non-zero if all needed symbols were loaded. */ +int +SDL_MIR_LoadSymbols(void) +{ + int rc = 1; /* always succeed if not using Dynamic MIR stuff. */ + + /* deal with multiple modules (dga, wayland, mir, etc) needing these symbols... */ + if (mir_load_refcount++ == 0) { +#ifdef SDL_VIDEO_DRIVER_MIR_DYNAMIC + int i; + int *thismod = NULL; + for (i = 0; i < SDL_TABLESIZE(mirlibs); i++) { + if (mirlibs[i].libname != NULL) { + mirlibs[i].lib = SDL_LoadObject(mirlibs[i].libname); + } + } + +#define SDL_MIR_MODULE(modname) SDL_MIR_HAVE_##modname = 1; /* default yes */ +#define SDL_MIR_SYM(rc,fn,params) +#include "SDL_mirsym.h" +#undef SDL_MIR_MODULE +#undef SDL_MIR_SYM + +#define SDL_MIR_MODULE(modname) thismod = &SDL_MIR_HAVE_##modname; +#define SDL_MIR_SYM(rc,fn,params) MIR_##fn = (SDL_DYNMIRFN_##fn) MIR_GetSym(#fn,thismod); +#include "SDL_mirsym.h" +#undef SDL_MIR_MODULE +#undef SDL_MIR_SYM + + if ((SDL_MIR_HAVE_MIR_CLIENT) && (SDL_MIR_HAVE_XKBCOMMON)) { + /* all required symbols loaded. */ + SDL_ClearError(); + } else { + /* in case something got loaded... */ + SDL_MIR_UnloadSymbols(); + rc = 0; + } + +#else /* no dynamic MIR */ + +#define SDL_MIR_MODULE(modname) SDL_MIR_HAVE_##modname = 1; /* default yes */ +#define SDL_MIR_SYM(rc,fn,params) MIR_##fn = fn; +#include "SDL_mirsym.h" +#undef SDL_MIR_MODULE +#undef SDL_MIR_SYM + +#endif + } + + return rc; +} + +#endif /* SDL_VIDEO_DRIVER_MIR */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirdyn.h b/src/video/mir/SDL_mirdyn.h new file mode 100644 index 0000000000..3bd62e14e9 --- /dev/null +++ b/src/video/mir/SDL_mirdyn.h @@ -0,0 +1,53 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef _SDL_mirdyn_h +#define _SDL_mirdyn_h + +#include "../../SDL_internal.h" + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int SDL_MIR_LoadSymbols(void); +void SDL_MIR_UnloadSymbols(void); + +/* Declare all the function pointers and wrappers... */ +#define SDL_MIR_MODULE(modname) +#define SDL_MIR_SYM(rc,fn,params) \ + typedef rc (*SDL_DYNMIRFN_##fn) params; \ + extern SDL_DYNMIRFN_##fn MIR_##fn; +#include "SDL_mirsym.h" +#undef SDL_MIR_MODULE +#undef SDL_MIR_SYM + +#ifdef __cplusplus +} +#endif + +#endif /* !defined _SDL_mirdyn_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirevents.c b/src/video/mir/SDL_mirevents.c index 9339a3ca64..f2d3ef3823 100644 --- a/src/video/mir/SDL_mirevents.c +++ b/src/video/mir/SDL_mirevents.c @@ -37,13 +37,15 @@ #include +#include "SDL_mirdyn.h" + static void HandleKeyText(int32_t key_code) { char text[8]; int size = 0; - size = xkb_keysym_to_utf8(key_code, text, sizeof text); + size = MIR_xkb_keysym_to_utf8(key_code, text, sizeof text); if (size > 0) { text[size] = '\0'; diff --git a/src/video/mir/SDL_mirframebuffer.c b/src/video/mir/SDL_mirframebuffer.c index 26badf9ff5..22f290b918 100644 --- a/src/video/mir/SDL_mirframebuffer.c +++ b/src/video/mir/SDL_mirframebuffer.c @@ -31,6 +31,8 @@ #include "SDL_mirframebuffer.h" #include "SDL_mirwindow.h" +#include "SDL_mirdyn.h" + static const Uint32 mir_pixel_format_to_sdl_format[] = { SDL_PIXELFORMAT_UNKNOWN, /* mir_pixel_format_invalid */ SDL_PIXELFORMAT_ABGR8888, /* mir_pixel_format_abgr_8888 */ @@ -59,7 +61,7 @@ MIR_CreateWindowFramebuffer(_THIS, SDL_Window* window, Uint32* format, mir_window = window->driverdata; - mir_surface_get_parameters(mir_window->surface, &surfaceparm); + MIR_mir_surface_get_parameters(mir_window->surface, &surfaceparm); *format = MIR_GetSDLPixelFormat(surfaceparm.pixel_format); if (*format == SDL_PIXELFORMAT_UNKNOWN) @@ -71,9 +73,9 @@ MIR_CreateWindowFramebuffer(_THIS, SDL_Window* window, Uint32* format, if (*pixels == NULL) return SDL_OutOfMemory(); - mir_window->surface = mir_connection_create_surface_sync(mir_data->connection, &surfaceparm); - if (!mir_surface_is_valid(mir_window->surface)) { - const char* error = mir_surface_get_error_message(mir_window->surface); + mir_window->surface = MIR_mir_connection_create_surface_sync(mir_data->connection, &surfaceparm); + if (!MIR_mir_surface_is_valid(mir_window->surface)) { + const char* error = MIR_mir_surface_get_error_message(mir_window->surface); return SDL_SetError("Failed to created a mir surface: %s", error); } @@ -90,7 +92,7 @@ MIR_UpdateWindowFramebuffer(_THIS, SDL_Window* window, int i, j, x, y, w, h, start; int bytes_per_pixel, bytes_per_row, s_stride, d_stride; - mir_surface_get_graphics_region(mir_window->surface, ®ion); + MIR_mir_surface_get_graphics_region(mir_window->surface, ®ion); char* s_dest = region.vaddr; char* pixels = (char*)window->surface->pixels; @@ -138,7 +140,7 @@ MIR_UpdateWindowFramebuffer(_THIS, SDL_Window* window, } } - mir_surface_swap_buffers_sync(mir_window->surface); + MIR_mir_surface_swap_buffers_sync(mir_window->surface); return 0; } diff --git a/src/video/mir/SDL_mirmouse.c b/src/video/mir/SDL_mirmouse.c index 27976a5f6d..def9dbd06d 100644 --- a/src/video/mir/SDL_mirmouse.c +++ b/src/video/mir/SDL_mirmouse.c @@ -32,6 +32,8 @@ #include "../../events/SDL_mouse_c.h" #include "SDL_assert.h" +#include "SDL_mirdyn.h" + static SDL_Cursor* MIR_CreateDefaultCursor() { diff --git a/src/video/mir/SDL_miropengl.c b/src/video/mir/SDL_miropengl.c index c5b36a3ae5..510ad3c0e6 100644 --- a/src/video/mir/SDL_miropengl.c +++ b/src/video/mir/SDL_miropengl.c @@ -33,6 +33,8 @@ #define DEFAULT_OGL_ES2 "libGLESv2.so" +#include "SDL_mirdyn.h" + void* MIR_GLHandle = NULL; void @@ -70,8 +72,7 @@ MIR_GL_LoadLibrary(_THIS, const char* path) { MIR_Data* mir_data = _this->driverdata; - SDL_EGL_LoadLibrary(_this, path, - mir_connection_get_egl_native_display(mir_data->connection)); + SDL_EGL_LoadLibrary(_this, path, MIR_mir_connection_get_egl_native_display(mir_data->connection)); SDL_EGL_ChooseConfig(_this); @@ -103,7 +104,7 @@ Ensure_GL_HandleOpen() void* MIR_GL_GetProcAddress(_THIS, const char* proc) { - void* proc_addr = eglGetProcAddress(proc); + void* proc_addr = SDL_EGL_GetProcAddress(_this, proc); /* FIXME when on the phone/tablet eglGetProcAddress returns NULL through libhybris, seems to be a problem in android. Also looks like a problem in the android video driver: diff --git a/src/video/mir/SDL_mirsym.h b/src/video/mir/SDL_mirsym.h new file mode 100644 index 0000000000..fe495e3e55 --- /dev/null +++ b/src/video/mir/SDL_mirsym.h @@ -0,0 +1,48 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* *INDENT-OFF* */ + +SDL_MIR_MODULE(MIR_CLIENT) +SDL_MIR_SYM(MirDisplayConfiguration*,mir_connection_create_display_config,(MirConnection *connection)) +SDL_MIR_SYM(MirSurface *,mir_connection_create_surface_sync,(MirConnection *connection, MirSurfaceParameters const *params)) +SDL_MIR_SYM(void,mir_connection_get_available_surface_formats,(MirConnection* connection, MirPixelFormat* formats, unsigned const int format_size, unsigned int *num_valid_formats)) +SDL_MIR_SYM(MirEGLNativeDisplayType,mir_connection_get_egl_native_display,(MirConnection *connection)) +SDL_MIR_SYM(int,mir_connection_is_valid,(MirConnection *connection)) +SDL_MIR_SYM(void,mir_connection_release,(MirConnection *connection)) +SDL_MIR_SYM(MirConnection *,mir_connect_sync,(char const *server, char const *app_name)) +SDL_MIR_SYM(void,mir_display_config_destroy,(MirDisplayConfiguration* display_configuration)) +SDL_MIR_SYM(MirEGLNativeWindowType,mir_surface_get_egl_native_window,(MirSurface *surface)) +SDL_MIR_SYM(char const *,mir_surface_get_error_message,(MirSurface *surface)) +SDL_MIR_SYM(void,mir_surface_get_graphics_region,(MirSurface *surface, MirGraphicsRegion *graphics_region)) +SDL_MIR_SYM(void,mir_surface_get_parameters,(MirSurface *surface, MirSurfaceParameters *parameters)) +SDL_MIR_SYM(int,mir_surface_is_valid,(MirSurface *surface)) +SDL_MIR_SYM(void,mir_surface_release_sync,(MirSurface *surface)) +SDL_MIR_SYM(void,mir_surface_set_event_handler,(MirSurface *surface, MirEventDelegate const *event_handler)) +SDL_MIR_SYM(MirWaitHandle*,mir_surface_set_type,(MirSurface *surface, MirSurfaceType type)) +SDL_MIR_SYM(void,mir_surface_swap_buffers_sync,(MirSurface *surface)) + +SDL_MIR_MODULE(XKBCOMMON) +SDL_MIR_SYM(int,xkb_keysym_to_utf8,(xkb_keysym_t keysym, char *buffer, size_t size)) + +/* *INDENT-ON* */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/video/mir/SDL_mirvideo.c b/src/video/mir/SDL_mirvideo.c index c160f37431..ad6de151bf 100644 --- a/src/video/mir/SDL_mirvideo.c +++ b/src/video/mir/SDL_mirvideo.c @@ -35,6 +35,8 @@ #include "SDL_mirvideo.h" #include "SDL_mirwindow.h" +#include "SDL_mirdyn.h" + #define MIR_DRIVER_NAME "mir" static int @@ -74,13 +76,23 @@ MIR_ResizeWindowShape(SDL_Window* window) static int MIR_Available() { - return 1; + int available = 0; + + if (SDL_MIR_LoadSymbols()) { + /* !!! FIXME: try to make a MirConnection here. */ + available = 1; + SDL_MIR_UnloadSymbols(); + + } + + return available; } static void MIR_DeleteDevice(SDL_VideoDevice* device) { SDL_free(device); + SDL_MIR_UnloadSymbols(); } void @@ -92,16 +104,24 @@ static SDL_VideoDevice* MIR_CreateDevice(int device_index) { MIR_Data* mir_data; - SDL_VideoDevice* device = SDL_calloc(1, sizeof(SDL_VideoDevice)); + SDL_VideoDevice* device = NULL; + + if (!SDL_MIR_LoadSymbols()) { + return NULL; + } + + device = SDL_calloc(1, sizeof(SDL_VideoDevice)); if (!device) { + SDL_MIR_UnloadSymbols(); SDL_OutOfMemory(); return NULL; } mir_data = SDL_calloc(1, sizeof(MIR_Data)); if (!mir_data) { - SDL_OutOfMemory(); SDL_free(device); + SDL_MIR_UnloadSymbols(); + SDL_OutOfMemory(); return NULL; } @@ -225,8 +245,7 @@ MIR_InitDisplays(_THIS) MIR_Data* mir_data = _this->driverdata; int d; - MirDisplayConfiguration* display_config = - mir_connection_create_display_config(mir_data->connection); + MirDisplayConfiguration* display_config = MIR_mir_connection_create_display_config(mir_data->connection); for (d = 0; d < display_config->num_outputs; d++) { MirDisplayOutput const* out = display_config->outputs + d; @@ -246,7 +265,7 @@ MIR_InitDisplays(_THIS) } } - mir_display_config_destroy(display_config); + MIR_mir_display_config_destroy(display_config); } int @@ -254,9 +273,9 @@ MIR_VideoInit(_THIS) { MIR_Data* mir_data = _this->driverdata; - mir_data->connection = mir_connect_sync(NULL, __PRETTY_FUNCTION__); + mir_data->connection = MIR_mir_connect_sync(NULL, __PRETTY_FUNCTION__); - if (!mir_connection_is_valid(mir_data->connection)) + if (!MIR_mir_connection_is_valid(mir_data->connection)) return SDL_SetError("Failed to connect to the Mir Server"); MIR_InitDisplays(_this); @@ -275,7 +294,7 @@ MIR_VideoQuit(_THIS) MIR_GL_DeleteContext(_this, NULL); MIR_GL_UnloadLibrary(_this); - mir_connection_release(mir_data->connection); + MIR_mir_connection_release(mir_data->connection); SDL_free(mir_data); _this->driverdata = NULL; @@ -287,8 +306,7 @@ MIR_GetDisplayBounds(_THIS, SDL_VideoDisplay* display, SDL_Rect* rect) MIR_Data* mir_data = _this->driverdata; int d; - MirDisplayConfiguration* display_config = - mir_connection_create_display_config(mir_data->connection); + MirDisplayConfiguration* display_config = MIR_mir_connection_create_display_config(mir_data->connection); for (d = 0; d < display_config->num_outputs; d++) { MirDisplayOutput const* out = display_config->outputs + d; @@ -305,7 +323,7 @@ MIR_GetDisplayBounds(_THIS, SDL_VideoDisplay* display, SDL_Rect* rect) } } - mir_display_config_destroy(display_config); + MIR_mir_display_config_destroy(display_config); return 0; } diff --git a/src/video/mir/SDL_mirwindow.c b/src/video/mir/SDL_mirwindow.c index 519f8b3ce3..d233db47ff 100644 --- a/src/video/mir/SDL_mirwindow.c +++ b/src/video/mir/SDL_mirwindow.c @@ -33,11 +33,13 @@ #include "SDL_mirevents.h" #include "SDL_mirwindow.h" +#include "SDL_mirdyn.h" + int IsSurfaceValid(MIR_Window* mir_window) { - if (!mir_surface_is_valid(mir_window->surface)) { - const char* error = mir_surface_get_error_message(mir_window->surface); + if (!MIR_mir_surface_is_valid(mir_window->surface)) { + const char* error = MIR_mir_surface_get_error_message(mir_window->surface); return SDL_SetError("Failed to created a mir surface: %s", error); } @@ -52,7 +54,7 @@ FindValidPixelFormat(MIR_Data* mir_data) unsigned int f; MirPixelFormat formats[pf_size]; - mir_connection_get_available_surface_formats(mir_data->connection, formats, + MIR_mir_connection_get_available_surface_formats(mir_data->connection, formats, pf_size, &valid_formats); for (f = 0; f < valid_formats; f++) { @@ -111,15 +113,15 @@ MIR_CreateWindow(_THIS, SDL_Window* window) return SDL_SetError("Failed to find a valid pixel format."); } - mir_window->surface = mir_connection_create_surface_sync(mir_data->connection, &surfaceparm); - if (!mir_surface_is_valid(mir_window->surface)) { - const char* error = mir_surface_get_error_message(mir_window->surface); + mir_window->surface = MIR_mir_connection_create_surface_sync(mir_data->connection, &surfaceparm); + if (!MIR_mir_surface_is_valid(mir_window->surface)) { + const char* error = MIR_mir_surface_get_error_message(mir_window->surface); return SDL_SetError("Failed to created a mir surface: %s", error); } if (window->flags & SDL_WINDOW_OPENGL) { EGLNativeWindowType egl_native_window = - (EGLNativeWindowType)mir_surface_get_egl_native_window(mir_window->surface); + (EGLNativeWindowType)MIR_mir_surface_get_egl_native_window(mir_window->surface); mir_window->egl_surface = SDL_EGL_CreateSurface(_this, egl_native_window); @@ -132,7 +134,7 @@ MIR_CreateWindow(_THIS, SDL_Window* window) mir_window->egl_surface = EGL_NO_SURFACE; } - mir_surface_set_event_handler(mir_window->surface, &delegate); + MIR_mir_surface_set_event_handler(mir_window->surface, &delegate); return 0; } @@ -147,7 +149,7 @@ MIR_DestroyWindow(_THIS, SDL_Window* window) if (mir_data) { SDL_EGL_DestroySurface(_this, mir_window->egl_surface); - mir_surface_release_sync(mir_window->surface); + MIR_mir_surface_release_sync(mir_window->surface); SDL_free(mir_window); } @@ -181,10 +183,9 @@ MIR_SetWindowFullscreen(_THIS, SDL_Window* window, return; if (fullscreen) { - mir_surface_set_type(mir_window->surface, mir_surface_state_fullscreen); - } - else { - mir_surface_set_type(mir_window->surface, mir_surface_state_restored); + MIR_mir_surface_set_type(mir_window->surface, mir_surface_state_fullscreen); + } else { + MIR_mir_surface_set_type(mir_window->surface, mir_surface_state_restored); } } @@ -196,7 +197,7 @@ MIR_MaximizeWindow(_THIS, SDL_Window* window) if (IsSurfaceValid(mir_window) < 0) return; - mir_surface_set_type(mir_window->surface, mir_surface_state_maximized); + MIR_mir_surface_set_type(mir_window->surface, mir_surface_state_maximized); } void @@ -207,7 +208,7 @@ MIR_MinimizeWindow(_THIS, SDL_Window* window) if (IsSurfaceValid(mir_window) < 0) return; - mir_surface_set_type(mir_window->surface, mir_surface_state_minimized); + MIR_mir_surface_set_type(mir_window->surface, mir_surface_state_minimized); } void @@ -218,7 +219,7 @@ MIR_RestoreWindow(_THIS, SDL_Window * window) if (IsSurfaceValid(mir_window) < 0) return; - mir_surface_set_type(mir_window->surface, mir_surface_state_restored); + MIR_mir_surface_set_type(mir_window->surface, mir_surface_state_restored); } #endif /* SDL_VIDEO_DRIVER_MIR */ From f5eb38d1ae9299f09a2e700ec4ba8befa6a15dc1 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 11:53:21 -0500 Subject: [PATCH 265/402] Unload Wayland libs if memory allocation fails during init. --- src/video/wayland/SDL_waylandvideo.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c index bc935b9bdf..43826b831f 100644 --- a/src/video/wayland/SDL_waylandvideo.c +++ b/src/video/wayland/SDL_waylandvideo.c @@ -95,6 +95,7 @@ Wayland_CreateDevice(int devindex) /* Initialize all variables that we clean on shutdown */ device = SDL_calloc(1, sizeof(SDL_VideoDevice)); if (!device) { + SDL_WAYLAND_UnloadSymbols(); SDL_OutOfMemory(); return NULL; } From 959a008781bb3735a566f9f4c1e13829a8a0fbff Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 11:59:17 -0500 Subject: [PATCH 266/402] Temporarily default Wayland and Mir to disabled, for 2.0.2 release. We'll flip the default back to enabled right after 2.0.2 is finalized, and try to declare them stable and ready by 2.0.3. Those that have an interest in supporting them in 2.0.2 can manually enable them in the configure script with --enable-video-wayland and/or --enable-video-mir. --- CMakeLists.txt | 4 ++-- configure | 8 ++++---- configure.in | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8aa8fd7eaf..eb37448eda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -231,9 +231,9 @@ set_option(SNDIO "Support the sndio audio API" ${UNIX_SYS}) set_option(RPATH "Use an rpath when linking SDL" ${UNIX_SYS}) set_option(CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" OFF) set_option(INPUT_TSLIB "Use the Touchscreen library for input" ${UNIX_SYS}) -set_option(VIDEO_MIR "Use Mir video driver" ${UNIX_SYS}) set_option(VIDEO_X11 "Use X11 video driver" ${UNIX_SYS}) -set_option(VIDEO_WAYLAND "Use Wayland video driver" ${UNIX_SYS}) +set_option(VIDEO_WAYLAND "Use Wayland video driver" OFF) #${UNIX_SYS}) +set_option(VIDEO_MIR "Use Mir video driver" OFF) #${UNIX_SYS}) dep_option(X11_SHARED "Dynamically load X11 support" ON "VIDEO_X11" OFF) set(SDL_X11_OPTIONS Xcursor Xinerama XInput Xrandr Xscrnsaver XShape Xvm) foreach(_SUB ${SDL_X11_OPTIONS}) diff --git a/configure b/configure index b3e256646b..3203ff746c 100755 --- a/configure +++ b/configure @@ -18688,9 +18688,9 @@ CheckWayland() if test "${enable_video_wayland+set}" = set; then : enableval=$enable_video_wayland; else - enable_video_wayland=yes + enable_video_wayland=no fi - + #yes) # Check whether --enable-video-wayland-qt-touch was given. if test "${enable_video_wayland_qt_touch+set}" = set; then : @@ -18842,9 +18842,9 @@ CheckMir() if test "${enable_video_mir+set}" = set; then : enableval=$enable_video_mir; else - enable_video_mir=yes + enable_video_mir=no fi - + #yes) if test x$enable_video = xyes -a x$enable_video_mir = xyes; then # Extract the first word of "pkg-config", so it can be a program name with args. diff --git a/configure.in b/configure.in index 4af3d27de1..55377007d8 100644 --- a/configure.in +++ b/configure.in @@ -1164,7 +1164,7 @@ CheckWayland() { AC_ARG_ENABLE(video-wayland, AC_HELP_STRING([--enable-video-wayland], [use Wayland video driver [[default=yes]]]), - ,enable_video_wayland=yes) + ,enable_video_wayland=no) #yes) AC_ARG_ENABLE(video-wayland-qt-touch, AC_HELP_STRING([--enable-video-wayland-qt-touch], [QtWayland server support for Wayland video driver [[default=yes]]]), @@ -1246,7 +1246,7 @@ CheckMir() { AC_ARG_ENABLE(video-mir, AC_HELP_STRING([--enable-video-mir], [use Mir video driver [[default=yes]]]), - ,enable_video_mir=yes) + ,enable_video_mir=no) #yes) if test x$enable_video = xyes -a x$enable_video_mir = xyes; then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) From eb011ad82324527cdcc18d6a2ec3dc4731b1b549 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 14:45:38 -0500 Subject: [PATCH 267/402] Fixed some compiler warnings from the latest Clang, cleaned up some things. --- src/file/SDL_rwops.c | 84 ++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index aac044a0a8..b372c3e4b2 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -282,7 +282,7 @@ windows_file_close(SDL_RWops * context) context->hidden.windowsio.buffer.data = NULL; SDL_FreeRW(context); } - return (0); + return 0; } #endif /* __WIN32__ */ @@ -318,7 +318,7 @@ stdio_seek(SDL_RWops * context, Sint64 offset, int whence) } #else if (fseek(context->hidden.stdio.fp, offset, whence) == 0) { - return (ftell(context->hidden.stdio.fp)); + return ftell(context->hidden.stdio.fp); } #endif return SDL_Error(SDL_EFSEEK); @@ -333,7 +333,7 @@ stdio_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum) if (nread == 0 && ferror(context->hidden.stdio.fp)) { SDL_Error(SDL_EFREAD); } - return (nread); + return nread; } static size_t SDLCALL @@ -345,7 +345,7 @@ stdio_write(SDL_RWops * context, const void *ptr, size_t size, size_t num) if (nwrote == 0 && ferror(context->hidden.stdio.fp)) { SDL_Error(SDL_EFWRITE); } - return (nwrote); + return nwrote; } static int SDLCALL @@ -432,14 +432,14 @@ mem_write(SDL_RWops * context, const void *ptr, size_t size, size_t num) } SDL_memcpy(context->hidden.mem.here, ptr, num * size); context->hidden.mem.here += num * size; - return (num); + return num; } static size_t SDLCALL mem_writeconst(SDL_RWops * context, const void *ptr, size_t size, size_t num) { SDL_SetError("Can't write to read-only memory"); - return (0); + return 0; } static int SDLCALL @@ -448,7 +448,7 @@ mem_close(SDL_RWops * context) if (context) { SDL_FreeRW(context); } - return (0); + return 0; } @@ -535,7 +535,7 @@ SDL_RWFromFile(const char *file, const char *mode) SDL_SetError("SDL not compiled with stdio support"); #endif /* !HAVE_STDIO_H */ - return (rwops); + return rwops; } #ifdef HAVE_STDIO_H @@ -555,7 +555,7 @@ SDL_RWFromFP(FILE * fp, SDL_bool autoclose) rwops->hidden.stdio.autoclose = autoclose; rwops->type = SDL_RWOPS_STDFILE; } - return (rwops); + return rwops; } #else SDL_RWops * @@ -572,11 +572,11 @@ SDL_RWFromMem(void *mem, int size) SDL_RWops *rwops = NULL; if (!mem) { SDL_InvalidParamError("mem"); - return (rwops); + return rwops; } if (!size) { SDL_InvalidParamError("size"); - return (rwops); + return rwops; } rwops = SDL_AllocRW(); @@ -591,7 +591,7 @@ SDL_RWFromMem(void *mem, int size) rwops->hidden.mem.stop = rwops->hidden.mem.base + size; rwops->type = SDL_RWOPS_MEMORY; } - return (rwops); + return rwops; } SDL_RWops * @@ -600,11 +600,11 @@ SDL_RWFromConstMem(const void *mem, int size) SDL_RWops *rwops = NULL; if (!mem) { SDL_InvalidParamError("mem"); - return (rwops); + return rwops; } if (!size) { SDL_InvalidParamError("size"); - return (rwops); + return rwops; } rwops = SDL_AllocRW(); @@ -619,7 +619,7 @@ SDL_RWFromConstMem(const void *mem, int size) rwops->hidden.mem.stop = rwops->hidden.mem.base + size; rwops->type = SDL_RWOPS_MEMORY_RO; } - return (rwops); + return rwops; } SDL_RWops * @@ -633,7 +633,7 @@ SDL_AllocRW(void) } else { area->type = SDL_RWOPS_UNKNOWN; } - return (area); + return area; } void @@ -649,7 +649,7 @@ SDL_ReadU8(SDL_RWops * src) { Uint8 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); + SDL_RWread(src, &value, sizeof (value), 1); return value; } @@ -658,8 +658,8 @@ SDL_ReadLE16(SDL_RWops * src) { Uint16 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); - return (SDL_SwapLE16(value)); + SDL_RWread(src, &value, sizeof (value), 1); + return SDL_SwapLE16(value); } Uint16 @@ -667,8 +667,8 @@ SDL_ReadBE16(SDL_RWops * src) { Uint16 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); - return (SDL_SwapBE16(value)); + SDL_RWread(src, &value, sizeof (value), 1); + return SDL_SwapBE16(value); } Uint32 @@ -676,8 +676,8 @@ SDL_ReadLE32(SDL_RWops * src) { Uint32 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); - return (SDL_SwapLE32(value)); + SDL_RWread(src, &value, sizeof (value), 1); + return SDL_SwapLE32(value); } Uint32 @@ -685,8 +685,8 @@ SDL_ReadBE32(SDL_RWops * src) { Uint32 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); - return (SDL_SwapBE32(value)); + SDL_RWread(src, &value, sizeof (value), 1); + return SDL_SwapBE32(value); } Uint64 @@ -694,8 +694,8 @@ SDL_ReadLE64(SDL_RWops * src) { Uint64 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); - return (SDL_SwapLE64(value)); + SDL_RWread(src, &value, sizeof (value), 1); + return SDL_SwapLE64(value); } Uint64 @@ -703,56 +703,56 @@ SDL_ReadBE64(SDL_RWops * src) { Uint64 value = 0; - SDL_RWread(src, &value, (sizeof value), 1); - return (SDL_SwapBE64(value)); + SDL_RWread(src, &value, sizeof (value), 1); + return SDL_SwapBE64(value); } size_t SDL_WriteU8(SDL_RWops * dst, Uint8 value) { - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + return SDL_RWwrite(dst, &value, sizeof (value), 1); } size_t SDL_WriteLE16(SDL_RWops * dst, Uint16 value) { - value = SDL_SwapLE16(value); - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + const Uint16 swapped = SDL_SwapLE16(value); + return SDL_RWwrite(dst, &swapped, sizeof (swapped), 1); } size_t SDL_WriteBE16(SDL_RWops * dst, Uint16 value) { - value = SDL_SwapBE16(value); - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + const Uint16 swapped = SDL_SwapBE16(value); + return SDL_RWwrite(dst, &swapped, sizeof (swapped), 1); } size_t SDL_WriteLE32(SDL_RWops * dst, Uint32 value) { - value = SDL_SwapLE32(value); - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + const Uint32 swapped = SDL_SwapLE32(value); + return SDL_RWwrite(dst, &swapped, sizeof (swapped), 1); } size_t SDL_WriteBE32(SDL_RWops * dst, Uint32 value) { - value = SDL_SwapBE32(value); - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + const Uint32 swapped = SDL_SwapBE32(value); + return SDL_RWwrite(dst, &swapped, sizeof (swapped), 1); } size_t SDL_WriteLE64(SDL_RWops * dst, Uint64 value) { - value = SDL_SwapLE64(value); - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + const Uint64 swapped = SDL_SwapLE64(value); + return SDL_RWwrite(dst, &swapped, sizeof (swapped), 1); } size_t SDL_WriteBE64(SDL_RWops * dst, Uint64 value) { - value = SDL_SwapBE64(value); - return (SDL_RWwrite(dst, &value, (sizeof value), 1)); + const Uint64 swapped = SDL_SwapBE64(value); + return SDL_RWwrite(dst, &swapped, sizeof (swapped), 1); } /* vi: set ts=4 sw=4 expandtab: */ From 32e4f1b9c513c07af5b988510bf1394e2a4ed055 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Feb 2014 14:47:48 -0500 Subject: [PATCH 268/402] Removed -force_cpusubtype_ALL cflag from Mac builds. This was for PowerPC G3 (!) compatibility, and Clang doesn't even recognize the flag anymore. --- configure | 3 --- configure.in | 3 --- 2 files changed, 6 deletions(-) diff --git a/configure b/configure index 3203ff746c..ed07939016 100755 --- a/configure +++ b/configure @@ -23008,9 +23008,6 @@ $as_echo "#define SDL_FILESYSTEM_HAIKU 1" >>confdefs.h CheckOpenGLX11 CheckPTHREAD - # Need this or things might misbuild on a G3. - EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL" - # Set up files for the audio library if test x$enable_audio = xyes; then diff --git a/configure.in b/configure.in index 55377007d8..68a9586ec0 100644 --- a/configure.in +++ b/configure.in @@ -3016,9 +3016,6 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau CheckOpenGLX11 CheckPTHREAD - # Need this or things might misbuild on a G3. - EXTRA_CFLAGS="$EXTRA_CFLAGS -force_cpusubtype_ALL" - # Set up files for the audio library if test x$enable_audio = xyes; then AC_DEFINE(SDL_AUDIO_DRIVER_COREAUDIO, 1, [ ]) From 9387d534492c5fc9d4ede3f9d03f8f50b6b4e2f4 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Mon, 3 Feb 2014 22:52:18 -0500 Subject: [PATCH 269/402] add simple test showing off hotplugging of joysticks w/ haptic. --- test/Makefile.in | 4 ++ test/testhotplug.c | 130 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 test/testhotplug.c diff --git a/test/Makefile.in b/test/Makefile.in index 8a8c2b8f3d..bf03896fca 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -24,6 +24,7 @@ TARGETS = \ testgles2$(EXE) \ testhaptic$(EXE) \ testrumble$(EXE) \ + testhotplug$(EXE) \ testthread$(EXE) \ testiconv$(EXE) \ testime$(EXE) \ @@ -139,6 +140,9 @@ testgles2$(EXE): $(srcdir)/testgles2.c testhaptic$(EXE): $(srcdir)/testhaptic.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) +testhotplug$(EXE): $(srcdir)/testhotplug.c + $(CC) -o $@ $^ $(CFLAGS) $(LIBS) + testrumble$(EXE): $(srcdir)/testrumble.c $(CC) -o $@ $^ $(CFLAGS) $(LIBS) diff --git a/test/testhotplug.c b/test/testhotplug.c new file mode 100644 index 0000000000..00c3d634be --- /dev/null +++ b/test/testhotplug.c @@ -0,0 +1,130 @@ +/* + Copyright (C) 1997-2013 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ + +/* Simple program to test the SDL joystick hotplugging */ + +#include +#include +#include + +#include "SDL.h" +#include "SDL_haptic.h" + +#ifndef SDL_JOYSTICK_DISABLED + +int +main(int argc, char *argv[]) +{ + SDL_Joystick *joystick = NULL; + SDL_Haptic *haptic = NULL; + SDL_JoystickID instance = -1; + SDL_bool keepGoing = SDL_TRUE; + + /* Enable standard application logging */ + SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); + + SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1"); + + /* Initialize SDL (Note: video is required to start event loop) */ + if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC) < 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError()); + exit(1); + } + + //SDL_CreateWindow("Dummy", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 128, 128, 0); + + SDL_Log("There are %d joysticks at startup\n", SDL_NumJoysticks()); + SDL_Log("There are %d haptic devices at startup\n", SDL_NumHaptics()); + + while(keepGoing) + { + SDL_Event event; + while(SDL_PollEvent(&event)) + { + switch(event.type) + { + case SDL_QUIT: + keepGoing = SDL_FALSE; + break; + case SDL_JOYDEVICEADDED: + if (joystick != NULL) + { + SDL_Log("Only one joystick supported by this test\n"); + } + else + { + joystick = SDL_JoystickOpen(event.jdevice.which); + instance = SDL_JoystickInstanceID(joystick); + SDL_Log("Joy Added : %d : %s\n", event.jdevice.which, SDL_JoystickName(joystick)); + if (SDL_JoystickIsHaptic(joystick)) + { + haptic = SDL_HapticOpenFromJoystick(joystick); + if (haptic) + { + SDL_Log("Joy Haptic Opened\n"); + if (SDL_HapticRumbleInit( haptic ) != 0) + { + SDL_Log("Could not init Rumble!"); + SDL_HapticClose(haptic); + haptic = NULL; + } + } else { + SDL_Log("Joy haptic FAILED!\n"); + } + } + } + break; + case SDL_JOYDEVICEREMOVED: + if (instance == event.jdevice.which) + { + SDL_Log("Joy Removed: %d\n", event.jdevice.which); + instance = -1; + if(haptic) + { + SDL_HapticClose(haptic); + } + SDL_JoystickClose(joystick); + joystick = NULL; + } else { + SDL_Log("Unknown joystick diconnected\n"); + } + break; + case SDL_JOYAXISMOTION: +// SDL_Log("Axis Move: %d\n", event.jaxis.axis); + SDL_HapticRumblePlay(haptic, 0.2, 250); + break; + case SDL_JOYBUTTONDOWN: + SDL_Log("Button Press: %d\n", event.jbutton.button); + if(haptic) + { + SDL_HapticRumblePlay(haptic, 0.2, 250); + } + break; + case SDL_JOYBUTTONUP: + SDL_Log("Button Release: %d\n", event.jbutton.button); + break; + } + } + } + + SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); +} +#else + +int +main(int argc, char *argv[]) +{ + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick support.\n"); + exit(1); +} + +#endif From 88539fd9f5ecf84bd50cdfafa65a09e69cb5d4c8 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Mon, 3 Feb 2014 23:01:19 -0500 Subject: [PATCH 270/402] add logging for the case when haptic is not detected on the joystick as well. --- test/testhotplug.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/test/testhotplug.c b/test/testhotplug.c index 00c3d634be..4849a6a73b 100644 --- a/test/testhotplug.c +++ b/test/testhotplug.c @@ -78,9 +78,13 @@ main(int argc, char *argv[]) haptic = NULL; } } else { - SDL_Log("Joy haptic FAILED!\n"); + SDL_Log("Joy haptic open FAILED!\n"); } } + else + { + SDL_Log("No haptic found\n"); + } } break; case SDL_JOYDEVICEREMOVED: @@ -91,6 +95,7 @@ main(int argc, char *argv[]) if(haptic) { SDL_HapticClose(haptic); + haptic = NULL; } SDL_JoystickClose(joystick); joystick = NULL; From 0e281c6b406d7a4999ce46646e12368ca698bb75 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Mon, 3 Feb 2014 23:08:53 -0500 Subject: [PATCH 271/402] testhotplug: Actually log the SDL_Error that occured on failures --- test/testhotplug.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/testhotplug.c b/test/testhotplug.c index 4849a6a73b..d4f64bb02a 100644 --- a/test/testhotplug.c +++ b/test/testhotplug.c @@ -73,12 +73,12 @@ main(int argc, char *argv[]) SDL_Log("Joy Haptic Opened\n"); if (SDL_HapticRumbleInit( haptic ) != 0) { - SDL_Log("Could not init Rumble!"); + SDL_Log("Could not init Rumble!: %s\n", SDL_GetError()); SDL_HapticClose(haptic); haptic = NULL; } } else { - SDL_Log("Joy haptic open FAILED!\n"); + SDL_Log("Joy haptic open FAILED!: %s\n", SDL_GetError()); } } else From f2c9bede2f104abcdcbdc53e02ba9706183cda09 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 4 Feb 2014 11:38:40 -0500 Subject: [PATCH 272/402] Added SDL_GetAssertionHandler() and SDL_GetDefaultAssertionHandler(). --- include/SDL_assert.h | 29 +++++++++++++++++++++++++++++ src/SDL_assert.c | 13 +++++++++++++ src/dynapi/SDL_dynapi_overrides.h | 2 ++ src/dynapi/SDL_dynapi_procs.h | 2 ++ 4 files changed, 46 insertions(+) diff --git a/include/SDL_assert.h b/include/SDL_assert.h index e67dca92d9..4441dbfefb 100644 --- a/include/SDL_assert.h +++ b/include/SDL_assert.h @@ -202,6 +202,35 @@ extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( SDL_AssertionHandler handler, void *userdata); +/** + * \brief Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, + * that is used for assertions when SDL_SetAssertionHandler() hasn't been + * used to provide a different function. + * + * \return The default SDL_AssertionHandler that is called when an assert triggers. + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * \brief Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is + * set, is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * \param puserdata Pointer to a void*, which will store the "userdata" + * pointer that was passed to SDL_SetAssertionHandler(). + * This value will always be NULL for the default handler. + * If you don't care about this data, it is safe to pass + * a NULL pointer to this function to ignore it. + * \return The SDL_AssertionHandler that is called when an assert triggers. + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + /** * \brief Get a list of all assertion failures. * diff --git a/src/SDL_assert.c b/src/SDL_assert.c index d0de82400f..6a6bf83610 100644 --- a/src/SDL_assert.c +++ b/src/SDL_assert.c @@ -366,4 +366,17 @@ void SDL_ResetAssertionReport(void) triggered_assertions = NULL; } +SDL_AssertionHandler SDL_GetDefaultAssertionHandler(void) +{ + return SDL_PromptAssertion; +} + +SDL_AssertionHandler SDL_GetAssertionHandler(void **userdata) +{ + if (userdata != NULL) { + *userdata = assertion_userdata; + } + return assertion_handler; +} + /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index feefa58dbd..e6234cb369 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -572,3 +572,5 @@ #define SDL_GameControllerAddMappingsFromRW SDL_GameControllerAddMappingsFromRW_REAL #define SDL_GL_ResetAttributes SDL_GL_ResetAttributes_REAL #define SDL_HasAVX SDL_HasAVX_REAL +#define SDL_GetDefaultAssertionHandler SDL_GetDefaultAssertionHandler_REAL +#define SDL_GetAssertionHandler SDL_GetAssertionHandler_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index e00d73ac6c..362bb83d17 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -601,3 +601,5 @@ SDL_DYNAPI_PROC(int,SDL_vsscanf,(const char *a, const char *b, va_list c),(a,b,c SDL_DYNAPI_PROC(int,SDL_GameControllerAddMappingsFromRW,(SDL_RWops *a, int b),(a,b),return) SDL_DYNAPI_PROC(void,SDL_GL_ResetAttributes,(void),(),) SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX,(void),(),return) +SDL_DYNAPI_PROC(SDL_AssertionHandler,SDL_GetDefaultAssertionHandler,(void),(),return) +SDL_DYNAPI_PROC(SDL_AssertionHandler,SDL_GetAssertionHandler,(void **a),(a),return) From 070116f518ccbd6c4466b2df396f81a158449f60 Mon Sep 17 00:00:00 2001 From: Brandon Schaefer Date: Tue, 4 Feb 2014 12:28:35 -0800 Subject: [PATCH 273/402] * Remove android based workaround, it is handled in SDL_EGL_GetProcAddress. --- src/video/mir/SDL_miropengl.c | 34 ---------------------------------- 1 file changed, 34 deletions(-) diff --git a/src/video/mir/SDL_miropengl.c b/src/video/mir/SDL_miropengl.c index 510ad3c0e6..976b77272c 100644 --- a/src/video/mir/SDL_miropengl.c +++ b/src/video/mir/SDL_miropengl.c @@ -29,14 +29,8 @@ #include "SDL_miropengl.h" -#include - -#define DEFAULT_OGL_ES2 "libGLESv2.so" - #include "SDL_mirdyn.h" -void* MIR_GLHandle = NULL; - void MIR_GL_SwapWindow(_THIS, SDL_Window* window) { @@ -83,22 +77,6 @@ void MIR_GL_UnloadLibrary(_THIS) { SDL_EGL_UnloadLibrary(_this); - - if (MIR_GLHandle) { - dlclose(MIR_GLHandle); - MIR_GLHandle = NULL; - } -} - -void -Ensure_GL_HandleOpen() -{ - if (!MIR_GLHandle) { - MIR_GLHandle = dlopen(DEFAULT_OGL_ES2, RTLD_GLOBAL); - if (!MIR_GLHandle) { - SDL_SetError("Failed to dlopen library."); - } - } } void* @@ -106,18 +84,6 @@ MIR_GL_GetProcAddress(_THIS, const char* proc) { void* proc_addr = SDL_EGL_GetProcAddress(_this, proc); - /* FIXME when on the phone/tablet eglGetProcAddress returns NULL through libhybris, - seems to be a problem in android. Also looks like a problem in the android video driver: - src/video/android/SDL_androidgl.c - - Workaround, to just get the address ourself - */ - - if (!proc_addr) { - Ensure_GL_HandleOpen(); - proc_addr = dlsym(MIR_GLHandle, proc); - } - if (!proc_addr) { SDL_SetError("Failed to find proc address!"); } From 798f305c4bea0d13c0b0bdea414addabd5bc5f4c Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Tue, 4 Feb 2014 15:40:51 -0500 Subject: [PATCH 274/402] allow safely quitting the hotplug test by pressing button 0 on the joystick --- test/testhotplug.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/testhotplug.c b/test/testhotplug.c index d4f64bb02a..173ff2d135 100644 --- a/test/testhotplug.c +++ b/test/testhotplug.c @@ -113,6 +113,10 @@ main(int argc, char *argv[]) { SDL_HapticRumblePlay(haptic, 0.2, 250); } + if (event.jbutton.button == 0) { + SDL_Log("Exiting due to button press of button 0\n"); + keepGoing = SDL_FALSE; + } break; case SDL_JOYBUTTONUP: SDL_Log("Button Release: %d\n", event.jbutton.button); From 21c8691d5b39d1e83f8d6006cd037b792542f7ff Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Tue, 4 Feb 2014 15:44:09 -0500 Subject: [PATCH 275/402] Rework haptic backend to properly support hotplugging of haptic devices. * currently only linux backend updated. --- src/haptic/SDL_haptic.c | 127 +++++++------- src/haptic/SDL_syshaptic.h | 4 + src/haptic/linux/SDL_syshaptic.c | 286 ++++++++++++++++++++++++------- 3 files changed, 296 insertions(+), 121 deletions(-) diff --git a/src/haptic/SDL_haptic.c b/src/haptic/SDL_haptic.c index 2bbcd18c46..fbfe14f3bb 100644 --- a/src/haptic/SDL_haptic.c +++ b/src/haptic/SDL_haptic.c @@ -25,8 +25,7 @@ #include "../joystick/SDL_joystick_c.h" /* For SDL_PrivateJoystickValid */ #include "SDL_assert.h" -Uint8 SDL_numhaptics = 0; -SDL_Haptic **SDL_haptics = NULL; +SDL_Haptic *SDL_haptics = NULL; /* @@ -35,20 +34,10 @@ SDL_Haptic **SDL_haptics = NULL; int SDL_HapticInit(void) { - int arraylen; int status; - SDL_numhaptics = 0; status = SDL_SYS_HapticInit(); if (status >= 0) { - arraylen = (status + 1) * sizeof(*SDL_haptics); - SDL_haptics = (SDL_Haptic **) SDL_malloc(arraylen); - if (SDL_haptics == NULL) { /* Out of memory. */ - SDL_numhaptics = 0; - } else { - SDL_memset(SDL_haptics, 0, arraylen); - SDL_numhaptics = status; - } status = 0; } @@ -62,16 +51,19 @@ SDL_HapticInit(void) static int ValidHaptic(SDL_Haptic * haptic) { - int i; int valid; + SDL_Haptic *hapticlist; valid = 0; if (haptic != NULL) { - for (i = 0; i < SDL_numhaptics; i++) { - if (SDL_haptics[i] == haptic) { + hapticlist = SDL_haptics; + while ( hapticlist ) + { + if (hapticlist == haptic) { valid = 1; break; } + hapticlist = hapticlist->next; } } @@ -90,7 +82,7 @@ ValidHaptic(SDL_Haptic * haptic) int SDL_NumHaptics(void) { - return SDL_numhaptics; + return SDL_SYS_NumHaptics(); } @@ -100,9 +92,9 @@ SDL_NumHaptics(void) const char * SDL_HapticName(int device_index) { - if ((device_index < 0) || (device_index >= SDL_numhaptics)) { + if ((device_index < 0) || (device_index >= SDL_NumHaptics())) { SDL_SetError("Haptic: There are %d haptic devices available", - SDL_numhaptics); + SDL_NumHaptics()); return NULL; } return SDL_SYS_HapticName(device_index); @@ -115,22 +107,27 @@ SDL_HapticName(int device_index) SDL_Haptic * SDL_HapticOpen(int device_index) { - int i; SDL_Haptic *haptic; + SDL_Haptic *hapticlist; - if ((device_index < 0) || (device_index >= SDL_numhaptics)) { + if ((device_index < 0) || (device_index >= SDL_NumHaptics())) { SDL_SetError("Haptic: There are %d haptic devices available", - SDL_numhaptics); + SDL_NumHaptics()); return NULL; } - /* If the haptic is already open, return it */ - for (i = 0; SDL_haptics[i]; i++) { - if (device_index == SDL_haptics[i]->index) { - haptic = SDL_haptics[i]; + hapticlist = SDL_haptics; + /* If the haptic is already open, return it + * TODO: Should we create haptic instance IDs like the Joystick API? + */ + while ( hapticlist ) + { + if (device_index == hapticlist->index) { + haptic = hapticlist; ++haptic->ref_count; return haptic; } + hapticlist = hapticlist->next; } /* Create the haptic device */ @@ -150,15 +147,10 @@ SDL_HapticOpen(int device_index) } /* Add haptic to list */ - for (i = 0; SDL_haptics[i]; i++) - /* Skip to next haptic */ ; - if (i >= SDL_numhaptics) { - SDL_free(haptic); - SDL_SetError("Haptic: Trying to add device past the number originally detected"); - return NULL; - } - SDL_haptics[i] = haptic; ++haptic->ref_count; + /* Link the haptic in the list */ + haptic->next = SDL_haptics; + SDL_haptics = haptic; /* Disable autocenter and set gain to max. */ if (haptic->supported & SDL_HAPTIC_GAIN) @@ -176,21 +168,26 @@ SDL_HapticOpen(int device_index) int SDL_HapticOpened(int device_index) { - int i, opened; + int opened; + SDL_Haptic *hapticlist; /* Make sure it's valid. */ - if ((device_index < 0) || (device_index >= SDL_numhaptics)) { + if ((device_index < 0) || (device_index >= SDL_NumHaptics())) { SDL_SetError("Haptic: There are %d haptic devices available", - SDL_numhaptics); + SDL_NumHaptics()); return 0; } opened = 0; - for (i = 0; SDL_haptics[i]; i++) { - if (SDL_haptics[i]->index == (Uint8) device_index) { + hapticlist = SDL_haptics; + /* TODO Should this use an instance ID? */ + while ( hapticlist ) + { + if (hapticlist->index == (Uint8) device_index) { opened = 1; break; } + hapticlist = hapticlist->next; } return opened; } @@ -271,13 +268,13 @@ SDL_JoystickIsHaptic(SDL_Joystick * joystick) SDL_Haptic * SDL_HapticOpenFromJoystick(SDL_Joystick * joystick) { - int i; SDL_Haptic *haptic; + SDL_Haptic *hapticlist; /* Make sure there is room. */ - if (SDL_numhaptics <= 0) { + if (SDL_NumHaptics() <= 0) { SDL_SetError("Haptic: There are %d haptic devices available", - SDL_numhaptics); + SDL_NumHaptics()); return NULL; } @@ -293,13 +290,16 @@ SDL_HapticOpenFromJoystick(SDL_Joystick * joystick) return NULL; } + hapticlist = SDL_haptics; /* Check to see if joystick's haptic is already open */ - for (i = 0; SDL_haptics[i]; i++) { - if (SDL_SYS_JoystickSameHaptic(SDL_haptics[i], joystick)) { - haptic = SDL_haptics[i]; + while ( hapticlist ) + { + if (SDL_SYS_JoystickSameHaptic(hapticlist, joystick)) { + haptic = hapticlist; ++haptic->ref_count; return haptic; } + hapticlist = hapticlist->next; } /* Create the haptic device */ @@ -318,15 +318,10 @@ SDL_HapticOpenFromJoystick(SDL_Joystick * joystick) } /* Add haptic to list */ - for (i = 0; SDL_haptics[i]; i++) - /* Skip to next haptic */ ; - if (i >= SDL_numhaptics) { - SDL_free(haptic); - SDL_SetError("Haptic: Trying to add device past the number originally detected"); - return NULL; - } - SDL_haptics[i] = haptic; ++haptic->ref_count; + /* Link the haptic in the list */ + haptic->next = SDL_haptics; + SDL_haptics = haptic; return haptic; } @@ -339,6 +334,8 @@ void SDL_HapticClose(SDL_Haptic * haptic) { int i; + SDL_Haptic *hapticlist; + SDL_Haptic *hapticlistprev; /* Must be valid */ if (!ValidHaptic(haptic)) { @@ -359,13 +356,26 @@ SDL_HapticClose(SDL_Haptic * haptic) SDL_SYS_HapticClose(haptic); /* Remove from the list */ - for (i = 0; SDL_haptics[i]; ++i) { - if (haptic == SDL_haptics[i]) { - SDL_haptics[i] = NULL; - SDL_memcpy(&SDL_haptics[i], &SDL_haptics[i + 1], - (SDL_numhaptics - i) * sizeof(haptic)); + hapticlist = SDL_haptics; + hapticlistprev = NULL; + while ( hapticlist ) + { + if (haptic == hapticlist) + { + if ( hapticlistprev ) + { + /* unlink this entry */ + hapticlistprev->next = hapticlist->next; + } + else + { + SDL_haptics = haptic->next; + } + break; } + hapticlistprev = hapticlist; + hapticlist = hapticlist->next; } /* Free */ @@ -379,9 +389,8 @@ void SDL_HapticQuit(void) { SDL_SYS_HapticQuit(); - SDL_free(SDL_haptics); + SDL_assert(SDL_haptics == NULL); SDL_haptics = NULL; - SDL_numhaptics = 0; } /* diff --git a/src/haptic/SDL_syshaptic.h b/src/haptic/SDL_syshaptic.h index 5c3735daf2..bc0dae8965 100644 --- a/src/haptic/SDL_syshaptic.h +++ b/src/haptic/SDL_syshaptic.h @@ -54,6 +54,7 @@ struct _SDL_Haptic int rumble_id; /* ID of rumble effect for simple rumble API. */ SDL_HapticEffect rumble_effect; /* Rumble effect. */ + struct _SDL_Haptic *next; /* pointer to next haptic we have allocated */ }; /* @@ -63,6 +64,9 @@ struct _SDL_Haptic */ extern int SDL_SYS_HapticInit(void); +/* Function to return the number of haptic devices plugged in right now */ +extern int SDL_SYS_NumHaptics(); + /* * Gets the device dependent name of the haptic device */ diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index 47860d8d45..247cb28de1 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -22,11 +22,13 @@ #ifdef SDL_HAPTIC_LINUX +#include "SDL_assert.h" #include "SDL_haptic.h" #include "../SDL_syshaptic.h" #include "SDL_joystick.h" #include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */ #include "../../joystick/linux/SDL_sysjoystick_c.h" /* For joystick hwdata */ +#include "../../core/linux/SDL_udev.h" #include /* close */ #include /* Force feedback linux stuff. */ @@ -44,15 +46,21 @@ #define MAX_HAPTICS 32 /* It's doubtful someone has more then 32 evdev */ +static int MaybeAddDevice(const char *path); +#if SDL_USE_LIBUDEV +static int MaybeRemoveDevice(const char *path); +void haptic_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, const char *devpath); +#endif /* SDL_USE_LIBUDEV */ /* * List of available haptic devices. */ -static struct +typedef struct SDL_hapticlist_item { char *fname; /* Dev path name (like /dev/input/event1) */ SDL_Haptic *haptic; /* Assosciated haptic. */ -} SDL_hapticlist[MAX_HAPTICS]; + struct SDL_hapticlist_item *next; +} SDL_hapticlist_item; /* @@ -73,7 +81,9 @@ struct haptic_hweffect struct ff_effect effect; /* The linux kernel effect structure. */ }; - +static SDL_hapticlist_item *SDL_hapticlist = NULL; +static SDL_hapticlist_item *SDL_hapticlist_tail = NULL; +static int numhaptics = 0; #define test_bit(nr, addr) \ (((1UL << ((nr) & 31)) & (((const unsigned int *) addr)[(nr) >> 5])) != 0) @@ -147,15 +157,8 @@ int SDL_SYS_HapticInit(void) { const char joydev_pattern[] = "/dev/input/event%d"; - dev_t dev_nums[MAX_HAPTICS]; char path[PATH_MAX]; - struct stat sb; - int fd; - int i, j, k; - int duplicate; - int numhaptics; - - numhaptics = 0; + int i, j; /* * Limit amount of checks to MAX_HAPTICS since we may or may not have @@ -165,44 +168,189 @@ SDL_SYS_HapticInit(void) for (j = 0; j < MAX_HAPTICS; ++j) { snprintf(path, PATH_MAX, joydev_pattern, i++); + MaybeAddDevice(path); + } + +#if SDL_USE_LIBUDEV + if (SDL_UDEV_Init() < 0) { + return SDL_SetError("Could not initialize UDEV"); + } + + if ( SDL_UDEV_AddCallback(haptic_udev_callback) < 0) { + SDL_UDEV_Quit(); + return SDL_SetError("Could not setup haptic <-> udev callback"); + } +#endif /* SDL_USE_LIBUDEV */ + + return numhaptics; +} + +int +SDL_SYS_NumHaptics() +{ + return numhaptics; +} + +static SDL_hapticlist_item * +HapticByDevIndex(int device_index) +{ + SDL_hapticlist_item *item = SDL_hapticlist; + + if ((device_index < 0) || (device_index >= numhaptics)) { + return NULL; + } - /* check to see if file exists */ - if (stat(path, &sb) != 0) + while (device_index > 0) { + SDL_assert(item != NULL); + device_index--; + item = item->next; + } + + return item; +} + +#if SDL_USE_LIBUDEV +void haptic_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, const char *devpath) +{ + if (devpath == NULL || !(udev_class & SDL_UDEV_DEVICE_JOYSTICK)) { + return; + } + + switch( udev_type ) + { + case SDL_UDEV_DEVICEADDED: + MaybeAddDevice(devpath); break; + + case SDL_UDEV_DEVICEREMOVED: + MaybeRemoveDevice(devpath); + break; + + default: + break; + } + +} +#endif /* SDL_USE_LIBUDEV */ - /* check for duplicates */ - duplicate = 0; - for (k = 0; (k < numhaptics) && !duplicate; ++k) { - if (sb.st_rdev == dev_nums[k]) { - duplicate = 1; - } - } - if (duplicate) { - continue; +static int +MaybeAddDevice(const char *path) +{ + dev_t dev_nums[MAX_HAPTICS]; + struct stat sb; + int fd; + int k; + int duplicate; + int success; + SDL_hapticlist_item *item; + + + if (path == NULL) { + return -1; + } + + /* check to see if file exists */ + if (stat(path, &sb) != 0) { + return -1; + } + + /* check for duplicates */ + duplicate = 0; + for (k = 0; (k < numhaptics) && !duplicate; ++k) { + if (sb.st_rdev == dev_nums[k]) { + duplicate = 1; } + } + if (duplicate) { + return -1; + } - /* try to open */ - fd = open(path, O_RDWR, 0); - if (fd < 0) - continue; + /* try to open */ + fd = open(path, O_RDWR, 0); + if (fd < 0) { + return -1; + } #ifdef DEBUG_INPUT_EVENTS - printf("Checking %s\n", path); + printf("Checking %s\n", path); #endif - /* see if it works */ - if (EV_IsHaptic(fd) > 0) { - SDL_hapticlist[numhaptics].fname = SDL_strdup(path); - SDL_hapticlist[numhaptics].haptic = NULL; - dev_nums[numhaptics] = sb.st_rdev; - ++numhaptics; - } - close(fd); + /* see if it works */ + success = EV_IsHaptic(fd); + close(fd); + if (success <= 0) { + return -1; } + item = (SDL_hapticlist_item *) SDL_malloc(sizeof (SDL_hapticlist_item)); + if (item == NULL) { + return -1; + } + SDL_zerop(item); + item->fname = SDL_strdup(path); + if ( (item->fname == NULL) ) { + SDL_free(item->fname); + SDL_free(item); + return -1; + } + + /* TODO: should we add instance IDs? */ + if (SDL_hapticlist_tail == NULL) { + SDL_hapticlist = SDL_hapticlist_tail = item; + } else { + SDL_hapticlist_tail->next = item; + SDL_hapticlist_tail = item; + } + + dev_nums[numhaptics] = sb.st_rdev; + + ++numhaptics; + + /* !!! TODO: Send a haptic add event? */ + return numhaptics; } +#if SDL_USE_LIBUDEV +static int +MaybeRemoveDevice(const char* path) +{ + SDL_hapticlist_item *item; + SDL_hapticlist_item *prev = NULL; + + if (path == NULL) { + return -1; + } + + for (item = SDL_hapticlist; item != NULL; item = item->next) { + /* found it, remove it. */ + if (SDL_strcmp(path, item->fname) == 0) { + const int retval = item->haptic ? item->haptic->index : -1; + + if (prev != NULL) { + prev->next = item->next; + } else { + SDL_assert(SDL_hapticlist == item); + SDL_hapticlist = item->next; + } + if (item == SDL_hapticlist_tail) { + SDL_hapticlist_tail = prev; + } + + /* Need to decrement the haptic count */ + --numhaptics; + /* !!! TODO: Send a haptic remove event? */ + + SDL_free(item->fname); + SDL_free(item); + return retval; + } + prev = item; + } + + return -1; +} +#endif /* SDL_USE_LIBUDEV */ /* * Gets the name from a file descriptor. @@ -227,19 +375,21 @@ SDL_SYS_HapticNameFromFD(int fd) const char * SDL_SYS_HapticName(int index) { + SDL_hapticlist_item *item; int fd; const char *name; + item = HapticByDevIndex(index); /* Open the haptic device. */ name = NULL; - fd = open(SDL_hapticlist[index].fname, O_RDONLY, 0); + fd = open(item->fname, O_RDONLY, 0); if (fd >= 0) { name = SDL_SYS_HapticNameFromFD(fd); if (name == NULL) { /* No name found, return device character device */ - name = SDL_hapticlist[index].fname; + name = item->fname; } } close(fd); @@ -306,12 +456,14 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) { int fd; int ret; + SDL_hapticlist_item *item; + item = HapticByDevIndex(haptic->index); /* Open the character device */ - fd = open(SDL_hapticlist[haptic->index].fname, O_RDWR, 0); + fd = open(item->fname, O_RDWR, 0); if (fd < 0) { return SDL_SetError("Haptic: Unable to open %s: %s", - SDL_hapticlist[haptic->index], strerror(errno)); + item->fname, strerror(errno)); } /* Try to create the haptic. */ @@ -321,7 +473,7 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) } /* Set the fname. */ - haptic->hwdata->fname = SDL_hapticlist[haptic->index].fname; + haptic->hwdata->fname = item->fname; return 0; } @@ -333,24 +485,27 @@ int SDL_SYS_HapticMouse(void) { int fd; - int i; - - for (i = 0; i < SDL_numhaptics; i++) { + int device_index = 0; + SDL_hapticlist_item *item; + + for (item = SDL_hapticlist; item; item = item->next) { /* Open the device. */ - fd = open(SDL_hapticlist[i].fname, O_RDWR, 0); + fd = open(item->fname, O_RDWR, 0); if (fd < 0) { return SDL_SetError("Haptic: Unable to open %s: %s", - SDL_hapticlist[i], strerror(errno)); + item->fname, strerror(errno)); } /* Is it a mouse? */ if (EV_IsMouse(fd)) { close(fd); - return i; + return device_index; } close(fd); + + ++device_index; } return -1; @@ -388,22 +543,21 @@ SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick) int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) { - int i; + int device_index = 0; int fd; int ret; + SDL_hapticlist_item *item; /* Find the joystick in the haptic list. */ - for (i = 0; i < MAX_HAPTICS; i++) { - if (SDL_hapticlist[i].fname != NULL) { - if (SDL_strcmp(SDL_hapticlist[i].fname, joystick->hwdata->fname) - == 0) { - haptic->index = i; - break; - } - } + for (item = SDL_hapticlist; item; item = item->next) { + if (SDL_strcmp(item->fname, joystick->hwdata->fname) == 0) { + haptic->index = device_index; + break; + } + ++device_index; } - if (i >= MAX_HAPTICS) { + if (device_index >= MAX_HAPTICS) { return SDL_SetError("Haptic: Joystick doesn't have Haptic capabilities"); } @@ -417,7 +571,7 @@ SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) return -1; } - haptic->hwdata->fname = SDL_hapticlist[haptic->index].fname; + haptic->hwdata->fname = item->fname; return 0; } @@ -454,15 +608,23 @@ SDL_SYS_HapticClose(SDL_Haptic * haptic) void SDL_SYS_HapticQuit(void) { - int i; + SDL_hapticlist_item *item = NULL; + SDL_hapticlist_item *next = NULL; - for (i = 0; SDL_hapticlist[i].fname != NULL; i++) { + for (item = SDL_hapticlist; item; item = next) { + next = item->next; /* Opened and not closed haptics are leaked, this is on purpose. * Close your haptic devices after usage. */ - - SDL_free(SDL_hapticlist[i].fname); + SDL_free(item->fname); + item->fname = NULL; } - SDL_hapticlist[0].fname = NULL; + +#if SDL_USE_LIBUDEV + SDL_UDEV_DelCallback(haptic_udev_callback); + SDL_UDEV_Quit(); +#endif /* SDL_USE_LIBUDEV */ + + numhaptics = 0; } From 062d5977524dfcafecbfd0c7eb7aa760f6887e83 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Tue, 4 Feb 2014 16:50:34 -0500 Subject: [PATCH 276/402] implement new backend method for Haptics in dummy driver --- src/haptic/dummy/SDL_syshaptic.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/haptic/dummy/SDL_syshaptic.c b/src/haptic/dummy/SDL_syshaptic.c index 2d2185e4ec..9830ac4fce 100644 --- a/src/haptic/dummy/SDL_syshaptic.c +++ b/src/haptic/dummy/SDL_syshaptic.c @@ -39,6 +39,11 @@ SDL_SYS_HapticInit(void) return 0; } +int +SDL_SYS_NumHaptics(void) +{ + return 0; +} const char * SDL_SYS_HapticName(int index) From d3ef795e58f21334fb733bafd303997e345ecae8 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Tue, 4 Feb 2014 18:16:52 -0500 Subject: [PATCH 277/402] add testhotplug to OS X test project and set target OS version to 10.5 for tests. --- .../SDLTest/SDLTest.xcodeproj/project.pbxproj | 142 ++++++++++++++---- 1 file changed, 112 insertions(+), 30 deletions(-) diff --git a/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj b/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj index 152c3d23c1..a1373d2f27 100755 --- a/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj +++ b/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj @@ -577,6 +577,17 @@ DB166E9A16A1D7F700A1396C /* moose.dat in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5E09D20839003FC8A1 /* moose.dat */; }; DB166E9C16A1D80900A1396C /* icon.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; DB166ED016A1D88100A1396C /* shapes in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB166ECF16A1D87000A1396C /* shapes */; }; + DB89957118A19ABA0092407C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F33A709CA188600EBEB88 /* Cocoa.framework */; }; + DB89957218A19ABA0092407C /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A863B10730545007319AE /* CoreAudio.framework */; }; + DB89957318A19ABA0092407C /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A863C10730545007319AE /* ForceFeedback.framework */; }; + DB89957418A19ABA0092407C /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A863D10730545007319AE /* IOKit.framework */; }; + DB89957518A19ABA0092407C /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A869F10730593007319AE /* AudioToolbox.framework */; }; + DB89957618A19ABA0092407C /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A86A010730593007319AE /* CoreFoundation.framework */; }; + DB89957718A19ABA0092407C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A86F2107305CE007319AE /* OpenGL.framework */; }; + DB89957818A19ABA0092407C /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A871410730623007319AE /* AudioUnit.framework */; }; + DB89957918A19ABA0092407C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A873910730675007319AE /* Carbon.framework */; }; + DB89957A18A19ABA0092407C /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA645093FFD41000C53B3 /* libSDL2.a */; }; + DB89958418A19B130092407C /* testhotplug.c in Sources */ = {isa = PBXBuildFile; fileRef = DB89958318A19B130092407C /* testhotplug.c */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1036,36 +1047,36 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0017958C10741F7900F5D044 /* testatomic */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testatomic; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017958C10741F7900F5D044 /* testatomic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testatomic; sourceTree = BUILT_PRODUCTS_DIR; }; 0017958F1074216E00F5D044 /* testatomic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testatomic.c; path = ../../test/testatomic.c; sourceTree = SOURCE_ROOT; }; - 001795AD107421BF00F5D044 /* testaudioinfo */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testaudioinfo; sourceTree = BUILT_PRODUCTS_DIR; }; + 001795AD107421BF00F5D044 /* testaudioinfo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testaudioinfo; sourceTree = BUILT_PRODUCTS_DIR; }; 001795B01074222D00F5D044 /* testaudioinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testaudioinfo.c; path = ../../test/testaudioinfo.c; sourceTree = SOURCE_ROOT; }; - 0017972110742F3200F5D044 /* testgl2 */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = testgl2; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017972110742F3200F5D044 /* testgl2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testgl2; sourceTree = BUILT_PRODUCTS_DIR; }; 0017972710742FB900F5D044 /* testgl2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testgl2.c; path = ../../test/testgl2.c; sourceTree = SOURCE_ROOT; }; - 00179748107430D600F5D044 /* testhaptic */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = testhaptic; sourceTree = BUILT_PRODUCTS_DIR; }; + 00179748107430D600F5D044 /* testhaptic */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhaptic; sourceTree = BUILT_PRODUCTS_DIR; }; 0017974E1074315700F5D044 /* testhaptic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testhaptic.c; path = ../../test/testhaptic.c; sourceTree = SOURCE_ROOT; }; - 0017976E107431B300F5D044 /* testdraw2 */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testdraw2; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017976E107431B300F5D044 /* testdraw2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testdraw2; sourceTree = BUILT_PRODUCTS_DIR; }; 001797711074320D00F5D044 /* testdraw2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testdraw2.c; path = ../../test/testdraw2.c; sourceTree = SOURCE_ROOT; }; - 0017978E107432AE00F5D044 /* testime */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = testime; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017978E107432AE00F5D044 /* testime */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testime; sourceTree = BUILT_PRODUCTS_DIR; }; 00179791107432FA00F5D044 /* testime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testime.c; path = ../../test/testime.c; sourceTree = SOURCE_ROOT; }; - 001797AE1074334C00F5D044 /* testintersections */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testintersections; sourceTree = BUILT_PRODUCTS_DIR; }; + 001797AE1074334C00F5D044 /* testintersections */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testintersections; sourceTree = BUILT_PRODUCTS_DIR; }; 001797B31074339C00F5D044 /* testintersections.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testintersections.c; path = ../../test/testintersections.c; sourceTree = SOURCE_ROOT; }; - 001797D0107433C600F5D044 /* testloadso */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testloadso; sourceTree = BUILT_PRODUCTS_DIR; }; + 001797D0107433C600F5D044 /* testloadso */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testloadso; sourceTree = BUILT_PRODUCTS_DIR; }; 001797D31074343E00F5D044 /* testloadso.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testloadso.c; path = ../../test/testloadso.c; sourceTree = SOURCE_ROOT; }; - 001798121074355200F5D044 /* testmultiaudio */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testmultiaudio; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798121074355200F5D044 /* testmultiaudio */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testmultiaudio; sourceTree = BUILT_PRODUCTS_DIR; }; 001798151074359B00F5D044 /* testmultiaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testmultiaudio.c; path = ../../test/testmultiaudio.c; sourceTree = SOURCE_ROOT; }; 0017985A107436ED00F5D044 /* testnative.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testnative.c; path = ../../test/testnative.c; sourceTree = SOURCE_ROOT; }; 0017985B107436ED00F5D044 /* testnative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = testnative.h; path = ../../test/testnative.h; sourceTree = SOURCE_ROOT; }; 0017985C107436ED00F5D044 /* testnativecocoa.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = testnativecocoa.m; path = ../../test/testnativecocoa.m; sourceTree = SOURCE_ROOT; }; 00179872107438D000F5D044 /* testnativex11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testnativex11.c; path = ../../test/testnativex11.c; sourceTree = SOURCE_ROOT; }; - 001798941074392D00F5D044 /* testnative */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testnative; sourceTree = BUILT_PRODUCTS_DIR; }; - 001798B5107439DF00F5D044 /* testpower */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testpower; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798941074392D00F5D044 /* testnative */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testnative; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798B5107439DF00F5D044 /* testpower */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testpower; sourceTree = BUILT_PRODUCTS_DIR; }; 001798B910743A4900F5D044 /* testpower.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testpower.c; path = ../../test/testpower.c; sourceTree = SOURCE_ROOT; }; - 001798F210743BEC00F5D044 /* testresample */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testresample; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798F210743BEC00F5D044 /* testresample */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testresample; sourceTree = BUILT_PRODUCTS_DIR; }; 001798F910743E9200F5D044 /* testresample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testresample.c; path = ../../test/testresample.c; sourceTree = SOURCE_ROOT; }; - 0017991610743F1000F5D044 /* testsprite2 */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testsprite2; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017991610743F1000F5D044 /* testsprite2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testsprite2; sourceTree = BUILT_PRODUCTS_DIR; }; 0017991910743F5300F5D044 /* testsprite2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testsprite2.c; path = ../../test/testsprite2.c; sourceTree = SOURCE_ROOT; }; - 0017993810743FB700F5D044 /* testwm2 */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testwm2; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017993810743FB700F5D044 /* testwm2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testwm2; sourceTree = BUILT_PRODUCTS_DIR; }; 0017993B10743FEF00F5D044 /* testwm2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testwm2.c; path = ../../test/testwm2.c; sourceTree = SOURCE_ROOT; }; 002A863B10730545007319AE /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = /System/Library/Frameworks/CoreAudio.framework; sourceTree = ""; }; 002A863C10730545007319AE /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ForceFeedback.framework; path = /System/Library/Frameworks/ForceFeedback.framework; sourceTree = ""; }; @@ -1076,13 +1087,13 @@ 002A871410730623007319AE /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; 002A873910730675007319AE /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; 002F33A709CA188600EBEB88 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; - 002F341209CA1BFF00EBEB88 /* testfile */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testfile; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F341209CA1BFF00EBEB88 /* testfile */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testfile; sourceTree = BUILT_PRODUCTS_DIR; }; 002F341709CA1C5B00EBEB88 /* testfile.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testfile.c; path = ../../test/testfile.c; sourceTree = SOURCE_ROOT; }; - 002F343109CA1F0300EBEB88 /* testiconv */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testiconv; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F343109CA1F0300EBEB88 /* testiconv */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testiconv; sourceTree = BUILT_PRODUCTS_DIR; }; 002F343609CA1F6F00EBEB88 /* testiconv.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testiconv.c; path = ../../test/testiconv.c; sourceTree = SOURCE_ROOT; }; - 002F344D09CA1FB300EBEB88 /* testoverlay2 */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testoverlay2; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F344D09CA1FB300EBEB88 /* testoverlay2 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testoverlay2; sourceTree = BUILT_PRODUCTS_DIR; }; 002F345209CA201C00EBEB88 /* testoverlay2.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testoverlay2.c; path = ../../test/testoverlay2.c; sourceTree = SOURCE_ROOT; }; - 002F346A09CA204F00EBEB88 /* testplatform */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testplatform; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F346A09CA204F00EBEB88 /* testplatform */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testplatform; sourceTree = BUILT_PRODUCTS_DIR; }; 002F346F09CA20A600EBEB88 /* testplatform.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = testplatform.c; path = ../../test/testplatform.c; sourceTree = SOURCE_ROOT; }; 003FA63A093FFD41000C53B3 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../SDL/SDL.xcodeproj; sourceTree = SOURCE_ROOT; }; 00794E5D09D20839003FC8A1 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; name = icon.bmp; path = ../../test/icon.bmp; sourceTree = SOURCE_ROOT; }; @@ -1105,18 +1116,18 @@ 4537749212091504002F0F45 /* testshape */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testshape; sourceTree = BUILT_PRODUCTS_DIR; }; 453774A4120915E3002F0F45 /* testshape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testshape.c; path = ../../test/testshape.c; sourceTree = SOURCE_ROOT; }; BBFC088E164C6820003E6A99 /* testgamecontroller.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testgamecontroller.c; path = ../../test/testgamecontroller.c; sourceTree = ""; }; - BBFC08CD164C6862003E6A99 /* testgamecontroller */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = testgamecontroller; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC566B60761D90300A33029 /* checkkeys */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = checkkeys; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC566D10761D90300A33029 /* loopwave */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = loopwave; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC567060761D90400A33029 /* testerror */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testerror; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC5672E0761D90400A33029 /* testthread */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testthread; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC5673B0761D90400A33029 /* testjoystick */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = testjoystick; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC567480761D90400A33029 /* testkeys */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "compiled.mach-o.executable"; path = testkeys; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC567550761D90400A33029 /* testlock */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testlock; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC5677D0761D90500A33029 /* testsem */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testsem; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC567980761D90500A33029 /* testtimer */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testtimer; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC567B20761D90500A33029 /* testversion */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = testversion; sourceTree = BUILT_PRODUCTS_DIR; }; - BEC567F50761D90600A33029 /* torturethread */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = text; path = torturethread; sourceTree = BUILT_PRODUCTS_DIR; }; + BBFC08CD164C6862003E6A99 /* testgamecontroller */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testgamecontroller; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC566B60761D90300A33029 /* checkkeys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = checkkeys; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC566D10761D90300A33029 /* loopwave */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = loopwave; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567060761D90400A33029 /* testerror */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testerror; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC5672E0761D90400A33029 /* testthread */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testthread; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC5673B0761D90400A33029 /* testjoystick */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testjoystick; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567480761D90400A33029 /* testkeys */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testkeys; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567550761D90400A33029 /* testlock */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testlock; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC5677D0761D90500A33029 /* testsem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testsem; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567980761D90500A33029 /* testtimer */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testtimer; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567B20761D90500A33029 /* testversion */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testversion; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567F50761D90600A33029 /* torturethread */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = torturethread; sourceTree = BUILT_PRODUCTS_DIR; }; DB0F48D717CA51D2008798C5 /* testdrawchessboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testdrawchessboard.c; path = ../../test/testdrawchessboard.c; sourceTree = ""; }; DB0F48D817CA51D2008798C5 /* testfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testfilesystem.c; path = ../../test/testfilesystem.c; sourceTree = ""; }; DB0F48EC17CA51E5008798C5 /* testdrawchessboard */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testdrawchessboard; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1159,6 +1170,8 @@ DB166E7E16A1D78400A1396C /* testspriteminimal */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testspriteminimal; sourceTree = BUILT_PRODUCTS_DIR; }; DB166E9116A1D78C00A1396C /* teststreaming */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = teststreaming; sourceTree = BUILT_PRODUCTS_DIR; }; DB166ECF16A1D87000A1396C /* shapes */ = {isa = PBXFileReference; lastKnownFileType = folder; name = shapes; path = ../../test/shapes; sourceTree = ""; }; + DB89957E18A19ABA0092407C /* testhotplug */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhotplug; sourceTree = BUILT_PRODUCTS_DIR; }; + DB89958318A19B130092407C /* testhotplug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testhotplug.c; path = ../../test/testhotplug.c; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1911,6 +1924,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DB89957018A19ABA0092407C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DB89957118A19ABA0092407C /* Cocoa.framework in Frameworks */, + DB89957218A19ABA0092407C /* CoreAudio.framework in Frameworks */, + DB89957318A19ABA0092407C /* ForceFeedback.framework in Frameworks */, + DB89957418A19ABA0092407C /* IOKit.framework in Frameworks */, + DB89957518A19ABA0092407C /* AudioToolbox.framework in Frameworks */, + DB89957618A19ABA0092407C /* CoreFoundation.framework in Frameworks */, + DB89957718A19ABA0092407C /* OpenGL.framework in Frameworks */, + DB89957818A19ABA0092407C /* AudioUnit.framework in Frameworks */, + DB89957918A19ABA0092407C /* Carbon.framework in Frameworks */, + DB89957A18A19ABA0092407C /* libSDL2.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -1986,6 +2016,7 @@ 0017972710742FB900F5D044 /* testgl2.c */, DB166CBC16A1C74100A1396C /* testgles.c */, 0017974E1074315700F5D044 /* testhaptic.c */, + DB89958318A19B130092407C /* testhotplug.c */, 002F343609CA1F6F00EBEB88 /* testiconv.c */, 00179791107432FA00F5D044 /* testime.c */, 001797B31074339C00F5D044 /* testintersections.c */, @@ -2070,6 +2101,7 @@ DB166E9116A1D78C00A1396C /* teststreaming */, DB0F48EC17CA51E5008798C5 /* testdrawchessboard */, DB0F490117CA5212008798C5 /* testfilesystem */, + DB89957E18A19ABA0092407C /* testhotplug */, ); name = Products; sourceTree = ""; @@ -2826,6 +2858,22 @@ productReference = DB166E9116A1D78C00A1396C /* teststreaming */; productType = "com.apple.product-type.tool"; }; + DB89956D18A19ABA0092407C /* testhotplug */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB89957B18A19ABA0092407C /* Build configuration list for PBXNativeTarget "testhotplug" */; + buildPhases = ( + DB89956E18A19ABA0092407C /* Sources */, + DB89957018A19ABA0092407C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testhotplug; + productName = testalpha; + productReference = DB89957E18A19ABA0092407C /* testhotplug */; + productType = "com.apple.product-type.tool"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -2870,6 +2918,7 @@ DB166DAD16A1D2F600A1396C /* testgesture */, 0017970910742F3200F5D044 /* testgl2 */, 00179730107430D600F5D044 /* testhaptic */, + DB89956D18A19ABA0092407C /* testhotplug */, 002F342009CA1F0300EBEB88 /* testiconv */, 00179776107432AE00F5D044 /* testime */, 001797961074334C00F5D044 /* testintersections */, @@ -3304,6 +3353,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DB89956E18A19ABA0092407C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB89958418A19B130092407C /* testhotplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -3737,6 +3794,7 @@ ); GCC_OPTIMIZATION_LEVEL = 0; HEADER_SEARCH_PATHS = ../../include; + MACOSX_DEPLOYMENT_TARGET = 10.5; }; name = Debug; }; @@ -3862,6 +3920,7 @@ ); GCC_GENERATE_DEBUGGING_SYMBOLS = NO; HEADER_SEARCH_PATHS = ../../include; + MACOSX_DEPLOYMENT_TARGET = 10.5; }; name = Release; }; @@ -4189,6 +4248,20 @@ }; name = Release; }; + DB89957C18A19ABA0092407C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = testhotplug; + }; + name = Debug; + }; + DB89957D18A19ABA0092407C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = testhotplug; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4606,6 +4679,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + DB89957B18A19ABA0092407C /* Build configuration list for PBXNativeTarget "testhotplug" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB89957C18A19ABA0092407C /* Debug */, + DB89957D18A19ABA0092407C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; /* End XCConfigurationList section */ }; rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; From 84a6133b884992f14d91ba1529d02172cefdda8d Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Tue, 4 Feb 2014 18:17:16 -0500 Subject: [PATCH 278/402] Implement new backend methods for haptic and hot plugging on OS X --- Xcode/SDL/SDL.xcodeproj/project.pbxproj | 2 + src/haptic/darwin/SDL_syshaptic.c | 248 ++++++++++++++++-------- src/haptic/darwin/SDL_syshaptic_c.h | 26 +++ src/joystick/darwin/SDL_sysjoystick.c | 10 + 4 files changed, 210 insertions(+), 76 deletions(-) create mode 100644 src/haptic/darwin/SDL_syshaptic_c.h diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj index fa8e493474..0222d835ca 100755 --- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj +++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj @@ -1083,6 +1083,7 @@ D55A1B7F179F262300625D7C /* SDL_cocoamousetap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamousetap.h; sourceTree = ""; }; D55A1B80179F262300625D7C /* SDL_cocoamousetap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamousetap.m; sourceTree = ""; }; DB31407717554B71006C0E22 /* libSDL2.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libSDL2.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + DB89958518A1A5C50092407C /* SDL_syshaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_syshaptic_c.h; sourceTree = ""; }; F59C70FF00D5CB5801000001 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; F59C710000D5CB5801000001 /* Welcome.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Welcome.txt; sourceTree = ""; }; F59C710300D5CB5801000001 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; @@ -1401,6 +1402,7 @@ isa = PBXGroup; children = ( 04BDFDF312E6671700899322 /* SDL_syshaptic.c */, + DB89958518A1A5C50092407C /* SDL_syshaptic_c.h */, ); path = darwin; sourceTree = ""; diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index b939802f61..6df950b121 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -22,11 +22,13 @@ #ifdef SDL_HAPTIC_IOKIT +#include "SDL_assert.h" #include "SDL_haptic.h" #include "../SDL_syshaptic.h" #include "SDL_joystick.h" #include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */ #include "../../joystick/darwin/SDL_sysjoystick_c.h" /* For joystick hwdata */ +#include "SDL_syshaptic_c.h" #include #include @@ -38,13 +40,10 @@ #define IO_OBJECT_NULL ((io_service_t)0) #endif -#define MAX_HAPTICS 32 - - /* * List of available haptic devices. */ -static struct +typedef struct SDL_hapticlist_item { char name[256]; /* Name of the device. */ @@ -54,7 +53,9 @@ static struct /* Usage pages for determining if it's a mouse or not. */ long usage; long usagePage; -} SDL_hapticlist[MAX_HAPTICS]; + + struct SDL_hapticlist_item *next; +} SDL_hapticlist_item; /* @@ -82,6 +83,9 @@ struct haptic_hweffect static void SDL_SYS_HapticFreeFFEFFECT(FFEFFECT * effect, int type); static int HIDGetDeviceProduct(io_service_t dev, char *name); +static SDL_hapticlist_item *SDL_hapticlist = NULL; +static SDL_hapticlist_item *SDL_hapticlist_tail = NULL; +static int numhaptics = 0; /* * Like strerror but for force feedback errors. @@ -146,16 +150,10 @@ FFStrError(HRESULT err) int SDL_SYS_HapticInit(void) { - int numhaptics; IOReturn result; io_iterator_t iter; CFDictionaryRef match; io_service_t device; - CFMutableDictionaryRef hidProperties; - CFTypeRef refCF; - - /* Clear all the memory. */ - SDL_memset(SDL_hapticlist, 0, sizeof(SDL_hapticlist)); /* Get HID devices. */ match = IOServiceMatching(kIOHIDDeviceKey); @@ -174,62 +172,150 @@ SDL_SYS_HapticInit(void) return 0; } - numhaptics = 0; while ((device = IOIteratorNext(iter)) != IO_OBJECT_NULL) { + PRIVATE_MaybeAddDevice(device); + /* always release as the AddDevice will retain IF it's a forcefeedback device */ + IOObjectRelease(device); + } + IOObjectRelease(iter); - /* Check for force feedback. */ - if (FFIsForceFeedback(device) == FF_OK) { - - /* Set basic device data. */ - HIDGetDeviceProduct(device, SDL_hapticlist[numhaptics].name); - SDL_hapticlist[numhaptics].dev = device; - SDL_hapticlist[numhaptics].haptic = NULL; - - /* Set usage pages. */ - hidProperties = 0; - refCF = 0; - result = IORegistryEntryCreateCFProperties(device, - &hidProperties, - kCFAllocatorDefault, - kNilOptions); - if ((result == KERN_SUCCESS) && hidProperties) { - refCF = - CFDictionaryGetValue(hidProperties, - CFSTR(kIOHIDPrimaryUsagePageKey)); - if (refCF) { - if (!CFNumberGetValue(refCF, kCFNumberLongType, - &SDL_hapticlist[numhaptics]. - usagePage)) - SDL_SetError - ("Haptic: Recieving device's usage page."); - refCF = - CFDictionaryGetValue(hidProperties, - CFSTR(kIOHIDPrimaryUsageKey)); - if (refCF) { - if (!CFNumberGetValue(refCF, kCFNumberLongType, - &SDL_hapticlist[numhaptics]. - usage)) - SDL_SetError("Haptic: Recieving device's usage."); - } - } - CFRelease(hidProperties); - } + return numhaptics; +} + +int +SDL_SYS_NumHaptics() +{ + return numhaptics; +} + +static SDL_hapticlist_item * +HapticByDevIndex(int device_index) +{ + SDL_hapticlist_item *item = SDL_hapticlist; + + if ((device_index < 0) || (device_index >= numhaptics)) { + return NULL; + } + + while (device_index > 0) { + SDL_assert(item != NULL); + device_index--; + item = item->next; + } + + return item; +} + +int +PRIVATE_MaybeAddDevice( io_object_t device ) +{ + IOReturn result; + CFMutableDictionaryRef hidProperties; + CFTypeRef refCF; + SDL_hapticlist_item *item; - /* Device has been added. */ - numhaptics++; - } else { /* Free the unused device. */ - IOObjectRelease(device); + /* Check for force feedback. */ + if (FFIsForceFeedback(device) != FF_OK) { + return -1; + } + + /* Make sure we don't already have it */ + for (item = SDL_hapticlist; item ; item = item->next) + { + if (IOObjectIsEqualTo((io_object_t) item->dev, device)) { + /* Already added */ + return -1; } + } - /* Reached haptic limit. */ - if (numhaptics >= MAX_HAPTICS) - break; + item = (SDL_hapticlist_item *)SDL_malloc( sizeof(SDL_hapticlist_item)); + if (item == NULL) { + return SDL_SetError("Could not allocate haptic storage"); } - IOObjectRelease(iter); + + /* retain it as we are going to keep it around a while */ + IOObjectRetain(device); + + /* Set basic device data. */ + HIDGetDeviceProduct(device, item->name); + item->dev = device; + item->haptic = NULL; + + /* Set usage pages. */ + hidProperties = 0; + refCF = 0; + result = IORegistryEntryCreateCFProperties(device, + &hidProperties, + kCFAllocatorDefault, + kNilOptions); + if ((result == KERN_SUCCESS) && hidProperties) { + refCF = + CFDictionaryGetValue(hidProperties, + CFSTR(kIOHIDPrimaryUsagePageKey)); + if (refCF) { + if (!CFNumberGetValue(refCF, kCFNumberLongType, + &item->usagePage)) + SDL_SetError + ("Haptic: Recieving device's usage page."); + refCF = + CFDictionaryGetValue(hidProperties, + CFSTR(kIOHIDPrimaryUsageKey)); + if (refCF) { + if (!CFNumberGetValue(refCF, kCFNumberLongType, + &item->usage)) + SDL_SetError("Haptic: Recieving device's usage."); + } + } + CFRelease(hidProperties); + } + + if (SDL_hapticlist_tail == NULL) { + SDL_hapticlist = SDL_hapticlist_tail = item; + } else { + SDL_hapticlist_tail->next = item; + SDL_hapticlist_tail = item; + } + + /* Device has been added. */ + ++numhaptics; return numhaptics; } +int +PRIVATE_MaybeRemoveDevice( io_object_t device ) +{ + SDL_hapticlist_item *item; + SDL_hapticlist_item *prev = NULL; + + for (item = SDL_hapticlist; item != NULL; item = item->next) { + /* found it, remove it. */ + if (IOObjectIsEqualTo((io_object_t) item->dev, device)) { + const int retval = item->haptic ? item->haptic->index : -1; + + if (prev != NULL) { + prev->next = item->next; + } else { + SDL_assert(SDL_hapticlist == item); + SDL_hapticlist = item->next; + } + if (item == SDL_hapticlist_tail) { + SDL_hapticlist_tail = prev; + } + + /* Need to decrement the haptic count */ + --numhaptics; + /* !!! TODO: Send a haptic remove event? */ + + IOObjectRelease(item->dev); + SDL_free(item); + return retval; + } + prev = item; + } + + return -1; +} /* * Return the name of a haptic device, does not need to be opened. @@ -237,7 +323,9 @@ SDL_SYS_HapticInit(void) const char * SDL_SYS_HapticName(int index) { - return SDL_hapticlist[index].name; + SDL_hapticlist_item *item; + item = HapticByDevIndex(index); + return item->name; } /* @@ -470,8 +558,10 @@ SDL_SYS_HapticOpenFromService(SDL_Haptic * haptic, io_service_t service) int SDL_SYS_HapticOpen(SDL_Haptic * haptic) { - return SDL_SYS_HapticOpenFromService(haptic, - SDL_hapticlist[haptic->index].dev); + SDL_hapticlist_item *item; + item = HapticByDevIndex(haptic->index); + + return SDL_SYS_HapticOpenFromService(haptic, item->dev); } @@ -481,12 +571,15 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) int SDL_SYS_HapticMouse(void) { - int i; + int device_index = 0; + SDL_hapticlist_item *item; - for (i = 0; i < SDL_numhaptics; i++) { - if ((SDL_hapticlist[i].usagePage == kHIDPage_GenericDesktop) && - (SDL_hapticlist[i].usage == kHIDUsage_GD_Mouse)) - return i; + for (item = SDL_hapticlist; item; item = item->next) { + if ((item->usagePage == kHIDPage_GenericDesktop) && + (item->usage == kHIDUsage_GD_Mouse)) + return device_index; + + ++device_index; } return -1; @@ -524,16 +617,16 @@ SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick) int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) { - int i; - for (i=0; inext) { + if (IOObjectIsEqualTo((io_object_t) item->dev, joystick->hwdata->ffservice)) { - haptic->index = i; + haptic->index = device_index; break; - } - } - if (i >= SDL_numhaptics) { - return -1; + } + ++device_index; } return SDL_SYS_HapticOpenFromService(haptic, joystick->hwdata->ffservice); @@ -569,15 +662,18 @@ SDL_SYS_HapticClose(SDL_Haptic * haptic) void SDL_SYS_HapticQuit(void) { - int i; + SDL_hapticlist_item *item; + SDL_hapticlist_item *next = NULL; - for (i = 0; i < SDL_numhaptics; i++) { + for (item = SDL_hapticlist; item; item = next) { + next = item->next; /* Opened and not closed haptics are leaked, this is on purpose. * Close your haptic devices after usage. */ /* Free the io_service_t */ - IOObjectRelease(SDL_hapticlist[i].dev); + IOObjectRelease(item->dev); } + numhaptics = 0; } diff --git a/src/haptic/darwin/SDL_syshaptic_c.h b/src/haptic/darwin/SDL_syshaptic_c.h new file mode 100644 index 0000000000..0e8625313e --- /dev/null +++ b/src/haptic/darwin/SDL_syshaptic_c.h @@ -0,0 +1,26 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + */ + +int +PRIVATE_MaybeAddDevice( io_object_t device ); + +int +PRIVATE_MaybeRemoveDevice( io_object_t device ); diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index 6961f0fb24..f57bcf80f0 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -48,6 +48,7 @@ #include "../SDL_joystick_c.h" #include "SDL_sysjoystick_c.h" #include "SDL_events.h" +#include "../../haptic/darwin/SDL_syshaptic_c.h" /* For haptic hot plugging */ #if !SDL_EVENTS_DISABLED #include "../../events/SDL_events_c.h" #endif @@ -122,6 +123,9 @@ HIDRemovalCallback(void *target, IOReturn result, void *refcon, void *sender) { recDevice *device = (recDevice *) refcon; device->removed = 1; +#if SDL_HAPTIC_IOKIT + PRIVATE_MaybeRemoveDevice(device->ffservice); +#endif s_bDeviceRemoved = SDL_TRUE; } @@ -134,6 +138,9 @@ void JoystickDeviceWasRemovedCallback( void * refcon, io_service_t service, natu { recDevice *device = (recDevice *) refcon; device->removed = 1; +#if SDL_HAPTIC_IOKIT + PRIVATE_MaybeRemoveDevice(device->ffservice); +#endif s_bDeviceRemoved = SDL_TRUE; } } @@ -679,6 +686,9 @@ AddDeviceHelper( io_object_t ioHIDDeviceObject ) * SDL_HapticOpenFromJoystick */ if (FFIsForceFeedback(ioHIDDeviceObject) == FF_OK) { device->ffservice = ioHIDDeviceObject; +#if SDL_HAPTIC_IOKIT + PRIVATE_MaybeAddDevice(ioHIDDeviceObject); +#endif } else { device->ffservice = 0; } From 3fb2d45fed6aa77a5fb8f9b93a01173ba232b5b8 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Tue, 4 Feb 2014 18:21:39 -0500 Subject: [PATCH 279/402] add testdropfile to OS X Project --- .../SDLTest/SDLTest.xcodeproj/project.pbxproj | 90 ++++++++++++++++++- Xcode/SDLTest/TestDropFile-Info.plist | 35 ++++++++ test/testdropfile.c | 6 ++ 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 Xcode/SDLTest/TestDropFile-Info.plist diff --git a/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj b/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj index a1373d2f27..a9d0a47a16 100755 --- a/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj +++ b/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj @@ -588,6 +588,18 @@ DB89957918A19ABA0092407C /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A873910730675007319AE /* Carbon.framework */; }; DB89957A18A19ABA0092407C /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA645093FFD41000C53B3 /* libSDL2.a */; }; DB89958418A19B130092407C /* testhotplug.c in Sources */ = {isa = PBXBuildFile; fileRef = DB89958318A19B130092407C /* testhotplug.c */; }; + DB445EEA18184B7000B306B0 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002F33A709CA188600EBEB88 /* Cocoa.framework */; }; + DB445EEB18184B7000B306B0 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A863B10730545007319AE /* CoreAudio.framework */; }; + DB445EEC18184B7000B306B0 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A863C10730545007319AE /* ForceFeedback.framework */; }; + DB445EED18184B7000B306B0 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A863D10730545007319AE /* IOKit.framework */; }; + DB445EEE18184B7000B306B0 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A869F10730593007319AE /* AudioToolbox.framework */; }; + DB445EEF18184B7000B306B0 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A86A010730593007319AE /* CoreFoundation.framework */; }; + DB445EF018184B7000B306B0 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A86F2107305CE007319AE /* OpenGL.framework */; }; + DB445EF118184B7000B306B0 /* AudioUnit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A871410730623007319AE /* AudioUnit.framework */; }; + DB445EF218184B7000B306B0 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 002A873910730675007319AE /* Carbon.framework */; }; + DB445EF318184B7000B306B0 /* libSDL2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA645093FFD41000C53B3 /* libSDL2.a */; }; + DB445EF418184B7000B306B0 /* libSDL_test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DB166D7F16A1D12400A1396C /* libSDL_test.a */; }; + DB445EFB18184BB600B306B0 /* testdropfile.c in Sources */ = {isa = PBXBuildFile; fileRef = DB445EFA18184BB600B306B0 /* testdropfile.c */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1172,6 +1184,9 @@ DB166ECF16A1D87000A1396C /* shapes */ = {isa = PBXFileReference; lastKnownFileType = folder; name = shapes; path = ../../test/shapes; sourceTree = ""; }; DB89957E18A19ABA0092407C /* testhotplug */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhotplug; sourceTree = BUILT_PRODUCTS_DIR; }; DB89958318A19B130092407C /* testhotplug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testhotplug.c; path = ../../test/testhotplug.c; sourceTree = ""; }; + DB445EF818184B7000B306B0 /* testdropfile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testdropfile.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB445EFA18184BB600B306B0 /* testdropfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testdropfile.c; path = ../../test/testdropfile.c; sourceTree = ""; }; + DBBC552C182831D700F3CA8D /* TestDropFile-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "TestDropFile-Info.plist"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1941,6 +1956,24 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DB445EE918184B7000B306B0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DB445EEA18184B7000B306B0 /* Cocoa.framework in Frameworks */, + DB445EEB18184B7000B306B0 /* CoreAudio.framework in Frameworks */, + DB445EEC18184B7000B306B0 /* ForceFeedback.framework in Frameworks */, + DB445EED18184B7000B306B0 /* IOKit.framework in Frameworks */, + DB445EEE18184B7000B306B0 /* AudioToolbox.framework in Frameworks */, + DB445EEF18184B7000B306B0 /* CoreFoundation.framework in Frameworks */, + DB445EF018184B7000B306B0 /* OpenGL.framework in Frameworks */, + DB445EF118184B7000B306B0 /* AudioUnit.framework in Frameworks */, + DB445EF218184B7000B306B0 /* Carbon.framework in Frameworks */, + DB445EF318184B7000B306B0 /* libSDL2.a in Frameworks */, + DB445EF418184B7000B306B0 /* libSDL_test.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -1974,6 +2007,7 @@ 00794E4609D207B4003FC8A1 /* Resources */ = { isa = PBXGroup; children = ( + DBBC552C182831D700F3CA8D /* TestDropFile-Info.plist */, DB166ECF16A1D87000A1396C /* shapes */, 00794E5D09D20839003FC8A1 /* icon.bmp */, 00794E5E09D20839003FC8A1 /* moose.dat */, @@ -2008,6 +2042,7 @@ 001795B01074222D00F5D044 /* testaudioinfo.c */, 001797711074320D00F5D044 /* testdraw2.c */, DB0F48D717CA51D2008798C5 /* testdrawchessboard.c */, + DB445EFA18184BB600B306B0 /* testdropfile.c */, 083E4878006D85357F000001 /* testerror.c */, 002F341709CA1C5B00EBEB88 /* testfile.c */, DB0F48D817CA51D2008798C5 /* testfilesystem.c */, @@ -2102,6 +2137,7 @@ DB0F48EC17CA51E5008798C5 /* testdrawchessboard */, DB0F490117CA5212008798C5 /* testfilesystem */, DB89957E18A19ABA0092407C /* testhotplug */, + DB445EF818184B7000B306B0 /* testdropfile.app */, ); name = Products; sourceTree = ""; @@ -2837,7 +2873,7 @@ dependencies = ( ); name = testspriteminimal; - productName = testsem; + productName = testspriteminimal; productReference = DB166E7E16A1D78400A1396C /* testspriteminimal */; productType = "com.apple.product-type.tool"; }; @@ -2854,7 +2890,7 @@ dependencies = ( ); name = teststreaming; - productName = testsem; + productName = teststreaming; productReference = DB166E9116A1D78C00A1396C /* teststreaming */; productType = "com.apple.product-type.tool"; }; @@ -2874,6 +2910,22 @@ productReference = DB89957E18A19ABA0092407C /* testhotplug */; productType = "com.apple.product-type.tool"; }; + DB445EE618184B7000B306B0 /* testdropfile */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB445EF518184B7000B306B0 /* Build configuration list for PBXNativeTarget "testdropfile" */; + buildPhases = ( + DB445EE718184B7000B306B0 /* Sources */, + DB445EE918184B7000B306B0 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testdropfile; + productName = testdropfile; + productReference = DB445EF818184B7000B306B0 /* testdropfile.app */; + productType = "com.apple.product-type.application"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -2911,6 +2963,7 @@ 00179595107421BF00F5D044 /* testaudioinfo */, 00179756107431B300F5D044 /* testdraw2 */, DB0F48D917CA51E5008798C5 /* testdrawchessboard */, + DB445EE618184B7000B306B0 /* testdropfile */, BEC566FB0761D90300A33029 /* testerror */, 002F340109CA1BFF00EBEB88 /* testfile */, DB0F48EF17CA5212008798C5 /* testfilesystem */, @@ -3361,6 +3414,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DB445EE718184B7000B306B0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB445EFB18184BB600B306B0 /* testdropfile.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -4262,6 +4323,22 @@ }; name = Release; }; + DB445EF618184B7000B306B0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = "TestDropFile-Info.plist"; + PRODUCT_NAME = testdropfile; + }; + name = Debug; + }; + DB445EF718184B7000B306B0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = "TestDropFile-Info.plist"; + PRODUCT_NAME = testdropfile; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -4688,6 +4765,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + DB445EF518184B7000B306B0 /* Build configuration list for PBXNativeTarget "testdropfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB445EF618184B7000B306B0 /* Debug */, + DB445EF718184B7000B306B0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; /* End XCConfigurationList section */ }; rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; diff --git a/Xcode/SDLTest/TestDropFile-Info.plist b/Xcode/SDLTest/TestDropFile-Info.plist new file mode 100644 index 0000000000..03e46b33bc --- /dev/null +++ b/Xcode/SDLTest/TestDropFile-Info.plist @@ -0,0 +1,35 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleDocumentTypes + + + CFBundleTypeRole + Viewer + LSHandlerRank + Alternate + LSItemContentTypes + + public.data + + + + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.libsdl.test-dropfile + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + LSMinimumSystemVersion + 10.6 + + diff --git a/test/testdropfile.c b/test/testdropfile.c index ca868eeafd..d62c7f0e15 100644 --- a/test/testdropfile.c +++ b/test/testdropfile.c @@ -44,6 +44,10 @@ main(int argc, char *argv[]) int consumed; consumed = SDLTest_CommonArg(state, i); + // needed vodoo to allow app to launch via OS X Finder + if (SDL_strncmp(argv[i], "-psn", 4)==0) { + consumed = 1; + } if (consumed == 0) { consumed = -1; } @@ -64,6 +68,8 @@ main(int argc, char *argv[]) SDL_RenderPresent(renderer); } + SDL_EventState(SDL_DROPFILE, SDL_ENABLE); + /* Main render loop */ done = 0; while (!done) { From e177cf3cf8255a6a790860d9e4888c44184a1ded Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 5 Feb 2014 00:34:26 -0500 Subject: [PATCH 280/402] SDL_pixels.h needs SDL_stdinc.h for SDL_FOURCC #define (thanks, Dmitry!). Fixes Bugzilla #2384. --- include/SDL_pixels.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/SDL_pixels.h b/include/SDL_pixels.h index 5abf92a85d..3131af7b74 100644 --- a/include/SDL_pixels.h +++ b/include/SDL_pixels.h @@ -28,6 +28,8 @@ #ifndef _SDL_pixels_h #define _SDL_pixels_h +#include "SDL_stdinc.h" + #include "begin_code.h" /* Set up for C function definitions, even when using C++ */ #ifdef __cplusplus From 08cfc29fefe789c89c4abb0a4d6dee99a1edf97a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 5 Feb 2014 01:02:09 -0500 Subject: [PATCH 281/402] Cleanup some vi footer comments, rename new PRIVATE_* funcs to MacHaptic_*. --- src/haptic/SDL_syshaptic.h | 3 ++ src/haptic/darwin/SDL_syshaptic.c | 6 ++-- src/haptic/darwin/SDL_syshaptic_c.h | 46 +++++++++++++-------------- src/joystick/darwin/SDL_sysjoystick.c | 6 ++-- 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/src/haptic/SDL_syshaptic.h b/src/haptic/SDL_syshaptic.h index bc0dae8965..b2918beb94 100644 --- a/src/haptic/SDL_syshaptic.h +++ b/src/haptic/SDL_syshaptic.h @@ -205,3 +205,6 @@ extern int SDL_SYS_HapticUnpause(SDL_Haptic * haptic); * Returns 0 on success, -1 on error. */ extern int SDL_SYS_HapticStopAll(SDL_Haptic * haptic); + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index 6df950b121..75bafc0291 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -173,7 +173,7 @@ SDL_SYS_HapticInit(void) } while ((device = IOIteratorNext(iter)) != IO_OBJECT_NULL) { - PRIVATE_MaybeAddDevice(device); + MacHaptic_MaybeAddDevice(device); /* always release as the AddDevice will retain IF it's a forcefeedback device */ IOObjectRelease(device); } @@ -207,7 +207,7 @@ HapticByDevIndex(int device_index) } int -PRIVATE_MaybeAddDevice( io_object_t device ) +MacHaptic_MaybeAddDevice( io_object_t device ) { IOReturn result; CFMutableDictionaryRef hidProperties; @@ -283,7 +283,7 @@ PRIVATE_MaybeAddDevice( io_object_t device ) } int -PRIVATE_MaybeRemoveDevice( io_object_t device ) +MacHaptic_MaybeRemoveDevice( io_object_t device ) { SDL_hapticlist_item *item; SDL_hapticlist_item *prev = NULL; diff --git a/src/haptic/darwin/SDL_syshaptic_c.h b/src/haptic/darwin/SDL_syshaptic_c.h index 0e8625313e..f807207173 100644 --- a/src/haptic/darwin/SDL_syshaptic_c.h +++ b/src/haptic/darwin/SDL_syshaptic_c.h @@ -1,26 +1,26 @@ /* - Simple DirectMedia Layer - Copyright (C) 1997-2014 Sam Lantinga - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - */ + Simple DirectMedia Layer + Copyright (C) 1997-2014 Sam Lantinga -int -PRIVATE_MaybeAddDevice( io_object_t device ); + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +extern int MacHaptic_MaybeAddDevice( io_object_t device ); +extern int MacHaptic_MaybeRemoveDevice( io_object_t device ); + +/* vi: set ts=4 sw=4 expandtab: */ -int -PRIVATE_MaybeRemoveDevice( io_object_t device ); diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index f57bcf80f0..4be0162373 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -124,7 +124,7 @@ HIDRemovalCallback(void *target, IOReturn result, void *refcon, void *sender) recDevice *device = (recDevice *) refcon; device->removed = 1; #if SDL_HAPTIC_IOKIT - PRIVATE_MaybeRemoveDevice(device->ffservice); + MacHaptic_MaybeRemoveDevice(device->ffservice); #endif s_bDeviceRemoved = SDL_TRUE; } @@ -139,7 +139,7 @@ void JoystickDeviceWasRemovedCallback( void * refcon, io_service_t service, natu recDevice *device = (recDevice *) refcon; device->removed = 1; #if SDL_HAPTIC_IOKIT - PRIVATE_MaybeRemoveDevice(device->ffservice); + MacHaptic_MaybeRemoveDevice(device->ffservice); #endif s_bDeviceRemoved = SDL_TRUE; } @@ -687,7 +687,7 @@ AddDeviceHelper( io_object_t ioHIDDeviceObject ) if (FFIsForceFeedback(ioHIDDeviceObject) == FF_OK) { device->ffservice = ioHIDDeviceObject; #if SDL_HAPTIC_IOKIT - PRIVATE_MaybeAddDevice(ioHIDDeviceObject); + MacHaptic_MaybeAddDevice(ioHIDDeviceObject); #endif } else { device->ffservice = 0; From 970efc9d33ee62752640f538f40cc48d9c01aebf Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 5 Feb 2014 18:36:40 -0500 Subject: [PATCH 282/402] Make SDL_SYS_HapticMouse() count device indexes like HapticByDevIndex(). --- src/haptic/darwin/SDL_syshaptic.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index 75bafc0291..c4fce9ceb3 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -571,15 +571,15 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) int SDL_SYS_HapticMouse(void) { - int device_index = 0; + int device_index = numhaptics-1; SDL_hapticlist_item *item; for (item = SDL_hapticlist; item; item = item->next) { if ((item->usagePage == kHIDPage_GenericDesktop) && - (item->usage == kHIDUsage_GD_Mouse)) + (item->usage == kHIDUsage_GD_Mouse)) { return device_index; - - ++device_index; + } + device_index--; } return -1; From da0ed91a7a58017605b0fd14d4ad8f449334e78e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 5 Feb 2014 20:07:25 -0500 Subject: [PATCH 283/402] Fixed memory leak. --- src/haptic/darwin/SDL_syshaptic.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index c4fce9ceb3..e5a835aa69 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -672,6 +672,7 @@ SDL_SYS_HapticQuit(void) /* Free the io_service_t */ IOObjectRelease(item->dev); + SDL_free(item); } numhaptics = 0; } From cfee394f9aa8499c608f3e5fa69bff956f2c9538 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 6 Feb 2014 07:37:20 -0500 Subject: [PATCH 284/402] Wired up haptic hotplugging for Windows DirectInput/XInput code. --- src/haptic/windows/SDL_syshaptic.c | 352 ++++++++++++++++++++------ src/haptic/windows/SDL_syshaptic_c.h | 28 ++ src/joystick/windows/SDL_dxjoystick.c | 25 ++ 3 files changed, 322 insertions(+), 83 deletions(-) create mode 100644 src/haptic/windows/SDL_syshaptic_c.h diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index 34ce2de00b..a68cd34f6e 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -33,12 +33,12 @@ #include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */ #include "../../joystick/windows/SDL_dxjoystick_c.h" /* For joystick hwdata */ -#define MAX_HAPTICS 32 +#include "SDL_syshaptic_c.h" /* * List of available haptic devices. */ -static struct +typedef struct SDL_hapticlist_item { DIDEVICEINSTANCE instance; char *name; @@ -46,7 +46,8 @@ static struct DIDEVCAPS capabilities; Uint8 bXInputHaptic; /* Supports force feedback via XInput. */ Uint8 userid; /* XInput userid index for this joystick */ -} SDL_hapticlist[MAX_HAPTICS]; + struct SDL_hapticlist_item *next; +} SDL_hapticlist_item; /* @@ -83,7 +84,9 @@ struct haptic_hweffect static SDL_bool coinitialized = SDL_FALSE; static LPDIRECTINPUT8 dinput = NULL; static SDL_bool loaded_xinput = SDL_FALSE; - +static SDL_hapticlist_item *SDL_hapticlist = NULL; +static SDL_hapticlist_item *SDL_hapticlist_tail = NULL; +static int numhaptics = 0; /* * External stuff. @@ -101,7 +104,7 @@ static int SDL_SYS_HapticOpenFromInstance(SDL_Haptic * haptic, static int SDL_SYS_HapticOpenFromDevice8(SDL_Haptic * haptic, LPDIRECTINPUTDEVICE8 device8, SDL_bool is_joystick); -static int SDL_SYS_HapticOpenFromXInput(SDL_Haptic * haptic, Uint8 userid); +static int SDL_SYS_HapticOpenFromXInput(SDL_Haptic * haptic, const Uint8 userid); static DWORD DIGetTriggerButton(Uint16 button); static int SDL_SYS_SetDirection(DIEFFECT * effect, SDL_HapticDirection * dir, int naxes); @@ -155,11 +158,6 @@ SDL_SYS_HapticInit(void) return SDL_SetError("Haptic: SubSystem already open."); } - /* Clear all the memory. */ - SDL_memset(SDL_hapticlist, 0, sizeof(SDL_hapticlist)); - - SDL_numhaptics = 0; - ret = WIN_CoInitialize(); if (FAILED(ret)) { return DI_SetError("Coinitialize", ret); @@ -205,73 +203,251 @@ SDL_SYS_HapticInit(void) if (loaded_xinput) { DWORD i; - const SDL_bool bIs14OrLater = (SDL_XInputVersion >= ((1<<16)|4)); - - for (i = 0; (i < SDL_XINPUT_MAX_DEVICES) && (SDL_numhaptics < MAX_HAPTICS); i++) { - XINPUT_CAPABILITIES caps; - if (XINPUTGETCAPABILITIES(i, XINPUT_FLAG_GAMEPAD, &caps) == ERROR_SUCCESS) { - if ((!bIs14OrLater) || (caps.Flags & XINPUT_CAPS_FFB_SUPPORTED)) { - /* !!! FIXME: I'm not bothering to query for a real name right now. */ - char buf[64]; - SDL_snprintf(buf, sizeof (buf), "XInput Controller #%u", i+1); - SDL_hapticlist[SDL_numhaptics].name = SDL_strdup(buf); - SDL_hapticlist[SDL_numhaptics].bXInputHaptic = 1; - SDL_hapticlist[SDL_numhaptics].userid = (Uint8) i; - SDL_numhaptics++; - } - } + for (i = 0; i < SDL_XINPUT_MAX_DEVICES; i++) { + XInputHaptic_MaybeAddDevice(i); } } - return SDL_numhaptics; + return numhaptics; } -/* - * Callback to find the haptic devices. - */ -static BOOL CALLBACK -EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext) + +int +DirectInputHaptic_MaybeAddDevice(const DIDEVICEINSTANCE * pdidInstance) { HRESULT ret; LPDIRECTINPUTDEVICE8 device; + const DWORD needflags = DIDC_ATTACHED | DIDC_FORCEFEEDBACK; + DIDEVCAPS capabilities; + SDL_hapticlist_item *item = NULL; - /* Copy the instance over, useful for creating devices. */ - SDL_memcpy(&SDL_hapticlist[SDL_numhaptics].instance, pdidInstance, - sizeof(DIDEVICEINSTANCE)); + /* Make sure we don't already have it */ + for (item = SDL_hapticlist; item; item = item->next) { + if ( (!item->bXInputHaptic) && (SDL_memcmp(&item->instance, pdidInstance, sizeof (*pdidInstance)) == 0) ) { + return -1; /* Already added */ + } + } /* Open the device */ - ret = IDirectInput8_CreateDevice(dinput, &pdidInstance->guidInstance, - &device, NULL); + ret = IDirectInput8_CreateDevice(dinput, &pdidInstance->guidInstance, &device, NULL); if (FAILED(ret)) { /* DI_SetError("Creating DirectInput device",ret); */ - return DIENUM_CONTINUE; + return -1; } /* Get capabilities. */ - SDL_hapticlist[SDL_numhaptics].capabilities.dwSize = sizeof(DIDEVCAPS); - ret = IDirectInputDevice8_GetCapabilities(device, - &SDL_hapticlist[SDL_numhaptics]. - capabilities); + SDL_zero(capabilities); + capabilities.dwSize = sizeof (DIDEVCAPS); + ret = IDirectInputDevice8_GetCapabilities(device, &capabilities); + IDirectInputDevice8_Release(device); if (FAILED(ret)) { /* DI_SetError("Getting device capabilities",ret); */ - IDirectInputDevice8_Release(device); - return DIENUM_CONTINUE; + return -1; } - /* Copy the name */ - SDL_hapticlist[SDL_numhaptics].name = WIN_StringToUTF8(SDL_hapticlist[SDL_numhaptics].instance.tszProductName); + if ((capabilities.dwFlags & needflags) != needflags) { + return -1; /* not a device we can use. */ + } - /* Close up device and count it. */ - IDirectInputDevice8_Release(device); - SDL_numhaptics++; + item = (SDL_hapticlist_item *)SDL_malloc( sizeof(SDL_hapticlist_item)); + if (item == NULL) { + return SDL_OutOfMemory(); + } - /* Watch out for hard limit. */ - if (SDL_numhaptics >= MAX_HAPTICS) - return DIENUM_STOP; + SDL_zerop(item); - return DIENUM_CONTINUE; + item->name = WIN_StringToUTF8(pdidInstance->tszProductName); + if (!item->name) { + SDL_free(item); + return -1; + } + + /* Copy the instance over, useful for creating devices. */ + SDL_memcpy(&item->instance, pdidInstance, sizeof (DIDEVICEINSTANCE)); + SDL_memcpy(&item->capabilities, &capabilities, sizeof (capabilities)); + + if (SDL_hapticlist_tail == NULL) { + SDL_hapticlist = SDL_hapticlist_tail = item; + } else { + SDL_hapticlist_tail->next = item; + SDL_hapticlist_tail = item; + } + + /* Device has been added. */ + ++numhaptics; + + return numhaptics; +} + + +int +DirectInputHaptic_MaybeRemoveDevice(const DIDEVICEINSTANCE * pdidInstance) +{ + SDL_hapticlist_item *item; + SDL_hapticlist_item *prev = NULL; + + for (item = SDL_hapticlist; item != NULL; item = item->next) { + if ( (!item->bXInputHaptic) && (SDL_memcmp(&item->instance, pdidInstance, sizeof (*pdidInstance)) == 0) ) { + /* found it, remove it. */ + const int retval = item->haptic ? item->haptic->index : -1; + if (prev != NULL) { + prev->next = item->next; + } else { + SDL_assert(SDL_hapticlist == item); + SDL_hapticlist = item->next; + } + if (item == SDL_hapticlist_tail) { + SDL_hapticlist_tail = prev; + } + --numhaptics; + /* !!! TODO: Send a haptic remove event? */ + SDL_free(item); + return retval; + } + prev = item; + } + + return -1; +} + + +int +XInputHaptic_MaybeAddDevice(const DWORD dwUserid) +{ + const Uint8 userid = (Uint8) dwUserid; + XINPUT_CAPABILITIES caps; + const SDL_bool bIs14OrLater = (SDL_XInputVersion >= ((1<<16)|4)); + SDL_hapticlist_item *item; + + if ((!loaded_xinput) || (dwUserid >= SDL_XINPUT_MAX_DEVICES)) { + return -1; + } + + /* Make sure we don't already have it */ + for (item = SDL_hapticlist; item; item = item->next) { + if ((item->bXInputHaptic) && (item->userid == userid)) { + return -1; /* Already added */ + } + } + + if (XINPUTGETCAPABILITIES(dwUserid, XINPUT_FLAG_GAMEPAD, &caps) != ERROR_SUCCESS) { + return -1; /* maybe controller isn't plugged in. */ + } + + /* XInput < 1.4 is probably only for original XBox360 controllers, + which don't offer the flag, and always have force feedback */ + if ( (bIs14OrLater) && ((caps.Flags & XINPUT_CAPS_FFB_SUPPORTED) == 0) ) { + return -1; /* no force feedback on this device. */ + } + + item = (SDL_hapticlist_item *)SDL_malloc( sizeof(SDL_hapticlist_item)); + if (item == NULL) { + return SDL_OutOfMemory(); + } + + SDL_zerop(item); + + /* !!! FIXME: I'm not bothering to query for a real name right now (can we even?) */ + { + char buf[64]; + SDL_snprintf(buf, sizeof (buf), "XInput Controller #%u", (unsigned int) (userid+1)); + item->name = SDL_strdup(buf); + } + + if (!item->name) { + SDL_free(item); + return -1; + } + + /* Copy the instance over, useful for creating devices. */ + item->bXInputHaptic = 1; + item->userid = userid; + + if (SDL_hapticlist_tail == NULL) { + SDL_hapticlist = SDL_hapticlist_tail = item; + } else { + SDL_hapticlist_tail->next = item; + SDL_hapticlist_tail = item; + } + + /* Device has been added. */ + ++numhaptics; + + return numhaptics; +} + + +int +XInputHaptic_MaybeRemoveDevice(const DWORD dwUserid) +{ + const Uint8 userid = (Uint8) dwUserid; + SDL_hapticlist_item *item; + SDL_hapticlist_item *prev = NULL; + + if ((!loaded_xinput) || (dwUserid >= SDL_XINPUT_MAX_DEVICES)) { + return -1; + } + + for (item = SDL_hapticlist; item != NULL; item = item->next) { + if ((item->bXInputHaptic) && (item->userid == userid)) { + /* found it, remove it. */ + const int retval = item->haptic ? item->haptic->index : -1; + if (prev != NULL) { + prev->next = item->next; + } else { + SDL_assert(SDL_hapticlist == item); + SDL_hapticlist = item->next; + } + if (item == SDL_hapticlist_tail) { + SDL_hapticlist_tail = prev; + } + --numhaptics; + /* !!! TODO: Send a haptic remove event? */ + SDL_free(item); + return retval; + } + prev = item; + } + + return -1; +} + + +/* + * Callback to find the haptic devices. + */ +static BOOL CALLBACK +EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext) +{ + (void) pContext; + DirectInputHaptic_MaybeAddDevice(pdidInstance); + return DIENUM_CONTINUE; /* continue enumerating */ +} + + +int +SDL_SYS_NumHaptics() +{ + return numhaptics; } +static SDL_hapticlist_item * +HapticByDevIndex(int device_index) +{ + SDL_hapticlist_item *item = SDL_hapticlist; + + if ((device_index < 0) || (device_index >= numhaptics)) { + return NULL; + } + + while (device_index > 0) { + SDL_assert(item != NULL); + device_index--; + item = item->next; + } + + return item; +} /* * Return the name of a haptic device, does not need to be opened. @@ -279,7 +455,8 @@ EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext) const char * SDL_SYS_HapticName(int index) { - return SDL_hapticlist[index].name; + SDL_hapticlist_item *item = HapticByDevIndex(index); + return item->name; } @@ -384,7 +561,7 @@ SDL_SYS_HapticOpenFromInstance(SDL_Haptic * haptic, DIDEVICEINSTANCE instance) } static int -SDL_SYS_HapticOpenFromXInput(SDL_Haptic * haptic, Uint8 userid) +SDL_SYS_HapticOpenFromXInput(SDL_Haptic *haptic, const Uint8 userid) { char threadName[32]; XINPUT_VIBRATION vibration = { 0, 0 }; /* stop any current vibration */ @@ -595,11 +772,8 @@ SDL_SYS_HapticOpenFromDevice8(SDL_Haptic * haptic, int SDL_SYS_HapticOpen(SDL_Haptic * haptic) { - if (SDL_hapticlist[haptic->index].bXInputHaptic) { - return SDL_SYS_HapticOpenFromXInput(haptic, SDL_hapticlist[haptic->index].userid); - } - - return SDL_SYS_HapticOpenFromInstance(haptic, SDL_hapticlist[haptic->index].instance); + SDL_hapticlist_item *item = HapticByDevIndex(haptic->index); + return (item->bXInputHaptic) ? SDL_SYS_HapticOpenFromXInput(haptic, item->userid) : SDL_SYS_HapticOpenFromInstance(haptic, item->instance); } @@ -609,13 +783,16 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) int SDL_SYS_HapticMouse(void) { - int i; + SDL_hapticlist_item *item; + int index = numhaptics-1; /* Grab the first mouse haptic device we find. */ - for (i = 0; i < SDL_numhaptics; i++) { - if (SDL_hapticlist[i].capabilities.dwDevType == DI8DEVCLASS_POINTER ) { - return i; + for (item = SDL_hapticlist; item != NULL; item = item->next) { + SDL_assert(index >= 0); + if (item->capabilities.dwDevType == DI8DEVCLASS_POINTER ) { + return index; } + index--; } return -1; @@ -677,34 +854,39 @@ SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick) int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) { - int i; - HRESULT idret; - DIDEVICEINSTANCE joy_instance; - joy_instance.dwSize = sizeof(DIDEVICEINSTANCE); + SDL_hapticlist_item *item; + int index = numhaptics-1; /* Since it comes from a joystick we have to try to match it with a haptic device on our haptic list. */ if (joystick->hwdata->bXInputDevice) { const Uint8 userid = joystick->hwdata->userid; - for (i=0; inext) { + if ((item->bXInputHaptic) && (item->userid == userid)) { SDL_assert(joystick->hwdata->bXInputHaptic); - haptic->index = i; - return SDL_SYS_HapticOpenFromXInput(haptic, SDL_hapticlist[haptic->index].userid); + haptic->index = index; + return SDL_SYS_HapticOpenFromXInput(haptic, userid); } + index--; } } else { - for (i=0; ihwdata->InputDevice, &joy_instance); - if (FAILED(idret)) { - return -1; - } - if (DI_GUIDIsSame(&SDL_hapticlist[i].instance.guidInstance, - &joy_instance.guidInstance)) { - haptic->index = i; + HRESULT idret; + DIDEVICEINSTANCE joy_instance; + + joy_instance.dwSize = sizeof(DIDEVICEINSTANCE); + idret = IDirectInputDevice8_GetDeviceInfo(joystick->hwdata->InputDevice, &joy_instance); + if (FAILED(idret)) { + return -1; + } + + for (item = SDL_hapticlist; item != NULL; item = item->next) { + if (DI_GUIDIsSame(&item->instance.guidInstance, &joy_instance.guidInstance)) { + haptic->index = index; return SDL_SYS_HapticOpenFromDevice8(haptic, joystick->hwdata->InputDevice, SDL_TRUE); } + index--; } } + /* No match to our haptic list */ return -1; } @@ -749,16 +931,20 @@ SDL_SYS_HapticClose(SDL_Haptic * haptic) void SDL_SYS_HapticQuit(void) { - int i; + SDL_hapticlist_item *item; + SDL_hapticlist_item *next = NULL; if (loaded_xinput) { WIN_UnloadXInputDLL(); loaded_xinput = SDL_FALSE; } - for (i = 0; i < SDL_arraysize(SDL_hapticlist); ++i) { - SDL_free(SDL_hapticlist[i].name); - SDL_hapticlist[i].name = NULL; + for (item = SDL_hapticlist; item; item = next) { + /* Opened and not closed haptics are leaked, this is on purpose. + * Close your haptic devices after usage. */ + next = item->next; + SDL_free(item->name); + SDL_free(item); } if (dinput != NULL) { diff --git a/src/haptic/windows/SDL_syshaptic_c.h b/src/haptic/windows/SDL_syshaptic_c.h new file mode 100644 index 0000000000..1e0fa190d7 --- /dev/null +++ b/src/haptic/windows/SDL_syshaptic_c.h @@ -0,0 +1,28 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2014 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +extern int DirectInputHaptic_MaybeAddDevice(const DIDEVICEINSTANCE *pdidInstance); +extern int DirectInputHaptic_MaybeRemoveDevice(const DIDEVICEINSTANCE *pdidInstance); +extern int XInputHaptic_MaybeAddDevice(const DWORD dwUserid); +extern int XInputHaptic_MaybeRemoveDevice(const DWORD dwUserid); + +/* vi: set ts=4 sw=4 expandtab: */ + diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index 9021213985..da96b6063a 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -49,6 +49,10 @@ #define INITGUID /* Only set here, if set twice will cause mingw32 to break. */ #include "SDL_dxjoystick_c.h" +#if SDL_HAPTIC_DINPUT +#include "../../haptic/windows/SDL_syshaptic_c.h" /* For haptic hot plugging */ +#endif + #ifndef DIDFT_OPTIONAL #define DIDFT_OPTIONAL 0x80000000 #endif @@ -824,7 +828,17 @@ void SDL_SYS_JoystickDetect() while ( pCurList ) { JoyStick_DeviceData *pListNext = NULL; + +#if SDL_HAPTIC_DINPUT + if (pCurList->bXInputDevice) { + XInputHaptic_MaybeRemoveDevice(pCurList->XInputUserId); + } else { + DirectInputHaptic_MaybeRemoveDevice(&pCurList->dxdevice); + } +#endif + #if !SDL_EVENTS_DISABLED + { SDL_Event event; event.type = SDL_JOYDEVICEREMOVED; @@ -835,6 +849,7 @@ void SDL_SYS_JoystickDetect() SDL_PushEvent(&event); } } + } #endif /* !SDL_EVENTS_DISABLED */ pListNext = pCurList->pNext; @@ -855,7 +870,16 @@ void SDL_SYS_JoystickDetect() { if ( pNewJoystick->send_add_event ) { +#if SDL_HAPTIC_DINPUT + if (pNewJoystick->bXInputDevice) { + XInputHaptic_MaybeAddDevice(pNewJoystick->XInputUserId); + } else { + DirectInputHaptic_MaybeAddDevice(&pNewJoystick->dxdevice); + } +#endif + #if !SDL_EVENTS_DISABLED + { SDL_Event event; event.type = SDL_JOYDEVICEADDED; @@ -866,6 +890,7 @@ void SDL_SYS_JoystickDetect() SDL_PushEvent(&event); } } + } #endif /* !SDL_EVENTS_DISABLED */ pNewJoystick->send_add_event = 0; } From cec71edd2cb8c2d354953f5656e0b2abf4137dea Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 6 Feb 2014 07:38:04 -0500 Subject: [PATCH 285/402] Fixed copyright date. --- test/testhotplug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/testhotplug.c b/test/testhotplug.c index 173ff2d135..2ae54b25d5 100644 --- a/test/testhotplug.c +++ b/test/testhotplug.c @@ -1,5 +1,5 @@ /* - Copyright (C) 1997-2013 Sam Lantinga + Copyright (C) 1997-2014 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages From e282c80626ba1a274f96dd412e338354e525c3f3 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 6 Feb 2014 07:38:41 -0500 Subject: [PATCH 286/402] Fixed return values on testhotplug mainline. --- test/testhotplug.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/testhotplug.c b/test/testhotplug.c index 2ae54b25d5..8c1cec49de 100644 --- a/test/testhotplug.c +++ b/test/testhotplug.c @@ -126,6 +126,8 @@ main(int argc, char *argv[]) } SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); + + return 0; } #else @@ -133,7 +135,7 @@ int main(int argc, char *argv[]) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick support.\n"); - exit(1); + return 1; } #endif From 4ab4739db10f0fb5c1eca2cefe8d315cd25adfd7 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Thu, 6 Feb 2014 09:11:05 -0500 Subject: [PATCH 287/402] fix indentation and spaces --- src/haptic/darwin/SDL_syshaptic.c | 20 +++++----- src/haptic/dummy/SDL_syshaptic.c | 2 +- src/haptic/linux/SDL_syshaptic.c | 61 +++++++++++++++---------------- 3 files changed, 41 insertions(+), 42 deletions(-) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index e5a835aa69..beef0101da 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -192,17 +192,17 @@ static SDL_hapticlist_item * HapticByDevIndex(int device_index) { SDL_hapticlist_item *item = SDL_hapticlist; - + if ((device_index < 0) || (device_index >= numhaptics)) { return NULL; } - + while (device_index > 0) { SDL_assert(item != NULL); device_index--; item = item->next; } - + return item; } @@ -232,7 +232,7 @@ MacHaptic_MaybeAddDevice( io_object_t device ) if (item == NULL) { return SDL_SetError("Could not allocate haptic storage"); } - + /* retain it as we are going to keep it around a while */ IOObjectRetain(device); @@ -240,7 +240,7 @@ MacHaptic_MaybeAddDevice( io_object_t device ) HIDGetDeviceProduct(device, item->name); item->dev = device; item->haptic = NULL; - + /* Set usage pages. */ hidProperties = 0; refCF = 0; @@ -268,14 +268,14 @@ MacHaptic_MaybeAddDevice( io_object_t device ) } CFRelease(hidProperties); } - + if (SDL_hapticlist_tail == NULL) { SDL_hapticlist = SDL_hapticlist_tail = item; } else { SDL_hapticlist_tail->next = item; SDL_hapticlist_tail = item; } - + /* Device has been added. */ ++numhaptics; @@ -287,7 +287,7 @@ MacHaptic_MaybeRemoveDevice( io_object_t device ) { SDL_hapticlist_item *item; SDL_hapticlist_item *prev = NULL; - + for (item = SDL_hapticlist; item != NULL; item = item->next) { /* found it, remove it. */ if (IOObjectIsEqualTo((io_object_t) item->dev, device)) { @@ -306,14 +306,14 @@ MacHaptic_MaybeRemoveDevice( io_object_t device ) /* Need to decrement the haptic count */ --numhaptics; /* !!! TODO: Send a haptic remove event? */ - + IOObjectRelease(item->dev); SDL_free(item); return retval; } prev = item; } - + return -1; } diff --git a/src/haptic/dummy/SDL_syshaptic.c b/src/haptic/dummy/SDL_syshaptic.c index 9830ac4fce..09839c6de4 100644 --- a/src/haptic/dummy/SDL_syshaptic.c +++ b/src/haptic/dummy/SDL_syshaptic.c @@ -42,7 +42,7 @@ SDL_SYS_HapticInit(void) int SDL_SYS_NumHaptics(void) { - return 0; + return 0; } const char * diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index 247cb28de1..764434f1dc 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -59,7 +59,7 @@ typedef struct SDL_hapticlist_item { char *fname; /* Dev path name (like /dev/input/event1) */ SDL_Haptic *haptic; /* Assosciated haptic. */ - struct SDL_hapticlist_item *next; + struct SDL_hapticlist_item *next; } SDL_hapticlist_item; @@ -172,16 +172,16 @@ SDL_SYS_HapticInit(void) } #if SDL_USE_LIBUDEV - if (SDL_UDEV_Init() < 0) { + if (SDL_UDEV_Init() < 0) { return SDL_SetError("Could not initialize UDEV"); } - if ( SDL_UDEV_AddCallback(haptic_udev_callback) < 0) { - SDL_UDEV_Quit(); - return SDL_SetError("Could not setup haptic <-> udev callback"); - } + if ( SDL_UDEV_AddCallback(haptic_udev_callback) < 0) { + SDL_UDEV_Quit(); + return SDL_SetError("Could not setup haptic <-> udev callback"); + } #endif /* SDL_USE_LIBUDEV */ - + return numhaptics; } @@ -215,21 +215,21 @@ void haptic_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, const if (devpath == NULL || !(udev_class & SDL_UDEV_DEVICE_JOYSTICK)) { return; } - + switch( udev_type ) { case SDL_UDEV_DEVICEADDED: MaybeAddDevice(devpath); break; - + case SDL_UDEV_DEVICEREMOVED: MaybeRemoveDevice(devpath); break; - + default: break; } - + } #endif /* SDL_USE_LIBUDEV */ @@ -252,7 +252,7 @@ MaybeAddDevice(const char *path) /* check to see if file exists */ if (stat(path, &sb) != 0) { return -1; - } + } /* check for duplicates */ duplicate = 0; @@ -269,7 +269,7 @@ MaybeAddDevice(const char *path) fd = open(path, O_RDWR, 0); if (fd < 0) { return -1; - } + } #ifdef DEBUG_INPUT_EVENTS printf("Checking %s\n", path); @@ -375,11 +375,11 @@ SDL_SYS_HapticNameFromFD(int fd) const char * SDL_SYS_HapticName(int index) { - SDL_hapticlist_item *item; + SDL_hapticlist_item *item; int fd; const char *name; - item = HapticByDevIndex(index); + item = HapticByDevIndex(index); /* Open the haptic device. */ name = NULL; fd = open(item->fname, O_RDONLY, 0); @@ -456,9 +456,9 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) { int fd; int ret; - SDL_hapticlist_item *item; + SDL_hapticlist_item *item; - item = HapticByDevIndex(haptic->index); + item = HapticByDevIndex(haptic->index); /* Open the character device */ fd = open(item->fname, O_RDWR, 0); if (fd < 0) { @@ -486,9 +486,8 @@ SDL_SYS_HapticMouse(void) { int fd; int device_index = 0; - SDL_hapticlist_item *item; + SDL_hapticlist_item *item; - for (item = SDL_hapticlist; item; item = item->next) { /* Open the device. */ fd = open(item->fname, O_RDWR, 0); @@ -505,7 +504,7 @@ SDL_SYS_HapticMouse(void) close(fd); - ++device_index; + ++device_index; } return -1; @@ -546,16 +545,16 @@ SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) int device_index = 0; int fd; int ret; - SDL_hapticlist_item *item; + SDL_hapticlist_item *item; /* Find the joystick in the haptic list. */ for (item = SDL_hapticlist; item; item = item->next) { - if (SDL_strcmp(item->fname, joystick->hwdata->fname) == 0) { - haptic->index = device_index; - break; - } - ++device_index; + if (SDL_strcmp(item->fname, joystick->hwdata->fname) == 0) { + haptic->index = device_index; + break; + } + ++device_index; } if (device_index >= MAX_HAPTICS) { return SDL_SetError("Haptic: Joystick doesn't have Haptic capabilities"); @@ -609,14 +608,14 @@ void SDL_SYS_HapticQuit(void) { SDL_hapticlist_item *item = NULL; - SDL_hapticlist_item *next = NULL; + SDL_hapticlist_item *next = NULL; for (item = SDL_hapticlist; item; item = next) { - next = item->next; + next = item->next; /* Opened and not closed haptics are leaked, this is on purpose. * Close your haptic devices after usage. */ - SDL_free(item->fname); - item->fname = NULL; + SDL_free(item->fname); + item->fname = NULL; } #if SDL_USE_LIBUDEV @@ -911,7 +910,7 @@ SDL_SYS_ToFFEffect(struct ff_effect *dest, SDL_HapticEffect * src) dest->u.rumble.strong_magnitude = leftright->large_magnitude; dest->u.rumble.weak_magnitude = leftright->small_magnitude; - break; + break; default: From bfd8e984981838b4d36388d58680960f07a2b793 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Thu, 6 Feb 2014 09:35:44 -0500 Subject: [PATCH 288/402] Fix device counting in HapticMouse and JoystickOpen routines. 0 is the first item in the list not the last --- src/haptic/darwin/SDL_syshaptic.c | 6 +++--- src/haptic/linux/SDL_syshaptic.c | 2 +- src/haptic/windows/SDL_syshaptic.c | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index beef0101da..306eda9b42 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -199,7 +199,7 @@ HapticByDevIndex(int device_index) while (device_index > 0) { SDL_assert(item != NULL); - device_index--; + --device_index; item = item->next; } @@ -571,7 +571,7 @@ SDL_SYS_HapticOpen(SDL_Haptic * haptic) int SDL_SYS_HapticMouse(void) { - int device_index = numhaptics-1; + int device_index = 0; SDL_hapticlist_item *item; for (item = SDL_hapticlist; item; item = item->next) { @@ -579,7 +579,7 @@ SDL_SYS_HapticMouse(void) (item->usage == kHIDUsage_GD_Mouse)) { return device_index; } - device_index--; + ++device_index; } return -1; diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index 764434f1dc..558177bc5e 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -202,7 +202,7 @@ HapticByDevIndex(int device_index) while (device_index > 0) { SDL_assert(item != NULL); - device_index--; + --device_index; item = item->next; } diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index a68cd34f6e..6be0e4dcf5 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -442,7 +442,7 @@ HapticByDevIndex(int device_index) while (device_index > 0) { SDL_assert(item != NULL); - device_index--; + --device_index; item = item->next; } @@ -784,7 +784,7 @@ int SDL_SYS_HapticMouse(void) { SDL_hapticlist_item *item; - int index = numhaptics-1; + int index = 0; /* Grab the first mouse haptic device we find. */ for (item = SDL_hapticlist; item != NULL; item = item->next) { @@ -792,7 +792,7 @@ SDL_SYS_HapticMouse(void) if (item->capabilities.dwDevType == DI8DEVCLASS_POINTER ) { return index; } - index--; + ++index; } return -1; @@ -855,7 +855,7 @@ int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) { SDL_hapticlist_item *item; - int index = numhaptics-1; + int index = 0; /* Since it comes from a joystick we have to try to match it with a haptic device on our haptic list. */ if (joystick->hwdata->bXInputDevice) { @@ -866,7 +866,7 @@ SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) haptic->index = index; return SDL_SYS_HapticOpenFromXInput(haptic, userid); } - index--; + ++index; } } else { HRESULT idret; @@ -883,7 +883,7 @@ SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) haptic->index = index; return SDL_SYS_HapticOpenFromDevice8(haptic, joystick->hwdata->InputDevice, SDL_TRUE); } - index--; + ++index; } } From 874504f596b58af3c9eb8f4a83c3f2b52a6f0956 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 6 Feb 2014 10:00:45 -0500 Subject: [PATCH 289/402] Fixed a typo. --- src/haptic/linux/SDL_syshaptic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index 558177bc5e..995001c920 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -58,7 +58,7 @@ void haptic_udev_callback(SDL_UDEV_deviceevent udev_type, int udev_class, const typedef struct SDL_hapticlist_item { char *fname; /* Dev path name (like /dev/input/event1) */ - SDL_Haptic *haptic; /* Assosciated haptic. */ + SDL_Haptic *haptic; /* Associated haptic. */ struct SDL_hapticlist_item *next; } SDL_hapticlist_item; From 3f8a165ccaeccc302bcb20c4cbe7f35ebf481dc7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 6 Feb 2014 21:26:41 -0500 Subject: [PATCH 290/402] Fixed crash on Windows if haptic isn't initialized when controllers are added. --- src/haptic/windows/SDL_syshaptic.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index 6be0e4dcf5..59f7456683 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -221,6 +221,10 @@ DirectInputHaptic_MaybeAddDevice(const DIDEVICEINSTANCE * pdidInstance) DIDEVCAPS capabilities; SDL_hapticlist_item *item = NULL; + if (dinput == NULL) { + return -1; /* not initialized. We'll pick these up on enumeration if we init later. */ + } + /* Make sure we don't already have it */ for (item = SDL_hapticlist; item; item = item->next) { if ( (!item->bXInputHaptic) && (SDL_memcmp(&item->instance, pdidInstance, sizeof (*pdidInstance)) == 0) ) { @@ -286,6 +290,10 @@ DirectInputHaptic_MaybeRemoveDevice(const DIDEVICEINSTANCE * pdidInstance) SDL_hapticlist_item *item; SDL_hapticlist_item *prev = NULL; + if (dinput == NULL) { + return -1; /* not initialized, ignore this. */ + } + for (item = SDL_hapticlist; item != NULL; item = item->next) { if ( (!item->bXInputHaptic) && (SDL_memcmp(&item->instance, pdidInstance, sizeof (*pdidInstance)) == 0) ) { /* found it, remove it. */ From cda30061044b433dc8b117ab789ff9d8ca270b6f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 6 Feb 2014 21:28:11 -0500 Subject: [PATCH 291/402] Added DualShock 4 game controller config for Windows, Mac, and Linux. --- src/joystick/SDL_gamecontrollerdb.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index f8d49a5560..c9545aad5e 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -39,6 +39,7 @@ static const char *s_ControllerMappings [] = "88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,", "4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", "25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,", + "4c05c405000000000000504944564944,PS4 Controller,x:a4,a:a3,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a3,rightshoulder:b6,rightshoulder:b5,righttrigger:a4,leftstick:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,", "xinput,X360 Controller,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,", #elif defined(__MACOSX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", @@ -47,6 +48,7 @@ static const char *s_ControllerMappings [] = "6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", "6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ "4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "4c05000000000000c405000000000000,PS4 Controller,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a3,rightshoulder:b6,rightshoulder:b5,righttrigger:a4,leftstick:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,", "5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", #elif defined(__LINUX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", @@ -57,6 +59,7 @@ static const char *s_ControllerMappings [] = "030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", "03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", From 4115b5aebbe5493a165b2a5def0ec995d6420f25 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Fri, 7 Feb 2014 09:35:13 -0500 Subject: [PATCH 292/402] ignore hot plugs in mac haptic layer IF hap tics hasn't been initialized. --- src/haptic/darwin/SDL_syshaptic.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index 306eda9b42..4a62e3505f 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -85,7 +85,7 @@ static int HIDGetDeviceProduct(io_service_t dev, char *name); static SDL_hapticlist_item *SDL_hapticlist = NULL; static SDL_hapticlist_item *SDL_hapticlist_tail = NULL; -static int numhaptics = 0; +static int numhaptics = -1; /* * Like strerror but for force feedback errors. @@ -155,6 +155,11 @@ SDL_SYS_HapticInit(void) CFDictionaryRef match; io_service_t device; + if (numhaptics != -1) { + return SDL_Error("Haptic subsystem already initialized!"); + } + numhaptics = 0; + /* Get HID devices. */ match = IOServiceMatching(kIOHIDDeviceKey); if (match == NULL) { @@ -214,6 +219,10 @@ MacHaptic_MaybeAddDevice( io_object_t device ) CFTypeRef refCF; SDL_hapticlist_item *item; + if (numhaptics == -1) { + return -1; /* not initialized. We'll pick these up on enumeration if we init later. */ + } + /* Check for force feedback. */ if (FFIsForceFeedback(device) != FF_OK) { return -1; @@ -288,6 +297,10 @@ MacHaptic_MaybeRemoveDevice( io_object_t device ) SDL_hapticlist_item *item; SDL_hapticlist_item *prev = NULL; + if (numhaptics == -1) { + return -1; /* not initialized. ignore this. */ + } + for (item = SDL_hapticlist; item != NULL; item = item->next) { /* found it, remove it. */ if (IOObjectIsEqualTo((io_object_t) item->dev, device)) { @@ -674,7 +687,7 @@ SDL_SYS_HapticQuit(void) IOObjectRelease(item->dev); SDL_free(item); } - numhaptics = 0; + numhaptics = -1; } From 1615891a75cf0b010b8ce3571416383519a78356 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Fri, 7 Feb 2014 09:35:33 -0500 Subject: [PATCH 293/402] slight adjustment to the hot plug test to allow it to be run with hap tics disabled --- test/testhotplug.c | 64 +++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/test/testhotplug.c b/test/testhotplug.c index 8c1cec49de..328a8eef4d 100644 --- a/test/testhotplug.c +++ b/test/testhotplug.c @@ -19,7 +19,7 @@ #include "SDL.h" #include "SDL_haptic.h" -#ifndef SDL_JOYSTICK_DISABLED +#if !defined SDL_JOYSTICK_DISABLED && !defined SDL_HAPTIC_DISABLED int main(int argc, char *argv[]) @@ -28,14 +28,27 @@ main(int argc, char *argv[]) SDL_Haptic *haptic = NULL; SDL_JoystickID instance = -1; SDL_bool keepGoing = SDL_TRUE; + int i; + SDL_bool enable_haptic = SDL_TRUE; + Uint32 init_subsystems = SDL_INIT_VIDEO | SDL_INIT_JOYSTICK; + + for (i = 1; i < argc; ++i) { + if (SDL_strcasecmp(argv[i], "--nohaptic") == 0) { + enable_haptic = SDL_FALSE; + } + } + if(enable_haptic) { + init_subsystems |= SDL_INIT_HAPTIC; + } + /* Enable standard application logging */ SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO); SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1"); /* Initialize SDL (Note: video is required to start event loop) */ - if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC) < 0) { + if (SDL_Init(init_subsystems) < 0) { SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError()); exit(1); } @@ -43,7 +56,8 @@ main(int argc, char *argv[]) //SDL_CreateWindow("Dummy", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 128, 128, 0); SDL_Log("There are %d joysticks at startup\n", SDL_NumJoysticks()); - SDL_Log("There are %d haptic devices at startup\n", SDL_NumHaptics()); + if (enable_haptic) + SDL_Log("There are %d haptic devices at startup\n", SDL_NumHaptics()); while(keepGoing) { @@ -65,25 +79,28 @@ main(int argc, char *argv[]) joystick = SDL_JoystickOpen(event.jdevice.which); instance = SDL_JoystickInstanceID(joystick); SDL_Log("Joy Added : %d : %s\n", event.jdevice.which, SDL_JoystickName(joystick)); - if (SDL_JoystickIsHaptic(joystick)) + if (enable_haptic) { - haptic = SDL_HapticOpenFromJoystick(joystick); - if (haptic) + if (SDL_JoystickIsHaptic(joystick)) { - SDL_Log("Joy Haptic Opened\n"); - if (SDL_HapticRumbleInit( haptic ) != 0) + haptic = SDL_HapticOpenFromJoystick(joystick); + if (haptic) { - SDL_Log("Could not init Rumble!: %s\n", SDL_GetError()); - SDL_HapticClose(haptic); - haptic = NULL; + SDL_Log("Joy Haptic Opened\n"); + if (SDL_HapticRumbleInit( haptic ) != 0) + { + SDL_Log("Could not init Rumble!: %s\n", SDL_GetError()); + SDL_HapticClose(haptic); + haptic = NULL; + } + } else { + SDL_Log("Joy haptic open FAILED!: %s\n", SDL_GetError()); } - } else { - SDL_Log("Joy haptic open FAILED!: %s\n", SDL_GetError()); } - } - else - { - SDL_Log("No haptic found\n"); + else + { + SDL_Log("No haptic found\n"); + } } } break; @@ -92,7 +109,7 @@ main(int argc, char *argv[]) { SDL_Log("Joy Removed: %d\n", event.jdevice.which); instance = -1; - if(haptic) + if(enable_haptic && haptic) { SDL_HapticClose(haptic); haptic = NULL; @@ -105,13 +122,14 @@ main(int argc, char *argv[]) break; case SDL_JOYAXISMOTION: // SDL_Log("Axis Move: %d\n", event.jaxis.axis); - SDL_HapticRumblePlay(haptic, 0.2, 250); + if (enable_haptic) + SDL_HapticRumblePlay(haptic, 0.25, 250); break; case SDL_JOYBUTTONDOWN: SDL_Log("Button Press: %d\n", event.jbutton.button); - if(haptic) + if(enable_haptic && haptic) { - SDL_HapticRumblePlay(haptic, 0.2, 250); + SDL_HapticRumblePlay(haptic, 0.25, 250); } if (event.jbutton.button == 0) { SDL_Log("Exiting due to button press of button 0\n"); @@ -125,7 +143,7 @@ main(int argc, char *argv[]) } } - SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); + SDL_Quit(); return 0; } @@ -134,7 +152,7 @@ main(int argc, char *argv[]) int main(int argc, char *argv[]) { - SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick support.\n"); + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL compiled without Joystick and haptic support.\n"); return 1; } From ba80787bb8e15ba3ab06cbe7f34a7bd0f3b49345 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 7 Feb 2014 11:52:35 -0500 Subject: [PATCH 294/402] Tell Clang's static analysis that SDL_assert() is an assertion handler. This lets it know, for example, that when you do this... SDL_assert(ptr != NULL); ...that (ptr) is definitely not NULL at this point in the program, for the sake of static analysis. While a buggy program could definitely trigger this assertion, Clang assumes your assertion check is covering it and won't report possible NULL dereferences after this point. Since SDL_assert might continue if the user clicks "ignore", without this change Clang would notice you checked for NULL (meaning that NULL is a real possibility here) and still wrote code outside of that test branch that dereferences the pointer, and thus would always trigger false positives. Static analysis is fun! --- include/SDL_assert.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/include/SDL_assert.h b/include/SDL_assert.h index 4441dbfefb..57a4f86472 100644 --- a/include/SDL_assert.h +++ b/include/SDL_assert.h @@ -120,7 +120,14 @@ typedef struct SDL_assert_data /* Never call this directly. Use the SDL_assert* macros. */ extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *, const char *, - const char *, int); + const char *, int) +#if defined(__clang__) && __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +; /* the do {} while(0) avoids dangling else problems: if (x) SDL_assert(y); else blah(); From adf524dc290aca9abb53f49afa75b9a0b070475b Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 7 Feb 2014 11:55:13 -0500 Subject: [PATCH 295/402] Make non-Clang compilers happy. --- include/SDL_assert.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/SDL_assert.h b/include/SDL_assert.h index 57a4f86472..42348f7d13 100644 --- a/include/SDL_assert.h +++ b/include/SDL_assert.h @@ -121,12 +121,14 @@ typedef struct SDL_assert_data extern DECLSPEC SDL_assert_state SDLCALL SDL_ReportAssertion(SDL_assert_data *, const char *, const char *, int) -#if defined(__clang__) && __has_feature(attribute_analyzer_noreturn) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) /* this tells Clang's static analysis that we're a custom assert function, and that the analyzer should assume the condition was always true past this SDL_assert test. */ __attribute__((analyzer_noreturn)) #endif +#endif ; /* the do {} while(0) avoids dangling else problems: From 804278a7bc718ee13093ca1f7343f48b776b9087 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 7 Feb 2014 12:03:02 -0500 Subject: [PATCH 296/402] Updated README-macosx.txt to note new minimum requirements, end of PowerPC. --- README-macosx.txt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README-macosx.txt b/README-macosx.txt index 021b14021d..4d9378fdd9 100644 --- a/README-macosx.txt +++ b/README-macosx.txt @@ -17,15 +17,19 @@ process: sudo make install You can also build SDL as a Universal library (a single binary for both -PowerPC and Intel architectures), on Mac OS X 10.4 and newer, by using +32-bit and 64-bit Intel architectures), on Mac OS X 10.7 and newer, by using the fatbuild.sh script in build-scripts: sh build-scripts/fatbuild.sh sudo build-scripts/fatbuild.sh install -This script builds SDL with 10.2 ABI compatibility on PowerPC and 10.4 -ABI compatibility on Intel architectures. For best compatibility you +This script builds SDL with 10.5 ABI compatibility on i386 and 10.6 +ABI compatibility on x86_64 architectures. For best compatibility you should compile your application the same way. A script which wraps gcc to make this easy is provided in test/gcc-fat.sh +Please note that building SDL requires at least the 10.7 SDK (even if you +target back to 10.5 systems). PowerPC support for Mac OS X has been officially +dropped as of SDL 2.0.2. + To use the library once it's built, you essential have two possibilities: use the traditional autoconf/automake/make method, or use Xcode. From 1e41d739d256b5f713bd294f3dd08f7d2a8ac72f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 9 Feb 2014 01:49:01 -0800 Subject: [PATCH 297/402] Fixed bug 2354 - [ES 2.0] SDL_RenderClear clears render target with wrong color ny00 SDL_RenderClear clears a render target with the wrong color, if the opengles2 renderer driver is used and the target texture's format is SDL_PIXELFORMAT_ARGB8888. The bug is *not* reproduced if SDL_PIXELFORMAT_ABGR8888 is used as the texture format (the first from the renderer's list). It is further not reproduced using any of the following renderer drivers: opengl, opengles (apparently powered by Gallium3D), software. Finally, the correct color can be drawn using SDL_RenderFillRect (instead of SDL_RenderClear). A few details about the current setup: - OS: Ubuntu 12.04 for x86_64 - GPU: GeForce GTX 460 - GPU driver version: 331.20-0ubuntu1~xedgers~precise1 (from the xorg-edgers PPA) --- Seth Williams Sam, It appears that the clear just needs to take the render target format into consideration. Seth. --- src/render/opengles2/SDL_render_gles2.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index b9e67cd827..c0d1aeb0b4 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -1043,16 +1043,33 @@ CompareColors(Uint8 r1, Uint8 g1, Uint8 b1, Uint8 a1, static int GLES2_RenderClear(SDL_Renderer * renderer) { + Uint8 r, g, b, a; + GLES2_DriverContext *data = (GLES2_DriverContext *)renderer->driverdata; GLES2_ActivateRenderer(renderer); if (!CompareColors(data->clear_r, data->clear_g, data->clear_b, data->clear_a, renderer->r, renderer->g, renderer->b, renderer->a)) { - data->glClearColor((GLfloat) renderer->r * inv255f, - (GLfloat) renderer->g * inv255f, - (GLfloat) renderer->b * inv255f, - (GLfloat) renderer->a * inv255f); + + /* Select the color to clear with */ + g = renderer->g; + a = renderer->a; + + if (renderer->target && + (renderer->target->format == SDL_PIXELFORMAT_ARGB8888 || + renderer->target->format == SDL_PIXELFORMAT_RGB888)) { + r = renderer->b; + b = renderer->r; + } else { + r = renderer->r; + b = renderer->b; + } + + data->glClearColor((GLfloat) r * inv255f, + (GLfloat) g * inv255f, + (GLfloat) b * inv255f, + (GLfloat) a * inv255f); data->clear_r = renderer->r; data->clear_g = renderer->g; data->clear_b = renderer->b; From cbabefca5501e592ab7b02c40bc855c9138b8c43 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 9 Feb 2014 01:56:41 -0800 Subject: [PATCH 298/402] Fixed bug 2385 - error: unknown type name 'IDirect3DDevice9' Sandu Liviu Catalin I'm unable to compile the latest SDL (directly from the repository) even though I disabled every DirectX option since I don't need DirectX. I allways het these errors: D:\DevLibs\SDL\src\render\direct3d\SDL_render_d3d.c:1897:1: error: unknown type name 'IDirect3DDevice9' D:\DevLibs\SDL\src\render\direct3d\SDL_render_d3d.c:1898:25: error: unknown type name 'SDL_Renderer' --- src/render/direct3d/SDL_render_d3d.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index f02b41e25d..63dfff61cf 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -20,6 +20,9 @@ */ #include "../../SDL_internal.h" +#include "SDL_render.h" +#include "SDL_system.h" + #if SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED #include "../../core/windows/SDL_windows.h" @@ -27,7 +30,6 @@ #include "SDL_hints.h" #include "SDL_loadso.h" #include "SDL_syswm.h" -#include "SDL_system.h" #include "../SDL_sysrender.h" #include "../../video/windows/SDL_windowsvideo.h" @@ -1916,6 +1918,6 @@ SDL_RenderGetD3D9Device(SDL_Renderer * renderer) return device; } -#endif +#endif /* __WIN32__ */ /* vi: set ts=4 sw=4 expandtab: */ From 39c8523363e6555d8331af2197493f6d492f0de9 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 9 Feb 2014 02:04:40 -0800 Subject: [PATCH 299/402] Possibly fixed bug 2250 - Cmake: SDL2 Doesn't install DLLs on Windows ernest.lee [Exec] CMake Error at cmake_install.cmake:151 (FILE): [13:37:43][Exec] file INSTALL cannot find [13:37:43][Exec] "C:/TeamCity/buildAgent/work/2e3d17a492e75daf/Build/libSDL2.so". The cmake INSTALL project doesn't work because it uses Linux so shared library paths. Windows uses dlls and I think cygwin also uses dlls. I've included this patch. Can you check if it works? --- CMakeLists.txt | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eb37448eda..809459b396 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1277,14 +1277,13 @@ endforeach() list(APPEND INCLUDE_FILES ${BIN_INCLUDE_FILES}) install(FILES ${INCLUDE_FILES} DESTINATION include/SDL2) -if(SDL_SHARED) - install(CODE " - execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink - \"libSDL2-2.0.so\" \"libSDL2.so\")") - install(FILES ${SDL2_BINARY_DIR}/libSDL2.so DESTINATION "lib${LIB_SUFFIX}") -endif() - if(NOT WINDOWS OR CYGWIN) + if(SDL_SHARED) + install(CODE " + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink + \"libSDL2-2.0.so\" \"libSDL2.so\")") + install(FILES ${SDL2_BINARY_DIR}/libSDL2.so DESTINATION "lib${LIB_SUFFIX}") + endif() if(FREEBSD) # FreeBSD uses ${PREFIX}/libdata/pkgconfig install(FILES ${SDL2_BINARY_DIR}/sdl2.pc DESTINATION "libdata/pkgconfig") @@ -1295,5 +1294,7 @@ if(NOT WINDOWS OR CYGWIN) install(PROGRAMS ${SDL2_BINARY_DIR}/sdl2-config DESTINATION bin) # TODO: what about the .spec file? Is it only needed for RPM creation? install(FILES "${SDL2_SOURCE_DIR}/sdl2.m4" DESTINATION "share/aclocal") +else() + install(TARGETS SDL2 RUNTIME DESTINATION bin) endif() From c50e448faa358c554ee525f9cb30666e902d04ac Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 9 Feb 2014 02:42:59 -0800 Subject: [PATCH 300/402] Added Windows entry for the bluetooth OUYA controller --- src/joystick/SDL_gamecontrollerdb.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index c9545aad5e..6409819b55 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -36,10 +36,12 @@ static const char *s_ControllerMappings [] = "ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", "6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", "6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ + "4d6963726f736f66742050432d6a6f79,OUYA Controller,a:a3,b:b1,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a5,righty:a4,x:a2,y:b2,", + ""4d6963726f736f66742050432d6a6f79,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a5,righty:a4,x:b1,y:b2,", "88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,", "4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", "25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,", - "4c05c405000000000000504944564944,PS4 Controller,x:a4,a:a3,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a3,rightshoulder:b6,rightshoulder:b5,righttrigger:a4,leftstick:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,", + "4c05c405000000000000504944564944,PS4 Controller,a:a3,a:b1,b:b2,back:b8,dpdown:h0.0,dpdown:h0.4,dpleft:h0.8,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,guide:b12,leftshoulder:b4,leftshoulder:h0.0,leftstick:b10,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightshoulder:b6,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:a4,x:b0,y:b3,", "xinput,X360 Controller,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,", #elif defined(__MACOSX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", @@ -48,7 +50,7 @@ static const char *s_ControllerMappings [] = "6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", "6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ "4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", - "4c05000000000000c405000000000000,PS4 Controller,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpleft:h0.8,dpdown:h0.0,dpdown:h0.4,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,leftshoulder:h0.0,leftshoulder:b4,lefttrigger:a3,rightshoulder:b6,rightshoulder:b5,righttrigger:a4,leftstick:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5,", + "4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.0,dpdown:h0.4,dpleft:h0.8,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,guide:b12,leftshoulder:b4,leftshoulder:h0.0,leftstick:b10,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightshoulder:b6,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", "5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", #elif defined(__LINUX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", From 8ca51ec45235d7a53212724c1d7ed1a5809647d5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 9 Feb 2014 03:09:04 -0800 Subject: [PATCH 301/402] Fixed the OUYA controller mapping on Windows --- src/joystick/SDL_gamecontrollerdb.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 6409819b55..2e0cd0ab46 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -36,8 +36,7 @@ static const char *s_ControllerMappings [] = "ffff0000000000000000504944564944,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", "6d0416c2000000000000504944564944,Generic DirectInput Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", "6d0419c2000000000000504944564944,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ - "4d6963726f736f66742050432d6a6f79,OUYA Controller,a:a3,b:b1,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a5,righty:a4,x:a2,y:b2,", - ""4d6963726f736f66742050432d6a6f79,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a5,righty:a4,x:b1,y:b2,", + "4d6963726f736f66742050432d6a6f79,OUYA Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a5,righty:a4,x:b1,y:b2,", "88880803000000000000504944564944,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,", "4c056802000000000000504944564944,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", "25090500000000000000504944564944,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,", From 0de9c59ed4b583e9fb99c606a784d29a00d0743e Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 9 Feb 2014 03:09:56 -0800 Subject: [PATCH 302/402] Updated SDL to version 2.0.2 --- CMakeLists.txt | 6 +++--- WhatsNew.txt | 13 +++++++++++-- Xcode/SDL/Info-Framework.plist | 4 ++-- configure | 4 ++-- configure.in | 4 ++-- debian/changelog | 6 ++++++ include/SDL_version.h | 2 +- src/main/windows/version.rc | 8 ++++---- 8 files changed, 31 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 809459b396..e81c8f9ddb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,9 +29,9 @@ include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake) # set SDL_BINARY_AGE and SDL_INTERFACE_AGE to 0. set(SDL_MAJOR_VERSION 2) set(SDL_MINOR_VERSION 0) -set(SDL_MICRO_VERSION 1) -set(SDL_INTERFACE_AGE 1) -set(SDL_BINARY_AGE 1) +set(SDL_MICRO_VERSION 2) +set(SDL_INTERFACE_AGE 0) +set(SDL_BINARY_AGE 2) set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}") # Calculate a libtool-like version number diff --git a/WhatsNew.txt b/WhatsNew.txt index db2ad8fb24..bb10895bf6 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -5,11 +5,19 @@ This is a list of major changes in SDL's version history. 2.0.2: --------------------------------------------------------------------------- General: +* Added SDL_GL_ResetAttributes() to reset OpenGL attributes to default values * Added an API to load a database of Game Controller mappings from a file: SDL_GameControllerAddMappingsFromFile +* Added game controller mappings for the PS4 and OUYA controllers +* Added SDL_GetDefaultAssertionHandler() and SDL_GetAssertionHandler() +* Added SDL_DetachThread() +* Added SDL_HasAVX() to determine if the CPU has AVX features +* Added SDL_vsscanf(), SDL_acos(), and SDL_asin() to the stdlib routines * EGL can now create/manage OpenGL and OpenGL ES 1.x/2.x contexts, and share them using SDL_GL_SHARE_WITH_CURRENT_CONTEXT -* Added testgles2. testgl2 does not need to link with libGL anymore. +* testgl2 does not need to link with libGL anymore +* Added testgles2 test program to demonstrate working with OpenGL ES 2.0 +* Added controllermap test program to visually map a game controller Windows: * Support for OpenGL ES 2.x contexts using either WGL or EGL (natively via @@ -23,7 +31,8 @@ Android: Linux: * Fixed fullscreen and focused behavior when receiving NotifyGrab events -* Wayland support +* Added experimental Wayland and Mir support, disabled by default + --------------------------------------------------------------------------- 2.0.1: diff --git a/Xcode/SDL/Info-Framework.plist b/Xcode/SDL/Info-Framework.plist index 696ef99d96..656742a6b9 100644 --- a/Xcode/SDL/Info-Framework.plist +++ b/Xcode/SDL/Info-Framework.plist @@ -19,10 +19,10 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.0.1 + 2.0.2 CFBundleSignature SDLX CFBundleVersion - 2.0.1 + 2.0.2 diff --git a/configure b/configure index ed07939016..ccb585e25b 100755 --- a/configure +++ b/configure @@ -2671,9 +2671,9 @@ orig_CFLAGS="$CFLAGS" # SDL_MAJOR_VERSION=2 SDL_MINOR_VERSION=0 -SDL_MICRO_VERSION=1 +SDL_MICRO_VERSION=2 SDL_INTERFACE_AGE=0 -SDL_BINARY_AGE=1 +SDL_BINARY_AGE=2 SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION diff --git a/configure.in b/configure.in index 68a9586ec0..3c7adcba18 100644 --- a/configure.in +++ b/configure.in @@ -20,9 +20,9 @@ dnl Set various version strings - taken gratefully from the GTk sources # SDL_MAJOR_VERSION=2 SDL_MINOR_VERSION=0 -SDL_MICRO_VERSION=1 +SDL_MICRO_VERSION=2 SDL_INTERFACE_AGE=0 -SDL_BINARY_AGE=1 +SDL_BINARY_AGE=2 SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION AC_SUBST(SDL_MAJOR_VERSION) diff --git a/debian/changelog b/debian/changelog index 8e9dd49bcf..eae34b194b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libsdl2 (2.0.2) UNRELEASED; urgency=low + + * Updated SDL to version 2.0.2 + + -- Sam Lantinga Sun, 9 Feb 2014 2:55:59 -0800 + libsdl2 (2.0.1) UNRELEASED; urgency=low * Updated SDL to version 2.0.1 diff --git a/include/SDL_version.h b/include/SDL_version.h index 66acca99c5..22e0f5ea64 100644 --- a/include/SDL_version.h +++ b/include/SDL_version.h @@ -59,7 +59,7 @@ typedef struct SDL_version */ #define SDL_MAJOR_VERSION 2 #define SDL_MINOR_VERSION 0 -#define SDL_PATCHLEVEL 1 +#define SDL_PATCHLEVEL 2 /** * \brief Macro to determine SDL version program was compiled against. diff --git a/src/main/windows/version.rc b/src/main/windows/version.rc index 6120e25522..f9c528edc6 100644 --- a/src/main/windows/version.rc +++ b/src/main/windows/version.rc @@ -9,8 +9,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 2,0,1,0 - PRODUCTVERSION 2,0,1,0 + FILEVERSION 2,0,2,0 + PRODUCTVERSION 2,0,2,0 FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x40004L @@ -23,12 +23,12 @@ BEGIN BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "SDL\0" - VALUE "FileVersion", "2, 0, 1, 0\0" + VALUE "FileVersion", "2, 0, 2, 0\0" VALUE "InternalName", "SDL\0" VALUE "LegalCopyright", "Copyright © 2014 Sam Lantinga\0" VALUE "OriginalFilename", "SDL2.dll\0" VALUE "ProductName", "Simple DirectMedia Layer\0" - VALUE "ProductVersion", "2, 0, 1, 0\0" + VALUE "ProductVersion", "2, 0, 2, 0\0" END END BLOCK "VarFileInfo" From 124c64d8f9995bb4372e7f18053820284f694cc3 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 9 Feb 2014 15:20:41 -0500 Subject: [PATCH 303/402] No need to use a render target here. --- test/controllermap.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/test/controllermap.c b/test/controllermap.c index 2366afea96..aa6c1cb329 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -108,7 +108,7 @@ WatchJoystick(SDL_Joystick * joystick) { SDL_Window *window = NULL; SDL_Renderer *screen = NULL; - SDL_Texture *target, *background, *button, *axis, *marker; + SDL_Texture *background, *button, *axis, *marker; const char *name = NULL; SDL_bool retval = SDL_FALSE; SDL_bool done = SDL_FALSE, next=SDL_FALSE; @@ -159,7 +159,6 @@ WatchJoystick(SDL_Joystick * joystick) return SDL_FALSE; } - target = SDL_CreateTexture(screen, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_TARGET, MAP_WIDTH, MAP_HEIGHT); background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); button = LoadTexture(screen, "button.bmp", SDL_TRUE); axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); @@ -226,13 +225,10 @@ WatchJoystick(SDL_Joystick * joystick) } } - SDL_SetRenderTarget(screen, target); SDL_RenderCopy(screen, background, NULL, NULL); SDL_SetTextureAlphaMod(marker, alpha); SDL_SetTextureColorMod(marker, 10, 255, 21); SDL_RenderCopyEx(screen, marker, NULL, &dst, step->angle, NULL, 0); - SDL_SetRenderTarget(screen, NULL); - SDL_RenderCopy(screen, target, NULL, NULL); SDL_RenderPresent(screen); if (SDL_PollEvent(&event)) { From eefa1ea9f681e8418d406850ba1154ecab65188f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 10 Feb 2014 01:41:58 -0500 Subject: [PATCH 304/402] Replace testgamecontroller visualization mode with something more useful. --- test/testgamecontroller.c | 148 +++++++++++++++++++++++--------------- 1 file changed, 92 insertions(+), 56 deletions(-) diff --git a/test/testgamecontroller.c b/test/testgamecontroller.c index 440721dc84..e7c1e0575d 100644 --- a/test/testgamecontroller.c +++ b/test/testgamecontroller.c @@ -24,20 +24,10 @@ #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 480 #else -#define SCREEN_WIDTH 640 -#define SCREEN_HEIGHT 480 +#define SCREEN_WIDTH 512 +#define SCREEN_HEIGHT 317 #endif -#define MAX_NUM_AXES 6 -#define MAX_NUM_HATS 2 - -static void -DrawRect(SDL_Renderer *r, const int x, const int y, const int w, const int h) -{ - const SDL_Rect area = { x, y, w, h }; - SDL_RenderFillRect(r, &area); -} - static const char * ControllerAxisName(const SDL_GameControllerAxis axis) { @@ -83,13 +73,71 @@ ControllerButtonName(const SDL_GameControllerButton button) } } +static SDL_Texture * +LoadTexture(SDL_Renderer *renderer, char *file, SDL_bool transparent) +{ + SDL_Surface *temp = NULL; + SDL_Texture *texture = NULL; + + temp = SDL_LoadBMP(file); + if (temp == NULL) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s", file, SDL_GetError()); + } else { + /* Set transparent pixel as the pixel at (0,0) */ + if (transparent) { + SDL_assert(!temp->format->palette); + SDL_assert(temp->format->BitsPerPixel == 24); + SDL_SetColorKey(temp, SDL_TRUE, (*(Uint32 *) temp->pixels) & 0x00FFFFFF); + } + + texture = SDL_CreateTextureFromSurface(renderer, temp); + if (!texture) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create texture: %s\n", SDL_GetError()); + } + } + if (temp) { + SDL_FreeSurface(temp); + } + return texture; +} + SDL_bool WatchGameController(SDL_GameController * gamecontroller) { + /* This is indexed by SDL_GameControllerButton. */ + static const struct { int x; int y; } button_positions[] = { + {387, 167}, /* A */ + {431, 132}, /* B */ + {342, 132}, /* X */ + {389, 101}, /* Y */ + {174, 132}, /* BACK */ + {233, 132}, /* GUIDE */ + {289, 132}, /* START */ + {75, 154}, /* LEFTSTICK */ + {305, 230}, /* RIGHTSTICK */ + {77, 40}, /* LEFTSHOULDER */ + {396, 36}, /* RIGHTSHOULDER */ + {154, 188}, /* DPAD_UP */ + {154, 249}, /* DPAD_DOWN */ + {116, 217}, /* DPAD_LEFT */ + {186, 217}, /* DPAD_RIGHT */ + }; + + /* This is indexed by SDL_GameControllerAxis. */ + static const struct { int x; int y; double angle; } axis_positions[] = { + {75, 154, 0.0}, /* LEFTX */ + {75, 154, 90.0}, /* LEFTY */ + {305, 230, 0.0}, /* RIGHTX */ + {305, 230, 90.0}, /* RIGHTY */ + {91, 0, 90.0}, /* TRIGGERLEFT */ + {375, 0, 90.0}, /* TRIGGERRIGHT */ + }; + const char *name = SDL_GameControllerName(gamecontroller); const char *basetitle = "Game Controller Test: "; const size_t titlelen = SDL_strlen(basetitle) + SDL_strlen(name) + 1; char *title = (char *)SDL_malloc(titlelen); + SDL_Texture *background, *button, *axis; SDL_Window *window = NULL; SDL_Renderer *screen = NULL; SDL_bool retval = SDL_FALSE; @@ -101,7 +149,7 @@ WatchGameController(SDL_GameController * gamecontroller) SDL_snprintf(title, titlelen, "%s%s", basetitle, name); } - /* Create a window to display controller axis position */ + /* Create a window to display controller state */ window = SDL_CreateWindow(title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, 0); @@ -122,6 +170,21 @@ WatchGameController(SDL_GameController * gamecontroller) SDL_RenderPresent(screen); SDL_RaiseWindow(window); + background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); + button = LoadTexture(screen, "button.bmp", SDL_TRUE); + axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); + + if (!background || !button || !axis) { + SDL_DestroyRenderer(screen); + SDL_DestroyWindow(window); + return SDL_FALSE; + } + SDL_SetTextureColorMod(button, 10, 255, 21); + SDL_SetTextureColorMod(axis, 10, 255, 21); + + /* !!! FIXME: */ + /*SDL_RenderSetLogicalSize(screen, background->w, background->h);*/ + /* Print info about the controller we are watching */ SDL_Log("Watching controller %s\n", name ? name : "Unknown Controller"); @@ -130,26 +193,10 @@ WatchGameController(SDL_GameController * gamecontroller) /* blank screen, set up for drawing this frame. */ SDL_SetRenderDrawColor(screen, 0x00, 0x00, 0x00, SDL_ALPHA_OPAQUE); SDL_RenderClear(screen); + SDL_RenderCopy(screen, background, NULL, NULL); while (SDL_PollEvent(&event)) { switch (event.type) { - case SDL_CONTROLLERAXISMOTION: - SDL_Log("Controller %d axis %d ('%s') value: %d\n", - event.caxis.which, - event.caxis.axis, - ControllerAxisName((SDL_GameControllerAxis)event.caxis.axis), - event.caxis.value); - break; - case SDL_CONTROLLERBUTTONDOWN: - SDL_Log("Controller %d button %d ('%s') down\n", - event.cbutton.which, event.cbutton.button, - ControllerButtonName((SDL_GameControllerButton)event.cbutton.button)); - break; - case SDL_CONTROLLERBUTTONUP: - SDL_Log("Controller %d button %d ('%s') up\n", - event.cbutton.which, event.cbutton.button, - ControllerButtonName((SDL_GameControllerButton)event.cbutton.button)); - break; case SDL_KEYDOWN: if (event.key.keysym.sym != SDLK_ESCAPE) { break; @@ -162,40 +209,29 @@ WatchGameController(SDL_GameController * gamecontroller) break; } } + /* Update visual controller state */ - SDL_SetRenderDrawColor(screen, 0x00, 0xFF, 0x00, SDL_ALPHA_OPAQUE); - for (i = 0; i (SCREEN_WIDTH - 16)) { - x = SCREEN_WIDTH - 16; + for (i = 0; i < SDL_CONTROLLER_AXIS_MAX; ++i) { + const Sint16 deadzone = 8000; /* !!! FIXME: real deadzone */ + const Sint16 value = SDL_GameControllerGetAxis(gamecontroller, (SDL_GameControllerAxis)(i)); + if (value < -deadzone) { + const SDL_Rect dst = { axis_positions[i].x, axis_positions[i].y, 50, 50 }; + const double angle = axis_positions[i].angle; + SDL_RenderCopyEx(screen, axis, NULL, &dst, angle, NULL, 0); + } else if (value > deadzone) { + const SDL_Rect dst = { axis_positions[i].x, axis_positions[i].y, 50, 50 }; + const double angle = axis_positions[i].angle + 180.0; + SDL_RenderCopyEx(screen, axis, NULL, &dst, angle, NULL, 0); } - y = (((int) SDL_GameControllerGetAxis(gamecontroller, (SDL_GameControllerAxis)(i * 2 + 1))) + 32768); - y *= SCREEN_HEIGHT; - y /= 65535; - if (y < 0) { - y = 0; - } else if (y > (SCREEN_HEIGHT - 16)) { - y = SCREEN_HEIGHT - 16; - } - - DrawRect(screen, x, y, 16, 16); } - SDL_SetRenderDrawColor(screen, 0x00, 0x00, 0xFF, SDL_ALPHA_OPAQUE); - SDL_RenderPresent(screen); if (!SDL_GameControllerGetAttached(gamecontroller)) { From 12545c69754394b3fe8383969b3b5570d514e94a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 10 Feb 2014 01:43:01 -0500 Subject: [PATCH 305/402] Removed unused function. --- test/controllermap.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/test/controllermap.c b/test/controllermap.c index aa6c1cb329..e72174ca17 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -96,13 +96,6 @@ LoadTexture(SDL_Renderer *renderer, char *file, SDL_bool transparent) return texture; } -static void -DrawRect(SDL_Renderer *r, const int x, const int y, const int w, const int h) -{ - const SDL_Rect area = { x, y, w, h }; - SDL_RenderFillRect(r, &area); -} - static SDL_bool WatchJoystick(SDL_Joystick * joystick) { From b6309d6444cde85ff4b4fd13203cf43b78aad98e Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 10 Feb 2014 09:26:22 -0300 Subject: [PATCH 306/402] Backed out 51935d107921 The render target usage in controllermap is required if you are forced to use the app at a different resolution than the one the art has been made for, for example on Android, where you don't control the resolution. (The coordinates for each button are hardcoded to the art size, and appear out of place otherwise) --- test/controllermap.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/controllermap.c b/test/controllermap.c index e72174ca17..f990ff4f4c 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -101,7 +101,7 @@ WatchJoystick(SDL_Joystick * joystick) { SDL_Window *window = NULL; SDL_Renderer *screen = NULL; - SDL_Texture *background, *button, *axis, *marker; + SDL_Texture *target, *background, *button, *axis, *marker; const char *name = NULL; SDL_bool retval = SDL_FALSE; SDL_bool done = SDL_FALSE, next=SDL_FALSE; @@ -152,6 +152,7 @@ WatchJoystick(SDL_Joystick * joystick) return SDL_FALSE; } + target = SDL_CreateTexture(screen, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_TARGET, MAP_WIDTH, MAP_HEIGHT); background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); button = LoadTexture(screen, "button.bmp", SDL_TRUE); axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); @@ -218,10 +219,13 @@ WatchJoystick(SDL_Joystick * joystick) } } + SDL_SetRenderTarget(screen, target); SDL_RenderCopy(screen, background, NULL, NULL); SDL_SetTextureAlphaMod(marker, alpha); SDL_SetTextureColorMod(marker, 10, 255, 21); SDL_RenderCopyEx(screen, marker, NULL, &dst, step->angle, NULL, 0); + SDL_SetRenderTarget(screen, NULL); + SDL_RenderCopy(screen, target, NULL, NULL); SDL_RenderPresent(screen); if (SDL_PollEvent(&event)) { From f2463b82034bab0522c4d22ffdfe167653c67be6 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 10 Feb 2014 11:29:48 -0500 Subject: [PATCH 307/402] Make controllermap, etc, work on platforms with hardcoded window sizes. This makes sure everything renders correctly, even if, say, an Android device gives you a certain "window" size no matter what you ask for. --- test/controllermap.c | 14 ++++++++------ test/testgamecontroller.c | 5 ++++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/test/controllermap.c b/test/controllermap.c index f990ff4f4c..e6e9607ce4 100644 --- a/test/controllermap.c +++ b/test/controllermap.c @@ -101,7 +101,7 @@ WatchJoystick(SDL_Joystick * joystick) { SDL_Window *window = NULL; SDL_Renderer *screen = NULL; - SDL_Texture *target, *background, *button, *axis, *marker; + SDL_Texture *background, *button, *axis, *marker; const char *name = NULL; SDL_bool retval = SDL_FALSE; SDL_bool done = SDL_FALSE, next=SDL_FALSE; @@ -152,12 +152,14 @@ WatchJoystick(SDL_Joystick * joystick) return SDL_FALSE; } - target = SDL_CreateTexture(screen, SDL_PIXELFORMAT_RGB888, SDL_TEXTUREACCESS_TARGET, MAP_WIDTH, MAP_HEIGHT); background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); button = LoadTexture(screen, "button.bmp", SDL_TRUE); axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); SDL_RaiseWindow(window); + /* scale for platforms that don't give you the window size you asked for. */ + SDL_RenderSetLogicalSize(screen, SCREEN_WIDTH, SCREEN_HEIGHT); + /* Print info about the joystick we are watching */ name = SDL_JoystickName(joystick); SDL_Log("Watching joystick %d: (%s)\n", SDL_JoystickInstanceID(joystick), @@ -206,7 +208,9 @@ WatchJoystick(SDL_Joystick * joystick) dst.y = step->y; SDL_QueryTexture(marker, NULL, NULL, &dst.w, &dst.h); next=SDL_FALSE; - + + SDL_SetRenderDrawColor(screen, 0xFF, 0xFF, 0xFF, SDL_ALPHA_OPAQUE); + while (!done && !next) { if (SDL_GetTicks() - alpha_ticks > 5) { alpha_ticks = SDL_GetTicks(); @@ -219,13 +223,11 @@ WatchJoystick(SDL_Joystick * joystick) } } - SDL_SetRenderTarget(screen, target); + SDL_RenderClear(screen); SDL_RenderCopy(screen, background, NULL, NULL); SDL_SetTextureAlphaMod(marker, alpha); SDL_SetTextureColorMod(marker, 10, 255, 21); SDL_RenderCopyEx(screen, marker, NULL, &dst, step->angle, NULL, 0); - SDL_SetRenderTarget(screen, NULL); - SDL_RenderCopy(screen, target, NULL, NULL); SDL_RenderPresent(screen); if (SDL_PollEvent(&event)) { diff --git a/test/testgamecontroller.c b/test/testgamecontroller.c index e7c1e0575d..f762ce622f 100644 --- a/test/testgamecontroller.c +++ b/test/testgamecontroller.c @@ -170,6 +170,9 @@ WatchGameController(SDL_GameController * gamecontroller) SDL_RenderPresent(screen); SDL_RaiseWindow(window); + /* scale for platforms that don't give you the window size you asked for. */ + SDL_RenderSetLogicalSize(screen, SCREEN_WIDTH, SCREEN_HEIGHT); + background = LoadTexture(screen, "controllermap.bmp", SDL_FALSE); button = LoadTexture(screen, "button.bmp", SDL_TRUE); axis = LoadTexture(screen, "axis.bmp", SDL_TRUE); @@ -191,7 +194,7 @@ WatchGameController(SDL_GameController * gamecontroller) /* Loop, getting controller events! */ while (!done) { /* blank screen, set up for drawing this frame. */ - SDL_SetRenderDrawColor(screen, 0x00, 0x00, 0x00, SDL_ALPHA_OPAQUE); + SDL_SetRenderDrawColor(screen, 0xFF, 0xFF, 0xFF, SDL_ALPHA_OPAQUE); SDL_RenderClear(screen); SDL_RenderCopy(screen, background, NULL, NULL); From e227556bcc8ae9d4b664af52f5184e81de8408e9 Mon Sep 17 00:00:00 2001 From: Edward Rudd Date: Mon, 10 Feb 2014 10:53:02 -0500 Subject: [PATCH 308/402] Fix Cmake so generated SOname matches autoconf's #. --- CMakeLists.txt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e81c8f9ddb..69bc73f6cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -37,9 +37,12 @@ set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}" # Calculate a libtool-like version number math(EXPR LT_CURRENT "${SDL_MICRO_VERSION} - ${SDL_INTERFACE_AGE}") math(EXPR LT_AGE "${SDL_BINARY_AGE} - ${SDL_INTERFACE_AGE}") +math(EXPR LT_MAJOR "${LT_CURRENT}- ${LT_AGE}") set(LT_REVISION "${SDL_INTERFACE_AGE}") set(LT_RELEASE "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}") -set(LT_VERSION "${LT_CURRENT}.${LT_REVISION}.${LT_AGE}") +set(LT_VERSION "${LT_MAJOR}.${LT_AGE}.${LT_REVISION}") + +message(STATUS "${LT_VERSION} :: ${LT_AGE} :: ${LT_REVISION} :: ${LT_CURRENT} :: ${LT_RELEASE}") # General settings & flags set(LIBRARY_OUTPUT_DIRECTORY "build") @@ -1236,12 +1239,12 @@ if(SDL_SHARED) if(UNIX) set_target_properties(SDL2 PROPERTIES VERSION ${LT_VERSION} - SOVERSION ${LT_CURRENT} + SOVERSION ${LT_REVISION} OUTPUT_NAME "SDL2-${LT_RELEASE}") else(UNIX) set_target_properties(SDL2 PROPERTIES VERSION ${SDL_VERSION} - SOVERSION ${LT_CURRENT} + SOVERSION ${LT_REVISION} OUTPUT_NAME "SDL2") endif() set(_INSTALL_LIBS "SDL2" ${_INSTALL_LIBS}) From 8779ccee67ed10344450f5c1b2f8c266997fe28e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 10 Feb 2014 12:47:26 -0500 Subject: [PATCH 309/402] Fixed DualShock 4 controller config on Mac OS X. --- src/joystick/SDL_gamecontrollerdb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 2e0cd0ab46..6c969d31df 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -49,7 +49,7 @@ static const char *s_ControllerMappings [] = "6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", "6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ "4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", - "4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.0,dpdown:h0.4,dpleft:h0.8,dpright:h0.0,dpright:h0.2,dpup:h0.0,dpup:h0.1,guide:b12,leftshoulder:b4,leftshoulder:h0.0,leftstick:b10,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightshoulder:b6,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "4c05000000000000c405000000000000,PS4 Controller,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,leftstick:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5," "5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", #elif defined(__LINUX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", From 524bbd42affe51294e5debf39ee97bf43a266123 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 10 Feb 2014 10:02:18 -0800 Subject: [PATCH 310/402] Fixed bug where a window created fullscreen and hidden would get activated and "shown" but never actually be visible. This is the case with the Steam In-Home Streaming client. --- src/video/windows/SDL_windowswindow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 061608d2e2..7bf9e55638 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -553,7 +553,7 @@ WIN_SetWindowFullscreen(_THIS, SDL_Window * window, SDL_VideoDisplay * display, } SetWindowLong(hwnd, GWL_STYLE, style); data->expected_resize = TRUE; - SetWindowPos(hwnd, top, x, y, w, h, SWP_NOCOPYBITS); + SetWindowPos(hwnd, top, x, y, w, h, SWP_NOCOPYBITS | SWP_NOACTIVATE); data->expected_resize = FALSE; } From 573eea5fa2d66c4c6a0d8e5680f91e35e219e301 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 10 Feb 2014 10:02:42 -0800 Subject: [PATCH 311/402] Exposed the font character size and SDLTest_DrawCharacter() to make it easier to do custom debug text layout --- include/SDL_test_font.h | 16 ++- src/test/SDL_test_font.c | 264 +++++++++++++++++++-------------------- 2 files changed, 147 insertions(+), 133 deletions(-) diff --git a/include/SDL_test_font.h b/include/SDL_test_font.h index dd19f07826..8d51d4a9b5 100644 --- a/include/SDL_test_font.h +++ b/include/SDL_test_font.h @@ -38,6 +38,20 @@ extern "C" { /* Function prototypes */ +#define FONT_CHARACTER_SIZE 8 + +/** + * \brief Draw a string in the currently set font. + * + * \param renderer The renderer to draw on. + * \param x The X coordinate of the upper left corner of the character. + * \param y The Y coordinate of the upper left corner of the character. + * \param c The character to draw. + * + * \returns Returns 0 on success, -1 on failure. + */ +int SDLTest_DrawCharacter( SDL_Renderer *renderer, int x, int y, char c ); + /** * \brief Draw a string in the currently set font. * @@ -48,7 +62,7 @@ extern "C" { * * \returns Returns 0 on success, -1 on failure. */ -int SDLTest_DrawString(SDL_Renderer * renderer, int x, int y, const char *s); +int SDLTest_DrawString( SDL_Renderer * renderer, int x, int y, const char *s ); /* Ends C function definitions when using C++ */ diff --git a/src/test/SDL_test_font.c b/src/test/SDL_test_font.c index 9e419e317e..a6bc40cefd 100644 --- a/src/test/SDL_test_font.c +++ b/src/test/SDL_test_font.c @@ -1569,7 +1569,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 128 0x80 '�' + * 128 0x80 '€' */ 0x7c, /* 01111100 */ 0xc6, /* 11000110 */ @@ -1581,7 +1581,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x78, /* 01111000 */ /* - * 129 0x81 '�' + * 129 0x81 '' */ 0xcc, /* 11001100 */ 0x00, /* 00000000 */ @@ -1593,7 +1593,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 130 0x82 '�' + * 130 0x82 '‚' */ 0x0c, /* 00001100 */ 0x18, /* 00011000 */ @@ -1605,7 +1605,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 131 0x83 '�' + * 131 0x83 'ƒ' */ 0x7c, /* 01111100 */ 0x82, /* 10000010 */ @@ -1617,7 +1617,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 132 0x84 '�' + * 132 0x84 '„' */ 0xc6, /* 11000110 */ 0x00, /* 00000000 */ @@ -1629,7 +1629,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 133 0x85 '�' + * 133 0x85 '…' */ 0x30, /* 00110000 */ 0x18, /* 00011000 */ @@ -1641,7 +1641,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 134 0x86 '�' + * 134 0x86 '†' */ 0x30, /* 00110000 */ 0x30, /* 00110000 */ @@ -1653,7 +1653,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 135 0x87 '�' + * 135 0x87 '‡' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -1665,7 +1665,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x38, /* 00111000 */ /* - * 136 0x88 '�' + * 136 0x88 'ˆ' */ 0x7c, /* 01111100 */ 0x82, /* 10000010 */ @@ -1677,7 +1677,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 137 0x89 '�' + * 137 0x89 '‰' */ 0xc6, /* 11000110 */ 0x00, /* 00000000 */ @@ -1689,7 +1689,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 138 0x8a '�' + * 138 0x8a 'Š' */ 0x30, /* 00110000 */ 0x18, /* 00011000 */ @@ -1701,7 +1701,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 139 0x8b '�' + * 139 0x8b '‹' */ 0x66, /* 01100110 */ 0x00, /* 00000000 */ @@ -1713,7 +1713,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 140 0x8c '�' + * 140 0x8c 'Œ' */ 0x7c, /* 01111100 */ 0x82, /* 10000010 */ @@ -1725,7 +1725,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 141 0x8d '�' + * 141 0x8d '' */ 0x30, /* 00110000 */ 0x18, /* 00011000 */ @@ -1737,7 +1737,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 142 0x8e '�' + * 142 0x8e 'Ž' */ 0xc6, /* 11000110 */ 0x38, /* 00111000 */ @@ -1749,7 +1749,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 143 0x8f '�' + * 143 0x8f '' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ @@ -1761,7 +1761,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 144 0x90 '�' + * 144 0x90 '' */ 0x18, /* 00011000 */ 0x30, /* 00110000 */ @@ -1773,7 +1773,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 145 0x91 '�' + * 145 0x91 '‘' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -1785,7 +1785,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 146 0x92 '�' + * 146 0x92 '’' */ 0x3e, /* 00111110 */ 0x6c, /* 01101100 */ @@ -1797,7 +1797,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 147 0x93 '�' + * 147 0x93 '“' */ 0x7c, /* 01111100 */ 0x82, /* 10000010 */ @@ -1809,7 +1809,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 148 0x94 '�' + * 148 0x94 '”' */ 0xc6, /* 11000110 */ 0x00, /* 00000000 */ @@ -1821,7 +1821,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 149 0x95 '�' + * 149 0x95 '•' */ 0x30, /* 00110000 */ 0x18, /* 00011000 */ @@ -1833,7 +1833,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 150 0x96 '�' + * 150 0x96 '–' */ 0x78, /* 01111000 */ 0x84, /* 10000100 */ @@ -1845,7 +1845,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 151 0x97 '�' + * 151 0x97 '—' */ 0x60, /* 01100000 */ 0x30, /* 00110000 */ @@ -1857,7 +1857,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 152 0x98 '�' + * 152 0x98 '˜' */ 0xc6, /* 11000110 */ 0x00, /* 00000000 */ @@ -1869,7 +1869,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xfc, /* 11111100 */ /* - * 153 0x99 '�' + * 153 0x99 '™' */ 0xc6, /* 11000110 */ 0x38, /* 00111000 */ @@ -1881,7 +1881,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 154 0x9a '�' + * 154 0x9a 'š' */ 0xc6, /* 11000110 */ 0x00, /* 00000000 */ @@ -1893,7 +1893,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 155 0x9b '�' + * 155 0x9b '›' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -1905,7 +1905,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 156 0x9c '�' + * 156 0x9c 'œ' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ @@ -1917,7 +1917,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 157 0x9d '�' + * 157 0x9d '' */ 0x66, /* 01100110 */ 0x66, /* 01100110 */ @@ -1929,7 +1929,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 158 0x9e '�' + * 158 0x9e 'ž' */ 0xf8, /* 11111000 */ 0xcc, /* 11001100 */ @@ -1941,7 +1941,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xc7, /* 11000111 */ /* - * 159 0x9f '�' + * 159 0x9f 'Ÿ' */ 0x0e, /* 00001110 */ 0x1b, /* 00011011 */ @@ -1953,7 +1953,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 160 0xa0 '�' + * 160 0xa0 ' ' */ 0x18, /* 00011000 */ 0x30, /* 00110000 */ @@ -1965,7 +1965,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 161 0xa1 '�' + * 161 0xa1 '¡' */ 0x0c, /* 00001100 */ 0x18, /* 00011000 */ @@ -1977,7 +1977,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 162 0xa2 '�' + * 162 0xa2 '¢' */ 0x0c, /* 00001100 */ 0x18, /* 00011000 */ @@ -1989,7 +1989,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 163 0xa3 '�' + * 163 0xa3 '£' */ 0x18, /* 00011000 */ 0x30, /* 00110000 */ @@ -2001,7 +2001,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 164 0xa4 '�' + * 164 0xa4 '¤' */ 0x76, /* 01110110 */ 0xdc, /* 11011100 */ @@ -2013,7 +2013,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 165 0xa5 '�' + * 165 0xa5 '¥' */ 0x76, /* 01110110 */ 0xdc, /* 11011100 */ @@ -2025,7 +2025,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 166 0xa6 '�' + * 166 0xa6 '¦' */ 0x3c, /* 00111100 */ 0x6c, /* 01101100 */ @@ -2037,7 +2037,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 167 0xa7 '�' + * 167 0xa7 '§' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ @@ -2049,7 +2049,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 168 0xa8 '�' + * 168 0xa8 '¨' */ 0x18, /* 00011000 */ 0x00, /* 00000000 */ @@ -2061,7 +2061,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 169 0xa9 '�' + * 169 0xa9 '©' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2073,7 +2073,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 170 0xaa '�' + * 170 0xaa 'ª' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2085,7 +2085,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 171 0xab '�' + * 171 0xab '«' */ 0x63, /* 01100011 */ 0xe6, /* 11100110 */ @@ -2097,7 +2097,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x0f, /* 00001111 */ /* - * 172 0xac '�' + * 172 0xac '¬' */ 0x63, /* 01100011 */ 0xe6, /* 11100110 */ @@ -2109,7 +2109,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x06, /* 00000110 */ /* - * 173 0xad '�' + * 173 0xad '­' */ 0x18, /* 00011000 */ 0x00, /* 00000000 */ @@ -2121,7 +2121,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 174 0xae '�' + * 174 0xae '®' */ 0x00, /* 00000000 */ 0x33, /* 00110011 */ @@ -2133,7 +2133,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 175 0xaf '�' + * 175 0xaf '¯' */ 0x00, /* 00000000 */ 0xcc, /* 11001100 */ @@ -2145,7 +2145,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 176 0xb0 '�' + * 176 0xb0 '°' */ 0x22, /* 00100010 */ 0x88, /* 10001000 */ @@ -2157,7 +2157,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x88, /* 10001000 */ /* - * 177 0xb1 '�' + * 177 0xb1 '±' */ 0x55, /* 01010101 */ 0xaa, /* 10101010 */ @@ -2169,7 +2169,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xaa, /* 10101010 */ /* - * 178 0xb2 '�' + * 178 0xb2 '²' */ 0x77, /* 01110111 */ 0xdd, /* 11011101 */ @@ -2181,7 +2181,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xdd, /* 11011101 */ /* - * 179 0xb3 '�' + * 179 0xb3 '³' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2193,7 +2193,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 180 0xb4 '�' + * 180 0xb4 '´' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2205,7 +2205,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 181 0xb5 '�' + * 181 0xb5 'µ' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2217,7 +2217,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 182 0xb6 '�' + * 182 0xb6 '¶' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2229,7 +2229,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 183 0xb7 '�' + * 183 0xb7 '·' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2241,7 +2241,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 184 0xb8 '�' + * 184 0xb8 '¸' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2253,7 +2253,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 185 0xb9 '�' + * 185 0xb9 '¹' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2265,7 +2265,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 186 0xba '�' + * 186 0xba 'º' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2277,7 +2277,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 187 0xbb '�' + * 187 0xbb '»' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2289,7 +2289,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 188 0xbc '�' + * 188 0xbc '¼' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2301,7 +2301,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 189 0xbd '�' + * 189 0xbd '½' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2313,7 +2313,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 190 0xbe '�' + * 190 0xbe '¾' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2325,7 +2325,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 191 0xbf '�' + * 191 0xbf '¿' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2337,7 +2337,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 192 0xc0 '�' + * 192 0xc0 'À' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2349,7 +2349,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 193 0xc1 '�' + * 193 0xc1 'Á' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2361,7 +2361,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 194 0xc2 '�' + * 194 0xc2 'Â' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2373,7 +2373,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 195 0xc3 '�' + * 195 0xc3 'Ã' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2385,7 +2385,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 196 0xc4 '�' + * 196 0xc4 'Ä' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2397,7 +2397,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 197 0xc5 '�' + * 197 0xc5 'Å' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2409,7 +2409,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 198 0xc6 '�' + * 198 0xc6 'Æ' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2421,7 +2421,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 199 0xc7 '�' + * 199 0xc7 'Ç' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2433,7 +2433,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 200 0xc8 '�' + * 200 0xc8 'È' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2445,7 +2445,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 201 0xc9 '�' + * 201 0xc9 'É' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2457,7 +2457,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 202 0xca '�' + * 202 0xca 'Ê' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2469,7 +2469,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 203 0xcb '�' + * 203 0xcb 'Ë' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2481,7 +2481,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 204 0xcc '�' + * 204 0xcc 'Ì' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2493,7 +2493,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 205 0xcd '�' + * 205 0xcd 'Í' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2505,7 +2505,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 206 0xce '�' + * 206 0xce 'Î' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2517,7 +2517,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 207 0xcf '�' + * 207 0xcf 'Ï' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2529,7 +2529,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 208 0xd0 '�' + * 208 0xd0 'Ð' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2541,7 +2541,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 209 0xd1 '�' + * 209 0xd1 'Ñ' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2553,7 +2553,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 210 0xd2 '�' + * 210 0xd2 'Ò' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2565,7 +2565,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 211 0xd3 '�' + * 211 0xd3 'Ó' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2577,7 +2577,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 212 0xd4 '�' + * 212 0xd4 'Ô' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2589,7 +2589,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 213 0xd5 '�' + * 213 0xd5 'Õ' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2601,7 +2601,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 214 0xd6 '�' + * 214 0xd6 'Ö' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2613,7 +2613,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 215 0xd7 '�' + * 215 0xd7 '×' */ 0x36, /* 00110110 */ 0x36, /* 00110110 */ @@ -2625,7 +2625,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x36, /* 00110110 */ /* - * 216 0xd8 '�' + * 216 0xd8 'Ø' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2637,7 +2637,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 217 0xd9 '�' + * 217 0xd9 'Ù' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2649,7 +2649,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 218 0xda '�' + * 218 0xda 'Ú' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2661,7 +2661,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 219 0xdb '�' + * 219 0xdb 'Û' */ 0xff, /* 11111111 */ 0xff, /* 11111111 */ @@ -2673,7 +2673,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xff, /* 11111111 */ /* - * 220 0xdc '�' + * 220 0xdc 'Ü' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2685,7 +2685,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xff, /* 11111111 */ /* - * 221 0xdd '�' + * 221 0xdd 'Ý' */ 0xf0, /* 11110000 */ 0xf0, /* 11110000 */ @@ -2697,7 +2697,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xf0, /* 11110000 */ /* - * 222 0xde '�' + * 222 0xde 'Þ' */ 0x0f, /* 00001111 */ 0x0f, /* 00001111 */ @@ -2709,7 +2709,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x0f, /* 00001111 */ /* - * 223 0xdf '�' + * 223 0xdf 'ß' */ 0xff, /* 11111111 */ 0xff, /* 11111111 */ @@ -2721,7 +2721,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 224 0xe0 '�' + * 224 0xe0 'à' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2733,7 +2733,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 225 0xe1 '�' + * 225 0xe1 'á' */ 0x78, /* 01111000 */ 0xcc, /* 11001100 */ @@ -2745,7 +2745,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 226 0xe2 '�' + * 226 0xe2 'â' */ 0xfe, /* 11111110 */ 0xc6, /* 11000110 */ @@ -2757,7 +2757,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 227 0xe3 '�' + * 227 0xe3 'ã' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2769,7 +2769,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 228 0xe4 '�' + * 228 0xe4 'ä' */ 0xfe, /* 11111110 */ 0xc6, /* 11000110 */ @@ -2781,7 +2781,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 229 0xe5 '�' + * 229 0xe5 'å' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2793,7 +2793,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 230 0xe6 '�' + * 230 0xe6 'æ' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2805,7 +2805,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xc0, /* 11000000 */ /* - * 231 0xe7 '�' + * 231 0xe7 'ç' */ 0x00, /* 00000000 */ 0x76, /* 01110110 */ @@ -2817,7 +2817,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 232 0xe8 '�' + * 232 0xe8 'è' */ 0x7e, /* 01111110 */ 0x18, /* 00011000 */ @@ -2829,7 +2829,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x7e, /* 01111110 */ /* - * 233 0xe9 '�' + * 233 0xe9 'é' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ @@ -2841,7 +2841,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 234 0xea '�' + * 234 0xea 'ê' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ @@ -2853,7 +2853,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 235 0xeb '�' + * 235 0xeb 'ë' */ 0x0e, /* 00001110 */ 0x18, /* 00011000 */ @@ -2865,7 +2865,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 236 0xec '�' + * 236 0xec 'ì' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -2877,7 +2877,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 237 0xed '�' + * 237 0xed 'í' */ 0x06, /* 00000110 */ 0x0c, /* 00001100 */ @@ -2889,7 +2889,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0xc0, /* 11000000 */ /* - * 238 0xee '�' + * 238 0xee 'î' */ 0x1e, /* 00011110 */ 0x30, /* 00110000 */ @@ -2901,7 +2901,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 239 0xef '�' + * 239 0xef 'ï' */ 0x00, /* 00000000 */ 0x7c, /* 01111100 */ @@ -2913,7 +2913,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 240 0xf0 '�' + * 240 0xf0 'ð' */ 0x00, /* 00000000 */ 0xfe, /* 11111110 */ @@ -2925,7 +2925,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 241 0xf1 '�' + * 241 0xf1 'ñ' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2937,7 +2937,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 242 0xf2 '�' + * 242 0xf2 'ò' */ 0x30, /* 00110000 */ 0x18, /* 00011000 */ @@ -2949,7 +2949,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 243 0xf3 '�' + * 243 0xf3 'ó' */ 0x0c, /* 00001100 */ 0x18, /* 00011000 */ @@ -2961,7 +2961,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 244 0xf4 '�' + * 244 0xf4 'ô' */ 0x0e, /* 00001110 */ 0x1b, /* 00011011 */ @@ -2973,7 +2973,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x18, /* 00011000 */ /* - * 245 0xf5 '�' + * 245 0xf5 'õ' */ 0x18, /* 00011000 */ 0x18, /* 00011000 */ @@ -2985,7 +2985,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x70, /* 01110000 */ /* - * 246 0xf6 '�' + * 246 0xf6 'ö' */ 0x00, /* 00000000 */ 0x18, /* 00011000 */ @@ -2997,7 +2997,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 247 0xf7 '�' + * 247 0xf7 '÷' */ 0x00, /* 00000000 */ 0x76, /* 01110110 */ @@ -3009,7 +3009,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 248 0xf8 '�' + * 248 0xf8 'ø' */ 0x38, /* 00111000 */ 0x6c, /* 01101100 */ @@ -3021,7 +3021,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 249 0xf9 '�' + * 249 0xf9 'ù' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -3033,7 +3033,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 250 0xfa '�' + * 250 0xfa 'ú' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -3045,7 +3045,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 251 0xfb '�' + * 251 0xfb 'û' */ 0x0f, /* 00001111 */ 0x0c, /* 00001100 */ @@ -3057,7 +3057,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x1c, /* 00011100 */ /* - * 252 0xfc '�' + * 252 0xfc 'ü' */ 0x6c, /* 01101100 */ 0x36, /* 00110110 */ @@ -3069,7 +3069,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 253 0xfd '�' + * 253 0xfd 'ý' */ 0x78, /* 01111000 */ 0x0c, /* 00001100 */ @@ -3081,7 +3081,7 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { 0x00, /* 00000000 */ /* - * 254 0xfe '�' + * 254 0xfe 'þ' */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ @@ -3109,16 +3109,16 @@ static unsigned char SDLTest_FontData[SDL_TESTFONTDATAMAX] = { /* ---- Character */ -/* ! +/*! \brief Global cache for 8x8 pixel font textures created at runtime. */ static SDL_Texture *SDLTest_CharTextureCache[256]; int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c) { - const Uint32 charWidth = 8; - const Uint32 charHeight = 8; - const Uint32 charSize = 8; + const Uint32 charWidth = FONT_CHARACTER_SIZE; + const Uint32 charHeight = FONT_CHARACTER_SIZE; + const Uint32 charSize = FONT_CHARACTER_SIZE; SDL_Rect srect; SDL_Rect drect; int result; @@ -3221,7 +3221,7 @@ int SDLTest_DrawCharacter(SDL_Renderer *renderer, int x, int y, char c) int SDLTest_DrawString(SDL_Renderer * renderer, int x, int y, const char *s) { - const Uint32 charWidth = 8; + const Uint32 charWidth = FONT_CHARACTER_SIZE; int result = 0; int curx = x; int cury = y; From 2032f57fefafdbfa2489c0a304576d9d8f8b1f92 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 10 Feb 2014 10:02:51 -0800 Subject: [PATCH 312/402] Recreate render target textures when the D3D device is being reset, and notify the application using the SDL_RENDER_TARGETS_RESET event when this happens. --- include/SDL_events.h | 3 +++ src/render/direct3d/SDL_render_d3d.c | 38 ++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/include/SDL_events.h b/include/SDL_events.h index 9be48c3a57..0b848b944b 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -134,6 +134,9 @@ typedef enum /* Drag and drop events */ SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset */ + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, * and should be allocated with SDL_RegisterEvents() */ diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 63dfff61cf..cf8f3fe04a 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -474,6 +474,7 @@ D3D_Reset(SDL_Renderer * renderer) { D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; HRESULT result; + SDL_Texture *texture; /* Release the default render target before reset */ if (data->defaultRenderTarget) { @@ -481,6 +482,13 @@ D3D_Reset(SDL_Renderer * renderer) data->defaultRenderTarget = NULL; } + /* Release application render targets */ + for (texture = renderer->textures; texture; texture = texture->next) { + if (texture->access == SDL_TEXTUREACCESS_TARGET) { + D3D_DestroyTexture(renderer, texture); + } + } + result = IDirect3DDevice9_Reset(data->device, &data->pparams); if (FAILED(result)) { if (result == D3DERR_DEVICELOST) { @@ -491,9 +499,24 @@ D3D_Reset(SDL_Renderer * renderer) } } + /* Allocate application render targets */ + for (texture = renderer->textures; texture; texture = texture->next) { + if (texture->access == SDL_TEXTUREACCESS_TARGET) { + D3D_CreateTexture(renderer, texture); + } + } + IDirect3DDevice9_GetRenderTarget(data->device, 0, &data->defaultRenderTarget); D3D_InitRenderState(data); D3D_UpdateViewport(renderer); + + /* Let the application know that render targets were reset */ + { + SDL_Event event; + event.type = SDL_RENDER_TARGETS_RESET; + SDL_PushEvent(&event); + } + return 0; } @@ -570,7 +593,7 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags) return NULL; } - if( D3D_LoadDLL( &data->d3dDLL, &data->d3d ) ) { + if (D3D_LoadDLL(&data->d3dDLL, &data->d3d)) { for (d3dxVersion=50;d3dxVersion>0;d3dxVersion--) { LPTSTR dllName; SDL_snprintf(d3dxDLLFile, sizeof(d3dxDLLFile), "D3DX9_%02d.dll", d3dxVersion); @@ -644,13 +667,12 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags) pparams.SwapEffect = D3DSWAPEFFECT_DISCARD; if (window_flags & SDL_WINDOW_FULLSCREEN) { - if ( ( window_flags & SDL_WINDOW_FULLSCREEN_DESKTOP ) == SDL_WINDOW_FULLSCREEN_DESKTOP ) { + if ((window_flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { pparams.Windowed = TRUE; pparams.FullScreen_RefreshRateInHz = 0; } else { - pparams.Windowed = FALSE; - pparams.FullScreen_RefreshRateInHz = - fullscreen_mode.refresh_rate; + pparams.Windowed = FALSE; + pparams.FullScreen_RefreshRateInHz = fullscreen_mode.refresh_rate; } } else { pparams.Windowed = TRUE; @@ -663,8 +685,8 @@ D3D_CreateRenderer(SDL_Window * window, Uint32 flags) } /* Get the adapter for the display that the window is on */ - displayIndex = SDL_GetWindowDisplayIndex( window ); - data->adapter = SDL_Direct3D9GetAdapterIndex( displayIndex ); + displayIndex = SDL_GetWindowDisplayIndex(window); + data->adapter = SDL_Direct3D9GetAdapterIndex(displayIndex); IDirect3D9_GetDeviceCaps(data->d3d, data->adapter, D3DDEVTYPE_HAL, &caps); @@ -1912,7 +1934,7 @@ SDL_RenderGetD3D9Device(SDL_Renderer * renderer) device = data->device; if (device) { - IDirect3DDevice9_AddRef( device ); + IDirect3DDevice9_AddRef(device); } #endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ From 1c80b7f93c61fbc8ebeca1c6ce9ed5edd5e80faa Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 10 Feb 2014 13:40:02 -0800 Subject: [PATCH 313/402] Fixed crash if render target textures are used while the device is lost --- src/render/direct3d/SDL_render_d3d.c | 42 ++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index cf8f3fe04a..47675c7a1d 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1029,6 +1029,11 @@ D3D_UpdateTexture(SDL_Renderer * renderer, SDL_Texture * texture, } #endif + if (!data) { + SDL_SetError("Texture is not currently available"); + return -1; + } + if (D3D_UpdateTextureInternal(data->texture, texture->format, full_texture, rect->x, rect->y, rect->w, rect->h, pixels, pitch) < 0) { return -1; } @@ -1068,6 +1073,11 @@ D3D_UpdateTextureYUV(SDL_Renderer * renderer, SDL_Texture * texture, } #endif + if (!data) { + SDL_SetError("Texture is not currently available"); + return -1; + } + if (D3D_UpdateTextureInternal(data->texture, texture->format, full_texture, rect->x, rect->y, rect->w, rect->h, Yplane, Ypitch) < 0) { return -1; } @@ -1089,6 +1099,11 @@ D3D_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, D3DLOCKED_RECT locked; HRESULT result; + if (!data) { + SDL_SetError("Texture is not currently available"); + return -1; + } + if (data->yuv) { /* It's more efficient to upload directly... */ if (!data->pixels) { @@ -1124,6 +1139,10 @@ D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture) { D3D_TextureData *data = (D3D_TextureData *) texture->driverdata; + if (!data) { + return; + } + if (data->yuv) { const SDL_Rect *rect = &data->locked_rect; void *pixels = @@ -1155,7 +1174,12 @@ D3D_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture) return 0; } - texturedata = (D3D_TextureData *) texture->driverdata; + texturedata = (D3D_TextureData *)texture->driverdata; + if (!texturedata) { + SDL_SetError("Texture is not currently available"); + return -1; + } + result = IDirect3DTexture9_GetSurfaceLevel(texturedata->texture, 0, &data->currentRenderTarget); if(FAILED(result)) { return D3D_SetError("GetSurfaceLevel()", result); @@ -1531,7 +1555,7 @@ D3D_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * srcrect, const SDL_FRect * dstrect) { D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; - D3D_TextureData *texturedata = (D3D_TextureData *) texture->driverdata; + D3D_TextureData *texturedata; LPDIRECT3DPIXELSHADER9 shader = NULL; float minx, miny, maxx, maxy; float minu, maxu, minv, maxv; @@ -1543,6 +1567,12 @@ D3D_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, return -1; } + texturedata = (D3D_TextureData *)texture->driverdata; + if (!texturedata) { + SDL_SetError("Texture is not currently available"); + return -1; + } + minx = dstrect->x - 0.5f; miny = dstrect->y - 0.5f; maxx = dstrect->x + dstrect->w - 0.5f; @@ -1643,7 +1673,7 @@ D3D_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, const double angle, const SDL_FPoint * center, const SDL_RendererFlip flip) { D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; - D3D_TextureData *texturedata = (D3D_TextureData *) texture->driverdata; + D3D_TextureData *texturedata; LPDIRECT3DPIXELSHADER9 shader = NULL; float minx, miny, maxx, maxy; float minu, maxu, minv, maxv; @@ -1656,6 +1686,12 @@ D3D_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, return -1; } + texturedata = (D3D_TextureData *)texture->driverdata; + if (!texturedata) { + SDL_SetError("Texture is not currently available"); + return -1; + } + centerx = center->x; centery = center->y; From 0fa19273626e5e8a18a1824566800194b699141c Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 12 Feb 2014 18:12:14 -0300 Subject: [PATCH 314/402] Try to work around Android's handling of static variables in terminated apps Android, we want to love you, but you don't make it easy for us... --- .../src/org/libsdl/app/SDLActivity.java | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/android-project/src/org/libsdl/app/SDLActivity.java b/android-project/src/org/libsdl/app/SDLActivity.java index 3ce26ad3fe..49a1d38f8a 100644 --- a/android-project/src/org/libsdl/app/SDLActivity.java +++ b/android-project/src/org/libsdl/app/SDLActivity.java @@ -28,7 +28,7 @@ public class SDLActivity extends Activity { private static final String TAG = "SDL"; // Keep track of the paused state - public static boolean mIsPaused = false, mIsSurfaceReady = false, mHasFocus = true; + public static boolean mIsPaused, mIsSurfaceReady, mHasFocus; public static boolean mExitCalledFromJava; // Main components @@ -53,22 +53,37 @@ public class SDLActivity extends Activity { //System.loadLibrary("SDL2_ttf"); System.loadLibrary("main"); } + + + public static void initialize() { + // The static nature of the singleton and Android quirkyness force us to initialize everything here + // Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values + mSingleton = null; + mSurface = null; + mTextEdit = null; + mLayout = null; + mJoystickHandler = null; + mSDLThread = null; + mAudioTrack = null; + mExitCalledFromJava = false; + mIsPaused = false; + mIsSurfaceReady = false; + mHasFocus = true; + } // Setup @Override protected void onCreate(Bundle savedInstanceState) { - //Log.v("SDL", "onCreate()"); + Log.v("SDL", "onCreate():" + mSingleton); super.onCreate(savedInstanceState); + SDLActivity.initialize(); // So we can call stuff from static callbacks mSingleton = this; // Set up the surface mSurface = new SDLSurface(getApplication()); - // Make sure this variable is initialized here! - mExitCalledFromJava = false; - if(Build.VERSION.SDK_INT >= 12) { mJoystickHandler = new SDLJoystickHandler_API12(); } @@ -118,7 +133,6 @@ public void onLowMemory() { @Override protected void onDestroy() { - super.onDestroy(); Log.v("SDL", "onDestroy()"); // Send a quit message to the application SDLActivity.mExitCalledFromJava = true; @@ -135,6 +149,10 @@ protected void onDestroy() { //Log.v("SDL", "Finished waiting for SDL thread"); } + + super.onDestroy(); + // Reset everything in case the user re opens the app + SDLActivity.initialize(); } @Override From 30d7ef053b3a549b5c68fc1b806f8acb7b709c5c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:05:24 -0800 Subject: [PATCH 315/402] Added SDL_GetLoadedModule to do the equivalent of GetModuleHandle/dlload(NOLOAD) CR: Jorgen --- include/SDL_loadso.h | 10 ++++++++++ src/loadso/dlopen/SDL_sysloadso.c | 7 +++++++ src/loadso/windows/SDL_sysloadso.c | 16 ++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/include/SDL_loadso.h b/include/SDL_loadso.h index 0359eae17d..50df510d81 100644 --- a/include/SDL_loadso.h +++ b/include/SDL_loadso.h @@ -57,6 +57,16 @@ extern "C" { */ extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); +/** + * This function returns a handle to an already-loaded shared object and + * returns a pointer to the object handle. If the object file was not loaded + * the function returns NULL. This function adds a reference to the shared + * object, so the caller should call SDL_UnloadObject when they are finished + * with this reference to ensure that the object can be unloaded. + * The 'sofile' parameter is a system dependent name of the object file. + */ +extern DECLSPEC void *SDLCALL SDL_GetLoadedObject(const char *sofile); + /** * Given an object handle, this function looks up the address of the * named function in the shared object and returns it. This address diff --git a/src/loadso/dlopen/SDL_sysloadso.c b/src/loadso/dlopen/SDL_sysloadso.c index db8422221e..79df107f0c 100644 --- a/src/loadso/dlopen/SDL_sysloadso.c +++ b/src/loadso/dlopen/SDL_sysloadso.c @@ -41,6 +41,13 @@ SDL_LoadObject(const char *sofile) return (handle); } +void * +SDL_GetLoadedObject(const char *sofile) +{ + void *handle = dlopen(sofile, RTLD_NOLOAD); + return (handle); +} + void * SDL_LoadFunction(void *handle, const char *name) { diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c index cbbd92978a..4ff36af0e6 100644 --- a/src/loadso/windows/SDL_sysloadso.c +++ b/src/loadso/windows/SDL_sysloadso.c @@ -46,6 +46,22 @@ SDL_LoadObject(const char *sofile) return handle; } +void * +SDL_GetLoadedObject(const char *sofile) +{ + LPTSTR tstr = WIN_UTF8ToString(sofile); + void *handle = (void *) GetModuleHandle(tstr); + + /* if we got a handle, call LoadLibrary to get + * it again with the ref count incremented. + * We do this to match the dlopen version of this function */ + handle = (void *)LoadLibrary( tstr ); + + SDL_free(tstr); + + return handle; +} + void * SDL_LoadFunction(void *handle, const char *name) { From 067c3427a6e60a40f7ef8be16cef600be51c295f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:05:26 -0800 Subject: [PATCH 316/402] As part of Jorgen's code review of this function I added a call to LoadLibrary so the refcounts would be consistent between Windows and Posix. Then I forgot to include the check that the thing was actually loaded and caused it to be loaded all the time. Oops. CR: AaronL --- src/loadso/windows/SDL_sysloadso.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c index 4ff36af0e6..ac870d90b3 100644 --- a/src/loadso/windows/SDL_sysloadso.c +++ b/src/loadso/windows/SDL_sysloadso.c @@ -55,7 +55,8 @@ SDL_GetLoadedObject(const char *sofile) /* if we got a handle, call LoadLibrary to get * it again with the ref count incremented. * We do this to match the dlopen version of this function */ - handle = (void *)LoadLibrary( tstr ); + if( handle != NULL ) + handle = (void *)LoadLibrary( tstr ); SDL_free(tstr); From 64ddccbc77f451ff9eb8851c70cd2c69b400e190 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:05:28 -0800 Subject: [PATCH 317/402] Fixed lost mouse button when in relative mouse warp mode and you click on the title bar, entering a modal move/resize loop. Testing: * Set the SDL_HINT_MOUSE_RELATIVE_MODE_WARP hint true, run testsprite2, press Ctrl-R to enter relative mode, alt tab away from the window, then click on the title bar of the window. Didn't get the mouse button release before, and we do now. CR: Yahn + Alfred --- src/video/windows/SDL_windowsevents.c | 49 +++++++++++++++------------ 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index f448d2b1ea..dbd8e2e601 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -259,6 +259,30 @@ WIN_CheckRawMouseButtons( ULONG rawButtons, SDL_WindowData *data ) } } +void +WIN_CheckAsyncMouseRelease( SDL_WindowData *data ) +{ + Uint32 mouseFlags; + SHORT keyState; + + /* mouse buttons may have changed state here, we need to resync them, + but we will get a WM_MOUSEMOVE right away which will fix things up if in non raw mode also + */ + mouseFlags = SDL_GetMouseState( NULL, NULL ); + + keyState = GetAsyncKeyState( VK_LBUTTON ); + WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_LMASK ), data, SDL_BUTTON_LEFT ); + keyState = GetAsyncKeyState( VK_RBUTTON ); + WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_RMASK ), data, SDL_BUTTON_RIGHT ); + keyState = GetAsyncKeyState( VK_MBUTTON ); + WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_MMASK ), data, SDL_BUTTON_MIDDLE ); + keyState = GetAsyncKeyState( VK_XBUTTON1 ); + WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X1MASK ), data, SDL_BUTTON_X1 ); + keyState = GetAsyncKeyState( VK_XBUTTON2 ); + WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X2MASK ), data, SDL_BUTTON_X2 ); + data->mouse_button_flags = 0; +} + SDL_FORCE_INLINE BOOL WIN_ConvertUTF32toUTF8(UINT32 codepoint, char * text) { @@ -344,32 +368,12 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) minimized = HIWORD(wParam); if (!minimized && (LOWORD(wParam) != WA_INACTIVE)) { - Uint32 mouseFlags; - SHORT keyState; - SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_SHOWN, 0, 0); if (SDL_GetKeyboardFocus() != data->window) { SDL_SetKeyboardFocus(data->window); } - /* mouse buttons may have changed state here, we need - to resync them, but we will get a WM_MOUSEMOVE right away which will fix - things up if in non raw mode also - */ - mouseFlags = SDL_GetMouseState( NULL, NULL ); - - keyState = GetAsyncKeyState( VK_LBUTTON ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (mouseFlags & SDL_BUTTON_LMASK), data, SDL_BUTTON_LEFT ); - keyState = GetAsyncKeyState( VK_RBUTTON ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (mouseFlags & SDL_BUTTON_RMASK), data, SDL_BUTTON_RIGHT ); - keyState = GetAsyncKeyState( VK_MBUTTON ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (mouseFlags & SDL_BUTTON_MMASK), data, SDL_BUTTON_MIDDLE ); - keyState = GetAsyncKeyState( VK_XBUTTON1 ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (mouseFlags & SDL_BUTTON_X1MASK), data, SDL_BUTTON_X1 ); - keyState = GetAsyncKeyState( VK_XBUTTON2 ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), (mouseFlags & SDL_BUTTON_X2MASK), data, SDL_BUTTON_X2 ); - data->mouse_button_flags = 0; - WIN_UpdateClipCursor(data->window); + WIN_CheckAsyncMouseRelease(data); /* * FIXME: Update keyboard state @@ -578,6 +582,9 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { data->in_modal_loop = SDL_FALSE; WIN_UpdateClipCursor(data->window); + + /* The mouse may have been released during the modal loop */ + WIN_CheckAsyncMouseRelease(data); } break; From 170adc1fc3648215cf077b82dec6126c7ba0d251 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:05:30 -0800 Subject: [PATCH 318/402] Added SDL_DXGIGetOutputInfo which returns the adapter and output indices that are used to create DX10 and DX11 devices and swap chains on a particular display. CR: SamL --- include/SDL_system.h | 6 ++ src/dynapi/SDL_dynapi_overrides.h | 1 + src/dynapi/SDL_dynapi_procs.h | 1 + src/test/SDL_test_common.c | 9 ++- src/video/windows/SDL_windowsvideo.c | 85 ++++++++++++++++++++++++++++ 5 files changed, 100 insertions(+), 2 deletions(-) diff --git a/include/SDL_system.h b/include/SDL_system.h index 7913ddf19c..99ef8223eb 100644 --- a/include/SDL_system.h +++ b/include/SDL_system.h @@ -55,6 +55,12 @@ extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); typedef struct IDirect3DDevice9 IDirect3DDevice9; extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); +/* Returns the DXGI Adapter and Output indices for the specified display index. + These can be passed to EnumAdapters and EnumOutputs respectively to get the objects + required to create a DX10 or DX11 device and swap chain. + */ +extern DECLSPEC void SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + #endif /* __WIN32__ */ diff --git a/src/dynapi/SDL_dynapi_overrides.h b/src/dynapi/SDL_dynapi_overrides.h index e6234cb369..5ae7927f2d 100644 --- a/src/dynapi/SDL_dynapi_overrides.h +++ b/src/dynapi/SDL_dynapi_overrides.h @@ -574,3 +574,4 @@ #define SDL_HasAVX SDL_HasAVX_REAL #define SDL_GetDefaultAssertionHandler SDL_GetDefaultAssertionHandler_REAL #define SDL_GetAssertionHandler SDL_GetAssertionHandler_REAL +#define SDL_DXGIGetOutputInfo SDL_DXGIGetOutputInfo_REAL diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 362bb83d17..260bf13ac0 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -70,6 +70,7 @@ SDL_DYNAPI_PROC(void,SDL_MemoryBarrierAcquire,(void),(),) SDL_DYNAPI_PROC(int,SDL_RegisterApp,(char *a, Uint32 b, void *c),(a,b,c),return) SDL_DYNAPI_PROC(void,SDL_UnregisterApp,(void),(),) SDL_DYNAPI_PROC(int,SDL_Direct3D9GetAdapterIndex,(int a),(a),return) +SDL_DYNAPI_PROC(void,SDL_DXGIGetOutputInfo,(int a,int *b, int *c),(a,b,c),) SDL_DYNAPI_PROC(IDirect3DDevice9*,SDL_RenderGetD3D9Device,(SDL_Renderer *a),(a),return) #endif diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index b2b87a1b20..c03da03ab9 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -706,6 +706,7 @@ SDLTest_CommonInit(SDLTest_CommonState * state) Uint32 Rmask, Gmask, Bmask, Amask; #if SDL_VIDEO_DRIVER_WINDOWS int adapterIndex = 0; + int outputIndex = 0; #endif n = SDL_GetNumVideoDisplays(); fprintf(stderr, "Number of displays: %d\n", n); @@ -761,9 +762,13 @@ SDLTest_CommonInit(SDLTest_CommonState * state) } #if SDL_VIDEO_DRIVER_WINDOWS - /* Print the adapter index */ + /* Print the D3D9 adapter index */ adapterIndex = SDL_Direct3D9GetAdapterIndex( i ); - fprintf( stderr, "Adapter Index: %d", adapterIndex ); + fprintf( stderr, "D3D9 Adapter Index: %d", adapterIndex ); + + /* Print the DXGI adapter and output indices */ + SDL_DXGIGetOutputInfo(i, &adapterIndex, &outputIndex); + fprintf( stderr, "DXGI Adapter Index: %d Output Index: %d", adapterIndex, outputIndex ); #endif } } diff --git a/src/video/windows/SDL_windowsvideo.c b/src/video/windows/SDL_windowsvideo.c index 9ad5613e0b..dde262268a 100644 --- a/src/video/windows/SDL_windowsvideo.c +++ b/src/video/windows/SDL_windowsvideo.c @@ -245,6 +245,91 @@ SDL_Direct3D9GetAdapterIndex( int displayIndex ) } } +#define CINTERFACE +#define COBJMACROS +#include + +SDL_bool +DXGI_LoadDLL( void **pDXGIDLL , IDXGIFactory **pDXGIFactory ) +{ + *pDXGIDLL = SDL_LoadObject("DXGI.DLL"); + if (*pDXGIDLL ) { + HRESULT (WINAPI *CreateDXGI)( REFIID riid, void **ppFactory ); + + CreateDXGI = + (HRESULT (WINAPI *) (REFIID, void**)) SDL_LoadFunction(*pDXGIDLL, + "CreateDXGIFactory"); + if (CreateDXGI) { + GUID dxgiGUID = {0x7b7166ec,0x21c7,0x44ae,{0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69}}; + if( !SUCCEEDED( CreateDXGI( &dxgiGUID, pDXGIFactory ))) { + *pDXGIFactory = NULL; + } + } + if (!*pDXGIFactory) { + SDL_UnloadObject(*pDXGIDLL); + *pDXGIDLL = NULL; + return SDL_FALSE; + } + + return SDL_TRUE; + } else { + *pDXGIFactory = NULL; + return SDL_FALSE; + } +} + + +void +SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ) +{ + void *pDXGIDLL; + IDXGIFactory *pDXGIFactory; + + *adapterIndex = -1; + *outputIndex = -1; + + if (!DXGI_LoadDLL(&pDXGIDLL, &pDXGIFactory)) { + SDL_SetError("Unable to create DXGI interface"); + } else { + SDL_DisplayData *pData = (SDL_DisplayData *)SDL_GetDisplayDriverData(displayIndex); + + if (!pData) { + SDL_SetError("Invalid display index"); + } else { + char *displayName = WIN_StringToUTF8(pData->DeviceName); + int nAdapter = 0, nOutput = 0; + IDXGIAdapter* pDXGIAdapter; + while ( *adapterIndex == -1 && IDXGIFactory_EnumAdapters(pDXGIFactory, nAdapter, &pDXGIAdapter) != DXGI_ERROR_NOT_FOUND ) { + IDXGIOutput* pDXGIOutput; + while ( *adapterIndex == -1 && IDXGIAdapter_EnumOutputs(pDXGIAdapter, nOutput, &pDXGIOutput) != DXGI_ERROR_NOT_FOUND ) { + DXGI_OUTPUT_DESC outputDesc; + if (SUCCEEDED(IDXGIOutput_GetDesc(pDXGIOutput, &outputDesc))) { + char *outputName = WIN_StringToUTF8(outputDesc.DeviceName); + + if(!SDL_strcmp(outputName, displayName)) { + *adapterIndex = nAdapter; + *outputIndex = nOutput; + } + + SDL_free( outputName ); + } + + IDXGIOutput_Release( pDXGIOutput ); + nOutput++; + } + + IDXGIAdapter_Release( pDXGIAdapter ); + nAdapter++; + } + SDL_free(displayName); + } + + /* free up the D3D stuff we inited */ + IDXGIFactory_AddRef( pDXGIFactory ); + SDL_UnloadObject(pDXGIDLL); + } +} + #endif /* SDL_VIDEO_DRIVER_WINDOWS */ /* vim: set ts=4 sw=4 expandtab: */ From 77c3aca6f178b201098da210156a0377a8a2769d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:05:32 -0800 Subject: [PATCH 319/402] Back out changelist 2026006 --- src/loadso/windows/SDL_sysloadso.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c index ac870d90b3..4ff36af0e6 100644 --- a/src/loadso/windows/SDL_sysloadso.c +++ b/src/loadso/windows/SDL_sysloadso.c @@ -55,8 +55,7 @@ SDL_GetLoadedObject(const char *sofile) /* if we got a handle, call LoadLibrary to get * it again with the ref count incremented. * We do this to match the dlopen version of this function */ - if( handle != NULL ) - handle = (void *)LoadLibrary( tstr ); + handle = (void *)LoadLibrary( tstr ); SDL_free(tstr); From f681553a22ab77d206d2e48fea4802df115d9be8 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:05:34 -0800 Subject: [PATCH 320/402] Back out changelist 1951976 --- include/SDL_loadso.h | 10 ---------- src/loadso/dlopen/SDL_sysloadso.c | 7 ------- src/loadso/windows/SDL_sysloadso.c | 16 ---------------- 3 files changed, 33 deletions(-) diff --git a/include/SDL_loadso.h b/include/SDL_loadso.h index 50df510d81..0359eae17d 100644 --- a/include/SDL_loadso.h +++ b/include/SDL_loadso.h @@ -57,16 +57,6 @@ extern "C" { */ extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); -/** - * This function returns a handle to an already-loaded shared object and - * returns a pointer to the object handle. If the object file was not loaded - * the function returns NULL. This function adds a reference to the shared - * object, so the caller should call SDL_UnloadObject when they are finished - * with this reference to ensure that the object can be unloaded. - * The 'sofile' parameter is a system dependent name of the object file. - */ -extern DECLSPEC void *SDLCALL SDL_GetLoadedObject(const char *sofile); - /** * Given an object handle, this function looks up the address of the * named function in the shared object and returns it. This address diff --git a/src/loadso/dlopen/SDL_sysloadso.c b/src/loadso/dlopen/SDL_sysloadso.c index 79df107f0c..db8422221e 100644 --- a/src/loadso/dlopen/SDL_sysloadso.c +++ b/src/loadso/dlopen/SDL_sysloadso.c @@ -41,13 +41,6 @@ SDL_LoadObject(const char *sofile) return (handle); } -void * -SDL_GetLoadedObject(const char *sofile) -{ - void *handle = dlopen(sofile, RTLD_NOLOAD); - return (handle); -} - void * SDL_LoadFunction(void *handle, const char *name) { diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c index 4ff36af0e6..cbbd92978a 100644 --- a/src/loadso/windows/SDL_sysloadso.c +++ b/src/loadso/windows/SDL_sysloadso.c @@ -46,22 +46,6 @@ SDL_LoadObject(const char *sofile) return handle; } -void * -SDL_GetLoadedObject(const char *sofile) -{ - LPTSTR tstr = WIN_UTF8ToString(sofile); - void *handle = (void *) GetModuleHandle(tstr); - - /* if we got a handle, call LoadLibrary to get - * it again with the ref count incremented. - * We do this to match the dlopen version of this function */ - handle = (void *)LoadLibrary( tstr ); - - SDL_free(tstr); - - return handle; -} - void * SDL_LoadFunction(void *handle, const char *name) { From 3093f1172e487ea16290addac46cbf4cbc57730f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 13 Feb 2014 11:08:12 -0800 Subject: [PATCH 321/402] Added the new function at the end so we don't break the ABI --- src/dynapi/SDL_dynapi_procs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index 260bf13ac0..301aff38a6 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -70,7 +70,6 @@ SDL_DYNAPI_PROC(void,SDL_MemoryBarrierAcquire,(void),(),) SDL_DYNAPI_PROC(int,SDL_RegisterApp,(char *a, Uint32 b, void *c),(a,b,c),return) SDL_DYNAPI_PROC(void,SDL_UnregisterApp,(void),(),) SDL_DYNAPI_PROC(int,SDL_Direct3D9GetAdapterIndex,(int a),(a),return) -SDL_DYNAPI_PROC(void,SDL_DXGIGetOutputInfo,(int a,int *b, int *c),(a,b,c),) SDL_DYNAPI_PROC(IDirect3DDevice9*,SDL_RenderGetD3D9Device,(SDL_Renderer *a),(a),return) #endif @@ -604,3 +603,6 @@ SDL_DYNAPI_PROC(void,SDL_GL_ResetAttributes,(void),(),) SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX,(void),(),return) SDL_DYNAPI_PROC(SDL_AssertionHandler,SDL_GetDefaultAssertionHandler,(void),(),return) SDL_DYNAPI_PROC(SDL_AssertionHandler,SDL_GetAssertionHandler,(void **a),(a),return) +#ifdef __WIN32__ +SDL_DYNAPI_PROC(void,SDL_DXGIGetOutputInfo,(int a,int *b, int *c),(a,b,c),) +#endif From f3dfabc8c66f9d91f1a2f8b80ed645df69e50923 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 14 Feb 2014 11:38:59 -0800 Subject: [PATCH 322/402] Fixed Mac PS4 controller entry, added Linux OUYA controller entry --- src/joystick/SDL_gamecontrollerdb.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index 6c969d31df..db0877fd66 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -49,7 +49,7 @@ static const char *s_ControllerMappings [] = "6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", "6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ "4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", - "4c05000000000000c405000000000000,PS4 Controller,x:b0,a:b1,b:b2,y:b3,back:b8,guide:b12,start:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,leftstick:b7,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a5," + "4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", "5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", #elif defined(__LINUX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", @@ -59,6 +59,7 @@ static const char *s_ControllerMappings [] = "030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", "030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", +"050000003620000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,platform:Linux,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,", "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", "030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", "03000000de280000ff11000001000000,Valve Streaming Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", From 6c980fdfdf6a4aeedd438f4297f95303bdea4151 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 14 Feb 2014 11:39:58 -0800 Subject: [PATCH 323/402] Make sure we don't stay in the windows event loop forever if there are lots of events coming in quickly. --- src/video/windows/SDL_windowsevents.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index dbd8e2e601..a688ef0916 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -25,6 +25,7 @@ #include "SDL_windowsvideo.h" #include "SDL_windowsshape.h" #include "SDL_syswm.h" +#include "SDL_timer.h" #include "SDL_vkeys.h" #include "../../events/SDL_events_c.h" #include "../../events/SDL_touch_c.h" @@ -537,10 +538,10 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) /* Detect relevant keyboard shortcuts */ if (keyboardState[SDL_SCANCODE_LALT] == SDL_PRESSED || keyboardState[SDL_SCANCODE_RALT] == SDL_PRESSED ) { - /* ALT+F4: Close window */ - if (code == SDL_SCANCODE_F4) { - SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0); - } + /* ALT+F4: Close window */ + if (code == SDL_SCANCODE_F4) { + SDL_SendWindowEvent(data->window, SDL_WINDOWEVENT_CLOSE, 0, 0); + } } if ( code != SDL_SCANCODE_UNKNOWN ) { @@ -860,10 +861,17 @@ WIN_PumpEvents(_THIS) { const Uint8 *keystate; MSG msg; + DWORD start_ticks = GetTickCount(); + while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { /* Always translate the message in case it's a non-SDL window (e.g. with Qt integration) */ TranslateMessage(&msg); - DispatchMessage(&msg); + DispatchMessage( &msg ); + + /* Make sure we don't busy loop here forever if there are lots of events coming in */ + if (SDL_TICKS_PASSED(msg.time, start_ticks)) { + break; + } } /* Windows loses a shift KEYUP event when you have both pressed at once and let go of one. From 6d0a1769b996492f37fa5121e8867307ba7373f7 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 15 Feb 2014 23:52:04 +0100 Subject: [PATCH 324/402] Corrected name of hint in README. --- README-windows.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-windows.txt b/README-windows.txt index f59b2661bd..7f9c4a35f2 100644 --- a/README-windows.txt +++ b/README-windows.txt @@ -32,7 +32,7 @@ d3dcompiler_* DLL at all (for details on this, see their documentation). However, by default SDL will try to preload the d3dcompiler_46.dll to comply with ANGLE's requirements. If you wish SDL to preload d3dcompiler_43.dll (to support Windows XP) or to skip this step at all, you can use the -SDL_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details). +SDL_HINT_VIDEO_WIN_D3DCOMPILER hint (see SDL_hints.h for more details). Known Bugs: From 05f5219d80cd899125af5548116eee01eb6bb53e Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 15 Feb 2014 23:57:38 +0100 Subject: [PATCH 325/402] Changed text in documentation. --- WhatsNew.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/WhatsNew.txt b/WhatsNew.txt index bb10895bf6..a10938dd13 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -6,8 +6,8 @@ This is a list of major changes in SDL's version history. --------------------------------------------------------------------------- General: * Added SDL_GL_ResetAttributes() to reset OpenGL attributes to default values -* Added an API to load a database of Game Controller mappings from a file: - SDL_GameControllerAddMappingsFromFile +* Added an API to load a database of game controller mappings from a file: + SDL_GameControllerAddMappingsFromFile() * Added game controller mappings for the PS4 and OUYA controllers * Added SDL_GetDefaultAssertionHandler() and SDL_GetAssertionHandler() * Added SDL_DetachThread() @@ -18,7 +18,7 @@ General: * testgl2 does not need to link with libGL anymore * Added testgles2 test program to demonstrate working with OpenGL ES 2.0 * Added controllermap test program to visually map a game controller - + Windows: * Support for OpenGL ES 2.x contexts using either WGL or EGL (natively via the driver or emulated through ANGLE) From 9fca47e15c25999f0a7517c138764b5f14278866 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sun, 16 Feb 2014 00:04:15 +0100 Subject: [PATCH 326/402] Fixed documentation comments in SDL_hints.h file. --- include/SDL_hints.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 0c0f88f69e..2e80a6ec67 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -240,8 +240,8 @@ extern "C" { * \brief A variable that lets you disable the detection and use of Xinput gamepad devices * * The variable can be set to the following values: - * "0" - Disable XInput timer (only uses direct input) - * "1" - Enable XInput timer (the default) + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) */ #define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" @@ -264,7 +264,7 @@ extern "C" { * "0" - Disable joystick & gamecontroller input events when the * application is in the background. * "1" - Enable joystick & gamecontroller input events when the - * application is in the backgroumd. + * application is in the background. * * The default value is "0". This hint may be set at any time. */ @@ -318,7 +318,7 @@ extern "C" { * SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It * can use two different sets of binaries, those compiled by the user from source * or those provided by the Chrome browser. In the later case, these binaries require -* that SDL loads +* that SDL loads a DLL providing the shader compiler. * * This variable can be set to the following values: * "d3dcompiler_46.dll" - default, best for Vista or later. From 9f15624170da0fac6f9ea8de45416a56e3f17635 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 17 Feb 2014 11:46:23 -0500 Subject: [PATCH 327/402] Corrected battery percentage on iOS (thanks, Felix!). Fixes Bugzilla #2397. --- src/power/uikit/SDL_syspower.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/power/uikit/SDL_syspower.m b/src/power/uikit/SDL_syspower.m index e7cb9c23be..393130c208 100644 --- a/src/power/uikit/SDL_syspower.m +++ b/src/power/uikit/SDL_syspower.m @@ -87,7 +87,7 @@ } const float level = [uidev batteryLevel]; - *percent = ( (level < 0.0f) ? -1 : (((int) (level + 0.5f)) * 100) ); + *percent = ( (level < 0.0f) ? -1 : ((int) ((level * 100) + 0.5f)) ); return SDL_TRUE; /* always the definitive answer on iPhoneOS. */ } From ec7942f692557963da98e077ef333221da4bffeb Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 17 Feb 2014 11:47:54 -0500 Subject: [PATCH 328/402] s/iPhoneOS/iOS --- src/power/uikit/SDL_syspower.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/power/uikit/SDL_syspower.m b/src/power/uikit/SDL_syspower.m index 393130c208..60c42745a6 100644 --- a/src/power/uikit/SDL_syspower.m +++ b/src/power/uikit/SDL_syspower.m @@ -88,7 +88,7 @@ const float level = [uidev batteryLevel]; *percent = ( (level < 0.0f) ? -1 : ((int) ((level * 100) + 0.5f)) ); - return SDL_TRUE; /* always the definitive answer on iPhoneOS. */ + return SDL_TRUE; /* always the definitive answer on iOS. */ } #endif /* SDL_POWER_UIKIT */ From 7615d05bbdadf7d4d79b1a6a5c3274249107bc0a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 17 Feb 2014 22:20:33 -0800 Subject: [PATCH 329/402] Fixed resetting the current render target if the D3D device is reset while using a non-default render target. --- src/render/direct3d/SDL_render_d3d.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 47675c7a1d..28598207c4 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -481,6 +481,10 @@ D3D_Reset(SDL_Renderer * renderer) IDirect3DSurface9_Release(data->defaultRenderTarget); data->defaultRenderTarget = NULL; } + if (data->currentRenderTarget != NULL) { + IDirect3DSurface9_Release(data->currentRenderTarget); + data->currentRenderTarget = NULL; + } /* Release application render targets */ for (texture = renderer->textures; texture; texture = texture->next) { @@ -508,6 +512,7 @@ D3D_Reset(SDL_Renderer * renderer) IDirect3DDevice9_GetRenderTarget(data->device, 0, &data->defaultRenderTarget); D3D_InitRenderState(data); + D3D_SetRenderTarget(renderer, renderer->target); D3D_UpdateViewport(renderer); /* Let the application know that render targets were reset */ From 8ff0164a33d836a9e193da0afea1e6ff36252c58 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Wed, 19 Feb 2014 11:03:03 -0300 Subject: [PATCH 330/402] Fixes #2403, add SDL2 dependency to testgles2 (thanks Hiroyuki Iwatsuki) --- VisualC/SDL_VS2013.sln | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/VisualC/SDL_VS2013.sln b/VisualC/SDL_VS2013.sln index 82ac105d9f..c70d015d76 100644 --- a/VisualC/SDL_VS2013.sln +++ b/VisualC/SDL_VS2013.sln @@ -106,6 +106,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testjoystick", "tests\testj EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgles2", "tests\testgles2\testgles2_VS2013.vcxproj", "{E5287C64-0646-4BFA-A772-1DB5A649F35E}" + ProjectSection(ProjectDependencies) = postProject + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} = {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} = {DA956FD3-E142-46F2-9DD5-C78BEBB56B7A} + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution From 5e0c10399a7537691e8cfb8b604a4ce6075621e9 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 20 Feb 2014 16:12:11 -0300 Subject: [PATCH 331/402] Improve testgles2 exit behavior (useful on Android) --- test/testgles2.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/test/testgles2.c b/test/testgles2.c index 6e99827b02..ef9f38d607 100644 --- a/test/testgles2.c +++ b/test/testgles2.c @@ -629,7 +629,7 @@ main(int argc, char *argv[]) while (!done) { /* Check for events */ ++frames; - while (SDL_PollEvent(&event)) { + while (SDL_PollEvent(&event) && !done) { switch (event.type) { case SDL_WINDOWEVENT: switch (event.window.event) { @@ -654,16 +654,18 @@ main(int argc, char *argv[]) } SDLTest_CommonEvent(state, &event, &done); } - for (i = 0; i < state->num_windows; ++i) { - status = SDL_GL_MakeCurrent(state->windows[i], context[i]); - if (status) { - SDL_Log("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); - - /* Continue for next window */ - continue; - } - Render(state->window_w, state->window_h, &datas[i]); - SDL_GL_SwapWindow(state->windows[i]); + if (!done) { + for (i = 0; i < state->num_windows; ++i) { + status = SDL_GL_MakeCurrent(state->windows[i], context[i]); + if (status) { + SDL_Log("SDL_GL_MakeCurrent(): %s\n", SDL_GetError()); + + /* Continue for next window */ + continue; + } + Render(state->window_w, state->window_h, &datas[i]); + SDL_GL_SwapWindow(state->windows[i]); + } } } From 5f75c6514a18c0a6914c20a870af8e02b075a651 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 20 Feb 2014 17:03:55 -0300 Subject: [PATCH 332/402] Fixes #2408, VS2013: several projects of release build are not built Patch by Hiroyuki Iwatsuki --- VisualC/SDL_VS2013.sln | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/VisualC/SDL_VS2013.sln b/VisualC/SDL_VS2013.sln index c70d015d76..3f84c4db6c 100644 --- a/VisualC/SDL_VS2013.sln +++ b/VisualC/SDL_VS2013.sln @@ -142,62 +142,72 @@ Global {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|x64.Build.0 = Debug|x64 {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|Win32.ActiveCfg = Release|Win32 {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|Win32.Build.0 = Release|Win32 - {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|x64.ActiveCfg = Release|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|x64.ActiveCfg = Release|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|x64.Build.0 = Release|x64 {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|Win32.ActiveCfg = Debug|Win32 {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|Win32.Build.0 = Debug|Win32 {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|x64.ActiveCfg = Debug|x64 {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|x64.Build.0 = Debug|x64 {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|Win32.ActiveCfg = Release|Win32 {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|Win32.Build.0 = Release|Win32 - {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|x64.ActiveCfg = Release|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|x64.ActiveCfg = Release|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|x64.Build.0 = Release|x64 {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|Win32.ActiveCfg = Debug|Win32 {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|Win32.Build.0 = Debug|Win32 {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|x64.ActiveCfg = Debug|x64 {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|x64.Build.0 = Debug|x64 {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|Win32.ActiveCfg = Release|Win32 {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|Win32.Build.0 = Release|Win32 - {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|x64.ActiveCfg = Release|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|x64.ActiveCfg = Release|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|x64.Build.0 = Release|x64 {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|Win32.ActiveCfg = Debug|Win32 {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|Win32.Build.0 = Debug|Win32 {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|x64.ActiveCfg = Debug|x64 {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|x64.Build.0 = Debug|x64 {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|Win32.ActiveCfg = Release|Win32 {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|Win32.Build.0 = Release|Win32 - {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|x64.ActiveCfg = Release|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|x64.ActiveCfg = Release|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|x64.Build.0 = Release|x64 {26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.ActiveCfg = Debug|Win32 {26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.Build.0 = Debug|Win32 {26828762-C95D-4637-9CB1-7F0979523813}.Debug|x64.ActiveCfg = Debug|x64 {26828762-C95D-4637-9CB1-7F0979523813}.Debug|x64.Build.0 = Debug|x64 {26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.ActiveCfg = Release|Win32 {26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.Build.0 = Release|Win32 - {26828762-C95D-4637-9CB1-7F0979523813}.Release|x64.ActiveCfg = Release|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|x64.ActiveCfg = Release|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|x64.Build.0 = Release|x64 {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Win32.ActiveCfg = Debug|Win32 {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Win32.Build.0 = Debug|Win32 {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|x64.ActiveCfg = Debug|x64 {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|x64.Build.0 = Debug|x64 {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Win32.ActiveCfg = Release|Win32 {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Win32.Build.0 = Release|Win32 - {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|x64.ActiveCfg = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|x64.ActiveCfg = Release|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|x64.Build.0 = Release|x64 {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|Win32.ActiveCfg = Debug|Win32 {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|Win32.Build.0 = Debug|Win32 {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|x64.ActiveCfg = Debug|x64 {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Debug|x64.Build.0 = Debug|x64 {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|Win32.ActiveCfg = Release|Win32 - {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|x64.ActiveCfg = Release|Win32 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|Win32.Build.0 = Release|Win32 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|x64.ActiveCfg = Release|x64 + {EDEA9D00-AF64-45DE-8F60-5957048F2F0F}.Release|x64.Build.0 = Release|x64 {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|Win32.ActiveCfg = Debug|Win32 {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|Win32.Build.0 = Debug|Win32 {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|x64.ActiveCfg = Debug|x64 {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|x64.Build.0 = Debug|x64 {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|Win32.ActiveCfg = Release|Win32 {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|Win32.Build.0 = Release|Win32 - {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|x64.ActiveCfg = Release|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|x64.ActiveCfg = Release|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|x64.Build.0 = Release|x64 {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|Win32.ActiveCfg = Debug|Win32 {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|Win32.Build.0 = Debug|Win32 {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|x64.ActiveCfg = Debug|x64 {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|x64.Build.0 = Debug|x64 {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|Win32.ActiveCfg = Release|Win32 {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|Win32.Build.0 = Release|Win32 - {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|x64.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|x64.ActiveCfg = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|x64.Build.0 = Release|x64 {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Win32.ActiveCfg = Debug|Win32 {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Win32.Build.0 = Debug|Win32 {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|x64.ActiveCfg = Debug|x64 From c2bd8e1eb7b0d081ea69001c84b0a3d92d2cad62 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 20 Feb 2014 21:07:56 -0800 Subject: [PATCH 333/402] Fixed infinite recursion in D3D_Reset() --- src/render/direct3d/SDL_render_d3d.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 28598207c4..afa6fe92f2 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -217,6 +217,7 @@ static int D3D_UpdateTextureYUV(SDL_Renderer * renderer, SDL_Texture * texture, static int D3D_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, const SDL_Rect * rect, void **pixels, int *pitch); static void D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture); +static int D3D_SetRenderTargetInternal(SDL_Renderer * renderer, SDL_Texture * texture); static int D3D_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture); static int D3D_UpdateViewport(SDL_Renderer * renderer); static int D3D_UpdateClipRect(SDL_Renderer * renderer); @@ -512,7 +513,7 @@ D3D_Reset(SDL_Renderer * renderer) IDirect3DDevice9_GetRenderTarget(data->device, 0, &data->defaultRenderTarget); D3D_InitRenderState(data); - D3D_SetRenderTarget(renderer, renderer->target); + D3D_SetRenderTargetInternal(renderer, renderer->target); D3D_UpdateViewport(renderer); /* Let the application know that render targets were reset */ @@ -1160,14 +1161,12 @@ D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture) } static int -D3D_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture) +D3D_SetRenderTargetInternal(SDL_Renderer * renderer, SDL_Texture * texture) { D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; D3D_TextureData *texturedata; HRESULT result; - D3D_ActivateRenderer(renderer); - /* Release the previous render target if it wasn't the default one */ if (data->currentRenderTarget != NULL) { IDirect3DSurface9_Release(data->currentRenderTarget); @@ -1197,6 +1196,14 @@ D3D_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture) return 0; } +static int +D3D_SetRenderTarget(SDL_Renderer * renderer, SDL_Texture * texture) +{ + D3D_ActivateRenderer(renderer); + + return D3D_SetRenderTargetInternal(renderer, texture); +} + static int D3D_UpdateViewport(SDL_Renderer * renderer) { From 506cde8429dbf4f7fac30b715e71dbeba76e184b Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Fri, 21 Feb 2014 08:37:57 -0300 Subject: [PATCH 334/402] Fixes #2326, clean up the X11 backend a bit --- src/video/x11/SDL_x11events.c | 6 ------ src/video/x11/SDL_x11video.h | 2 ++ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index e99f91c55b..bf0b1391fe 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -28,7 +28,6 @@ #include #include /* For INT_MAX */ -#include "SDL_x11video.h" #include "SDL_x11video.h" #include "SDL_x11touch.h" #include "SDL_x11xinput2.h" @@ -993,11 +992,6 @@ X11_Pending(Display * display) return (0); } - -/* !!! FIXME: this should be exposed in a header, or something. */ -int SDL_GetNumTouch(void); -void SDL_dbus_screensaver_tickle(_THIS); - void X11_PumpEvents(_THIS) { diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 68198beccd..927e38b315 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -121,6 +121,8 @@ typedef struct SDL_VideoData extern SDL_bool X11_UseDirectColorVisuals(void); +void SDL_dbus_screensaver_tickle(_THIS); + #endif /* _SDL_x11video_h */ /* vi: set ts=4 sw=4 expandtab: */ From 9772545e277232b16f9115b0f65877f070c76eff Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 22 Feb 2014 00:55:28 -0500 Subject: [PATCH 335/402] Reworked Mac OS X joystick code to use the 10.5+ HID Manager API. Besides being a little more simple to use than the earlier IOKit HID API, and less likely to be deprecated, it also has the added benefit of working with the Sony DualShock 4 controller in Bluetooth mode out of the box, whereas the previous API has a bug that makes it report bad data for the controller. Cleaned up several other things in this code, having gone over every line of it. The remaining deprecated calls are also gone. --- src/joystick/darwin/SDL_sysjoystick.c | 1111 ++++++++--------------- src/joystick/darwin/SDL_sysjoystick_c.h | 44 +- 2 files changed, 390 insertions(+), 765 deletions(-) diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index 4be0162373..716b3e4261 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -22,22 +22,7 @@ #ifdef SDL_JOYSTICK_IOKIT -/* SDL joystick driver for Darwin / Mac OS X, based on the IOKit HID API */ -/* Written 2001 by Max Horn */ - -#include -#include -#include -#include -#include -#include -#include -#include #include -#include -#include -#include /* for NewPtrClear, DisposePtr */ -#include /* For force feedback testing. */ #include @@ -53,75 +38,99 @@ #include "../../events/SDL_events_c.h" #endif +/* The base object of the HID Manager API */ +static IOHIDManagerRef hidman = NULL; /* Linked list of all available devices */ static recDevice *gpDeviceList = NULL; -/* OSX reference to the notification object that tells us about device insertion/removal */ -IONotificationPortRef notificationPort = 0; -/* if 1 then a device was added since the last update call */ + +/* if SDL_TRUE then a device was added since the last update call */ static SDL_bool s_bDeviceAdded = SDL_FALSE; static SDL_bool s_bDeviceRemoved = SDL_FALSE; /* static incrementing counter for new joystick devices seen on the system. Devices should start with index 0 */ static int s_joystick_instance_id = -1; + static void -HIDReportErrorNum(char *strError, long numError) +FreeElementList(recElement *pElement) { - SDL_SetError(strError); + while (pElement) { + recElement *pElementNext = pElement->pNext; + SDL_free(pElement); + pElement = pElementNext; + } } -static void HIDGetCollectionElements(CFMutableDictionaryRef deviceProperties, - recDevice * pDevice); +static recDevice * +FreeDevice(recDevice *removeDevice) +{ + recDevice *pDeviceNext = NULL; + if (removeDevice) { + /* save next device prior to disposing of this device */ + pDeviceNext = removeDevice->pNext; -/* returns current value for element, polling element - * will return 0 on error conditions which should be accounted for by application - */ + if ( gpDeviceList == removeDevice ) { + gpDeviceList = pDeviceNext; + } else { + recDevice *device = gpDeviceList; + while (device->pNext != removeDevice) { + device = device->pNext; + } + device->pNext = pDeviceNext; + } + removeDevice->pNext = NULL; + + /* free element lists */ + FreeElementList(removeDevice->firstAxis); + FreeElementList(removeDevice->firstButton); + FreeElementList(removeDevice->firstHat); + + SDL_free(removeDevice); + } + return pDeviceNext; +} static SInt32 -HIDGetElementValue(recDevice * pDevice, recElement * pElement) +GetHIDElementState(recDevice *pDevice, recElement *pElement) { - IOReturn result = kIOReturnSuccess; - IOHIDEventStruct hidEvent; - hidEvent.value = 0; - - if (NULL != pDevice && NULL != pElement && NULL != pDevice->interface) { - result = - (*(pDevice->interface))->getElementValue(pDevice->interface, - pElement->cookie, - &hidEvent); - if (kIOReturnSuccess == result) { + SInt32 value = 0; + + if (pDevice && pElement) { + IOHIDValueRef valueRef; + if (IOHIDDeviceGetValue(pDevice->deviceRef, pElement->elementRef, &valueRef) == kIOReturnSuccess) { + value = (SInt32) IOHIDValueGetIntegerValue(valueRef); + /* record min and max for auto calibration */ - if (hidEvent.value < pElement->minReport) - pElement->minReport = hidEvent.value; - if (hidEvent.value > pElement->maxReport) - pElement->maxReport = hidEvent.value; + if (value < pElement->minReport) { + pElement->minReport = value; + } + if (value > pElement->maxReport) { + pElement->maxReport = value; + } } } - /* auto user scale */ - return hidEvent.value; + return value; } static SInt32 -HIDScaledCalibratedValue(recDevice * pDevice, recElement * pElement, - long min, long max) +GetHIDScaledCalibratedState(recDevice * pDevice, recElement * pElement, SInt32 min, SInt32 max) { - float deviceScale = max - min; - float readScale = pElement->maxReport - pElement->minReport; - SInt32 value = HIDGetElementValue(pDevice, pElement); - if (readScale == 0) + const float deviceScale = max - min; + const float readScale = pElement->maxReport - pElement->minReport; + const SInt32 value = GetHIDElementState(pDevice, pElement); + if (readScale == 0) { return value; /* no scaling at all */ - else - return ((value - pElement->minReport) * deviceScale / readScale) + - min; + } + return ((value - pElement->minReport) * deviceScale / readScale) + min; } static void -HIDRemovalCallback(void *target, IOReturn result, void *refcon, void *sender) +JoystickDeviceWasRemovedCallback(void *ctx, IOReturn result, void *sender) { - recDevice *device = (recDevice *) refcon; + recDevice *device = (recDevice *) ctx; device->removed = 1; #if SDL_HAPTIC_IOKIT MacHaptic_MaybeRemoveDevice(device->ffservice); @@ -130,567 +139,240 @@ HIDRemovalCallback(void *target, IOReturn result, void *refcon, void *sender) } -/* Called by the io port notifier on removal of this device - */ -void JoystickDeviceWasRemovedCallback( void * refcon, io_service_t service, natural_t messageType, void * messageArgument ) -{ - if( messageType == kIOMessageServiceIsTerminated && refcon ) - { - recDevice *device = (recDevice *) refcon; - device->removed = 1; -#if SDL_HAPTIC_IOKIT - MacHaptic_MaybeRemoveDevice(device->ffservice); -#endif - s_bDeviceRemoved = SDL_TRUE; - } -} - - -/* Create and open an interface to device, required prior to extracting values or building queues. - * Note: application now owns the device and must close and release it prior to exiting - */ - -static IOReturn -HIDCreateOpenDeviceInterface(io_object_t hidDevice, recDevice * pDevice) -{ - IOReturn result = kIOReturnSuccess; - HRESULT plugInResult = S_OK; - SInt32 score = 0; - IOCFPlugInInterface **ppPlugInInterface = NULL; - - if (NULL == pDevice->interface) { - result = - IOCreatePlugInInterfaceForService(hidDevice, - kIOHIDDeviceUserClientTypeID, - kIOCFPlugInInterfaceID, - &ppPlugInInterface, &score); - if (kIOReturnSuccess == result) { - /* Call a method of the intermediate plug-in to create the device interface */ - plugInResult = - (*ppPlugInInterface)->QueryInterface(ppPlugInInterface, - CFUUIDGetUUIDBytes - (kIOHIDDeviceInterfaceID), - (void *) - &(pDevice->interface)); - if (S_OK != plugInResult) - HIDReportErrorNum - ("Couldn't query HID class device interface from plugInInterface", - plugInResult); - (*ppPlugInInterface)->Release(ppPlugInInterface); - } else - HIDReportErrorNum - ("Failed to create **plugInInterface via IOCreatePlugInInterfaceForService.", - result); - } - if (NULL != pDevice->interface) { - result = (*(pDevice->interface))->open(pDevice->interface, 0); - if (kIOReturnSuccess != result) - HIDReportErrorNum - ("Failed to open pDevice->interface via open.", result); - else - { - pDevice->portIterator = 0; - - /* It's okay if this fails, we have another detection method below */ - (*(pDevice->interface))->setRemovalCallback(pDevice->interface, - HIDRemovalCallback, - pDevice, pDevice); - - /* now connect notification for new devices */ - pDevice->notificationPort = IONotificationPortCreate(kIOMasterPortDefault); - - CFRunLoopAddSource(CFRunLoopGetCurrent(), - IONotificationPortGetRunLoopSource(pDevice->notificationPort), - kCFRunLoopDefaultMode); - - /* Register for notifications when a serial port is added to the system */ - result = IOServiceAddInterestNotification(pDevice->notificationPort, - hidDevice, - kIOGeneralInterest, - JoystickDeviceWasRemovedCallback, - pDevice, - &pDevice->portIterator); - if (kIOReturnSuccess != result) { - HIDReportErrorNum - ("Failed to register for removal callback.", result); - } - } - - } - return result; -} +static void AddHIDElement(const void *value, void *parameter); -/* Closes and releases interface to device, should be done prior to exiting application - * Note: will have no affect if device or interface do not exist - * application will "own" the device if interface is not closed - * (device may have to be plug and re-plugged in different location to get it working again without a restart) - */ - -static IOReturn -HIDCloseReleaseInterface(recDevice * pDevice) +/* Call AddHIDElement() on all elements in an array of IOHIDElementRefs */ +static void +AddHIDElements(CFArrayRef array, recDevice *pDevice) { - IOReturn result = kIOReturnSuccess; - - if ((NULL != pDevice) && (NULL != pDevice->interface)) { - /* close the interface */ - result = (*(pDevice->interface))->close(pDevice->interface); - if (kIOReturnNotOpen == result) { - /* do nothing as device was not opened, thus can't be closed */ - } else if (kIOReturnSuccess != result) - HIDReportErrorNum("Failed to close IOHIDDeviceInterface.", - result); - /* release the interface */ - result = (*(pDevice->interface))->Release(pDevice->interface); - if (kIOReturnSuccess != result) - HIDReportErrorNum("Failed to release IOHIDDeviceInterface.", - result); - pDevice->interface = NULL; - - if ( pDevice->portIterator ) - { - IOObjectRelease( pDevice->portIterator ); - pDevice->portIterator = 0; - } - } - return result; + const CFRange range = { 0, CFArrayGetCount(array) }; + CFArrayApplyFunction(array, range, AddHIDElement, pDevice); } -/* extracts actual specific element information from each element CF dictionary entry */ - +/* See if we care about this HID element, and if so, note it in our recDevice. */ static void -HIDGetElementInfo(CFTypeRef refElement, recElement * pElement) +AddHIDElement(const void *value, void *parameter) { - long number; - CFTypeRef refType; - - refType = CFDictionaryGetValue(refElement, CFSTR(kIOHIDElementCookieKey)); - if (refType && CFNumberGetValue(refType, kCFNumberLongType, &number)) - pElement->cookie = (IOHIDElementCookie) number; - refType = CFDictionaryGetValue(refElement, CFSTR(kIOHIDElementMinKey)); - if (refType && CFNumberGetValue(refType, kCFNumberLongType, &number)) - pElement->minReport = pElement->min = number; - pElement->maxReport = pElement->min; - refType = CFDictionaryGetValue(refElement, CFSTR(kIOHIDElementMaxKey)); - if (refType && CFNumberGetValue(refType, kCFNumberLongType, &number)) - pElement->maxReport = pElement->max = number; -/* - TODO: maybe should handle the following stuff somehow? - - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementScaledMinKey)); - if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) - pElement->scaledMin = number; - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementScaledMaxKey)); - if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) - pElement->scaledMax = number; - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementSizeKey)); - if (refType && CFNumberGetValue (refType, kCFNumberLongType, &number)) - pElement->size = number; - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementIsRelativeKey)); - if (refType) - pElement->relative = CFBooleanGetValue (refType); - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementIsWrappingKey)); - if (refType) - pElement->wrapping = CFBooleanGetValue (refType); - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementIsNonLinearKey)); - if (refType) - pElement->nonLinear = CFBooleanGetValue (refType); - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementHasPreferedStateKey)); - if (refType) - pElement->preferredState = CFBooleanGetValue (refType); - refType = CFDictionaryGetValue (refElement, CFSTR(kIOHIDElementHasNullStateKey)); - if (refType) - pElement->nullState = CFBooleanGetValue (refType); -*/ -} + recDevice *pDevice = (recDevice *) parameter; + IOHIDElementRef refElement = (IOHIDElementRef) value; + const CFTypeID elementTypeID = refElement ? CFGetTypeID(refElement) : 0; -/* examines CF dictionary value in device element hierarchy to determine if it is element of interest or a collection of more elements - * if element of interest allocate storage, add to list and retrieve element specific info - * if collection then pass on to deconstruction collection into additional individual elements - */ + if (refElement && (elementTypeID == IOHIDElementGetTypeID())) { + const uint32_t usagePage = IOHIDElementGetUsagePage(refElement); + const uint32_t usage = IOHIDElementGetUsage(refElement); + recElement *element = NULL; + recElement **headElement = NULL; -static void -HIDAddElement(CFTypeRef refElement, recDevice * pDevice) -{ - recElement *element = NULL; - recElement **headElement = NULL; - long elementType, usagePage, usage; - CFTypeRef refElementType = - CFDictionaryGetValue(refElement, CFSTR(kIOHIDElementTypeKey)); - CFTypeRef refUsagePage = - CFDictionaryGetValue(refElement, CFSTR(kIOHIDElementUsagePageKey)); - CFTypeRef refUsage = - CFDictionaryGetValue(refElement, CFSTR(kIOHIDElementUsageKey)); - - - if ((refElementType) - && - (CFNumberGetValue(refElementType, kCFNumberLongType, &elementType))) { /* look at types of interest */ - if ((elementType == kIOHIDElementTypeInput_Misc) - || (elementType == kIOHIDElementTypeInput_Button) - || (elementType == kIOHIDElementTypeInput_Axis)) { - if (refUsagePage - && CFNumberGetValue(refUsagePage, kCFNumberLongType, - &usagePage) && refUsage - && CFNumberGetValue(refUsage, kCFNumberLongType, &usage)) { + switch (IOHIDElementGetType(refElement)) { + case kIOHIDElementTypeInput_Misc: + case kIOHIDElementTypeInput_Button: + case kIOHIDElementTypeInput_Axis: { switch (usagePage) { /* only interested in kHIDPage_GenericDesktop and kHIDPage_Button */ - case kHIDPage_GenericDesktop: - { - switch (usage) { /* look at usage to determine function */ - case kHIDUsage_GD_X: - case kHIDUsage_GD_Y: - case kHIDUsage_GD_Z: - case kHIDUsage_GD_Rx: - case kHIDUsage_GD_Ry: - case kHIDUsage_GD_Rz: - case kHIDUsage_GD_Slider: - case kHIDUsage_GD_Dial: - case kHIDUsage_GD_Wheel: - element = (recElement *) - NewPtrClear(sizeof(recElement)); - if (element) { - pDevice->axes++; - headElement = &(pDevice->firstAxis); - } - break; - case kHIDUsage_GD_Hatswitch: - element = (recElement *) - NewPtrClear(sizeof(recElement)); - if (element) { - pDevice->hats++; - headElement = &(pDevice->firstHat); - } - break; + case kHIDPage_GenericDesktop: + switch (usage) { + case kHIDUsage_GD_X: + case kHIDUsage_GD_Y: + case kHIDUsage_GD_Z: + case kHIDUsage_GD_Rx: + case kHIDUsage_GD_Ry: + case kHIDUsage_GD_Rz: + case kHIDUsage_GD_Slider: + case kHIDUsage_GD_Dial: + case kHIDUsage_GD_Wheel: + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->axes++; + headElement = &(pDevice->firstAxis); + } + break; + + case kHIDUsage_GD_Hatswitch: + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->hats++; + headElement = &(pDevice->firstHat); + } + break; } - } - break; - case kHIDPage_Simulation: - switch (usage) { - case kHIDUsage_Sim_Rudder: - case kHIDUsage_Sim_Throttle: - element = (recElement *) - NewPtrClear(sizeof(recElement)); - if (element) { - pDevice->axes++; - headElement = &(pDevice->firstAxis); - } - break; - - default: - break; - } - break; - case kHIDPage_Button: - element = (recElement *) - NewPtrClear(sizeof(recElement)); - if (element) { - pDevice->buttons++; - headElement = &(pDevice->firstButton); - } - break; - default: - break; + break; + + case kHIDPage_Simulation: + switch (usage) { + case kHIDUsage_Sim_Rudder: + case kHIDUsage_Sim_Throttle: + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->axes++; + headElement = &(pDevice->firstAxis); + } + break; + + default: + break; + } + break; + + case kHIDPage_Button: + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->buttons++; + headElement = &(pDevice->firstButton); + } + break; + + default: + break; } } - } else if (kIOHIDElementTypeCollection == elementType) - HIDGetCollectionElements((CFMutableDictionaryRef) refElement, - pDevice); - } + break; - if (element && headElement) { /* add to list */ - recElement *elementPrevious = NULL; - recElement *elementCurrent = *headElement; - while (elementCurrent && usage >= elementCurrent->usage) { - elementPrevious = elementCurrent; - elementCurrent = elementCurrent->pNext; - } - if (elementPrevious) { - elementPrevious->pNext = element; - } else { - *headElement = element; + #if 0 /* !!! FIXME: this causes everything to get added twice on a DualShock 4. */ + case kIOHIDElementTypeCollection: { + CFArrayRef array = IOHIDElementGetChildren(refElement); + if (array) { + AddHIDElements(array, pDevice); + } + } + break; + #endif + + default: + break; } - element->usagePage = usagePage; - element->usage = usage; - element->pNext = elementCurrent; - HIDGetElementInfo(refElement, element); - pDevice->elements++; - } -} -/* collects information from each array member in device element list (each array member = element) */ + if (element && headElement) { /* add to list */ + recElement *elementPrevious = NULL; + recElement *elementCurrent = *headElement; + while (elementCurrent && usage >= elementCurrent->usage) { + elementPrevious = elementCurrent; + elementCurrent = elementCurrent->pNext; + } + if (elementPrevious) { + elementPrevious->pNext = element; + } else { + *headElement = element; + } -static void -HIDGetElementsCFArrayHandler(const void *value, void *parameter) -{ - if (CFGetTypeID(value) == CFDictionaryGetTypeID()) - HIDAddElement((CFTypeRef) value, (recDevice *) parameter); -} + element->elementRef = refElement; + element->usagePage = usagePage; + element->usage = usage; + element->pNext = elementCurrent; -/* handles retrieval of element information from arrays of elements in device IO registry information */ + element->minReport = element->min = (SInt32) IOHIDElementGetLogicalMin(refElement); + element->maxReport = element->max = (SInt32) IOHIDElementGetLogicalMax(refElement); -static void -HIDGetElements(CFTypeRef refElementCurrent, recDevice * pDevice) -{ - CFTypeID type = CFGetTypeID(refElementCurrent); - if (type == CFArrayGetTypeID()) { /* if element is an array */ - CFRange range = { 0, CFArrayGetCount(refElementCurrent) }; - /* CountElementsCFArrayHandler called for each array member */ - CFArrayApplyFunction(refElementCurrent, range, - HIDGetElementsCFArrayHandler, pDevice); + pDevice->elements++; + } } } -/* handles extracting element information from element collection CF types - * used from top level element decoding and hierarchy deconstruction to flatten device element list - */ - -static void -HIDGetCollectionElements(CFMutableDictionaryRef deviceProperties, - recDevice * pDevice) -{ - CFTypeRef refElementTop = - CFDictionaryGetValue(deviceProperties, CFSTR(kIOHIDElementKey)); - if (refElementTop) - HIDGetElements(refElementTop, pDevice); -} - -/* use top level element usage page and usage to discern device usage page and usage setting appropriate vlaues in device record */ - -static void -HIDTopLevelElementHandler(const void *value, void *parameter) -{ - CFTypeRef refCF = 0; - if (CFGetTypeID(value) != CFDictionaryGetTypeID()) - return; - refCF = CFDictionaryGetValue(value, CFSTR(kIOHIDElementUsagePageKey)); - if (!CFNumberGetValue - (refCF, kCFNumberLongType, &((recDevice *) parameter)->usagePage)) - SDL_SetError("CFNumberGetValue error retrieving pDevice->usagePage."); - refCF = CFDictionaryGetValue(value, CFSTR(kIOHIDElementUsageKey)); - if (!CFNumberGetValue - (refCF, kCFNumberLongType, &((recDevice *) parameter)->usage)) - SDL_SetError("CFNumberGetValue error retrieving pDevice->usage."); -} - -/* extracts device info from CF dictionary records in IO registry */ - -static void -HIDGetDeviceInfo(io_object_t hidDevice, CFMutableDictionaryRef hidProperties, - recDevice * pDevice) +static SDL_bool +GetDeviceInfo(IOHIDDeviceRef hidDevice, recDevice *pDevice) { - CFMutableDictionaryRef usbProperties = 0; - io_registry_entry_t parent1, parent2; - - /* Mac OS X currently is not mirroring all USB properties to HID page so need to look at USB device page also - * get dictionary for USB properties: step up two levels and get CF dictionary for USB properties - */ - if ((KERN_SUCCESS == IORegistryEntryGetParentEntry(hidDevice, kIOServicePlane, &parent1)) - && (KERN_SUCCESS == IORegistryEntryGetParentEntry(parent1, kIOServicePlane, &parent2)) - && (KERN_SUCCESS == IORegistryEntryCreateCFProperties(parent2, &usbProperties, kCFAllocatorDefault, kNilOptions))) { - if (usbProperties) { - CFTypeRef refCF = 0; - /* get device info - * try hid dictionary first, if fail then go to usb dictionary - */ - - /* get product name */ - refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDProductKey)); - if (!refCF) { - refCF = CFDictionaryGetValue(usbProperties, CFSTR("USB Product Name")); - } - if (refCF) { - if (!CFStringGetCString(refCF, pDevice->product, 256, CFStringGetSystemEncoding())) { - SDL_SetError("CFStringGetCString error retrieving pDevice->product."); - } - } - - /* get usage page and usage */ - refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDPrimaryUsagePageKey)); - if (refCF) { - if (!CFNumberGetValue (refCF, kCFNumberLongType, &pDevice->usagePage)) { - SDL_SetError("CFNumberGetValue error retrieving pDevice->usagePage."); - } + Uint32 *guid32 = NULL; + CFTypeRef refCF = NULL; + CFArrayRef array = NULL; - refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDPrimaryUsageKey)); - if (refCF) { - if (!CFNumberGetValue (refCF, kCFNumberLongType, &pDevice->usage)) { - SDL_SetError("CFNumberGetValue error retrieving pDevice->usage."); - } - } - } - - refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDVendorIDKey)); - if (refCF) { - if (!CFNumberGetValue(refCF, kCFNumberLongType, &pDevice->guid.data[0])) { - SDL_SetError("CFNumberGetValue error retrieving pDevice->guid[0]"); - } - } + /* get usage page and usage */ + refCF = IOHIDDeviceGetProperty(hidDevice, CFSTR(kIOHIDPrimaryUsagePageKey)); + if (refCF) { + CFNumberGetValue(refCF, kCFNumberSInt32Type, &pDevice->usagePage); + } + if (pDevice->usagePage != kHIDPage_GenericDesktop) { + return SDL_FALSE; /* Filter device list to non-keyboard/mouse stuff */ + } - refCF = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDProductIDKey)); - if (refCF) { - if (!CFNumberGetValue(refCF, kCFNumberLongType, &pDevice->guid.data[8])) { - SDL_SetError("CFNumberGetValue error retrieving pDevice->guid[8]"); - } - } + refCF = IOHIDDeviceGetProperty(hidDevice, CFSTR(kIOHIDPrimaryUsageKey)); + if (refCF) { + CFNumberGetValue(refCF, kCFNumberSInt32Type, &pDevice->usage); + } - /* Check to make sure we have a vendor and product ID - If we don't, use the same algorithm as the Linux code for Bluetooth devices */ - { - Uint32 *guid32 = (Uint32*)pDevice->guid.data; - if (!guid32[0] && !guid32[1]) { - const Uint16 BUS_BLUETOOTH = 0x05; - Uint16 *guid16 = (Uint16 *)guid32; - *guid16++ = BUS_BLUETOOTH; - *guid16++ = 0; - SDL_strlcpy((char*)guid16, pDevice->product, sizeof(pDevice->guid.data) - 4); - } - } + if ((pDevice->usage != kHIDUsage_GD_Joystick && + pDevice->usage != kHIDUsage_GD_GamePad && + pDevice->usage != kHIDUsage_GD_MultiAxisController)) { + return SDL_FALSE; /* Filter device list to non-keyboard/mouse stuff */ + } - /* If we don't have a vendor and product ID this is probably a Bluetooth device */ + pDevice->deviceRef = hidDevice; - if (NULL == refCF) { /* get top level element HID usage page or usage */ - /* use top level element instead */ - CFTypeRef refCFTopElement = 0; - refCFTopElement = CFDictionaryGetValue(hidProperties, CFSTR(kIOHIDElementKey)); - { - /* refCFTopElement points to an array of element dictionaries */ - CFRange range = { 0, CFArrayGetCount(refCFTopElement) }; - CFArrayApplyFunction(refCFTopElement, range, HIDTopLevelElementHandler, pDevice); - } - } + /* get device name */ + refCF = IOHIDDeviceGetProperty(hidDevice, CFSTR(kIOHIDProductKey)); + if (!refCF) { + /* Maybe we can't get "AwesomeJoystick2000", but we can get "Logitech"? */ + refCF = IOHIDDeviceGetProperty(hidDevice, CFSTR(kIOHIDManufacturerKey)); + } + if ((!refCF) || (!CFStringGetCString(refCF, pDevice->product, sizeof (pDevice->product), kCFStringEncodingUTF8))) { + SDL_strlcpy(pDevice->product, "Unidentified joystick", sizeof (pDevice->product)); + } - CFRelease(usbProperties); - } else { - SDL_SetError("IORegistryEntryCreateCFProperties failed to create usbProperties."); - } + refCF = IOHIDDeviceGetProperty(hidDevice, CFSTR(kIOHIDVendorIDKey)); + if (refCF) { + CFNumberGetValue(refCF, kCFNumberSInt32Type, &pDevice->guid.data[0]); + } - if (kIOReturnSuccess != IOObjectRelease(parent2)) { - SDL_SetError("IOObjectRelease error with parent2"); - } - if (kIOReturnSuccess != IOObjectRelease(parent1)) { - SDL_SetError("IOObjectRelease error with parent1"); - } + refCF = IOHIDDeviceGetProperty(hidDevice, CFSTR(kIOHIDProductIDKey)); + if (refCF) { + CFNumberGetValue(refCF, kCFNumberSInt32Type, &pDevice->guid.data[8]); } -} + /* Check to make sure we have a vendor and product ID + If we don't, use the same algorithm as the Linux code for Bluetooth devices */ + guid32 = (Uint32*)pDevice->guid.data; + if (!guid32[0] && !guid32[1]) { + /* If we don't have a vendor and product ID this is probably a Bluetooth device */ + const Uint16 BUS_BLUETOOTH = 0x05; + Uint16 *guid16 = (Uint16 *)guid32; + *guid16++ = BUS_BLUETOOTH; + *guid16++ = 0; + SDL_strlcpy((char*)guid16, pDevice->product, sizeof(pDevice->guid.data) - 4); + } -static recDevice * -HIDBuildDevice(io_object_t hidDevice) -{ - recDevice *pDevice = (recDevice *) NewPtrClear(sizeof(recDevice)); - if (pDevice) { - /* get dictionary for HID properties */ - CFMutableDictionaryRef hidProperties = 0; - kern_return_t result = - IORegistryEntryCreateCFProperties(hidDevice, &hidProperties, - kCFAllocatorDefault, - kNilOptions); - if ((result == KERN_SUCCESS) && hidProperties) { - /* create device interface */ - result = HIDCreateOpenDeviceInterface(hidDevice, pDevice); - if (kIOReturnSuccess == result) { - HIDGetDeviceInfo(hidDevice, hidProperties, pDevice); /* hidDevice used to find parents in registry tree */ - HIDGetCollectionElements(hidProperties, pDevice); - } else { - DisposePtr((Ptr) pDevice); - pDevice = NULL; - } - CFRelease(hidProperties); - } else { - DisposePtr((Ptr) pDevice); - pDevice = NULL; - } + array = IOHIDDeviceCopyMatchingElements(hidDevice, NULL, kIOHIDOptionsTypeNone); + if (array) { + AddHIDElements(array, pDevice); + CFRelease(array); } - return pDevice; + + return SDL_TRUE; } -/* disposes of the element list associated with a device and the memory associated with the list - */ static void -HIDDisposeElementList(recElement ** elementList) +JoystickDeviceWasAddedCallback(void *ctx, IOReturn res, void *sender, IOHIDDeviceRef ioHIDDeviceObject) { - recElement *pElement = *elementList; - while (pElement) { - recElement *pElementNext = pElement->pNext; - DisposePtr((Ptr) pElement); - pElement = pElementNext; + if (res != kIOReturnSuccess) { + return; } - *elementList = NULL; -} -/* disposes of a single device, closing and releaseing interface, freeing memory fro device and elements, setting device pointer to NULL - * all your device no longer belong to us... (i.e., you do not 'own' the device anymore) - */ + recDevice *device = (recDevice *) SDL_calloc(1, sizeof(recDevice)); -static recDevice * -HIDDisposeDevice(recDevice ** ppDevice) -{ - kern_return_t result = KERN_SUCCESS; - recDevice *pDeviceNext = NULL; - if (*ppDevice) { - /* save next device prior to disposing of this device */ - pDeviceNext = (*ppDevice)->pNext; - - /* free posible io_service_t */ - if ((*ppDevice)->ffservice) { - IOObjectRelease((*ppDevice)->ffservice); - (*ppDevice)->ffservice = 0; - } - - /* free element lists */ - HIDDisposeElementList(&(*ppDevice)->firstAxis); - HIDDisposeElementList(&(*ppDevice)->firstButton); - HIDDisposeElementList(&(*ppDevice)->firstHat); - - result = HIDCloseReleaseInterface(*ppDevice); /* function sanity checks interface value (now application does not own device) */ - if (kIOReturnSuccess != result) - HIDReportErrorNum - ("HIDCloseReleaseInterface failed when trying to dipose device.", - result); - DisposePtr((Ptr) * ppDevice); - *ppDevice = NULL; + if (!device) { + SDL_OutOfMemory(); + return; } - return pDeviceNext; -} - -/* Given an io_object_t from OSX adds a joystick device to our list if appropriate - */ -int -AddDeviceHelper( io_object_t ioHIDDeviceObject ) -{ - recDevice *device; - - /* build a device record */ - device = HIDBuildDevice(ioHIDDeviceObject); - if (!device) - return 0; - - /* Filter device list to non-keyboard/mouse stuff */ - if ((device->usagePage != kHIDPage_GenericDesktop) || - ((device->usage != kHIDUsage_GD_Joystick && - device->usage != kHIDUsage_GD_GamePad && - device->usage != kHIDUsage_GD_MultiAxisController))) { - - /* release memory for the device */ - HIDDisposeDevice(&device); - DisposePtr((Ptr) device); - return 0; + if (!GetDeviceInfo(ioHIDDeviceObject, device)) { + SDL_free(device); + return; /* not a device we care about, probably. */ } + /* Get notified when this device is disconnected. */ + IOHIDDeviceRegisterRemovalCallback(ioHIDDeviceObject, JoystickDeviceWasRemovedCallback, device); + IOHIDDeviceScheduleWithRunLoop(ioHIDDeviceObject, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); + /* Allocate an instance ID for this device */ device->instance_id = ++s_joystick_instance_id; - /* We have to do some storage of the io_service_t for - * SDL_HapticOpenFromJoystick */ - if (FFIsForceFeedback(ioHIDDeviceObject) == FF_OK) { - device->ffservice = ioHIDDeviceObject; + /* We have to do some storage of the io_service_t for SDL_HapticOpenFromJoystick */ + if (IOHIDDeviceGetService != NULL) { /* weak reference: available in 10.6 and later. */ + const io_service_t ioservice = IOHIDDeviceGetService(ioHIDDeviceObject); + if ((ioservice) && (FFIsForceFeedback(ioservice) == FF_OK)) { + device->ffservice = ioservice; #if SDL_HAPTIC_IOKIT - MacHaptic_MaybeAddDevice(ioHIDDeviceObject); + MacHaptic_MaybeAddDevice(ioservice); #endif - } else { - device->ffservice = 0; + } } device->send_open_event = 1; @@ -712,25 +394,93 @@ AddDeviceHelper( io_object_t ioHIDDeviceObject ) } curdevice->pNext = device; } +} + +static SDL_bool +ConfigHIDManager(CFArrayRef matchingArray) +{ + CFRunLoopRef runloop = CFRunLoopGetCurrent(); + + /* Run in a custom RunLoop mode just while initializing, + so we can detect sticks without messing with everything else. */ + CFStringRef tempRunLoopMode = CFSTR("SDLJoystickInit"); + + if (IOHIDManagerOpen(hidman, kIOHIDOptionsTypeNone) != kIOReturnSuccess) { + return SDL_FALSE; + } + + IOHIDManagerRegisterDeviceMatchingCallback(hidman, JoystickDeviceWasAddedCallback, NULL); + IOHIDManagerScheduleWithRunLoop(hidman, runloop, tempRunLoopMode); + IOHIDManagerSetDeviceMatchingMultiple(hidman, matchingArray); + + while (CFRunLoopRunInMode(tempRunLoopMode,0,TRUE)==kCFRunLoopRunHandledSource) { + /* no-op. Callback fires once per existing device. */ + } - return 1; + /* Put this in the normal RunLoop mode now, for future hotplug events. */ + IOHIDManagerUnscheduleFromRunLoop(hidman, runloop, tempRunLoopMode); + IOHIDManagerScheduleWithRunLoop(hidman, runloop, kCFRunLoopDefaultMode); + + return SDL_TRUE; /* good to go. */ } -/* Called by our IO port notifier on the master port when a HID device is inserted, we iterate - * and check for new joysticks - */ -void JoystickDeviceWasAddedCallback( void *refcon, io_iterator_t iterator ) +static CFDictionaryRef +CreateHIDDeviceMatchDictionary(const UInt32 page, const UInt32 usage, int *okay) { - io_object_t ioHIDDeviceObject = 0; + CFDictionaryRef retval = NULL; + CFNumberRef pageNumRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &page); + CFNumberRef usageNumRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &usage); + const void *keys[2] = { (void *) CFSTR(kIOHIDDeviceUsagePageKey), (void *) CFSTR(kIOHIDDeviceUsageKey) }; + const void *vals[2] = { (void *) pageNumRef, (void *) usageNumRef }; - while ( ( ioHIDDeviceObject = IOIteratorNext(iterator) ) ) - { - if ( ioHIDDeviceObject ) - { - AddDeviceHelper( ioHIDDeviceObject ); + if (pageNumRef && usageNumRef) { + retval = CFDictionaryCreate(kCFAllocatorDefault, keys, vals, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); + } + + if (pageNumRef) { + CFRelease(pageNumRef); + } + if (usageNumRef) { + CFRelease(pageNumRef); + } + + if (!retval) { + *okay = 0; + } + + return retval; +} + +static SDL_bool +CreateHIDManager(void) +{ + SDL_bool retval = SDL_FALSE; + int okay = 1; + const void *vals[] = { + (void *) CreateHIDDeviceMatchDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_Joystick, &okay), + (void *) CreateHIDDeviceMatchDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_GamePad, &okay), + (void *) CreateHIDDeviceMatchDictionary(kHIDPage_GenericDesktop, kHIDUsage_GD_MultiAxisController, &okay), + }; + const size_t numElements = SDL_arraysize(vals); + CFArrayRef array = okay ? CFArrayCreate(kCFAllocatorDefault, vals, numElements, &kCFTypeArrayCallBacks) : NULL; + size_t i; + + for (i = 0; i < numElements; i++) { + if (vals[i]) { + CFRelease((CFTypeRef) vals[i]); } } + + if (array) { + hidman = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone); + if (hidman != NULL) { + retval = ConfigHIDManager(array); + } + CFRelease(array); + } + + return retval; } @@ -742,81 +492,13 @@ void JoystickDeviceWasAddedCallback( void *refcon, io_iterator_t iterator ) int SDL_SYS_JoystickInit(void) { - IOReturn result = kIOReturnSuccess; - mach_port_t masterPort = 0; - io_iterator_t hidObjectIterator = 0; - CFMutableDictionaryRef hidMatchDictionary = NULL; - io_object_t ioHIDDeviceObject = 0; - io_iterator_t portIterator = 0; - if (gpDeviceList) { return SDL_SetError("Joystick: Device list already inited."); } - result = IOMasterPort(bootstrap_port, &masterPort); - if (kIOReturnSuccess != result) { - return SDL_SetError("Joystick: IOMasterPort error with bootstrap_port."); - } - - /* Set up a matching dictionary to search I/O Registry by class name for all HID class devices. */ - hidMatchDictionary = IOServiceMatching(kIOHIDDeviceKey); - if (hidMatchDictionary) { - /* Add key for device type (joystick, in this case) to refine the matching dictionary. */ - - /* NOTE: we now perform this filtering later - UInt32 usagePage = kHIDPage_GenericDesktop; - UInt32 usage = kHIDUsage_GD_Joystick; - CFNumberRef refUsage = NULL, refUsagePage = NULL; - - refUsage = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &usage); - CFDictionarySetValue (hidMatchDictionary, CFSTR (kIOHIDPrimaryUsageKey), refUsage); - refUsagePage = CFNumberCreate (kCFAllocatorDefault, kCFNumberIntType, &usagePage); - CFDictionarySetValue (hidMatchDictionary, CFSTR (kIOHIDPrimaryUsagePageKey), refUsagePage); - */ - } else { - return SDL_SetError - ("Joystick: Failed to get HID CFMutableDictionaryRef via IOServiceMatching."); - } - - /* Now search I/O Registry for matching devices. */ - result = - IOServiceGetMatchingServices(masterPort, hidMatchDictionary, - &hidObjectIterator); - /* Check for errors */ - if (kIOReturnSuccess != result) { - return SDL_SetError("Joystick: Couldn't create a HID object iterator."); - } - if (!hidObjectIterator) { /* there are no joysticks */ - gpDeviceList = NULL; - return 0; - } - /* IOServiceGetMatchingServices consumes a reference to the dictionary, so we don't need to release the dictionary ref. */ - - /* build flat linked list of devices from device iterator */ - - gpDeviceList = NULL; - - while ((ioHIDDeviceObject = IOIteratorNext(hidObjectIterator))) { - AddDeviceHelper( ioHIDDeviceObject ); + if (!CreateHIDManager()) { + return SDL_SetError("Joystick: Couldn't initialize HID Manager"); } - result = IOObjectRelease(hidObjectIterator); /* release the iterator */ - - /* now connect notification for new devices */ - notificationPort = IONotificationPortCreate(masterPort); - hidMatchDictionary = IOServiceMatching(kIOHIDDeviceKey); - - CFRunLoopAddSource(CFRunLoopGetCurrent(), - IONotificationPortGetRunLoopSource(notificationPort), - kCFRunLoopDefaultMode); - - /* Register for notifications when a serial port is added to the system */ - result = IOServiceAddMatchingNotification(notificationPort, - kIOFirstMatchNotification, - hidMatchDictionary, - JoystickDeviceWasAddedCallback, - NULL, - &portIterator); - while (IOIteratorNext(portIterator)) {}; /* Run out the iterator or notifications won't start (you can also use it to iterate the available devices). */ return SDL_SYS_NumJoysticks(); } @@ -828,10 +510,10 @@ SDL_SYS_NumJoysticks() recDevice *device = gpDeviceList; int nJoySticks = 0; - while ( device ) - { - if ( !device->removed ) + while (device) { + if (!device->removed) { nJoySticks++; + } device = device->pNext; } @@ -843,18 +525,16 @@ SDL_SYS_NumJoysticks() void SDL_SYS_JoystickDetect() { - if ( s_bDeviceAdded || s_bDeviceRemoved ) - { + if (s_bDeviceAdded || s_bDeviceRemoved) { recDevice *device = gpDeviceList; s_bDeviceAdded = SDL_FALSE; s_bDeviceRemoved = SDL_FALSE; int device_index = 0; /* send notifications */ - while ( device ) - { - if ( device->send_open_event ) - { + while (device) { + if (device->send_open_event) { device->send_open_event = 0; +/* !!! FIXME: why isn't there an SDL_PrivateJoyDeviceAdded()? */ #if !SDL_EVENTS_DISABLED SDL_Event event; event.type = SDL_JOYDEVICEADDED; @@ -870,43 +550,25 @@ SDL_SYS_JoystickDetect() } - if ( device->removed ) - { - recDevice *removeDevice = device; - if ( gpDeviceList == removeDevice ) - { - device = device->pNext; - gpDeviceList = device; - } - else - { - device = gpDeviceList; - while ( device->pNext != removeDevice ) - { - device = device->pNext; - } - - device->pNext = removeDevice->pNext; - } + if (device->removed) { + const int instance_id = device->instance_id; + device = FreeDevice(device); +/* !!! FIXME: why isn't there an SDL_PrivateJoyDeviceRemoved()? */ #if !SDL_EVENTS_DISABLED SDL_Event event; event.type = SDL_JOYDEVICEREMOVED; if (SDL_GetEventState(event.type) == SDL_ENABLE) { - event.jdevice.which = removeDevice->instance_id; + event.jdevice.which = instance_id; if ((SDL_EventOK == NULL) || (*SDL_EventOK) (SDL_EventOKParam, &event)) { SDL_PushEvent(&event); } } - - DisposePtr((Ptr) removeDevice); #endif /* !SDL_EVENTS_DISABLED */ - } - else - { + } else { device = device->pNext; device_index++; } @@ -926,8 +588,9 @@ SDL_SYS_JoystickNameForDeviceIndex(int device_index) { recDevice *device = gpDeviceList; - for (; device_index > 0; device_index--) + while (device_index-- > 0) { device = device->pNext; + } return device->product; } @@ -940,8 +603,9 @@ SDL_SYS_GetInstanceIdOfDeviceIndex(int device_index) recDevice *device = gpDeviceList; int index; - for (index = device_index; index > 0; index--) + for (index = device_index; index > 0; index--) { device = device->pNext; + } return device->instance_id; } @@ -957,8 +621,9 @@ SDL_SYS_JoystickOpen(SDL_Joystick * joystick, int device_index) recDevice *device = gpDeviceList; int index; - for (index = device_index; index > 0; index--) + for (index = device_index; index > 0; index--) { device = device->pNext; + } joystick->instance_id = device->instance_id; joystick->hwdata = device; @@ -979,11 +644,10 @@ SDL_SYS_JoystickAttached(SDL_Joystick * joystick) { recDevice *device = gpDeviceList; - while ( device ) - { - if ( joystick->instance_id == device->instance_id ) + while (device) { + if (joystick->instance_id == device->instance_id) { return SDL_TRUE; - + } device = device->pNext; } @@ -1003,53 +667,24 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) SInt32 value, range; int i; - if ( !device ) + if (!device) { return; + } if (device->removed) { /* device was unplugged; ignore it. */ - recDevice *devicelist = gpDeviceList; joystick->closed = 1; joystick->uncentered = 1; - - if ( devicelist == device ) - { - gpDeviceList = device->pNext; - } - else - { - while ( devicelist->pNext != device ) - { - devicelist = devicelist->pNext; - } - - devicelist->pNext = device->pNext; - } - - DisposePtr((Ptr) device); joystick->hwdata = NULL; - -#if !SDL_EVENTS_DISABLED - SDL_Event event; - event.type = SDL_JOYDEVICEREMOVED; - - if (SDL_GetEventState(event.type) == SDL_ENABLE) { - event.jdevice.which = joystick->instance_id; - if ((SDL_EventOK == NULL) - || (*SDL_EventOK) (SDL_EventOKParam, &event)) { - SDL_PushEvent(&event); - } - } -#endif /* !SDL_EVENTS_DISABLED */ - return; } element = device->firstAxis; i = 0; while (element) { - value = HIDScaledCalibratedValue(device, element, -32768, 32767); - if (value != joystick->axes[i]) + value = GetHIDScaledCalibratedState(device, element, -32768, 32767); + if (value != joystick->axes[i]) { SDL_PrivateJoystickAxis(joystick, i, value); + } element = element->pNext; ++i; } @@ -1057,11 +692,13 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) element = device->firstButton; i = 0; while (element) { - value = HIDGetElementValue(device, element); - if (value > 1) /* handle pressure-sensitive buttons */ + value = GetHIDElementState(device, element); + if (value > 1) { /* handle pressure-sensitive buttons */ value = 1; - if (value != joystick->buttons[i]) + } + if (value != joystick->buttons[i]) { SDL_PrivateJoystickButton(joystick, i, value); + } element = element->pNext; ++i; } @@ -1072,11 +709,12 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) Uint8 pos = 0; range = (element->max - element->min + 1); - value = HIDGetElementValue(device, element) - element->min; - if (range == 4) /* 4 position hatswitch - scale up value */ + value = GetHIDElementState(device, element) - element->min; + if (range == 4) { /* 4 position hatswitch - scale up value */ value *= 2; - else if (range != 8) /* Neither a 4 nor 8 positions - fall back to default position (centered) */ + } else if (range != 8) { /* Neither a 4 nor 8 positions - fall back to default position (centered) */ value = -1; + } switch (value) { case 0: pos = SDL_HAT_UP; @@ -1110,13 +748,14 @@ SDL_SYS_JoystickUpdate(SDL_Joystick * joystick) pos = SDL_HAT_CENTERED; break; } - if (pos != joystick->hats[i]) + + if (pos != joystick->hats[i]) { SDL_PrivateJoystickHat(joystick, i, pos); + } + element = element->pNext; ++i; } - - return; } /* Function to close a joystick after use */ @@ -1130,14 +769,17 @@ SDL_SYS_JoystickClose(SDL_Joystick * joystick) void SDL_SYS_JoystickQuit(void) { - while (NULL != gpDeviceList) - gpDeviceList = HIDDisposeDevice(&gpDeviceList); + while (FreeDevice(gpDeviceList)) { + /* spin */ + } - if ( notificationPort ) - { - IONotificationPortDestroy( notificationPort ); - notificationPort = 0; + if (hidman) { + IOHIDManagerClose(hidman, kIOHIDOptionsTypeNone); + CFRelease(hidman); + hidman = NULL; } + + s_bDeviceAdded = s_bDeviceRemoved = SDL_FALSE; } @@ -1146,8 +788,9 @@ SDL_JoystickGUID SDL_SYS_JoystickGetDeviceGUID( int device_index ) recDevice *device = gpDeviceList; int index; - for (index = device_index; index > 0; index--) + for (index = device_index; index > 0; index--) { device = device->pNext; + } return device->guid; } diff --git a/src/joystick/darwin/SDL_sysjoystick_c.h b/src/joystick/darwin/SDL_sysjoystick_c.h index 6f3372f2b2..e1c6f719e6 100644 --- a/src/joystick/darwin/SDL_sysjoystick_c.h +++ b/src/joystick/darwin/SDL_sysjoystick_c.h @@ -22,34 +22,18 @@ #ifndef SDL_JOYSTICK_IOKIT_H - #include -#include -#include - struct recElement { - IOHIDElementCookie cookie; /* unique value which identifies element, will NOT change */ - long usagePage, usage; /* HID usage */ - long min; /* reported min value possible */ - long max; /* reported max value possible */ -#if 0 - /* TODO: maybe should handle the following stuff somehow? */ - - long scaledMin; /* reported scaled min value possible */ - long scaledMax; /* reported scaled max value possible */ - long size; /* size in bits of data return from element */ - Boolean relative; /* are reports relative to last report (deltas) */ - Boolean wrapping; /* does element wrap around (one value higher than max is min) */ - Boolean nonLinear; /* are the values reported non-linear relative to element movement */ - Boolean preferredState; /* does element have a preferred state (such as a button) */ - Boolean nullState; /* does element have null state */ -#endif /* 0 */ + IOHIDElementRef elementRef; + uint32_t usagePage, usage; /* HID usage */ + SInt32 min; /* reported min value possible */ + SInt32 max; /* reported max value possible */ /* runtime variables used for auto-calibration */ - long minReport; /* min returned value */ - long maxReport; /* max returned value */ + SInt32 minReport; /* min returned value */ + SInt32 maxReport; /* max returned value */ struct recElement *pNext; /* next element in list */ }; @@ -57,19 +41,17 @@ typedef struct recElement recElement; struct joystick_hwdata { + IOHIDDeviceRef deviceRef; /* HIDManager device handle */ io_service_t ffservice; /* Interface for force feedback, 0 = no ff */ - IOHIDDeviceInterface **interface; /* interface to device, NULL = no interface */ - IONotificationPortRef notificationPort; /* port to be notified on joystick removal */ - io_iterator_t portIterator; /* iterator for removal callback */ char product[256]; /* name of product */ - long usage; /* usage page from IOUSBHID Parser.h which defines general usage */ - long usagePage; /* usage within above page from IOUSBHID Parser.h which defines specific usage */ + uint32_t usage; /* usage page from IOUSBHID Parser.h which defines general usage */ + uint32_t usagePage; /* usage within above page from IOUSBHID Parser.h which defines specific usage */ - long axes; /* number of axis (calculated, not reported by device) */ - long buttons; /* number of buttons (calculated, not reported by device) */ - long hats; /* number of hat switches (calculated, not reported by device) */ - long elements; /* number of total elements (should be total of above) (calculated, not reported by device) */ + int axes; /* number of axis (calculated, not reported by device) */ + int buttons; /* number of buttons (calculated, not reported by device) */ + int hats; /* number of hat switches (calculated, not reported by device) */ + int elements; /* number of total elements (should be total of above) (calculated, not reported by device) */ recElement *firstAxis; recElement *firstButton; From d8c042765044bcf34edc98d9056b09b7d2012542 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 10:40:12 -0800 Subject: [PATCH 336/402] Thou shalt not use more than 4k local variables in this code. --- src/stdlib/SDL_stdlib.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/stdlib/SDL_stdlib.c b/src/stdlib/SDL_stdlib.c index 1eb9a12dd1..7c2e0d57ab 100644 --- a/src/stdlib/SDL_stdlib.c +++ b/src/stdlib/SDL_stdlib.c @@ -278,12 +278,6 @@ void * memcpy ( void * destination, const void * source, size_t num ) #ifdef _M_IX86 -void -__declspec(naked) -_chkstk() -{ -} - /* Float to long */ void __declspec(naked) From 01f8ff564ebfaf9b9111c618f057b086b0c4064c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 14:57:12 -0800 Subject: [PATCH 337/402] Fixed bug 2346 - Mac: mousewheel events have flipped horizontal scroll values Alex Szpakowski On my Mac OS X system (10.9.1), the SDL_MOUSEWHEEL event reports negative X values when my trackpad scrolls to the right, and positive X values when my trackpad scrolls to the left. This is backwards from what I'd expect, and I don't think it matches the Windows wheel events. The vertical scroll values are what I'd expect though, and are consistent what gets reported on Windows (positive Y for scrolling up, negative Y for scrolling down.) This is with "scroll direction: natural" disabled in the OS X trackpad settings (i.e. my scroll direction in non-SDL OS X programs matches what happens in Windows and Linux.) I also tested with the horizontal scroll on a real mouse (Logitech G500 without custom drivers), and the horizontal scroll values in SDL are still flipped. I "solved" the issue for myself by changing this line in the Cocoa_HandleMouseWheel function: float x = [event deltaX]; to this: float x = -[event deltaX]; I believe it should work fine with that change - I found something similar in another codebase while looking online for my issue - but I haven't tested on anything below Mac OS 10.8. --- include/SDL_events.h | 4 ++-- src/video/cocoa/SDL_cocoamouse.m | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/SDL_events.h b/include/SDL_events.h index 0b848b944b..fc5a145e75 100644 --- a/include/SDL_events.h +++ b/include/SDL_events.h @@ -257,8 +257,8 @@ typedef struct SDL_MouseWheelEvent Uint32 timestamp; Uint32 windowID; /**< The window with mouse focus, if any */ Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ - Sint32 x; /**< The amount scrolled horizontally */ - Sint32 y; /**< The amount scrolled vertically */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ } SDL_MouseWheelEvent; /** diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index 98b0e6161e..56f6796328 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -291,7 +291,7 @@ + (NSCursor *)invisibleCursor { SDL_Mouse *mouse = SDL_GetMouse(); - float x = [event deltaX]; + float x = -[event deltaX]; float y = [event deltaY]; if (x > 0) { From 8746f33765c3ce48f46b066237d1d1a00e41712f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 15:23:09 -0800 Subject: [PATCH 338/402] Fixed bug 2407 - Support for OpenGL ES 3 contexts on iOS Alex Szpakowski Currently the UIKit/EAGL backend for SDL's OpenGL context creation API doesn't support OpenGL ES 3, despite iOS 7+ being capable (on devices with the necessary hardware.) I have attached a patch to add support. It's also slightly more future-proof, so eventual OpenGL ES 4+ capability on iOS should hopefully work without requiring changes to SDL's UIKit/EAGL backend. --- src/video/uikit/SDL_uikitopenglview.m | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/video/uikit/SDL_uikitopenglview.m b/src/video/uikit/SDL_uikitopenglview.m index c6daa1e43e..5c163c9a09 100644 --- a/src/video/uikit/SDL_uikitopenglview.m +++ b/src/video/uikit/SDL_uikitopenglview.m @@ -56,6 +56,11 @@ - (id)initWithFrame:(CGRect)frame const BOOL useDepthBuffer = (depthBits != 0); NSString *colorFormat = nil; + /* The EAGLRenderingAPI enum values currently map 1:1 to major GLES + versions, and this allows us to handle future OpenGL ES versions. + */ + EAGLRenderingAPI api = majorVersion; + if (rBits == 8 && gBits == 8 && bBits == 8) { /* if user specifically requests rbg888 or some color format higher than 16bpp */ colorFormat = kEAGLColorFormatRGBA8; @@ -71,11 +76,7 @@ - (id)initWithFrame:(CGRect)frame eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool: retained], kEAGLDrawablePropertyRetainedBacking, colorFormat, kEAGLDrawablePropertyColorFormat, nil]; - if (majorVersion > 1) { - context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:shareGroup]; - } else { - context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1 sharegroup:shareGroup]; - } + context = [[EAGLContext alloc] initWithAPI:api sharegroup:shareGroup]; if (!context || ![EAGLContext setCurrentContext:context]) { [self release]; SDL_SetError("OpenGL ES %d not supported", majorVersion); From b31ab9ac54e30e4bceaddfdd6c87da081ef08ecf Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 15:27:11 -0800 Subject: [PATCH 339/402] Fixed bug 2414 - Execute event watchers in the order they were added Leonardo Event watchers are being executed on the inverse order they are added because they are added to the head of the SDL_event_watchers list. Since watchers are allowed to change events before they are reported (they shouldn't, imo), this breaks code that rely on watcher execution order (such as distributed event handling). An easy scenario to see this behaving weird to the user is if you add an event watcher to check mouse coordinates and check them again in your event loop. If you add the watcher after renderer's one (which always happens after you have initialized renderer), you get the same event but different coordinates. The proposed patch adds the event watcher in the tail of the list, not in the beginning, and correctly fixes this problem. --- src/events/SDL_events.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/events/SDL_events.c b/src/events/SDL_events.c index 3944ade21e..7a98c30218 100644 --- a/src/events/SDL_events.c +++ b/src/events/SDL_events.c @@ -503,17 +503,28 @@ SDL_GetEventFilter(SDL_EventFilter * filter, void **userdata) void SDL_AddEventWatch(SDL_EventFilter filter, void *userdata) { - SDL_EventWatcher *watcher; + SDL_EventWatcher *watcher, *tail; watcher = (SDL_EventWatcher *)SDL_malloc(sizeof(*watcher)); if (!watcher) { /* Uh oh... */ return; } + + /* create the watcher */ watcher->callback = filter; watcher->userdata = userdata; - watcher->next = SDL_event_watchers; - SDL_event_watchers = watcher; + watcher->next = NULL; + + /* add the watcher to the end of the list */ + if (SDL_event_watchers) { + for (tail = SDL_event_watchers; tail->next; tail = tail->next) { + continue; + } + tail->next = watcher; + } else { + SDL_event_watchers = watcher; + } } /* FIXME: This is not thread-safe yet */ From 7cb736832e1fadd611bc0feaec67d3dd1102b30e Mon Sep 17 00:00:00 2001 From: James Legg Date: Fri, 21 Feb 2014 13:57:53 +0000 Subject: [PATCH 340/402] Fix audio conversion when channel count changes - Use the SDL_AUDIO_MASK_DATATYPE bit when selecting an implementation where it matters. Previously two existing AUDIO_F32 cases had been written, but were unreachable. - Add AUDIO_F32 case for SDL_ConvertSurround_4. - Fix incorrect pointer arithmetic causing the 2 to 6 channel conversion for 4 byte audio formats to read and write beyond the end of the buffer. --- src/audio/SDL_audiocvt.c | 54 ++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/src/audio/SDL_audiocvt.c b/src/audio/SDL_audiocvt.c index b167b94a0f..518735bfcc 100644 --- a/src/audio/SDL_audiocvt.c +++ b/src/audio/SDL_audiocvt.c @@ -39,7 +39,9 @@ SDL_ConvertMono(SDL_AudioCVT * cvt, SDL_AudioFormat format) #ifdef DEBUG_CONVERT fprintf(stderr, "Converting to mono\n"); #endif - switch (format & (SDL_AUDIO_MASK_SIGNED | SDL_AUDIO_MASK_BITSIZE)) { + switch (format & (SDL_AUDIO_MASK_SIGNED | + SDL_AUDIO_MASK_BITSIZE | + SDL_AUDIO_MASK_DATATYPE)) { case AUDIO_U8: { Uint8 *src, *dst; @@ -331,7 +333,9 @@ SDL_ConvertSurround(SDL_AudioCVT * cvt, SDL_AudioFormat format) fprintf(stderr, "Converting stereo to surround\n"); #endif - switch (format & (SDL_AUDIO_MASK_SIGNED | SDL_AUDIO_MASK_BITSIZE)) { + switch (format & (SDL_AUDIO_MASK_SIGNED | + SDL_AUDIO_MASK_BITSIZE | + SDL_AUDIO_MASK_DATATYPE)) { case AUDIO_U8: { Uint8 *src, *dst, lf, rf, ce; @@ -499,8 +503,8 @@ SDL_ConvertSurround(SDL_AudioCVT * cvt, SDL_AudioFormat format) case AUDIO_S32: { Sint32 lf, rf, ce; - const Uint32 *src = (const Uint32 *) cvt->buf + cvt->len_cvt; - Uint32 *dst = (Uint32 *) cvt->buf + cvt->len_cvt * 3; + const Uint32 *src = (const Uint32 *) (cvt->buf + cvt->len_cvt); + Uint32 *dst = (Uint32 *) (cvt->buf + cvt->len_cvt * 3); if (SDL_AUDIO_ISBIGENDIAN(format)) { for (i = cvt->len_cvt / 8; i; --i) { @@ -537,8 +541,8 @@ SDL_ConvertSurround(SDL_AudioCVT * cvt, SDL_AudioFormat format) case AUDIO_F32: { float lf, rf, ce; - const float *src = (const float *) cvt->buf + cvt->len_cvt; - float *dst = (float *) cvt->buf + cvt->len_cvt * 3; + const float *src = (const float *) (cvt->buf + cvt->len_cvt); + float *dst = (float *) (cvt->buf + cvt->len_cvt * 3); if (SDL_AUDIO_ISBIGENDIAN(format)) { for (i = cvt->len_cvt / 8; i; --i) { @@ -588,7 +592,9 @@ SDL_ConvertSurround_4(SDL_AudioCVT * cvt, SDL_AudioFormat format) fprintf(stderr, "Converting stereo to quad\n"); #endif - switch (format & (SDL_AUDIO_MASK_SIGNED | SDL_AUDIO_MASK_BITSIZE)) { + switch (format & (SDL_AUDIO_MASK_SIGNED | + SDL_AUDIO_MASK_BITSIZE | + SDL_AUDIO_MASK_DATATYPE)) { case AUDIO_U8: { Uint8 *src, *dst, lf, rf, ce; @@ -762,6 +768,40 @@ SDL_ConvertSurround_4(SDL_AudioCVT * cvt, SDL_AudioFormat format) } } break; + + case AUDIO_F32: + { + const float *src = (const float *) (cvt->buf + cvt->len_cvt); + float *dst = (float *) (cvt->buf + cvt->len_cvt * 2); + float lf, rf, ce; + + if (SDL_AUDIO_ISBIGENDIAN(format)) { + for (i = cvt->len_cvt / 8; i; --i) { + dst -= 4; + src -= 2; + lf = SDL_SwapFloatBE(src[0]); + rf = SDL_SwapFloatBE(src[1]); + ce = (lf / 2) + (rf / 2); + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = SDL_SwapFloatBE(lf - ce); + dst[3] = SDL_SwapFloatBE(rf - ce); + } + } else { + for (i = cvt->len_cvt / 8; i; --i) { + dst -= 4; + src -= 2; + lf = SDL_SwapFloatLE(src[0]); + rf = SDL_SwapFloatLE(src[1]); + ce = (lf / 2) + (rf / 2); + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = SDL_SwapFloatLE(lf - ce); + dst[3] = SDL_SwapFloatLE(rf - ce); + } + } + } + break; } cvt->len_cvt *= 2; if (cvt->filters[++cvt->filter_index]) { From 3993cee8dcd26ca2ec3accb17e750bd8923c8951 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 15:34:31 -0800 Subject: [PATCH 341/402] Fixed bug 2298 - undefined reference to `IID_IUnknown' on cygwin Brian Minton When building static or shared libraries on cygwin 1.7.25 on Windows 7 (32-bit), I get the following link errors: build/.libs/SDL_windowskeyboard.o: In function `UIElementSink_QueryInterface@12': /home/c-bminton/src/SDL/src/video/windows/SDL_windowskeyboard.c:995: undefined reference to `IID_IUnknown' build/.libs/SDL_windowskeyboard.o: In function `IPPASink_QueryInterface@12': /home/c-bminton/src/SDL/src/video/windows/SDL_windowskeyboard.c:1101: undefined reference to `IID_IUnknown' collect2: error: ld returned 1 exit status Makefile:126: recipe for target 'build/libSDL2.la' failed make: *** [build/libSDL2.la] Error 1 -- The libuuid from e2fsprogs is completely unrelated to the w32api UUID.DLL implib. FWIW, any *NIX software that I've seen obviously wants the e2fsprogs version, but if libuuid-devel is installed (in /usr/lib) then you can't link against the w32api implib with a simple -luuid. --- configure | 7 ++++++- configure.in | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/configure b/configure index ccb585e25b..be5648476a 100755 --- a/configure +++ b/configure @@ -22808,7 +22808,12 @@ $as_echo "#define SDL_LOADSO_WINDOWS 1" >>confdefs.h have_loadso=yes fi # Set up the system libraries we need - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -XCClinker -static-libgcc" + if -f /lib/w32api/libuuid.a ; then + LIBUUID=/lib/w32api/libuuid.a + else + LIBUUID=-luuid + fi + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion $LIBUUID -XCClinker -static-libgcc" # The Windows platform requires special setup VERSION_SOURCES="$srcdir/src/main/windows/*.rc" SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c" diff --git a/configure.in b/configure.in index 3c7adcba18..2decb13734 100644 --- a/configure.in +++ b/configure.in @@ -2860,7 +2860,12 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau have_loadso=yes fi # Set up the system libraries we need - EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -XCClinker -static-libgcc" + if [ -f /lib/w32api/libuuid.a ]; then + LIBUUID=/lib/w32api/libuuid.a + else + LIBUUID=-luuid + fi + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion $LIBUUID -XCClinker -static-libgcc" # The Windows platform requires special setup VERSION_SOURCES="$srcdir/src/main/windows/*.rc" SDLMAIN_SOURCES="$srcdir/src/main/windows/*.c" From 46b5250d747d2396e3c2eb2dbd30aa2ae36b96c5 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 17:32:18 -0800 Subject: [PATCH 342/402] Fixed bug 2395 - OSX: App name in the menu bar is not localized. Tim McDaniel On OSX, the app name in the menu bar is not localized. This can be fixed using the following implementation for GetApplicationName in SDL_cocoaevents.m: static NSString * GetApplicationName(void) { NSDictionary *dict; NSString *appName = 0; appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; if (!appName) appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; if (![appName length]) appName = [[NSProcessInfo processInfo] processName]; return appName; } --- src/video/cocoa/SDL_cocoaevents.m | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index b3a6e93fa2..a219e29ac7 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -125,13 +125,12 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam static NSString * GetApplicationName(void) { - NSDictionary *dict; - NSString *appName = 0; + NSString *appName; /* Determine the application name */ - dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); - if (dict) - appName = [dict objectForKey: @"CFBundleName"]; + appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]; + if (!appName) + appName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; if (![appName length]) appName = [[NSProcessInfo processInfo] processName]; From 1c7ef8300590c929f025b3a9eef28ec44b21c73b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 17:39:35 -0800 Subject: [PATCH 343/402] Don't fail initialization if the helper window class already exists. --- src/video/windows/SDL_windowswindow.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 7bf9e55638..98de45428d 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -673,7 +673,7 @@ SDL_HelperWindowCreate(void) /* Register the class. */ SDL_HelperWindowClass = RegisterClass(&wce); - if (SDL_HelperWindowClass == 0) { + if (SDL_HelperWindowClass == 0 && GetLastError() != ERROR_CLASS_ALREADY_EXISTS) { return WIN_SetError("Unable to create Helper Window Class"); } From 3a0bc67c9628611772a47931db9673c7e3a71830 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 17:55:58 -0800 Subject: [PATCH 344/402] Fixed bug 2347 - On OSX, an SDL app prevents system shutdown. Tim McDaniel On OSX, an SDL app forces a system shutdown to be cancelled. This happens because [SDLAppDelegate applicationShouldTerminate] returns NSTerminateCancel. A better approach is to subclass NSApplication and override terminate to do nothing except call SDL_SendQuit. In response to a system shutdown notification, this allows the normal SDL Quit event processing to occur, and if the app then terminates, system shutdown occurs normally. Please see the attached patch, based on SDL 2.0.1. --- src/video/cocoa/SDL_cocoaevents.m | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index a219e29ac7..b3baa8378c 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -36,6 +36,22 @@ #define UsrActivity 1 #endif +@interface SDLApplication : NSApplication + +- (void)terminate:(id)sender; + +@end + +@implementation SDLApplication + +// Override terminate to handle Quit and System Shutdown smoothly. +- (void)terminate:(id)sender +{ + SDL_SendQuit(); +} + +@end // SDLApplication + /* setAppleMenu disappeared from the headers in 10.4 */ @interface NSApplication(NSAppleMenu) - (void)setAppleMenu:(NSMenu *)menu; @@ -71,12 +87,6 @@ - (void)dealloc [super dealloc]; } -- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender -{ - SDL_SendQuit(); - return NSTerminateCancel; -} - - (void)focusSomeWindow:(NSNotification *)aNotification { /* HACK: Ignore the first call. The application gets a @@ -255,7 +265,7 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam pool = [[NSAutoreleasePool alloc] init]; if (NSApp == nil) { - [NSApplication sharedApplication]; + [SDLApplication sharedApplication]; if ([NSApp mainMenu] == nil) { CreateApplicationMenus(); From 1f6ca240a5ba4b117938a05b50436c69d76759df Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 18:01:18 -0800 Subject: [PATCH 345/402] Fixed bug 2335 - Fails to build on Debian GNU/kFreeBSD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Felix Geyer Starting from version 2.0.1 libsdl fails to build on Debian GNU/kFreeBSD in SDL_cpuinfo.c. GNU/kFreeBSD defines __FreeBSD_kernel__ but not __FreeBSD__. The #ifdef __FreeBSD__ check should be extended for __FreeBSD_kernel__, see the attached patch. Build log: libtool: compile: gcc -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -DUSING_GENERATED_CONFIG_H -Iinclude -I/«BUILDDIR»/libsdl2-2.0.1+dfsg1/include -mmmx -m3dnow -msse -msse2 -fvisibility=hidden -D_REENTRANT -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-kfreebsd-gnu/dbus-1.0/include -DHAVE_USBHID_H -DUSBHID_NEW -D_REENTRANT -Wall -c /«BUILDDIR»/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c -fPIC -DPIC -o build/.libs/SDL_cpuinfo.o /«BUILDDIR»/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c: In function 'SDL_GetSystemRAM': /«BUILDDIR»/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c:632:35: error: 'HW_MEMSIZE' undeclared (first use in this function) int mib[2] = {CTL_HW, HW_MEMSIZE}; ^ /«BUILDDIR»/libsdl2-2.0.1+dfsg1/src/cpuinfo/SDL_cpuinfo.c:632:35: note: each undeclared identifier is reported only once for each function it appears in make[2]: *** [build/SDL_cpuinfo.lo] Error 1 --- src/cpuinfo/SDL_cpuinfo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index 11acea5746..a3bde8ccd6 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -653,7 +653,7 @@ SDL_GetSystemRAM(void) #endif #ifdef HAVE_SYSCTLBYNAME if (SDL_SystemRAM <= 0) { -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #ifdef HW_REALMEM int mib[2] = {CTL_HW, HW_REALMEM}; #else @@ -662,7 +662,7 @@ SDL_GetSystemRAM(void) #endif /* HW_REALMEM */ #else int mib[2] = {CTL_HW, HW_MEMSIZE}; -#endif /* __FreeBSD__ */ +#endif /* __FreeBSD__ || __FreeBSD_kernel__ */ Uint64 memsize = 0; size_t len = sizeof(memsize); From 7d92684cb74b665d48aa11b3fcebeb6690da5383 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 22 Feb 2014 19:10:45 -0800 Subject: [PATCH 346/402] Fixed bug 2404 - CPU detection not working with MSVC on x64 Tiemo Jung All CPU detection functions SDL_Has* will return false, even if it is supported by the CPU, if SDL is compiled with MSVC and the target is x64. The reason for this is that 'CPU_haveCPUID' will return 0 and macro 'cpuid' in SDL_cpuinfo.c is the fallback implementation, which sets all params to zero. It is safe to assume that cpuid is supported on a CPU that runs windows x64, so CPU_haveCPUID can just return 1, and the empty macro can be replaced with a small wrap around the __cpuid intrinsic. --- src/cpuinfo/SDL_cpuinfo.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/cpuinfo/SDL_cpuinfo.c b/src/cpuinfo/SDL_cpuinfo.c index a3bde8ccd6..6a529ae01c 100644 --- a/src/cpuinfo/SDL_cpuinfo.c +++ b/src/cpuinfo/SDL_cpuinfo.c @@ -98,7 +98,7 @@ CPU_haveCPUID(void) ); #elif defined(__GNUC__) && defined(__x86_64__) /* Technically, if this is being compiled under __x86_64__ then it has -CPUid by definition. But it's nice to be able to prove it. :) */ + CPUid by definition. But it's nice to be able to prove it. :) */ __asm__ ( " pushfq # Get original EFLAGS \n" " popq %%rax \n" @@ -131,6 +131,8 @@ CPUid by definition. But it's nice to be able to prove it. :) */ mov has_CPUID,1 ; We have CPUID support done: } +#elif defined(_MSC_VER) && defined(_M_X64) + has_CPUID = 1; #elif defined(__sun) && defined(__i386) __asm ( " pushfl \n" @@ -191,7 +193,17 @@ CPUid by definition. But it's nice to be able to prove it. :) */ __asm mov b, ebx \ __asm mov c, ecx \ __asm mov d, edx \ - } +} +#elif defined(_MSC_VER) && defined(_M_X64) +#define cpuid(func, a, b, c, d) \ +{ \ + int CPUInfo[4]; \ + __cpuid(CPUInfo, func); \ + a = CPUInfo[0]; \ + b = CPUInfo[1]; \ + c = CPUInfo[2]; \ + d = CPUInfo[3]; \ +} #else #define cpuid(func, a, b, c, d) \ a = b = c = d = 0 From ae8b46deba95a9923296b3f7739162998e2c610e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 22 Feb 2014 21:15:34 -0500 Subject: [PATCH 347/402] Mac joystick: ignore duplicate HID elements. The DualShock 4 has all elements listed twice: once in the top-level list of elements, and once in an "Application Collection" element at the top-level. Each element has a proper cookie with a unique value, so now we descend into each element collections, but before we add an element to the device's list, we make sure we don't already have one with that cookie, probably from another collection or a buggy device. --- src/joystick/darwin/SDL_sysjoystick.c | 55 +++++++++++++++++-------- src/joystick/darwin/SDL_sysjoystick_c.h | 1 + 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index 716b3e4261..b38f496651 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -149,6 +149,17 @@ AddHIDElements(CFArrayRef array, recDevice *pDevice) CFArrayApplyFunction(array, range, AddHIDElement, pDevice); } +static SDL_bool +ElementAlreadyAdded(const IOHIDElementCookie cookie, const recElement *listitem) { + while (listitem) { + if (listitem->cookie == cookie) { + return SDL_TRUE; + } + listitem = listitem->pNext; + } + return SDL_FALSE; +} + /* See if we care about this HID element, and if so, note it in our recDevice. */ static void AddHIDElement(const void *value, void *parameter) @@ -158,6 +169,7 @@ AddHIDElement(const void *value, void *parameter) const CFTypeID elementTypeID = refElement ? CFGetTypeID(refElement) : 0; if (refElement && (elementTypeID == IOHIDElementGetTypeID())) { + const IOHIDElementCookie cookie = IOHIDElementGetCookie(refElement); const uint32_t usagePage = IOHIDElementGetUsagePage(refElement); const uint32_t usage = IOHIDElementGetUsage(refElement); recElement *element = NULL; @@ -180,18 +192,22 @@ AddHIDElement(const void *value, void *parameter) case kHIDUsage_GD_Slider: case kHIDUsage_GD_Dial: case kHIDUsage_GD_Wheel: - element = (recElement *) SDL_calloc(1, sizeof (recElement)); - if (element) { - pDevice->axes++; - headElement = &(pDevice->firstAxis); + if (!ElementAlreadyAdded(cookie, pDevice->firstAxis)) { + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->axes++; + headElement = &(pDevice->firstAxis); + } } break; case kHIDUsage_GD_Hatswitch: - element = (recElement *) SDL_calloc(1, sizeof (recElement)); - if (element) { - pDevice->hats++; - headElement = &(pDevice->firstHat); + if (!ElementAlreadyAdded(cookie, pDevice->firstHat)) { + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->hats++; + headElement = &(pDevice->firstHat); + } } break; } @@ -201,10 +217,12 @@ AddHIDElement(const void *value, void *parameter) switch (usage) { case kHIDUsage_Sim_Rudder: case kHIDUsage_Sim_Throttle: - element = (recElement *) SDL_calloc(1, sizeof (recElement)); - if (element) { - pDevice->axes++; - headElement = &(pDevice->firstAxis); + if (!ElementAlreadyAdded(cookie, pDevice->firstAxis)) { + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->axes++; + headElement = &(pDevice->firstAxis); + } } break; @@ -214,10 +232,12 @@ AddHIDElement(const void *value, void *parameter) break; case kHIDPage_Button: - element = (recElement *) SDL_calloc(1, sizeof (recElement)); - if (element) { - pDevice->buttons++; - headElement = &(pDevice->firstButton); + if (!ElementAlreadyAdded(cookie, pDevice->firstButton)) { + element = (recElement *) SDL_calloc(1, sizeof (recElement)); + if (element) { + pDevice->buttons++; + headElement = &(pDevice->firstButton); + } } break; @@ -227,7 +247,6 @@ AddHIDElement(const void *value, void *parameter) } break; - #if 0 /* !!! FIXME: this causes everything to get added twice on a DualShock 4. */ case kIOHIDElementTypeCollection: { CFArrayRef array = IOHIDElementGetChildren(refElement); if (array) { @@ -235,7 +254,6 @@ AddHIDElement(const void *value, void *parameter) } } break; - #endif default: break; @@ -261,6 +279,7 @@ AddHIDElement(const void *value, void *parameter) element->minReport = element->min = (SInt32) IOHIDElementGetLogicalMin(refElement); element->maxReport = element->max = (SInt32) IOHIDElementGetLogicalMax(refElement); + element->cookie = IOHIDElementGetCookie(refElement); pDevice->elements++; } diff --git a/src/joystick/darwin/SDL_sysjoystick_c.h b/src/joystick/darwin/SDL_sysjoystick_c.h index e1c6f719e6..0a15ba18d6 100644 --- a/src/joystick/darwin/SDL_sysjoystick_c.h +++ b/src/joystick/darwin/SDL_sysjoystick_c.h @@ -27,6 +27,7 @@ struct recElement { IOHIDElementRef elementRef; + IOHIDElementCookie cookie; uint32_t usagePage, usage; /* HID usage */ SInt32 min; /* reported min value possible */ SInt32 max; /* reported max value possible */ From 5ecf4e3cb15cd9f10803468ae56ee0d82dd7ac2d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 22 Feb 2014 21:21:33 -0500 Subject: [PATCH 348/402] Fixed Mac DualShock 4 gamecontroller db entry again. --- src/joystick/SDL_gamecontrollerdb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/joystick/SDL_gamecontrollerdb.h b/src/joystick/SDL_gamecontrollerdb.h index db0877fd66..886d0180d8 100644 --- a/src/joystick/SDL_gamecontrollerdb.h +++ b/src/joystick/SDL_gamecontrollerdb.h @@ -49,7 +49,7 @@ static const char *s_ControllerMappings [] = "6d040000000000001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", "6d0400000000000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ "4c050000000000006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", - "4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "4c05000000000000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", "5e040000000000008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", #elif defined(__LINUX__) "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", From 3d17fbef3ac4157647823d7091dd2e9481561d62 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 23 Feb 2014 01:10:33 -0500 Subject: [PATCH 349/402] CMake: Just assume Apple platforms have Cocoa support. Fixes Bugzilla #2056. --- cmake/sdlchecks.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake index 15f06b05f1..2cd09e6fff 100644 --- a/cmake/sdlchecks.cmake +++ b/cmake/sdlchecks.cmake @@ -556,9 +556,9 @@ endmacro(CheckWayland) # macro(CheckCOCOA) if(VIDEO_COCOA) - check_objc_source_compiles(" - #import - int main (int argc, char** argv) {}" HAVE_VIDEO_COCOA) + if(APPLE) # Apple always has Cocoa. + set(HAVE_VIDEO_COCOA TRUE) + endif(APPLE) if(HAVE_VIDEO_COCOA) file(GLOB COCOA_SOURCES ${SDL2_SOURCE_DIR}/src/video/cocoa/*.m) set_source_files_properties(${COCOA_SOURCES} PROPERTIES LANGUAGE C) From 13c0ddd493d837e2acb7e62243115ce835876fd3 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 23 Feb 2014 01:24:46 -0500 Subject: [PATCH 350/402] Free the correct variable. --- src/joystick/darwin/SDL_sysjoystick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c index b38f496651..bdface7779 100644 --- a/src/joystick/darwin/SDL_sysjoystick.c +++ b/src/joystick/darwin/SDL_sysjoystick.c @@ -461,7 +461,7 @@ CreateHIDDeviceMatchDictionary(const UInt32 page, const UInt32 usage, int *okay) CFRelease(pageNumRef); } if (usageNumRef) { - CFRelease(pageNumRef); + CFRelease(usageNumRef); } if (!retval) { From b8b26ef92d545a61b333a02f783e3b47715d367c Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 24 Feb 2014 10:00:10 -0300 Subject: [PATCH 351/402] Fixes #2417, memory leak in SDL_gamecontroller.c (thanks Leonardo!) --- src/joystick/SDL_gamecontroller.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index a9fe3276ae..51ce040caa 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -1223,6 +1223,7 @@ SDL_GameControllerQuit(void) pControllerMap = s_pSupportedControllers; s_pSupportedControllers = s_pSupportedControllers->next; SDL_free( pControllerMap->name ); + SDL_free( pControllerMap->mapping ); SDL_free( pControllerMap ); } From 4bb70aab5159c0f2a250e8bb75e139eb050b9628 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 24 Feb 2014 10:25:02 -0300 Subject: [PATCH 352/402] Zero out haptic linked list items on creation (thanks to Turo Lamminen for the report!) --- src/haptic/darwin/SDL_syshaptic.c | 3 +-- src/haptic/linux/SDL_syshaptic.c | 4 ++-- src/haptic/windows/SDL_syshaptic.c | 4 +--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index 4a62e3505f..cb020540a1 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -237,7 +237,7 @@ MacHaptic_MaybeAddDevice( io_object_t device ) } } - item = (SDL_hapticlist_item *)SDL_malloc( sizeof(SDL_hapticlist_item)); + item = (SDL_hapticlist_item *)SDL_calloc(1, sizeof(SDL_hapticlist_item)); if (item == NULL) { return SDL_SetError("Could not allocate haptic storage"); } @@ -248,7 +248,6 @@ MacHaptic_MaybeAddDevice( io_object_t device ) /* Set basic device data. */ HIDGetDeviceProduct(device, item->name); item->dev = device; - item->haptic = NULL; /* Set usage pages. */ hidProperties = 0; diff --git a/src/haptic/linux/SDL_syshaptic.c b/src/haptic/linux/SDL_syshaptic.c index 995001c920..281a9316b1 100644 --- a/src/haptic/linux/SDL_syshaptic.c +++ b/src/haptic/linux/SDL_syshaptic.c @@ -282,11 +282,11 @@ MaybeAddDevice(const char *path) return -1; } - item = (SDL_hapticlist_item *) SDL_malloc(sizeof (SDL_hapticlist_item)); + item = (SDL_hapticlist_item *) SDL_calloc(1, sizeof (SDL_hapticlist_item)); if (item == NULL) { return -1; } - SDL_zerop(item); + item->fname = SDL_strdup(path); if ( (item->fname == NULL) ) { SDL_free(item->fname); diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index 59f7456683..8454d93965 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -253,13 +253,11 @@ DirectInputHaptic_MaybeAddDevice(const DIDEVICEINSTANCE * pdidInstance) return -1; /* not a device we can use. */ } - item = (SDL_hapticlist_item *)SDL_malloc( sizeof(SDL_hapticlist_item)); + item = (SDL_hapticlist_item *)SDL_calloc(1, sizeof(SDL_hapticlist_item)); if (item == NULL) { return SDL_OutOfMemory(); } - SDL_zerop(item); - item->name = WIN_StringToUTF8(pdidInstance->tszProductName); if (!item->name) { SDL_free(item); From 467552c26d634fbb19eb18c932c0651350859ea7 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 24 Feb 2014 11:24:48 -0500 Subject: [PATCH 353/402] CMake: Fixed build on Mac OS X. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 69bc73f6cb..d1c0815c9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -991,6 +991,7 @@ elseif(APPLE) if(SDL_FILESYSTEM) set(SDL_FILESYSTEM_COCOA 1) file(GLOB FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/cocoa/*.m) + set_source_files_properties(${FILESYSTEM_SOURCES} PROPERTIES LANGUAGE C) set(SOURCE_FILES ${SOURCE_FILES} ${FILESYSTEM_SOURCES}) set(HAVE_SDL_FILESYSTEM TRUE) endif() From ed5819c44cc6e97ae914eeeea533864070da2add Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Mon, 24 Feb 2014 18:57:22 -0300 Subject: [PATCH 354/402] =?UTF-8?q?Fixes=20#2296=20-=20SDL=5FGL=5FUnbindTe?= =?UTF-8?q?xture=20segfaults=20(thanks=20Daniel=20B=C3=BCnzli)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/render/SDL_render.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index a9d04cc28b..703594aea6 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -1876,7 +1876,9 @@ int SDL_GL_UnbindTexture(SDL_Texture *texture) CHECK_TEXTURE_MAGIC(texture, -1); renderer = texture->renderer; - if (renderer && renderer->GL_UnbindTexture) { + if (texture->native) { + return SDL_GL_UnbindTexture(texture->native); + } else if (renderer && renderer->GL_UnbindTexture) { return renderer->GL_UnbindTexture(renderer, texture); } From 0a04bc52af4bb62601cf9bfa0a99c2dec8e77511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Mon, 24 Feb 2014 16:42:08 -0800 Subject: [PATCH 355/402] Mac: Fix inconsistent repeat of SDL_TEXTINPUT events on 10.7+ Due to the new "tap and hold" IME in Mountain Lion and above, we were getting inconsistent repeat of SDL_TEXTINPUT events. Disabling that functionality (since you can't see the popover anyway) solves this. Bug: https://bugzilla.libsdl.org/show_bug.cgi?id=2387 --- src/video/cocoa/SDL_cocoaevents.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index b3baa8378c..9e9fccf558 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -271,7 +271,10 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam CreateApplicationMenus(); } [NSApp finishLaunching]; - NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"NO" forKey:@"AppleMomentumScrollSupported"]; + NSDictionary *appDefaults = @{ + @"AppleMomentumScrollSupported": @NO, + @"ApplePressAndHoldEnabled": @NO, + }; [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; } From af17f23de7c5e758d8ba78ea0d3404eaadc138a2 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 24 Feb 2014 22:36:24 -0800 Subject: [PATCH 356/402] Added a bunch of missing windows messages --- src/video/windows/wmmsg.h | 82 +++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/src/video/windows/wmmsg.h b/src/video/windows/wmmsg.h index 2cc7a843f6..f4f0b09292 100644 --- a/src/video/windows/wmmsg.h +++ b/src/video/windows/wmmsg.h @@ -257,7 +257,7 @@ char *wmtab[] = { "UNKNOWN (252)", "UNKNOWN (253)", "UNKNOWN (254)", - "UNKNOWN (255)", + "WM_INPUT", "WM_KEYDOWN", "WM_KEYUP", "WM_CHAR", @@ -570,30 +570,30 @@ char *wmtab[] = { "UNKNOWN (565)", "UNKNOWN (566)", "UNKNOWN (567)", - "UNKNOWN (568)", - "UNKNOWN (569)", - "UNKNOWN (570)", + "WM_POINTERDEVICECHANGE", + "WM_POINTERDEVICEINRANGE", + "WM_POINTERDEVICEOUTOFRANGE", "UNKNOWN (571)", "UNKNOWN (572)", "UNKNOWN (573)", "UNKNOWN (574)", "UNKNOWN (575)", "WM_TOUCH", - "UNKNOWN (577)", - "UNKNOWN (578)", - "UNKNOWN (579)", + "WM_NCPOINTERUPDATE", + "WM_NCPOINTERDOWN", + "WM_NCPOINTERUP", "UNKNOWN (580)", - "UNKNOWN (581)", - "UNKNOWN (582)", - "UNKNOWN (583)", - "UNKNOWN (584)", - "UNKNOWN (585)", - "UNKNOWN (586)", - "UNKNOWN (587)", - "UNKNOWN (588)", - "UNKNOWN (589)", - "UNKNOWN (590)", - "UNKNOWN (591)", + "WM_POINTERUPDATE", + "WM_POINTERDOWN", + "WM_POINTERUP", + "WM_POINTERENTER", + "WM_POINTERLEAVE", + "WM_POINTERACTIVATE", + "WM_POINTERCAPTURECHANGED", + "WM_TOUCHHITTESTING", + "WM_POINTERWHEEL", + "WM_POINTERHWHEEL", + "DM_POINTERHITTEST", "UNKNOWN (592)", "UNKNOWN (593)", "UNKNOWN (594)", @@ -643,14 +643,14 @@ char *wmtab[] = { "UNKNOWN (638)", "UNKNOWN (639)", "UNKNOWN (640)", - "UNKNOWN (641)", - "UNKNOWN (642)", - "UNKNOWN (643)", - "UNKNOWN (644)", - "UNKNOWN (645)", - "UNKNOWN (646)", + "WM_IME_SETCONTEXT", + "WM_IME_NOTIFY", + "WM_IME_CONTROL", + "WM_IME_COMPOSITIONFULL", + "WM_IME_SELECT", + "WM_IME_CHAR", "UNKNOWN (647)", - "UNKNOWN (648)", + "WM_IME_REQUEST", "UNKNOWN (649)", "UNKNOWN (650)", "UNKNOWN (651)", @@ -658,8 +658,8 @@ char *wmtab[] = { "UNKNOWN (653)", "UNKNOWN (654)", "UNKNOWN (655)", - "UNKNOWN (656)", - "UNKNOWN (657)", + "WM_IME_KEYDOWN", + "WM_IME_KEYUP", "UNKNOWN (658)", "UNKNOWN (659)", "UNKNOWN (660)", @@ -674,9 +674,9 @@ char *wmtab[] = { "UNKNOWN (669)", "UNKNOWN (670)", "UNKNOWN (671)", - "UNKNOWN (672)", + "WM_NCMOUSEHOVER", "WM_MOUSEHOVER", - "UNKNOWN (674)", + "WM_NCMOUSELEAVE", "WM_MOUSELEAVE", "UNKNOWN (676)", "UNKNOWN (677)", @@ -691,7 +691,7 @@ char *wmtab[] = { "UNKNOWN (686)", "UNKNOWN (687)", "UNKNOWN (688)", - "UNKNOWN (689)", + "WM_WTSSESSION_CHANGE", "UNKNOWN (690)", "UNKNOWN (691)", "UNKNOWN (692)", @@ -738,7 +738,7 @@ char *wmtab[] = { "UNKNOWN (733)", "UNKNOWN (734)", "UNKNOWN (735)", - "UNKNOWN (736)", + "WM_DPICHANGED", "UNKNOWN (737)", "UNKNOWN (738)", "UNKNOWN (739)", @@ -795,20 +795,20 @@ char *wmtab[] = { "UNKNOWN (790)", "WM_PRINT", "WM_PRINTCLIENT", - "UNKNOWN (793)", - "UNKNOWN (794)", + "WM_APPCOMMAND", + "WM_THEMECHANGED", "UNKNOWN (795)", "UNKNOWN (796)", - "UNKNOWN (797)", - "UNKNOWN (798)", - "UNKNOWN (799)", - "UNKNOWN (800)", - "UNKNOWN (801)", + "WM_CLIPBOARDUPDATE", + "WM_DWMCOMPOSITIONCHANGED", + "WM_DWMNCRENDERINGCHANGED", + "WM_DWMCOLORIZATIONCOLORCHANGED", + "WM_DWMWINDOWMAXIMIZEDCHANGE", "UNKNOWN (802)", - "UNKNOWN (803)", + "WM_DWMSENDICONICTHUMBNAIL", "UNKNOWN (804)", "UNKNOWN (805)", - "UNKNOWN (806)", + "WM_DWMSENDICONICLIVEPREVIEWBITMAP", "UNKNOWN (807)", "UNKNOWN (808)", "UNKNOWN (809)", @@ -833,7 +833,7 @@ char *wmtab[] = { "UNKNOWN (828)", "UNKNOWN (829)", "UNKNOWN (830)", - "UNKNOWN (831)", + "WM_GETTITLEBARINFOEX", "UNKNOWN (832)", "UNKNOWN (833)", "UNKNOWN (834)", From 0bdaad6ed0801799752b2750ce97df211f59d073 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 24 Feb 2014 22:37:58 -0800 Subject: [PATCH 357/402] Fixed relative mouse mode with multiple windows. The window cursor clipping will be taken care of when SDL_UpdateWindowGrab() is called. --- src/video/windows/SDL_windowsmouse.c | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index f7bcc10d75..1c27095a92 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -196,44 +196,20 @@ static int WIN_SetRelativeMouseMode(SDL_bool enabled) { RAWINPUTDEVICE rawMouse = { 0x01, 0x02, 0, NULL }; /* Mouse: UsagePage = 1, Usage = 2 */ - HWND hWnd; - hWnd = GetActiveWindow(); - rawMouse.hwndTarget = hWnd; - if(!enabled) { + if (!enabled) { rawMouse.dwFlags |= RIDEV_REMOVE; - rawMouse.hwndTarget = NULL; } - /* (Un)register raw input for mice */ if (RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) { /* Only return an error when registering. If we unregister and fail, then it's probably that we unregistered twice. That's OK. */ - if(enabled) { + if (enabled) { return SDL_Unsupported(); } } - - if (enabled) { - LONG cx, cy; - RECT rect; - GetWindowRect(hWnd, &rect); - - cx = (rect.left + rect.right) / 2; - cy = (rect.top + rect.bottom) / 2; - - /* Make an absurdly small clip rect */ - rect.left = cx-1; - rect.right = cx+1; - rect.top = cy-1; - rect.bottom = cy+1; - - ClipCursor(&rect); - } else { - ClipCursor(NULL); - } return 0; } From bb9b28b651b366a6acefd78e019d1cee4635faed Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 24 Feb 2014 22:49:30 -0800 Subject: [PATCH 358/402] Make sure we don't clip the cursor while clicking on the window title bar --- src/video/windows/SDL_windowsevents.c | 14 ++++++++++++++ src/video/windows/SDL_windowswindow.c | 2 +- src/video/windows/SDL_windowswindow.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c index a688ef0916..b4e51a0bfb 100644 --- a/src/video/windows/SDL_windowsevents.c +++ b/src/video/windows/SDL_windowsevents.c @@ -570,6 +570,20 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) break; #endif /* WM_INPUTLANGCHANGE */ + case WM_NCLBUTTONDOWN: + { + data->in_title_click = SDL_TRUE; + WIN_UpdateClipCursor(data->window); + } + break; + + case WM_NCMOUSELEAVE: + { + data->in_title_click = SDL_FALSE; + WIN_UpdateClipCursor(data->window); + } + break; + case WM_ENTERSIZEMOVE: case WM_ENTERMENULOOP: { diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c index 98de45428d..425b4da235 100644 --- a/src/video/windows/SDL_windowswindow.c +++ b/src/video/windows/SDL_windowswindow.c @@ -746,7 +746,7 @@ WIN_UpdateClipCursor(SDL_Window *window) SDL_Mouse *mouse = SDL_GetMouse(); /* Don't clip the cursor while we're in the modal resize or move loop */ - if (data->in_modal_loop) { + if (data->in_title_click || data->in_modal_loop) { ClipCursor(NULL); return; } diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h index 99ae48878b..c428887449 100644 --- a/src/video/windows/SDL_windowswindow.h +++ b/src/video/windows/SDL_windowswindow.h @@ -38,6 +38,7 @@ typedef struct SDL_bool created; WPARAM mouse_button_flags; BOOL expected_resize; + SDL_bool in_title_click; SDL_bool in_modal_loop; struct SDL_VideoData *videodata; #if SDL_VIDEO_OPENGL_EGL From e8463dd65dcc193b1e17cfa4be9b1a12f1acc1a8 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 24 Feb 2014 23:09:35 -0800 Subject: [PATCH 359/402] Don't warp the mouse while we're doing a modal interaction --- src/video/windows/SDL_windowsmouse.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 1c27095a92..183e71c7e9 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -183,9 +183,15 @@ WIN_ShowCursor(SDL_Cursor * cursor) static void WIN_WarpMouse(SDL_Window * window, int x, int y) { - HWND hwnd = ((SDL_WindowData *) window->driverdata)->hwnd; + SDL_WindowData *data = (SDL_WindowData *)window->driverdata; + HWND hwnd = data->hwnd; POINT pt; + /* Don't warp the mouse while we're doing a modal interaction */ + if (data->in_title_click || data->in_modal_loop) { + return; + } + pt.x = x; pt.y = y; ClientToScreen(hwnd, &pt); From 755b63df15bed65d9127e68f5477209f3a652f17 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 25 Feb 2014 10:04:49 -0800 Subject: [PATCH 360/402] Fixed crash if the input data pitch is larger than the locked texture pitch --- src/render/direct3d/SDL_render_d3d.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index afa6fe92f2..0caa8d2672 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1009,6 +1009,12 @@ D3D_UpdateTextureInternal(IDirect3DTexture9 *texture, Uint32 format, SDL_bool fu if (length == pitch && length == locked.Pitch) { SDL_memcpy(dst, src, length*h); } else { + if (length > pitch) { + length = pitch; + } + if (length > locked.Pitch) { + length = locked.Pitch; + } for (row = 0; row < h; ++row) { SDL_memcpy(dst, src, length); src += pitch; From 38c8a3a27a98287fea6c5910a4126b319ce92b02 Mon Sep 17 00:00:00 2001 From: CarniBlood Date: Thu, 19 Dec 2013 06:01:18 +0900 Subject: [PATCH 361/402] fixed gles/gles2 renderer creation fail on Android when default major/minor version doesn't match --- src/render/opengles/SDL_render_gles.c | 11 ++++++++++- src/render/opengles2/SDL_render_gles2.c | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 27be42c6d6..03bdafa63c 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -279,15 +279,24 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags) GLES_RenderData *data; GLint value; Uint32 windowFlags; + int profileMask, majorVersion, minorVersion; + + SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profileMask); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &majorVersion); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minorVersion); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); windowFlags = SDL_GetWindowFlags(window); - if (!(windowFlags & SDL_WINDOW_OPENGL)) { + if (!(windowFlags & SDL_WINDOW_OPENGL) || + profileMask != SDL_GL_CONTEXT_PROFILE_ES || majorVersion != 1 || minorVersion != 1) { if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profileMask); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, majorVersion); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minorVersion); SDL_RecreateWindow(window, windowFlags); return NULL; } diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index c0d1aeb0b4..bbfac64ae9 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -1740,15 +1740,24 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags) Uint32 windowFlags; GLint window_framebuffer; GLint value; + int profileMask, majorVersion, minorVersion; + + SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profileMask); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &majorVersion); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minorVersion); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); windowFlags = SDL_GetWindowFlags(window); - if (!(windowFlags & SDL_WINDOW_OPENGL)) { + if (!(windowFlags & SDL_WINDOW_OPENGL) || + profileMask != SDL_GL_CONTEXT_PROFILE_ES || majorVersion != 2 || minorVersion != 0) { if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profileMask); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, majorVersion); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minorVersion); SDL_RecreateWindow(window, windowFlags); return NULL; } From 5def35a4b2815f03d45894db457460905751ff17 Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Tue, 25 Feb 2014 17:42:34 -0300 Subject: [PATCH 362/402] Fixes #2308, recreate window if GL requirements for the renderer are not met If the window has been created with values for SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_MAJOR_VERSION and SDL_GL_CONTEXT_MINOR_VERSION not matching those required by the renderer, attempt to recreate the window. This is needed on platforms where both GL and GLES 1/2 surfaces are supported by the video backend, requiring that the window be recreated when switching between context types. --- src/render/opengl/SDL_render_gl.c | 17 ++++++++++++++++- src/render/opengles/SDL_render_gles.c | 23 +++++++++++++---------- src/render/opengles2/SDL_render_gles2.c | 23 +++++++++++++---------- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 1789276869..5a51b46443 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -32,6 +32,8 @@ #include #endif +#define RENDERER_CONTEXT_MAJOR 2 +#define RENDERER_CONTEXT_MINOR 0 /* OpenGL renderer implementation */ @@ -381,11 +383,24 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) const char *hint; GLint value; Uint32 window_flags; + int profile_mask, major, minor; + + SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); + + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); window_flags = SDL_GetWindowFlags(window); - if (!(window_flags & SDL_WINDOW_OPENGL)) { + if (!(window_flags & SDL_WINDOW_OPENGL) || + profile_mask != SDL_GL_CONTEXT_PROFILE_CORE || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { if (SDL_RecreateWindow(window, window_flags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile_mask); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, major); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minor); SDL_RecreateWindow(window, window_flags); return NULL; } diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 03bdafa63c..947abfe4d7 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -26,6 +26,9 @@ #include "SDL_opengles.h" #include "../SDL_sysrender.h" +#define RENDERER_CONTEXT_MAJOR 1 +#define RENDERER_CONTEXT_MINOR 1 + #if defined(SDL_VIDEO_DRIVER_PANDORA) /* Empty function stub to get OpenGL ES 1.x support without */ @@ -279,24 +282,24 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags) GLES_RenderData *data; GLint value; Uint32 windowFlags; - int profileMask, majorVersion, minorVersion; + int profile_mask, major, minor; - SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profileMask); - SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &majorVersion); - SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minorVersion); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); windowFlags = SDL_GetWindowFlags(window); if (!(windowFlags & SDL_WINDOW_OPENGL) || - profileMask != SDL_GL_CONTEXT_PROFILE_ES || majorVersion != 1 || minorVersion != 1) { + profile_mask != SDL_GL_CONTEXT_PROFILE_ES || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profileMask); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, majorVersion); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minorVersion); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile_mask); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, major); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minor); SDL_RecreateWindow(window, windowFlags); return NULL; } diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index bbfac64ae9..f904e4eaf0 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -28,6 +28,9 @@ #include "../../video/SDL_blit.h" #include "SDL_shaders_gles2.h" +#define RENDERER_CONTEXT_MAJOR 2 +#define RENDERER_CONTEXT_MINOR 0 + /* Used to re-create the window with OpenGL ES capability */ extern int SDL_RecreateWindow(SDL_Window * window, Uint32 flags); @@ -1740,24 +1743,24 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags) Uint32 windowFlags; GLint window_framebuffer; GLint value; - int profileMask, majorVersion, minorVersion; + int profile_mask, major, minor; - SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profileMask); - SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &majorVersion); - SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minorVersion); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, &profile_mask); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); windowFlags = SDL_GetWindowFlags(window); if (!(windowFlags & SDL_WINDOW_OPENGL) || - profileMask != SDL_GL_CONTEXT_PROFILE_ES || majorVersion != 2 || minorVersion != 0) { + profile_mask != SDL_GL_CONTEXT_PROFILE_ES || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profileMask); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, majorVersion); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minorVersion); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile_mask); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, major); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, minor); SDL_RecreateWindow(window, windowFlags); return NULL; } From a4e5758be8ebdd1aef53c2a48272a394242cd8a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Tue, 25 Feb 2014 15:28:12 -0800 Subject: [PATCH 363/402] Mac: Immediately update current OpenGL context's shape. Previously we were postponing our -[NSOpenGLContext update] call to the next SDL_GL_SwapWindow, even if the context was current on the current thread. This changes it so that we will do the update immediately if it's the current context. If you're rendering on another thread, you need to call SDL_GL_SwapWindow once after a resize event to ensure your drawable will produce non-garbage data. Bug: https://bugzilla.libsdl.org/show_bug.cgi?id=2339 --- src/video/cocoa/SDL_cocoaopengl.m | 12 ++++++++++-- src/video/cocoa/SDL_cocoawindow.m | 7 ++++++- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 803b4ecd2f..5c44e31e0f 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -110,11 +110,19 @@ - (void)setWindow:(SDL_Window *)newWindow if ([self view] != [windowdata->nswindow contentView]) { [self setView:[windowdata->nswindow contentView]]; - [self scheduleUpdate]; + if (self == [NSOpenGLContext currentContext]) { + [self update]; + } else { + [self scheduleUpdate]; + } } } else { [self clearDrawable]; - [self scheduleUpdate]; + if (self == [NSOpenGLContext currentContext]) { + [self update]; + } else { + [self scheduleUpdate]; + } } } diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 03ece7b9e3..a773cb684f 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -49,10 +49,15 @@ static void ConvertNSRect(NSRect *r) static void ScheduleContextUpdates(SDL_WindowData *data) { + NSOpenGLContext *currentContext = [NSOpenGLContext currentContext]; NSMutableArray *contexts = data->nscontexts; @synchronized (contexts) { for (SDLOpenGLContext *context in contexts) { - [context scheduleUpdate]; + if (context == currentContext) { + [context update]; + } else { + [context scheduleUpdate]; + } } } } From 46f50ea02fc68fd9db6a6d27df62d62943aa779a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Tue, 25 Feb 2014 17:25:49 -0800 Subject: [PATCH 364/402] Mac: Fix error message for haptic subsystem. We were calling SDL_Error instead of SDL_SetError when the haptic subsystem wasn't initialized. --- src/haptic/darwin/SDL_syshaptic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/haptic/darwin/SDL_syshaptic.c b/src/haptic/darwin/SDL_syshaptic.c index cb020540a1..14beb6c860 100644 --- a/src/haptic/darwin/SDL_syshaptic.c +++ b/src/haptic/darwin/SDL_syshaptic.c @@ -156,7 +156,7 @@ SDL_SYS_HapticInit(void) io_service_t device; if (numhaptics != -1) { - return SDL_Error("Haptic subsystem already initialized!"); + return SDL_SetError("Haptic subsystem already initialized!"); } numhaptics = 0; From 479e5081c6821038990290a8973a66fdd9796ab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Tue, 25 Feb 2014 17:27:41 -0800 Subject: [PATCH 365/402] Mac: Improve moving relative mode windows. This makes it possible to move windows by their title bar, even if they're in relative mode, if you click the title bar when the window does not have focus. Bug: https://bugzilla.libsdl.org/show_bug.cgi?id=2396 --- src/video/cocoa/SDL_cocoamouse.m | 64 +++++++++++++++--- src/video/cocoa/SDL_cocoawindow.h | 7 ++ src/video/cocoa/SDL_cocoawindow.m | 108 ++++++++++++++++++++++++------ 3 files changed, 148 insertions(+), 31 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index 56f6796328..12f506cc14 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -29,6 +29,14 @@ #include "../../events/SDL_mouse_c.h" +/* #define DEBUG_COCOAMOUSE */ + +#ifdef DEBUG_COCOAMOUSE +#define DLog(fmt, ...) printf("%s: " fmt "\n", __func__, ##__VA_ARGS__) +#else +#define DLog(...) do { } while (0) +#endif + @implementation NSCursor (InvisibleCursor) + (NSCursor *)invisibleCursor { @@ -203,6 +211,15 @@ + (NSCursor *)invisibleCursor static void Cocoa_WarpMouse(SDL_Window * window, int x, int y) { + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + if ([data->listener isMoving]) + { + DLog("Postponing warp, window being moved."); + [data->listener setPendingMoveX:x + Y:y]; + return; + } + SDL_Mouse *mouse = SDL_GetMouse(); CGPoint point = CGPointMake(x + (float)window->x, y + (float)window->y); @@ -214,6 +231,7 @@ + (NSCursor *)invisibleCursor NSPoint location = [NSEvent mouseLocation]; driverdata->deltaXOffset = location.x - point.x; driverdata->deltaYOffset = point.y - location.y; + DLog("Warp to (%g, %g), offsetting next movement event by (%i, %i)", point.x, point.y, driverdata->deltaXOffset, driverdata->deltaYOffset); } /* According to the docs, this was deprecated in 10.6, but it's still @@ -238,8 +256,10 @@ + (NSCursor *)invisibleCursor CGError result; if (enabled) { + DLog("Turning on."); result = CGAssociateMouseAndMouseCursorPosition(NO); } else { + DLog("Turning off."); result = CGAssociateMouseAndMouseCursorPosition(YES); } if (result != kCGErrorSuccess) { @@ -272,18 +292,42 @@ + (NSCursor *)invisibleCursor { SDL_Mouse *mouse = SDL_GetMouse(); - if (mouse->relative_mode && - ([event type] == NSMouseMoved || - [event type] == NSLeftMouseDragged || - [event type] == NSRightMouseDragged || - [event type] == NSOtherMouseDragged)) { - SDL_MouseData *driverdata = (SDL_MouseData*)mouse->driverdata; - float x = [event deltaX] + driverdata->deltaXOffset; - float y = [event deltaY] + driverdata->deltaYOffset; - driverdata->deltaXOffset = driverdata->deltaYOffset = 0; + /* Non-relative movement is handled in -[Cocoa_WindowListener mouseMoved:] */ + if (!mouse->relative_mode) { + return; + } - SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 1, (int)x, (int)y); + switch ([event type]) + { + case NSMouseMoved: + case NSLeftMouseDragged: + case NSRightMouseDragged: + case NSOtherMouseDragged: + break; + + default: + /* Ignore any other events. */ + return; + } + + /* Ignore events that aren't inside the client area (i.e. title bar.) */ + if ([event window]) { + NSRect windowRect = [[[event window] contentView] frame]; + if (!NSPointInRect([event locationInWindow], windowRect)) { + return; + } } + + SDL_MouseData *driverdata = (SDL_MouseData*)mouse->driverdata; + float x = [event deltaX] + driverdata->deltaXOffset; + float y = [event deltaY] + driverdata->deltaYOffset; + driverdata->deltaXOffset = driverdata->deltaYOffset = 0; + + if (driverdata->deltaYOffset > 0 || driverdata->deltaXOffset > 0) { + DLog("Relative move was (%g, %g), offset to (%g, %g)", [event deltaX], [event deltaY], x, y); + } + + SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 1, (int)x, (int)y); } void diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 65e0d4b3d6..4f88ce1f79 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -43,6 +43,8 @@ typedef enum BOOL isFullscreenSpace; BOOL inFullscreenTransition; PendingWindowOperation pendingWindowOperation; + BOOL isMoving; + int pendingWindowWarpX, pendingWindowWarpY; } -(void) listen:(SDL_WindowData *) data; @@ -54,6 +56,10 @@ typedef enum -(void) addPendingWindowOperation:(PendingWindowOperation) operation; -(void) close; +-(BOOL) isMoving; +-(void) setPendingMoveX:(int)x Y:(int)y; +-(void) windowDidFinishMoving; + /* Window delegate functionality */ -(BOOL) windowShouldClose:(id) sender; -(void) windowDidExpose:(NSNotification *) aNotification; @@ -105,6 +111,7 @@ struct SDL_WindowData NSWindow *nswindow; NSMutableArray *nscontexts; SDL_bool created; + SDL_bool inWindowMove; Cocoa_WindowListener *listener; struct SDL_VideoData *videodata; }; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index a773cb684f..e391ea7165 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -39,6 +39,44 @@ #include "SDL_cocoamouse.h" #include "SDL_cocoaopengl.h" +@interface SDLWindow : NSWindow +/* These are needed for borderless/fullscreen windows */ +- (BOOL)canBecomeKeyWindow; +- (BOOL)canBecomeMainWindow; +- (void)sendEvent:(NSEvent *)event; +@end + +@implementation SDLWindow +- (BOOL)canBecomeKeyWindow +{ + return YES; +} + +- (BOOL)canBecomeMainWindow +{ + return YES; +} + +- (void)sendEvent:(NSEvent *)event +{ + [super sendEvent:event]; + + if ([event type] != NSLeftMouseUp) { + return; + } + + id delegate = [self delegate]; + if (![delegate isKindOfClass:[Cocoa_WindowListener class]]) { + return; + } + + if ([delegate isMoving]) { + [delegate windowDidFinishMoving]; + } +} +@end + + static Uint32 s_moveHack; static void ConvertNSRect(NSRect *r) @@ -130,6 +168,7 @@ - (void)listen:(SDL_WindowData *)data isFullscreenSpace = NO; inFullscreenTransition = NO; pendingWindowOperation = PENDING_OPERATION_NONE; + isMoving = NO; center = [NSNotificationCenter defaultCenter]; @@ -315,6 +354,34 @@ - (void)close } } +- (BOOL)isMoving +{ + return isMoving; +} + +-(void) setPendingMoveX:(int)x Y:(int)y +{ + pendingWindowWarpX = x; + pendingWindowWarpY = y; +} + +- (void)windowDidFinishMoving +{ + if ([self isMoving]) + { + isMoving = NO; + + SDL_Mouse *mouse = SDL_GetMouse(); + if (pendingWindowWarpX >= 0 && pendingWindowWarpY >= 0) { + mouse->WarpMouse(_data->window, pendingWindowWarpX, pendingWindowWarpY); + pendingWindowWarpX = pendingWindowWarpY = -1; + } + if (mouse->relative_mode && SDL_GetMouseFocus() == _data->window) { + mouse->SetRelativeMouseMode(SDL_TRUE); + } + } +} + - (BOOL)windowShouldClose:(id)sender { SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_CLOSE, 0, 0); @@ -326,6 +393,14 @@ - (void)windowDidExpose:(NSNotification *)aNotification SDL_SendWindowEvent(_data->window, SDL_WINDOWEVENT_EXPOSED, 0, 0); } +- (void)windowWillMove:(NSNotification *)aNotification +{ + if ([_data->nswindow isKindOfClass:[SDLWindow class]]) { + pendingWindowWarpX = pendingWindowWarpY = -1; + isMoving = YES; + } +} + - (void)windowDidMove:(NSNotification *)aNotification { int x, y; @@ -407,6 +482,9 @@ - (void)windowDidBecomeKey:(NSNotification *)aNotification { SDL_Window *window = _data->window; SDL_Mouse *mouse = SDL_GetMouse(); + if (mouse->relative_mode && ![self isMoving]) { + mouse->SetRelativeMouseMode(SDL_TRUE); + } /* We're going to get keyboard events, since we're key. */ SDL_SetKeyboardFocus(window); @@ -431,6 +509,11 @@ - (void)windowDidBecomeKey:(NSNotification *)aNotification - (void)windowDidResignKey:(NSNotification *)aNotification { + SDL_Mouse *mouse = SDL_GetMouse(); + if (mouse->relative_mode) { + mouse->SetRelativeMouseMode(SDL_FALSE); + } + /* Some other window will get mouse events, since we're not key. */ if (SDL_GetMouseFocus() == _data->window) { SDL_SetMouseFocus(NULL); @@ -624,8 +707,6 @@ - (void)mouseMoved:(NSEvent *)theEvent if (x < 0 || x >= window->w || y < 0 || y >= window->h) { if (window->flags & SDL_WINDOW_INPUT_GRABBED) { - CGPoint cgpoint; - if (x < 0) { x = 0; } else if (x >= window->w) { @@ -638,6 +719,8 @@ - (void)mouseMoved:(NSEvent *)theEvent } #if !SDL_MAC_NO_SANDBOX + CGPoint cgpoint; + /* When SDL_MAC_NO_SANDBOX is set, this is handled by * SDL_cocoamousetap.m. */ @@ -754,24 +837,6 @@ - (void)handleTouches:(cocoaTouchType)type withEvent:(NSEvent *)event @end -@interface SDLWindow : NSWindow -/* These are needed for borderless/fullscreen windows */ -- (BOOL)canBecomeKeyWindow; -- (BOOL)canBecomeMainWindow; -@end - -@implementation SDLWindow -- (BOOL)canBecomeKeyWindow -{ - return YES; -} - -- (BOOL)canBecomeMainWindow -{ - return YES; -} -@end - @interface SDLView : NSView /* The default implementation doesn't pass rightMouseDown to responder chain */ @@ -1338,7 +1403,8 @@ - (void)resetCursorRects Cocoa_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed) { /* Move the cursor to the nearest point in the window */ - if (grabbed) { + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + if (grabbed && data && ![data->listener isMoving]) { int x, y; CGPoint cgpoint; From 00aa7522236e218033c9dc109f253e216a9f626e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 26 Feb 2014 11:35:02 -0800 Subject: [PATCH 366/402] Mac: Redo cursor warp handling. This fixes bugs related to getting unnaturally large xrel/yrel for SDL_MOUSEMOTION after warps and enabling / disabling relative mode. Bug: https://bugzilla.libsdl.org/show_bug.cgi?id=1836 --- src/video/cocoa/SDL_cocoamouse.h | 11 ++++- src/video/cocoa/SDL_cocoamouse.m | 71 ++++++++++++++++++++----------- src/video/cocoa/SDL_cocoawindow.m | 15 +++++++ 3 files changed, 71 insertions(+), 26 deletions(-) diff --git a/src/video/cocoa/SDL_cocoamouse.h b/src/video/cocoa/SDL_cocoamouse.h index a0738eb988..336b840442 100644 --- a/src/video/cocoa/SDL_cocoamouse.h +++ b/src/video/cocoa/SDL_cocoamouse.h @@ -28,11 +28,18 @@ extern void Cocoa_InitMouse(_THIS); extern void Cocoa_HandleMouseEvent(_THIS, NSEvent * event); extern void Cocoa_HandleMouseWheel(SDL_Window *window, NSEvent * event); +extern void Cocoa_HandleMouseWarp(CGFloat x, CGFloat y); extern void Cocoa_QuitMouse(_THIS); typedef struct { - int deltaXOffset; - int deltaYOffset; + /* Wether we've seen a cursor warp since the last move event. */ + SDL_bool seenWarp; + /* What location our last cursor warp was to. */ + CGFloat lastWarpX; + CGFloat lastWarpY; + /* What location we last saw the cursor move to. */ + CGFloat lastMoveX; + CGFloat lastMoveY; void *tapdata; } SDL_MouseData; diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index 12f506cc14..71b782caa2 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -223,16 +223,7 @@ + (NSCursor *)invisibleCursor SDL_Mouse *mouse = SDL_GetMouse(); CGPoint point = CGPointMake(x + (float)window->x, y + (float)window->y); - { - /* This makes Cocoa_HandleMouseEvent ignore this delta in the next - * movement event. - */ - SDL_MouseData *driverdata = (SDL_MouseData*)mouse->driverdata; - NSPoint location = [NSEvent mouseLocation]; - driverdata->deltaXOffset = location.x - point.x; - driverdata->deltaYOffset = point.y - location.y; - DLog("Warp to (%g, %g), offsetting next movement event by (%i, %i)", point.x, point.y, driverdata->deltaXOffset, driverdata->deltaYOffset); - } + Cocoa_HandleMouseWarp(point.x, point.y); /* According to the docs, this was deprecated in 10.6, but it's still * around. The substitute requires a CGEventSource, but I'm not entirely @@ -285,18 +276,16 @@ + (NSCursor *)invisibleCursor SDL_SetDefaultCursor(Cocoa_CreateDefaultCursor()); Cocoa_InitMouseEventTap(mouse->driverdata); + + SDL_MouseData *driverdata = (SDL_MouseData*)mouse->driverdata; + const NSPoint location = [NSEvent mouseLocation]; + driverdata->lastMoveX = location.x; + driverdata->lastMoveY = location.y; } void Cocoa_HandleMouseEvent(_THIS, NSEvent *event) { - SDL_Mouse *mouse = SDL_GetMouse(); - - /* Non-relative movement is handled in -[Cocoa_WindowListener mouseMoved:] */ - if (!mouse->relative_mode) { - return; - } - switch ([event type]) { case NSMouseMoved: @@ -310,6 +299,24 @@ + (NSCursor *)invisibleCursor return; } + SDL_Mouse *mouse = SDL_GetMouse(); + + SDL_MouseData *driverdata = (SDL_MouseData*)mouse->driverdata; + const SDL_bool seenWarp = driverdata->seenWarp; + driverdata->seenWarp = NO; + + const NSPoint location = [NSEvent mouseLocation]; + const CGFloat lastMoveX = driverdata->lastMoveX; + const CGFloat lastMoveY = driverdata->lastMoveY; + driverdata->lastMoveX = location.x; + driverdata->lastMoveY = location.y; + DLog("Last seen mouse: (%g, %g)", location.x, location.y); + + /* Non-relative movement is handled in -[Cocoa_WindowListener mouseMoved:] */ + if (!mouse->relative_mode) { + return; + } + /* Ignore events that aren't inside the client area (i.e. title bar.) */ if ([event window]) { NSRect windowRect = [[[event window] contentView] frame]; @@ -318,16 +325,18 @@ + (NSCursor *)invisibleCursor } } - SDL_MouseData *driverdata = (SDL_MouseData*)mouse->driverdata; - float x = [event deltaX] + driverdata->deltaXOffset; - float y = [event deltaY] + driverdata->deltaYOffset; - driverdata->deltaXOffset = driverdata->deltaYOffset = 0; + float deltaX = [event deltaX]; + float deltaY = [event deltaY]; - if (driverdata->deltaYOffset > 0 || driverdata->deltaXOffset > 0) { - DLog("Relative move was (%g, %g), offset to (%g, %g)", [event deltaX], [event deltaY], x, y); + if (seenWarp) + { + deltaX += (lastMoveX - driverdata->lastWarpX); + deltaY += ((CGDisplayPixelsHigh(kCGDirectMainDisplay) - lastMoveY) - driverdata->lastWarpY); + + DLog("Motion was (%g, %g), offset to (%g, %g)", [event deltaX], [event deltaY], deltaX, deltaY); } - SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 1, (int)x, (int)y); + SDL_SendMouseMotion(mouse->focus, mouse->mouseID, 1, (int)deltaX, (int)deltaY); } void @@ -351,6 +360,20 @@ + (NSCursor *)invisibleCursor SDL_SendMouseWheel(window, mouse->mouseID, (int)x, (int)y); } +void +Cocoa_HandleMouseWarp(CGFloat x, CGFloat y) +{ + /* This makes Cocoa_HandleMouseEvent ignore the delta caused by the warp, + * since it gets included in the next movement event. + */ + SDL_MouseData *driverdata = (SDL_MouseData*)SDL_GetMouse()->driverdata; + driverdata->lastWarpX = x; + driverdata->lastWarpY = y; + driverdata->seenWarp = SDL_TRUE; + + DLog("(%g, %g)", x, y); +} + void Cocoa_QuitMouse(_THIS) { diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index e391ea7165..c1c0caac95 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -39,6 +39,15 @@ #include "SDL_cocoamouse.h" #include "SDL_cocoaopengl.h" +/* #define DEBUG_COCOAWINDOW */ + +#ifdef DEBUG_COCOAWINDOW +#define DLog(fmt, ...) printf("%s: " fmt "\n", __func__, ##__VA_ARGS__) +#else +#define DLog(...) do { } while (0) +#endif + + @interface SDLWindow : NSWindow /* These are needed for borderless/fullscreen windows */ - (BOOL)canBecomeKeyWindow; @@ -735,6 +744,8 @@ - (void)mouseMoved:(NSEvent *)theEvent CGSetLocalEventsSuppressionInterval(0.0); CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, cgpoint); CGSetLocalEventsSuppressionInterval(0.25); + + Cocoa_HandleMouseWarp(cgpoint.x, cgpoint.y); #endif } } @@ -1411,6 +1422,10 @@ - (void)resetCursorRects SDL_GetMouseState(&x, &y); cgpoint.x = window->x + x; cgpoint.y = window->y + y; + + Cocoa_HandleMouseWarp(cgpoint.x, cgpoint.y); + + DLog("Returning cursor to (%g, %g)", cgpoint.x, cgpoint.y); CGDisplayMoveCursorToPoint(kCGDirectMainDisplay, cgpoint); } From f7fa45c3770366e9952078f9dd0b2c64e700e87f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 26 Feb 2014 16:10:52 -0800 Subject: [PATCH 367/402] Mac: Don't disassociate cursor if window is moving / doesn't have focus. Bug: https://bugzilla.libsdl.org/show_bug.cgi?id=2396 --- src/video/cocoa/SDL_cocoamouse.m | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index 71b782caa2..d9292b8772 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -244,8 +244,23 @@ + (NSCursor *)invisibleCursor static int Cocoa_SetRelativeMouseMode(SDL_bool enabled) { - CGError result; + /* We will re-apply the relative mode when the window gets focus, if it + * doesn't have focus right now. + */ + SDL_Window *window = SDL_GetMouseFocus(); + if (!window) { + return 0; + } + /* We will re-apply the relative mode when the window finishes being moved, + * if it is being moved right now. + */ + SDL_WindowData *data = (SDL_WindowData *) window->driverdata; + if ([data->listener isMoving]) { + return; + } + + CGError result; if (enabled) { DLog("Turning on."); result = CGAssociateMouseAndMouseCursorPosition(NO); From 890a102de255335b9727df283f4ba9b6e95c889d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20P=2E=20Tjern=C3=B8?= Date: Wed, 26 Feb 2014 16:27:03 -0800 Subject: [PATCH 368/402] Mac: Forgot return value in last commit. --- src/video/cocoa/SDL_cocoamouse.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoamouse.m b/src/video/cocoa/SDL_cocoamouse.m index d9292b8772..f5b54ed38b 100644 --- a/src/video/cocoa/SDL_cocoamouse.m +++ b/src/video/cocoa/SDL_cocoamouse.m @@ -257,7 +257,7 @@ + (NSCursor *)invisibleCursor */ SDL_WindowData *data = (SDL_WindowData *) window->driverdata; if ([data->listener isMoving]) { - return; + return 0; } CGError result; From 571e15cf4c12daa10d4ed309c38f0689a26219ec Mon Sep 17 00:00:00 2001 From: Gabriel Jacobo Date: Thu, 27 Feb 2014 20:21:46 -0300 Subject: [PATCH 369/402] Improve window recreation logic in OpenGL* renderers --- src/render/opengl/SDL_render_gl.c | 17 +++++++++++------ src/render/opengles/SDL_render_gles.c | 13 +++++++++---- src/render/opengles2/SDL_render_gles2.c | 12 ++++++++---- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index 5a51b46443..c3465be718 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -32,8 +32,12 @@ #include #endif +/* To prevent unnecessary window recreation, + * these should match the defaults selected in SDL_GL_ResetAttributes + */ + #define RENDERER_CONTEXT_MAJOR 2 -#define RENDERER_CONTEXT_MINOR 0 +#define RENDERER_CONTEXT_MINOR 1 /* OpenGL renderer implementation */ @@ -389,13 +393,14 @@ GL_CreateRenderer(SDL_Window * window, Uint32 flags) SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); - window_flags = SDL_GetWindowFlags(window); if (!(window_flags & SDL_WINDOW_OPENGL) || - profile_mask != SDL_GL_CONTEXT_PROFILE_CORE || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { + profile_mask == SDL_GL_CONTEXT_PROFILE_ES || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { + + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, 0); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); + if (SDL_RecreateWindow(window, window_flags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile_mask); diff --git a/src/render/opengles/SDL_render_gles.c b/src/render/opengles/SDL_render_gles.c index 947abfe4d7..899ca8f98d 100644 --- a/src/render/opengles/SDL_render_gles.c +++ b/src/render/opengles/SDL_render_gles.c @@ -26,6 +26,10 @@ #include "SDL_opengles.h" #include "../SDL_sysrender.h" +/* To prevent unnecessary window recreation, + * these should match the defaults selected in SDL_GL_ResetAttributes + */ + #define RENDERER_CONTEXT_MAJOR 1 #define RENDERER_CONTEXT_MINOR 1 @@ -288,13 +292,14 @@ GLES_CreateRenderer(SDL_Window * window, Uint32 flags) SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); - windowFlags = SDL_GetWindowFlags(window); if (!(windowFlags & SDL_WINDOW_OPENGL) || profile_mask != SDL_GL_CONTEXT_PROFILE_ES || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { + + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); + if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile_mask); diff --git a/src/render/opengles2/SDL_render_gles2.c b/src/render/opengles2/SDL_render_gles2.c index f904e4eaf0..f2fa8fa9f6 100644 --- a/src/render/opengles2/SDL_render_gles2.c +++ b/src/render/opengles2/SDL_render_gles2.c @@ -28,6 +28,9 @@ #include "../../video/SDL_blit.h" #include "SDL_shaders_gles2.h" +/* To prevent unnecessary window recreation, + * these should match the defaults selected in SDL_GL_ResetAttributes + */ #define RENDERER_CONTEXT_MAJOR 2 #define RENDERER_CONTEXT_MINOR 0 @@ -1749,13 +1752,14 @@ GLES2_CreateRenderer(SDL_Window *window, Uint32 flags) SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); - windowFlags = SDL_GetWindowFlags(window); if (!(windowFlags & SDL_WINDOW_OPENGL) || profile_mask != SDL_GL_CONTEXT_PROFILE_ES || major != RENDERER_CONTEXT_MAJOR || minor != RENDERER_CONTEXT_MINOR) { + + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, RENDERER_CONTEXT_MAJOR); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, RENDERER_CONTEXT_MINOR); + if (SDL_RecreateWindow(window, windowFlags | SDL_WINDOW_OPENGL) < 0) { /* Uh oh, better try to put it back... */ SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, profile_mask); From c6df21f1854591777dcd775826608e08e8aa514a Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 27 Feb 2014 22:06:41 -0500 Subject: [PATCH 370/402] Disable the screensaver by default. Fixes Bugzilla #2218. --- src/video/SDL_video.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 338a4cc96d..dcce0822d9 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -504,6 +504,14 @@ SDL_VideoInit(const char *driver_name) _this->DestroyWindowFramebuffer = SDL_DestroyWindowTexture; } + /* Disable the screen saver by default. This is a change from <= 2.0.1, + but most things using SDL are games or media players; you wouldn't + want a screensaver to trigger if you're playing exclusively with a + joystick, or passively watching a movie. Things that use SDL but + function more like a normal desktop app should explicitly reenable the + screensaver. */ + SDL_DisableScreenSaver(); + /* If we don't use a screen keyboard, turn on text input by default, otherwise programs that expect to get text events without enabling UNICODE input won't get any events. From e201611dd2d7e9d855270bc1f3b46ddf1b92a75c Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 28 Feb 2014 14:23:41 -0800 Subject: [PATCH 371/402] Added a hint to enable the screensaver by default --- include/SDL_hints.h | 11 +++++++++++ src/video/SDL_video.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 2e80a6ec67..26edca586e 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -128,6 +128,17 @@ extern "C" { */ #define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + /** * \brief A variable controlling whether the X11 VidMode extension should be used. * diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index dcce0822d9..87e8506c04 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -421,8 +421,10 @@ int SDL_VideoInit(const char *driver_name) { SDL_VideoDevice *video; + const char *hint; int index; int i; + SDL_bool allow_screensaver; /* Check to make sure we don't overwrite '_this' */ if (_this != NULL) { @@ -510,7 +512,15 @@ SDL_VideoInit(const char *driver_name) joystick, or passively watching a movie. Things that use SDL but function more like a normal desktop app should explicitly reenable the screensaver. */ - SDL_DisableScreenSaver(); + hint = SDL_GetHint(SDL_HINT_VIDEO_ALLOW_SCREENSAVER); + if (hint) { + allow_screensaver = SDL_atoi(hint) ? SDL_TRUE : SDL_FALSE; + } else { + allow_screensaver = SDL_FALSE; + } + if (!allow_screensaver) { + SDL_DisableScreenSaver(); + } /* If we don't use a screen keyboard, turn on text input by default, otherwise programs that expect to get text events without enabling From 2396fb1ff87bd7f49deca98e58c62453ff97a95a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 28 Feb 2014 16:24:41 -0800 Subject: [PATCH 372/402] Null termnate the pUserMappings variable to prevent memory corruption. --- src/joystick/SDL_gamecontroller.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joystick/SDL_gamecontroller.c b/src/joystick/SDL_gamecontroller.c index 51ce040caa..fc44bdb931 100644 --- a/src/joystick/SDL_gamecontroller.c +++ b/src/joystick/SDL_gamecontroller.c @@ -835,6 +835,7 @@ SDL_GameControllerLoadHints() char *pUserMappings = SDL_malloc( nchHints + 1 ); char *pTempMappings = pUserMappings; SDL_memcpy( pUserMappings, hint, nchHints ); + pUserMappings[nchHints] = '\0'; while ( pUserMappings ) { char *pchNewLine = NULL; From 44dab081835e489032ca4ccc19e85e7f42999fd2 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 09:50:52 -0800 Subject: [PATCH 373/402] Fixed bug 2423 - timeBeginPeriod & timeEndPeriod mismatch Coriiander In src\timer\windows\SDL_systimer.c there is an error with regards to timeBeginPeriod and timeEndPeriod. These functions typically get called when no high resolution timer is available, and GetTickCount is not used. According to MSDN (link: http://msdn.microsoft.com/en-us/library/windows/desktop/dd757624(v=vs.85).aspx), for every call to timeBeginPeriod a subsequent call to timeEndPeriod is required. While SDL is currently doing this, it fails to call timeEndPeriod when cleaning up/shutting down SDL. Please note that these functions affect things on a system level. Failing to call timeEndPeriod, disables applications for using WINMM-timers after usage&shutdown of SDL, as effectively they the mechanism is now broken. Solution: Ensure this code gets called when shutting down the timer subsystem: #ifndef USE_GETTICKCOUNT if (!hires_timer_available) { timeSetPeriod(0); } #endif --- src/SDL.c | 9 +++++++-- src/test/SDL_test_common.c | 1 + src/timer/SDL_timer_c.h | 3 ++- src/timer/dummy/SDL_systimer.c | 10 ++++++++-- src/timer/haiku/SDL_systimer.c | 10 ++++++++-- src/timer/psp/SDL_systimer.c | 11 +++++++++-- src/timer/unix/SDL_systimer.c | 14 ++++++++++---- src/timer/windows/SDL_systimer.c | 28 ++++++++++++++++++++++------ src/video/SDL_video.c | 2 +- 9 files changed, 68 insertions(+), 20 deletions(-) diff --git a/src/SDL.c b/src/SDL.c index 9a8da1eebb..dacd0f7a45 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -38,7 +38,8 @@ #if !SDL_TIMERS_DISABLED extern int SDL_TimerInit(void); extern void SDL_TimerQuit(void); -extern void SDL_InitTicks(void); +extern void SDL_TicksInit(void); +extern void SDL_TicksQuit(void); #endif #if SDL_VIDEO_DRIVER_WINDOWS extern int SDL_HelperWindowCreate(void); @@ -123,7 +124,7 @@ SDL_InitSubSystem(Uint32 flags) #endif #if !SDL_TIMERS_DISABLED - SDL_InitTicks(); + SDL_TicksInit(); #endif if ((flags & SDL_INIT_GAMECONTROLLER)) { @@ -355,6 +356,10 @@ SDL_Quit(void) #endif SDL_QuitSubSystem(SDL_INIT_EVERYTHING); +#if !SDL_TIMERS_DISABLED + SDL_TicksQuit(); +#endif + SDL_ClearHints(); SDL_AssertionsQuit(); SDL_LogResetPriorities(); diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c index c03da03ab9..9d41a194e8 100644 --- a/src/test/SDL_test_common.c +++ b/src/test/SDL_test_common.c @@ -1542,6 +1542,7 @@ SDLTest_CommonQuit(SDLTest_CommonState * state) SDL_AudioQuit(); } SDL_free(state); + SDL_Quit(); } /* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/SDL_timer_c.h b/src/timer/SDL_timer_c.h index 91646d9904..8d563cff87 100644 --- a/src/timer/SDL_timer_c.h +++ b/src/timer/SDL_timer_c.h @@ -26,7 +26,8 @@ #define ROUND_RESOLUTION(X) \ (((X+TIMER_RESOLUTION-1)/TIMER_RESOLUTION)*TIMER_RESOLUTION) -extern void SDL_InitTicks(void); +extern void SDL_TicksInit(void); +extern void SDL_TicksQuit(void); extern int SDL_TimerInit(void); extern void SDL_TimerQuit(void); diff --git a/src/timer/dummy/SDL_systimer.c b/src/timer/dummy/SDL_systimer.c index 0e2703fc2b..57899ae952 100644 --- a/src/timer/dummy/SDL_systimer.c +++ b/src/timer/dummy/SDL_systimer.c @@ -27,7 +27,7 @@ static SDL_bool ticks_started = SDL_FALSE; void -SDL_InitTicks(void) +SDL_TicksInit(void) { if (ticks_started) { return; @@ -35,11 +35,17 @@ SDL_InitTicks(void) ticks_started = SDL_TRUE; } +void +SDL_TicksQuit(void) +{ + ticks_started = SDL_FALSE; +} + Uint32 SDL_GetTicks(void) { if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } SDL_Unsupported(); diff --git a/src/timer/haiku/SDL_systimer.c b/src/timer/haiku/SDL_systimer.c index 1500f6b26e..685f72a820 100644 --- a/src/timer/haiku/SDL_systimer.c +++ b/src/timer/haiku/SDL_systimer.c @@ -30,7 +30,7 @@ static bigtime_t start; static SDL_bool ticks_started = SDL_FALSE; void -SDL_InitTicks(void) +SDL_TicksInit(void) { if (ticks_started) { return; @@ -41,11 +41,17 @@ SDL_InitTicks(void) start = system_time(); } +void +SDL_TicksQuit(void) +{ + ticks_started = SDL_FALSE; +} + Uint32 SDL_GetTicks(void) { if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } return ((system_time() - start) / 1000); diff --git a/src/timer/psp/SDL_systimer.c b/src/timer/psp/SDL_systimer.c index 0f05a13637..b706f44951 100644 --- a/src/timer/psp/SDL_systimer.c +++ b/src/timer/psp/SDL_systimer.c @@ -31,7 +31,8 @@ static struct timeval start; static SDL_bool ticks_started = SDL_FALSE; -void SDL_InitTicks(void) +void +SDL_TicksInit(void) { if (ticks_started) { return; @@ -41,10 +42,16 @@ void SDL_InitTicks(void) gettimeofday(&start, NULL); } +void +SDL_TicksQuit(void) +{ + ticks_started = SDL_FALSE; +} + Uint32 SDL_GetTicks(void) { if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } struct timeval now; diff --git a/src/timer/unix/SDL_systimer.c b/src/timer/unix/SDL_systimer.c index 7c35bef523..0f4c7571e1 100644 --- a/src/timer/unix/SDL_systimer.c +++ b/src/timer/unix/SDL_systimer.c @@ -59,7 +59,7 @@ static struct timeval start_tv; static SDL_bool ticks_started = SDL_FALSE; void -SDL_InitTicks(void) +SDL_TicksInit(void) { if (ticks_started) { return; @@ -83,12 +83,18 @@ SDL_InitTicks(void) } } +void +SDL_TicksQuit(void) +{ + ticks_started = SDL_FALSE; +} + Uint32 SDL_GetTicks(void) { Uint32 ticks; if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } if (has_monotonic_time) { @@ -117,7 +123,7 @@ SDL_GetPerformanceCounter(void) { Uint64 ticks; if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } if (has_monotonic_time) { @@ -146,7 +152,7 @@ Uint64 SDL_GetPerformanceFrequency(void) { if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } if (has_monotonic_time) { diff --git a/src/timer/windows/SDL_systimer.c b/src/timer/windows/SDL_systimer.c index b1fe30171e..186233a8e0 100644 --- a/src/timer/windows/SDL_systimer.c +++ b/src/timer/windows/SDL_systimer.c @@ -40,7 +40,6 @@ static BOOL hires_timer_available; static LARGE_INTEGER hires_start_ticks; /* The number of ticks per second of the high-resolution performance counter */ static LARGE_INTEGER hires_ticks_per_second; -#endif static void timeSetPeriod(UINT uPeriod) @@ -76,13 +75,15 @@ SDL_TimerResolutionChanged(void *userdata, const char *name, const char *oldValu } } +#endif /* !USE_GETTICKCOUNT */ + void -SDL_InitTicks(void) +SDL_TicksInit(void) { if (ticks_started) { return; } - ticks_started = TRUE; + ticks_started = SDL_TRUE; /* Set first ticks value */ #ifdef USE_GETTICKCOUNT @@ -98,11 +99,26 @@ SDL_InitTicks(void) hires_timer_available = FALSE; timeSetPeriod(1); /* use 1 ms timer precision */ start = timeGetTime(); + + SDL_AddHintCallback(SDL_HINT_TIMER_RESOLUTION, + SDL_TimerResolutionChanged, NULL); + } +#endif +} + +void +SDL_TicksQuit(void) +{ +#ifndef USE_GETTICKCOUNT + if (!hires_timer_available) { + SDL_DelHintCallback(SDL_HINT_TIMER_RESOLUTION, + SDL_TimerResolutionChanged, NULL); + + timeSetPeriod(0); } #endif - SDL_AddHintCallback(SDL_HINT_TIMER_RESOLUTION, - SDL_TimerResolutionChanged, NULL); + ticks_started = SDL_FALSE; } Uint32 @@ -114,7 +130,7 @@ SDL_GetTicks(void) #endif if (!ticks_started) { - SDL_InitTicks(); + SDL_TicksInit(); } #ifdef USE_GETTICKCOUNT diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 87e8506c04..7426e2f49e 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -432,7 +432,7 @@ SDL_VideoInit(const char *driver_name) } #if !SDL_TIMERS_DISABLED - SDL_InitTicks(); + SDL_TicksInit(); #endif /* Start the event loop */ From 6bd6b5f38a6a1db4535882cc156ccb6572177b82 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 09:59:06 -0800 Subject: [PATCH 374/402] Fixed bug 2368 - Security Software is blocking RegisterRawInputDevices() Yamagi A customer of mine had the strange problem, that SDL_SetRelativeMouseMode() was failing for him on Windows 7. Luckily he was willing to provide some debug informations. We could track this problem down to RegisterRawInputDevices() failing due to security software running on his system (Norton Internet Security to be precise, but there are reports of similar problems with other products. For example [1]). Working around this issue with SDL_WarpMouseInWindow() is easy, and while I don't think that SDL2 can provide an internal workaround it would be really nice and helpfull if this could be documentated somewhere. 1: http://forums.codeguru.com/showthread.php?498374-How-to-run-a-very-long-SQL-statement --- src/events/SDL_mouse.c | 5 ++++- src/video/windows/SDL_windowsmouse.c | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c index 5e33cd5b1b..236b8c540c 100644 --- a/src/events/SDL_mouse.c +++ b/src/events/SDL_mouse.c @@ -538,7 +538,10 @@ SDL_SetRelativeMouseMode(SDL_bool enabled) } else if (enabled && ShouldUseRelativeModeWarp(mouse)) { mouse->relative_mode_warp = SDL_TRUE; } else if (mouse->SetRelativeMouseMode(enabled) < 0) { - return -1; + if (enabled) { + // Fall back to warp mode if native relative mode failed + mouse->relative_mode_warp = SDL_TRUE; + } } mouse->relative_mode = enabled; diff --git a/src/video/windows/SDL_windowsmouse.c b/src/video/windows/SDL_windowsmouse.c index 183e71c7e9..b49249db61 100644 --- a/src/video/windows/SDL_windowsmouse.c +++ b/src/video/windows/SDL_windowsmouse.c @@ -210,8 +210,8 @@ WIN_SetRelativeMouseMode(SDL_bool enabled) /* (Un)register raw input for mice */ if (RegisterRawInputDevices(&rawMouse, 1, sizeof(RAWINPUTDEVICE)) == FALSE) { - /* Only return an error when registering. If we unregister and fail, then - it's probably that we unregistered twice. That's OK. */ + /* Only return an error when registering. If we unregister and fail, + then it's probably that we unregistered twice. That's OK. */ if (enabled) { return SDL_Unsupported(); } From 1e32124b7f0a19a0608be91dc76e2bd8d6c75676 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 11:05:58 -0800 Subject: [PATCH 375/402] Updated with the latest 2.0.2 API changes --- WhatsNew.txt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/WhatsNew.txt b/WhatsNew.txt index a10938dd13..83c1be202d 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -7,7 +7,7 @@ This is a list of major changes in SDL's version history. General: * Added SDL_GL_ResetAttributes() to reset OpenGL attributes to default values * Added an API to load a database of game controller mappings from a file: - SDL_GameControllerAddMappingsFromFile() + SDL_GameControllerAddMappingsFromFile(), SDL_GameControllerAddMappingsFromRW() * Added game controller mappings for the PS4 and OUYA controllers * Added SDL_GetDefaultAssertionHandler() and SDL_GetAssertionHandler() * Added SDL_DetachThread() @@ -15,6 +15,9 @@ General: * Added SDL_vsscanf(), SDL_acos(), and SDL_asin() to the stdlib routines * EGL can now create/manage OpenGL and OpenGL ES 1.x/2.x contexts, and share them using SDL_GL_SHARE_WITH_CURRENT_CONTEXT +* Added a field "clicks" to the mouse button event which records whether the event is a single click, double click, etc. +* The screensaver is now disabled by default, and there is a hint SDL_HINT_VIDEO_ALLOW_SCREENSAVER that can change that behavior. +* Added a hint SDL_HINT_MOUSE_RELATIVE_MODE_WARP to specify whether mouse relative mode should be emulated using mouse warping. * testgl2 does not need to link with libGL anymore * Added testgles2 test program to demonstrate working with OpenGL ES 2.0 * Added controllermap test program to visually map a game controller @@ -22,16 +25,23 @@ General: Windows: * Support for OpenGL ES 2.x contexts using either WGL or EGL (natively via the driver or emulated through ANGLE) +* Added a hint SDL_HINT_VIDEO_WIN_D3DCOMPILER to specify which D3D shader compiler to use for OpenGL ES 2 support through ANGLE +* Added a hint SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT that is useful when creating multiple windows that should share the same OpenGL context. +* Added an event SDL_RENDER_TARGETS_RESET that is sent when D3D9 render targets are reset after the device has been restored. + +Mac OS X: +* Added a hint SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK to control whether Ctrl+click should be treated as a right click on Mac OS X. This is off by default. + +Linux: +* Fixed fullscreen and focused behavior when receiving NotifyGrab events +* Added experimental Wayland and Mir support, disabled by default Android: * Joystick support (minimum SDK version required to build SDL is now 12, the required runtime version remains at 10, but on such devices joystick support won't be available). * Hotplugging support for joysticks - -Linux: -* Fixed fullscreen and focused behavior when receiving NotifyGrab events -* Added experimental Wayland and Mir support, disabled by default +* Added a hint SDL_HINT_ACCEL_AS_JOY to control whether the accelerometer should be listed as a 3 axis joystick, which it will by default. --------------------------------------------------------------------------- From 1c9710779df70b31d63e7c16bec5c1de8df42283 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 11:39:39 -0800 Subject: [PATCH 376/402] Fixed test for libuuid.a --- configure | 2 +- configure.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index be5648476a..0d00f63599 100755 --- a/configure +++ b/configure @@ -22808,7 +22808,7 @@ $as_echo "#define SDL_LOADSO_WINDOWS 1" >>confdefs.h have_loadso=yes fi # Set up the system libraries we need - if -f /lib/w32api/libuuid.a ; then + if test -f /lib/w32api/libuuid.a; then LIBUUID=/lib/w32api/libuuid.a else LIBUUID=-luuid diff --git a/configure.in b/configure.in index 2decb13734..98edcf8f2d 100644 --- a/configure.in +++ b/configure.in @@ -2860,7 +2860,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau have_loadso=yes fi # Set up the system libraries we need - if [ -f /lib/w32api/libuuid.a ]; then + if test -f /lib/w32api/libuuid.a; then LIBUUID=/lib/w32api/libuuid.a else LIBUUID=-luuid From 0e30a27f499e7bd6e170584ff46e3ab15268535a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 11:40:41 -0800 Subject: [PATCH 377/402] Fixed compiler warning --- src/video/windows/SDL_windowsvideo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/windows/SDL_windowsvideo.c b/src/video/windows/SDL_windowsvideo.c index dde262268a..92ddcdfadf 100644 --- a/src/video/windows/SDL_windowsvideo.c +++ b/src/video/windows/SDL_windowsvideo.c @@ -261,7 +261,7 @@ DXGI_LoadDLL( void **pDXGIDLL , IDXGIFactory **pDXGIFactory ) "CreateDXGIFactory"); if (CreateDXGI) { GUID dxgiGUID = {0x7b7166ec,0x21c7,0x44ae,{0xb2,0x1a,0xc9,0xae,0x32,0x1a,0xe3,0x69}}; - if( !SUCCEEDED( CreateDXGI( &dxgiGUID, pDXGIFactory ))) { + if( !SUCCEEDED( CreateDXGI( &dxgiGUID, (void**)pDXGIFactory ))) { *pDXGIFactory = NULL; } } From cf1890e3fe86dbbb42423a424210e0fec2663562 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 11:42:12 -0800 Subject: [PATCH 378/402] Fixed compiler warning --- src/video/windows/SDL_windowsopengles.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/video/windows/SDL_windowsopengles.c b/src/video/windows/SDL_windowsopengles.c index 9cb5218ac8..a921ba8aa8 100644 --- a/src/video/windows/SDL_windowsopengles.c +++ b/src/video/windows/SDL_windowsopengles.c @@ -32,8 +32,6 @@ int WIN_GLES_LoadLibrary(_THIS, const char *path) { - SDL_VideoData *data = (SDL_VideoData *)_this->driverdata; - /* If the profile requested is not GL ES, switch over to WIN_GL functions */ if (_this->gl_config.profile_mask != SDL_GL_CONTEXT_PROFILE_ES) { #if SDL_VIDEO_OPENGL_WGL From 4cc8ce7f620176a992566fcabf843529424d666a Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 1 Mar 2014 12:21:15 -0800 Subject: [PATCH 379/402] Changed SDL_HINT_ACCEL_AS_JOY to SDL_HINT_ACCELEROMETER_AS_JOYSTICK to be more clear. --- WhatsNew.txt | 2 +- include/SDL_hints.h | 2 +- src/joystick/android/SDL_sysjoystick.c | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/WhatsNew.txt b/WhatsNew.txt index 83c1be202d..ae1ed18e96 100644 --- a/WhatsNew.txt +++ b/WhatsNew.txt @@ -41,7 +41,7 @@ Android: the required runtime version remains at 10, but on such devices joystick support won't be available). * Hotplugging support for joysticks -* Added a hint SDL_HINT_ACCEL_AS_JOY to control whether the accelerometer should be listed as a 3 axis joystick, which it will by default. +* Added a hint SDL_HINT_ACCELEROMETER_AS_JOYSTICK to control whether the accelerometer should be listed as a 3 axis joystick, which it will by default. --------------------------------------------------------------------------- diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 26edca586e..9fd9dae82d 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -244,7 +244,7 @@ extern "C" { * "0" - List only real joysticks and accept input from them * "1" - List real joysticks along with the accelerometer as if it were a 3 axis joystick (the default). */ -#define SDL_HINT_ACCEL_AS_JOY "SDL_ACCEL_AS_JOY" +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" /** diff --git a/src/joystick/android/SDL_sysjoystick.c b/src/joystick/android/SDL_sysjoystick.c index ce49fa9338..422c5f5f4d 100644 --- a/src/joystick/android/SDL_sysjoystick.c +++ b/src/joystick/android/SDL_sysjoystick.c @@ -379,11 +379,11 @@ Android_RemoveJoystick(int device_id) int SDL_SYS_JoystickInit(void) { - const char *env; + const char *hint; SDL_SYS_JoystickDetect(); - env = SDL_GetHint(SDL_HINT_ACCEL_AS_JOY); - if (!env || SDL_atoi(env)) { + hint = SDL_GetHint(SDL_HINT_ACCELEROMETER_AS_JOYSTICK); + if (!hint || SDL_atoi(hint)) { /* Default behavior, accelerometer as joystick */ Android_AddJoystick(ANDROID_ACCELEROMETER_DEVICE_ID, ANDROID_ACCELEROMETER_NAME, SDL_TRUE, 0, 3, 0, 0); } From 530235970ccd579fbd1f63f1805df98c56d331c9 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 1 Mar 2014 20:28:40 -0500 Subject: [PATCH 380/402] Force Windows version of SDL_GetPrefPath() to Unicode, create missing dirs. Fixes Bugzilla #2273. --- src/filesystem/windows/SDL_sysfilesystem.c | 64 ++++++++++++++++++---- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/src/filesystem/windows/SDL_sysfilesystem.c b/src/filesystem/windows/SDL_sysfilesystem.c index caa299acb3..a15956f6dd 100644 --- a/src/filesystem/windows/SDL_sysfilesystem.c +++ b/src/filesystem/windows/SDL_sysfilesystem.c @@ -69,28 +69,70 @@ SDL_GetPrefPath(const char *org, const char *app) * NULL, &wszPath); */ - TCHAR path[MAX_PATH]; + WCHAR path[MAX_PATH]; char *utf8 = NULL; char *retval = NULL; + WCHAR* worg = NULL; + WCHAR* wapp = NULL; + size_t new_wpath_len = 0; + BOOL api_result = FALSE; - if (!SUCCEEDED(SHGetFolderPath(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, path))) { + if (!SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_APPDATA | CSIDL_FLAG_CREATE, NULL, 0, path))) { WIN_SetError("Couldn't locate our prefpath"); return NULL; } - utf8 = WIN_StringToUTF8(path); - if (utf8) { - const size_t len = SDL_strlen(utf8) + SDL_strlen(org) + SDL_strlen(app) + 4; - retval = (char *) SDL_malloc(len); - if (!retval) { - SDL_free(utf8); - SDL_OutOfMemory(); + worg = WIN_UTF8ToString(org); + if (worg == NULL) { + SDL_OutOfMemory(); + return NULL; + } + + wapp = WIN_UTF8ToString(app); + if (wapp == NULL) { + SDL_free(worg); + SDL_OutOfMemory(); + return NULL; + } + + new_wpath_len = lstrlenW(worg) + lstrlenW(wapp) + lstrlenW(path) + 3; + + if ((new_wpath_len + 1) > MAX_PATH) { + SDL_free(worg); + SDL_free(wapp); + WIN_SetError("Path too long."); + return NULL; + } + + lstrcatW(path, L"\\"); + lstrcatW(path, worg); + SDL_free(worg); + + api_result = CreateDirectoryW(path, NULL); + if (api_result == FALSE) { + if (GetLastError() != ERROR_ALREADY_EXISTS) { + SDL_free(wapp); + WIN_SetError("Couldn't create a prefpath."); return NULL; } - SDL_snprintf(retval, len, "%s\\%s\\%s\\", utf8, org, app); - SDL_free(utf8); } + lstrcatW(path, L"\\"); + lstrcatW(path, wapp); + SDL_free(wapp); + + api_result = CreateDirectoryW(path, NULL); + if (api_result == FALSE) { + if (GetLastError() != ERROR_ALREADY_EXISTS) { + WIN_SetError("Couldn't create a prefpath."); + return NULL; + } + } + + lstrcatW(path, L"\\"); + + retval = WIN_StringToUTF8(path); + return retval; } From eead99d7cdcac2d545f90d095d9fafa8ae471d71 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 1 Mar 2014 20:46:45 -0500 Subject: [PATCH 381/402] Mac OS X: Make OpenGL context selection more robust, avoid software fallback. Fixes Bugzilla #2197. --- src/video/cocoa/SDL_cocoaopengl.m | 65 ++++++++++++++++++------------- 1 file changed, 38 insertions(+), 27 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 5c44e31e0f..696709f117 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -35,17 +35,14 @@ #define DEFAULT_OPENGL "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib" -#ifndef kCGLPFAOpenGLProfile -#define kCGLPFAOpenGLProfile 99 +#ifndef NSOpenGLPFAOpenGLProfile +#define NSOpenGLPFAOpenGLProfile 99 #endif -#ifndef kCGLOGLPVersion_Legacy -#define kCGLOGLPVersion_Legacy 0x1000 +#ifndef NSOpenGLProfileVersionLegacy +#define NSOpenGLProfileVersionLegacy 0x1000 #endif -#ifndef kCGLOGLPVersion_GL3_Core -#define kCGLOGLPVersion_GL3_Core 0x3200 -#endif -#ifndef kCGLOGLPVersion_GL4_Core -#define kCGLOGLPVersion_GL4_Core 0x4100 +#ifndef NSOpenGLProfileVersion3_2Core +#define NSOpenGLProfileVersion3_2Core 0x3200 #endif @implementation SDLOpenGLContext : NSOpenGLContext @@ -164,8 +161,6 @@ - (void)setWindow:(SDL_Window *)newWindow SDL_GLContext Cocoa_GL_CreateContext(_THIS, SDL_Window * window) { - const int wantver = (_this->gl_config.major_version << 8) | - (_this->gl_config.minor_version); SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; NSAutoreleasePool *pool; SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window); @@ -175,16 +170,16 @@ - (void)setWindow:(SDL_Window *)newWindow SDLOpenGLContext *context; NSOpenGLContext *share_context = nil; int i = 0; + const char *glversion; + int glversion_major; + int glversion_minor; if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_ES) { SDL_SetError ("OpenGL ES is not supported on this platform"); return NULL; } - - /* Sadly, we'll have to update this as life progresses, since we need to - set an enum for context profiles, not a context version number */ - if (wantver > 0x0401) { - SDL_SetError ("OpenGL > 4.1 is not supported on this platform"); + if ((_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_CORE) && (data->osversion < 0x1070)) { + SDL_SetError ("OpenGL Core Profile is not supported on this platform version"); return NULL; } @@ -192,19 +187,11 @@ - (void)setWindow:(SDL_Window *)newWindow /* specify a profile if we're on Lion (10.7) or later. */ if (data->osversion >= 0x1070) { - NSOpenGLPixelFormatAttribute profile = kCGLOGLPVersion_Legacy; + NSOpenGLPixelFormatAttribute profile = NSOpenGLProfileVersionLegacy; if (_this->gl_config.profile_mask == SDL_GL_CONTEXT_PROFILE_CORE) { - if (wantver == 0x0302) { - profile = kCGLOGLPVersion_GL3_Core; - } else if ((wantver == 0x0401) && (data->osversion >= 0x1090)) { - profile = kCGLOGLPVersion_GL4_Core; - } else { - SDL_SetError("Requested GL version is not supported on this platform"); - [pool release]; - return NULL; - } + profile = NSOpenGLProfileVersion3_2Core; } - attr[i++] = kCGLPFAOpenGLProfile; + attr[i++] = NSOpenGLPFAOpenGLProfile; attr[i++] = profile; } @@ -284,9 +271,33 @@ - (void)setWindow:(SDL_Window *)newWindow if ( Cocoa_GL_MakeCurrent(_this, window, context) < 0 ) { Cocoa_GL_DeleteContext(_this, context); + SDL_SetError ("Failed making OpenGL context current"); return NULL; } + glversion = (const char *)glGetString(GL_VERSION); + if (glversion == NULL) { + Cocoa_GL_DeleteContext(_this, context); + SDL_SetError ("Failed getting OpenGL context version"); + return NULL; + } + + if (SDL_sscanf(glversion, "%d.%d", &glversion_major, &glversion_minor) != 2) { + Cocoa_GL_DeleteContext(_this, context); + SDL_SetError ("Failed parsing OpenGL context version"); + return NULL; + } + + if ((glversion_major < _this->gl_config.major_version) || + ((glversion_major == _this->gl_config.major_version) && (glversion_minor < _this->gl_config.minor_version))) { + Cocoa_GL_DeleteContext(_this, context); + SDL_SetError ("Failed creating OpenGL context at version requested"); + return NULL; + } + + _this->gl_config.major_version = glversion_major; + _this->gl_config.minor_version = glversion_minor; + return context; } From 2b8d3447c5c5c801cc66fe2f255af63dd3751dfc Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 1 Mar 2014 20:59:43 -0500 Subject: [PATCH 382/402] Added some FIXMEs. --- src/joystick/windows/SDL_dxjoystick.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index da96b6063a..4e763aa0df 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -1448,6 +1448,7 @@ SDL_SYS_JoystickUpdate_XInput(SDL_Joystick * joystick) XINPUT_STATE_EX *pXInputState = &joystick->hwdata->XInputState[joystick->hwdata->currentXInputSlot]; XINPUT_STATE_EX *pXInputStatePrev = &joystick->hwdata->XInputState[joystick->hwdata->currentXInputSlot ^ 1]; + /* !!! FIXME: why isn't this just using SDL_PrivateJoystickAxis_Int()? */ SDL_PrivateJoystickAxis( joystick, 0, (Sint16)pXInputState->Gamepad.sThumbLX ); SDL_PrivateJoystickAxis( joystick, 1, (Sint16)(-SDL_max(-32767, pXInputState->Gamepad.sThumbLY)) ); SDL_PrivateJoystickAxis( joystick, 2, (Sint16)pXInputState->Gamepad.sThumbRX ); @@ -1455,6 +1456,7 @@ SDL_SYS_JoystickUpdate_XInput(SDL_Joystick * joystick) SDL_PrivateJoystickAxis( joystick, 4, (Sint16)(((int)pXInputState->Gamepad.bLeftTrigger*65535/255) - 32768)); SDL_PrivateJoystickAxis( joystick, 5, (Sint16)(((int)pXInputState->Gamepad.bRightTrigger*65535/255) - 32768)); + /* !!! FIXME: why isn't this just using SDL_PrivateJoystickButton_Int(), instead of keeping these two alternating state buffers? */ if ( ButtonChanged( pXInputState->Gamepad.wButtons, pXInputStatePrev->Gamepad.wButtons, XINPUT_GAMEPAD_DPAD_UP ) ) SDL_PrivateJoystickButton(joystick, 0, pXInputState->Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP ? SDL_PRESSED : SDL_RELEASED ); if ( ButtonChanged( pXInputState->Gamepad.wButtons, pXInputStatePrev->Gamepad.wButtons, XINPUT_GAMEPAD_DPAD_DOWN ) ) From 516ee95e4a7c34e971ee7c53f622c881bff40475 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 1 Mar 2014 21:33:48 -0500 Subject: [PATCH 383/402] Dynamically load glGetString(), to avoid direct dependency on OpenGL. --- src/video/cocoa/SDL_cocoaopengl.m | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoaopengl.m b/src/video/cocoa/SDL_cocoaopengl.m index 696709f117..cacb75511f 100644 --- a/src/video/cocoa/SDL_cocoaopengl.m +++ b/src/video/cocoa/SDL_cocoaopengl.m @@ -162,6 +162,7 @@ - (void)setWindow:(SDL_Window *)newWindow Cocoa_GL_CreateContext(_THIS, SDL_Window * window) { SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; + const GLubyte *(APIENTRY * glGetStringFunc)(GLenum) = NULL; NSAutoreleasePool *pool; SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window); SDL_DisplayData *displaydata = (SDL_DisplayData *)display->driverdata; @@ -275,7 +276,14 @@ - (void)setWindow:(SDL_Window *)newWindow return NULL; } - glversion = (const char *)glGetString(GL_VERSION); + glGetStringFunc = (const GLubyte *(APIENTRY *)(GLenum)) SDL_GL_GetProcAddress("glGetString"); + if (!glGetStringFunc) { + Cocoa_GL_DeleteContext(_this, context); + SDL_SetError ("Failed getting OpenGL glGetString entry point"); + return NULL; + } + + glversion = (const char *)glGetStringFunc(GL_VERSION); if (glversion == NULL) { Cocoa_GL_DeleteContext(_this, context); SDL_SetError ("Failed getting OpenGL context version"); From 9a8b2ecef76dffb06877e4612555e90cc75ed9b2 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 1 Mar 2014 22:27:13 -0500 Subject: [PATCH 384/402] Fixed a typo in a comment. --- src/joystick/windows/SDL_dxjoystick.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index 4e763aa0df..7aa7d3307b 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -782,7 +782,7 @@ EnumXInputDevices(JoyStick_DeviceData **pContext) XINPUT_CAPABILITIES capabilities; if (XINPUTGETCAPABILITIES(userid, XINPUT_FLAG_GAMEPAD, &capabilities) == ERROR_SUCCESS) { /* Current version of XInput mistakenly returns 0 as the Type. Ignore it and ensure the subtype is a gamepad. */ - /* !!! FIXME: we might want to support steering wheels or guitars or whatever laster. */ + /* !!! FIXME: we might want to support steering wheels or guitars or whatever later. */ if (capabilities.SubType == XINPUT_DEVSUBTYPE_GAMEPAD) { AddXInputDevice(userid, pContext); } From f4d4b912b1b22d7c4b8de84735efa12d39cc8091 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sat, 1 Mar 2014 22:27:21 -0500 Subject: [PATCH 385/402] Added a FIXME. --- src/joystick/windows/SDL_dxjoystick.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/joystick/windows/SDL_dxjoystick.c b/src/joystick/windows/SDL_dxjoystick.c index 7aa7d3307b..3c009746b6 100644 --- a/src/joystick/windows/SDL_dxjoystick.c +++ b/src/joystick/windows/SDL_dxjoystick.c @@ -1524,6 +1524,7 @@ TranslatePOV(DWORD value) /* SDL_PrivateJoystick* doesn't discard duplicate events, so we need to * do it. */ +/* !!! FIXME: SDL_PrivateJoystickAxis _does_ discard duplicate events now. Ditch this code. */ static int SDL_PrivateJoystickAxis_Int(SDL_Joystick * joystick, Uint8 axis, Sint16 value) { From 28a73017b743bbe1569d6a3dfe09b5b755870c3d Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 00:02:56 -0500 Subject: [PATCH 386/402] Windows: Fixed crash if quitting without closing an XInput haptic device. --- src/haptic/windows/SDL_syshaptic.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/haptic/windows/SDL_syshaptic.c b/src/haptic/windows/SDL_syshaptic.c index 8454d93965..a4b5e42644 100644 --- a/src/haptic/windows/SDL_syshaptic.c +++ b/src/haptic/windows/SDL_syshaptic.c @@ -939,20 +939,32 @@ SDL_SYS_HapticQuit(void) { SDL_hapticlist_item *item; SDL_hapticlist_item *next = NULL; - - if (loaded_xinput) { - WIN_UnloadXInputDLL(); - loaded_xinput = SDL_FALSE; + SDL_Haptic *hapticitem = NULL; + + extern SDL_Haptic *SDL_haptics; + for (hapticitem = SDL_haptics; hapticitem; hapticitem = hapticitem->next) { + if ((hapticitem->hwdata->bXInputHaptic) && (hapticitem->hwdata->thread)) { + /* we _have_ to stop the thread before we free the XInput DLL! */ + hapticitem->hwdata->stopThread = 1; + SDL_WaitThread(hapticitem->hwdata->thread, NULL); + hapticitem->hwdata->thread = NULL; + } } for (item = SDL_hapticlist; item; item = next) { /* Opened and not closed haptics are leaked, this is on purpose. * Close your haptic devices after usage. */ + /* !!! FIXME: (...is leaking on purpose a good idea?) */ next = item->next; SDL_free(item->name); SDL_free(item); } + if (loaded_xinput) { + WIN_UnloadXInputDLL(); + loaded_xinput = SDL_FALSE; + } + if (dinput != NULL) { IDirectInput8_Release(dinput); dinput = NULL; From 526a9af169ec38ad3198e8c4f2cbb6e395d0769e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 01:59:25 -0500 Subject: [PATCH 387/402] Fixed X11 XInput2 multitouch test to work in configure script. configure wraps this C code in a main() function, so you can't declare a function body in there. Besides, I'm not sure why we declared a function that's part of the multitouch API anyhow. Now we just reference a type that only exists if the headers have multitouch support and call it a day. --- configure | 5 ----- configure.in | 5 ----- 2 files changed, 10 deletions(-) diff --git a/configure b/configure index 0d00f63599..42d781f02a 100755 --- a/configure +++ b/configure @@ -20173,11 +20173,6 @@ main () int event_type = XI_TouchBegin; XITouchClassInfo *t; -Status -XIAllowTouchEvents(Display *a,int b,unsigned int c,Window d,int f) -{ - return (Status)0; -} ; return 0; diff --git a/configure.in b/configure.in index 98edcf8f2d..f0bfd6f81e 100644 --- a/configure.in +++ b/configure.in @@ -1555,11 +1555,6 @@ AC_HELP_STRING([--enable-video-x11-xinput], [enable X11 XInput extension for man ],[ int event_type = XI_TouchBegin; XITouchClassInfo *t; -Status -XIAllowTouchEvents(Display *a,int b,unsigned int c,Window d,int f) -{ - return (Status)0; -} ],[ have_xinput2_multitouch=yes AC_DEFINE(SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH) From 36f63c2b8de3c376c38b2224d1225072b4a8ea57 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 02:00:40 -0500 Subject: [PATCH 388/402] Better attempt to detect available X11 XInput2 features. Fixes Bugzilla #2306. --- src/video/x11/SDL_x11xinput2.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 38c0dd32c4..7c149922f6 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -60,16 +60,18 @@ static void parse_valuators(const double *input_values,unsigned char *mask,int m } } -static SDL_bool -xinput2_version_okay(Display *display, const int major, const int minor) +static int +query_xinput2_version(Display *display, int major, int minor) { - int outmajor = major; - int outminor = minor; - if (X11_XIQueryVersion(display, &outmajor, &outminor) != Success) { - return SDL_FALSE; - } + /* We don't care if this fails, so long as it sets major/minor on it's way out the door. */ + X11_XIQueryVersion(display, &major, &minor); + return ((major * 1000) + minor); +} - return ( ((outmajor * 1000) + outminor) >= ((major * 1000) + minor) ); +static SDL_bool +xinput2_version_atleast(const int version, const int wantmajor, const int wantminor) +{ + return ( version >= ((wantmajor * 1000) + wantminor) ); } #endif /* SDL_VIDEO_DRIVER_X11_XINPUT2 */ @@ -79,9 +81,11 @@ X11_InitXinput2(_THIS) #if SDL_VIDEO_DRIVER_X11_XINPUT2 SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; + int version = 0; XIEventMask eventmask; unsigned char mask[3] = { 0,0,0 }; int event, err; + /* * Initialize XInput 2 * According to http://who-t.blogspot.com/2009/05/xi2-recipes-part-1.html its better @@ -96,16 +100,16 @@ X11_InitXinput2(_THIS) return; /* X server does not have XInput at all */ } - if (!xinput2_version_okay(data->display, 2, 0)) { - return; /* X server does not support the version we want */ + /* We need at least 2.2 for Multitouch, 2.0 otherwise. */ + version = query_xinput2_version(data->display, 2, 2); + if (!xinput2_version_atleast(version, 2, 0)) { + return; /* X server does not support the version we want at all. */ } xinput2_initialized = 1; -#if SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH - if (xinput2_version_okay(data->display, 2, 2)) { /* Multitouch needs XInput 2.2 */ - xinput2_multitouch_supported = 1; - } +#if SDL_VIDEO_DRIVER_X11_XINPUT2_SUPPORTS_MULTITOUCH /* Multitouch needs XInput 2.2 */ + xinput2_multitouch_supported = xinput2_version_atleast(version, 2, 2); #endif /* Enable Raw motion events for this display */ From 45f2312e797fd2d2bff51f25c0566d8f79367b43 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 12:45:51 -0500 Subject: [PATCH 389/402] Reworked fullscreen policy on Mac OS X. - SDL_WINDOW_FULLSCREEN works as always (change resolution, lock to window). - SDL_WINDOW_FULLSCREEN_DESKTOP now puts the window in its own Space, and hides the menu bar, but you can slide between Spaces and Command-Tab between apps without the window minimizing, etc. - SDL_WINDOW_RESIZABLE windows will get the new 10.7+ "toggle fullscreen" window decoration and menubar item. As far as the app is concerned, this is no different than resizing a window, but it gives the end-user more power. - The hint for putting fullscreen windows into the Spaces system is gone, since Spaces can't enforce the requested resolution. It's a perfect match for FULLSCREEN_DESKTOP, though, so this is all automated now. --- include/SDL_hints.h | 11 ------ src/video/cocoa/SDL_cocoawindow.m | 63 +++++++++++++++++-------------- 2 files changed, 35 insertions(+), 39 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 9fd9dae82d..540f0d8933 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -200,17 +200,6 @@ extern "C" { */ #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" -/** - * \brief Set whether windows go fullscreen in their own spaces on Mac OS X - * - * This variable can be set to the following values: - * "0" - Fullscreen windows will use the classic fullscreen mode - * "1" - Fullscreen windows will use fullscreen spaces - * - * By default SDL will use the classic fullscreen mode. - */ -#define SDL_HINT_VIDEO_FULLSCREEN_SPACES "SDL_VIDEO_FULLSCREEN_SPACES" - /** * \brief A variable controlling whether the idle timer is disabled on iOS. * diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index c1c0caac95..f6b5843322 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -121,7 +121,9 @@ static void ConvertNSRect(NSRect *r) { unsigned int style; - if (window->flags & SDL_WINDOW_FULLSCREEN) { + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask); + } else if (window->flags & SDL_WINDOW_FULLSCREEN) { style = NSBorderlessWindowMask; } else { if (window->flags & SDL_WINDOW_BORDERLESS) { @@ -256,20 +258,17 @@ -(void) resumeVisibleObservation } } --(BOOL) setFullscreenSpace:(BOOL) state; +-(BOOL) setFullscreenSpace:(BOOL) state { SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - if (![nswindow respondsToSelector: @selector(collectionBehavior)]) { - return NO; - } - if ([nswindow collectionBehavior] != NSWindowCollectionBehaviorFullScreenPrimary) { - return NO; - } - - if (state == isFullscreenSpace) { - return YES; + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP) { + return NO; /* we only allow this on FULLSCREEN_DESKTOP windows. */ + } else if (![nswindow respondsToSelector: @selector(setCollectionBehavior:)]) { + return NO; /* No Spaces support? Older Mac OS X? */ + } else if (state == isFullscreenSpace) { + return YES; /* already there. */ } if (inFullscreenTransition) { @@ -282,13 +281,8 @@ -(BOOL) setFullscreenSpace:(BOOL) state; } inFullscreenTransition = YES; - /* Update the flags here so the state change is available immediately */ - if (state) { - window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP; - } else { - window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; - } - + /* you need to be FullScreenPrimary, or toggleFullScreen doesn't work. Unset it again in windowDid[Enter|Exit]FullScreen. */ + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; } @@ -443,6 +437,11 @@ - (void)windowDidMove:(NSNotification *)aNotification - (void)windowDidResize:(NSNotification *)aNotification { + if (inFullscreenTransition) { + /* We'll take care of this at the end of the transition */ + return; + } + SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; int x, y, w, h; @@ -453,11 +452,6 @@ - (void)windowDidResize:(NSNotification *)aNotification w = (int)rect.size.width; h = (int)rect.size.height; - if (inFullscreenTransition) { - /* We'll take care of this at the end of the transition */ - return; - } - if (SDL_IsShapedWindow(window)) { Cocoa_ResizeWindowShape(window); } @@ -538,7 +532,6 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; - window->flags |= SDL_WINDOW_FULLSCREEN_DESKTOP; SetWindowStyle(window, (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask)); isFullscreenSpace = YES; @@ -548,6 +541,7 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; + NSWindow *nswindow = _data->nswindow; inFullscreenTransition = NO; @@ -555,6 +549,12 @@ - (void)windowDidEnterFullScreen:(NSNotification *)aNotification pendingWindowOperation = PENDING_OPERATION_NONE; [self setFullscreenSpace:NO]; } else { + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + /* Remove the fullscreen toggle button and menu now that we're here. */ + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorManaged]; + [NSMenu setMenuBarVisible:NO]; + } + pendingWindowOperation = PENDING_OPERATION_NONE; /* Force the size change event in case it was delivered earlier while the window was still animating into place. @@ -569,7 +569,6 @@ - (void)windowWillExitFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; - window->flags &= ~SDL_WINDOW_FULLSCREEN_DESKTOP; SetWindowStyle(window, GetWindowStyle(window)); isFullscreenSpace = NO; @@ -590,6 +589,12 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification pendingWindowOperation = PENDING_OPERATION_NONE; [nswindow miniaturize:nil]; } else { + if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + /* Remove the fullscreen toggle button and readd menu now that we're here. */ + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorManaged]; + [NSMenu setMenuBarVisible:YES]; + } + pendingWindowOperation = PENDING_OPERATION_NONE; /* Force the size change event in case it was delivered earlier while the window was still animating into place. @@ -1007,9 +1012,11 @@ - (void)resetCursorRects return -1; } [nswindow setBackgroundColor:[NSColor blackColor]]; - if ([nswindow respondsToSelector:@selector(setCollectionBehavior:)]) { - const char *hint = SDL_GetHint(SDL_HINT_VIDEO_FULLSCREEN_SPACES); - if (hint && SDL_atoi(hint) > 0) { + + if ([nswindow respondsToSelector: @selector(setCollectionBehavior:)]) { + /* we put FULLSCREEN_DESKTOP windows in their own Space, without a toggle button or menubar, later */ + if (window->flags & SDL_WINDOW_RESIZABLE) { + /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */ [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; } } From 512b203b5d54d3a76da79895f6a303a6c1670024 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 2 Mar 2014 11:08:05 -0800 Subject: [PATCH 390/402] Make sure we return version 0 if XInput detection fails --- src/video/x11/SDL_x11xinput2.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 7c149922f6..2b4f9c9e12 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -61,9 +61,10 @@ static void parse_valuators(const double *input_values,unsigned char *mask,int m } static int -query_xinput2_version(Display *display, int major, int minor) +query_xinput2_version(Display *display) { /* We don't care if this fails, so long as it sets major/minor on it's way out the door. */ + int major = 0, minor = 0; X11_XIQueryVersion(display, &major, &minor); return ((major * 1000) + minor); } @@ -101,7 +102,7 @@ X11_InitXinput2(_THIS) } /* We need at least 2.2 for Multitouch, 2.0 otherwise. */ - version = query_xinput2_version(data->display, 2, 2); + version = query_xinput2_version(data->display); if (!xinput2_version_atleast(version, 2, 0)) { return; /* X server does not support the version we want at all. */ } From 10043123e517f9d9d90abfc59d02c0e6aac26008 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 2 Mar 2014 11:10:00 -0800 Subject: [PATCH 391/402] Backed out changeset a6493ee0c9b5 --- src/video/x11/SDL_x11xinput2.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/video/x11/SDL_x11xinput2.c b/src/video/x11/SDL_x11xinput2.c index 2b4f9c9e12..7c149922f6 100644 --- a/src/video/x11/SDL_x11xinput2.c +++ b/src/video/x11/SDL_x11xinput2.c @@ -61,10 +61,9 @@ static void parse_valuators(const double *input_values,unsigned char *mask,int m } static int -query_xinput2_version(Display *display) +query_xinput2_version(Display *display, int major, int minor) { /* We don't care if this fails, so long as it sets major/minor on it's way out the door. */ - int major = 0, minor = 0; X11_XIQueryVersion(display, &major, &minor); return ((major * 1000) + minor); } @@ -102,7 +101,7 @@ X11_InitXinput2(_THIS) } /* We need at least 2.2 for Multitouch, 2.0 otherwise. */ - version = query_xinput2_version(data->display); + version = query_xinput2_version(data->display, 2, 2); if (!xinput2_version_atleast(version, 2, 0)) { return; /* X server does not support the version we want at all. */ } From c4029dd7445f113c4024dec86fd294a5a9ac9f0c Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Sun, 2 Mar 2014 14:59:06 -0500 Subject: [PATCH 392/402] Add support for the freedesktop.org Idle Inhibition specification, as per: http://people.freedesktop.org/~hadess/idle-inhibition-spec/ This makes screensaver inhibition work with GNOME 3 and other desktop environments that implement the specification. https://bugzilla.libsdl.org/show_bug.cgi?id=2169 --- src/video/x11/SDL_x11events.c | 18 +++++--- src/video/x11/SDL_x11video.c | 77 +++++++++++++++++++++++++++++++++++ src/video/x11/SDL_x11video.h | 1 + 3 files changed, 90 insertions(+), 6 deletions(-) diff --git a/src/video/x11/SDL_x11events.c b/src/video/x11/SDL_x11events.c index bf0b1391fe..ad3c59d6a7 100644 --- a/src/video/x11/SDL_x11events.c +++ b/src/video/x11/SDL_x11events.c @@ -1029,7 +1029,19 @@ X11_SuspendScreenSaver(_THIS) SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; int dummy; int major_version, minor_version; +#endif /* SDL_VIDEO_DRIVER_X11_XSCRNSAVER */ +#if SDL_USE_LIBDBUS + if (SDL_dbus_screensaver_inhibit(_this)) { + return; + } + + if (_this->suspend_screensaver) { + SDL_dbus_screensaver_tickle(_this); + } +#endif + +#if SDL_VIDEO_DRIVER_X11_XSCRNSAVER if (SDL_X11_HAVE_XSS) { /* X11_XScreenSaverSuspend was introduced in MIT-SCREEN-SAVER 1.1 */ if (!X11_XScreenSaverQueryExtension(data->display, &dummy, &dummy) || @@ -1043,12 +1055,6 @@ X11_SuspendScreenSaver(_THIS) X11_XResetScreenSaver(data->display); } #endif - -#if SDL_USE_LIBDBUS - if (_this->suspend_screensaver) { - SDL_dbus_screensaver_tickle(_this); - } -#endif } #endif /* SDL_VIDEO_DRIVER_X11 */ diff --git a/src/video/x11/SDL_x11video.c b/src/video/x11/SDL_x11video.c index 63cfa98245..ca9faee31e 100644 --- a/src/video/x11/SDL_x11video.c +++ b/src/video/x11/SDL_x11video.c @@ -45,6 +45,7 @@ #include "SDL_loadso.h" static const char *dbus_library = "libdbus-1.so.3"; static void *dbus_handle = NULL; +static unsigned int screensaver_cookie = 0; /* !!! FIXME: this is kinda ugly. */ static SDL_bool @@ -63,10 +64,13 @@ load_dbus_sym(const char *fn, void **addr) static DBusConnection *(*DBUS_dbus_bus_get_private)(DBusBusType, DBusError *) = NULL; static void (*DBUS_dbus_connection_set_exit_on_disconnect)(DBusConnection *, dbus_bool_t) = NULL; static dbus_bool_t (*DBUS_dbus_connection_send)(DBusConnection *, DBusMessage *, dbus_uint32_t *) = NULL; +static DBusMessage *(*DBUS_dbus_connection_send_with_reply_and_block)(DBusConnection *, DBusMessage *, int, DBusError *) = NULL; static void (*DBUS_dbus_connection_close)(DBusConnection *) = NULL; static void (*DBUS_dbus_connection_unref)(DBusConnection *) = NULL; static void (*DBUS_dbus_connection_flush)(DBusConnection *) = NULL; static DBusMessage *(*DBUS_dbus_message_new_method_call)(const char *, const char *, const char *, const char *) = NULL; +static dbus_bool_t (*DBUS_dbus_message_append_args)(DBusMessage *, int, ...) = NULL; +static dbus_bool_t (*DBUS_dbus_message_get_args)(DBusMessage *, DBusError *, int, ...) = NULL; static void (*DBUS_dbus_message_unref)(DBusMessage *) = NULL; static void (*DBUS_dbus_error_init)(DBusError *) = NULL; static dbus_bool_t (*DBUS_dbus_error_is_set)(const DBusError *) = NULL; @@ -82,9 +86,12 @@ load_dbus_syms(void) SDL_DBUS_SYM(dbus_bus_get_private); SDL_DBUS_SYM(dbus_connection_set_exit_on_disconnect); SDL_DBUS_SYM(dbus_connection_send); + SDL_DBUS_SYM(dbus_connection_send_with_reply_and_block); SDL_DBUS_SYM(dbus_connection_close); SDL_DBUS_SYM(dbus_connection_unref); SDL_DBUS_SYM(dbus_connection_flush); + SDL_DBUS_SYM(dbus_message_append_args); + SDL_DBUS_SYM(dbus_message_get_args); SDL_DBUS_SYM(dbus_message_new_method_call); SDL_DBUS_SYM(dbus_message_unref); SDL_DBUS_SYM(dbus_error_init); @@ -174,6 +181,76 @@ SDL_dbus_screensaver_tickle(_THIS) } } } + +SDL_bool +SDL_dbus_screensaver_inhibit(_THIS) +{ + const SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; + DBusConnection *conn = data->dbus; + + if (conn == NULL) + return SDL_FALSE; + + if (_this->suspend_screensaver && + screensaver_cookie != 0) + return SDL_TRUE; + if (!_this->suspend_screensaver && + screensaver_cookie == 0) + return SDL_TRUE; + + if (_this->suspend_screensaver) { + const char *app = "My SDL application"; + const char *reason = "Playing a game"; + + DBusMessage *msg = DBUS_dbus_message_new_method_call("org.freedesktop.ScreenSaver", + "/org/freedesktop/ScreenSaver", + "org.freedesktop.ScreenSaver", + "Inhibit"); + if (msg != NULL) { + DBUS_dbus_message_append_args (msg, + DBUS_TYPE_STRING, &app, + DBUS_TYPE_STRING, &reason, + DBUS_TYPE_INVALID); + } + + if (msg != NULL) { + DBusMessage *reply; + + reply = DBUS_dbus_connection_send_with_reply_and_block(conn, msg, 300, NULL); + if (reply) { + if (!DBUS_dbus_message_get_args(reply, NULL, + DBUS_TYPE_UINT32, &screensaver_cookie, + DBUS_TYPE_INVALID)) + screensaver_cookie = 0; + DBUS_dbus_message_unref(reply); + } + + DBUS_dbus_message_unref(msg); + } + + if (screensaver_cookie == 0) { + return SDL_FALSE; + } + return SDL_TRUE; + } else { + DBusMessage *msg = DBUS_dbus_message_new_method_call("org.freedesktop.ScreenSaver", + "/org/freedesktop/ScreenSaver", + "org.freedesktop.ScreenSaver", + "UnInhibit"); + DBUS_dbus_message_append_args (msg, + DBUS_TYPE_UINT32, &screensaver_cookie, + DBUS_TYPE_INVALID); + if (msg != NULL) { + if (DBUS_dbus_connection_send(conn, msg, NULL)) { + DBUS_dbus_connection_flush(conn); + } + DBUS_dbus_message_unref(msg); + } + + screensaver_cookie = 0; + return SDL_TRUE; + } +} #endif /* Initialization/Query functions */ diff --git a/src/video/x11/SDL_x11video.h b/src/video/x11/SDL_x11video.h index 927e38b315..8ab88f728b 100644 --- a/src/video/x11/SDL_x11video.h +++ b/src/video/x11/SDL_x11video.h @@ -121,6 +121,7 @@ typedef struct SDL_VideoData extern SDL_bool X11_UseDirectColorVisuals(void); +SDL_bool SDL_dbus_screensaver_inhibit(_THIS); void SDL_dbus_screensaver_tickle(_THIS); #endif /* _SDL_x11video_h */ From 73552272fa4ea9c527daccacd693c31ea11617d8 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 15:35:24 -0500 Subject: [PATCH 393/402] Mac: Manage menubar and dock as FULLSCREEN_DESKTOP windows become/resign key. --- src/video/cocoa/SDL_cocoawindow.m | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index f6b5843322..5f28c19f11 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -508,6 +508,10 @@ - (void)windowDidBecomeKey:(NSNotification *)aNotification /* Check to see if someone updated the clipboard */ Cocoa_CheckClipboardUpdate(_data->videodata); + + if (isFullscreenSpace) { + [NSMenu setMenuBarVisible:NO]; + } } - (void)windowDidResignKey:(NSNotification *)aNotification @@ -526,6 +530,10 @@ - (void)windowDidResignKey:(NSNotification *)aNotification if (SDL_GetKeyboardFocus() == _data->window) { SDL_SetKeyboardFocus(NULL); } + + if (isFullscreenSpace) { + [NSMenu setMenuBarVisible:YES]; + } } - (void)windowWillEnterFullScreen:(NSNotification *)aNotification From d06b1b79e398a8bd2d8b07f912545756d0c2434b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 2 Mar 2014 12:58:00 -0800 Subject: [PATCH 394/402] Updated to build on Mac OS X 10.7 with Xcode 4.6 --- README-macosx.txt | 6 +++--- src/video/cocoa/SDL_cocoaevents.m | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/README-macosx.txt b/README-macosx.txt index 4d9378fdd9..895b9d142f 100644 --- a/README-macosx.txt +++ b/README-macosx.txt @@ -26,9 +26,9 @@ ABI compatibility on x86_64 architectures. For best compatibility you should compile your application the same way. A script which wraps gcc to make this easy is provided in test/gcc-fat.sh -Please note that building SDL requires at least the 10.7 SDK (even if you -target back to 10.5 systems). PowerPC support for Mac OS X has been officially -dropped as of SDL 2.0.2. +Please note that building SDL requires at least Xcode 4.6 and the 10.7 SDK +(even if you target back to 10.5 systems). PowerPC support for Mac OS X has +been officially dropped as of SDL 2.0.2. To use the library once it's built, you essential have two possibilities: use the traditional autoconf/automake/make method, or use Xcode. diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index 9e9fccf558..d1dab03b35 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -271,10 +271,9 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam CreateApplicationMenus(); } [NSApp finishLaunching]; - NSDictionary *appDefaults = @{ - @"AppleMomentumScrollSupported": @NO, - @"ApplePressAndHoldEnabled": @NO, - }; + NSDictionary *appDefaults = [[NSDictionary alloc] initWithObjectsAndKeys: + NO, @"AppleMomentumScrollSupported", + NO, @"ApplePressAndHoldEnabled"]; [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; } From 0e0483fc0bb4a3d1003028ba7886dbdeee8b580d Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 2 Mar 2014 13:06:51 -0800 Subject: [PATCH 395/402] Fixed dictionary initialization --- src/video/cocoa/SDL_cocoaevents.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/SDL_cocoaevents.m b/src/video/cocoa/SDL_cocoaevents.m index d1dab03b35..438385c37d 100644 --- a/src/video/cocoa/SDL_cocoaevents.m +++ b/src/video/cocoa/SDL_cocoaevents.m @@ -272,8 +272,9 @@ - (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filenam } [NSApp finishLaunching]; NSDictionary *appDefaults = [[NSDictionary alloc] initWithObjectsAndKeys: - NO, @"AppleMomentumScrollSupported", - NO, @"ApplePressAndHoldEnabled"]; + [NSNumber numberWithBool:NO], @"AppleMomentumScrollSupported", + [NSNumber numberWithBool:NO], @"ApplePressAndHoldEnabled", + nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; } From 49424190f9d6e69ac4a045af1165db5a57e0f5be Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 16:36:40 -0500 Subject: [PATCH 396/402] A bunch of fixes for the new Spaces code. --- src/video/cocoa/SDL_cocoawindow.h | 1 + src/video/cocoa/SDL_cocoawindow.m | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.h b/src/video/cocoa/SDL_cocoawindow.h index 4f88ce1f79..a4ec07d72f 100644 --- a/src/video/cocoa/SDL_cocoawindow.h +++ b/src/video/cocoa/SDL_cocoawindow.h @@ -73,6 +73,7 @@ typedef enum -(void) windowDidEnterFullScreen:(NSNotification *) aNotification; -(void) windowWillExitFullScreen:(NSNotification *) aNotification; -(void) windowDidExitFullScreen:(NSNotification *) aNotification; +-(NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions; /* Window event handling */ -(void) mouseDown:(NSEvent *) theEvent; diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 5f28c19f11..c7d4f851ee 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -265,7 +265,7 @@ -(BOOL) setFullscreenSpace:(BOOL) state if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP) { return NO; /* we only allow this on FULLSCREEN_DESKTOP windows. */ - } else if (![nswindow respondsToSelector: @selector(setCollectionBehavior:)]) { + } else if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { return NO; /* No Spaces support? Older Mac OS X? */ } else if (state == isFullscreenSpace) { return YES; /* already there. */ @@ -558,8 +558,6 @@ - (void)windowDidEnterFullScreen:(NSNotification *)aNotification [self setFullscreenSpace:NO]; } else { if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - /* Remove the fullscreen toggle button and menu now that we're here. */ - [nswindow setCollectionBehavior:NSWindowCollectionBehaviorManaged]; [NSMenu setMenuBarVisible:NO]; } @@ -597,11 +595,14 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification pendingWindowOperation = PENDING_OPERATION_NONE; [nswindow miniaturize:nil]; } else { - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - /* Remove the fullscreen toggle button and readd menu now that we're here. */ + /* Adjust the fullscreen toggle button and readd menu now that we're here. */ + if (window->flags & SDL_WINDOW_RESIZABLE) { + /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */ + [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; + } else { [nswindow setCollectionBehavior:NSWindowCollectionBehaviorManaged]; - [NSMenu setMenuBarVisible:YES]; } + [NSMenu setMenuBarVisible:YES]; pendingWindowOperation = PENDING_OPERATION_NONE; /* Force the size change event in case it was delivered earlier @@ -613,6 +614,16 @@ - (void)windowDidExitFullScreen:(NSNotification *)aNotification } } +-(NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions +{ + if ((_data->window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { + return NSApplicationPresentationFullScreen | NSApplicationPresentationHideDock | NSApplicationPresentationHideMenuBar; + } else { + return proposedOptions; + } +} + + /* We'll respond to key events by doing nothing so we don't beep. * We could handle key messages here, but we lose some in the NSApp dispatch, * where they get converted to action messages, etc. @@ -1021,7 +1032,7 @@ - (void)resetCursorRects } [nswindow setBackgroundColor:[NSColor blackColor]]; - if ([nswindow respondsToSelector: @selector(setCollectionBehavior:)]) { + if ([nswindow respondsToSelector: @selector(toggleFullScreen:)]) { /* we put FULLSCREEN_DESKTOP windows in their own Space, without a toggle button or menubar, later */ if (window->flags & SDL_WINDOW_RESIZABLE) { /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */ From d1aabb4e1db42c622051245c58446e0cf838359b Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 22:16:49 -0500 Subject: [PATCH 397/402] Mac: only programmatically create Spaces if we're FULLSCREEN_DESKTOP. (coming back from fullscreen in any state is okay). --- src/video/cocoa/SDL_cocoawindow.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index c7d4f851ee..0fe8ceefce 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -263,8 +263,8 @@ -(BOOL) setFullscreenSpace:(BOOL) state SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP) { - return NO; /* we only allow this on FULLSCREEN_DESKTOP windows. */ + if (state && ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP)) { + return NO; /* we only allow you to make a Space on FULLSCREEN_DESKTOP windows. */ } else if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { return NO; /* No Spaces support? Older Mac OS X? */ } else if (state == isFullscreenSpace) { From 813283772b6aba6f27c33749d9988153b923eacd Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 22:51:31 -0500 Subject: [PATCH 398/402] Mac: Don't lose the menu/dock when switching back to a resizable window Space. --- src/video/cocoa/SDL_cocoawindow.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 0fe8ceefce..06ecd62e7a 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -509,7 +509,7 @@ - (void)windowDidBecomeKey:(NSNotification *)aNotification /* Check to see if someone updated the clipboard */ Cocoa_CheckClipboardUpdate(_data->videodata); - if (isFullscreenSpace) { + if ((isFullscreenSpace) && ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP)) { [NSMenu setMenuBarVisible:NO]; } } From 902cab171692967a1541fbcb6e9eee954c61c2e9 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 2 Mar 2014 22:55:12 -0500 Subject: [PATCH 399/402] Removed unused variable. --- src/video/cocoa/SDL_cocoawindow.m | 1 - 1 file changed, 1 deletion(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 06ecd62e7a..36d762a2b2 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -549,7 +549,6 @@ - (void)windowWillEnterFullScreen:(NSNotification *)aNotification - (void)windowDidEnterFullScreen:(NSNotification *)aNotification { SDL_Window *window = _data->window; - NSWindow *nswindow = _data->nswindow; inFullscreenTransition = NO; From 074aa2a5df79021e4bda0204824c33107eea2dec Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Mon, 3 Mar 2014 21:25:16 -0500 Subject: [PATCH 400/402] Mac: Added a hint to opt-out of new Spaces code. --- include/SDL_hints.h | 20 ++++++++++++++++++++ src/video/cocoa/SDL_cocoavideo.h | 1 + src/video/cocoa/SDL_cocoavideo.m | 6 ++++++ src/video/cocoa/SDL_cocoawindow.m | 19 +++++++++++-------- 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 540f0d8933..a7c0162083 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -347,6 +347,26 @@ extern "C" { */ #define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars. + * + * The default value is "1". Spaces are disabled regardless of this hint if + * the OS isn't at least Mac OS X Lion (10.7). This hint must be set before + * any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + + /** * \brief An enumeration of hint priorities */ diff --git a/src/video/cocoa/SDL_cocoavideo.h b/src/video/cocoa/SDL_cocoavideo.h index f5836bd877..f194e1f722 100644 --- a/src/video/cocoa/SDL_cocoavideo.h +++ b/src/video/cocoa/SDL_cocoavideo.h @@ -46,6 +46,7 @@ typedef struct SDL_VideoData { SInt32 osversion; + int allow_spaces; unsigned int modifierFlags; void *key_layout; SDLTranslatorResponder *fieldEdit; diff --git a/src/video/cocoa/SDL_cocoavideo.m b/src/video/cocoa/SDL_cocoavideo.m index 0ab015f2ff..6766b71bb6 100644 --- a/src/video/cocoa/SDL_cocoavideo.m +++ b/src/video/cocoa/SDL_cocoavideo.m @@ -148,9 +148,15 @@ int Cocoa_VideoInit(_THIS) { + SDL_VideoData *data = (SDL_VideoData *) _this->driverdata; + Cocoa_InitModes(_this); Cocoa_InitKeyboard(_this); Cocoa_InitMouse(_this); + + const char *hint = SDL_GetHint(SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES); + data->allow_spaces = ( (data->osversion >= 0x1070) && (!hint || (*hint != '0')) ); + return 0; } diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 36d762a2b2..1b58a678bb 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -38,6 +38,7 @@ #include "SDL_cocoashape.h" #include "SDL_cocoamouse.h" #include "SDL_cocoaopengl.h" +#include "SDL_assert.h" /* #define DEBUG_COCOAWINDOW */ @@ -121,9 +122,7 @@ static void ConvertNSRect(NSRect *r) { unsigned int style; - if ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) == SDL_WINDOW_FULLSCREEN_DESKTOP) { - style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask); - } else if (window->flags & SDL_WINDOW_FULLSCREEN) { + if (window->flags & SDL_WINDOW_FULLSCREEN) { style = NSBorderlessWindowMask; } else { if (window->flags & SDL_WINDOW_BORDERLESS) { @@ -262,11 +261,12 @@ -(BOOL) setFullscreenSpace:(BOOL) state { SDL_Window *window = _data->window; NSWindow *nswindow = _data->nswindow; + SDL_VideoData *videodata = ((SDL_WindowData *) window->driverdata)->videodata; - if (state && ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP)) { + if (!videodata->allow_spaces) { + return NO; /* Spaces are forcibly disabled. */ + } else if (state && ((window->flags & SDL_WINDOW_FULLSCREEN_DESKTOP) != SDL_WINDOW_FULLSCREEN_DESKTOP)) { return NO; /* we only allow you to make a Space on FULLSCREEN_DESKTOP windows. */ - } else if (![nswindow respondsToSelector: @selector(toggleFullScreen:)]) { - return NO; /* No Spaces support? Older Mac OS X? */ } else if (state == isFullscreenSpace) { return YES; /* already there. */ } @@ -281,7 +281,7 @@ -(BOOL) setFullscreenSpace:(BOOL) state } inFullscreenTransition = YES; - /* you need to be FullScreenPrimary, or toggleFullScreen doesn't work. Unset it again in windowDid[Enter|Exit]FullScreen. */ + /* you need to be FullScreenPrimary, or toggleFullScreen doesn't work. Unset it again in windowDidExitFullScreen. */ [nswindow setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; [nswindow performSelectorOnMainThread: @selector(toggleFullScreen:) withObject:nswindow waitUntilDone:NO]; return YES; @@ -987,6 +987,7 @@ - (void)resetCursorRects int Cocoa_CreateWindow(_THIS, SDL_Window * window) { + SDL_VideoData *videodata = (SDL_VideoData *) _this->driverdata; NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; NSWindow *nswindow; SDL_VideoDisplay *display = SDL_GetDisplayForWindow(window); @@ -1031,7 +1032,9 @@ - (void)resetCursorRects } [nswindow setBackgroundColor:[NSColor blackColor]]; - if ([nswindow respondsToSelector: @selector(toggleFullScreen:)]) { + if (videodata->allow_spaces) { + SDL_assert(videodata->osversion >= 0x1070); + SDL_assert([nswindow respondsToSelector:@selector(toggleFullScreen:)]); /* we put FULLSCREEN_DESKTOP windows in their own Space, without a toggle button or menubar, later */ if (window->flags & SDL_WINDOW_RESIZABLE) { /* resizable windows are Spaces-friendly: they get the "go fullscreen" toggle button on their titlebar. */ From 198bc36d49658b99c1e4b18e029c22597b109cfa Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Thu, 6 Mar 2014 20:02:17 -0800 Subject: [PATCH 401/402] Fixed bug 2430 - Missing initialization of the variable 'centroid' inside SDL_GestureAddTouch klose File: SDL_gesture.c Method: SDL_GestureAddTouch When a new SDL_GestureTouch element is added to the global SDL_gestureTouch array the variable 'centroid' of the new element is not initialized. The problem is that this variable is read isndie SDL_GestureProcessEvent when a SDL_FINGERDOWN event occurs. --- src/events/SDL_gesture.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/events/SDL_gesture.c b/src/events/SDL_gesture.c index a6ef5b5dd5..a47ab7d131 100644 --- a/src/events/SDL_gesture.c +++ b/src/events/SDL_gesture.c @@ -418,13 +418,8 @@ int SDL_GestureAddTouch(SDL_TouchID touchId) SDL_gestureTouch = gestureTouch; - SDL_gestureTouch[SDL_numGestureTouches].numDownFingers = 0; + SDL_zero(SDL_gestureTouch[SDL_numGestureTouches]); SDL_gestureTouch[SDL_numGestureTouches].id = touchId; - - SDL_gestureTouch[SDL_numGestureTouches].numDollarTemplates = 0; - - SDL_gestureTouch[SDL_numGestureTouches].recording = SDL_FALSE; - SDL_numGestureTouches++; return 0; } From e9790820903f7e349afc65706f0a4cbec2c48d49 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Fri, 7 Mar 2014 00:18:37 -0500 Subject: [PATCH 402/402] CMake: Don't use /NODEFAULTLIB on Windows unless we're Visual Studio. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d1c0815c9a..c13f4e6fd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1256,7 +1256,7 @@ if(SDL_STATIC) set (BUILD_SHARED_LIBS FALSE) add_library(SDL2-static STATIC ${SOURCE_FILES}) set_target_properties(SDL2-static PROPERTIES OUTPUT_NAME "SDL2") - if(WINDOWS) + if(MSVC) set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_RELEASE "/NODEFAULTLIB") set_target_properties(SDL2-static PROPERTIES LINK_FLAGS_DEBUG "/NODEFAULTLIB") set_target_properties(SDL2-static PROPERTIES STATIC_LIBRARY_FLAGS "/NODEFAULTLIB")