#!/usr/bin/env python
# Copyright 2014 Tom Rothamel <tom@rothamel.us>
#
# 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.
from __future__ import division, absolute_import, print_function
# The version of pygame_sdl2. This should also be updated in version.py
VERSION="2.1.0"
from setuplib import android, ios, windows, cython, pymodule, setup, parse_cflags, parse_libs, find_unnecessary_gen, gen
import setuplib
import os
import platform
import shutil
import sys
def setup_env(name):
# If PYGAME_SDL2_CC or PYGAME_SDL2_LD are in the environment, and CC or LD are not, use them.
renpy_name = "PYGAME_SDL2_" + name
if (renpy_name in os.environ) and (name not in os.environ):
os.environ[name] = os.environ[renpy_name]
setup_env("CC")
setup_env("LD")
setup_env("CXX")
temporary_package_data = [ ]
if android or ios:
sdl_libs = [ 'SDL2' ]
else:
setuplib.package_data.extend([
"DejaVuSans.ttf",
"DejaVuSans.txt",
])
try:
parse_cflags([ "sh", "-c", "sdl2-config --cflags" ])
sdl_libs = parse_libs([ "sh", "-c", "sdl2-config --libs" ])
except:
if not windows:
raise
windeps = os.path.join(os.path.dirname(__file__), "pygame_sdl2_windeps")
if not os.path.isdir(windeps):
raise
sdl_libs = [ 'SDL2' ]
setuplib.include_dirs.append(os.path.join(windeps, "include"))
if sys.version_info[0] < 3:
setuplib.include_dirs.append(os.path.join(windeps, "include27"))
if platform.architecture()[0] == "32bit":
libdir = os.path.join(windeps, "lib/x86")
else:
libdir = os.path.join(windeps, "lib/x64")
setuplib.library_dirs.append(libdir)
for i in os.listdir(libdir):
if i.lower().endswith(".dll"):
shutil.copy(
os.path.join(libdir, i),
os.path.join(os.path.dirname(__file__), "src", "pygame_sdl2", i),
)
temporary_package_data.append(i)
setuplib.package_data.extend(temporary_package_data)
if android:
png = "png16"
else:
png = "png"
pymodule("pygame_sdl2.__init__")
pymodule("pygame_sdl2.compat")
pymodule("pygame_sdl2.threads.__init__")
pymodule("pygame_sdl2.threads.Py25Queue")
pymodule("pygame_sdl2.sprite")
pymodule("pygame_sdl2.sysfont")
pymodule("pygame_sdl2.time")
pymodule("pygame_sdl2.version")
cython("pygame_sdl2.error", libs=sdl_libs)
cython("pygame_sdl2.color", libs=sdl_libs)
cython("pygame_sdl2.controller", libs=sdl_libs)
cython("pygame_sdl2.rect", libs=sdl_libs)
cython("pygame_sdl2.rwobject", libs=sdl_libs)
cython("pygame_sdl2.surface", source=[ "src/alphablit.c" ], libs=sdl_libs)
cython("pygame_sdl2.display", libs=sdl_libs)
cython("pygame_sdl2.event", libs=sdl_libs)
cython("pygame_sdl2.locals", libs=sdl_libs)
cython("pygame_sdl2.key", libs=sdl_libs)
cython("pygame_sdl2.mouse", libs=sdl_libs)
cython("pygame_sdl2.joystick", libs=sdl_libs)
cython("pygame_sdl2.power", libs=sdl_libs)
cython("pygame_sdl2.pygame_time", libs=sdl_libs)
cython("pygame_sdl2.image", source=[ "src/write_jpeg.c", "src/write_png.c" ], libs=[ 'SDL2_image', "jpeg", png ] + sdl_libs)
cython("pygame_sdl2.transform", source=[ "src/SDL2_rotozoom.c" ], libs=sdl_libs)
cython("pygame_sdl2.gfxdraw", source=[ "src/SDL_gfxPrimitives.c" ], libs=sdl_libs)
cython("pygame_sdl2.draw", libs=sdl_libs)
cython("pygame_sdl2.font", libs=['SDL2_ttf'] + sdl_libs)
cython("pygame_sdl2.mixer", libs=['SDL2_mixer'] + sdl_libs)
cython("pygame_sdl2.mixer_music", libs=['SDL2_mixer'] + sdl_libs)
cython("pygame_sdl2.scrap", libs=sdl_libs)
cython("pygame_sdl2.render", libs=['SDL2_image'] + sdl_libs)
headers = [
"src/pygame_sdl2/pygame_sdl2.h",
gen + "/pygame_sdl2.rwobject_api.h",
gen + "/pygame_sdl2.surface_api.h",
gen + "/pygame_sdl2.display_api.h",
]
if __name__ == "__main__":
setup(
"pygame_sdl2",
VERSION,
headers=headers,
url="https://github.com/renpy/pygame_sdl2",
maintainer="Tom Rothamel",
maintainer_email="tom@rothamel.us",
)
find_unnecessary_gen()
for i in temporary_package_data:
os.unlink(os.path.join(os.path.dirname(__file__), "src", "pygame_sdl2", i))