| Index: site_scons/site_tools/sdl.py
|
| ===================================================================
|
| --- site_scons/site_tools/sdl.py (revision 0)
|
| +++ site_scons/site_tools/sdl.py (revision 0)
|
| @@ -0,0 +1,176 @@
|
| +#!/usr/bin/python2.4
|
| +# Copyright 2008, Google Inc.
|
| +# All rights reserved.
|
| +#
|
| +# Redistribution and use in source and binary forms, with or without
|
| +# modification, are permitted provided that the following conditions are
|
| +# met:
|
| +#
|
| +# * Redistributions of source code must retain the above copyright
|
| +# notice, this list of conditions and the following disclaimer.
|
| +# * Redistributions in binary form must reproduce the above
|
| +# copyright notice, this list of conditions and the following disclaimer
|
| +# in the documentation and/or other materials provided with the
|
| +# distribution.
|
| +# * Neither the name of Google Inc. nor the names of its
|
| +# contributors may be used to endorse or promote products derived from
|
| +# this software without specific prior written permission.
|
| +#
|
| +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| +
|
| +"""Simple DirectMedia Layer tool for SCons.
|
| +
|
| +This tool sets up an environment to use the SDL library.
|
| +"""
|
| +
|
| +import os
|
| +import sys
|
| +import SCons.Script
|
| +
|
| +
|
| +def _HermeticSDL(env):
|
| + """Set things up if sdl is hermetically setup somewhere."""
|
| +
|
| + if sys.platform in ['win32', 'cygwin']:
|
| + env.SetDefault(
|
| + SDL_DIR='$SDL_HERMETIC_WINDOWS_DIR',
|
| + SDL_CPPPATH=['$SDL_DIR/include'],
|
| + SDL_LIBPATH=['$SDL_DIR/lib'],
|
| + SDL_LIBS=['SDL', 'SDLmain'],
|
| + SDL_FRAMEWORKPATH=[],
|
| + SDL_FRAMEWORKS=[],
|
| + )
|
| + elif sys.platform in ['darwin']:
|
| + env.SetDefault(
|
| + SDL_DIR='$SDL_HERMETIC_MAC_DIR',
|
| + SDL_CPPPATH=[
|
| + '$SDL_DIR/SDL.framework/Headers',
|
| + ],
|
| + SDL_LIBPATH=[],
|
| + SDL_LIBS=[],
|
| + SDL_FRAMEWORKPATH=['$SDL_DIR'],
|
| + SDL_FRAMEWORKS=['SDL', 'Cocoa'],
|
| + )
|
| + elif sys.platform in ['linux', 'linux2', 'posix']:
|
| + env.SetDefault(
|
| + SDL_DIR='$SDL_HERMETIC_LINUX_DIR',
|
| + SDL_CPPPATH='$SDL_DIR/include',
|
| + SDL_LIBPATH='$SDL_DIR/lib',
|
| + SDL_LIBS=['SDL', 'SDLmain'],
|
| + SDL_FRAMEWORKPATH=[],
|
| + SDL_FRAMEWORKS=[],
|
| + )
|
| + else:
|
| + env.SetDefault(
|
| + SDL_VALIDATE_PATHS=[
|
| + ('unsupported_platform',
|
| + ('Not supported on this platform.')),
|
| + ],
|
| + SDL_IS_MISSING=True,
|
| + )
|
| +
|
| + if not env.get('SDL_IS_MISSING', False):
|
| + env.SetDefault(
|
| + SDL_VALIDATE_PATHS=[
|
| + ('$SDL_DIR',
|
| + ('You are missing a hermetic copy of SDL...')),
|
| + ],
|
| + )
|
| +
|
| +
|
| +def _LocalSDL(env):
|
| + """Set things up if sdl is locally installed."""
|
| +
|
| + if sys.platform in ['win32', 'cygwin']:
|
| + env.SetDefault(
|
| + SDL_DIR='c:/SDL-1.2.13',
|
| + SDL_CPPPATH='$SDL_DIR/include',
|
| + SDL_LIBPATH='$SDL_DIR/lib',
|
| + SDL_LIBS=['SDL', 'SDLmain'],
|
| + SDL_FRAMEWORKPATH=[],
|
| + SDL_FRAMEWORKS=[],
|
| + SDL_VALIDATE_PATHS=[
|
| + ('$SDL_DIR',
|
| + ('You are missing SDL-1.2.13 on your system.',
|
| + 'It was supposed to be in: ${SDL_DIR}',
|
| + 'You can download it from:',
|
| + ' http://www.libsdl.org/download-1.2.php')),
|
| + ],
|
| + )
|
| + elif sys.platform in ['darwin']:
|
| + env.SetDefault(
|
| + SDL_CPPPATH=['/Library/Frameworks/SDL.framework/Headers'],
|
| + SDL_LIBPATH=[],
|
| + SDL_LIBS=[],
|
| + SDL_FRAMEWORKPATH=[],
|
| + SDL_FRAMEWORKS=['SDL', 'Cocoa'],
|
| + SDL_VALIDATE_PATHS=[
|
| + ('/Library/Frameworks/SDL.framework/SDL',
|
| + ('You are missing the SDL framework on your system.',
|
| + 'You can download it from:',
|
| + 'http://www.libsdl.org/download-1.2.php')),
|
| + ],
|
| + )
|
| + elif sys.platform in ['linux', 'linux2', 'posix']:
|
| + env.SetDefault(
|
| + SDL_CPPPATH='/usr/include/SDL',
|
| + SDL_LIBPATH='/usr/lib',
|
| + SDL_LIBS=['SDL', 'SDLmain'],
|
| + SDL_FRAMEWORKPATH=[],
|
| + SDL_FRAMEWORKS=[],
|
| + SDL_VALIDATE_PATHS=[
|
| + ('/usr/lib/libSDL.so',
|
| + ('You are missing SDL on your system.',
|
| + 'Run sudo apt-get install libsdl1.2-dev.')),
|
| + ],
|
| + )
|
| +
|
| +
|
| +def generate(env):
|
| + # NOTE: SCons requires the use of this name, which fails gpylint.
|
| + """SCons entry point for this tool."""
|
| +
|
| + # Allow the hermetic copy to be disabled on the command line.
|
| + sdl_mode = SCons.Script.ARGUMENTS.get('sdl', 'hermetic')
|
| + if sdl_mode == 'local':
|
| + _LocalSDL(env)
|
| + elif sdl_mode == 'hermetic':
|
| + _HermeticSDL(env)
|
| + elif sdl_mode == 'none':
|
| + return
|
| + else:
|
| + assert False
|
| +
|
| + validate_paths = env['SDL_VALIDATE_PATHS']
|
| +
|
| + if not validate_paths:
|
| + sys.stderr.write('*' * 77 + '\n')
|
| + sys.stderr.write('ERROR - SDL not supported on this platform.\n')
|
| + sys.stderr.write('*' * 77 + '\n')
|
| + sys.exit(-1)
|
| +
|
| + for i in validate_paths:
|
| + if not os.path.exists(env.subst(i[0])):
|
| + sys.stderr.write('*' * 77 + '\n')
|
| + for j in i[1]:
|
| + sys.stderr.write(env.subst(j) + '\n')
|
| + sys.stderr.write('*' * 77 + '\n')
|
| + sys.exit(-1)
|
| +
|
| + env.Append(
|
| + CPPPATH=['$SDL_CPPPATH'],
|
| + LIBPATH=['$SDL_LIBPATH'],
|
| + LIBS=['$SDL_LIBS'],
|
| + FRAMEWORKPATH=['$SDL_FRAMEWORKPATH'],
|
| + FRAMEWORKS=['$SDL_FRAMEWORKS'],
|
| + )
|
|
|
| Property changes on: site_scons/site_tools/sdl.py
|
| ___________________________________________________________________
|
| Added: svn:executable
|
| + *
|
|
|
|
|