pygame is sharing code with you
Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.
Don't show this againpygame / config.py
- Tag
- release_1_8_0rc1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | #!/usr/bin/env python
"""Quick tool to help setup the needed paths and flags
in your Setup file. This will call the appropriate sub-config
scripts automatically.
each platform config file only needs a "main" routine
that returns a list of instances. the instances must
contain the following variables.
name: name of the dependency, as references in Setup (SDL, FONT, etc)
inc_dir: path to include
lib_dir: library directory
lib: name of library to be linked to
found: true if the dep is available
cflags: extra compile flags
"""
import sys, os, shutil, string
def is_msys_mingw():
if os.environ.has_key("MSYSTEM"):
if os.environ["MSYSTEM"] == "MINGW32":
return 1
return 0
if sys.platform == 'win32' and not is_msys_mingw():
print 'Using WINDOWS configuration...\n'
import config_win
CFG = config_win
elif sys.platform == 'win32' and is_msys_mingw():
print 'Using WINDOWS mingw/msys configuration...\n'
import config_msys
CFG = config_msys
elif sys.platform == 'darwin':
print 'Using Darwin configuration...\n'
import config_darwin
CFG = config_darwin
else:
print 'Using UNIX configuration...\n'
import config_unix
CFG = config_unix
def confirm(message):
"ask a yes/no question, return result"
reply = raw_input('\n' + message + ' [y/N]:')
if reply and string.lower(reply[0]) == 'y':
return 1
return 0
def prepdep(dep, basepath):
"add some vars to a dep"
if dep.lib:
dep.line = dep.name + ' = -l' + dep.lib
else:
dep.line = dep.name + ' = -I.'
dep.varname = '$('+dep.name+')'
if not dep.found:
if dep.name == 'SDL': #fudge if this is unfound SDL
dep.line = 'SDL = -I/NEED_INC_PATH_FIX -L/NEED_LIB_PATH_FIX -lSDL'
dep.varname = '$('+dep.name+')'
dep.found = 1
return
inc = lid = lib = ""
if basepath:
if dep.inc_dir: inc = ' -I$(BASE)'+dep.inc_dir[len(basepath):]
if dep.lib_dir: lid = ' -L$(BASE)'+dep.lib_dir[len(basepath):]
else:
if dep.inc_dir: inc = ' -I' + dep.inc_dir
if dep.lib_dir: lid = ' -L' + dep.lib_dir
if dep.lib: lib = ' -l'+dep.lib
dep.line = dep.name+' =' + inc + lid + ' ' + dep.cflags + lib
def writesetupfile(deps, basepath):
"create a modified copy of Setup.in"
origsetup = open('Setup.in', 'r')
newsetup = open('Setup', 'w')
line = ''
while line.find('#--StartConfig') == -1:
newsetup.write(line)
line = origsetup.readline()
while line.find('#--EndConfig') == -1:
line = origsetup.readline()
if basepath:
newsetup.write('BASE = ' + basepath + '\n')
for d in deps:
newsetup.write(d.line + '\n')
while line:
line = origsetup.readline()
useit = 1
if not line.startswith('COPYLIB'):
for d in deps:
if line.find(d.varname)!=-1 and not d.found:
useit = 0
newsetup.write('#'+line)
break
if useit:
newsetup.write(line)
def main():
if os.path.isfile('Setup'):
if "-auto" in sys.argv or confirm('Backup existing "Setup" file'):
shutil.copyfile('Setup', 'Setup.bak')
if not "-auto" in sys.argv and os.path.isdir('build'):
if confirm('Remove old build directory (force recompile)'):
shutil.rmtree('build', 0)
deps = CFG.main()
if deps:
basepath = None
for d in deps:
prepdep(d, basepath)
writesetupfile(deps, basepath)
print """\nIf you get compiler errors during install, doublecheck
the compiler flags in the "Setup" file.\n"""
else:
print """\nThere was an error creating the Setup file, check for errors
or make a copy of "Setup.in" and edit by hand."""
if __name__ == '__main__': main()
|