411 lines
10 KiB
Lua
Executable File
411 lines
10 KiB
Lua
Executable File
-- Copyright (C) 1997-2016 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/",
|
|
"/dynapi/",
|
|
"/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
|
|
{
|
|
"CoreVideo.framework",
|
|
"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_XDBE"] = 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_MFI"] = 1,
|
|
["SDL_HAPTIC_DISABLED"] = 1,
|
|
["SDL_LOADSO_DLOPEN"] = 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",
|
|
"$(SDKROOT)/CoreMotion.framework",
|
|
"$(SDKROOT)/GameController.framework",
|
|
"$(SDKROOT)/AVFoundation.framework",
|
|
}
|