premake/projects/SDL2.lua
changeset 7925 f090a47eb7f7
child 8094 9efaae827924
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/premake/projects/SDL2.lua	Sun Nov 10 00:38:37 2013 -0500
@@ -0,0 +1,404 @@
+-- Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org>
+--
+-- 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 <b.henning@digipen.edu>
+
+--[[
+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