1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-07 12:30:27 +00:00

style: Start applying PEP8 to Python files, indentation issues

Done with `autopep8 --select=E1`, fixes:

- E101 - Reindent all lines.
- E112 - Fix under-indented comments.
- E113 - Fix over-indented comments.
- E115 - Fix under-indented comments.
- E116 - Fix over-indented comments.
- E121 - Fix a badly indented line.
- E122 - Fix a badly indented line.
- E123 - Fix a badly indented line.
- E124 - Fix a badly indented line.
- E125 - Fix indentation undistinguish from the next logical line.
- E126 - Fix a badly indented line.
- E127 - Fix a badly indented line.
- E128 - Fix a badly indented line.
- E129 - Fix a badly indented line.
This commit is contained in:
Rémi Verschelde
2016-11-02 22:26:55 +01:00
parent 7c92b401f1
commit 561c1f17a1
84 changed files with 6637 additions and 6637 deletions

View File

@@ -25,28 +25,28 @@ platform_exporters=[]
global_defaults=[] global_defaults=[]
for x in glob.glob("platform/*"): for x in glob.glob("platform/*"):
if (not os.path.isdir(x) or not os.path.exists(x+"/detect.py")): if (not os.path.isdir(x) or not os.path.exists(x+"/detect.py")):
continue continue
tmppath="./"+x tmppath="./"+x
sys.path.append(tmppath) sys.path.append(tmppath)
import detect import detect
if (os.path.exists(x+"/export/export.cpp")): if (os.path.exists(x+"/export/export.cpp")):
platform_exporters.append(x[9:]) platform_exporters.append(x[9:])
if (os.path.exists(x+"/globals/global_defaults.cpp")): if (os.path.exists(x+"/globals/global_defaults.cpp")):
global_defaults.append(x[9:]) global_defaults.append(x[9:])
if (detect.is_active()): if (detect.is_active()):
active_platforms.append( detect.get_name() ) active_platforms.append( detect.get_name() )
active_platform_ids.append(x); active_platform_ids.append(x);
if (detect.can_build()): if (detect.can_build()):
x=x.replace("platform/","") # rest of world x=x.replace("platform/","") # rest of world
x=x.replace("platform\\","") # win32 x=x.replace("platform\\","") # win32
platform_list+=[x] platform_list+=[x]
platform_opts[x]=detect.get_opts() platform_opts[x]=detect.get_opts()
platform_flags[x]=detect.get_flags() platform_flags[x]=detect.get_flags()
sys.path.remove(tmppath) sys.path.remove(tmppath)
sys.modules.pop('detect') sys.modules.pop('detect')
module_list=methods.detect_modules() module_list=methods.detect_modules()
@@ -60,14 +60,14 @@ custom_tools=['default']
platform_arg = ARGUMENTS.get("platform", ARGUMENTS.get("p", False)) platform_arg = ARGUMENTS.get("platform", ARGUMENTS.get("p", False))
if (os.name=="posix"): if (os.name=="posix"):
pass pass
elif (os.name=="nt"): elif (os.name=="nt"):
if (os.getenv("VSINSTALLDIR")==None or platform_arg=="android"): if (os.getenv("VSINSTALLDIR")==None or platform_arg=="android"):
custom_tools=['mingw'] custom_tools=['mingw']
env_base=Environment(tools=custom_tools); env_base=Environment(tools=custom_tools);
if 'TERM' in os.environ: if 'TERM' in os.environ:
env_base['ENV']['TERM'] = os.environ['TERM'] env_base['ENV']['TERM'] = os.environ['TERM']
env_base.AppendENVPath('PATH', os.getenv('PATH')) env_base.AppendENVPath('PATH', os.getenv('PATH'))
env_base.AppendENVPath('PKG_CONFIG_PATH', os.getenv('PKG_CONFIG_PATH')) env_base.AppendENVPath('PKG_CONFIG_PATH', os.getenv('PKG_CONFIG_PATH'))
env_base.global_defaults=global_defaults env_base.global_defaults=global_defaults
@@ -110,11 +110,11 @@ customs = ['custom.py']
profile = ARGUMENTS.get("profile", False) profile = ARGUMENTS.get("profile", False)
if profile: if profile:
import os.path import os.path
if os.path.isfile(profile): if os.path.isfile(profile):
customs.append(profile) customs.append(profile)
elif os.path.isfile(profile+".py"): elif os.path.isfile(profile+".py"):
customs.append(profile+".py") customs.append(profile+".py")
opts=Variables(customs, ARGUMENTS) opts=Variables(customs, ARGUMENTS)
opts.Add('target', 'Compile Target (debug/release_debug/release).', "debug") opts.Add('target', 'Compile Target (debug/release_debug/release).', "debug")
@@ -157,12 +157,12 @@ opts.Add('vsproj', 'Generate Visual Studio Project. (yes/no)', 'no')
# add platform specific options # add platform specific options
for k in platform_opts.keys(): for k in platform_opts.keys():
opt_list = platform_opts[k] opt_list = platform_opts[k]
for o in opt_list: for o in opt_list:
opts.Add(o[0],o[1],o[2]) opts.Add(o[0],o[1],o[2])
for x in module_list: for x in module_list:
opts.Add('module_'+x+'_enabled', "Enable module '"+x+"' (yes/no)", "yes") opts.Add('module_'+x+'_enabled', "Enable module '"+x+"' (yes/no)", "yes")
opts.Update(env_base) # update environment opts.Update(env_base) # update environment
Help(opts.GenerateHelpText(env_base)) # generate help Help(opts.GenerateHelpText(env_base)) # generate help
@@ -183,11 +183,11 @@ sys.modules.pop('detect')
""" """
if (env_base['target']=='debug'): if (env_base['target']=='debug'):
env_base.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']); env_base.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']);
env_base.Append(CPPFLAGS=['-DSCI_NAMESPACE']) env_base.Append(CPPFLAGS=['-DSCI_NAMESPACE'])
if (env_base['deprecated']!='no'): if (env_base['deprecated']!='no'):
env_base.Append(CPPFLAGS=['-DENABLE_DEPRECATED']); env_base.Append(CPPFLAGS=['-DENABLE_DEPRECATED']);
env_base.platforms = {} env_base.platforms = {}
@@ -195,214 +195,214 @@ env_base.platforms = {}
selected_platform ="" selected_platform =""
if env_base['platform'] != "": if env_base['platform'] != "":
selected_platform=env_base['platform'] selected_platform=env_base['platform']
elif env_base['p'] != "": elif env_base['p'] != "":
selected_platform=env_base['p'] selected_platform=env_base['p']
env_base["platform"]=selected_platform env_base["platform"]=selected_platform
if selected_platform in platform_list: if selected_platform in platform_list:
sys.path.append("./platform/"+selected_platform) sys.path.append("./platform/"+selected_platform)
import detect import detect
if "create" in dir(detect): if "create" in dir(detect):
env = detect.create(env_base) env = detect.create(env_base)
else: else:
env = env_base.Clone() env = env_base.Clone()
if env['vsproj']=="yes": if env['vsproj']=="yes":
env.vs_incs = [] env.vs_incs = []
env.vs_srcs = [] env.vs_srcs = []
def AddToVSProject( sources ): def AddToVSProject( sources ):
for x in sources: for x in sources:
if type(x) == type(""): if type(x) == type(""):
fname = env.File(x).path fname = env.File(x).path
else: else:
fname = env.File(x)[0].path fname = env.File(x)[0].path
pieces = fname.split(".") pieces = fname.split(".")
if len(pieces)>0: if len(pieces)>0:
basename = pieces[0] basename = pieces[0]
basename = basename.replace('\\\\','/') basename = basename.replace('\\\\','/')
env.vs_srcs = env.vs_srcs + [basename + ".cpp"] env.vs_srcs = env.vs_srcs + [basename + ".cpp"]
env.vs_incs = env.vs_incs + [basename + ".h"] env.vs_incs = env.vs_incs + [basename + ".h"]
#print basename #print basename
env.AddToVSProject = AddToVSProject env.AddToVSProject = AddToVSProject
env.extra_suffix="" env.extra_suffix=""
if env["extra_suffix"] != '' : if env["extra_suffix"] != '' :
env.extra_suffix += '.'+env["extra_suffix"] env.extra_suffix += '.'+env["extra_suffix"]
CCFLAGS = env.get('CCFLAGS', '') CCFLAGS = env.get('CCFLAGS', '')
env['CCFLAGS'] = '' env['CCFLAGS'] = ''
env.Append(CCFLAGS=string.split(str(CCFLAGS))) env.Append(CCFLAGS=string.split(str(CCFLAGS)))
CFLAGS = env.get('CFLAGS', '') CFLAGS = env.get('CFLAGS', '')
env['CFLAGS'] = '' env['CFLAGS'] = ''
env.Append(CFLAGS=string.split(str(CFLAGS))) env.Append(CFLAGS=string.split(str(CFLAGS)))
LINKFLAGS = env.get('LINKFLAGS', '') LINKFLAGS = env.get('LINKFLAGS', '')
env['LINKFLAGS'] = '' env['LINKFLAGS'] = ''
env.Append(LINKFLAGS=string.split(str(LINKFLAGS))) env.Append(LINKFLAGS=string.split(str(LINKFLAGS)))
flag_list = platform_flags[selected_platform] flag_list = platform_flags[selected_platform]
for f in flag_list: for f in flag_list:
if not (f[0] in ARGUMENTS): # allow command line to override platform flags if not (f[0] in ARGUMENTS): # allow command line to override platform flags
env[f[0]] = f[1] env[f[0]] = f[1]
#must happen after the flags, so when flags are used by configure, stuff happens (ie, ssl on x11) #must happen after the flags, so when flags are used by configure, stuff happens (ie, ssl on x11)
detect.configure(env) detect.configure(env)
#env['platform_libsuffix'] = env['LIBSUFFIX'] #env['platform_libsuffix'] = env['LIBSUFFIX']
suffix="."+selected_platform suffix="."+selected_platform
if (env["target"]=="release"): if (env["target"]=="release"):
if (env["tools"]=="yes"): if (env["tools"]=="yes"):
print("Tools can only be built with targets 'debug' and 'release_debug'.") print("Tools can only be built with targets 'debug' and 'release_debug'.")
sys.exit(255) sys.exit(255)
suffix+=".opt" suffix+=".opt"
env.Append(CCFLAGS=['-DNDEBUG']); env.Append(CCFLAGS=['-DNDEBUG']);
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
if (env["tools"]=="yes"): if (env["tools"]=="yes"):
suffix+=".opt.tools" suffix+=".opt.tools"
else: else:
suffix+=".opt.debug" suffix+=".opt.debug"
else: else:
if (env["tools"]=="yes"): if (env["tools"]=="yes"):
suffix+=".tools" suffix+=".tools"
else: else:
suffix+=".debug" suffix+=".debug"
if env["arch"] != "": if env["arch"] != "":
suffix += "."+env["arch"] suffix += "."+env["arch"]
elif (env["bits"]=="32"): elif (env["bits"]=="32"):
suffix+=".32" suffix+=".32"
elif (env["bits"]=="64"): elif (env["bits"]=="64"):
suffix+=".64" suffix+=".64"
elif (env["bits"]=="fat"): elif (env["bits"]=="fat"):
suffix+=".fat" suffix+=".fat"
suffix+=env.extra_suffix suffix+=env.extra_suffix
env["PROGSUFFIX"]=suffix+env["PROGSUFFIX"] env["PROGSUFFIX"]=suffix+env["PROGSUFFIX"]
env["OBJSUFFIX"]=suffix+env["OBJSUFFIX"] env["OBJSUFFIX"]=suffix+env["OBJSUFFIX"]
env["LIBSUFFIX"]=suffix+env["LIBSUFFIX"] env["LIBSUFFIX"]=suffix+env["LIBSUFFIX"]
env["SHLIBSUFFIX"]=suffix+env["SHLIBSUFFIX"] env["SHLIBSUFFIX"]=suffix+env["SHLIBSUFFIX"]
sys.path.remove("./platform/"+selected_platform) sys.path.remove("./platform/"+selected_platform)
sys.modules.pop('detect') sys.modules.pop('detect')
env.module_list=[] env.module_list=[]
for x in module_list: for x in module_list:
if env['module_'+x+'_enabled'] != "yes": if env['module_'+x+'_enabled'] != "yes":
continue continue
tmppath="./modules/"+x tmppath="./modules/"+x
sys.path.append(tmppath) sys.path.append(tmppath)
env.current_module=x env.current_module=x
import config import config
if (config.can_build(selected_platform)): if (config.can_build(selected_platform)):
config.configure(env) config.configure(env)
env.module_list.append(x) env.module_list.append(x)
sys.path.remove(tmppath) sys.path.remove(tmppath)
sys.modules.pop('config') sys.modules.pop('config')
if (env.use_ptrcall): if (env.use_ptrcall):
env.Append(CPPFLAGS=['-DPTRCALL_ENABLED']); env.Append(CPPFLAGS=['-DPTRCALL_ENABLED']);
# to test 64 bits compiltion # to test 64 bits compiltion
# env.Append(CPPFLAGS=['-m64']) # env.Append(CPPFLAGS=['-m64'])
if (env['tools']=='yes'): if (env['tools']=='yes'):
env.Append(CPPFLAGS=['-DTOOLS_ENABLED']) env.Append(CPPFLAGS=['-DTOOLS_ENABLED'])
if (env['disable_3d']=='yes'): if (env['disable_3d']=='yes'):
env.Append(CPPFLAGS=['-D_3D_DISABLED']) env.Append(CPPFLAGS=['-D_3D_DISABLED'])
if (env['gdscript']=='yes'): if (env['gdscript']=='yes'):
env.Append(CPPFLAGS=['-DGDSCRIPT_ENABLED']) env.Append(CPPFLAGS=['-DGDSCRIPT_ENABLED'])
if (env['disable_advanced_gui']=='yes'): if (env['disable_advanced_gui']=='yes'):
env.Append(CPPFLAGS=['-DADVANCED_GUI_DISABLED']) env.Append(CPPFLAGS=['-DADVANCED_GUI_DISABLED'])
if (env['minizip'] == 'yes'): if (env['minizip'] == 'yes'):
env.Append(CPPFLAGS=['-DMINIZIP_ENABLED']) env.Append(CPPFLAGS=['-DMINIZIP_ENABLED'])
if (env['xml']=='yes'): if (env['xml']=='yes'):
env.Append(CPPFLAGS=['-DXML_ENABLED']) env.Append(CPPFLAGS=['-DXML_ENABLED'])
if (env['verbose']=='no'): if (env['verbose']=='no'):
methods.no_verbose(sys,env) methods.no_verbose(sys,env)
Export('env') Export('env')
#build subdirs, the build order is dependent on link order. #build subdirs, the build order is dependent on link order.
SConscript("core/SCsub") SConscript("core/SCsub")
SConscript("servers/SCsub") SConscript("servers/SCsub")
SConscript("scene/SCsub") SConscript("scene/SCsub")
SConscript("tools/SCsub") SConscript("tools/SCsub")
SConscript("drivers/SCsub") SConscript("drivers/SCsub")
SConscript("bin/SCsub") SConscript("bin/SCsub")
SConscript("modules/SCsub") SConscript("modules/SCsub")
SConscript("main/SCsub") SConscript("main/SCsub")
SConscript("platform/"+selected_platform+"/SCsub"); # build selected platform SConscript("platform/"+selected_platform+"/SCsub"); # build selected platform
# Microsoft Visual Studio Project Generation # Microsoft Visual Studio Project Generation
if (env['vsproj'])=="yes": if (env['vsproj'])=="yes":
AddToVSProject(env.core_sources) AddToVSProject(env.core_sources)
AddToVSProject(env.main_sources) AddToVSProject(env.main_sources)
AddToVSProject(env.modules_sources) AddToVSProject(env.modules_sources)
AddToVSProject(env.scene_sources) AddToVSProject(env.scene_sources)
AddToVSProject(env.servers_sources) AddToVSProject(env.servers_sources)
AddToVSProject(env.tool_sources) AddToVSProject(env.tool_sources)
# this env flag won't work, it needs to be set in env_base=Environment(MSVC_VERSION='9.0') # this env flag won't work, it needs to be set in env_base=Environment(MSVC_VERSION='9.0')
# Even then, SCons still seems to ignore it and builds with the latest MSVC... # Even then, SCons still seems to ignore it and builds with the latest MSVC...
# That said, it's not needed to be set so far but I'm leaving it here so that this comment # That said, it's not needed to be set so far but I'm leaving it here so that this comment
# has a purpose. # has a purpose.
#env['MSVS_VERSION']='9.0' #env['MSVS_VERSION']='9.0'
# Calls a CMD with /C(lose) and /V(delayed environment variable expansion) options. # Calls a CMD with /C(lose) and /V(delayed environment variable expansion) options.
# And runs vcvarsall bat for the propper arhitecture and scons for propper configuration # And runs vcvarsall bat for the propper arhitecture and scons for propper configuration
env['MSVSBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! -j2' env['MSVSBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! -j2'
env['MSVSREBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) & call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j2' env['MSVSREBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) & call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j2'
env['MSVSCLEANCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons --clean platform=windows target=$(Configuration) tools=!tools! -j2' env['MSVSCLEANCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons --clean platform=windows target=$(Configuration) tools=!tools! -j2'
# This version information (Win32, x64, Debug, Release, Release_Debug seems to be # This version information (Win32, x64, Debug, Release, Release_Debug seems to be
# required for Visual Studio to understand that it needs to generate an NMAKE # required for Visual Studio to understand that it needs to generate an NMAKE
# project. Do not modify without knowing what you are doing. # project. Do not modify without knowing what you are doing.
debug_variants = ['debug|Win32']+['debug|x64'] debug_variants = ['debug|Win32']+['debug|x64']
release_variants = ['release|Win32']+['release|x64'] release_variants = ['release|Win32']+['release|x64']
release_debug_variants = ['release_debug|Win32']+['release_debug|x64'] release_debug_variants = ['release_debug|Win32']+['release_debug|x64']
variants = debug_variants + release_variants + release_debug_variants variants = debug_variants + release_variants + release_debug_variants
debug_targets = ['bin\\godot.windows.tools.32.exe']+['bin\\godot.windows.tools.64.exe'] debug_targets = ['bin\\godot.windows.tools.32.exe']+['bin\\godot.windows.tools.64.exe']
release_targets = ['bin\\godot.windows.opt.32.exe']+['bin\\godot.windows.opt.64.exe'] release_targets = ['bin\\godot.windows.opt.32.exe']+['bin\\godot.windows.opt.64.exe']
release_debug_targets = ['bin\\godot.windows.opt.tools.32.exe']+['bin\\godot.windows.opt.tools.64.exe'] release_debug_targets = ['bin\\godot.windows.opt.tools.32.exe']+['bin\\godot.windows.opt.tools.64.exe']
targets = debug_targets + release_targets + release_debug_targets targets = debug_targets + release_targets + release_debug_targets
msvproj = env.MSVSProject(target = ['#godot' + env['MSVSPROJECTSUFFIX'] ], msvproj = env.MSVSProject(target = ['#godot' + env['MSVSPROJECTSUFFIX'] ],
incs = env.vs_incs, incs = env.vs_incs,
srcs = env.vs_srcs, srcs = env.vs_srcs,
runfile = targets, runfile = targets,
buildtarget = targets, buildtarget = targets,
auto_build_solution=1, auto_build_solution=1,
variant = variants) variant = variants)
else: else:
print("No valid target platform selected.") print("No valid target platform selected.")
print("The following were detected:") print("The following were detected:")
for x in platform_list: for x in platform_list:
print("\t"+x) print("\t"+x)
print("\nPlease run scons again with argument: platform=<string>") print("\nPlease run scons again with argument: platform=<string>")

View File

@@ -9,9 +9,9 @@ gd_call=""
gd_inc="" gd_inc=""
for x in env.global_defaults: for x in env.global_defaults:
env.core_sources.append("#platform/"+x+"/globals/global_defaults.cpp") env.core_sources.append("#platform/"+x+"/globals/global_defaults.cpp")
gd_inc+='#include "platform/'+x+'/globals/global_defaults.h"\n' gd_inc+='#include "platform/'+x+'/globals/global_defaults.h"\n'
gd_call+="\tregister_"+x+"_global_defaults();\n" gd_call+="\tregister_"+x+"_global_defaults();\n"
gd_cpp='#include "globals.h"\n' gd_cpp='#include "globals.h"\n'
gd_cpp+=gd_inc gd_cpp+=gd_inc
@@ -24,25 +24,25 @@ f.close()
import os import os
txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0" txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0"
if ("SCRIPT_AES256_ENCRYPTION_KEY" in os.environ): if ("SCRIPT_AES256_ENCRYPTION_KEY" in os.environ):
e=os.environ["SCRIPT_AES256_ENCRYPTION_KEY"] e=os.environ["SCRIPT_AES256_ENCRYPTION_KEY"]
txt = "" txt = ""
ec_valid=True ec_valid=True
if (len(e)!=64): if (len(e)!=64):
ec_valid=False ec_valid=False
else: else:
for i in range(len(e)>>1): for i in range(len(e)>>1):
if (i>0): if (i>0):
txt+="," txt+=","
txts="0x"+e[i*2:i*2+2] txts="0x"+e[i*2:i*2+2]
try: try:
int(txts,16) int(txts,16)
except: except:
ec_valid=False ec_valid=False
txt+=txts txt+=txts
if (not ec_valid): if (not ec_valid):
txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0" txt = "0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0"
print("Invalid AES256 encryption key, not 64 bits hex: "+e) print("Invalid AES256 encryption key, not 64 bits hex: "+e)
f = open("script_encryption_key.cpp", "wb") f = open("script_encryption_key.cpp", "wb")
f.write("#include \"globals.h\"\nuint8_t script_encryption_key[32]={" + txt + "};\n") f.write("#include \"globals.h\"\nuint8_t script_encryption_key[32]={" + txt + "};\n")

View File

@@ -163,94 +163,94 @@ MethodBind* create_method_bind($ifret R$ $ifnoret void$ (T::*p_method)($arg, P@$
def make_version(template,nargs,argmax,const,ret): def make_version(template,nargs,argmax,const,ret):
intext=template intext=template
from_pos=0 from_pos=0
outtext="" outtext=""
while(True): while(True):
to_pos=intext.find("$",from_pos) to_pos=intext.find("$",from_pos)
if (to_pos==-1): if (to_pos==-1):
outtext+=intext[from_pos:] outtext+=intext[from_pos:]
break break
else: else:
outtext+=intext[from_pos:to_pos] outtext+=intext[from_pos:to_pos]
end=intext.find("$",to_pos+1) end=intext.find("$",to_pos+1)
if (end==-1): if (end==-1):
break # ignore break # ignore
macro=intext[to_pos+1:end] macro=intext[to_pos+1:end]
cmd="" cmd=""
data="" data=""
if (macro.find(" ")!=-1): if (macro.find(" ")!=-1):
cmd=macro[0:macro.find(" ")] cmd=macro[0:macro.find(" ")]
data=macro[macro.find(" ")+1:] data=macro[macro.find(" ")+1:]
else: else:
cmd=macro cmd=macro
if (cmd=="argc"): if (cmd=="argc"):
outtext+=str(nargs) outtext+=str(nargs)
if (cmd=="ifret" and ret): if (cmd=="ifret" and ret):
outtext+=data outtext+=data
if (cmd=="ifargs" and nargs): if (cmd=="ifargs" and nargs):
outtext+=data outtext+=data
if (cmd=="ifretargs" and nargs and ret): if (cmd=="ifretargs" and nargs and ret):
outtext+=data outtext+=data
if (cmd=="ifconst" and const): if (cmd=="ifconst" and const):
outtext+=data outtext+=data
elif (cmd=="ifnoconst" and not const): elif (cmd=="ifnoconst" and not const):
outtext+=data outtext+=data
elif (cmd=="ifnoret" and not ret): elif (cmd=="ifnoret" and not ret):
outtext+=data outtext+=data
elif (cmd=="iftempl" and (nargs>0 or ret)): elif (cmd=="iftempl" and (nargs>0 or ret)):
outtext+=data outtext+=data
elif (cmd=="arg,"): elif (cmd=="arg,"):
for i in range(1,nargs+1): for i in range(1,nargs+1):
if (i>1): if (i>1):
outtext+=", " outtext+=", "
outtext+=data.replace("@",str(i)) outtext+=data.replace("@",str(i))
elif (cmd=="arg"): elif (cmd=="arg"):
for i in range(1,nargs+1): for i in range(1,nargs+1):
outtext+=data.replace("@",str(i)) outtext+=data.replace("@",str(i))
elif (cmd=="noarg"): elif (cmd=="noarg"):
for i in range(nargs+1,argmax+1): for i in range(nargs+1,argmax+1):
outtext+=data.replace("@",str(i)) outtext+=data.replace("@",str(i))
elif (cmd=="noarg"): elif (cmd=="noarg"):
for i in range(nargs+1,argmax+1): for i in range(nargs+1,argmax+1):
outtext+=data.replace("@",str(i)) outtext+=data.replace("@",str(i))
from_pos=end+1 from_pos=end+1
return outtext return outtext
def run(target, source, env): def run(target, source, env):
versions=10 versions=10
versions_ext=6 versions_ext=6
text="" text=""
text_ext="" text_ext=""
for i in range(0,versions+1): for i in range(0,versions+1):
t="" t=""
t+=make_version(template,i,versions,False,False) t+=make_version(template,i,versions,False,False)
t+=make_version(template_typed,i,versions,False,False) t+=make_version(template_typed,i,versions,False,False)
t+=make_version(template,i,versions,False,True) t+=make_version(template,i,versions,False,True)
t+=make_version(template_typed,i,versions,False,True) t+=make_version(template_typed,i,versions,False,True)
t+=make_version(template,i,versions,True,False) t+=make_version(template,i,versions,True,False)
t+=make_version(template_typed,i,versions,True,False) t+=make_version(template_typed,i,versions,True,False)
t+=make_version(template,i,versions,True,True) t+=make_version(template,i,versions,True,True)
t+=make_version(template_typed,i,versions,True,True) t+=make_version(template_typed,i,versions,True,True)
if (i>=versions_ext): if (i>=versions_ext):
text_ext+=t text_ext+=t
else: else:
text+=t text+=t
f=open(target[0].path,"w") f=open(target[0].path,"w")
f.write(text) f.write(text)
f.close() f.close()
f=open(target[1].path,"w") f=open(target[1].path,"w")
f.write(text_ext) f.write(text_ext)
f.close() f.close()

View File

@@ -17,195 +17,195 @@ tab=0
old_classes={} old_classes={}
def write_string(_f, text,newline=True): def write_string(_f, text,newline=True):
for t in range(tab): for t in range(tab):
_f.write("\t") _f.write("\t")
_f.write(text) _f.write(text)
if (newline): if (newline):
_f.write("\n") _f.write("\n")
def escape(ret): def escape(ret):
ret=ret.replace("&","&amp;"); ret=ret.replace("&","&amp;");
ret=ret.replace("<","&gt;"); ret=ret.replace("<","&gt;");
ret=ret.replace(">","&lt;"); ret=ret.replace(">","&lt;");
ret=ret.replace("'","&apos;"); ret=ret.replace("'","&apos;");
ret=ret.replace("\"","&quot;"); ret=ret.replace("\"","&quot;");
return ret return ret
def inc_tab(): def inc_tab():
global tab global tab
tab+=1 tab+=1
def dec_tab(): def dec_tab():
global tab global tab
tab-=1 tab-=1
write_string(f,'<?xml version="1.0" encoding="UTF-8" ?>') write_string(f,'<?xml version="1.0" encoding="UTF-8" ?>')
write_string(f,'<doc version="'+new_doc.attrib["version"]+'">') write_string(f,'<doc version="'+new_doc.attrib["version"]+'">')
def get_tag(node,name): def get_tag(node,name):
tag="" tag=""
if (name in node.attrib): if (name in node.attrib):
tag=' '+name+'="'+escape(node.attrib[name])+'" ' tag=' '+name+'="'+escape(node.attrib[name])+'" '
return tag return tag
def find_method_descr(old_class,name): def find_method_descr(old_class,name):
methods = old_class.find("methods") methods = old_class.find("methods")
if(methods!=None and len(list(methods))>0): if(methods!=None and len(list(methods))>0):
for m in list(methods): for m in list(methods):
if (m.attrib["name"]==name): if (m.attrib["name"]==name):
description=m.find("description") description=m.find("description")
if (description!=None and description.text.strip()!=""): if (description!=None and description.text.strip()!=""):
return description.text return description.text
return None return None
def find_signal_descr(old_class,name): def find_signal_descr(old_class,name):
signals = old_class.find("signals") signals = old_class.find("signals")
if(signals!=None and len(list(signals))>0): if(signals!=None and len(list(signals))>0):
for m in list(signals): for m in list(signals):
if (m.attrib["name"]==name): if (m.attrib["name"]==name):
description=m.find("description") description=m.find("description")
if (description!=None and description.text.strip()!=""): if (description!=None and description.text.strip()!=""):
return description.text return description.text
return None return None
def find_constant_descr(old_class,name): def find_constant_descr(old_class,name):
if (old_class==None): if (old_class==None):
return None return None
constants = old_class.find("constants") constants = old_class.find("constants")
if(constants!=None and len(list(constants))>0): if(constants!=None and len(list(constants))>0):
for m in list(constants): for m in list(constants):
if (m.attrib["name"]==name): if (m.attrib["name"]==name):
if (m.text.strip()!=""): if (m.text.strip()!=""):
return m.text return m.text
return None return None
def write_class(c): def write_class(c):
class_name = c.attrib["name"] class_name = c.attrib["name"]
print("Parsing Class: "+class_name) print("Parsing Class: "+class_name)
if (class_name in old_classes): if (class_name in old_classes):
old_class=old_classes[class_name] old_class=old_classes[class_name]
else: else:
old_class=None old_class=None
category=get_tag(c,"category") category=get_tag(c,"category")
inherits=get_tag(c,"inherits") inherits=get_tag(c,"inherits")
write_string(f,'<class name="'+class_name+'" '+category+inherits+'>') write_string(f,'<class name="'+class_name+'" '+category+inherits+'>')
inc_tab() inc_tab()
write_string(f,"<brief_description>") write_string(f,"<brief_description>")
if (old_class!=None): if (old_class!=None):
old_brief_descr=old_class.find("brief_description") old_brief_descr=old_class.find("brief_description")
if (old_brief_descr!=None): if (old_brief_descr!=None):
write_string(f,escape(old_brief_descr.text.strip())) write_string(f,escape(old_brief_descr.text.strip()))
write_string(f,"</brief_description>") write_string(f,"</brief_description>")
write_string(f,"<description>") write_string(f,"<description>")
if (old_class!=None): if (old_class!=None):
old_descr=old_class.find("description") old_descr=old_class.find("description")
if (old_descr!=None): if (old_descr!=None):
write_string(f,escape(old_descr.text.strip())) write_string(f,escape(old_descr.text.strip()))
write_string(f,"</description>") write_string(f,"</description>")
methods = c.find("methods") methods = c.find("methods")
if(methods!=None and len(list(methods))>0): if(methods!=None and len(list(methods))>0):
write_string(f,"<methods>") write_string(f,"<methods>")
inc_tab() inc_tab()
for m in list(methods): for m in list(methods):
qualifiers=get_tag(m,"qualifiers") qualifiers=get_tag(m,"qualifiers")
write_string(f,'<method name="'+escape(m.attrib["name"])+'" ' +qualifiers+'>') write_string(f,'<method name="'+escape(m.attrib["name"])+'" ' +qualifiers+'>')
inc_tab() inc_tab()
for a in list(m): for a in list(m):
if (a.tag=="return"): if (a.tag=="return"):
typ=get_tag(a,"type") typ=get_tag(a,"type")
write_string(f,'<return'+typ+'>'); write_string(f,'<return'+typ+'>');
write_string(f,'</return>'); write_string(f,'</return>');
elif (a.tag=="argument"): elif (a.tag=="argument"):
default=get_tag(a,"default") default=get_tag(a,"default")
write_string(f,'<argument index="'+a.attrib["index"]+'" name="'+escape(a.attrib["name"])+'" type="'+a.attrib["type"]+'"' +default+'>'); write_string(f,'<argument index="'+a.attrib["index"]+'" name="'+escape(a.attrib["name"])+'" type="'+a.attrib["type"]+'"' +default+'>');
write_string(f,'</argument>'); write_string(f,'</argument>');
write_string(f,'<description>'); write_string(f,'<description>');
if (old_class!=None): if (old_class!=None):
old_method_descr=find_method_descr(old_class,m.attrib["name"]) old_method_descr=find_method_descr(old_class,m.attrib["name"])
if (old_method_descr): if (old_method_descr):
write_string(f,escape(escape(old_method_descr.strip()))) write_string(f,escape(escape(old_method_descr.strip())))
write_string(f,'</description>'); write_string(f,'</description>');
dec_tab() dec_tab()
write_string(f,"</method>") write_string(f,"</method>")
dec_tab() dec_tab()
write_string(f,"</methods>") write_string(f,"</methods>")
signals = c.find("signals") signals = c.find("signals")
if(signals!=None and len(list(signals))>0): if(signals!=None and len(list(signals))>0):
write_string(f,"<signals>") write_string(f,"<signals>")
inc_tab() inc_tab()
for m in list(signals): for m in list(signals):
write_string(f,'<signal name="'+escape(m.attrib["name"])+'">') write_string(f,'<signal name="'+escape(m.attrib["name"])+'">')
inc_tab() inc_tab()
for a in list(m): for a in list(m):
if (a.tag=="argument"): if (a.tag=="argument"):
write_string(f,'<argument index="'+a.attrib["index"]+'" name="'+escape(a.attrib["name"])+'" type="'+a.attrib["type"]+'">'); write_string(f,'<argument index="'+a.attrib["index"]+'" name="'+escape(a.attrib["name"])+'" type="'+a.attrib["type"]+'">');
write_string(f,'</argument>'); write_string(f,'</argument>');
write_string(f,'<description>'); write_string(f,'<description>');
if (old_class!=None): if (old_class!=None):
old_signal_descr=find_signal_descr(old_class,m.attrib["name"]) old_signal_descr=find_signal_descr(old_class,m.attrib["name"])
if (old_signal_descr): if (old_signal_descr):
write_string(f,escape(old_signal_descr.strip())) write_string(f,escape(old_signal_descr.strip()))
write_string(f,'</description>'); write_string(f,'</description>');
dec_tab() dec_tab()
write_string(f,"</signal>") write_string(f,"</signal>")
dec_tab() dec_tab()
write_string(f,"</signals>") write_string(f,"</signals>")
constants = c.find("constants") constants = c.find("constants")
if(constants!=None and len(list(constants))>0): if(constants!=None and len(list(constants))>0):
write_string(f,"<constants>") write_string(f,"<constants>")
inc_tab() inc_tab()
for m in list(constants): for m in list(constants):
write_string(f,'<constant name="'+escape(m.attrib["name"])+'" value="'+m.attrib["value"]+'">') write_string(f,'<constant name="'+escape(m.attrib["name"])+'" value="'+m.attrib["value"]+'">')
old_constant_descr=find_constant_descr(old_class,m.attrib["name"]) old_constant_descr=find_constant_descr(old_class,m.attrib["name"])
if (old_constant_descr): if (old_constant_descr):
write_string(f,escape(old_constant_descr.strip())) write_string(f,escape(old_constant_descr.strip()))
write_string(f,"</constant>") write_string(f,"</constant>")
dec_tab() dec_tab()
write_string(f,"</constants>") write_string(f,"</constants>")
dec_tab() dec_tab()
write_string(f,"</class>") write_string(f,"</class>")
for c in list(old_doc): for c in list(old_doc):
old_classes[c.attrib["name"]]=c old_classes[c.attrib["name"]]=c
for c in list(new_doc): for c in list(new_doc):
write_class(c) write_class(c)
write_string(f,'</doc>\n') write_string(f,'</doc>\n')

View File

@@ -11,66 +11,66 @@ import xml.etree.ElementTree as ET
################################################################################ ################################################################################
flags = { flags = {
'c': platform.platform() != 'Windows', # Disable by default on windows, since we use ANSI escape codes 'c': platform.platform() != 'Windows', # Disable by default on windows, since we use ANSI escape codes
'b': False, 'b': False,
'g': False, 'g': False,
's': False, 's': False,
'u': False, 'u': False,
'h': False, 'h': False,
'p': False, 'p': False,
'o': True, 'o': True,
'i': False, 'i': False,
} }
flag_descriptions = { flag_descriptions = {
'c': 'Toggle colors when outputting.', 'c': 'Toggle colors when outputting.',
'b': 'Toggle showing only not fully described classes.', 'b': 'Toggle showing only not fully described classes.',
'g': 'Toggle showing only completed classes.', 'g': 'Toggle showing only completed classes.',
's': 'Toggle showing comments about the status.', 's': 'Toggle showing comments about the status.',
'u': 'Toggle URLs to docs.', 'u': 'Toggle URLs to docs.',
'h': 'Show help and exit.', 'h': 'Show help and exit.',
'p': 'Toggle showing percentage as well as counts.', 'p': 'Toggle showing percentage as well as counts.',
'o': 'Toggle overall column.', 'o': 'Toggle overall column.',
'i': 'Toggle collapse of class items columns.', 'i': 'Toggle collapse of class items columns.',
} }
long_flags = { long_flags = {
'colors': 'c', 'colors': 'c',
'use-colors': 'c', 'use-colors': 'c',
'bad': 'b', 'bad': 'b',
'only-bad': 'b', 'only-bad': 'b',
'good': 'g', 'good': 'g',
'only-good': 'g', 'only-good': 'g',
'comments': 's', 'comments': 's',
'status': 's', 'status': 's',
'urls': 'u', 'urls': 'u',
'gen-url': 'u', 'gen-url': 'u',
'help': 'h', 'help': 'h',
'percent': 'p', 'percent': 'p',
'use-percentages': 'p', 'use-percentages': 'p',
'overall': 'o', 'overall': 'o',
'use-overall': 'o', 'use-overall': 'o',
'items': 'i', 'items': 'i',
'collapse': 'i', 'collapse': 'i',
} }
table_columns = ['name', 'brief_description', 'description', 'methods', 'constants', 'members', 'signals'] table_columns = ['name', 'brief_description', 'description', 'methods', 'constants', 'members', 'signals']
table_column_names = ['Name', 'Brief Desc.', 'Desc.', 'Methods', 'Constants', 'Members', 'Signals'] table_column_names = ['Name', 'Brief Desc.', 'Desc.', 'Methods', 'Constants', 'Members', 'Signals']
colors = { colors = {
'name': [36], # cyan 'name': [36], # cyan
'part_big_problem': [4, 31], # underline, red 'part_big_problem': [4, 31], # underline, red
'part_problem': [31], # red 'part_problem': [31], # red
'part_mostly_good': [33], # yellow 'part_mostly_good': [33], # yellow
'part_good': [32], # green 'part_good': [32], # green
'url': [4, 34], # underline, blue 'url': [4, 34], # underline, blue
'section': [1, 4], # bold, underline 'section': [1, 4], # bold, underline
'state_off': [36], # cyan 'state_off': [36], # cyan
'state_on': [1, 35], # bold, magenta/plum 'state_on': [1, 35], # bold, magenta/plum
} }
overall_progress_description_weigth = 10 overall_progress_description_weigth = 10
@@ -81,22 +81,22 @@ overall_progress_description_weigth = 10
################################################################################ ################################################################################
def validate_tag(elem, tag): def validate_tag(elem, tag):
if elem.tag != tag: if elem.tag != tag:
print('Tag mismatch, expected "' + tag + '", got ' + elem.tag) print('Tag mismatch, expected "' + tag + '", got ' + elem.tag)
sys.exit(255) sys.exit(255)
def color(color, string): def color(color, string):
if flags['c']: if flags['c']:
color_format = '' color_format = ''
for code in colors[color]: for code in colors[color]:
color_format += '\033[' + str(code) + 'm' color_format += '\033[' + str(code) + 'm'
return color_format + string + '\033[0m' return color_format + string + '\033[0m'
else: else:
return string return string
ansi_escape = re.compile(r'\x1b[^m]*m') ansi_escape = re.compile(r'\x1b[^m]*m')
def nonescape_len(s): def nonescape_len(s):
return len(ansi_escape.sub('', s)) return len(ansi_escape.sub('', s))
@@ -105,138 +105,138 @@ def nonescape_len(s):
################################################################################ ################################################################################
class ClassStatusProgress: class ClassStatusProgress:
def __init__(self, described = 0, total = 0): def __init__(self, described = 0, total = 0):
self.described = described self.described = described
self.total = total self.total = total
def __add__(self, other): def __add__(self, other):
return ClassStatusProgress(self.described + other.described, self.total + other.total) return ClassStatusProgress(self.described + other.described, self.total + other.total)
def increment(self, described): def increment(self, described):
if described: if described:
self.described += 1 self.described += 1
self.total += 1 self.total += 1
def is_ok(self): def is_ok(self):
return self.described >= self.total return self.described >= self.total
def to_configured_colored_string(self): def to_configured_colored_string(self):
if flags['p']: if flags['p']:
return self.to_colored_string('{percent}% ({has}/{total})', '{pad_percent}{pad_described}{s}{pad_total}') return self.to_colored_string('{percent}% ({has}/{total})', '{pad_percent}{pad_described}{s}{pad_total}')
else: else:
return self.to_colored_string() return self.to_colored_string()
def to_colored_string(self, format='{has}/{total}', pad_format='{pad_described}{s}{pad_total}'): def to_colored_string(self, format='{has}/{total}', pad_format='{pad_described}{s}{pad_total}'):
ratio = self.described/self.total if self.total != 0 else 1 ratio = self.described/self.total if self.total != 0 else 1
percent = round(100*ratio) percent = round(100*ratio)
s = format.format(has = str(self.described), total = str(self.total), percent = str(percent)) s = format.format(has = str(self.described), total = str(self.total), percent = str(percent))
if self.described >= self.total: if self.described >= self.total:
s = color('part_good', s) s = color('part_good', s)
elif self.described >= self.total/4*3: elif self.described >= self.total/4*3:
s = color('part_mostly_good', s) s = color('part_mostly_good', s)
elif self.described > 0: elif self.described > 0:
s = color('part_problem', s) s = color('part_problem', s)
else: else:
s = color('part_big_problem', s) s = color('part_big_problem', s)
pad_size = max(len(str(self.described)), len(str(self.total))) pad_size = max(len(str(self.described)), len(str(self.total)))
pad_described = ''.ljust(pad_size - len(str(self.described))) pad_described = ''.ljust(pad_size - len(str(self.described)))
pad_percent = ''.ljust(3 - len(str(percent))) pad_percent = ''.ljust(3 - len(str(percent)))
pad_total = ''.ljust(pad_size - len(str(self.total))) pad_total = ''.ljust(pad_size - len(str(self.total)))
return pad_format.format(pad_described = pad_described, pad_total = pad_total, pad_percent = pad_percent, s = s) return pad_format.format(pad_described = pad_described, pad_total = pad_total, pad_percent = pad_percent, s = s)
class ClassStatus: class ClassStatus:
def __init__(self, name=''): def __init__(self, name=''):
self.name = name self.name = name
self.has_brief_description = True self.has_brief_description = True
self.has_description = True self.has_description = True
self.progresses = { self.progresses = {
'methods': ClassStatusProgress(), 'methods': ClassStatusProgress(),
'constants': ClassStatusProgress(), 'constants': ClassStatusProgress(),
'members': ClassStatusProgress(), 'members': ClassStatusProgress(),
'signals': ClassStatusProgress() 'signals': ClassStatusProgress()
} }
def __add__(self, other): def __add__(self, other):
new_status = ClassStatus() new_status = ClassStatus()
new_status.name = self.name new_status.name = self.name
new_status.has_brief_description = self.has_brief_description and other.has_brief_description new_status.has_brief_description = self.has_brief_description and other.has_brief_description
new_status.has_description = self.has_description and other.has_description new_status.has_description = self.has_description and other.has_description
for k in self.progresses: for k in self.progresses:
new_status.progresses[k] = self.progresses[k] + other.progresses[k] new_status.progresses[k] = self.progresses[k] + other.progresses[k]
return new_status return new_status
def is_ok(self): def is_ok(self):
ok = True ok = True
ok = ok and self.has_brief_description ok = ok and self.has_brief_description
ok = ok and self.has_description ok = ok and self.has_description
for k in self.progresses: for k in self.progresses:
ok = ok and self.progresses[k].is_ok() ok = ok and self.progresses[k].is_ok()
return ok return ok
def make_output(self): def make_output(self):
output = {} output = {}
output['name'] = color('name', self.name) output['name'] = color('name', self.name)
ok_string = color('part_good', 'OK') ok_string = color('part_good', 'OK')
missing_string = color('part_big_problem', 'MISSING') missing_string = color('part_big_problem', 'MISSING')
output['brief_description'] = ok_string if self.has_brief_description else missing_string output['brief_description'] = ok_string if self.has_brief_description else missing_string
output['description'] = ok_string if self.has_description else missing_string output['description'] = ok_string if self.has_description else missing_string
description_progress = ClassStatusProgress( description_progress = ClassStatusProgress(
(self.has_brief_description + self.has_description) * overall_progress_description_weigth, (self.has_brief_description + self.has_description) * overall_progress_description_weigth,
2 * overall_progress_description_weigth 2 * overall_progress_description_weigth
) )
items_progress = ClassStatusProgress() items_progress = ClassStatusProgress()
for k in ['methods', 'constants', 'members', 'signals']: for k in ['methods', 'constants', 'members', 'signals']:
items_progress += self.progresses[k] items_progress += self.progresses[k]
output[k] = self.progresses[k].to_configured_colored_string() output[k] = self.progresses[k].to_configured_colored_string()
output['items'] = items_progress.to_configured_colored_string() output['items'] = items_progress.to_configured_colored_string()
output['overall'] = (description_progress + items_progress).to_colored_string('{percent}%', '{pad_percent}{s}') output['overall'] = (description_progress + items_progress).to_colored_string('{percent}%', '{pad_percent}{s}')
if self.name.startswith('Total'): if self.name.startswith('Total'):
output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/_classes.html') output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/_classes.html')
if flags['s']: if flags['s']:
output['comment'] = color('part_good', 'ALL OK') output['comment'] = color('part_good', 'ALL OK')
else: else:
output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/class_{name}.html'.format(name=self.name.lower())) output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/class_{name}.html'.format(name=self.name.lower()))
if flags['s'] and not flags['g'] and self.is_ok(): if flags['s'] and not flags['g'] and self.is_ok():
output['comment'] = color('part_good', 'ALL OK') output['comment'] = color('part_good', 'ALL OK')
return output return output
def generate_for_class(c): def generate_for_class(c):
status = ClassStatus() status = ClassStatus()
status.name = c.attrib['name'] status.name = c.attrib['name']
for tag in list(c): for tag in list(c):
if tag.tag == 'brief_description': if tag.tag == 'brief_description':
status.has_brief_description = len(tag.text.strip()) > 0 status.has_brief_description = len(tag.text.strip()) > 0
elif tag.tag == 'description': elif tag.tag == 'description':
status.has_description = len(tag.text.strip()) > 0 status.has_description = len(tag.text.strip()) > 0
elif tag.tag in ['methods', 'signals']: elif tag.tag in ['methods', 'signals']:
for sub_tag in list(tag): for sub_tag in list(tag):
descr = sub_tag.find('description') descr = sub_tag.find('description')
status.progresses[tag.tag].increment(len(descr.text.strip()) > 0) status.progresses[tag.tag].increment(len(descr.text.strip()) > 0)
elif tag.tag in ['constants', 'members']: elif tag.tag in ['constants', 'members']:
for sub_tag in list(tag): for sub_tag in list(tag):
status.progresses[tag.tag].increment(len(sub_tag.text.strip()) > 0) status.progresses[tag.tag].increment(len(sub_tag.text.strip()) > 0)
elif tag.tag in ['theme_items']: elif tag.tag in ['theme_items']:
pass #Ignore those tags, since they seem to lack description at all pass #Ignore those tags, since they seem to lack description at all
else: else:
print(tag.tag, tag.attrib) print(tag.tag, tag.attrib)
return status return status
@@ -248,31 +248,31 @@ input_file_list = []
input_class_list = [] input_class_list = []
for arg in sys.argv[1:]: for arg in sys.argv[1:]:
if arg.startswith('--'): if arg.startswith('--'):
flags[long_flags[arg[2:]]] = not flags[long_flags[arg[2:]]] flags[long_flags[arg[2:]]] = not flags[long_flags[arg[2:]]]
elif arg.startswith('-'): elif arg.startswith('-'):
for f in arg[1:]: for f in arg[1:]:
flags[f] = not flags[f] flags[f] = not flags[f]
elif arg.endswith('.xml'): elif arg.endswith('.xml'):
input_file_list.append(arg) input_file_list.append(arg)
else: else:
input_class_list.append(arg) input_class_list.append(arg)
if flags['i']: if flags['i']:
for r in ['methods', 'constants', 'members', 'signals']: for r in ['methods', 'constants', 'members', 'signals']:
index = table_columns.index(r) index = table_columns.index(r)
del table_column_names[index] del table_column_names[index]
del table_columns[index] del table_columns[index]
table_column_names.append('Items') table_column_names.append('Items')
table_columns.append('items') table_columns.append('items')
if flags['o'] == (not flags['i']): if flags['o'] == (not flags['i']):
table_column_names.append('Overall') table_column_names.append('Overall')
table_columns.append('overall') table_columns.append('overall')
if flags['u']: if flags['u']:
table_column_names.append('Docs URL') table_column_names.append('Docs URL')
table_columns.append('url') table_columns.append('url')
################################################################################ ################################################################################
@@ -280,28 +280,28 @@ if flags['u']:
################################################################################ ################################################################################
if len(input_file_list) < 1 or flags['h']: if len(input_file_list) < 1 or flags['h']:
if not flags['h']: if not flags['h']:
print(color('section', 'Invalid usage') + ': At least one classes.xml file is required') print(color('section', 'Invalid usage') + ': At least one classes.xml file is required')
print(color('section', 'Usage') + ': doc_status.py [flags] <classes.xml> [class names]') print(color('section', 'Usage') + ': doc_status.py [flags] <classes.xml> [class names]')
print('\t< and > signify required parameters, while [ and ] signify optional parameters.') print('\t< and > signify required parameters, while [ and ] signify optional parameters.')
print('\tNote that you can give more than one classes file, in which case they will be merged on-the-fly.') print('\tNote that you can give more than one classes file, in which case they will be merged on-the-fly.')
print(color('section', 'Available flags') + ':') print(color('section', 'Available flags') + ':')
possible_synonym_list = list(long_flags) possible_synonym_list = list(long_flags)
possible_synonym_list.sort() possible_synonym_list.sort()
flag_list = list(flags) flag_list = list(flags)
flag_list.sort() flag_list.sort()
for flag in flag_list: for flag in flag_list:
synonyms = [color('name', '-' + flag)] synonyms = [color('name', '-' + flag)]
for synonym in possible_synonym_list: for synonym in possible_synonym_list:
if long_flags[synonym] == flag: if long_flags[synonym] == flag:
synonyms.append(color('name', '--' + synonym)) synonyms.append(color('name', '--' + synonym))
print(('{synonyms} (Currently '+color('state_'+('on' if flags[flag] else 'off'), '{value}')+')\n\t{description}').format( print(('{synonyms} (Currently '+color('state_'+('on' if flags[flag] else 'off'), '{value}')+')\n\t{description}').format(
synonyms = ', '.join(synonyms), synonyms = ', '.join(synonyms),
value = ('on' if flags[flag] else 'off'), value = ('on' if flags[flag] else 'off'),
description = flag_descriptions[flag] description = flag_descriptions[flag]
)) ))
sys.exit(0) sys.exit(0)
@@ -313,25 +313,25 @@ class_names = []
classes = {} classes = {}
for file in input_file_list: for file in input_file_list:
tree = ET.parse(file) tree = ET.parse(file)
doc = tree.getroot() doc = tree.getroot()
if 'version' not in doc.attrib: if 'version' not in doc.attrib:
print('Version missing from "doc"') print('Version missing from "doc"')
sys.exit(255) sys.exit(255)
version = doc.attrib['version'] version = doc.attrib['version']
for c in list(doc): for c in list(doc):
if c.attrib['name'] in class_names: if c.attrib['name'] in class_names:
continue continue
class_names.append(c.attrib['name']) class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c classes[c.attrib['name']] = c
class_names.sort() class_names.sort()
if len(input_class_list) < 1: if len(input_class_list) < 1:
input_class_list = class_names input_class_list = class_names
@@ -346,32 +346,32 @@ table_column_chars = '|'
total_status = ClassStatus('Total') total_status = ClassStatus('Total')
for cn in input_class_list: for cn in input_class_list:
if not cn in classes: if not cn in classes:
print('Cannot find class ' + cn + '!') print('Cannot find class ' + cn + '!')
sys.exit(255) sys.exit(255)
c = classes[cn] c = classes[cn]
validate_tag(c, 'class') validate_tag(c, 'class')
status = ClassStatus.generate_for_class(c) status = ClassStatus.generate_for_class(c)
if flags['b'] and status.is_ok(): if flags['b'] and status.is_ok():
continue continue
if flags['g'] and not status.is_ok(): if flags['g'] and not status.is_ok():
continue continue
total_status = total_status + status total_status = total_status + status
out = status.make_output() out = status.make_output()
row = [] row = []
for column in table_columns: for column in table_columns:
if column in out: if column in out:
row.append(out[column]) row.append(out[column])
else: else:
row.append('') row.append('')
if 'comment' in out and out['comment'] != '': if 'comment' in out and out['comment'] != '':
row.append(out['comment']) row.append(out['comment'])
table.append(row) table.append(row)
@@ -381,50 +381,50 @@ for cn in input_class_list:
################################################################################ ################################################################################
if len(table) == 1: if len(table) == 1:
print(color('part_big_problem', 'No classes suitable for printing!')) print(color('part_big_problem', 'No classes suitable for printing!'))
sys.exit(0) sys.exit(0)
if len(table) > 2: if len(table) > 2:
total_status.name = 'Total = {0}'.format(len(table) - 1) total_status.name = 'Total = {0}'.format(len(table) - 1)
out = total_status.make_output() out = total_status.make_output()
row = [] row = []
for column in table_columns: for column in table_columns:
if column in out: if column in out:
row.append(out[column]) row.append(out[column])
else: else:
row.append('') row.append('')
table.append(row) table.append(row)
table_column_sizes = [] table_column_sizes = []
for row in table: for row in table:
for cell_i, cell in enumerate(row): for cell_i, cell in enumerate(row):
if cell_i >= len(table_column_sizes): if cell_i >= len(table_column_sizes):
table_column_sizes.append(0) table_column_sizes.append(0)
table_column_sizes[cell_i] = max(nonescape_len(cell), table_column_sizes[cell_i]) table_column_sizes[cell_i] = max(nonescape_len(cell), table_column_sizes[cell_i])
divider_string = table_row_chars[0] divider_string = table_row_chars[0]
for cell_i in range(len(table[0])): for cell_i in range(len(table[0])):
divider_string += table_row_chars[1] * (table_column_sizes[cell_i] + 2) + table_row_chars[0] divider_string += table_row_chars[1] * (table_column_sizes[cell_i] + 2) + table_row_chars[0]
print(divider_string) print(divider_string)
for row_i, row in enumerate(table): for row_i, row in enumerate(table):
row_string = table_column_chars row_string = table_column_chars
for cell_i, cell in enumerate(row): for cell_i, cell in enumerate(row):
padding_needed = table_column_sizes[cell_i] - nonescape_len(cell) + 2 padding_needed = table_column_sizes[cell_i] - nonescape_len(cell) + 2
if cell_i == 0: if cell_i == 0:
row_string += table_row_chars[2] + cell + table_row_chars[2]*(padding_needed-1) row_string += table_row_chars[2] + cell + table_row_chars[2]*(padding_needed-1)
else: else:
row_string += table_row_chars[2]*math.floor(padding_needed/2) + cell + table_row_chars[2]*math.ceil((padding_needed/2)) row_string += table_row_chars[2]*math.floor(padding_needed/2) + cell + table_row_chars[2]*math.ceil((padding_needed/2))
row_string += table_column_chars row_string += table_column_chars
print(row_string) print(row_string)
if row_i == 0 or row_i == len(table) - 2: if row_i == 0 or row_i == len(table) - 2:
print(divider_string) print(divider_string)
print(divider_string) print(divider_string)
if total_status.is_ok() and not flags['g']: if total_status.is_ok() and not flags['g']:
print('All listed classes are ' + color('part_good', 'OK') + '!') print('All listed classes are ' + color('part_good', 'OK') + '!')

View File

@@ -8,17 +8,17 @@ input_list = []
for arg in sys.argv[1:]: for arg in sys.argv[1:]:
input_list.append(arg) input_list.append(arg)
if len(input_list) < 1: if len(input_list) < 1:
print("usage: makedoku.py <classes.xml>") print("usage: makedoku.py <classes.xml>")
sys.exit(0) sys.exit(0)
def validate_tag(elem,tag): def validate_tag(elem,tag):
if (elem.tag != tag): if (elem.tag != tag):
print("Tag mismatch, expected '"+tag+"', got "+elem.tag); print("Tag mismatch, expected '"+tag+"', got "+elem.tag);
sys.exit(255) sys.exit(255)
class_names=[] class_names=[]
@@ -27,289 +27,289 @@ classes={}
def make_class_list(class_list,columns): def make_class_list(class_list,columns):
f=open("class_list.txt","wb") f=open("class_list.txt","wb")
prev=0 prev=0
col_max = len(class_list) / columns + 1 col_max = len(class_list) / columns + 1
print("col max is ", col_max) print("col max is ", col_max)
col_count = 0 col_count = 0
row_count = 0 row_count = 0
last_initial = "" last_initial = ""
fit_columns=[] fit_columns=[]
for n in range(0,columns): for n in range(0,columns):
fit_columns+=[[]] fit_columns+=[[]]
indexers=[] indexers=[]
last_initial="" last_initial=""
idx=0 idx=0
for n in class_list: for n in class_list:
col = idx/col_max col = idx/col_max
if (col>=columns): if (col>=columns):
col=columns-1 col=columns-1
fit_columns[col]+=[n] fit_columns[col]+=[n]
idx+=1 idx+=1
if (n[:1]!=last_initial): if (n[:1]!=last_initial):
indexers+=[n] indexers+=[n]
last_initial=n[:1] last_initial=n[:1]
row_max=0 row_max=0
for n in range(0,columns): for n in range(0,columns):
if (len(fit_columns[n])>row_max): if (len(fit_columns[n])>row_max):
row_max=len(fit_columns[n]) row_max=len(fit_columns[n])
for r in range(0,row_max): for r in range(0,row_max):
s="|" s="|"
for c in range(0,columns): for c in range(0,columns):
if (r>=len(fit_columns[c])): if (r>=len(fit_columns[c])):
continue continue
classname = fit_columns[c][r] classname = fit_columns[c][r]
initial=classname[0] initial=classname[0]
if (classname in indexers): if (classname in indexers):
s+="**"+initial+"**|" s+="**"+initial+"**|"
else: else:
s+=" |" s+=" |"
s+="[["+classname.lower()+"|"+classname+"]]|" s+="[["+classname.lower()+"|"+classname+"]]|"
s+="\n" s+="\n"
f.write(s) f.write(s)
def dokuize_text(txt): def dokuize_text(txt):
return txt return txt
def dokuize_text(text): def dokuize_text(text):
pos=0 pos=0
while(True): while(True):
pos = text.find("[",pos) pos = text.find("[",pos)
if (pos==-1): if (pos==-1):
break break
endq_pos=text.find("]",pos+1) endq_pos=text.find("]",pos+1)
if (endq_pos==-1): if (endq_pos==-1):
break break
pre_text=text[:pos] pre_text=text[:pos]
post_text=text[endq_pos+1:] post_text=text[endq_pos+1:]
tag_text=text[pos+1:endq_pos] tag_text=text[pos+1:endq_pos]
if (tag_text in class_names): if (tag_text in class_names):
tag_text="[["+tag_text.lower()+"|"+tag_text+"]]" tag_text="[["+tag_text.lower()+"|"+tag_text+"]]"
else: #command else: #command
cmd=tag_text cmd=tag_text
space_pos=tag_text.find(" ") space_pos=tag_text.find(" ")
if (cmd.find("html")==0): if (cmd.find("html")==0):
cmd=tag_text[:space_pos] cmd=tag_text[:space_pos]
param=tag_text[space_pos+1:] param=tag_text[space_pos+1:]
tag_text="<"+param+">" tag_text="<"+param+">"
elif(cmd.find("method")==0): elif(cmd.find("method")==0):
cmd=tag_text[:space_pos] cmd=tag_text[:space_pos]
param=tag_text[space_pos+1:] param=tag_text[space_pos+1:]
if (param.find(".")!=-1): if (param.find(".")!=-1):
class_param,method_param=param.split(".") class_param,method_param=param.split(".")
tag_text="[["+class_param.lower()+"#"+method_param+"|"+class_param+'.'+method_param+"]]" tag_text="[["+class_param.lower()+"#"+method_param+"|"+class_param+'.'+method_param+"]]"
else: else:
tag_text="[[#"+param+"|"+param+"]]" tag_text="[[#"+param+"|"+param+"]]"
elif (cmd.find("image=")==0): elif (cmd.find("image=")==0):
tag_text="{{"+cmd[6:]+"}}" tag_text="{{"+cmd[6:]+"}}"
elif (cmd.find("url=")==0): elif (cmd.find("url=")==0):
tag_text="[["+cmd[4:]+"|" tag_text="[["+cmd[4:]+"|"
elif (cmd=="/url"): elif (cmd=="/url"):
tag_text="]]>" tag_text="]]>"
elif (cmd=="center"): elif (cmd=="center"):
tag_text="" tag_text=""
elif (cmd=="/center"): elif (cmd=="/center"):
tag_text="" tag_text=""
elif (cmd=="br"): elif (cmd=="br"):
tag_text="\\\\\n" tag_text="\\\\\n"
elif (cmd=="i" or cmd=="/i"): elif (cmd=="i" or cmd=="/i"):
tag_text="//" tag_text="//"
elif (cmd=="b" or cmd=="/b"): elif (cmd=="b" or cmd=="/b"):
tag_text="**" tag_text="**"
elif (cmd=="u" or cmd=="/u"): elif (cmd=="u" or cmd=="/u"):
tag_text="__" tag_text="__"
else: else:
tag_text="["+tag_text+"]" tag_text="["+tag_text+"]"
text=pre_text+tag_text+post_text text=pre_text+tag_text+post_text
pos=len(pre_text)+len(tag_text) pos=len(pre_text)+len(tag_text)
#tnode = ET.SubElement(parent,"div") #tnode = ET.SubElement(parent,"div")
#tnode.text=text #tnode.text=text
return text return text
def make_type(t): def make_type(t):
global class_names global class_names
if (t in class_names): if (t in class_names):
return "[["+t.lower()+"|"+t+"]]" return "[["+t.lower()+"|"+t+"]]"
return t return t
def make_method(f,name,m,declare,event=False): def make_method(f,name,m,declare,event=False):
s=" * " s=" * "
ret_type="void" ret_type="void"
args=list(m) args=list(m)
mdata={} mdata={}
mdata["argidx"]=[] mdata["argidx"]=[]
for a in args: for a in args:
if (a.tag=="return"): if (a.tag=="return"):
idx=-1 idx=-1
elif (a.tag=="argument"): elif (a.tag=="argument"):
idx=int(a.attrib["index"]) idx=int(a.attrib["index"])
else: else:
continue continue
mdata["argidx"].append(idx) mdata["argidx"].append(idx)
mdata[idx]=a mdata[idx]=a
if (not event): if (not event):
if (-1 in mdata["argidx"]): if (-1 in mdata["argidx"]):
s+=make_type(mdata[-1].attrib["type"]) s+=make_type(mdata[-1].attrib["type"])
else: else:
s+="void" s+="void"
s+=" " s+=" "
if (declare): if (declare):
#span.attrib["class"]="funcdecl" #span.attrib["class"]="funcdecl"
#a=ET.SubElement(span,"a") #a=ET.SubElement(span,"a")
#a.attrib["name"]=name+"_"+m.attrib["name"] #a.attrib["name"]=name+"_"+m.attrib["name"]
#a.text=name+"::"+m.attrib["name"] #a.text=name+"::"+m.attrib["name"]
s+="**"+m.attrib["name"]+"**" s+="**"+m.attrib["name"]+"**"
else: else:
s+="[[#"+m.attrib["name"]+"|"+m.attrib["name"]+"]]" s+="[[#"+m.attrib["name"]+"|"+m.attrib["name"]+"]]"
s+="**(**" s+="**(**"
argfound=False argfound=False
for a in mdata["argidx"]: for a in mdata["argidx"]:
arg=mdata[a] arg=mdata[a]
if (a<0): if (a<0):
continue continue
if (a>0): if (a>0):
s+=", " s+=", "
else: else:
s+=" " s+=" "
s+=make_type(arg.attrib["type"]) s+=make_type(arg.attrib["type"])
if ("name" in arg.attrib): if ("name" in arg.attrib):
s+=" "+arg.attrib["name"] s+=" "+arg.attrib["name"]
else: else:
s+=" arg"+str(a) s+=" arg"+str(a)
if ("default" in arg.attrib): if ("default" in arg.attrib):
s+="="+arg.attrib["default"] s+="="+arg.attrib["default"]
argfound=True argfound=True
if (argfound): if (argfound):
s+=" " s+=" "
s+="**)**" s+="**)**"
if ("qualifiers" in m.attrib): if ("qualifiers" in m.attrib):
s+=" "+m.attrib["qualifiers"] s+=" "+m.attrib["qualifiers"]
f.write(s+"\n") f.write(s+"\n")
def make_doku_class(node): def make_doku_class(node):
name = node.attrib["name"] name = node.attrib["name"]
f=open(name.lower()+".txt","wb") f=open(name.lower()+".txt","wb")
f.write("====== "+name+" ======\n") f.write("====== "+name+" ======\n")
if ("inherits" in node.attrib): if ("inherits" in node.attrib):
inh=node.attrib["inherits"].strip() inh=node.attrib["inherits"].strip()
f.write("**Inherits:** [["+inh.lower()+"|"+inh+"]]\\\\\n") f.write("**Inherits:** [["+inh.lower()+"|"+inh+"]]\\\\\n")
if ("category" in node.attrib): if ("category" in node.attrib):
f.write("**Category:** "+node.attrib["category"].strip()+"\\\\\n") f.write("**Category:** "+node.attrib["category"].strip()+"\\\\\n")
briefd = node.find("brief_description") briefd = node.find("brief_description")
if (briefd!=None): if (briefd!=None):
f.write("===== Brief Description ======\n") f.write("===== Brief Description ======\n")
f.write( dokuize_text(briefd.text.strip())+"\n" ) f.write( dokuize_text(briefd.text.strip())+"\n" )
methods = node.find("methods") methods = node.find("methods")
if(methods!=None and len(list(methods))>0): if(methods!=None and len(list(methods))>0):
f.write("===== Member Functions ======\n") f.write("===== Member Functions ======\n")
for m in list(methods): for m in list(methods):
make_method(f,node.attrib["name"],m,False) make_method(f,node.attrib["name"],m,False)
events = node.find("signals") events = node.find("signals")
if(events!=None and len(list(events))>0): if(events!=None and len(list(events))>0):
f.write("===== Signals ======\n") f.write("===== Signals ======\n")
for m in list(events): for m in list(events):
make_method(f,node.attrib["name"],m,True,True) make_method(f,node.attrib["name"],m,True,True)
members = node.find("members") members = node.find("members")
if(members!=None and len(list(members))>0): if(members!=None and len(list(members))>0):
f.write("===== Member Variables ======\n") f.write("===== Member Variables ======\n")
for c in list(members): for c in list(members):
s = " * " s = " * "
s+=make_type(c.attrib["type"])+" " s+=make_type(c.attrib["type"])+" "
s+="**"+c.attrib["name"]+"**" s+="**"+c.attrib["name"]+"**"
if (c.text.strip()!=""): if (c.text.strip()!=""):
s+=" - "+c.text.strip() s+=" - "+c.text.strip()
f.write(s+"\n") f.write(s+"\n")
constants = node.find("constants") constants = node.find("constants")
if(constants!=None and len(list(constants))>0): if(constants!=None and len(list(constants))>0):
f.write("===== Numeric Constants ======\n") f.write("===== Numeric Constants ======\n")
for c in list(constants): for c in list(constants):
s = " * " s = " * "
s+="**"+c.attrib["name"]+"**" s+="**"+c.attrib["name"]+"**"
if ("value" in c.attrib): if ("value" in c.attrib):
s+=" = **"+c.attrib["value"]+"**" s+=" = **"+c.attrib["value"]+"**"
if (c.text.strip()!=""): if (c.text.strip()!=""):
s+=" - "+c.text.strip() s+=" - "+c.text.strip()
f.write(s+"\n") f.write(s+"\n")
descr=node.find("description") descr=node.find("description")
if (descr!=None and descr.text.strip()!=""): if (descr!=None and descr.text.strip()!=""):
f.write("===== Description ======\n") f.write("===== Description ======\n")
f.write(dokuize_text(descr.text.strip())+"\n") f.write(dokuize_text(descr.text.strip())+"\n")
methods = node.find("methods") methods = node.find("methods")
if(methods!=None and len(list(methods))>0): if(methods!=None and len(list(methods))>0):
f.write("===== Member Function Description ======\n") f.write("===== Member Function Description ======\n")
for m in list(methods): for m in list(methods):
d=m.find("description") d=m.find("description")
if (d==None or d.text.strip()==""): if (d==None or d.text.strip()==""):
continue continue
f.write("== "+m.attrib["name"]+" ==\n") f.write("== "+m.attrib["name"]+" ==\n")
make_method(f,node.attrib["name"],m,False) make_method(f,node.attrib["name"],m,False)
f.write("\\\\\n") f.write("\\\\\n")
f.write(dokuize_text(d.text.strip())) f.write(dokuize_text(d.text.strip()))
f.write("\n") f.write("\n")
""" """
div=ET.Element("div") div=ET.Element("div")
div.attrib["class"]="class"; div.attrib["class"]="class";
@@ -487,20 +487,20 @@ def make_doku_class(node):
return div return div
""" """
for file in input_list: for file in input_list:
tree = ET.parse(file) tree = ET.parse(file)
doc=tree.getroot() doc=tree.getroot()
if ("version" not in doc.attrib): if ("version" not in doc.attrib):
print("Version missing from 'doc'") print("Version missing from 'doc'")
sys.exit(255) sys.exit(255)
version=doc.attrib["version"] version=doc.attrib["version"]
for c in list(doc): for c in list(doc):
if (c.attrib["name"] in class_names): if (c.attrib["name"] in class_names):
continue continue
class_names.append(c.attrib["name"]) class_names.append(c.attrib["name"])
classes[c.attrib["name"]]=c classes[c.attrib["name"]]=c
class_names.sort() class_names.sort()
@@ -508,7 +508,7 @@ class_names.sort()
make_class_list(class_names,4) make_class_list(class_names,4)
for cn in class_names: for cn in class_names:
c=classes[cn] c=classes[cn]
make_doku_class(c) make_doku_class(c)

File diff suppressed because it is too large Load Diff

View File

@@ -7,17 +7,17 @@ import xml.etree.ElementTree as ET
input_list = [] input_list = []
for arg in sys.argv[1:]: for arg in sys.argv[1:]:
input_list.append(arg) input_list.append(arg)
if len(input_list) < 1: if len(input_list) < 1:
print 'usage: makemd.py <classes.xml>' print 'usage: makemd.py <classes.xml>'
sys.exit(0) sys.exit(0)
def validate_tag(elem, tag): def validate_tag(elem, tag):
if elem.tag != tag: if elem.tag != tag:
print "Tag mismatch, expected '" + tag + "', got " + elem.tag print "Tag mismatch, expected '" + tag + "', got " + elem.tag
sys.exit(255) sys.exit(255)
class_names = [] class_names = []
@@ -26,321 +26,321 @@ classes = {}
def make_class_list(class_list, columns): def make_class_list(class_list, columns):
f = open('class_list.md', 'wb') f = open('class_list.md', 'wb')
prev = 0 prev = 0
col_max = len(class_list) / columns + 1 col_max = len(class_list) / columns + 1
print ('col max is ', col_max) print ('col max is ', col_max)
col_count = 0 col_count = 0
row_count = 0 row_count = 0
last_initial = '' last_initial = ''
fit_columns = [] fit_columns = []
for n in range(0, columns): for n in range(0, columns):
fit_columns += [[]] fit_columns += [[]]
indexers = [] indexers = []
last_initial = '' last_initial = ''
idx = 0 idx = 0
for n in class_list: for n in class_list:
col = idx / col_max col = idx / col_max
if col >= columns: if col >= columns:
col = columns - 1 col = columns - 1
fit_columns[col] += [n] fit_columns[col] += [n]
idx += 1 idx += 1
if n[:1] != last_initial: if n[:1] != last_initial:
indexers += [n] indexers += [n]
last_initial = n[:1] last_initial = n[:1]
row_max = 0 row_max = 0
f.write("\n") f.write("\n")
for n in range(0, columns): for n in range(0, columns):
if len(fit_columns[n]) > row_max: if len(fit_columns[n]) > row_max:
row_max = len(fit_columns[n]) row_max = len(fit_columns[n])
f.write("| ") f.write("| ")
for n in range(0, columns): for n in range(0, columns):
f.write(" | |") f.write(" | |")
f.write("\n") f.write("\n")
f.write("| ") f.write("| ")
for n in range(0, columns): for n in range(0, columns):
f.write(" --- | ------- |") f.write(" --- | ------- |")
f.write("\n") f.write("\n")
for r in range(0, row_max): for r in range(0, row_max):
s = '| ' s = '| '
for c in range(0, columns): for c in range(0, columns):
if r >= len(fit_columns[c]): if r >= len(fit_columns[c]):
continue continue
classname = fit_columns[c][r] classname = fit_columns[c][r]
initial = classname[0] initial = classname[0]
if classname in indexers: if classname in indexers:
s += '**' + initial + '** | ' s += '**' + initial + '** | '
else: else:
s += ' | ' s += ' | '
s += '[' + classname + '](class_'+ classname.lower()+') | ' s += '[' + classname + '](class_'+ classname.lower()+') | '
s += '\n' s += '\n'
f.write(s) f.write(s)
def dokuize_text(txt): def dokuize_text(txt):
return txt return txt
def dokuize_text(text): def dokuize_text(text):
pos = 0 pos = 0
while True: while True:
pos = text.find('[', pos) pos = text.find('[', pos)
if pos == -1: if pos == -1:
break break
endq_pos = text.find(']', pos + 1) endq_pos = text.find(']', pos + 1)
if endq_pos == -1: if endq_pos == -1:
break break
pre_text = text[:pos] pre_text = text[:pos]
post_text = text[endq_pos + 1:] post_text = text[endq_pos + 1:]
tag_text = text[pos + 1:endq_pos] tag_text = text[pos + 1:endq_pos]
if tag_text in class_names: if tag_text in class_names:
tag_text = make_type(tag_text) tag_text = make_type(tag_text)
else: else:
# command # command
cmd = tag_text cmd = tag_text
space_pos = tag_text.find(' ') space_pos = tag_text.find(' ')
if cmd.find('html') == 0: if cmd.find('html') == 0:
cmd = tag_text[:space_pos] cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:] param = tag_text[space_pos + 1:]
tag_text = '<' + param + '>' tag_text = '<' + param + '>'
elif cmd.find('method') == 0: elif cmd.find('method') == 0:
cmd = tag_text[:space_pos] cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:] param = tag_text[space_pos + 1:]
if param.find('.') != -1: if param.find('.') != -1:
(class_param, method_param) = param.split('.') (class_param, method_param) = param.split('.')
tag_text = '['+class_param+'.'+method_param.replace("_","&#95;")+'](' + class_param.lower() + '#' \ tag_text = '['+class_param+'.'+method_param.replace("_","&#95;")+'](' + class_param.lower() + '#' \
+ method_param + ')' + method_param + ')'
else: else:
tag_text = '[' + param.replace("_","&#95;") + '](#' + param + ')' tag_text = '[' + param.replace("_","&#95;") + '](#' + param + ')'
elif cmd.find('image=') == 0: elif cmd.find('image=') == 0:
tag_text = '![](' + cmd[6:] + ')' tag_text = '![](' + cmd[6:] + ')'
elif cmd.find('url=') == 0: elif cmd.find('url=') == 0:
tag_text = '[' + cmd[4:] + ']('+cmd[4:] tag_text = '[' + cmd[4:] + ']('+cmd[4:]
elif cmd == '/url': elif cmd == '/url':
tag_text = ')' tag_text = ')'
elif cmd == 'center': elif cmd == 'center':
tag_text = '' tag_text = ''
elif cmd == '/center': elif cmd == '/center':
tag_text = '' tag_text = ''
elif cmd == 'br': elif cmd == 'br':
tag_text = '\n' tag_text = '\n'
elif cmd == 'i' or cmd == '/i': elif cmd == 'i' or cmd == '/i':
tag_text = '_' tag_text = '_'
elif cmd == 'b' or cmd == '/b': elif cmd == 'b' or cmd == '/b':
tag_text = '**' tag_text = '**'
elif cmd == 'u' or cmd == '/u': elif cmd == 'u' or cmd == '/u':
tag_text = '__' tag_text = '__'
else: else:
tag_text = '[' + tag_text + ']' tag_text = '[' + tag_text + ']'
text = pre_text + tag_text + post_text text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text) pos = len(pre_text) + len(tag_text)
# tnode = ET.SubElement(parent,"div") # tnode = ET.SubElement(parent,"div")
# tnode.text=text # tnode.text=text
return text return text
def make_type(t): def make_type(t):
global class_names global class_names
if t in class_names: if t in class_names:
return '[' + t + '](class_' + t.lower() + ')' return '[' + t + '](class_' + t.lower() + ')'
return t return t
def make_method( def make_method(
f, f,
name, name,
m, m,
declare, declare,
event=False, event=False,
): ):
s = ' * ' s = ' * '
ret_type = 'void' ret_type = 'void'
args = list(m) args = list(m)
mdata = {} mdata = {}
mdata['argidx'] = [] mdata['argidx'] = []
for a in args: for a in args:
if a.tag == 'return': if a.tag == 'return':
idx = -1 idx = -1
elif a.tag == 'argument': elif a.tag == 'argument':
idx = int(a.attrib['index']) idx = int(a.attrib['index'])
else: else:
continue continue
mdata['argidx'].append(idx) mdata['argidx'].append(idx)
mdata[idx] = a mdata[idx] = a
if not event: if not event:
if -1 in mdata['argidx']: if -1 in mdata['argidx']:
s += make_type(mdata[-1].attrib['type']) s += make_type(mdata[-1].attrib['type'])
else: else:
s += 'void' s += 'void'
s += ' ' s += ' '
if declare: if declare:
# span.attrib["class"]="funcdecl" # span.attrib["class"]="funcdecl"
# a=ET.SubElement(span,"a") # a=ET.SubElement(span,"a")
# a.attrib["name"]=name+"_"+m.attrib["name"] # a.attrib["name"]=name+"_"+m.attrib["name"]
# a.text=name+"::"+m.attrib["name"] # a.text=name+"::"+m.attrib["name"]
s += ' **'+m.attrib['name'].replace("_","&#95;")+'** ' s += ' **'+m.attrib['name'].replace("_","&#95;")+'** '
else: else:
s += ' **['+ m.attrib['name'].replace("_","&#95;")+'](#' + m.attrib['name'] + ')** ' s += ' **['+ m.attrib['name'].replace("_","&#95;")+'](#' + m.attrib['name'] + ')** '
s += ' **(**' s += ' **(**'
argfound = False argfound = False
for a in mdata['argidx']: for a in mdata['argidx']:
arg = mdata[a] arg = mdata[a]
if a < 0: if a < 0:
continue continue
if a > 0: if a > 0:
s += ', ' s += ', '
else: else:
s += ' ' s += ' '
s += make_type(arg.attrib['type']) s += make_type(arg.attrib['type'])
if 'name' in arg.attrib: if 'name' in arg.attrib:
s += ' ' + arg.attrib['name'] s += ' ' + arg.attrib['name']
else: else:
s += ' arg' + str(a) s += ' arg' + str(a)
if 'default' in arg.attrib: if 'default' in arg.attrib:
s += '=' + arg.attrib['default'] s += '=' + arg.attrib['default']
argfound = True argfound = True
if argfound: if argfound:
s += ' ' s += ' '
s += ' **)**' s += ' **)**'
if 'qualifiers' in m.attrib: if 'qualifiers' in m.attrib:
s += ' ' + m.attrib['qualifiers'] s += ' ' + m.attrib['qualifiers']
f.write(s + '\n') f.write(s + '\n')
def make_doku_class(node): def make_doku_class(node):
name = node.attrib['name'] name = node.attrib['name']
f = open("class_"+name.lower() + '.md', 'wb') f = open("class_"+name.lower() + '.md', 'wb')
f.write('# ' + name + ' \n') f.write('# ' + name + ' \n')
if 'inherits' in node.attrib: if 'inherits' in node.attrib:
inh = node.attrib['inherits'].strip() inh = node.attrib['inherits'].strip()
f.write('####**Inherits:** '+make_type(inh)+'\n') f.write('####**Inherits:** '+make_type(inh)+'\n')
if 'category' in node.attrib: if 'category' in node.attrib:
f.write('####**Category:** ' + node.attrib['category'].strip() f.write('####**Category:** ' + node.attrib['category'].strip()
+ '\n') + '\n')
briefd = node.find('brief_description') briefd = node.find('brief_description')
if briefd != None: if briefd != None:
f.write('\n### Brief Description \n') f.write('\n### Brief Description \n')
f.write(dokuize_text(briefd.text.strip()) + '\n') f.write(dokuize_text(briefd.text.strip()) + '\n')
methods = node.find('methods') methods = node.find('methods')
if methods != None and len(list(methods)) > 0: if methods != None and len(list(methods)) > 0:
f.write('\n### Member Functions \n') f.write('\n### Member Functions \n')
for m in list(methods): for m in list(methods):
make_method(f, node.attrib['name'], m, False) make_method(f, node.attrib['name'], m, False)
events = node.find('signals') events = node.find('signals')
if events != None and len(list(events)) > 0: if events != None and len(list(events)) > 0:
f.write('\n### Signals \n') f.write('\n### Signals \n')
for m in list(events): for m in list(events):
make_method(f, node.attrib['name'], m, True, True) make_method(f, node.attrib['name'], m, True, True)
members = node.find('members') members = node.find('members')
if members != None and len(list(members)) > 0: if members != None and len(list(members)) > 0:
f.write('\n### Member Variables \n') f.write('\n### Member Variables \n')
for c in list(members): for c in list(members):
s = ' * ' s = ' * '
s += make_type(c.attrib['type']) + ' ' s += make_type(c.attrib['type']) + ' '
s += '**' + c.attrib['name'] + '**' s += '**' + c.attrib['name'] + '**'
if c.text.strip() != '': if c.text.strip() != '':
s += ' - ' + c.text.strip() s += ' - ' + c.text.strip()
f.write(s + '\n') f.write(s + '\n')
constants = node.find('constants') constants = node.find('constants')
if constants != None and len(list(constants)) > 0: if constants != None and len(list(constants)) > 0:
f.write('\n### Numeric Constants \n') f.write('\n### Numeric Constants \n')
for c in list(constants): for c in list(constants):
s = ' * ' s = ' * '
s += '**' + c.attrib['name'] + '**' s += '**' + c.attrib['name'] + '**'
if 'value' in c.attrib: if 'value' in c.attrib:
s += ' = **' + c.attrib['value'] + '**' s += ' = **' + c.attrib['value'] + '**'
if c.text.strip() != '': if c.text.strip() != '':
s += ' - ' + c.text.strip() s += ' - ' + c.text.strip()
f.write(s + '\n') f.write(s + '\n')
descr = node.find('description') descr = node.find('description')
if descr != None and descr.text.strip() != '': if descr != None and descr.text.strip() != '':
f.write('\n### Description \n') f.write('\n### Description \n')
f.write(dokuize_text(descr.text.strip()) + '\n') f.write(dokuize_text(descr.text.strip()) + '\n')
methods = node.find('methods') methods = node.find('methods')
if methods != None and len(list(methods)) > 0: if methods != None and len(list(methods)) > 0:
f.write('\n### Member Function Description \n') f.write('\n### Member Function Description \n')
for m in list(methods): for m in list(methods):
d = m.find('description') d = m.find('description')
if d == None or d.text.strip() == '': if d == None or d.text.strip() == '':
continue continue
f.write('\n#### <a name="'+m.attrib['name']+'">' + m.attrib['name'] + '</a>\n') f.write('\n#### <a name="'+m.attrib['name']+'">' + m.attrib['name'] + '</a>\n')
make_method(f, node.attrib['name'], m, True) make_method(f, node.attrib['name'], m, True)
f.write('\n') f.write('\n')
f.write(dokuize_text(d.text.strip())) f.write(dokuize_text(d.text.strip()))
f.write('\n') f.write('\n')
for file in input_list: for file in input_list:
tree = ET.parse(file) tree = ET.parse(file)
doc = tree.getroot() doc = tree.getroot()
if 'version' not in doc.attrib: if 'version' not in doc.attrib:
print "Version missing from 'doc'" print "Version missing from 'doc'"
sys.exit(255) sys.exit(255)
version = doc.attrib['version'] version = doc.attrib['version']
for c in list(doc): for c in list(doc):
if c.attrib['name'] in class_names: if c.attrib['name'] in class_names:
continue continue
class_names.append(c.attrib['name']) class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c classes[c.attrib['name']] = c
class_names.sort() class_names.sort()
make_class_list(class_names, 2) make_class_list(class_names, 2)
for cn in class_names: for cn in class_names:
c = classes[cn] c = classes[cn]
make_doku_class(c) make_doku_class(c)

View File

@@ -8,505 +8,505 @@ import xml.etree.ElementTree as ET
input_list = [] input_list = []
for arg in sys.argv[1:]: for arg in sys.argv[1:]:
input_list.append(arg) input_list.append(arg)
if len(input_list) < 1: if len(input_list) < 1:
print 'usage: makerst.py <classes.xml>' print 'usage: makerst.py <classes.xml>'
sys.exit(0) sys.exit(0)
def validate_tag(elem, tag): def validate_tag(elem, tag):
if elem.tag != tag: if elem.tag != tag:
print "Tag mismatch, expected '" + tag + "', got " + elem.tag print "Tag mismatch, expected '" + tag + "', got " + elem.tag
sys.exit(255) sys.exit(255)
class_names = [] class_names = []
classes = {} classes = {}
def ul_string(str,ul): def ul_string(str,ul):
str+="\n" str+="\n"
for i in range(len(str)-1): for i in range(len(str)-1):
str+=ul str+=ul
str+="\n" str+="\n"
return str return str
def make_class_list(class_list, columns): def make_class_list(class_list, columns):
f = codecs.open('class_list.rst', 'wb', 'utf-8') f = codecs.open('class_list.rst', 'wb', 'utf-8')
prev = 0 prev = 0
col_max = len(class_list) / columns + 1 col_max = len(class_list) / columns + 1
print ('col max is ', col_max) print ('col max is ', col_max)
col_count = 0 col_count = 0
row_count = 0 row_count = 0
last_initial = '' last_initial = ''
fit_columns = [] fit_columns = []
for n in range(0, columns): for n in range(0, columns):
fit_columns += [[]] fit_columns += [[]]
indexers = [] indexers = []
last_initial = '' last_initial = ''
idx = 0 idx = 0
for n in class_list: for n in class_list:
col = idx / col_max col = idx / col_max
if col >= columns: if col >= columns:
col = columns - 1 col = columns - 1
fit_columns[col] += [n] fit_columns[col] += [n]
idx += 1 idx += 1
if n[:1] != last_initial: if n[:1] != last_initial:
indexers += [n] indexers += [n]
last_initial = n[:1] last_initial = n[:1]
row_max = 0 row_max = 0
f.write("\n") f.write("\n")
for n in range(0, columns): for n in range(0, columns):
if len(fit_columns[n]) > row_max: if len(fit_columns[n]) > row_max:
row_max = len(fit_columns[n]) row_max = len(fit_columns[n])
f.write("| ") f.write("| ")
for n in range(0, columns): for n in range(0, columns):
f.write(" | |") f.write(" | |")
f.write("\n") f.write("\n")
f.write("+") f.write("+")
for n in range(0, columns): for n in range(0, columns):
f.write("--+-------+") f.write("--+-------+")
f.write("\n") f.write("\n")
for r in range(0, row_max): for r in range(0, row_max):
s = '+ ' s = '+ '
for c in range(0, columns): for c in range(0, columns):
if r >= len(fit_columns[c]): if r >= len(fit_columns[c]):
continue continue
classname = fit_columns[c][r] classname = fit_columns[c][r]
initial = classname[0] initial = classname[0]
if classname in indexers: if classname in indexers:
s += '**' + initial + '** | ' s += '**' + initial + '** | '
else: else:
s += ' | ' s += ' | '
s += '[' + classname + '](class_'+ classname.lower()+') | ' s += '[' + classname + '](class_'+ classname.lower()+') | '
s += '\n' s += '\n'
f.write(s) f.write(s)
for n in range(0, columns): for n in range(0, columns):
f.write("--+-------+") f.write("--+-------+")
f.write("\n") f.write("\n")
def rstize_text(text,cclass): def rstize_text(text,cclass):
# Linebreak + tabs in the XML should become two line breaks unless in a "codeblock" # Linebreak + tabs in the XML should become two line breaks unless in a "codeblock"
pos = 0 pos = 0
while True: while True:
pos = text.find('\n', pos) pos = text.find('\n', pos)
if pos == -1: if pos == -1:
break break
pre_text = text[:pos] pre_text = text[:pos]
while text[pos+1] == '\t': while text[pos+1] == '\t':
pos += 1 pos += 1
post_text = text[pos+1:] post_text = text[pos+1:]
# Handle codeblocks # Handle codeblocks
if post_text.startswith("[codeblock]"): if post_text.startswith("[codeblock]"):
end_pos = post_text.find("[/codeblock]") end_pos = post_text.find("[/codeblock]")
if end_pos == -1: if end_pos == -1:
sys.exit("ERROR! [codeblock] without a closing tag!") sys.exit("ERROR! [codeblock] without a closing tag!")
code_text = post_text[len("[codeblock]"):end_pos] code_text = post_text[len("[codeblock]"):end_pos]
post_text = post_text[end_pos:] post_text = post_text[end_pos:]
# Remove extraneous tabs # Remove extraneous tabs
code_pos = 0 code_pos = 0
while True: while True:
code_pos = code_text.find('\n', code_pos) code_pos = code_text.find('\n', code_pos)
if code_pos == -1: if code_pos == -1:
break break
to_skip = 0 to_skip = 0
while code_pos+to_skip+1 < len(code_text) and code_text[code_pos+to_skip+1] == '\t': while code_pos+to_skip+1 < len(code_text) and code_text[code_pos+to_skip+1] == '\t':
to_skip += 1 to_skip += 1
if len(code_text[code_pos+to_skip+1:])==0: if len(code_text[code_pos+to_skip+1:])==0:
code_text = code_text[:code_pos] + "\n" code_text = code_text[:code_pos] + "\n"
code_pos += 1 code_pos += 1
else: else:
code_text = code_text[:code_pos] + "\n " + code_text[code_pos+to_skip+1:] code_text = code_text[:code_pos] + "\n " + code_text[code_pos+to_skip+1:]
code_pos += 5 - to_skip code_pos += 5 - to_skip
text = pre_text + "\n[codeblock]" + code_text + post_text text = pre_text + "\n[codeblock]" + code_text + post_text
pos += len("\n[codeblock]" + code_text) pos += len("\n[codeblock]" + code_text)
# Handle normal text # Handle normal text
else: else:
text = pre_text + "\n\n" + post_text text = pre_text + "\n\n" + post_text
pos += 2 pos += 2
# Escape * character to avoid interpreting it as emphasis # Escape * character to avoid interpreting it as emphasis
pos = 0 pos = 0
while True: while True:
pos = text.find('*', pos) pos = text.find('*', pos)
if pos == -1: if pos == -1:
break break
text = text[:pos] + "\*" + text[pos + 1:] text = text[:pos] + "\*" + text[pos + 1:]
pos += 2 pos += 2
# Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink # Escape _ character at the end of a word to avoid interpreting it as an inline hyperlink
pos = 0 pos = 0
while True: while True:
pos = text.find('_', pos) pos = text.find('_', pos)
if pos == -1: if pos == -1:
break break
if not text[pos + 1].isalnum(): # don't escape within a snake_case word if not text[pos + 1].isalnum(): # don't escape within a snake_case word
text = text[:pos] + "\_" + text[pos + 1:] text = text[:pos] + "\_" + text[pos + 1:]
pos += 2 pos += 2
else: else:
pos += 1 pos += 1
# Handle [tags] # Handle [tags]
pos = 0 pos = 0
while True: while True:
pos = text.find('[', pos) pos = text.find('[', pos)
if pos == -1: if pos == -1:
break break
endq_pos = text.find(']', pos + 1) endq_pos = text.find(']', pos + 1)
if endq_pos == -1: if endq_pos == -1:
break break
pre_text = text[:pos] pre_text = text[:pos]
post_text = text[endq_pos + 1:] post_text = text[endq_pos + 1:]
tag_text = text[pos + 1:endq_pos] tag_text = text[pos + 1:endq_pos]
if tag_text in class_names: if tag_text in class_names:
tag_text = make_type(tag_text) tag_text = make_type(tag_text)
else: # command else: # command
cmd = tag_text cmd = tag_text
space_pos = tag_text.find(' ') space_pos = tag_text.find(' ')
if cmd.find('html') == 0: if cmd.find('html') == 0:
cmd = tag_text[:space_pos] cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:] param = tag_text[space_pos + 1:]
tag_text = param tag_text = param
elif cmd.find('method') == 0: elif cmd.find('method') == 0:
cmd = tag_text[:space_pos] cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:] param = tag_text[space_pos + 1:]
if param.find('.') != -1: if param.find('.') != -1:
(class_param, method_param) = param.split('.') (class_param, method_param) = param.split('.')
tag_text = ':ref:`'+class_param+'.'+method_param+'<class_' + class_param + '_' + method_param + '>`' tag_text = ':ref:`'+class_param+'.'+method_param+'<class_' + class_param + '_' + method_param + '>`'
else: else:
tag_text = ':ref:`' + param + '<class_' + cclass +"_"+ param + '>`' tag_text = ':ref:`' + param + '<class_' + cclass +"_"+ param + '>`'
elif cmd.find('image=') == 0: elif cmd.find('image=') == 0:
tag_text = "" #'![](' + cmd[6:] + ')' tag_text = "" #'![](' + cmd[6:] + ')'
elif cmd.find('url=') == 0: elif cmd.find('url=') == 0:
tag_text = ':ref:`' + cmd[4:] + '<'+cmd[4:]+">`" tag_text = ':ref:`' + cmd[4:] + '<'+cmd[4:]+">`"
elif cmd == '/url': elif cmd == '/url':
tag_text = ')' tag_text = ')'
elif cmd == 'center': elif cmd == 'center':
tag_text = '' tag_text = ''
elif cmd == '/center': elif cmd == '/center':
tag_text = '' tag_text = ''
elif cmd == 'codeblock': elif cmd == 'codeblock':
tag_text = '\n::\n' tag_text = '\n::\n'
elif cmd == '/codeblock': elif cmd == '/codeblock':
tag_text = '' tag_text = ''
# Strip newline if the tag was alone on one # Strip newline if the tag was alone on one
if pre_text[-1] == '\n': if pre_text[-1] == '\n':
pre_text = pre_text[:-1] pre_text = pre_text[:-1]
elif cmd == 'br': elif cmd == 'br':
# Make a new paragraph instead of a linebreak, rst is not so linebreak friendly # Make a new paragraph instead of a linebreak, rst is not so linebreak friendly
tag_text = '\n\n' tag_text = '\n\n'
# Strip potential leading spaces # Strip potential leading spaces
while post_text[0] == ' ': while post_text[0] == ' ':
post_text = post_text[1:] post_text = post_text[1:]
elif cmd == 'i' or cmd == '/i': elif cmd == 'i' or cmd == '/i':
tag_text = '*' tag_text = '*'
elif cmd == 'b' or cmd == '/b': elif cmd == 'b' or cmd == '/b':
tag_text = '**' tag_text = '**'
elif cmd == 'u' or cmd == '/u': elif cmd == 'u' or cmd == '/u':
tag_text = '' tag_text = ''
elif cmd == 'code' or cmd == '/code': elif cmd == 'code' or cmd == '/code':
tag_text = '``' tag_text = '``'
else: else:
tag_text = ':ref:`' + tag_text + '<class_'+tag_text.lower()+'>`' tag_text = ':ref:`' + tag_text + '<class_'+tag_text.lower()+'>`'
text = pre_text + tag_text + post_text text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text) pos = len(pre_text) + len(tag_text)
# tnode = ET.SubElement(parent,"div") # tnode = ET.SubElement(parent,"div")
# tnode.text=text # tnode.text=text
return text return text
def make_type(t): def make_type(t):
global class_names global class_names
if t in class_names: if t in class_names:
return ':ref:`'+t+'<class_' + t.lower()+'>`' return ':ref:`'+t+'<class_' + t.lower()+'>`'
return t return t
def make_method( def make_method(
f, f,
name, name,
m, m,
declare, declare,
cname, cname,
event=False, event=False,
pp=None pp=None
): ):
if (declare or pp==None): if (declare or pp==None):
t = '- ' t = '- '
else: else:
t = "" t = ""
ret_type = 'void' ret_type = 'void'
args = list(m) args = list(m)
mdata = {} mdata = {}
mdata['argidx'] = [] mdata['argidx'] = []
for a in args: for a in args:
if a.tag == 'return': if a.tag == 'return':
idx = -1 idx = -1
elif a.tag == 'argument': elif a.tag == 'argument':
idx = int(a.attrib['index']) idx = int(a.attrib['index'])
else: else:
continue continue
mdata['argidx'].append(idx) mdata['argidx'].append(idx)
mdata[idx] = a mdata[idx] = a
if not event: if not event:
if -1 in mdata['argidx']: if -1 in mdata['argidx']:
t += make_type(mdata[-1].attrib['type']) t += make_type(mdata[-1].attrib['type'])
else: else:
t += 'void' t += 'void'
t += ' ' t += ' '
if declare or pp==None: if declare or pp==None:
# span.attrib["class"]="funcdecl" # span.attrib["class"]="funcdecl"
# a=ET.SubElement(span,"a") # a=ET.SubElement(span,"a")
# a.attrib["name"]=name+"_"+m.attrib["name"] # a.attrib["name"]=name+"_"+m.attrib["name"]
# a.text=name+"::"+m.attrib["name"] # a.text=name+"::"+m.attrib["name"]
s = ' **'+m.attrib['name']+'** ' s = ' **'+m.attrib['name']+'** '
else: else:
s = ':ref:`'+ m.attrib['name']+'<class_' + cname+"_"+m.attrib['name'] + '>` ' s = ':ref:`'+ m.attrib['name']+'<class_' + cname+"_"+m.attrib['name'] + '>` '
s += ' **(**' s += ' **(**'
argfound = False argfound = False
for a in mdata['argidx']: for a in mdata['argidx']:
arg = mdata[a] arg = mdata[a]
if a < 0: if a < 0:
continue continue
if a > 0: if a > 0:
s += ', ' s += ', '
else: else:
s += ' ' s += ' '
s += make_type(arg.attrib['type']) s += make_type(arg.attrib['type'])
if 'name' in arg.attrib: if 'name' in arg.attrib:
s += ' ' + arg.attrib['name'] s += ' ' + arg.attrib['name']
else: else:
s += ' arg' + str(a) s += ' arg' + str(a)
if 'default' in arg.attrib: if 'default' in arg.attrib:
s += '=' + arg.attrib['default'] s += '=' + arg.attrib['default']
argfound = True argfound = True
if argfound: if argfound:
s += ' ' s += ' '
s += ' **)**' s += ' **)**'
if 'qualifiers' in m.attrib: if 'qualifiers' in m.attrib:
s += ' ' + m.attrib['qualifiers'] s += ' ' + m.attrib['qualifiers']
# f.write(s) # f.write(s)
if (not declare): if (not declare):
if (pp!=None): if (pp!=None):
pp.append( (t,s) ) pp.append( (t,s) )
else: else:
f.write("- "+t+" "+s+"\n") f.write("- "+t+" "+s+"\n")
else: else:
f.write(t+s+"\n") f.write(t+s+"\n")
def make_heading(title, underline): def make_heading(title, underline):
return title + '\n' + underline*len(title) + "\n\n" return title + '\n' + underline*len(title) + "\n\n"
def make_rst_class(node): def make_rst_class(node):
name = node.attrib['name'] name = node.attrib['name']
f = codecs.open("class_"+name.lower() + '.rst', 'wb', 'utf-8') f = codecs.open("class_"+name.lower() + '.rst', 'wb', 'utf-8')
# Warn contributors not to edit this file directly # Warn contributors not to edit this file directly
f.write(".. Generated automatically by doc/tools/makerst.py in Godot's source tree.\n") f.write(".. Generated automatically by doc/tools/makerst.py in Godot's source tree.\n")
f.write(".. DO NOT EDIT THIS FILE, but the doc/base/classes.xml source instead.\n\n") f.write(".. DO NOT EDIT THIS FILE, but the doc/base/classes.xml source instead.\n\n")
f.write(".. _class_"+name+":\n\n") f.write(".. _class_"+name+":\n\n")
f.write(make_heading(name, '=')) f.write(make_heading(name, '='))
if 'inherits' in node.attrib: if 'inherits' in node.attrib:
inh = node.attrib['inherits'].strip() inh = node.attrib['inherits'].strip()
# whle inh in classes[cn] # whle inh in classes[cn]
f.write('**Inherits:** ') f.write('**Inherits:** ')
first=True first=True
while(inh in classes): while(inh in classes):
if (not first): if (not first):
f.write(" **<** ") f.write(" **<** ")
else: else:
first=False first=False
f.write(make_type(inh)) f.write(make_type(inh))
inode = classes[inh] inode = classes[inh]
if ('inherits' in inode.attrib): if ('inherits' in inode.attrib):
inh=inode.attrib['inherits'].strip() inh=inode.attrib['inherits'].strip()
else: else:
inh=None inh=None
f.write("\n\n") f.write("\n\n")
inherited=[] inherited=[]
for cn in classes: for cn in classes:
c=classes[cn] c=classes[cn]
if 'inherits' in c.attrib: if 'inherits' in c.attrib:
if (c.attrib['inherits'].strip()==name): if (c.attrib['inherits'].strip()==name):
inherited.append(c.attrib['name']) inherited.append(c.attrib['name'])
if (len(inherited)): if (len(inherited)):
f.write('**Inherited By:** ') f.write('**Inherited By:** ')
for i in range(len(inherited)): for i in range(len(inherited)):
if (i>0): if (i>0):
f.write(", ") f.write(", ")
f.write(make_type(inherited[i])) f.write(make_type(inherited[i]))
f.write("\n\n") f.write("\n\n")
if 'category' in node.attrib: if 'category' in node.attrib:
f.write('**Category:** ' + node.attrib['category'].strip() + "\n\n") f.write('**Category:** ' + node.attrib['category'].strip() + "\n\n")
f.write(make_heading('Brief Description', '-')) f.write(make_heading('Brief Description', '-'))
briefd = node.find('brief_description') briefd = node.find('brief_description')
if briefd != None: if briefd != None:
f.write(rstize_text(briefd.text.strip(),name) + "\n\n") f.write(rstize_text(briefd.text.strip(),name) + "\n\n")
methods = node.find('methods') methods = node.find('methods')
if methods != None and len(list(methods)) > 0: if methods != None and len(list(methods)) > 0:
f.write(make_heading('Member Functions', '-')) f.write(make_heading('Member Functions', '-'))
ml=[] ml=[]
for m in list(methods): for m in list(methods):
make_method(f, node.attrib['name'], m, False,name,False,ml) make_method(f, node.attrib['name'], m, False,name,False,ml)
longest_t = 0 longest_t = 0
longest_s = 0 longest_s = 0
for s in ml: for s in ml:
sl = len(s[0]) sl = len(s[0])
if (sl>longest_s): if (sl>longest_s):
longest_s=sl longest_s=sl
tl = len(s[1]) tl = len(s[1])
if (tl>longest_t): if (tl>longest_t):
longest_t=tl longest_t=tl
sep="+" sep="+"
for i in range(longest_s+2): for i in range(longest_s+2):
sep+="-" sep+="-"
sep+="+" sep+="+"
for i in range(longest_t+2): for i in range(longest_t+2):
sep+="-" sep+="-"
sep+="+\n" sep+="+\n"
f.write(sep) f.write(sep)
for s in ml: for s in ml:
rt = s[0] rt = s[0]
while( len(rt) < longest_s ): while( len(rt) < longest_s ):
rt+=" " rt+=" "
st = s[1] st = s[1]
while( len(st) < longest_t ): while( len(st) < longest_t ):
st+=" " st+=" "
f.write("| "+rt+" | "+st+" |\n") f.write("| "+rt+" | "+st+" |\n")
f.write(sep) f.write(sep)
f.write('\n') f.write('\n')
events = node.find('signals') events = node.find('signals')
if events != None and len(list(events)) > 0: if events != None and len(list(events)) > 0:
f.write(make_heading('Signals', '-')) f.write(make_heading('Signals', '-'))
for m in list(events): for m in list(events):
make_method(f, node.attrib['name'], m, True,name, True) make_method(f, node.attrib['name'], m, True,name, True)
f.write('\n') f.write('\n')
members = node.find('members') members = node.find('members')
if members != None and len(list(members)) > 0: if members != None and len(list(members)) > 0:
f.write(make_heading('Member Variables', '-')) f.write(make_heading('Member Variables', '-'))
for c in list(members): for c in list(members):
s = '- ' s = '- '
s += make_type(c.attrib['type']) + ' ' s += make_type(c.attrib['type']) + ' '
s += '**' + c.attrib['name'] + '**' s += '**' + c.attrib['name'] + '**'
if c.text.strip() != '': if c.text.strip() != '':
s += ' - ' + c.text.strip() s += ' - ' + c.text.strip()
f.write(s + '\n') f.write(s + '\n')
f.write('\n') f.write('\n')
constants = node.find('constants') constants = node.find('constants')
if constants != None and len(list(constants)) > 0: if constants != None and len(list(constants)) > 0:
f.write(make_heading('Numeric Constants', '-')) f.write(make_heading('Numeric Constants', '-'))
for c in list(constants): for c in list(constants):
s = '- ' s = '- '
s += '**' + c.attrib['name'] + '**' s += '**' + c.attrib['name'] + '**'
if 'value' in c.attrib: if 'value' in c.attrib:
s += ' = **' + c.attrib['value'] + '**' s += ' = **' + c.attrib['value'] + '**'
if c.text.strip() != '': if c.text.strip() != '':
s += ' --- ' + rstize_text(c.text.strip(),name) s += ' --- ' + rstize_text(c.text.strip(),name)
f.write(s + '\n') f.write(s + '\n')
f.write('\n') f.write('\n')
descr = node.find('description') descr = node.find('description')
if descr != None and descr.text.strip() != '': if descr != None and descr.text.strip() != '':
f.write(make_heading('Description', '-')) f.write(make_heading('Description', '-'))
f.write(rstize_text(descr.text.strip(),name) + "\n\n") f.write(rstize_text(descr.text.strip(),name) + "\n\n")
methods = node.find('methods') methods = node.find('methods')
if methods != None and len(list(methods)) > 0: if methods != None and len(list(methods)) > 0:
f.write(make_heading('Member Function Description', '-')) f.write(make_heading('Member Function Description', '-'))
for m in list(methods): for m in list(methods):
f.write(".. _class_"+name+"_"+m.attrib['name']+":\n\n") f.write(".. _class_"+name+"_"+m.attrib['name']+":\n\n")
# f.write(ul_string(m.attrib['name'],"^")) # f.write(ul_string(m.attrib['name'],"^"))
#f.write('\n<a name="'+m.attrib['name']+'">' + m.attrib['name'] + '</a>\n------\n') #f.write('\n<a name="'+m.attrib['name']+'">' + m.attrib['name'] + '</a>\n------\n')
make_method(f, node.attrib['name'], m, True,name) make_method(f, node.attrib['name'], m, True,name)
f.write('\n') f.write('\n')
d = m.find('description') d = m.find('description')
if d == None or d.text.strip() == '': if d == None or d.text.strip() == '':
continue continue
f.write(rstize_text(d.text.strip(),name)) f.write(rstize_text(d.text.strip(),name))
f.write("\n\n") f.write("\n\n")
f.write('\n') f.write('\n')
for file in input_list: for file in input_list:
tree = ET.parse(file) tree = ET.parse(file)
doc = tree.getroot() doc = tree.getroot()
if 'version' not in doc.attrib: if 'version' not in doc.attrib:
print "Version missing from 'doc'" print "Version missing from 'doc'"
sys.exit(255) sys.exit(255)
version = doc.attrib['version'] version = doc.attrib['version']
for c in list(doc): for c in list(doc):
if c.attrib['name'] in class_names: if c.attrib['name'] in class_names:
continue continue
class_names.append(c.attrib['name']) class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c classes[c.attrib['name']] = c
class_names.sort() class_names.sort()
@@ -514,6 +514,6 @@ class_names.sort()
#make_class_list(class_names, 2) #make_class_list(class_names, 2)
for cn in class_names: for cn in class_names:
c = classes[cn] c = classes[cn]
make_rst_class(c) make_rst_class(c)

16
drivers/SCsub vendored
View File

@@ -5,7 +5,7 @@ Import('env')
env.drivers_sources=[] env.drivers_sources=[]
if ("builtin_zlib" in env and env["builtin_zlib"] == "yes"): if ("builtin_zlib" in env and env["builtin_zlib"] == "yes"):
SConscript("zlib/SCsub"); SConscript("zlib/SCsub");
# OS drivers # OS drivers
SConscript('unix/SCsub'); SConscript('unix/SCsub');
@@ -15,7 +15,7 @@ SConscript('windows/SCsub');
SConscript('alsa/SCsub'); SConscript('alsa/SCsub');
SConscript('pulseaudio/SCsub'); SConscript('pulseaudio/SCsub');
if (env["platform"] == "windows"): if (env["platform"] == "windows"):
SConscript("rtaudio/SCsub"); SConscript("rtaudio/SCsub");
# Graphics drivers # Graphics drivers
SConscript('gles2/SCsub'); SConscript('gles2/SCsub');
@@ -28,14 +28,14 @@ SConscript("nrex/SCsub");
# Tools override # Tools override
# FIXME: Should likely be integrated in the tools/ codebase # FIXME: Should likely be integrated in the tools/ codebase
if (env["tools"]=="yes"): if (env["tools"]=="yes"):
SConscript("convex_decomp/SCsub"); SConscript("convex_decomp/SCsub");
if env['vsproj']=="yes": if env['vsproj']=="yes":
env.AddToVSProject(env.drivers_sources) env.AddToVSProject(env.drivers_sources)
if env.split_drivers: if env.split_drivers:
env.split_lib("drivers") env.split_lib("drivers")
else: else:
env.add_source_files(env.drivers_sources,"*.cpp") env.add_source_files(env.drivers_sources,"*.cpp")
lib = env.Library("drivers",env.drivers_sources) lib = env.Library("drivers",env.drivers_sources)
env.Prepend(LIBS=[lib]) env.Prepend(LIBS=[lib])

File diff suppressed because it is too large Load Diff

View File

@@ -3,19 +3,19 @@
Import('env') Import('env')
if (env["platform"] in ["haiku","osx","windows","x11"]): if (env["platform"] in ["haiku","osx","windows","x11"]):
# Thirdparty source files # Thirdparty source files
if (env["glew"] != "system"): # builtin if (env["glew"] != "system"): # builtin
thirdparty_dir = "#thirdparty/glew/" thirdparty_dir = "#thirdparty/glew/"
thirdparty_sources = [ thirdparty_sources = [
"glew.c", "glew.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env.add_source_files(env.drivers_sources, thirdparty_sources) env.add_source_files(env.drivers_sources, thirdparty_sources)
env.Append(CPPFLAGS = ['-DGLEW_STATIC']) env.Append(CPPFLAGS = ['-DGLEW_STATIC'])
env.Append(CPPPATH = [thirdparty_dir]) env.Append(CPPPATH = [thirdparty_dir])
env.Append(CPPFLAGS = ['-DGLEW_ENABLED']) env.Append(CPPFLAGS = ['-DGLEW_ENABLED'])
# Godot source files # Godot source files
env.add_source_files(env.drivers_sources, "*.cpp") env.add_source_files(env.drivers_sources, "*.cpp")

View File

@@ -3,10 +3,10 @@
Import('env') Import('env')
if env['BUILDERS'].has_key('GLSL120GLES'): if env['BUILDERS'].has_key('GLSL120GLES'):
env.GLSL120GLES('material.glsl'); env.GLSL120GLES('material.glsl');
env.GLSL120GLES('canvas.glsl'); env.GLSL120GLES('canvas.glsl');
env.GLSL120GLES('canvas_shadow.glsl'); env.GLSL120GLES('canvas_shadow.glsl');
env.GLSL120GLES('blur.glsl'); env.GLSL120GLES('blur.glsl');
env.GLSL120GLES('copy.glsl'); env.GLSL120GLES('copy.glsl');
Export('env') Export('env')

View File

@@ -6,43 +6,43 @@ env_png = env.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libpng"] == "builtin"): if (env["libpng"] == "builtin"):
thirdparty_dir = "#thirdparty/libpng/" thirdparty_dir = "#thirdparty/libpng/"
thirdparty_sources = [ thirdparty_sources = [
"png.c", "png.c",
"pngerror.c", "pngerror.c",
"pngget.c", "pngget.c",
"pngmem.c", "pngmem.c",
"pngpread.c", "pngpread.c",
"pngread.c", "pngread.c",
"pngrio.c", "pngrio.c",
"pngrtran.c", "pngrtran.c",
"pngrutil.c", "pngrutil.c",
"pngset.c", "pngset.c",
"pngtrans.c", "pngtrans.c",
"pngwio.c", "pngwio.c",
"pngwrite.c", "pngwrite.c",
"pngwtran.c", "pngwtran.c",
"pngwutil.c", "pngwutil.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_png.add_source_files(env.drivers_sources, thirdparty_sources) env_png.add_source_files(env.drivers_sources, thirdparty_sources)
env_png.Append(CPPPATH = [thirdparty_dir]) env_png.Append(CPPPATH = [thirdparty_dir])
# Currently .ASM filter_neon.S does not compile on NT. # Currently .ASM filter_neon.S does not compile on NT.
import os import os
if ("neon_enabled" in env and env["neon_enabled"]) and os.name!="nt": if ("neon_enabled" in env and env["neon_enabled"]) and os.name!="nt":
env_png.Append(CPPFLAGS = ["-DPNG_ARM_NEON_OPT=2"]) env_png.Append(CPPFLAGS = ["-DPNG_ARM_NEON_OPT=2"])
env_neon = env_png.Clone(); env_neon = env_png.Clone();
if "S_compiler" in env: if "S_compiler" in env:
env_neon['CC'] = env['S_compiler'] env_neon['CC'] = env['S_compiler']
neon_sources = [] neon_sources = []
neon_sources.append(env_neon.Object(thirdparty_dir + "/arm/arm_init.c")) neon_sources.append(env_neon.Object(thirdparty_dir + "/arm/arm_init.c"))
neon_sources.append(env_neon.Object(thirdparty_dir + "/arm/filter_neon_intrinsics.c")) neon_sources.append(env_neon.Object(thirdparty_dir + "/arm/filter_neon_intrinsics.c"))
neon_sources.append(env_neon.Object(thirdparty_dir + "/arm/filter_neon.S")) neon_sources.append(env_neon.Object(thirdparty_dir + "/arm/filter_neon.S"))
env.drivers_sources += neon_sources env.drivers_sources += neon_sources
else: else:
env_png.Append(CPPFLAGS = ["-DPNG_ARM_NEON_OPT=0"]) env_png.Append(CPPFLAGS = ["-DPNG_ARM_NEON_OPT=0"])
# Godot source files # Godot source files
env_png.add_source_files(env.drivers_sources, "*.cpp") env_png.add_source_files(env.drivers_sources, "*.cpp")

View File

@@ -7,7 +7,7 @@ Import('env')
# Thirdparty source files # Thirdparty source files
thirdparty_dir = "#thirdparty/rtaudio/" thirdparty_dir = "#thirdparty/rtaudio/"
thirdparty_sources = [ thirdparty_sources = [
"RtAudio.cpp", "RtAudio.cpp",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

@@ -8,17 +8,17 @@ Import('env')
# No check here as already done in drivers/SCsub # No check here as already done in drivers/SCsub
thirdparty_dir = "#thirdparty/zlib/" thirdparty_dir = "#thirdparty/zlib/"
thirdparty_sources = [ thirdparty_sources = [
"adler32.c", "adler32.c",
"compress.c", "compress.c",
"crc32.c", "crc32.c",
"deflate.c", "deflate.c",
"infback.c", "infback.c",
"inffast.c", "inffast.c",
"inflate.c", "inflate.c",
"inftrees.c", "inftrees.c",
"trees.c", "trees.c",
"uncompr.c", "uncompr.c",
"zutil.c", "zutil.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

1864
methods.py

File diff suppressed because it is too large Load Diff

View File

@@ -7,16 +7,16 @@ env_modules = env.Clone()
Export('env_modules') Export('env_modules')
env.modules_sources=[ env.modules_sources=[
"register_module_types.cpp", "register_module_types.cpp",
] ]
#env.add_source_files(env.modules_sources,"*.cpp") #env.add_source_files(env.modules_sources,"*.cpp")
Export('env') Export('env')
for x in env.module_list: for x in env.module_list:
if (x in env.disabled_modules): if (x in env.disabled_modules):
continue continue
env_modules.Append(CPPFLAGS=["-DMODULE_"+x.upper()+"_ENABLED"]) env_modules.Append(CPPFLAGS=["-DMODULE_"+x.upper()+"_ENABLED"])
SConscript(x+"/SCsub") SConscript(x+"/SCsub")
lib = env_modules.Library("modules",env.modules_sources) lib = env_modules.Library("modules",env.modules_sources)

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -1,11 +1,11 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -9,7 +9,7 @@ env_etc1 = env_modules.Clone()
# Not unbundled so far since not widespread as shared library # Not unbundled so far since not widespread as shared library
thirdparty_dir = "#thirdparty/rg-etc1/" thirdparty_dir = "#thirdparty/rg-etc1/"
thirdparty_sources = [ thirdparty_sources = [
"rg_etc1.cpp", "rg_etc1.cpp",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -6,65 +6,65 @@ Import('env')
# Thirdparty source files # Thirdparty source files
if (env["freetype"] != "system"): # builtin if (env["freetype"] != "system"): # builtin
thirdparty_dir = "#thirdparty/freetype/" thirdparty_dir = "#thirdparty/freetype/"
thirdparty_sources = [ thirdparty_sources = [
"src/autofit/autofit.c", "src/autofit/autofit.c",
"src/base/ftapi.c", "src/base/ftapi.c",
"src/base/ftbase.c", "src/base/ftbase.c",
"src/base/ftbbox.c", "src/base/ftbbox.c",
"src/base/ftbdf.c", "src/base/ftbdf.c",
"src/base/ftbitmap.c", "src/base/ftbitmap.c",
"src/base/ftcid.c", "src/base/ftcid.c",
"src/base/ftdebug.c", "src/base/ftdebug.c",
"src/base/ftfntfmt.c", "src/base/ftfntfmt.c",
"src/base/ftfstype.c", "src/base/ftfstype.c",
"src/base/ftgasp.c", "src/base/ftgasp.c",
"src/base/ftglyph.c", "src/base/ftglyph.c",
"src/base/ftgxval.c", "src/base/ftgxval.c",
"src/base/ftinit.c", "src/base/ftinit.c",
"src/base/ftlcdfil.c", "src/base/ftlcdfil.c",
"src/base/ftmm.c", "src/base/ftmm.c",
"src/base/ftotval.c", "src/base/ftotval.c",
"src/base/ftpatent.c", "src/base/ftpatent.c",
"src/base/ftpfr.c", "src/base/ftpfr.c",
"src/base/ftpic.c", "src/base/ftpic.c",
"src/base/ftstroke.c", "src/base/ftstroke.c",
"src/base/ftsynth.c", "src/base/ftsynth.c",
"src/base/ftsystem.c", "src/base/ftsystem.c",
"src/base/fttype1.c", "src/base/fttype1.c",
"src/base/ftwinfnt.c", "src/base/ftwinfnt.c",
"src/bdf/bdf.c", "src/bdf/bdf.c",
"src/cache/ftcache.c", "src/cache/ftcache.c",
"src/cff/cff.c", "src/cff/cff.c",
"src/cid/type1cid.c", "src/cid/type1cid.c",
"src/gxvalid/gxvalid.c", "src/gxvalid/gxvalid.c",
"src/otvalid/otvalid.c", "src/otvalid/otvalid.c",
"src/pcf/pcf.c", "src/pcf/pcf.c",
"src/pfr/pfr.c", "src/pfr/pfr.c",
"src/psaux/psaux.c", "src/psaux/psaux.c",
"src/pshinter/pshinter.c", "src/pshinter/pshinter.c",
"src/psnames/psnames.c", "src/psnames/psnames.c",
"src/raster/raster.c", "src/raster/raster.c",
"src/sfnt/sfnt.c", "src/sfnt/sfnt.c",
"src/smooth/smooth.c", "src/smooth/smooth.c",
"src/truetype/truetype.c", "src/truetype/truetype.c",
"src/type1/type1.c", "src/type1/type1.c",
"src/type42/type42.c", "src/type42/type42.c",
"src/winfonts/winfnt.c", "src/winfonts/winfnt.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
# Include header for WinRT to fix build issues # Include header for WinRT to fix build issues
if "platform" in env and env["platform"] == "winrt": if "platform" in env and env["platform"] == "winrt":
env.Append(CCFLAGS = ['/FI', '"modules/freetype/winrtdef.h"']) env.Append(CCFLAGS = ['/FI', '"modules/freetype/winrtdef.h"'])
env.Append(CPPPATH = [thirdparty_dir, thirdparty_dir + "/include"]) env.Append(CPPPATH = [thirdparty_dir, thirdparty_dir + "/include"])
# also requires libpng headers # also requires libpng headers
if (env["libpng"] != "system"): # builtin if (env["libpng"] != "system"): # builtin
env.Append(CPPPATH = ["#thirdparty/libpng"]) env.Append(CPPPATH = ["#thirdparty/libpng"])
""" FIXME: Remove this commented code if Windows can handle the monolithic lib """ FIXME: Remove this commented code if Windows can handle the monolithic lib
# fix for Windows' shell miserably failing on long lines, split in two libraries # fix for Windows' shell miserably failing on long lines, split in two libraries
half1 = [] half1 = []
half2 = [] half2 = []
@@ -80,8 +80,8 @@ if (env["freetype"] != "system"): # builtin
env.Append(LIBS = [lib]) env.Append(LIBS = [lib])
""" """
lib = env.Library("freetype_builtin", thirdparty_sources) lib = env.Library("freetype_builtin", thirdparty_sources)
env.Append(LIBS = [lib]) env.Append(LIBS = [lib])
# Godot source files # Godot source files
env.add_source_files(env.modules_sources, "*.cpp") env.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -1,11 +1,11 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -1,11 +1,11 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -1,11 +1,11 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -9,7 +9,7 @@ env_jpg = env_modules.Clone()
# Not unbundled for now as they are not commonly available as shared library # Not unbundled for now as they are not commonly available as shared library
thirdparty_dir = "#thirdparty/jpeg-compressor/" thirdparty_dir = "#thirdparty/jpeg-compressor/"
thirdparty_sources = [ thirdparty_sources = [
"jpgd.cpp", "jpgd.cpp",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,22 +7,22 @@ env_mpc = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libmpcdec"] != "system"): # builtin if (env["libmpcdec"] != "system"): # builtin
thirdparty_dir = "#thirdparty/libmpcdec/" thirdparty_dir = "#thirdparty/libmpcdec/"
thirdparty_sources = [ thirdparty_sources = [
"huffman.c", "huffman.c",
"mpc_bits_reader.c", "mpc_bits_reader.c",
"mpc_decoder.c", "mpc_decoder.c",
"mpc_demux.c", "mpc_demux.c",
"mpc_reader.c", "mpc_reader.c",
"requant.c", "requant.c",
"streaminfo.c", "streaminfo.c",
"synth_filter.c", "synth_filter.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_mpc.add_source_files(env.modules_sources, thirdparty_sources) env_mpc.add_source_files(env.modules_sources, thirdparty_sources)
env_mpc.Append(CPPPATH = [thirdparty_dir]) env_mpc.Append(CPPPATH = [thirdparty_dir])
# Godot source files # Godot source files
env_mpc.add_source_files(env.modules_sources, "*.cpp") env_mpc.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,15 +7,15 @@ env_ogg = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libogg"] != "system"): # builtin if (env["libogg"] != "system"): # builtin
thirdparty_dir = "#thirdparty/libogg/" thirdparty_dir = "#thirdparty/libogg/"
thirdparty_sources = [ thirdparty_sources = [
"bitwise.c", "bitwise.c",
"framing.c", "framing.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_ogg.add_source_files(env.modules_sources, thirdparty_sources) env_ogg.add_source_files(env.modules_sources, thirdparty_sources)
env_ogg.Append(CPPPATH = [thirdparty_dir]) env_ogg.Append(CPPPATH = [thirdparty_dir])
# Godot source files # Godot source files
env_ogg.add_source_files(env.modules_sources, "*.cpp") env_ogg.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,209 +7,209 @@ env_opus = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["opus"] != "system"): # builtin if (env["opus"] != "system"): # builtin
thirdparty_dir = "#thirdparty/opus/" thirdparty_dir = "#thirdparty/opus/"
thirdparty_sources = [ thirdparty_sources = [
"silk/tables_other.c", "silk/tables_other.c",
"silk/sum_sqr_shift.c", "silk/sum_sqr_shift.c",
"silk/PLC.c", "silk/PLC.c",
"silk/dec_API.c", "silk/dec_API.c",
"silk/decode_pulses.c", "silk/decode_pulses.c",
"silk/inner_prod_aligned.c", "silk/inner_prod_aligned.c",
"silk/init_encoder.c", "silk/init_encoder.c",
"silk/interpolate.c", "silk/interpolate.c",
"silk/stereo_encode_pred.c", "silk/stereo_encode_pred.c",
"silk/decode_frame.c", "silk/decode_frame.c",
"silk/NLSF_del_dec_quant.c", "silk/NLSF_del_dec_quant.c",
"silk/VAD.c", "silk/VAD.c",
"silk/resampler_private_AR2.c", "silk/resampler_private_AR2.c",
"silk/NLSF_unpack.c", "silk/NLSF_unpack.c",
"silk/resampler_down2.c", "silk/resampler_down2.c",
"silk/sort.c", "silk/sort.c",
"silk/resampler_private_IIR_FIR.c", "silk/resampler_private_IIR_FIR.c",
"silk/resampler_down2_3.c", "silk/resampler_down2_3.c",
"silk/resampler_private_up2_HQ.c", "silk/resampler_private_up2_HQ.c",
"silk/tables_gain.c", "silk/tables_gain.c",
"silk/stereo_find_predictor.c", "silk/stereo_find_predictor.c",
"silk/stereo_quant_pred.c", "silk/stereo_quant_pred.c",
"silk/NLSF_stabilize.c", "silk/NLSF_stabilize.c",
"silk/ana_filt_bank_1.c", "silk/ana_filt_bank_1.c",
"silk/check_control_input.c", "silk/check_control_input.c",
"silk/bwexpander.c", "silk/bwexpander.c",
"silk/A2NLSF.c", "silk/A2NLSF.c",
"silk/LPC_inv_pred_gain.c", "silk/LPC_inv_pred_gain.c",
"silk/log2lin.c", "silk/log2lin.c",
"silk/process_NLSFs.c", "silk/process_NLSFs.c",
"silk/sigm_Q15.c", "silk/sigm_Q15.c",
"silk/VQ_WMat_EC.c", "silk/VQ_WMat_EC.c",
"silk/quant_LTP_gains.c", "silk/quant_LTP_gains.c",
"silk/resampler_private_down_FIR.c", "silk/resampler_private_down_FIR.c",
"silk/NLSF_decode.c", "silk/NLSF_decode.c",
"silk/control_codec.c", "silk/control_codec.c",
"silk/NLSF_VQ_weights_laroia.c", "silk/NLSF_VQ_weights_laroia.c",
"silk/decode_pitch.c", "silk/decode_pitch.c",
"silk/stereo_decode_pred.c", "silk/stereo_decode_pred.c",
"silk/tables_pulses_per_block.c", "silk/tables_pulses_per_block.c",
"silk/init_decoder.c", "silk/init_decoder.c",
"silk/table_LSF_cos.c", "silk/table_LSF_cos.c",
"silk/decode_core.c", "silk/decode_core.c",
"silk/code_signs.c", "silk/code_signs.c",
"silk/enc_API.c", "silk/enc_API.c",
"silk/tables_LTP.c", "silk/tables_LTP.c",
"silk/pitch_est_tables.c", "silk/pitch_est_tables.c",
"silk/biquad_alt.c", "silk/biquad_alt.c",
"silk/encode_indices.c", "silk/encode_indices.c",
"silk/tables_NLSF_CB_WB.c", "silk/tables_NLSF_CB_WB.c",
"silk/debug.c", "silk/debug.c",
"silk/decode_parameters.c", "silk/decode_parameters.c",
"silk/tables_pitch_lag.c", "silk/tables_pitch_lag.c",
"silk/NLSF2A.c", "silk/NLSF2A.c",
"silk/resampler.c", "silk/resampler.c",
"silk/decode_indices.c", "silk/decode_indices.c",
"silk/NLSF_VQ.c", "silk/NLSF_VQ.c",
"silk/bwexpander_32.c", "silk/bwexpander_32.c",
"silk/tables_NLSF_CB_NB_MB.c", "silk/tables_NLSF_CB_NB_MB.c",
"silk/encode_pulses.c", "silk/encode_pulses.c",
"silk/NSQ_del_dec.c", "silk/NSQ_del_dec.c",
"silk/control_SNR.c", "silk/control_SNR.c",
"silk/shell_coder.c", "silk/shell_coder.c",
"silk/NLSF_encode.c", "silk/NLSF_encode.c",
"silk/stereo_MS_to_LR.c", "silk/stereo_MS_to_LR.c",
"silk/stereo_LR_to_MS.c", "silk/stereo_LR_to_MS.c",
"silk/HP_variable_cutoff.c", "silk/HP_variable_cutoff.c",
"silk/LPC_analysis_filter.c", "silk/LPC_analysis_filter.c",
"silk/CNG.c", "silk/CNG.c",
"silk/decoder_set_fs.c", "silk/decoder_set_fs.c",
"silk/resampler_rom.c", "silk/resampler_rom.c",
"silk/control_audio_bandwidth.c", "silk/control_audio_bandwidth.c",
"silk/lin2log.c", "silk/lin2log.c",
"silk/LP_variable_cutoff.c", "silk/LP_variable_cutoff.c",
"silk/NSQ.c", "silk/NSQ.c",
"silk/gain_quant.c", "silk/gain_quant.c",
"celt/laplace.c", "celt/laplace.c",
"celt/vq.c", "celt/vq.c",
"celt/quant_bands.c", "celt/quant_bands.c",
"celt/kiss_fft.c", "celt/kiss_fft.c",
"celt/entcode.c", "celt/entcode.c",
"celt/entenc.c", "celt/entenc.c",
"celt/celt_lpc.c", "celt/celt_lpc.c",
"celt/pitch.c", "celt/pitch.c",
"celt/rate.c", "celt/rate.c",
"celt/mathops.c", "celt/mathops.c",
#"celt/arm/armcpu.c", #"celt/arm/armcpu.c",
#"celt/arm/celt_neon_intr.c", #"celt/arm/celt_neon_intr.c",
#"celt/arm/celt_ne10_mdct.c", #"celt/arm/celt_ne10_mdct.c",
#"celt/arm/celt_ne10_fft.c", #"celt/arm/celt_ne10_fft.c",
#"celt/arm/arm_celt_map.c", #"celt/arm/arm_celt_map.c",
"celt/celt_encoder.c", "celt/celt_encoder.c",
"celt/celt.c", "celt/celt.c",
"celt/bands.c", "celt/bands.c",
"celt/cwrs.c", "celt/cwrs.c",
"celt/entdec.c", "celt/entdec.c",
"celt/celt_decoder.c", "celt/celt_decoder.c",
"celt/mdct.c", "celt/mdct.c",
"celt/modes.c", "celt/modes.c",
"repacketizer.c", "repacketizer.c",
"mlp_data.c", "mlp_data.c",
"opus_multistream.c", "opus_multistream.c",
"opusfile.c", "opusfile.c",
"opus_encoder.c", "opus_encoder.c",
"analysis.c", "analysis.c",
"mlp.c", "mlp.c",
"info.c", "info.c",
"stream.c", "stream.c",
"opus_decoder.c", "opus_decoder.c",
"internal.c", "internal.c",
"wincerts.c", "wincerts.c",
"opus.c", "opus.c",
"opus_multistream_encoder.c", "opus_multistream_encoder.c",
"http.c", "http.c",
"opus_multistream_decoder.c" "opus_multistream_decoder.c"
] ]
opus_sources_silk = [] opus_sources_silk = []
if("opus_fixed_point" in env and env.opus_fixed_point=="yes"): if("opus_fixed_point" in env and env.opus_fixed_point=="yes"):
env_opus.Append(CFLAGS = ["-DFIXED_POINT"]) env_opus.Append(CFLAGS = ["-DFIXED_POINT"])
opus_sources_silk = [ opus_sources_silk = [
"silk/fixed/schur64_FIX.c", "silk/fixed/schur64_FIX.c",
"silk/fixed/residual_energy16_FIX.c", "silk/fixed/residual_energy16_FIX.c",
"silk/fixed/encode_frame_FIX.c", "silk/fixed/encode_frame_FIX.c",
"silk/fixed/regularize_correlations_FIX.c", "silk/fixed/regularize_correlations_FIX.c",
"silk/fixed/apply_sine_window_FIX.c", "silk/fixed/apply_sine_window_FIX.c",
"silk/fixed/solve_LS_FIX.c", "silk/fixed/solve_LS_FIX.c",
"silk/fixed/schur_FIX.c", "silk/fixed/schur_FIX.c",
"silk/fixed/pitch_analysis_core_FIX.c", "silk/fixed/pitch_analysis_core_FIX.c",
"silk/fixed/noise_shape_analysis_FIX.c", "silk/fixed/noise_shape_analysis_FIX.c",
"silk/fixed/find_LTP_FIX.c", "silk/fixed/find_LTP_FIX.c",
"silk/fixed/vector_ops_FIX.c", "silk/fixed/vector_ops_FIX.c",
"silk/fixed/autocorr_FIX.c", "silk/fixed/autocorr_FIX.c",
"silk/fixed/warped_autocorrelation_FIX.c", "silk/fixed/warped_autocorrelation_FIX.c",
"silk/fixed/find_pitch_lags_FIX.c", "silk/fixed/find_pitch_lags_FIX.c",
"silk/fixed/k2a_Q16_FIX.c", "silk/fixed/k2a_Q16_FIX.c",
"silk/fixed/LTP_scale_ctrl_FIX.c", "silk/fixed/LTP_scale_ctrl_FIX.c",
"silk/fixed/corrMatrix_FIX.c", "silk/fixed/corrMatrix_FIX.c",
"silk/fixed/prefilter_FIX.c", "silk/fixed/prefilter_FIX.c",
"silk/fixed/find_LPC_FIX.c", "silk/fixed/find_LPC_FIX.c",
"silk/fixed/residual_energy_FIX.c", "silk/fixed/residual_energy_FIX.c",
"silk/fixed/process_gains_FIX.c", "silk/fixed/process_gains_FIX.c",
"silk/fixed/LTP_analysis_filter_FIX.c", "silk/fixed/LTP_analysis_filter_FIX.c",
"silk/fixed/k2a_FIX.c", "silk/fixed/k2a_FIX.c",
"silk/fixed/burg_modified_FIX.c", "silk/fixed/burg_modified_FIX.c",
"silk/fixed/find_pred_coefs_FIX.c" "silk/fixed/find_pred_coefs_FIX.c"
] ]
else: else:
opus_sources_silk = [ opus_sources_silk = [
"silk/float/LTP_scale_ctrl_FLP.c", "silk/float/LTP_scale_ctrl_FLP.c",
"silk/float/regularize_correlations_FLP.c", "silk/float/regularize_correlations_FLP.c",
"silk/float/corrMatrix_FLP.c", "silk/float/corrMatrix_FLP.c",
"silk/float/LPC_analysis_filter_FLP.c", "silk/float/LPC_analysis_filter_FLP.c",
"silk/float/levinsondurbin_FLP.c", "silk/float/levinsondurbin_FLP.c",
"silk/float/schur_FLP.c", "silk/float/schur_FLP.c",
"silk/float/scale_vector_FLP.c", "silk/float/scale_vector_FLP.c",
"silk/float/apply_sine_window_FLP.c", "silk/float/apply_sine_window_FLP.c",
"silk/float/pitch_analysis_core_FLP.c", "silk/float/pitch_analysis_core_FLP.c",
"silk/float/wrappers_FLP.c", "silk/float/wrappers_FLP.c",
"silk/float/bwexpander_FLP.c", "silk/float/bwexpander_FLP.c",
"silk/float/warped_autocorrelation_FLP.c", "silk/float/warped_autocorrelation_FLP.c",
"silk/float/solve_LS_FLP.c", "silk/float/solve_LS_FLP.c",
"silk/float/find_LPC_FLP.c", "silk/float/find_LPC_FLP.c",
"silk/float/autocorrelation_FLP.c", "silk/float/autocorrelation_FLP.c",
"silk/float/find_pred_coefs_FLP.c", "silk/float/find_pred_coefs_FLP.c",
"silk/float/find_pitch_lags_FLP.c", "silk/float/find_pitch_lags_FLP.c",
"silk/float/burg_modified_FLP.c", "silk/float/burg_modified_FLP.c",
"silk/float/find_LTP_FLP.c", "silk/float/find_LTP_FLP.c",
"silk/float/energy_FLP.c", "silk/float/energy_FLP.c",
"silk/float/sort_FLP.c", "silk/float/sort_FLP.c",
"silk/float/LPC_inv_pred_gain_FLP.c", "silk/float/LPC_inv_pred_gain_FLP.c",
"silk/float/k2a_FLP.c", "silk/float/k2a_FLP.c",
"silk/float/noise_shape_analysis_FLP.c", "silk/float/noise_shape_analysis_FLP.c",
"silk/float/inner_product_FLP.c", "silk/float/inner_product_FLP.c",
"silk/float/process_gains_FLP.c", "silk/float/process_gains_FLP.c",
"silk/float/encode_frame_FLP.c", "silk/float/encode_frame_FLP.c",
"silk/float/scale_copy_vector_FLP.c", "silk/float/scale_copy_vector_FLP.c",
"silk/float/residual_energy_FLP.c", "silk/float/residual_energy_FLP.c",
"silk/float/LTP_analysis_filter_FLP.c", "silk/float/LTP_analysis_filter_FLP.c",
"silk/float/prefilter_FLP.c" "silk/float/prefilter_FLP.c"
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources + opus_sources_silk] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources + opus_sources_silk]
env_opus.add_source_files(env.modules_sources, thirdparty_sources) env_opus.add_source_files(env.modules_sources, thirdparty_sources)
env_opus.Append(CFLAGS=["-DHAVE_CONFIG_H"]) env_opus.Append(CFLAGS=["-DHAVE_CONFIG_H"])
thirdparty_include_paths = [ thirdparty_include_paths = [
"", "",
"celt", "celt",
"silk", "silk",
"silk/fixed", "silk/fixed",
"silk/float", "silk/float",
] ]
env_opus.Append(CPPPATH = [thirdparty_dir + "/" + dir for dir in thirdparty_include_paths]) env_opus.Append(CPPPATH = [thirdparty_dir + "/" + dir for dir in thirdparty_include_paths])
# also requires libogg # also requires libogg
if (env["libogg"] != "system"): # builtin if (env["libogg"] != "system"): # builtin
env_opus.Append(CPPPATH = ["#thirdparty/libogg"]) env_opus.Append(CPPPATH = ["#thirdparty/libogg"])
# Module files # Module files
env_opus.add_source_files(env.modules_sources, "*.cpp") env_opus.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -9,11 +9,11 @@ env_pvr = env_modules.Clone()
# Not unbundled so far since not widespread as shared library # Not unbundled so far since not widespread as shared library
thirdparty_dir = "#thirdparty/pvrtccompressor/" thirdparty_dir = "#thirdparty/pvrtccompressor/"
thirdparty_sources = [ thirdparty_sources = [
"BitScale.cpp", "BitScale.cpp",
"MortonTable.cpp", "MortonTable.cpp",
"PvrTcDecoder.cpp", "PvrTcDecoder.cpp",
"PvrTcEncoder.cpp", "PvrTcEncoder.cpp",
"PvrTcPacket.cpp", "PvrTcPacket.cpp",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,60 +7,60 @@ env_speex = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["speex"] != "system"): # builtin if (env["speex"] != "system"): # builtin
thirdparty_dir = "#thirdparty/speex/" thirdparty_dir = "#thirdparty/speex/"
thirdparty_sources = [ thirdparty_sources = [
"bits.c", "bits.c",
"buffer.c", "buffer.c",
"cb_search.c", "cb_search.c",
"exc_10_16_table.c", "exc_10_16_table.c",
"exc_10_32_table.c", "exc_10_32_table.c",
"exc_20_32_table.c", "exc_20_32_table.c",
"exc_5_256_table.c", "exc_5_256_table.c",
"exc_5_64_table.c", "exc_5_64_table.c",
"exc_8_128_table.c", "exc_8_128_table.c",
"fftwrap.c", "fftwrap.c",
"filterbank.c", "filterbank.c",
"filters.c", "filters.c",
"gain_table.c", "gain_table.c",
"gain_table_lbr.c", "gain_table_lbr.c",
"hexc_10_32_table.c", "hexc_10_32_table.c",
"hexc_table.c", "hexc_table.c",
"high_lsp_tables.c", "high_lsp_tables.c",
"jitter.c", "jitter.c",
"kiss_fft.c", "kiss_fft.c",
"kiss_fftr.c", "kiss_fftr.c",
"lpc.c", "lpc.c",
"lsp.c", "lsp.c",
"lsp_tables_nb.c", "lsp_tables_nb.c",
"ltp.c", "ltp.c",
"mdf.c", "mdf.c",
"modes.c", "modes.c",
"modes_wb.c", "modes_wb.c",
"nb_celp.c", "nb_celp.c",
"preprocess.c", "preprocess.c",
"quant_lsp.c", "quant_lsp.c",
"resample.c", "resample.c",
"sb_celp.c", "sb_celp.c",
"scal.c", "scal.c",
"smallft.c", "smallft.c",
"speex.c", "speex.c",
"speex_callbacks.c", "speex_callbacks.c",
"speex_header.c", "speex_header.c",
"stereo.c", "stereo.c",
"vbr.c", "vbr.c",
"vq.c", "vq.c",
"window.c", "window.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_speex.add_source_files(env.modules_sources, thirdparty_sources) env_speex.add_source_files(env.modules_sources, thirdparty_sources)
env_speex.Append(CPPPATH = [thirdparty_dir]) env_speex.Append(CPPPATH = [thirdparty_dir])
# also requires libogg # also requires libogg
if (env["libogg"] != "system"): # builtin if (env["libogg"] != "system"): # builtin
env_speex.Append(CPPPATH = ["#thirdparty/libogg"]) env_speex.Append(CPPPATH = ["#thirdparty/libogg"])
# Module files # Module files
env_speex.add_source_files(env.modules_sources, "*.cpp") env_speex.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,23 +7,23 @@ env_squish = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["squish"] != "system"): # builtin if (env["squish"] != "system"): # builtin
thirdparty_dir = "#thirdparty/squish/" thirdparty_dir = "#thirdparty/squish/"
thirdparty_sources = [ thirdparty_sources = [
"alpha.cpp", "alpha.cpp",
"clusterfit.cpp", "clusterfit.cpp",
"colourblock.cpp", "colourblock.cpp",
"colourfit.cpp", "colourfit.cpp",
"colourset.cpp", "colourset.cpp",
"maths.cpp", "maths.cpp",
"rangefit.cpp", "rangefit.cpp",
"singlecolourfit.cpp", "singlecolourfit.cpp",
"squish.cpp", "squish.cpp",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_squish.add_source_files(env.modules_sources, thirdparty_sources) env_squish.add_source_files(env.modules_sources, thirdparty_sources)
env_squish.Append(CPPPATH = [thirdparty_dir]) env_squish.Append(CPPPATH = [thirdparty_dir])
# Godot source files # Godot source files
env_squish.add_source_files(env.modules_sources, "*.cpp") env_squish.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,10 +1,10 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
# Tools only, disabled for non-tools # Tools only, disabled for non-tools
# TODO: Find a cleaner way to achieve that # TODO: Find a cleaner way to achieve that
if (env["tools"] == "no"): if (env["tools"] == "no"):
env["module_squish_enabled"] = "no" env["module_squish_enabled"] = "no"
env.disabled_modules.append("squish") env.disabled_modules.append("squish")

View File

@@ -7,77 +7,77 @@ env_theora = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libtheora"] != "system"): # builtin if (env["libtheora"] != "system"): # builtin
thirdparty_dir = "#thirdparty/libtheora/" thirdparty_dir = "#thirdparty/libtheora/"
thirdparty_sources = [ thirdparty_sources = [
#"analyze.c", #"analyze.c",
#"apiwrapper.c", #"apiwrapper.c",
"bitpack.c", "bitpack.c",
"cpu.c", "cpu.c",
#"decapiwrapper.c", #"decapiwrapper.c",
"decinfo.c", "decinfo.c",
"decode.c", "decode.c",
"dequant.c", "dequant.c",
#"encapiwrapper.c", #"encapiwrapper.c",
#"encfrag.c", #"encfrag.c",
#"encinfo.c", #"encinfo.c",
#"encode.c", #"encode.c",
#"encoder_disabled.c", #"encoder_disabled.c",
#"enquant.c", #"enquant.c",
#"fdct.c", #"fdct.c",
"fragment.c", "fragment.c",
"huffdec.c", "huffdec.c",
#"huffenc.c", #"huffenc.c",
"idct.c", "idct.c",
"info.c", "info.c",
"internal.c", "internal.c",
#"mathops.c", #"mathops.c",
#"mcenc.c", #"mcenc.c",
"quant.c", "quant.c",
#"rate.c", #"rate.c",
"state.c", "state.c",
#"tokenize.c", #"tokenize.c",
] ]
thirdparty_sources_x86 = [ thirdparty_sources_x86 = [
#"x86/mmxencfrag.c", #"x86/mmxencfrag.c",
#"x86/mmxfdct.c", #"x86/mmxfdct.c",
"x86/mmxfrag.c", "x86/mmxfrag.c",
"x86/mmxidct.c", "x86/mmxidct.c",
"x86/mmxstate.c", "x86/mmxstate.c",
#"x86/sse2fdct.c", #"x86/sse2fdct.c",
#"x86/x86enc.c", #"x86/x86enc.c",
"x86/x86state.c", "x86/x86state.c",
] ]
thirdparty_sources_x86_vc = [ thirdparty_sources_x86_vc = [
#"x86_vc/mmxencfrag.c", #"x86_vc/mmxencfrag.c",
#"x86_vc/mmxfdct.c", #"x86_vc/mmxfdct.c",
"x86_vc/mmxfrag.c", "x86_vc/mmxfrag.c",
"x86_vc/mmxidct.c", "x86_vc/mmxidct.c",
"x86_vc/mmxstate.c", "x86_vc/mmxstate.c",
#"x86_vc/x86enc.c", #"x86_vc/x86enc.c",
"x86_vc/x86state.c", "x86_vc/x86state.c",
] ]
if (env["x86_libtheora_opt_gcc"]): if (env["x86_libtheora_opt_gcc"]):
thirdparty_sources += thirdparty_sources_x86 thirdparty_sources += thirdparty_sources_x86
if (env["x86_libtheora_opt_vc"]): if (env["x86_libtheora_opt_vc"]):
thirdparty_sources += thirdparty_sources_x86_vc thirdparty_sources += thirdparty_sources_x86_vc
if (env["x86_libtheora_opt_gcc"] or env["x86_libtheora_opt_vc"]): if (env["x86_libtheora_opt_gcc"] or env["x86_libtheora_opt_vc"]):
env_theora.Append(CCFLAGS = ["-DOC_X86_ASM"]) env_theora.Append(CCFLAGS = ["-DOC_X86_ASM"])
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_theora.add_source_files(env.modules_sources, thirdparty_sources) env_theora.add_source_files(env.modules_sources, thirdparty_sources)
env_theora.Append(CPPPATH = [thirdparty_dir]) env_theora.Append(CPPPATH = [thirdparty_dir])
# also requires libogg and libvorbis # also requires libogg and libvorbis
if (env["libogg"] != "system"): # builtin if (env["libogg"] != "system"): # builtin
env_theora.Append(CPPPATH = ["#thirdparty/libogg"]) env_theora.Append(CPPPATH = ["#thirdparty/libogg"])
if (env["libvorbis"] != "system"): # builtin if (env["libvorbis"] != "system"): # builtin
env_theora.Append(CPPPATH = ["#thirdparty/libvorbis"]) env_theora.Append(CPPPATH = ["#thirdparty/libvorbis"])
# Godot source files # Godot source files
env_theora.add_source_files(env.modules_sources, "*.cpp") env_theora.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,43 +7,43 @@ env_vorbis = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libvorbis"] != "system"): # builtin if (env["libvorbis"] != "system"): # builtin
thirdparty_dir = "#thirdparty/libvorbis/" thirdparty_dir = "#thirdparty/libvorbis/"
thirdparty_sources = [ thirdparty_sources = [
#"analysis.c", #"analysis.c",
#"barkmel.c", #"barkmel.c",
"bitrate.c", "bitrate.c",
"block.c", "block.c",
"codebook.c", "codebook.c",
"envelope.c", "envelope.c",
"floor0.c", "floor0.c",
"floor1.c", "floor1.c",
"info.c", "info.c",
"lookup.c", "lookup.c",
"lpc.c", "lpc.c",
"lsp.c", "lsp.c",
"mapping0.c", "mapping0.c",
"mdct.c", "mdct.c",
"psy.c", "psy.c",
#"psytune.c", #"psytune.c",
"registry.c", "registry.c",
"res0.c", "res0.c",
"sharedbook.c", "sharedbook.c",
"smallft.c", "smallft.c",
"synthesis.c", "synthesis.c",
#"tone.c", #"tone.c",
#"vorbisenc.c", #"vorbisenc.c",
"vorbisfile.c", "vorbisfile.c",
"window.c", "window.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_vorbis.add_source_files(env.modules_sources, thirdparty_sources) env_vorbis.add_source_files(env.modules_sources, thirdparty_sources)
env_vorbis.Append(CPPPATH = [thirdparty_dir]) env_vorbis.Append(CPPPATH = [thirdparty_dir])
# also requires libogg # also requires libogg
if (env["libogg"] != "system"): # builtin if (env["libogg"] != "system"): # builtin
env_vorbis.Append(CPPPATH = ["#thirdparty/libogg"]) env_vorbis.Append(CPPPATH = ["#thirdparty/libogg"])
# Godot source files # Godot source files
env_vorbis.add_source_files(env.modules_sources, "*.cpp") env_vorbis.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -7,115 +7,115 @@ env_webp = env_modules.Clone()
# Thirdparty source files # Thirdparty source files
if (env["libwebp"] != "system"): # builtin if (env["libwebp"] != "system"): # builtin
thirdparty_dir = "#thirdparty/libwebp/" thirdparty_dir = "#thirdparty/libwebp/"
thirdparty_sources = [ thirdparty_sources = [
"enc/webpenc.c", "enc/webpenc.c",
"enc/near_lossless.c", "enc/near_lossless.c",
"enc/frame.c", "enc/frame.c",
"enc/alpha.c", "enc/alpha.c",
"enc/picture_csp.c", "enc/picture_csp.c",
"enc/vp8l.c", "enc/vp8l.c",
"enc/picture_psnr.c", "enc/picture_psnr.c",
"enc/delta_palettization.c", "enc/delta_palettization.c",
"enc/syntax.c", "enc/syntax.c",
"enc/backward_references.c", "enc/backward_references.c",
"enc/token.c", "enc/token.c",
"enc/analysis.c", "enc/analysis.c",
"enc/iterator.c", "enc/iterator.c",
"enc/picture_tools.c", "enc/picture_tools.c",
"enc/picture_rescale.c", "enc/picture_rescale.c",
"enc/config.c", "enc/config.c",
"enc/tree.c", "enc/tree.c",
"enc/cost.c", "enc/cost.c",
"enc/picture.c", "enc/picture.c",
"enc/quant.c", "enc/quant.c",
"enc/filter.c", "enc/filter.c",
"enc/histogram.c", "enc/histogram.c",
"utils/rescaler.c", "utils/rescaler.c",
"utils/filters.c", "utils/filters.c",
"utils/quant_levels_dec.c", "utils/quant_levels_dec.c",
"utils/huffman.c", "utils/huffman.c",
"utils/thread.c", "utils/thread.c",
"utils/quant_levels.c", "utils/quant_levels.c",
"utils/bit_writer.c", "utils/bit_writer.c",
"utils/bit_reader.c", "utils/bit_reader.c",
"utils/random.c", "utils/random.c",
"utils/utils.c", "utils/utils.c",
"utils/huffman_encode.c", "utils/huffman_encode.c",
"utils/color_cache.c", "utils/color_cache.c",
"mux/muxinternal.c", "mux/muxinternal.c",
"mux/muxread.c", "mux/muxread.c",
"mux/anim_encode.c", "mux/anim_encode.c",
"mux/muxedit.c", "mux/muxedit.c",
"dec/webp.c", "dec/webp.c",
"dec/frame.c", "dec/frame.c",
"dec/alpha.c", "dec/alpha.c",
"dec/vp8l.c", "dec/vp8l.c",
"dec/io.c", "dec/io.c",
"dec/vp8.c", "dec/vp8.c",
"dec/idec.c", "dec/idec.c",
"dec/tree.c", "dec/tree.c",
"dec/buffer.c", "dec/buffer.c",
"dec/quant.c", "dec/quant.c",
"demux/demux.c", "demux/demux.c",
"demux/anim_decode.c", "demux/anim_decode.c",
"dsp/yuv.c", "dsp/yuv.c",
"dsp/filters_sse2.c", "dsp/filters_sse2.c",
"dsp/dec_sse41.c", "dsp/dec_sse41.c",
"dsp/rescaler.c", "dsp/rescaler.c",
"dsp/lossless_sse2.c", "dsp/lossless_sse2.c",
"dsp/alpha_processing_sse41.c", "dsp/alpha_processing_sse41.c",
"dsp/alpha_processing_sse2.c", "dsp/alpha_processing_sse2.c",
"dsp/filters.c", "dsp/filters.c",
"dsp/upsampling_mips_dsp_r2.c", "dsp/upsampling_mips_dsp_r2.c",
"dsp/dec_neon.c", "dsp/dec_neon.c",
"dsp/enc_neon.c", "dsp/enc_neon.c",
"dsp/lossless_enc_mips32.c", "dsp/lossless_enc_mips32.c",
"dsp/lossless_enc_sse2.c", "dsp/lossless_enc_sse2.c",
"dsp/upsampling.c", "dsp/upsampling.c",
"dsp/lossless_enc_neon.c", "dsp/lossless_enc_neon.c",
"dsp/alpha_processing.c", "dsp/alpha_processing.c",
"dsp/cost_sse2.c", "dsp/cost_sse2.c",
"dsp/dec_mips32.c", "dsp/dec_mips32.c",
"dsp/enc_avx2.c", "dsp/enc_avx2.c",
"dsp/rescaler_mips32.c", "dsp/rescaler_mips32.c",
"dsp/enc.c", "dsp/enc.c",
"dsp/lossless_enc_sse41.c", "dsp/lossless_enc_sse41.c",
"dsp/cost_mips32.c", "dsp/cost_mips32.c",
"dsp/lossless_mips_dsp_r2.c", "dsp/lossless_mips_dsp_r2.c",
"dsp/filters_mips_dsp_r2.c", "dsp/filters_mips_dsp_r2.c",
"dsp/upsampling_neon.c", "dsp/upsampling_neon.c",
"dsp/alpha_processing_mips_dsp_r2.c", "dsp/alpha_processing_mips_dsp_r2.c",
"dsp/enc_mips_dsp_r2.c", "dsp/enc_mips_dsp_r2.c",
"dsp/lossless.c", "dsp/lossless.c",
"dsp/yuv_mips_dsp_r2.c", "dsp/yuv_mips_dsp_r2.c",
"dsp/cost_mips_dsp_r2.c", "dsp/cost_mips_dsp_r2.c",
"dsp/argb.c", "dsp/argb.c",
"dsp/dec_sse2.c", "dsp/dec_sse2.c",
"dsp/rescaler_sse2.c", "dsp/rescaler_sse2.c",
"dsp/enc_sse41.c", "dsp/enc_sse41.c",
"dsp/argb_mips_dsp_r2.c", "dsp/argb_mips_dsp_r2.c",
"dsp/lossless_enc_mips_dsp_r2.c", "dsp/lossless_enc_mips_dsp_r2.c",
"dsp/dec_clip_tables.c", "dsp/dec_clip_tables.c",
"dsp/yuv_mips32.c", "dsp/yuv_mips32.c",
"dsp/cpu.c", "dsp/cpu.c",
"dsp/dec.c", "dsp/dec.c",
"dsp/argb_sse2.c", "dsp/argb_sse2.c",
"dsp/lossless_neon.c", "dsp/lossless_neon.c",
"dsp/lossless_enc.c", "dsp/lossless_enc.c",
"dsp/enc_mips32.c", "dsp/enc_mips32.c",
"dsp/cost.c", "dsp/cost.c",
"dsp/rescaler_mips_dsp_r2.c", "dsp/rescaler_mips_dsp_r2.c",
"dsp/dec_mips_dsp_r2.c", "dsp/dec_mips_dsp_r2.c",
"dsp/rescaler_neon.c", "dsp/rescaler_neon.c",
"dsp/yuv_sse2.c", "dsp/yuv_sse2.c",
"dsp/enc_sse2.c", "dsp/enc_sse2.c",
"dsp/upsampling_sse2.c", "dsp/upsampling_sse2.c",
] ]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources] thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_webp.add_source_files(env.modules_sources, thirdparty_sources) env_webp.add_source_files(env.modules_sources, thirdparty_sources)
env_webp.Append(CPPPATH = [thirdparty_dir]) env_webp.Append(CPPPATH = [thirdparty_dir])
# Godot source files # Godot source files
env_webp.add_source_files(env.modules_sources, "*.cpp") env_webp.add_source_files(env.modules_sources, "*.cpp")

View File

@@ -1,6 +1,6 @@
def can_build(platform): def can_build(platform):
return True return True
def configure(env): def configure(env):
pass pass

View File

@@ -6,20 +6,20 @@ Import('env')
android_files = [ android_files = [
'os_android.cpp', 'os_android.cpp',
'godot_android.cpp', 'godot_android.cpp',
'file_access_android.cpp', 'file_access_android.cpp',
'dir_access_android.cpp', 'dir_access_android.cpp',
'audio_driver_opensl.cpp', 'audio_driver_opensl.cpp',
'file_access_jandroid.cpp', 'file_access_jandroid.cpp',
'dir_access_jandroid.cpp', 'dir_access_jandroid.cpp',
'thread_jandroid.cpp', 'thread_jandroid.cpp',
'audio_driver_jandroid.cpp', 'audio_driver_jandroid.cpp',
'ifaddrs_android.cpp', 'ifaddrs_android.cpp',
'android_native_app_glue.c', 'android_native_app_glue.c',
'java_glue.cpp', 'java_glue.cpp',
'cpu-features.c', 'cpu-features.c',
'java_class_wrapper.cpp' 'java_class_wrapper.cpp'
] ]
#env.Depends('#core/math/vector3.h', 'vector3_psp.h') #env.Depends('#core/math/vector3.h', 'vector3_psp.h')
@@ -28,11 +28,11 @@ android_files = [
env_android = env.Clone() env_android = env.Clone()
if env['target'] == "profile": if env['target'] == "profile":
env_android.Append(CPPFLAGS=['-DPROFILER_ENABLED']) env_android.Append(CPPFLAGS=['-DPROFILER_ENABLED'])
android_objects=[] android_objects=[]
for x in android_files: for x in android_files:
android_objects.append( env_android.SharedObject( x ) ) android_objects.append( env_android.SharedObject( x ) )
prog = None prog = None
@@ -48,43 +48,43 @@ gradle_text = gradle_basein.read()
gradle_maven_repos_text="" gradle_maven_repos_text=""
if len(env.android_maven_repos) > 0: if len(env.android_maven_repos) > 0:
gradle_maven_repos_text+="maven {\n" gradle_maven_repos_text+="maven {\n"
for x in env.android_maven_repos: for x in env.android_maven_repos:
gradle_maven_repos_text+="\t\t"+x+"\n" gradle_maven_repos_text+="\t\t"+x+"\n"
gradle_maven_repos_text+="\t}\n" gradle_maven_repos_text+="\t}\n"
gradle_maven_dependencies_text="" gradle_maven_dependencies_text=""
for x in env.android_dependencies: for x in env.android_dependencies:
gradle_maven_dependencies_text+=x+"\n" gradle_maven_dependencies_text+=x+"\n"
gradle_java_dirs_text="" gradle_java_dirs_text=""
for x in env.android_java_dirs: for x in env.android_java_dirs:
gradle_java_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_java_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_res_dirs_text="" gradle_res_dirs_text=""
for x in env.android_res_dirs: for x in env.android_res_dirs:
gradle_res_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_res_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_aidl_dirs_text="" gradle_aidl_dirs_text=""
for x in env.android_aidl_dirs: for x in env.android_aidl_dirs:
gradle_aidl_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_aidl_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_jni_dirs_text="" gradle_jni_dirs_text=""
for x in env.android_jni_dirs: for x in env.android_jni_dirs:
gradle_jni_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_jni_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_asset_dirs_text="" gradle_asset_dirs_text=""
gradle_default_config_text="" gradle_default_config_text=""
for x in env.android_default_config: for x in env.android_default_config:
gradle_default_config_text+=x+"\n\t\t" gradle_default_config_text+=x+"\n\t\t"
gradle_text = gradle_text.replace("$$GRADLE_REPOSITORY_URLS$$",gradle_maven_repos_text) gradle_text = gradle_text.replace("$$GRADLE_REPOSITORY_URLS$$",gradle_maven_repos_text)
gradle_text = gradle_text.replace("$$GRADLE_DEPENDENCIES$$",gradle_maven_dependencies_text) gradle_text = gradle_text.replace("$$GRADLE_DEPENDENCIES$$",gradle_maven_dependencies_text)
@@ -114,19 +114,19 @@ env_android.SharedLibrary("#bin/libgodot",[android_objects],SHLIBSUFFIX=env["SHL
lib_arch_dir = '' lib_arch_dir = ''
if env['android_arch'] == 'armv6': if env['android_arch'] == 'armv6':
lib_arch_dir = 'armeabi' lib_arch_dir = 'armeabi'
elif env['android_arch'] == 'armv7': elif env['android_arch'] == 'armv7':
lib_arch_dir = 'armeabi-v7a' lib_arch_dir = 'armeabi-v7a'
elif env['android_arch'] == 'x86': elif env['android_arch'] == 'x86':
lib_arch_dir = 'x86' lib_arch_dir = 'x86'
else: else:
print 'WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin' print 'WARN: Architecture not suitable for embedding into APK; keeping .so at \\bin'
if lib_arch_dir != '': if lib_arch_dir != '':
if env['target'] == 'release': if env['target'] == 'release':
lib_type_dir = 'release' lib_type_dir = 'release'
else: # release_debug, debug else: # release_debug, debug
lib_type_dir = 'debug' lib_type_dir = 'debug'
out_dir = '#platform/android/java/libs/'+lib_type_dir+'/'+lib_arch_dir out_dir = '#platform/android/java/libs/'+lib_type_dir+'/'+lib_arch_dir
env_android.Command(out_dir+'/libgodot_android.so', '#bin/libgodot'+env['SHLIBSUFFIX'], Move("$TARGET", "$SOURCE")) env_android.Command(out_dir+'/libgodot_android.so', '#bin/libgodot'+env['SHLIBSUFFIX'], Move("$TARGET", "$SOURCE"))

View File

@@ -4,247 +4,247 @@ import string
import platform import platform
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "Android" return "Android"
def can_build(): def can_build():
import os import os
if (not os.environ.has_key("ANDROID_NDK_ROOT")): if (not os.environ.has_key("ANDROID_NDK_ROOT")):
return False return False
return True return True
def get_opts(): def get_opts():
return [ return [
('ANDROID_NDK_ROOT', 'the path to Android NDK', os.environ.get("ANDROID_NDK_ROOT", 0)), ('ANDROID_NDK_ROOT', 'the path to Android NDK', os.environ.get("ANDROID_NDK_ROOT", 0)),
('NDK_TARGET', 'toolchain to use for the NDK',os.environ.get("NDK_TARGET", "arm-linux-androideabi-4.9")), ('NDK_TARGET', 'toolchain to use for the NDK',os.environ.get("NDK_TARGET", "arm-linux-androideabi-4.9")),
('NDK_TARGET_X86', 'toolchain to use for the NDK x86',os.environ.get("NDK_TARGET_X86", "x86-4.9")), ('NDK_TARGET_X86', 'toolchain to use for the NDK x86',os.environ.get("NDK_TARGET_X86", "x86-4.9")),
('ndk_platform', 'compile for platform: (android-<api> , example: android-14)',"android-14"), ('ndk_platform', 'compile for platform: (android-<api> , example: android-14)',"android-14"),
('android_arch', 'select compiler architecture: (armv7/armv6/x86)',"armv7"), ('android_arch', 'select compiler architecture: (armv7/armv6/x86)',"armv7"),
('android_neon','enable neon (armv7 only)',"yes"), ('android_neon','enable neon (armv7 only)',"yes"),
('android_stl','enable STL support in android port (for modules)',"no") ('android_stl','enable STL support in android port (for modules)',"no")
] ]
def get_flags(): def get_flags():
return [ return [
('tools', 'no'), ('tools', 'no'),
('openssl', 'builtin'), #use builtin openssl ('openssl', 'builtin'), #use builtin openssl
] ]
def create(env): def create(env):
tools = env['TOOLS'] tools = env['TOOLS']
if "mingw" in tools: if "mingw" in tools:
tools.remove('mingw') tools.remove('mingw')
if "applelink" in tools: if "applelink" in tools:
tools.remove("applelink") tools.remove("applelink")
env.Tool('gcc') env.Tool('gcc')
return env.Clone(tools=tools); return env.Clone(tools=tools);
def configure(env): def configure(env):
# Workaround for MinGW. See: # Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32 # http://www.scons.org/wiki/LongCmdLinesOnWin32
import os import os
if (os.name=="nt"): if (os.name=="nt"):
import subprocess import subprocess
def mySubProcess(cmdline,env): def mySubProcess(cmdline,env):
#print "SPAWNED : " + cmdline #print "SPAWNED : " + cmdline
startupinfo = subprocess.STARTUPINFO() startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE, proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env) stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
data, err = proc.communicate() data, err = proc.communicate()
rv = proc.wait() rv = proc.wait()
if rv: if rv:
print "=====" print "====="
print err print err
print "=====" print "====="
return rv return rv
def mySpawn(sh, escape, cmd, args, env): def mySpawn(sh, escape, cmd, args, env):
newargs = ' '.join(args[1:]) newargs = ' '.join(args[1:])
cmdline = cmd + " " + newargs cmdline = cmd + " " + newargs
rv=0 rv=0
if len(cmdline) > 32000 and cmd.endswith("ar") : if len(cmdline) > 32000 and cmd.endswith("ar") :
cmdline = cmd + " " + args[1] + " " + args[2] + " " cmdline = cmd + " " + args[1] + " " + args[2] + " "
for i in range(3,len(args)) : for i in range(3,len(args)) :
rv = mySubProcess( cmdline + args[i], env ) rv = mySubProcess( cmdline + args[i], env )
if rv : if rv :
break break
else: else:
rv = mySubProcess( cmdline, env ) rv = mySubProcess( cmdline, env )
return rv return rv
env['SPAWN'] = mySpawn env['SPAWN'] = mySpawn
ndk_platform=env['ndk_platform'] ndk_platform=env['ndk_platform']
if env['android_arch'] not in ['armv7','armv6','x86']: if env['android_arch'] not in ['armv7','armv6','x86']:
env['android_arch']='armv7' env['android_arch']='armv7'
if env['android_arch']=='x86': if env['android_arch']=='x86':
env['NDK_TARGET']=env['NDK_TARGET_X86'] env['NDK_TARGET']=env['NDK_TARGET_X86']
env["x86_libtheora_opt_gcc"]=True env["x86_libtheora_opt_gcc"]=True
if env['PLATFORM'] == 'win32': if env['PLATFORM'] == 'win32':
env.Tool('gcc') env.Tool('gcc')
env['SHLIBSUFFIX'] = '.so' env['SHLIBSUFFIX'] = '.so'
neon_text="" neon_text=""
if env["android_arch"]=="armv7" and env['android_neon']=='yes': if env["android_arch"]=="armv7" and env['android_neon']=='yes':
neon_text=" (with neon)" neon_text=" (with neon)"
print("Godot Android!!!!! ("+env['android_arch']+")"+neon_text) print("Godot Android!!!!! ("+env['android_arch']+")"+neon_text)
env.Append(CPPPATH=['#platform/android']) env.Append(CPPPATH=['#platform/android'])
if env['android_arch']=='x86': if env['android_arch']=='x86':
env.extra_suffix=".x86"+env.extra_suffix env.extra_suffix=".x86"+env.extra_suffix
elif env['android_arch']=='armv6': elif env['android_arch']=='armv6':
env.extra_suffix=".armv6"+env.extra_suffix env.extra_suffix=".armv6"+env.extra_suffix
elif env["android_arch"]=="armv7": elif env["android_arch"]=="armv7":
if env['android_neon']=='yes': if env['android_neon']=='yes':
env.extra_suffix=".armv7.neon"+env.extra_suffix env.extra_suffix=".armv7.neon"+env.extra_suffix
else: else:
env.extra_suffix=".armv7"+env.extra_suffix env.extra_suffix=".armv7"+env.extra_suffix
gcc_path=env["ANDROID_NDK_ROOT"]+"/toolchains/"+env["NDK_TARGET"]+"/prebuilt/"; gcc_path=env["ANDROID_NDK_ROOT"]+"/toolchains/"+env["NDK_TARGET"]+"/prebuilt/";
if (sys.platform.startswith("linux")): if (sys.platform.startswith("linux")):
if (platform.machine().endswith('64')): if (platform.machine().endswith('64')):
gcc_path=gcc_path+"/linux-x86_64/bin" gcc_path=gcc_path+"/linux-x86_64/bin"
else: else:
gcc_path=gcc_path+"/linux-x86/bin" gcc_path=gcc_path+"/linux-x86/bin"
elif (sys.platform.startswith("darwin")): elif (sys.platform.startswith("darwin")):
gcc_path=gcc_path+"/darwin-x86_64/bin" gcc_path=gcc_path+"/darwin-x86_64/bin"
env['SHLINKFLAGS'][1] = '-shared' env['SHLINKFLAGS'][1] = '-shared'
env['SHLIBSUFFIX'] = '.so' env['SHLIBSUFFIX'] = '.so'
elif (sys.platform.startswith('win')): elif (sys.platform.startswith('win')):
if (platform.machine().endswith('64')): if (platform.machine().endswith('64')):
gcc_path=gcc_path+"/windows-x86_64/bin" gcc_path=gcc_path+"/windows-x86_64/bin"
else: else:
gcc_path=gcc_path+"/windows-x86/bin" gcc_path=gcc_path+"/windows-x86/bin"
env['ENV']['PATH'] = gcc_path+":"+env['ENV']['PATH'] env['ENV']['PATH'] = gcc_path+":"+env['ENV']['PATH']
if env['android_arch']=='x86': if env['android_arch']=='x86':
env['CC'] = gcc_path+'/i686-linux-android-gcc' env['CC'] = gcc_path+'/i686-linux-android-gcc'
env['CXX'] = gcc_path+'/i686-linux-android-g++' env['CXX'] = gcc_path+'/i686-linux-android-g++'
env['AR'] = gcc_path+"/i686-linux-android-ar" env['AR'] = gcc_path+"/i686-linux-android-ar"
env['RANLIB'] = gcc_path+"/i686-linux-android-ranlib" env['RANLIB'] = gcc_path+"/i686-linux-android-ranlib"
env['AS'] = gcc_path+"/i686-linux-android-as" env['AS'] = gcc_path+"/i686-linux-android-as"
else: else:
env['CC'] = gcc_path+'/arm-linux-androideabi-gcc' env['CC'] = gcc_path+'/arm-linux-androideabi-gcc'
env['CXX'] = gcc_path+'/arm-linux-androideabi-g++' env['CXX'] = gcc_path+'/arm-linux-androideabi-g++'
env['AR'] = gcc_path+"/arm-linux-androideabi-ar" env['AR'] = gcc_path+"/arm-linux-androideabi-ar"
env['RANLIB'] = gcc_path+"/arm-linux-androideabi-ranlib" env['RANLIB'] = gcc_path+"/arm-linux-androideabi-ranlib"
env['AS'] = gcc_path+"/arm-linux-androideabi-as" env['AS'] = gcc_path+"/arm-linux-androideabi-as"
if env['android_arch']=='x86': if env['android_arch']=='x86':
env['ARCH'] = 'arch-x86' env['ARCH'] = 'arch-x86'
else: else:
env['ARCH'] = 'arch-arm' env['ARCH'] = 'arch-arm'
import string import string
#include path #include path
gcc_include=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH'] +"/usr/include" gcc_include=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH'] +"/usr/include"
ld_sysroot=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH'] ld_sysroot=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']
#glue_include=env["ANDROID_NDK_ROOT"]+"/sources/android/native_app_glue" #glue_include=env["ANDROID_NDK_ROOT"]+"/sources/android/native_app_glue"
ld_path=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']+"/usr/lib" ld_path=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']+"/usr/lib"
env.Append(CPPPATH=[gcc_include]) env.Append(CPPPATH=[gcc_include])
# env['CCFLAGS'] = string.split('-DNO_THREADS -MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -mthumb -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED ') # env['CCFLAGS'] = string.split('-DNO_THREADS -MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -mthumb -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED ')
env['neon_enabled']=False env['neon_enabled']=False
if env['android_arch']=='x86': if env['android_arch']=='x86':
env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__GLIBC__ -Wno-psabi -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED')) env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__GLIBC__ -Wno-psabi -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED'))
elif env["android_arch"]=="armv6": elif env["android_arch"]=="armv6":
env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_6__ -D__GLIBC__ -Wno-psabi -march=armv6 -mfpu=vfp -mfloat-abi=softfp -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED')) env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_6__ -D__GLIBC__ -Wno-psabi -march=armv6 -mfpu=vfp -mfloat-abi=softfp -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED'))
elif env["android_arch"]=="armv7": elif env["android_arch"]=="armv7":
env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -D__GLIBC__ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED')) env.Append(CCFLAGS=string.split('-DNO_STATVFS -fpic -ffunction-sections -funwind-tables -fstack-protector -fvisibility=hidden -D__ARM_ARCH_7__ -D__ARM_ARCH_7A__ -D__GLIBC__ -Wno-psabi -march=armv7-a -mfloat-abi=softfp -ftree-vectorize -funsafe-math-optimizations -fno-strict-aliasing -DANDROID -Wa,--noexecstack -DGLES2_ENABLED'))
if env['android_neon']=='yes': if env['android_neon']=='yes':
env['neon_enabled']=True env['neon_enabled']=True
env.Append(CCFLAGS=['-mfpu=neon','-D__ARM_NEON__']) env.Append(CCFLAGS=['-mfpu=neon','-D__ARM_NEON__'])
else: else:
env.Append(CCFLAGS=['-mfpu=vfpv3-d16']) env.Append(CCFLAGS=['-mfpu=vfpv3-d16'])
env.Append(LDPATH=[ld_path]) env.Append(LDPATH=[ld_path])
env.Append(LIBS=['OpenSLES']) env.Append(LIBS=['OpenSLES'])
# env.Append(LIBS=['c','m','stdc++','log','EGL','GLESv1_CM','GLESv2','OpenSLES','supc++','android']) # env.Append(LIBS=['c','m','stdc++','log','EGL','GLESv1_CM','GLESv2','OpenSLES','supc++','android'])
env.Append(LIBS=['EGL','OpenSLES','android']) env.Append(LIBS=['EGL','OpenSLES','android'])
env.Append(LIBS=['c','m','stdc++','log','GLESv1_CM','GLESv2', 'z']) env.Append(LIBS=['c','m','stdc++','log','GLESv1_CM','GLESv2', 'z'])
env["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack ") env["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack ")
env.Append(LINKFLAGS=["-Wl,-soname,libgodot_android.so"]) env.Append(LINKFLAGS=["-Wl,-soname,libgodot_android.so"])
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-O2', '-ffast-math','-fomit-frame-pointer']) env.Append(CCFLAGS=['-O2', '-ffast-math','-fomit-frame-pointer'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2', '-ffast-math','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2', '-ffast-math','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-D_DEBUG', '-g1', '-Wall', '-O0', '-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-D_DEBUG', '-g1', '-Wall', '-O0', '-DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']) env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC'])
env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED', '-DNO_FCNTL','-DMPC_FIXED_POINT']) env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED', '-DNO_FCNTL','-DMPC_FIXED_POINT'])
# env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT']) # env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT'])
# TODO: Move that to opus module's config # TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"): if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
if (env["android_arch"]=="armv6" or env["android_arch"]=="armv7"): if (env["android_arch"]=="armv6" or env["android_arch"]=="armv7"):
env.Append(CFLAGS=["-DOPUS_ARM_OPT"]) env.Append(CFLAGS=["-DOPUS_ARM_OPT"])
env.opus_fixed_point="yes" env.opus_fixed_point="yes"
if (env['android_stl']=='yes'): if (env['android_stl']=='yes'):
#env.Append(CCFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/system/include"]) #env.Append(CCFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/system/include"])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/include"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/include"])
if env['android_arch']=='x86': if env['android_arch']=='x86':
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/include"])
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86"]) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86"])
elif env['android_arch']=='armv6': elif env['android_arch']=='armv6':
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include"])
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi"]) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi"])
elif env["android_arch"]=="armv7": elif env["android_arch"]=="armv7":
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include"])
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"]) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"])
env.Append(LIBS=["gnustl_static","supc++"]) env.Append(LIBS=["gnustl_static","supc++"])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"])
#env.Append(CCFLAGS=["-I"+env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/stlport/stlport"]) #env.Append(CCFLAGS=["-I"+env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/stlport/stlport"])
#env.Append(CCFLAGS=["-I"+env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"]) #env.Append(CCFLAGS=["-I"+env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/include"])
#env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a"]) #env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a"])
else: else:
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/include"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/include"])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"]) env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"])
if env['android_arch']=='x86': if env['android_arch']=='x86':
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86"]) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86"])
elif env["android_arch"]=="armv6": elif env["android_arch"]=="armv6":
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi"]) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi"])
elif env["android_arch"]=="armv7": elif env["android_arch"]=="armv7":
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"]) env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"])
env.Append(LIBS=['gnustl_static']) env.Append(LIBS=['gnustl_static'])
env.Append(CCFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST']) env.Append(CCFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST'])
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.use_windows_spawn_fix() env.use_windows_spawn_fix()

View File

@@ -4,19 +4,19 @@ Import('env')
bb10_lib = [ bb10_lib = [
'bbutil.c', 'bbutil.c',
'os_bb10.cpp', 'os_bb10.cpp',
'audio_driver_bb10.cpp', 'audio_driver_bb10.cpp',
'godot_bb10.cpp', 'godot_bb10.cpp',
'payment_service.cpp', 'payment_service.cpp',
] ]
env_bps = env.Clone() env_bps = env.Clone()
if env['bb10_payment_service'] == "yes": if env['bb10_payment_service'] == "yes":
env_bps.Append(CPPFLAGS=['-DPAYMENT_SERVICE_ENABLED']) env_bps.Append(CPPFLAGS=['-DPAYMENT_SERVICE_ENABLED'])
if env['bb10_lgles_override'] == "yes": if env['bb10_lgles_override'] == "yes":
env_bps.Append(CPPFLAGS=['-DBB10_LGLES_OVERRIDE']) env_bps.Append(CPPFLAGS=['-DBB10_LGLES_OVERRIDE'])
prog = None prog = None

View File

@@ -5,85 +5,85 @@ import methods
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "BlackBerry 10" return "BlackBerry 10"
def can_build(): def can_build():
import os import os
if (not os.environ.has_key("QNX_TARGET")): if (not os.environ.has_key("QNX_TARGET")):
return False return False
return True return True
def get_opts(): def get_opts():
return [ return [
('QNX_HOST', 'path to qnx host', os.environ.get("QNX_HOST", 0)), ('QNX_HOST', 'path to qnx host', os.environ.get("QNX_HOST", 0)),
('QNX_TARGET', 'path to qnx target', os.environ.get("QNX_TARGET", 0)), ('QNX_TARGET', 'path to qnx target', os.environ.get("QNX_TARGET", 0)),
('QNX_CONFIGURATION', 'path to qnx configuration', os.environ.get("QNX_CONFIGURATION", 0)), ('QNX_CONFIGURATION', 'path to qnx configuration', os.environ.get("QNX_CONFIGURATION", 0)),
('qnx_target', 'Qnx target (armle or x86', 'armle'), ('qnx_target', 'Qnx target (armle or x86', 'armle'),
('bb10_payment_service', 'Enable Payment Service for BlackBerry10', 'yes'), ('bb10_payment_service', 'Enable Payment Service for BlackBerry10', 'yes'),
('bb10_lgles_override', 'Force legacy GLES (1.1) on iOS', 'no'), ('bb10_lgles_override', 'Force legacy GLES (1.1) on iOS', 'no'),
('bb10_exceptions', 'Use exceptions when compiling on bb10', 'no'), ('bb10_exceptions', 'Use exceptions when compiling on bb10', 'no'),
] ]
def get_flags(): def get_flags():
return [ return [
('tools', 'no'), ('tools', 'no'),
('builtin_zlib', 'yes'), ('builtin_zlib', 'yes'),
('module_theora_enabled', 'no'), ('module_theora_enabled', 'no'),
] ]
def configure(env): def configure(env):
if env['PLATFORM'] == 'win32': if env['PLATFORM'] == 'win32':
env.Tool('mingw') env.Tool('mingw')
env['SPAWN'] = methods.win32_spawn env['SPAWN'] = methods.win32_spawn
env['qnx_target_ver'] = env['qnx_target'] env['qnx_target_ver'] = env['qnx_target']
if env['qnx_target'] == "armle": if env['qnx_target'] == "armle":
env['qnx_prefix'] = 'ntoarmv7' env['qnx_prefix'] = 'ntoarmv7'
env['qnx_target_ver'] = 'armle-v7' env['qnx_target_ver'] = 'armle-v7'
else: else:
env['qnx_prefix'] = 'ntox86' env['qnx_prefix'] = 'ntox86'
env['OBJSUFFIX'] = ".qnx.${qnx_target}.o" env['OBJSUFFIX'] = ".qnx.${qnx_target}.o"
env['LIBSUFFIX'] = ".qnx.${qnx_target}.a" env['LIBSUFFIX'] = ".qnx.${qnx_target}.a"
env['PROGSUFFIX'] = ".qnx.${qnx_target}" env['PROGSUFFIX'] = ".qnx.${qnx_target}"
print("PROGSUFFIX: "+env['PROGSUFFIX']+" target: "+env['qnx_target']) print("PROGSUFFIX: "+env['PROGSUFFIX']+" target: "+env['qnx_target'])
env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/bin') env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/bin')
env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/usr/bin') env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/usr/bin')
env['ENV']['QNX_HOST'] = env['QNX_HOST'] env['ENV']['QNX_HOST'] = env['QNX_HOST']
env['ENV']['QNX_TARGET'] = env['QNX_TARGET'] env['ENV']['QNX_TARGET'] = env['QNX_TARGET']
env['ENV']['QNX_CONFIGURATION'] = env['QNX_CONFIGURATION'] env['ENV']['QNX_CONFIGURATION'] = env['QNX_CONFIGURATION']
env['CC'] = '$qnx_prefix-gcc' env['CC'] = '$qnx_prefix-gcc'
env['CXX'] = '$qnx_prefix-g++' env['CXX'] = '$qnx_prefix-g++'
env['AR'] = '$qnx_prefix-ar' env['AR'] = '$qnx_prefix-ar'
env['RANLIB'] = '$qnx_prefix-ranlib' env['RANLIB'] = '$qnx_prefix-ranlib'
env.Append(CPPPATH = ['#platform/bb10']) env.Append(CPPPATH = ['#platform/bb10'])
env.Append(LIBPATH = ['#platform/bb10/lib/$qnx_target', '#platform/bb10/lib/$qnx_target_ver']) env.Append(LIBPATH = ['#platform/bb10/lib/$qnx_target', '#platform/bb10/lib/$qnx_target_ver'])
env.Append(CCFLAGS = string.split('-DBB10_ENABLED -DUNIX_ENABLED -DGLES2_ENABLED -DGLES1_ENABLED -D_LITTLE_ENDIAN -DNO_THREADS -DNO_FCNTL')) env.Append(CCFLAGS = string.split('-DBB10_ENABLED -DUNIX_ENABLED -DGLES2_ENABLED -DGLES1_ENABLED -D_LITTLE_ENDIAN -DNO_THREADS -DNO_FCNTL'))
if env['bb10_exceptions']=="yes": if env['bb10_exceptions']=="yes":
env.Append(CCFLAGS = ['-fexceptions']) env.Append(CCFLAGS = ['-fexceptions'])
else: else:
env.Append(CCFLAGS = ['-fno-exceptions']) env.Append(CCFLAGS = ['-fno-exceptions'])
#env.Append(LINKFLAGS = string.split() #env.Append(LINKFLAGS = string.split()
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-O3','-DRELEASE_BUILD']) env.Append(CCFLAGS=['-O3','-DRELEASE_BUILD'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-g', '-O0','-DDEBUG_ENABLED', '-D_DEBUG']) env.Append(CCFLAGS=['-g', '-O0','-DDEBUG_ENABLED', '-D_DEBUG'])
env.Append(LINKFLAGS=['-g']) env.Append(LINKFLAGS=['-g'])
env.Append(LIBS=['bps', 'pps', 'screen', 'socket', 'EGL', 'GLESv2', 'GLESv1_CM', 'm', 'asound']) env.Append(LIBS=['bps', 'pps', 'screen', 'socket', 'EGL', 'GLESv2', 'GLESv1_CM', 'm', 'asound'])

View File

@@ -3,25 +3,25 @@
Import('env') Import('env')
common_haiku = [ common_haiku = [
'os_haiku.cpp', 'os_haiku.cpp',
'context_gl_haiku.cpp', 'context_gl_haiku.cpp',
'haiku_application.cpp', 'haiku_application.cpp',
'haiku_direct_window.cpp', 'haiku_direct_window.cpp',
'haiku_gl_view.cpp', 'haiku_gl_view.cpp',
'key_mapping_haiku.cpp', 'key_mapping_haiku.cpp',
'audio_driver_media_kit.cpp' 'audio_driver_media_kit.cpp'
] ]
target = env.Program( target = env.Program(
'#bin/godot', '#bin/godot',
['godot_haiku.cpp'] + common_haiku ['godot_haiku.cpp'] + common_haiku
) )
command = env.Command('#bin/godot.rsrc', '#platform/haiku/godot.rdef', command = env.Command('#bin/godot.rsrc', '#platform/haiku/godot.rdef',
['rc -o $TARGET $SOURCE']) ['rc -o $TARGET $SOURCE'])
def addResourcesAction(target = None, source = None, env = None): def addResourcesAction(target = None, source = None, env = None):
return env.Execute('xres -o ' + File(target)[0].path + ' bin/godot.rsrc') return env.Execute('xres -o ' + File(target)[0].path + ' bin/godot.rsrc')
env.AddPostAction(target, addResourcesAction) env.AddPostAction(target, addResourcesAction)
env.Depends(target, command) env.Depends(target, command)

View File

@@ -2,60 +2,60 @@ import os
import sys import sys
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "Haiku" return "Haiku"
def can_build(): def can_build():
if (os.name != "posix"): if (os.name != "posix"):
return False return False
if (sys.platform == "darwin"): if (sys.platform == "darwin"):
return False return False
return True return True
def get_opts(): def get_opts():
return [ return [
('debug_release', 'Add debug symbols to release version','no') ('debug_release', 'Add debug symbols to release version','no')
] ]
def get_flags(): def get_flags():
return [ return [
] ]
def configure(env): def configure(env):
is64 = sys.maxsize > 2**32 is64 = sys.maxsize > 2**32
if (env["bits"]=="default"): if (env["bits"]=="default"):
if (is64): if (is64):
env["bits"]="64" env["bits"]="64"
else: else:
env["bits"]="32" env["bits"]="32"
env.Append(CPPPATH = ['#platform/haiku']) env.Append(CPPPATH = ['#platform/haiku'])
env["CC"] = "gcc-x86" env["CC"] = "gcc-x86"
env["CXX"] = "g++-x86" env["CXX"] = "g++-x86"
if (env["target"]=="release"): if (env["target"]=="release"):
if (env["debug_release"]=="yes"): if (env["debug_release"]=="yes"):
env.Append(CCFLAGS=['-g2']) env.Append(CCFLAGS=['-g2'])
else: else:
env.Append(CCFLAGS=['-O3','-ffast-math']) env.Append(CCFLAGS=['-O3','-ffast-math'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-ffast-math','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2','-ffast-math','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-g2', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED']) env.Append(CCFLAGS=['-g2', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
#env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) #env.Append(CCFLAGS=['-DFREETYPE_ENABLED'])
env.Append(CPPFLAGS = ['-DPTHREAD_NO_RENAME']) # TODO: enable when we have pthread_setname_np env.Append(CPPFLAGS = ['-DPTHREAD_NO_RENAME']) # TODO: enable when we have pthread_setname_np
env.Append(CPPFLAGS = ['-DOPENGL_ENABLED', '-DMEDIA_KIT_ENABLED']) env.Append(CPPFLAGS = ['-DOPENGL_ENABLED', '-DMEDIA_KIT_ENABLED'])
env.Append(CPPFLAGS = ['-DUNIX_ENABLED', '-DGLES2_ENABLED', '-DGLES_OVER_GL']) env.Append(CPPFLAGS = ['-DUNIX_ENABLED', '-DGLES2_ENABLED', '-DGLES_OVER_GL'])
env.Append(LIBS = ['be', 'game', 'media', 'network', 'bnetapi', 'z', 'GL']) env.Append(LIBS = ['be', 'game', 'media', 'network', 'bnetapi', 'z', 'GL'])
import methods import methods
env.Append(BUILDERS = {'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl')}) env.Append(BUILDERS = {'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl')})
env.Append(BUILDERS = {'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl')}) env.Append(BUILDERS = {'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl')})
env.Append(BUILDERS = {'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl')}) env.Append(BUILDERS = {'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl')})

View File

@@ -4,19 +4,19 @@ Import('env')
iphone_lib = [ iphone_lib = [
'os_iphone.cpp', 'os_iphone.cpp',
#'rasterizer_iphone.cpp', #'rasterizer_iphone.cpp',
'audio_driver_iphone.cpp', 'audio_driver_iphone.cpp',
'sem_iphone.cpp', 'sem_iphone.cpp',
'gl_view.mm', 'gl_view.mm',
'main.m', 'main.m',
'app_delegate.mm', 'app_delegate.mm',
'view_controller.mm', 'view_controller.mm',
'game_center.mm', 'game_center.mm',
'in_app_store.mm', 'in_app_store.mm',
'icloud.mm', 'icloud.mm',
#'Appirater.m', #'Appirater.m',
'ios.mm', 'ios.mm',
] ]
#env.Depends('#core/math/vector3.h', 'vector3_psp.h') #env.Depends('#core/math/vector3.h', 'vector3_psp.h')
@@ -27,7 +27,7 @@ env_ios = env.Clone();
if env['ios_gles22_override'] == "yes": if env['ios_gles22_override'] == "yes":
env_ios.Append(CPPFLAGS=['-DGLES2_OVERRIDE']) env_ios.Append(CPPFLAGS=['-DGLES2_OVERRIDE'])
#if env['ios_appirater'] == "yes": #if env['ios_appirater'] == "yes":

View File

@@ -3,187 +3,187 @@ import sys
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "iOS" return "iOS"
def can_build(): def can_build():
import sys import sys
import os import os
if sys.platform == 'darwin' or os.environ.has_key("OSXCROSS_IOS"): if sys.platform == 'darwin' or os.environ.has_key("OSXCROSS_IOS"):
return True return True
return False return False
def get_opts(): def get_opts():
return [ return [
('IPHONEPLATFORM', 'name of the iphone platform', 'iPhoneOS'), ('IPHONEPLATFORM', 'name of the iphone platform', 'iPhoneOS'),
('IPHONEPATH', 'the path to iphone toolchain', '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain'), ('IPHONEPATH', 'the path to iphone toolchain', '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain'),
('IPHONESDK', 'path to the iphone SDK', '/Applications/Xcode.app/Contents/Developer/Platforms/${IPHONEPLATFORM}.platform/Developer/SDKs/${IPHONEPLATFORM}.sdk/'), ('IPHONESDK', 'path to the iphone SDK', '/Applications/Xcode.app/Contents/Developer/Platforms/${IPHONEPLATFORM}.platform/Developer/SDKs/${IPHONEPLATFORM}.sdk/'),
('game_center', 'Support for game center', 'yes'), ('game_center', 'Support for game center', 'yes'),
('store_kit', 'Support for in-app store', 'yes'), ('store_kit', 'Support for in-app store', 'yes'),
('icloud', 'Support for iCloud', 'yes'), ('icloud', 'Support for iCloud', 'yes'),
('ios_gles22_override', 'Force GLES2.0 on iOS', 'yes'), ('ios_gles22_override', 'Force GLES2.0 on iOS', 'yes'),
('ios_appirater', 'Enable Appirater', 'no'), ('ios_appirater', 'Enable Appirater', 'no'),
('ios_exceptions', 'Use exceptions when compiling on playbook', 'yes'), ('ios_exceptions', 'Use exceptions when compiling on playbook', 'yes'),
('ios_triple', 'Triple for ios toolchain', ''), ('ios_triple', 'Triple for ios toolchain', ''),
('ios_sim', 'Build simulator binary', 'no'), ('ios_sim', 'Build simulator binary', 'no'),
] ]
def get_flags(): def get_flags():
return [ return [
('tools', 'no'), ('tools', 'no'),
('webp', 'yes'), ('webp', 'yes'),
('builtin_zlib', 'yes'), ('builtin_zlib', 'yes'),
('openssl','builtin'), #use builtin openssl ('openssl','builtin'), #use builtin openssl
] ]
def configure(env): def configure(env):
env.Append(CPPPATH=['#platform/iphone']) env.Append(CPPPATH=['#platform/iphone'])
env['ENV']['PATH'] = env['IPHONEPATH']+"/Developer/usr/bin/:"+env['ENV']['PATH'] env['ENV']['PATH'] = env['IPHONEPATH']+"/Developer/usr/bin/:"+env['ENV']['PATH']
env['CC'] = '$IPHONEPATH/usr/bin/${ios_triple}clang' env['CC'] = '$IPHONEPATH/usr/bin/${ios_triple}clang'
env['CXX'] = '$IPHONEPATH/usr/bin/${ios_triple}clang++' env['CXX'] = '$IPHONEPATH/usr/bin/${ios_triple}clang++'
env['AR'] = '$IPHONEPATH/usr/bin/${ios_triple}ar' env['AR'] = '$IPHONEPATH/usr/bin/${ios_triple}ar'
env['RANLIB'] = '$IPHONEPATH/usr/bin/${ios_triple}ranlib' env['RANLIB'] = '$IPHONEPATH/usr/bin/${ios_triple}ranlib'
import string import string
if (env["ios_sim"]=="yes" or env["arch"] == "x86"): # i386, simulator if (env["ios_sim"]=="yes" or env["arch"] == "x86"): # i386, simulator
env["arch"]="x86" env["arch"]="x86"
env["bits"]="32" env["bits"]="32"
env['CCFLAGS'] = string.split('-arch i386 -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fasm-blocks -Wall -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -isysroot $IPHONESDK -mios-simulator-version-min=4.3 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"') env['CCFLAGS'] = string.split('-arch i386 -fobjc-abi-version=2 -fobjc-legacy-dispatch -fmessage-length=0 -fpascal-strings -fasm-blocks -Wall -D__IPHONE_OS_VERSION_MIN_REQUIRED=40100 -isysroot $IPHONESDK -mios-simulator-version-min=4.3 -DCUSTOM_MATRIX_TRANSFORM_H=\\\"build/iphone/matrix4_iphone.h\\\" -DCUSTOM_VECTOR3_TRANSFORM_H=\\\"build/iphone/vector3_iphone.h\\\"')
elif (env["arch"]=="arm64"): # arm64 elif (env["arch"]=="arm64"): # arm64
env["bits"] = "64" env["bits"] = "64"
env['CCFLAGS'] = string.split('-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -fvisibility=hidden -Wno-sign-conversion -MMD -MT dependencies -miphoneos-version-min=5.1.1 -isysroot $IPHONESDK') env['CCFLAGS'] = string.split('-fno-objc-arc -arch arm64 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -fvisibility=hidden -Wno-sign-conversion -MMD -MT dependencies -miphoneos-version-min=5.1.1 -isysroot $IPHONESDK')
env.Append(CPPFLAGS=['-DNEED_LONG_INT']) env.Append(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON']) env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
else: # armv7 else: # armv7
env["arch"] = "arm" env["arch"] = "arm"
env["bits"] = "32" env["bits"] = "32"
env['CCFLAGS'] = string.split('-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -fvisibility=hidden -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=5.1.1 -MMD -MT dependencies -isysroot $IPHONESDK') env['CCFLAGS'] = string.split('-fno-objc-arc -arch armv7 -fmessage-length=0 -fno-strict-aliasing -fdiagnostics-print-source-range-info -fdiagnostics-show-category=id -fdiagnostics-parseable-fixits -Wno-trigraphs -fpascal-strings -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-shorten-64-to-32 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk -fvisibility=hidden -Wno-sign-conversion -mthumb "-DIBOutlet=__attribute__((iboutlet))" "-DIBOutletCollection(ClassName)=__attribute__((iboutletcollection(ClassName)))" "-DIBAction=void)__attribute__((ibaction)" -miphoneos-version-min=5.1.1 -MMD -MT dependencies -isysroot $IPHONESDK')
if (env["arch"]=="x86"): if (env["arch"]=="x86"):
env['IPHONEPLATFORM'] = 'iPhoneSimulator' env['IPHONEPLATFORM'] = 'iPhoneSimulator'
env.Append(LINKFLAGS=['-arch', 'i386', '-mios-simulator-version-min=4.3', env.Append(LINKFLAGS=['-arch', 'i386', '-mios-simulator-version-min=4.3',
'-isysroot', '$IPHONESDK', '-isysroot', '$IPHONESDK',
#'-mmacosx-version-min=10.6', #'-mmacosx-version-min=10.6',
'-Xlinker', '-Xlinker',
'-objc_abi_version', '-objc_abi_version',
'-Xlinker', '2', '-Xlinker', '2',
'-framework', 'AudioToolbox', '-framework', 'AudioToolbox',
'-framework', 'AVFoundation', '-framework', 'AVFoundation',
'-framework', 'CoreAudio', '-framework', 'CoreAudio',
'-framework', 'CoreGraphics', '-framework', 'CoreGraphics',
'-framework', 'CoreMedia', '-framework', 'CoreMedia',
'-framework', 'Foundation', '-framework', 'Foundation',
'-framework', 'Security', '-framework', 'Security',
'-framework', 'UIKit', '-framework', 'UIKit',
'-framework', 'MediaPlayer', '-framework', 'MediaPlayer',
'-framework', 'OpenGLES', '-framework', 'OpenGLES',
'-framework', 'QuartzCore', '-framework', 'QuartzCore',
'-framework', 'SystemConfiguration', '-framework', 'SystemConfiguration',
'-F$IPHONESDK', '-F$IPHONESDK',
]) ])
elif (env["arch"]=="arm64"): elif (env["arch"]=="arm64"):
env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1', env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
'-isysroot', '$IPHONESDK', '-isysroot', '$IPHONESDK',
#'-stdlib=libc++', #'-stdlib=libc++',
'-framework', 'Foundation', '-framework', 'Foundation',
'-framework', 'UIKit', '-framework', 'UIKit',
'-framework', 'CoreGraphics', '-framework', 'CoreGraphics',
'-framework', 'OpenGLES', '-framework', 'OpenGLES',
'-framework', 'QuartzCore', '-framework', 'QuartzCore',
'-framework', 'CoreAudio', '-framework', 'CoreAudio',
'-framework', 'AudioToolbox', '-framework', 'AudioToolbox',
'-framework', 'SystemConfiguration', '-framework', 'SystemConfiguration',
'-framework', 'Security', '-framework', 'Security',
#'-framework', 'AdSupport', #'-framework', 'AdSupport',
'-framework', 'MediaPlayer', '-framework', 'MediaPlayer',
'-framework', 'AVFoundation', '-framework', 'AVFoundation',
'-framework', 'CoreMedia', '-framework', 'CoreMedia',
]) ])
else: else:
env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1', env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
'-isysroot', '$IPHONESDK', '-isysroot', '$IPHONESDK',
'-framework', 'Foundation', '-framework', 'Foundation',
'-framework', 'UIKit', '-framework', 'UIKit',
'-framework', 'CoreGraphics', '-framework', 'CoreGraphics',
'-framework', 'OpenGLES', '-framework', 'OpenGLES',
'-framework', 'QuartzCore', '-framework', 'QuartzCore',
'-framework', 'CoreAudio', '-framework', 'CoreAudio',
'-framework', 'AudioToolbox', '-framework', 'AudioToolbox',
'-framework', 'SystemConfiguration', '-framework', 'SystemConfiguration',
'-framework', 'Security', '-framework', 'Security',
#'-framework', 'AdSupport', #'-framework', 'AdSupport',
'-framework', 'MediaPlayer', '-framework', 'MediaPlayer',
'-framework', 'AVFoundation', '-framework', 'AVFoundation',
'-framework', 'CoreMedia', '-framework', 'CoreMedia',
]) ])
if env['game_center'] == 'yes': if env['game_center'] == 'yes':
env.Append(CPPFLAGS=['-fblocks', '-DGAME_CENTER_ENABLED']) env.Append(CPPFLAGS=['-fblocks', '-DGAME_CENTER_ENABLED'])
env.Append(LINKFLAGS=['-framework', 'GameKit']) env.Append(LINKFLAGS=['-framework', 'GameKit'])
if env['store_kit'] == 'yes': if env['store_kit'] == 'yes':
env.Append(CPPFLAGS=['-DSTOREKIT_ENABLED']) env.Append(CPPFLAGS=['-DSTOREKIT_ENABLED'])
env.Append(LINKFLAGS=['-framework', 'StoreKit']) env.Append(LINKFLAGS=['-framework', 'StoreKit'])
if env['icloud'] == 'yes': if env['icloud'] == 'yes':
env.Append(CPPFLAGS=['-DICLOUD_ENABLED']) env.Append(CPPFLAGS=['-DICLOUD_ENABLED'])
env.Append(CPPPATH = ['$IPHONESDK/usr/include', '$IPHONESDK/System/Library/Frameworks/OpenGLES.framework/Headers', '$IPHONESDK/System/Library/Frameworks/AudioUnit.framework/Headers']) env.Append(CPPPATH = ['$IPHONESDK/usr/include', '$IPHONESDK/System/Library/Frameworks/OpenGLES.framework/Headers', '$IPHONESDK/System/Library/Frameworks/AudioUnit.framework/Headers'])
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-O3', '-DNS_BLOCK_ASSERTIONS=1','-Wall', '-gdwarf-2']) # removed -ffast-math env.Append(CCFLAGS=['-O3', '-DNS_BLOCK_ASSERTIONS=1','-Wall', '-gdwarf-2']) # removed -ffast-math
env.Append(LINKFLAGS=['-O3']) # env.Append(LINKFLAGS=['-O3']) #
elif env["target"] == "release_debug": elif env["target"] == "release_debug":
env.Append(CCFLAGS=['-Os', '-DNS_BLOCK_ASSERTIONS=1','-Wall','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-Os', '-DNS_BLOCK_ASSERTIONS=1','-Wall','-DDEBUG_ENABLED'])
env.Append(LINKFLAGS=['-Os']) env.Append(LINKFLAGS=['-Os'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED']) env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-D_DEBUG', '-DDEBUG=1', '-gdwarf-2', '-Wall', '-O0', '-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-D_DEBUG', '-DDEBUG=1', '-gdwarf-2', '-Wall', '-O0', '-DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED']) env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED'])
elif (env["target"]=="profile"): elif (env["target"]=="profile"):
env.Append(CCFLAGS=['-g','-pg', '-Os']) env.Append(CCFLAGS=['-g','-pg', '-Os'])
env.Append(LINKFLAGS=['-pg']) env.Append(LINKFLAGS=['-pg'])
if (env["ios_sim"]=="yes"): #TODO: Check if needed? if (env["ios_sim"]=="yes"): #TODO: Check if needed?
env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.6' env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.6'
env['ENV']['CODESIGN_ALLOCATE'] = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate' env['ENV']['CODESIGN_ALLOCATE'] = '/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate'
env.Append(CPPFLAGS=['-DIPHONE_ENABLED', '-DUNIX_ENABLED', '-DGLES2_ENABLED', '-DMPC_FIXED_POINT']) env.Append(CPPFLAGS=['-DIPHONE_ENABLED', '-DUNIX_ENABLED', '-DGLES2_ENABLED', '-DMPC_FIXED_POINT'])
# TODO: Move that to opus module's config # TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"): if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
env.opus_fixed_point="yes" env.opus_fixed_point="yes"
if env["arch"]=="x86": if env["arch"]=="x86":
pass pass
elif(env["arch"]=="arm64"): elif(env["arch"]=="arm64"):
env.Append(CFLAGS=["-DOPUS_ARM64_OPT"]) env.Append(CFLAGS=["-DOPUS_ARM64_OPT"])
else: else:
env.Append(CFLAGS=["-DOPUS_ARM_OPT"]) env.Append(CFLAGS=["-DOPUS_ARM_OPT"])
if env['ios_exceptions'] == 'yes': if env['ios_exceptions'] == 'yes':
env.Append(CPPFLAGS=['-fexceptions']) env.Append(CPPFLAGS=['-fexceptions'])
else: else:
env.Append(CPPFLAGS=['-fno-exceptions']) env.Append(CPPFLAGS=['-fno-exceptions'])
#env['neon_enabled']=True #env['neon_enabled']=True
env['S_compiler'] = '$IPHONEPATH/Developer/usr/bin/gcc' env['S_compiler'] = '$IPHONEPATH/Developer/usr/bin/gcc'
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )

View File

@@ -3,21 +3,21 @@
Import('env') Import('env')
javascript_files = [ javascript_files = [
"os_javascript.cpp", "os_javascript.cpp",
"audio_driver_javascript.cpp", "audio_driver_javascript.cpp",
"javascript_main.cpp", "javascript_main.cpp",
"audio_server_javascript.cpp" "audio_server_javascript.cpp"
] ]
#obj = env.SharedObject('godot_javascript.cpp') #obj = env.SharedObject('godot_javascript.cpp')
env_javascript = env.Clone() env_javascript = env.Clone()
if env['target'] == "profile": if env['target'] == "profile":
env_javascript.Append(CPPFLAGS=['-DPROFILER_ENABLED']) env_javascript.Append(CPPFLAGS=['-DPROFILER_ENABLED'])
javascript_objects=[] javascript_objects=[]
for x in javascript_files: for x in javascript_files:
javascript_objects.append( env_javascript.Object( x ) ) javascript_objects.append( env_javascript.Object( x ) )
env.Append(LINKFLAGS=["-s","EXPORTED_FUNCTIONS=\"['_main','_audio_server_mix_function','_main_after_fs_sync']\""]) env.Append(LINKFLAGS=["-s","EXPORTED_FUNCTIONS=\"['_main','_audio_server_mix_function','_main_after_fs_sync']\""])

View File

@@ -3,100 +3,100 @@ import sys
import string import string
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "JavaScript" return "JavaScript"
def can_build(): def can_build():
import os import os
if (not os.environ.has_key("EMSCRIPTEN_ROOT")): if (not os.environ.has_key("EMSCRIPTEN_ROOT")):
return False return False
return True return True
def get_opts(): def get_opts():
return [ return [
['compress','Compress JS Executable','no'] ['compress','Compress JS Executable','no']
] ]
def get_flags(): def get_flags():
return [ return [
('tools', 'no'), ('tools', 'no'),
('builtin_zlib', 'yes'), ('builtin_zlib', 'yes'),
('module_speex_enabled', 'no'), ('module_speex_enabled', 'no'),
('module_etc1_enabled', 'no'), ('module_etc1_enabled', 'no'),
('module_mpc_enabled', 'no'), ('module_mpc_enabled', 'no'),
('module_theora_enabled', 'no'), ('module_theora_enabled', 'no'),
] ]
def configure(env): def configure(env):
env['ENV'] = os.environ; env['ENV'] = os.environ;
env.use_windows_spawn_fix('javascript') env.use_windows_spawn_fix('javascript')
env.Append(CPPPATH=['#platform/javascript']) env.Append(CPPPATH=['#platform/javascript'])
em_path=os.environ["EMSCRIPTEN_ROOT"] em_path=os.environ["EMSCRIPTEN_ROOT"]
env['ENV']['PATH'] = em_path+":"+env['ENV']['PATH'] env['ENV']['PATH'] = em_path+":"+env['ENV']['PATH']
env['CC'] = em_path+'/emcc' env['CC'] = em_path+'/emcc'
env['CXX'] = em_path+'/emcc' env['CXX'] = em_path+'/emcc'
#env['AR'] = em_path+"/emar" #env['AR'] = em_path+"/emar"
env['AR'] = em_path+"/emcc" env['AR'] = em_path+"/emcc"
env['ARFLAGS'] = "-o" env['ARFLAGS'] = "-o"
# env['RANLIB'] = em_path+"/emranlib" # env['RANLIB'] = em_path+"/emranlib"
env['RANLIB'] = em_path + "/emcc" env['RANLIB'] = em_path + "/emcc"
env['OBJSUFFIX'] = '.bc' env['OBJSUFFIX'] = '.bc'
env['LIBSUFFIX'] = '.bc' env['LIBSUFFIX'] = '.bc'
env['CCCOM'] = "$CC -o $TARGET $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES" env['CCCOM'] = "$CC -o $TARGET $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"
env['CXXCOM'] = "$CC -o $TARGET $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES" env['CXXCOM'] = "$CC -o $TARGET $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"
# env.Append(LIBS=['c','m','stdc++','log','GLESv1_CM','GLESv2']) # env.Append(LIBS=['c','m','stdc++','log','GLESv1_CM','GLESv2'])
# env["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack ") # env["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack ")
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-O2']) env.Append(CCFLAGS=['-O2'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-O2', '-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-O2', '-DDEBUG_ENABLED'])
#env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-g4', '-DDEBUG_ENABLED']) #env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-g4', '-DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']) env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC'])
# TODO: Move that to opus module's config # TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"): if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
env.opus_fixed_point = "yes" env.opus_fixed_point = "yes"
env.Append(CPPFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST','-fno-rtti']) env.Append(CPPFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST','-fno-rtti'])
env.Append(CPPFLAGS=['-DJAVASCRIPT_ENABLED', '-DUNIX_ENABLED', '-DPTHREAD_NO_RENAME', '-DNO_FCNTL','-DMPC_FIXED_POINT','-DTYPED_METHOD_BIND','-DNO_THREADS']) env.Append(CPPFLAGS=['-DJAVASCRIPT_ENABLED', '-DUNIX_ENABLED', '-DPTHREAD_NO_RENAME', '-DNO_FCNTL','-DMPC_FIXED_POINT','-DTYPED_METHOD_BIND','-DNO_THREADS'])
env.Append(CPPFLAGS=['-DGLES2_ENABLED']) env.Append(CPPFLAGS=['-DGLES2_ENABLED'])
env.Append(CPPFLAGS=['-DGLES_NO_CLIENT_ARRAYS']) env.Append(CPPFLAGS=['-DGLES_NO_CLIENT_ARRAYS'])
env.Append(CPPFLAGS=['-s','ASM_JS=1']) env.Append(CPPFLAGS=['-s','ASM_JS=1'])
env.Append(CPPFLAGS=['-s','FULL_ES2=1']) env.Append(CPPFLAGS=['-s','FULL_ES2=1'])
# env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT']) # env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT'])
if (env["compress"]=="yes"): if (env["compress"]=="yes"):
lzma_binpath = em_path+"/third_party/lzma.js/lzma-native" lzma_binpath = em_path+"/third_party/lzma.js/lzma-native"
lzma_decoder = em_path+"/third_party/lzma.js/lzma-decoder.js" lzma_decoder = em_path+"/third_party/lzma.js/lzma-decoder.js"
lzma_dec = "LZMA.decompress" lzma_dec = "LZMA.decompress"
env.Append(LINKFLAGS=['--compression',lzma_binpath+","+lzma_decoder+","+lzma_dec]) env.Append(LINKFLAGS=['--compression',lzma_binpath+","+lzma_decoder+","+lzma_dec])
env.Append(LINKFLAGS=['-s','ASM_JS=1']) env.Append(LINKFLAGS=['-s','ASM_JS=1'])
env.Append(LINKFLAGS=['-O2']) env.Append(LINKFLAGS=['-O2'])
#env.Append(LINKFLAGS=['-g4']) #env.Append(LINKFLAGS=['-g4'])
#print "CCCOM is:", env.subst('$CCCOM') #print "CCCOM is:", env.subst('$CCCOM')
#print "P: ", env['p'], " Platofrm: ", env['platform'] #print "P: ", env['p'], " Platofrm: ", env['platform']
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
#env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) #env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )

View File

@@ -3,13 +3,13 @@
Import('env') Import('env')
files = [ files = [
'os_osx.mm', 'os_osx.mm',
'godot_main_osx.mm', 'godot_main_osx.mm',
'audio_driver_osx.cpp', 'audio_driver_osx.cpp',
'sem_osx.cpp', 'sem_osx.cpp',
# 'context_gl_osx.cpp', # 'context_gl_osx.cpp',
'dir_access_osx.mm', 'dir_access_osx.mm',
'joystick_osx.cpp', 'joystick_osx.cpp',
] ]
env.Program('#bin/godot',files) env.Program('#bin/godot',files)

View File

@@ -4,99 +4,99 @@ import sys
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "OSX" return "OSX"
def can_build(): def can_build():
if (sys.platform == "darwin" or os.environ.has_key("OSXCROSS_ROOT")): if (sys.platform == "darwin" or os.environ.has_key("OSXCROSS_ROOT")):
return True return True
return False return False
def get_opts(): def get_opts():
return [ return [
('force_64_bits','Force 64 bits binary','no'), ('force_64_bits','Force 64 bits binary','no'),
('osxcross_sdk','OSXCross SDK version','darwin14'), ('osxcross_sdk','OSXCross SDK version','darwin14'),
] ]
def get_flags(): def get_flags():
return [ return [
] ]
def configure(env): def configure(env):
env.Append(CPPPATH=['#platform/osx']) env.Append(CPPPATH=['#platform/osx'])
if (env["bits"]=="default"): if (env["bits"]=="default"):
env["bits"]="32" env["bits"]="32"
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-O2','-ffast-math','-fomit-frame-pointer','-ftree-vectorize','-msse2']) env.Append(CCFLAGS=['-O2','-ffast-math','-fomit-frame-pointer','-ftree-vectorize','-msse2'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-g3', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED']) env.Append(CCFLAGS=['-g3', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
if (not os.environ.has_key("OSXCROSS_ROOT")): if (not os.environ.has_key("OSXCROSS_ROOT")):
#regular native build #regular native build
if (env["bits"]=="64"): if (env["bits"]=="64"):
env.Append(CCFLAGS=['-arch', 'x86_64']) env.Append(CCFLAGS=['-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'x86_64']) env.Append(LINKFLAGS=['-arch', 'x86_64'])
elif (env["bits"]=="32"): elif (env["bits"]=="32"):
env.Append(CCFLAGS=['-arch', 'i386']) env.Append(CCFLAGS=['-arch', 'i386'])
env.Append(LINKFLAGS=['-arch', 'i386']) env.Append(LINKFLAGS=['-arch', 'i386'])
else: else:
env.Append(CCFLAGS=['-arch', 'i386', '-arch', 'x86_64']) env.Append(CCFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'i386', '-arch', 'x86_64']) env.Append(LINKFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
else: else:
#osxcross build #osxcross build
root=os.environ.get("OSXCROSS_ROOT",0) root=os.environ.get("OSXCROSS_ROOT",0)
if env["bits"]=="64": if env["bits"]=="64":
basecmd=root+"/target/bin/x86_64-apple-"+env["osxcross_sdk"]+"-" basecmd=root+"/target/bin/x86_64-apple-"+env["osxcross_sdk"]+"-"
else: else:
basecmd=root+"/target/bin/i386-apple-"+env["osxcross_sdk"]+"-" basecmd=root+"/target/bin/i386-apple-"+env["osxcross_sdk"]+"-"
env['CC'] = basecmd+"cc" env['CC'] = basecmd+"cc"
env['CXX'] = basecmd+"c++" env['CXX'] = basecmd+"c++"
env['AR'] = basecmd+"ar" env['AR'] = basecmd+"ar"
env['RANLIB'] = basecmd+"ranlib" env['RANLIB'] = basecmd+"ranlib"
env['AS'] = basecmd+"as" env['AS'] = basecmd+"as"
env.Append(CPPFLAGS=["-DAPPLE_STYLE_KEYS"]) env.Append(CPPFLAGS=["-DAPPLE_STYLE_KEYS"])
env.Append(CPPFLAGS=['-DUNIX_ENABLED','-DGLES2_ENABLED','-DOSX_ENABLED']) env.Append(CPPFLAGS=['-DUNIX_ENABLED','-DGLES2_ENABLED','-DOSX_ENABLED'])
env.Append(LIBS=['pthread']) env.Append(LIBS=['pthread'])
#env.Append(CPPFLAGS=['-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-mmacosx-version-min=10.4']) #env.Append(CPPFLAGS=['-F/Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-mmacosx-version-min=10.4'])
#env.Append(LINKFLAGS=['-mmacosx-version-min=10.4', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk']) #env.Append(LINKFLAGS=['-mmacosx-version-min=10.4', '-isysroot', '/Developer/SDKs/MacOSX10.4u.sdk', '-Wl,-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk'])
env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit','-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback']) env.Append(LINKFLAGS=['-framework', 'Cocoa', '-framework', 'Carbon', '-framework', 'OpenGL', '-framework', 'AGL', '-framework', 'AudioUnit','-lz', '-framework', 'IOKit', '-framework', 'ForceFeedback'])
if (env["CXX"]=="clang++"): if (env["CXX"]=="clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"]="clang" env["CC"]="clang"
env["LD"]="clang++" env["LD"]="clang++"
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
#env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) #env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
env["x86_libtheora_opt_gcc"]=True env["x86_libtheora_opt_gcc"]=True

View File

@@ -4,7 +4,7 @@ Import('env')
common_server=[\ common_server=[\
"os_server.cpp",\ "os_server.cpp",\
] ]
env.Program('#bin/godot_server',['godot_server.cpp']+common_server) env.Program('#bin/godot_server',['godot_server.cpp']+common_server)

View File

@@ -4,73 +4,73 @@ import sys
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "Server" return "Server"
def can_build(): def can_build():
if (os.name!="posix"): if (os.name!="posix"):
return False return False
return True # enabled return True # enabled
def get_opts(): def get_opts():
return [ return [
('use_llvm','Use llvm compiler','no'), ('use_llvm','Use llvm compiler','no'),
('force_32_bits','Force 32 bits binary','no') ('force_32_bits','Force 32 bits binary','no')
] ]
def get_flags(): def get_flags():
return [ return [
] ]
def configure(env): def configure(env):
env.Append(CPPPATH=['#platform/server']) env.Append(CPPPATH=['#platform/server'])
if (env["use_llvm"]=="yes"): if (env["use_llvm"]=="yes"):
env["CC"]="clang" env["CC"]="clang"
env["CXX"]="clang++" env["CXX"]="clang++"
env["LD"]="clang++" env["LD"]="clang++"
is64=sys.maxsize > 2**32 is64=sys.maxsize > 2**32
if (env["bits"]=="default"): if (env["bits"]=="default"):
if (is64): if (is64):
env["bits"]="64" env["bits"]="64"
else: else:
env["bits"]="32" env["bits"]="32"
#if (env["tools"]=="no"): #if (env["tools"]=="no"):
# #no tools suffix # #no tools suffix
# env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX'] # env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX']
# env['LIBSUFFIX'] = ".nt"+env['LIBSUFFIX'] # env['LIBSUFFIX'] = ".nt"+env['LIBSUFFIX']
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-O2','-ffast-math','-fomit-frame-pointer']) env.Append(CCFLAGS=['-O2','-ffast-math','-fomit-frame-pointer'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-ffast-math','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2','-ffast-math','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-g2', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED']) env.Append(CCFLAGS=['-g2', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
env.Append(CPPFLAGS=['-DSERVER_ENABLED','-DUNIX_ENABLED']) env.Append(CPPFLAGS=['-DSERVER_ENABLED','-DUNIX_ENABLED'])
env.Append(LIBS=['pthread','z']) #TODO detect linux/BSD! env.Append(LIBS=['pthread','z']) #TODO detect linux/BSD!
if (env["CXX"]=="clang++"): if (env["CXX"]=="clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"]="clang" env["CC"]="clang"
env["LD"]="clang++" env["LD"]="clang++"

View File

@@ -4,14 +4,14 @@ Import('env')
common_win=[ common_win=[
"context_gl_win.cpp", "context_gl_win.cpp",
"os_windows.cpp", "os_windows.cpp",
"ctxgl_procaddr.cpp", "ctxgl_procaddr.cpp",
"key_mapping_win.cpp", "key_mapping_win.cpp",
"tcp_server_winsock.cpp", "tcp_server_winsock.cpp",
"packet_peer_udp_winsock.cpp", "packet_peer_udp_winsock.cpp",
"stream_peer_winsock.cpp", "stream_peer_winsock.cpp",
"joystick.cpp", "joystick.cpp",
] ]
restarget="godot_res"+env["OBJSUFFIX"] restarget="godot_res"+env["OBJSUFFIX"]
@@ -24,6 +24,6 @@ env.Program('#bin/godot',['godot_win.cpp']+common_win,PROGSUFFIX=env["PROGSUFFIX
# Microsoft Visual Studio Project Generation # Microsoft Visual Studio Project Generation
if (env['vsproj'])=="yes": if (env['vsproj'])=="yes":
env.vs_srcs = env.vs_srcs + ["platform/windows/godot_win.cpp"] env.vs_srcs = env.vs_srcs + ["platform/windows/godot_win.cpp"]
for x in common_win: for x in common_win:
env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)] env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)]

View File

@@ -92,361 +92,361 @@ import sys
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "Windows" return "Windows"
def can_build(): def can_build():
if (os.name=="nt"): if (os.name=="nt"):
#building natively on windows! #building natively on windows!
if (os.getenv("VSINSTALLDIR")): if (os.getenv("VSINSTALLDIR")):
return True return True
else: else:
print("\nMSVC not detected, attempting Mingw.") print("\nMSVC not detected, attempting Mingw.")
mingw32 = "" mingw32 = ""
mingw64 = "" mingw64 = ""
if ( os.getenv("MINGW32_PREFIX") ) : if ( os.getenv("MINGW32_PREFIX") ) :
mingw32 = os.getenv("MINGW32_PREFIX") mingw32 = os.getenv("MINGW32_PREFIX")
if ( os.getenv("MINGW64_PREFIX") ) : if ( os.getenv("MINGW64_PREFIX") ) :
mingw64 = os.getenv("MINGW64_PREFIX") mingw64 = os.getenv("MINGW64_PREFIX")
test = "gcc --version > NUL 2>&1" test = "gcc --version > NUL 2>&1"
if os.system(test)!= 0 and os.system(mingw32+test)!=0 and os.system(mingw64+test)!=0 : if os.system(test)!= 0 and os.system(mingw32+test)!=0 and os.system(mingw64+test)!=0 :
print("- could not detect gcc.") print("- could not detect gcc.")
print("Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH.\n") print("Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH.\n")
return False return False
else: else:
print("- gcc detected.") print("- gcc detected.")
return True return True
if (os.name=="posix"): if (os.name=="posix"):
mingw = "i586-mingw32msvc-" mingw = "i586-mingw32msvc-"
mingw64 = "x86_64-w64-mingw32-" mingw64 = "x86_64-w64-mingw32-"
mingw32 = "i686-w64-mingw32-" mingw32 = "i686-w64-mingw32-"
if (os.getenv("MINGW32_PREFIX")): if (os.getenv("MINGW32_PREFIX")):
mingw32=os.getenv("MINGW32_PREFIX") mingw32=os.getenv("MINGW32_PREFIX")
mingw = mingw32 mingw = mingw32
if (os.getenv("MINGW64_PREFIX")): if (os.getenv("MINGW64_PREFIX")):
mingw64=os.getenv("MINGW64_PREFIX") mingw64=os.getenv("MINGW64_PREFIX")
test = "gcc --version &>/dev/null" test = "gcc --version &>/dev/null"
if (os.system(mingw+test) == 0 or os.system(mingw64+test) == 0 or os.system(mingw32+test) == 0): if (os.system(mingw+test) == 0 or os.system(mingw64+test) == 0 or os.system(mingw32+test) == 0):
return True return True
return False return False
def get_opts(): def get_opts():
mingw="" mingw=""
mingw32="" mingw32=""
mingw64="" mingw64=""
if ( os.name == "posix" ): if ( os.name == "posix" ):
mingw = "i586-mingw32msvc-" mingw = "i586-mingw32msvc-"
mingw32 = "i686-w64-mingw32-" mingw32 = "i686-w64-mingw32-"
mingw64 = "x86_64-w64-mingw32-" mingw64 = "x86_64-w64-mingw32-"
if os.system(mingw32+"gcc --version &>/dev/null") != 0 : if os.system(mingw32+"gcc --version &>/dev/null") != 0 :
mingw32 = mingw mingw32 = mingw
if (os.getenv("MINGW32_PREFIX")): if (os.getenv("MINGW32_PREFIX")):
mingw32=os.getenv("MINGW32_PREFIX") mingw32=os.getenv("MINGW32_PREFIX")
mingw = mingw32 mingw = mingw32
if (os.getenv("MINGW64_PREFIX")): if (os.getenv("MINGW64_PREFIX")):
mingw64=os.getenv("MINGW64_PREFIX") mingw64=os.getenv("MINGW64_PREFIX")
return [ return [
('mingw_prefix','Mingw Prefix',mingw32), ('mingw_prefix','Mingw Prefix',mingw32),
('mingw_prefix_64','Mingw Prefix 64 bits',mingw64), ('mingw_prefix_64','Mingw Prefix 64 bits',mingw64),
] ]
def get_flags(): def get_flags():
return [ return [
('builtin_zlib', 'yes'), ('builtin_zlib', 'yes'),
('openssl','builtin'), #use builtin openssl ('openssl','builtin'), #use builtin openssl
] ]
def build_res_file( target, source, env ): def build_res_file( target, source, env ):
cmdbase = "" cmdbase = ""
if (env["bits"] == "32"): if (env["bits"] == "32"):
cmdbase = env['mingw_prefix'] cmdbase = env['mingw_prefix']
else: else:
cmdbase = env['mingw_prefix_64'] cmdbase = env['mingw_prefix_64']
CPPPATH = env['CPPPATH'] CPPPATH = env['CPPPATH']
cmdbase = cmdbase + 'windres --include-dir . ' cmdbase = cmdbase + 'windres --include-dir . '
import subprocess import subprocess
for x in range(len(source)): for x in range(len(source)):
cmd = cmdbase + '-i ' + str(source[x]) + ' -o ' + str(target[x]) cmd = cmdbase + '-i ' + str(source[x]) + ' -o ' + str(target[x])
try: try:
out = subprocess.Popen(cmd,shell = True,stderr = subprocess.PIPE).communicate() out = subprocess.Popen(cmd,shell = True,stderr = subprocess.PIPE).communicate()
if len(out[1]): if len(out[1]):
return 1 return 1
except: except:
return 1 return 1
return 0 return 0
def configure(env): def configure(env):
env.Append(CPPPATH=['#platform/windows']) env.Append(CPPPATH=['#platform/windows'])
env['is_mingw']=False env['is_mingw']=False
if (os.name=="nt" and os.getenv("VSINSTALLDIR")!=None): if (os.name=="nt" and os.getenv("VSINSTALLDIR")!=None):
#build using visual studio #build using visual studio
env['ENV']['TMP'] = os.environ['TMP'] env['ENV']['TMP'] = os.environ['TMP']
env.Append(CPPPATH=['#platform/windows/include']) env.Append(CPPPATH=['#platform/windows/include'])
env.Append(LIBPATH=['#platform/windows/lib']) env.Append(LIBPATH=['#platform/windows/lib'])
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['/O2']) env.Append(CCFLAGS=['/O2'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS']) env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup']) env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED']) env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
elif (env["target"]=="debug_release"): elif (env["target"]=="debug_release"):
env.Append(CCFLAGS=['/Z7','/Od']) env.Append(CCFLAGS=['/Z7','/Od'])
env.Append(LINKFLAGS=['/DEBUG']) env.Append(LINKFLAGS=['/DEBUG'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS']) env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup']) env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['/Z7','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED','/DD3D_DEBUG_INFO','/Od']) env.Append(CCFLAGS=['/Z7','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED','/DD3D_DEBUG_INFO','/Od'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG']) env.Append(LINKFLAGS=['/DEBUG'])
env.Append(CCFLAGS=['/MT','/Gd','/GR','/nologo']) env.Append(CCFLAGS=['/MT','/Gd','/GR','/nologo'])
env.Append(CXXFLAGS=['/TP']) env.Append(CXXFLAGS=['/TP'])
env.Append(CPPFLAGS=['/DMSVC', '/GR', ]) env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"]) env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
env.Append(CCFLAGS=['/DWINDOWS_ENABLED']) env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED']) env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
env.Append(CCFLAGS=['/DWIN32']) env.Append(CCFLAGS=['/DWIN32'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND']) env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/DGLES2_ENABLED']) env.Append(CCFLAGS=['/DGLES2_ENABLED'])
LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32', 'shell32','advapi32','dinput8','dxguid'] LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32', 'shell32','advapi32','dinput8','dxguid']
env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS]) env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS])
env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"]) env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"])
if (os.getenv("DXSDK_DIR")): if (os.getenv("DXSDK_DIR")):
DIRECTX_PATH=os.getenv("DXSDK_DIR") DIRECTX_PATH=os.getenv("DXSDK_DIR")
else: else:
DIRECTX_PATH="C:/Program Files/Microsoft DirectX SDK (March 2009)" DIRECTX_PATH="C:/Program Files/Microsoft DirectX SDK (March 2009)"
if (os.getenv("VCINSTALLDIR")): if (os.getenv("VCINSTALLDIR")):
VC_PATH=os.getenv("VCINSTALLDIR") VC_PATH=os.getenv("VCINSTALLDIR")
else: else:
VC_PATH="" VC_PATH=""
env.Append(CCFLAGS=["/I" + p for p in os.getenv("INCLUDE").split(";")]) env.Append(CCFLAGS=["/I" + p for p in os.getenv("INCLUDE").split(";")])
env.Append(LIBPATH=[p for p in os.getenv("LIB").split(";")]) env.Append(LIBPATH=[p for p in os.getenv("LIB").split(";")])
env.Append(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"]) env.Append(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"])
env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"]) env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"])
env['ENV'] = os.environ; env['ENV'] = os.environ;
# This detection function needs the tools env (that is env['ENV'], not SCons's env), and that is why it's this far bellow in the code # This detection function needs the tools env (that is env['ENV'], not SCons's env), and that is why it's this far bellow in the code
compiler_version_str = detect_visual_c_compiler_version(env['ENV']) compiler_version_str = detect_visual_c_compiler_version(env['ENV'])
# Note: this detection/override code from here onward should be here instead of in SConstruct because it's platform and compiler specific (MSVC/Windows) # Note: this detection/override code from here onward should be here instead of in SConstruct because it's platform and compiler specific (MSVC/Windows)
if(env["bits"] != "default"): if(env["bits"] != "default"):
print "Error: bits argument is disabled for MSVC" print "Error: bits argument is disabled for MSVC"
print ("Bits argument is not supported for MSVC compilation. Architecture depends on the Native/Cross Compile Tools Prompt/Developer Console (or Visual Studio settings)" print ("Bits argument is not supported for MSVC compilation. Architecture depends on the Native/Cross Compile Tools Prompt/Developer Console (or Visual Studio settings)"
+" that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=windows) and SCons will attempt to detect what MSVC compiler" +" that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=windows) and SCons will attempt to detect what MSVC compiler"
+" will be executed and inform you.") +" will be executed and inform you.")
sys.exit() sys.exit()
# Forcing bits argument because MSVC does not have a flag to set this through SCons... it's different compilers (cl.exe's) called from the propper command prompt # Forcing bits argument because MSVC does not have a flag to set this through SCons... it's different compilers (cl.exe's) called from the propper command prompt
# that decide the architecture that is build for. Scons can only detect the os.getenviron (because vsvarsall.bat sets a lot of stuff for cl.exe to work with) # that decide the architecture that is build for. Scons can only detect the os.getenviron (because vsvarsall.bat sets a lot of stuff for cl.exe to work with)
env["bits"]="32" env["bits"]="32"
env["x86_libtheora_opt_vc"]=True env["x86_libtheora_opt_vc"]=True
print "Detected MSVC compiler: "+compiler_version_str print "Detected MSVC compiler: "+compiler_version_str
# If building for 64bit architecture, disable assembly optimisations for 32 bit builds (theora as of writting)... vc compiler for 64bit can not compile _asm # If building for 64bit architecture, disable assembly optimisations for 32 bit builds (theora as of writting)... vc compiler for 64bit can not compile _asm
if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"): if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"):
env["bits"]="64" env["bits"]="64"
env["x86_libtheora_opt_vc"]=False env["x86_libtheora_opt_vc"]=False
print "Compiled program architecture will be a 64 bit executable (forcing bits=64)." print "Compiled program architecture will be a 64 bit executable (forcing bits=64)."
elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"): elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"):
print "Compiled program architecture will be a 32 bit executable. (forcing bits=32)." print "Compiled program architecture will be a 32 bit executable. (forcing bits=32)."
else: else:
print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup." print "Failed to detect MSVC compiler architecture version... Defaulting to 32bit executable settings (forcing bits=32). Compilation attempt will continue, but SCons can not detect for what architecture this build is compiled for. You should check your settings/compilation setup."
if env["bits"]=="64": if env["bits"]=="64":
env.Append(CCFLAGS=['/D_WIN64']) env.Append(CCFLAGS=['/D_WIN64'])
else: else:
# Workaround for MinGW. See: # Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32 # http://www.scons.org/wiki/LongCmdLinesOnWin32
env.use_windows_spawn_fix() env.use_windows_spawn_fix()
#build using mingw #build using mingw
if (os.name=="nt"): if (os.name=="nt"):
env['ENV']['TMP'] = os.environ['TMP'] #way to go scons, you can be so stupid sometimes env['ENV']['TMP'] = os.environ['TMP'] #way to go scons, you can be so stupid sometimes
else: else:
env["PROGSUFFIX"]=env["PROGSUFFIX"]+".exe" # for linux cross-compilation env["PROGSUFFIX"]=env["PROGSUFFIX"]+".exe" # for linux cross-compilation
mingw_prefix="" mingw_prefix=""
if (env["bits"]=="default"): if (env["bits"]=="default"):
env["bits"]="32" env["bits"]="32"
if (env["bits"]=="32"): if (env["bits"]=="32"):
env.Append(LINKFLAGS=['-static']) env.Append(LINKFLAGS=['-static'])
env.Append(LINKFLAGS=['-static-libgcc']) env.Append(LINKFLAGS=['-static-libgcc'])
env.Append(LINKFLAGS=['-static-libstdc++']) env.Append(LINKFLAGS=['-static-libstdc++'])
mingw_prefix=env["mingw_prefix"]; mingw_prefix=env["mingw_prefix"];
else: else:
env.Append(LINKFLAGS=['-static']) env.Append(LINKFLAGS=['-static'])
mingw_prefix=env["mingw_prefix_64"]; mingw_prefix=env["mingw_prefix_64"];
nulstr="" nulstr=""
if (os.name=="posix"): if (os.name=="posix"):
nulstr=">/dev/null" nulstr=">/dev/null"
else: else:
nulstr=">nul" nulstr=">nul"
# if os.system(mingw_prefix+"gcc --version"+nulstr)!=0: # if os.system(mingw_prefix+"gcc --version"+nulstr)!=0:
# #not really super consistent but.. # #not really super consistent but..
# print("Can't find Windows compiler: "+mingw_prefix) # print("Can't find Windows compiler: "+mingw_prefix)
# sys.exit(255) # sys.exit(255)
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['-msse2']) env.Append(CCFLAGS=['-msse2'])
if (env["bits"]=="64"): if (env["bits"]=="64"):
env.Append(CCFLAGS=['-O3']) env.Append(CCFLAGS=['-O3'])
else: else:
env.Append(CCFLAGS=['-O2']) env.Append(CCFLAGS=['-O2'])
env.Append(LINKFLAGS=['-Wl,--subsystem,windows']) env.Append(LINKFLAGS=['-Wl,--subsystem,windows'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-g', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED']) env.Append(CCFLAGS=['-g', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
env["CC"]=mingw_prefix+"gcc" env["CC"]=mingw_prefix+"gcc"
env['AS']=mingw_prefix+"as" env['AS']=mingw_prefix+"as"
env['CXX'] = mingw_prefix+"g++" env['CXX'] = mingw_prefix+"g++"
env['AR'] = mingw_prefix+"ar" env['AR'] = mingw_prefix+"ar"
env['RANLIB'] = mingw_prefix+"ranlib" env['RANLIB'] = mingw_prefix+"ranlib"
env['LD'] = mingw_prefix+"g++" env['LD'] = mingw_prefix+"g++"
env["x86_libtheora_opt_gcc"]=True env["x86_libtheora_opt_gcc"]=True
#env['CC'] = "winegcc" #env['CC'] = "winegcc"
#env['CXX'] = "wineg++" #env['CXX'] = "wineg++"
env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows']) env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows'])
env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED']) env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED'])
env.Append(CCFLAGS=['-DGLES2_ENABLED']) env.Append(CCFLAGS=['-DGLES2_ENABLED'])
env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','kernel32', 'oleaut32', 'dinput8', 'dxguid']) env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','kernel32', 'oleaut32', 'dinput8', 'dxguid'])
# if (env["bits"]=="32"): # if (env["bits"]=="32"):
# env.Append(LIBS=['gcc_s']) # env.Append(LIBS=['gcc_s'])
# #--with-arch=i686 # #--with-arch=i686
# env.Append(CPPFLAGS=['-march=i686']) # env.Append(CPPFLAGS=['-march=i686'])
# env.Append(LINKFLAGS=['-march=i686']) # env.Append(LINKFLAGS=['-march=i686'])
#'d3dx9d' #'d3dx9d'
env.Append(CPPFLAGS=['-DMINGW_ENABLED']) env.Append(CPPFLAGS=['-DMINGW_ENABLED'])
#env.Append(LINKFLAGS=['-g']) #env.Append(LINKFLAGS=['-g'])
# resrc # resrc
env['is_mingw']=True env['is_mingw']=True
env.Append( BUILDERS = { 'RES' : env.Builder(action = build_res_file, suffix = '.o',src_suffix = '.rc') } ) env.Append( BUILDERS = { 'RES' : env.Builder(action = build_res_file, suffix = '.o',src_suffix = '.rc') } )
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
def detect_visual_c_compiler_version(tools_env): def detect_visual_c_compiler_version(tools_env):
# tools_env is the variable scons uses to call tools that execute tasks, SCons's env['ENV'] that executes tasks... # tools_env is the variable scons uses to call tools that execute tasks, SCons's env['ENV'] that executes tasks...
# (see the SCons documentation for more information on what it does)... # (see the SCons documentation for more information on what it does)...
# in order for this function to be well encapsulated i choose to force it to recieve SCons's TOOLS env (env['ENV'] # in order for this function to be well encapsulated i choose to force it to recieve SCons's TOOLS env (env['ENV']
# and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect # and not scons setup environment (env)... so make sure you call the right environment on it or it will fail to detect
# the propper vc version that will be called # the propper vc version that will be called
# These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc)
# There are many different cl.exe files that are run, and each one compiles & links to a different architecture
# As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program()
# is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns:
# the following string values:
# "" Compiler not detected # These is no flag to give to visual c compilers to set the architecture, ie scons bits argument (32,64,ARM etc)
# "amd64" Native 64 bit compiler # There are many different cl.exe files that are run, and each one compiles & links to a different architecture
# "amd64_x86" 64 bit Cross Compiler for 32 bit # As far as I know, the only way to figure out what compiler will be run when Scons calls cl.exe via Program()
# "x86" Native 32 bit compiler # is to check the PATH varaible and figure out which one will be called first. Code bellow does that and returns:
# "x86_amd64" 32 bit Cross Compiler for 64 bit # the following string values:
# There are other architectures, but Godot does not support them currently, so this function does not detect arm/amd64_arm # "" Compiler not detected
# and similar architectures/compilers # "amd64" Native 64 bit compiler
# "amd64_x86" 64 bit Cross Compiler for 32 bit
# "x86" Native 32 bit compiler
# "x86_amd64" 32 bit Cross Compiler for 64 bit
# Set chosen compiler to "not detected" # There are other architectures, but Godot does not support them currently, so this function does not detect arm/amd64_arm
vc_chosen_compiler_index = -1 # and similar architectures/compilers
vc_chosen_compiler_str = ""
# Set chosen compiler to "not detected"
# find() works with -1 so big ifs bellow are needed... the simplest solution, in fact vc_chosen_compiler_index = -1
# First test if amd64 and amd64_x86 compilers are present in the path vc_chosen_compiler_str = ""
vc_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64;")
if(vc_amd64_compiler_detection_index > -1): # find() works with -1 so big ifs bellow are needed... the simplest solution, in fact
vc_chosen_compiler_index = vc_amd64_compiler_detection_index # First test if amd64 and amd64_x86 compilers are present in the path
vc_chosen_compiler_str = "amd64" vc_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64;")
if(vc_amd64_compiler_detection_index > -1):
vc_amd64_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64_x86;") vc_chosen_compiler_index = vc_amd64_compiler_detection_index
if(vc_amd64_x86_compiler_detection_index > -1 vc_chosen_compiler_str = "amd64"
and (vc_chosen_compiler_index == -1
or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)): vc_amd64_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN\\amd64_x86;")
vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index if(vc_amd64_x86_compiler_detection_index > -1
vc_chosen_compiler_str = "amd64_x86" and (vc_chosen_compiler_index == -1
or vc_chosen_compiler_index > vc_amd64_x86_compiler_detection_index)):
vc_chosen_compiler_index = vc_amd64_x86_compiler_detection_index
vc_chosen_compiler_str = "amd64_x86"
# Now check the 32 bit compilers # Now check the 32 bit compilers
vc_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN;") vc_x86_compiler_detection_index = tools_env["PATH"].find(tools_env["VCINSTALLDIR"]+"BIN;")
if(vc_x86_compiler_detection_index > -1 if(vc_x86_compiler_detection_index > -1
and (vc_chosen_compiler_index == -1 and (vc_chosen_compiler_index == -1
or vc_chosen_compiler_index > vc_x86_compiler_detection_index)): or vc_chosen_compiler_index > vc_x86_compiler_detection_index)):
vc_chosen_compiler_index = vc_x86_compiler_detection_index vc_chosen_compiler_index = vc_x86_compiler_detection_index
vc_chosen_compiler_str = "x86" vc_chosen_compiler_str = "x86"
vc_x86_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env['VCINSTALLDIR']+"BIN\\x86_amd64;")
if(vc_x86_amd64_compiler_detection_index > -1
and (vc_chosen_compiler_index == -1
or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)):
vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index
vc_chosen_compiler_str = "x86_amd64"
# debug help vc_x86_amd64_compiler_detection_index = tools_env["PATH"].find(tools_env['VCINSTALLDIR']+"BIN\\x86_amd64;")
#print vc_amd64_compiler_detection_index if(vc_x86_amd64_compiler_detection_index > -1
#print vc_amd64_x86_compiler_detection_index and (vc_chosen_compiler_index == -1
#print vc_x86_compiler_detection_index or vc_chosen_compiler_index > vc_x86_amd64_compiler_detection_index)):
#print vc_x86_amd64_compiler_detection_index vc_chosen_compiler_index = vc_x86_amd64_compiler_detection_index
#print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str) vc_chosen_compiler_str = "x86_amd64"
return vc_chosen_compiler_str # debug help
#print vc_amd64_compiler_detection_index
#print vc_amd64_x86_compiler_detection_index
#print vc_x86_compiler_detection_index
#print vc_x86_amd64_compiler_detection_index
#print "chosen "+str(vc_chosen_compiler_index)+ " | "+str(vc_chosen_compiler_str)
return vc_chosen_compiler_str

View File

@@ -3,11 +3,11 @@
Import('env') Import('env')
files = [ files = [
'thread_winrt.cpp', 'thread_winrt.cpp',
# '#platform/windows/stream_peer_winsock.cpp', # '#platform/windows/stream_peer_winsock.cpp',
'gl_context_egl.cpp', 'gl_context_egl.cpp',
'app.cpp', 'app.cpp',
'os_winrt.cpp', 'os_winrt.cpp',
] ]
env.Program('#bin/godot', files) env.Program('#bin/godot', files)

View File

@@ -7,150 +7,150 @@ import string
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "WinRT" return "WinRT"
def can_build(): def can_build():
if (os.name=="nt"): if (os.name=="nt"):
#building natively on windows! #building natively on windows!
if (os.getenv("VSINSTALLDIR")): if (os.getenv("VSINSTALLDIR")):
return True return True
return False return False
def get_opts(): def get_opts():
return [] return []
def get_flags(): def get_flags():
return [] return []
def configure(env): def configure(env):
env.Append(CPPPATH=['#platform/winrt', '#platform/winrt/include']) env.Append(CPPPATH=['#platform/winrt', '#platform/winrt/include'])
arch = "" arch = ""
if os.getenv('PLATFORM') == "ARM": if os.getenv('PLATFORM') == "ARM":
# compiler commandline # compiler commandline
# debug: /Yu"pch.h" /MP /GS /analyze- /W3 /wd"4453" /wd"28204" /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Debug\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /Od /sdl /Fd"ARM\Debug\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /D "_DEBUG" /errorReport:prompt /WX- /Zc:forScope /RTC1 /ZW /Gd /Oy- /MDd /Fa"ARM\Debug\" /EHsc /nologo /Fo"ARM\Debug\" /Fp"ARM\Debug\App2.WindowsPhone.pch" # debug: /Yu"pch.h" /MP /GS /analyze- /W3 /wd"4453" /wd"28204" /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Debug\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /Od /sdl /Fd"ARM\Debug\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /D "_DEBUG" /errorReport:prompt /WX- /Zc:forScope /RTC1 /ZW /Gd /Oy- /MDd /Fa"ARM\Debug\" /EHsc /nologo /Fo"ARM\Debug\" /Fp"ARM\Debug\App2.WindowsPhone.pch"
# release: /Yu"pch.h" /MP /GS /GL /analyze- /W3 /wd"4453" /wd"28204" /Gy /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Release\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /O2 /sdl /Fd"ARM\Release\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /ZW /Gd /Oy- /Oi /MD /Fa"ARM\Release\" /EHsc /nologo /Fo"ARM\Release\" /Fp"ARM\Release\App2.WindowsPhone.pch" # release: /Yu"pch.h" /MP /GS /GL /analyze- /W3 /wd"4453" /wd"28204" /Gy /Zc:wchar_t /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.WindowsPhone\" /I"Generated Files\" /I"ARM\Release\" /I"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\App2\App2.Shared\" /ZW:nostdlib /Zi /Gm- /O2 /sdl /Fd"ARM\Release\vc120.pdb" /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /ZW /Gd /Oy- /Oi /MD /Fa"ARM\Release\" /EHsc /nologo /Fo"ARM\Release\" /Fp"ARM\Release\App2.WindowsPhone.pch"
# linker commandline # linker commandline
# debug: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /INCREMENTAL /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Debug\App2.WindowsPhone.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 # debug: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /INCREMENTAL /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Debug\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Debug\App2.WindowsPhone.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
# release: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /LTCG /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /OPT:REF /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Release\App2.WindowsPhone.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 # release: /OUT:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.exe" /MANIFEST:NO /LTCG /NXCOMPAT /PDB:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pdb" /DYNAMICBASE "WindowsPhoneCore.lib" "RuntimeObject.lib" "PhoneAppModelHost.lib" /DEBUG /MACHINE:ARM /NODEFAULTLIB:"kernel32.lib" /NODEFAULTLIB:"ole32.lib" /WINMD /APPCONTAINER /OPT:REF /PGD:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.WindowsPhone.pgd" /WINMDFILE:"C:\Users\ariel\Documents\Visual Studio 2013\Projects\App2\ARM\Release\App2.WindowsPhone\App2.winmd" /SUBSYSTEM:WINDOWS /MANIFESTUAC:NO /ManifestFile:"ARM\Release\App2.WindowsPhone.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
arch = "arm" arch = "arm"
env.Append(LINKFLAGS=['/INCREMENTAL:NO', '/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "WindowsPhoneCore.lib", "RuntimeObject.lib", "PhoneAppModelHost.lib", "/DEBUG", "/MACHINE:ARM", '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1']) env.Append(LINKFLAGS=['/INCREMENTAL:NO', '/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "WindowsPhoneCore.lib", "RuntimeObject.lib", "PhoneAppModelHost.lib", "/DEBUG", "/MACHINE:ARM", '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1'])
env.Append(LIBPATH=['#platform/winrt/ARM/lib']) env.Append(LIBPATH=['#platform/winrt/ARM/lib'])
env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /analyze- /Zc:wchar_t /Zi /Gm- /Od /fp:precise /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /DWINDOWSPHONE_ENABLED /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /RTC1 /Gd /EHsc /nologo')) env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /analyze- /Zc:wchar_t /Zi /Gm- /Od /fp:precise /fp:precise /D "PSAPI_VERSION=2" /D "WINAPI_FAMILY=WINAPI_FAMILY_PHONE_APP" /DWINDOWSPHONE_ENABLED /D "_UITHREADCTXT_SUPPORT=0" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MD /RTC1 /Gd /EHsc /nologo'))
env.Append(CXXFLAGS=string.split('/ZW')) env.Append(CXXFLAGS=string.split('/ZW'))
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['/O2']) env.Append(CCFLAGS=['/O2'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS']) env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
elif (env["target"]=="test"): elif (env["target"]=="test"):
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG']) env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG'])
elif (env["target"]=="profile"): elif (env["target"]=="profile"):
env.Append(CCFLAGS=['-g','-pg']) env.Append(CCFLAGS=['-g','-pg'])
env.Append(LINKFLAGS=['-pg']) env.Append(LINKFLAGS=['-pg'])
env['ENV'] = os.environ; env['ENV'] = os.environ;
# fix environment for windows phone 8.1 # fix environment for windows phone 8.1
env['ENV']['WINDOWSPHONEKITDIR'] = env['ENV']['WINDOWSPHONEKITDIR'].replace("8.0", "8.1") # wtf env['ENV']['WINDOWSPHONEKITDIR'] = env['ENV']['WINDOWSPHONEKITDIR'].replace("8.0", "8.1") # wtf
env['ENV']['INCLUDE'] = env['ENV']['INCLUDE'].replace("8.0", "8.1") env['ENV']['INCLUDE'] = env['ENV']['INCLUDE'].replace("8.0", "8.1")
env['ENV']['LIB'] = env['ENV']['LIB'].replace("8.0", "8.1") env['ENV']['LIB'] = env['ENV']['LIB'].replace("8.0", "8.1")
env['ENV']['PATH'] = env['ENV']['PATH'].replace("8.0", "8.1") env['ENV']['PATH'] = env['ENV']['PATH'].replace("8.0", "8.1")
env['ENV']['LIBPATH'] = env['ENV']['LIBPATH'].replace("8.0\\Windows Metadata", "8.1\\References\\CommonConfiguration\\Neutral") env['ENV']['LIBPATH'] = env['ENV']['LIBPATH'].replace("8.0\\Windows Metadata", "8.1\\References\\CommonConfiguration\\Neutral")
else: else:
arch = "x64" arch = "x64"
env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "kernel32.lib", '/MACHINE:X64', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1']) env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', "kernel32.lib", '/MACHINE:X64', '/WINMD', '/APPCONTAINER', '/MANIFESTUAC:NO', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1'])
env.Append(LIBPATH=['#platform/winrt/x64/lib']) env.Append(LIBPATH=['#platform/winrt/x64/lib'])
if (env["target"]=="release"): if (env["target"]=="release"):
env.Append(CCFLAGS=['/O2']) env.Append(CCFLAGS=['/O2'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS']) env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup']) env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
elif (env["target"]=="test"): elif (env["target"]=="test"):
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO']) env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DD3D_DEBUG_INFO'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE']) env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG']) env.Append(LINKFLAGS=['/DEBUG', '/D_DEBUG'])
elif (env["target"]=="profile"): elif (env["target"]=="profile"):
env.Append(CCFLAGS=['-g','-pg']) env.Append(CCFLAGS=['-g','-pg'])
env.Append(LINKFLAGS=['-pg']) env.Append(LINKFLAGS=['-pg'])
env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /Zc:wchar_t /Gm- /Od /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /EHsc /nologo')) env.Append(CCFLAGS=string.split('/MP /GS /wd"4453" /wd"28204" /Zc:wchar_t /Gm- /Od /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /MDd /EHsc /nologo'))
env.Append(CXXFLAGS=string.split('/ZW')) env.Append(CXXFLAGS=string.split('/ZW'))
env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral']) env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral'])
env.Append(CCFLAGS=['/DWINAPI_FAMILY=WINAPI_FAMILY_APP', '/D_WIN32_WINNT=0x0603', '/DNTDDI_VERSION=0x06030000']) env.Append(CCFLAGS=['/DWINAPI_FAMILY=WINAPI_FAMILY_APP', '/D_WIN32_WINNT=0x0603', '/DNTDDI_VERSION=0x06030000'])
env['ENV'] = os.environ; env['ENV'] = os.environ;
env["PROGSUFFIX"]="."+arch+env["PROGSUFFIX"] env["PROGSUFFIX"]="."+arch+env["PROGSUFFIX"]
env["OBJSUFFIX"]="."+arch+env["OBJSUFFIX"] env["OBJSUFFIX"]="."+arch+env["OBJSUFFIX"]
env["LIBSUFFIX"]="."+arch+env["LIBSUFFIX"] env["LIBSUFFIX"]="."+arch+env["LIBSUFFIX"]
#env.Append(CCFLAGS=['/Gd','/GR','/nologo', '/EHsc']) #env.Append(CCFLAGS=['/Gd','/GR','/nologo', '/EHsc'])
#env.Append(CXXFLAGS=['/TP', '/ZW']) #env.Append(CXXFLAGS=['/TP', '/ZW'])
#env.Append(CPPFLAGS=['/DMSVC', '/GR', ]) #env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
##env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"]) ##env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
env.Append(CCFLAGS=['/DWINRT_ENABLED']) env.Append(CCFLAGS=['/DWINRT_ENABLED'])
env.Append(CCFLAGS=['/DWINDOWS_ENABLED']) env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED']) env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
#env.Append(CCFLAGS=['/DWIN32']) #env.Append(CCFLAGS=['/DWIN32'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND']) env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/DGLES2_ENABLED']) env.Append(CCFLAGS=['/DGLES2_ENABLED'])
#env.Append(CCFLAGS=['/DGLES1_ENABLED']) #env.Append(CCFLAGS=['/DGLES1_ENABLED'])
LIBS=[ LIBS=[
#'winmm', #'winmm',
'libEGL', 'libEGL',
'libGLESv2', 'libGLESv2',
'libANGLE', 'libANGLE',
#'kernel32','ole32','user32', 'advapi32' #'kernel32','ole32','user32', 'advapi32'
] ]
env.Append(LINKFLAGS=[p+".lib" for p in LIBS]) env.Append(LINKFLAGS=[p+".lib" for p in LIBS])
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
#/c/Program Files (x86)/Windows Phone Kits/8.1/lib/ARM/WindowsPhoneCore.lib #/c/Program Files (x86)/Windows Phone Kits/8.1/lib/ARM/WindowsPhoneCore.lib

View File

@@ -4,10 +4,10 @@ Import('env')
common_x11=[\ common_x11=[\
"context_gl_x11.cpp",\ "context_gl_x11.cpp",\
"os_x11.cpp",\ "os_x11.cpp",\
"key_mapping_x11.cpp",\ "key_mapping_x11.cpp",\
"joystick_linux.cpp",\ "joystick_linux.cpp",\
] ]
env.Program('#bin/godot',['godot_x11.cpp']+common_x11) env.Program('#bin/godot',['godot_x11.cpp']+common_x11)

View File

@@ -5,230 +5,230 @@ import platform
def is_active(): def is_active():
return True return True
def get_name(): def get_name():
return "X11" return "X11"
def can_build(): def can_build():
if (os.name!="posix"): if (os.name!="posix"):
return False return False
if sys.platform == "darwin": if sys.platform == "darwin":
return False # no x11 on mac for now return False # no x11 on mac for now
errorval=os.system("pkg-config --version > /dev/null") errorval=os.system("pkg-config --version > /dev/null")
if (errorval): if (errorval):
print("pkg-config not found.. x11 disabled.") print("pkg-config not found.. x11 disabled.")
return False return False
x11_error=os.system("pkg-config x11 --modversion > /dev/null ") x11_error=os.system("pkg-config x11 --modversion > /dev/null ")
if (x11_error): if (x11_error):
print("X11 not found.. x11 disabled.") print("X11 not found.. x11 disabled.")
return False return False
ssl_error=os.system("pkg-config openssl --modversion > /dev/null ") ssl_error=os.system("pkg-config openssl --modversion > /dev/null ")
if (ssl_error): if (ssl_error):
print("OpenSSL not found.. x11 disabled.") print("OpenSSL not found.. x11 disabled.")
return False return False
x11_error=os.system("pkg-config xcursor --modversion > /dev/null ") x11_error=os.system("pkg-config xcursor --modversion > /dev/null ")
if (x11_error): if (x11_error):
print("xcursor not found.. x11 disabled.") print("xcursor not found.. x11 disabled.")
return False return False
x11_error=os.system("pkg-config xinerama --modversion > /dev/null ") x11_error=os.system("pkg-config xinerama --modversion > /dev/null ")
if (x11_error): if (x11_error):
print("xinerama not found.. x11 disabled.") print("xinerama not found.. x11 disabled.")
return False return False
x11_error=os.system("pkg-config xrandr --modversion > /dev/null ") x11_error=os.system("pkg-config xrandr --modversion > /dev/null ")
if (x11_error): if (x11_error):
print("xrandr not found.. x11 disabled.") print("xrandr not found.. x11 disabled.")
return False return False
return True # X11 enabled return True # X11 enabled
def get_opts(): def get_opts():
return [ return [
('use_llvm','Use llvm compiler','no'), ('use_llvm','Use llvm compiler','no'),
('use_static_cpp','link stdc++ statically','no'), ('use_static_cpp','link stdc++ statically','no'),
('use_sanitizer','Use llvm compiler sanitize address','no'), ('use_sanitizer','Use llvm compiler sanitize address','no'),
('use_leak_sanitizer','Use llvm compiler sanitize memory leaks','no'), ('use_leak_sanitizer','Use llvm compiler sanitize memory leaks','no'),
('pulseaudio','Detect & Use pulseaudio','yes'), ('pulseaudio','Detect & Use pulseaudio','yes'),
('udev','Use udev for gamepad connection callbacks','no'), ('udev','Use udev for gamepad connection callbacks','no'),
('debug_release', 'Add debug symbols to release version','no'), ('debug_release', 'Add debug symbols to release version','no'),
] ]
def get_flags(): def get_flags():
return [ return [
("openssl", "system"), ("openssl", "system"),
('freetype', 'system'), ('freetype', 'system'),
('libpng', 'system'), ('libpng', 'system'),
] ]
def configure(env): def configure(env):
is64=sys.maxsize > 2**32 is64=sys.maxsize > 2**32
if (env["bits"]=="default"): if (env["bits"]=="default"):
if (is64): if (is64):
env["bits"]="64" env["bits"]="64"
else: else:
env["bits"]="32" env["bits"]="32"
env.Append(CPPPATH=['#platform/x11']) env.Append(CPPPATH=['#platform/x11'])
if (env["use_llvm"]=="yes"): if (env["use_llvm"]=="yes"):
if 'clang++' not in env['CXX']: if 'clang++' not in env['CXX']:
env["CC"]="clang" env["CC"]="clang"
env["CXX"]="clang++" env["CXX"]="clang++"
env["LD"]="clang++" env["LD"]="clang++"
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND']) env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env.extra_suffix=".llvm" env.extra_suffix=".llvm"
if (env["use_sanitizer"]=="yes"): if (env["use_sanitizer"]=="yes"):
env.Append(CXXFLAGS=['-fsanitize=address','-fno-omit-frame-pointer']) env.Append(CXXFLAGS=['-fsanitize=address','-fno-omit-frame-pointer'])
env.Append(LINKFLAGS=['-fsanitize=address']) env.Append(LINKFLAGS=['-fsanitize=address'])
env.extra_suffix+="s" env.extra_suffix+="s"
if (env["use_leak_sanitizer"]=="yes"): if (env["use_leak_sanitizer"]=="yes"):
env.Append(CXXFLAGS=['-fsanitize=address','-fno-omit-frame-pointer']) env.Append(CXXFLAGS=['-fsanitize=address','-fno-omit-frame-pointer'])
env.Append(LINKFLAGS=['-fsanitize=address']) env.Append(LINKFLAGS=['-fsanitize=address'])
env.extra_suffix+="s" env.extra_suffix+="s"
#if (env["tools"]=="no"): #if (env["tools"]=="no"):
# #no tools suffix # #no tools suffix
# env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX'] # env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX']
# env['LIBSUFFIX'] = ".nt"+env['LIBSUFFIX'] # env['LIBSUFFIX'] = ".nt"+env['LIBSUFFIX']
if (env["target"]=="release"): if (env["target"]=="release"):
if (env["debug_release"]=="yes"): if (env["debug_release"]=="yes"):
env.Append(CCFLAGS=['-g2']) env.Append(CCFLAGS=['-g2'])
else: else:
env.Append(CCFLAGS=['-O3','-ffast-math']) env.Append(CCFLAGS=['-O3','-ffast-math'])
elif (env["target"]=="release_debug"): elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-ffast-math','-DDEBUG_ENABLED']) env.Append(CCFLAGS=['-O2','-ffast-math','-DDEBUG_ENABLED'])
if (env["debug_release"]=="yes"): if (env["debug_release"]=="yes"):
env.Append(CCFLAGS=['-g2']) env.Append(CCFLAGS=['-g2'])
elif (env["target"]=="debug"): elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-g2', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED']) env.Append(CCFLAGS=['-g2', '-Wall','-DDEBUG_ENABLED','-DDEBUG_MEMORY_ENABLED'])
env.ParseConfig('pkg-config x11 --cflags --libs') env.ParseConfig('pkg-config x11 --cflags --libs')
env.ParseConfig('pkg-config xinerama --cflags --libs') env.ParseConfig('pkg-config xinerama --cflags --libs')
env.ParseConfig('pkg-config xcursor --cflags --libs') env.ParseConfig('pkg-config xcursor --cflags --libs')
env.ParseConfig('pkg-config xrandr --cflags --libs') env.ParseConfig('pkg-config xrandr --cflags --libs')
if (env["openssl"] == "system"): if (env["openssl"] == "system"):
env.ParseConfig('pkg-config openssl --cflags --libs') env.ParseConfig('pkg-config openssl --cflags --libs')
if (env["libwebp"] == "system"): if (env["libwebp"] == "system"):
env.ParseConfig('pkg-config libwebp --cflags --libs') env.ParseConfig('pkg-config libwebp --cflags --libs')
if (env["freetype"] == "system"): if (env["freetype"] == "system"):
env["libpng"] = "system" # Freetype links against libpng env["libpng"] = "system" # Freetype links against libpng
env.ParseConfig('pkg-config freetype2 --cflags --libs') env.ParseConfig('pkg-config freetype2 --cflags --libs')
if (env["libpng"] == "system"): if (env["libpng"] == "system"):
env.ParseConfig('pkg-config libpng --cflags --libs') env.ParseConfig('pkg-config libpng --cflags --libs')
if (env["squish"] == "system" and env["tools"] == "yes"): if (env["squish"] == "system" and env["tools"] == "yes"):
env.ParseConfig('pkg-config libsquish --cflags --libs') env.ParseConfig('pkg-config libsquish --cflags --libs')
# Sound and video libraries # Sound and video libraries
# Keep the order as it triggers chained dependencies (ogg needed by others, etc.) # Keep the order as it triggers chained dependencies (ogg needed by others, etc.)
if (env["libtheora"] == "system"): if (env["libtheora"] == "system"):
env["libogg"] = "system" # Needed to link against system libtheora env["libogg"] = "system" # Needed to link against system libtheora
env["libvorbis"] = "system" # Needed to link against system libtheora env["libvorbis"] = "system" # Needed to link against system libtheora
env.ParseConfig('pkg-config theora theoradec --cflags --libs') env.ParseConfig('pkg-config theora theoradec --cflags --libs')
if (env["libvorbis"] == "system"): if (env["libvorbis"] == "system"):
env["libogg"] = "system" # Needed to link against system libvorbis env["libogg"] = "system" # Needed to link against system libvorbis
env.ParseConfig('pkg-config vorbis vorbisfile --cflags --libs') env.ParseConfig('pkg-config vorbis vorbisfile --cflags --libs')
if (env["opus"] == "system"): if (env["opus"] == "system"):
env["libogg"] = "system" # Needed to link against system opus env["libogg"] = "system" # Needed to link against system opus
env.ParseConfig('pkg-config opus opusfile --cflags --libs') env.ParseConfig('pkg-config opus opusfile --cflags --libs')
if (env["libogg"] == "system"): if (env["libogg"] == "system"):
env.ParseConfig('pkg-config ogg --cflags --libs') env.ParseConfig('pkg-config ogg --cflags --libs')
env.Append(CPPFLAGS=['-DOPENGL_ENABLED']) env.Append(CPPFLAGS=['-DOPENGL_ENABLED'])
if (env["glew"] == "system"): if (env["glew"] == "system"):
env.ParseConfig('pkg-config glew --cflags --libs') env.ParseConfig('pkg-config glew --cflags --libs')
if os.system("pkg-config --exists alsa")==0: if os.system("pkg-config --exists alsa")==0:
print("Enabling ALSA") print("Enabling ALSA")
env.Append(CPPFLAGS=["-DALSA_ENABLED"]) env.Append(CPPFLAGS=["-DALSA_ENABLED"])
env.ParseConfig('pkg-config alsa --cflags --libs') env.ParseConfig('pkg-config alsa --cflags --libs')
else: else:
print("ALSA libraries not found, disabling driver") print("ALSA libraries not found, disabling driver")
if (platform.system() == "Linux"): if (platform.system() == "Linux"):
env.Append(CPPFLAGS=["-DJOYDEV_ENABLED"]) env.Append(CPPFLAGS=["-DJOYDEV_ENABLED"])
if (env["udev"]=="yes"): if (env["udev"]=="yes"):
# pkg-config returns 0 when the lib exists... # pkg-config returns 0 when the lib exists...
found_udev = not os.system("pkg-config --exists libudev") found_udev = not os.system("pkg-config --exists libudev")
if (found_udev): if (found_udev):
print("Enabling udev support") print("Enabling udev support")
env.Append(CPPFLAGS=["-DUDEV_ENABLED"]) env.Append(CPPFLAGS=["-DUDEV_ENABLED"])
env.ParseConfig('pkg-config libudev --cflags --libs') env.ParseConfig('pkg-config libudev --cflags --libs')
else: else:
print("libudev development libraries not found, disabling udev support") print("libudev development libraries not found, disabling udev support")
if (env["pulseaudio"]=="yes"): if (env["pulseaudio"]=="yes"):
if not os.system("pkg-config --exists libpulse-simple"): if not os.system("pkg-config --exists libpulse-simple"):
print("Enabling PulseAudio") print("Enabling PulseAudio")
env.Append(CPPFLAGS=["-DPULSEAUDIO_ENABLED"]) env.Append(CPPFLAGS=["-DPULSEAUDIO_ENABLED"])
env.ParseConfig('pkg-config --cflags --libs libpulse-simple') env.ParseConfig('pkg-config --cflags --libs libpulse-simple')
else: else:
print("PulseAudio development libraries not found, disabling driver") print("PulseAudio development libraries not found, disabling driver")
env.Append(CPPFLAGS=['-DX11_ENABLED','-DUNIX_ENABLED','-DGLES2_ENABLED','-DGLES_OVER_GL']) env.Append(CPPFLAGS=['-DX11_ENABLED','-DUNIX_ENABLED','-DGLES2_ENABLED','-DGLES_OVER_GL'])
env.Append(LIBS=['GL', 'pthread', 'z']) env.Append(LIBS=['GL', 'pthread', 'z'])
if (platform.system() == "Linux"): if (platform.system() == "Linux"):
env.Append(LIBS='dl') env.Append(LIBS='dl')
#env.Append(CPPFLAGS=['-DMPC_FIXED_POINT']) #env.Append(CPPFLAGS=['-DMPC_FIXED_POINT'])
#host compiler is default.. #host compiler is default..
if (is64 and env["bits"]=="32"): if (is64 and env["bits"]=="32"):
env.Append(CPPFLAGS=['-m32']) env.Append(CPPFLAGS=['-m32'])
env.Append(LINKFLAGS=['-m32','-L/usr/lib/i386-linux-gnu']) env.Append(LINKFLAGS=['-m32','-L/usr/lib/i386-linux-gnu'])
elif (not is64 and env["bits"]=="64"): elif (not is64 and env["bits"]=="64"):
env.Append(CPPFLAGS=['-m64']) env.Append(CPPFLAGS=['-m64'])
env.Append(LINKFLAGS=['-m64','-L/usr/lib/i686-linux-gnu']) env.Append(LINKFLAGS=['-m64','-L/usr/lib/i686-linux-gnu'])
import methods import methods
env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120' : env.Builder(action = methods.build_legacygl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL' : env.Builder(action = methods.build_glsl_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } ) env.Append( BUILDERS = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
#env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } ) #env.Append( BUILDERS = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
if (env["use_static_cpp"]=="yes"): if (env["use_static_cpp"]=="yes"):
env.Append(LINKFLAGS=['-static-libstdc++']) env.Append(LINKFLAGS=['-static-libstdc++'])
list_of_x86 = ['x86_64', 'x86', 'i386', 'i586'] list_of_x86 = ['x86_64', 'x86', 'i386', 'i586']
if any(platform.machine() in s for s in list_of_x86): if any(platform.machine() in s for s in list_of_x86):
env["x86_libtheora_opt_gcc"]=True env["x86_libtheora_opt_gcc"]=True

View File

@@ -5,9 +5,9 @@ Import('env')
if (env["disable_3d"]=="yes"): if (env["disable_3d"]=="yes"):
env.scene_sources.append("3d/spatial.cpp") env.scene_sources.append("3d/spatial.cpp")
env.scene_sources.append("3d/skeleton.cpp") env.scene_sources.append("3d/skeleton.cpp")
else: else:
env.add_source_files(env.scene_sources,"*.cpp") env.add_source_files(env.scene_sources,"*.cpp")
Export('env') Export('env')

View File

@@ -22,21 +22,21 @@ f.write("\n\n\n");
for x in pixmaps: for x in pixmaps:
var_str=x[:-4]+"_png"; var_str=x[:-4]+"_png";
f.write("static const unsigned char "+ var_str +"[]={\n"); f.write("static const unsigned char "+ var_str +"[]={\n");
pngf=open(x,"rb"); pngf=open(x,"rb");
b=pngf.read(1); b=pngf.read(1);
while(len(b)==1): while(len(b)==1):
f.write(hex(ord(b))) f.write(hex(ord(b)))
b=pngf.read(1); b=pngf.read(1);
if (len(b)==1): if (len(b)==1):
f.write(",") f.write(",")
f.write("\n};\n\n\n"); f.write("\n};\n\n\n");
pngf.close(); pngf.close();
#Generate shaders block #Generate shaders block
@@ -48,25 +48,25 @@ f.write("\n\n\n");
for x in shaders: for x in shaders:
var_str=x[:-4]+"_shader_code"; var_str=x[:-4]+"_shader_code";
f.write("static const char *"+ var_str +"=\n"); f.write("static const char *"+ var_str +"=\n");
sf=open(x,"rb"); sf=open(x,"rb");
b=sf.readline(); b=sf.readline();
while(b!=""): while(b!=""):
if (b.endswith("\r\n")): if (b.endswith("\r\n")):
b=b[:-2] b=b[:-2]
if (b.endswith("\n")): if (b.endswith("\n")):
b=b[:-1] b=b[:-1]
f.write(" \""+b) f.write(" \""+b)
b=sf.readline(); b=sf.readline();
if (b!=""): if (b!=""):
f.write("\"\n") f.write("\"\n")
f.write("\";\n\n\n"); f.write("\";\n\n\n");
sf.close(); sf.close();
f.close(); f.close();

View File

@@ -11,115 +11,115 @@ Export('env')
def make_translations_header(target,source,env): def make_translations_header(target,source,env):
dst = target[0].srcnode().abspath dst = target[0].srcnode().abspath
g = open(dst,"wb") g = open(dst,"wb")
"""" """"
""" """
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_TRANSLATIONS_H\n") g.write("#ifndef _EDITOR_TRANSLATIONS_H\n")
g.write("#define _EDITOR_TRANSLATIONS_H\n") g.write("#define _EDITOR_TRANSLATIONS_H\n")
import zlib import zlib
import os.path import os.path
paths = [node.srcnode().abspath for node in source] paths = [node.srcnode().abspath for node in source]
sorted_paths = sorted(paths, key=lambda path: os.path.splitext(os.path.basename(path))[0]) sorted_paths = sorted(paths, key=lambda path: os.path.splitext(os.path.basename(path))[0])
xl_names=[] xl_names=[]
for i in range(len(sorted_paths)): for i in range(len(sorted_paths)):
print("Appending translation: "+sorted_paths[i]) print("Appending translation: "+sorted_paths[i])
f = open(sorted_paths[i],"rb") f = open(sorted_paths[i],"rb")
buf = f.read() buf = f.read()
decomp_size = len(buf) decomp_size = len(buf)
buf = zlib.compress(buf) buf = zlib.compress(buf)
name = os.path.splitext(os.path.basename(sorted_paths[i]))[0] name = os.path.splitext(os.path.basename(sorted_paths[i]))[0]
#g.write("static const int _translation_"+name+"_compressed_size="+str(len(buf))+";\n") #g.write("static const int _translation_"+name+"_compressed_size="+str(len(buf))+";\n")
#g.write("static const int _translation_"+name+"_uncompressed_size="+str(decomp_size)+";\n") #g.write("static const int _translation_"+name+"_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _translation_"+name+"_compressed[]={\n") g.write("static const unsigned char _translation_"+name+"_compressed[]={\n")
for i in range(len(buf)): for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n") g.write(str(ord(buf[i]))+",\n")
g.write("};\n") g.write("};\n")
xl_names.append([name,len(buf),str(decomp_size)]) xl_names.append([name,len(buf),str(decomp_size)])
g.write("struct EditorTranslationList {\n") g.write("struct EditorTranslationList {\n")
g.write("\tconst char* lang;\n"); g.write("\tconst char* lang;\n");
g.write("\tint comp_size;\n"); g.write("\tint comp_size;\n");
g.write("\tint uncomp_size;\n"); g.write("\tint uncomp_size;\n");
g.write("\tconst unsigned char* data;\n"); g.write("\tconst unsigned char* data;\n");
g.write("};\n\n"); g.write("};\n\n");
g.write("static EditorTranslationList _editor_translations[]={\n") g.write("static EditorTranslationList _editor_translations[]={\n")
for x in xl_names: for x in xl_names:
g.write("\t{ \""+x[0]+"\", "+str(x[1])+", "+str(x[2])+",_translation_"+x[0]+"_compressed},\n") g.write("\t{ \""+x[0]+"\", "+str(x[1])+", "+str(x[2])+",_translation_"+x[0]+"_compressed},\n")
g.write("\t{NULL,0,0,NULL}\n") g.write("\t{NULL,0,0,NULL}\n")
g.write("};\n") g.write("};\n")
g.write("#endif") g.write("#endif")
def make_fonts_header(target,source,env): def make_fonts_header(target,source,env):
dst = target[0].srcnode().abspath dst = target[0].srcnode().abspath
g = open(dst,"wb") g = open(dst,"wb")
"""" """"
""" """
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_FONTS_H\n") g.write("#ifndef _EDITOR_FONTS_H\n")
g.write("#define _EDITOR_FONTS_H\n") g.write("#define _EDITOR_FONTS_H\n")
#saving uncompressed, since freetype will reference from memory pointer #saving uncompressed, since freetype will reference from memory pointer
xl_names=[] xl_names=[]
for i in range(len(source)): for i in range(len(source)):
print("Appending font: "+source[i].srcnode().abspath) print("Appending font: "+source[i].srcnode().abspath)
f = open(source[i].srcnode().abspath,"rb") f = open(source[i].srcnode().abspath,"rb")
buf = f.read() buf = f.read()
import os.path import os.path
name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0] name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0]
g.write("static const int _font_"+name+"_size="+str(len(buf))+";\n")
g.write("static const unsigned char _font_"+name+"[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n")
g.write("};\n")
g.write("#endif")
g.write("static const int _font_"+name+"_size="+str(len(buf))+";\n")
g.write("static const unsigned char _font_"+name+"[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n")
g.write("};\n")
g.write("#endif")
if (env["tools"]!="no"): if (env["tools"]!="no"):
import glob import glob
dir = env.Dir('.').abspath dir = env.Dir('.').abspath
tlist = glob.glob(dir + "/translations/*.po") tlist = glob.glob(dir + "/translations/*.po")
print("translations: ",tlist) print("translations: ",tlist)
env.Depends('#tools/editor/translations.h',tlist) env.Depends('#tools/editor/translations.h',tlist)
env.Command('#tools/editor/translations.h',tlist,make_translations_header) env.Command('#tools/editor/translations.h',tlist,make_translations_header)
flist = glob.glob(dir + "/editor_fonts/*.ttf") flist = glob.glob(dir + "/editor_fonts/*.ttf")
flist.append( glob.glob(dir + "/editor_fonts/*.otf") ) flist.append( glob.glob(dir + "/editor_fonts/*.otf") )
print("fonts: ",flist) print("fonts: ",flist)
env.Depends('#tools/editor/builtin_fonts.h',flist) env.Depends('#tools/editor/builtin_fonts.h',flist)
env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header) env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header)
SConscript('editor/SCsub'); SConscript('editor/SCsub');
SConscript('collada/SCsub'); SConscript('collada/SCsub');
SConscript('doc/SCsub') SConscript('doc/SCsub')
lib = env.Library("tool",env.tool_sources) lib = env.Library("tool",env.tool_sources)
env.Prepend(LIBS=[lib]) env.Prepend(LIBS=[lib])

View File

@@ -5,51 +5,51 @@ Import('env')
def make_doc_header(target,source,env): def make_doc_header(target,source,env):
src = source[0].srcnode().abspath src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath dst = target[0].srcnode().abspath
f = open(src,"rb") f = open(src,"rb")
g = open(dst,"wb") g = open(dst,"wb")
buf = f.read() buf = f.read()
decomp_size = len(buf) decomp_size = len(buf)
import zlib import zlib
buf = zlib.compress(buf) buf = zlib.compress(buf)
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _DOC_DATA_RAW_H\n") g.write("#ifndef _DOC_DATA_RAW_H\n")
g.write("#define _DOC_DATA_RAW_H\n") g.write("#define _DOC_DATA_RAW_H\n")
g.write("static const int _doc_data_compressed_size="+str(len(buf))+";\n") g.write("static const int _doc_data_compressed_size="+str(len(buf))+";\n")
g.write("static const int _doc_data_uncompressed_size="+str(decomp_size)+";\n") g.write("static const int _doc_data_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _doc_data_compressed[]={\n") g.write("static const unsigned char _doc_data_compressed[]={\n")
for i in range(len(buf)): for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n") g.write(str(ord(buf[i]))+",\n")
g.write("};\n") g.write("};\n")
g.write("#endif") g.write("#endif")
def make_certs_header(target,source,env): def make_certs_header(target,source,env):
src = source[0].srcnode().abspath src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath dst = target[0].srcnode().abspath
f = open(src,"rb") f = open(src,"rb")
g = open(dst,"wb") g = open(dst,"wb")
buf = f.read() buf = f.read()
decomp_size = len(buf) decomp_size = len(buf)
import zlib import zlib
buf = zlib.compress(buf) buf = zlib.compress(buf)
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _CERTS_RAW_H\n") g.write("#ifndef _CERTS_RAW_H\n")
g.write("#define _CERTS_RAW_H\n") g.write("#define _CERTS_RAW_H\n")
g.write("static const int _certs_compressed_size="+str(len(buf))+";\n") g.write("static const int _certs_compressed_size="+str(len(buf))+";\n")
g.write("static const int _certs_uncompressed_size="+str(decomp_size)+";\n") g.write("static const int _certs_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _certs_compressed[]={\n") g.write("static const unsigned char _certs_compressed[]={\n")
for i in range(len(buf)): for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n") g.write(str(ord(buf[i]))+",\n")
g.write("};\n") g.write("};\n")
g.write("#endif") g.write("#endif")
@@ -59,30 +59,30 @@ def make_certs_header(target,source,env):
if (env["tools"]=="yes"): if (env["tools"]=="yes"):
reg_exporters_inc='#include "register_exporters.h"\n' reg_exporters_inc='#include "register_exporters.h"\n'
reg_exporters='void register_exporters() {\n' reg_exporters='void register_exporters() {\n'
for e in env.platform_exporters: for e in env.platform_exporters:
env.tool_sources.append("#platform/"+e+"/export/export.cpp") env.tool_sources.append("#platform/"+e+"/export/export.cpp")
reg_exporters+='\tregister_'+e+'_exporter();\n' reg_exporters+='\tregister_'+e+'_exporter();\n'
reg_exporters_inc+='#include "platform/'+e+'/export/export.h"\n' reg_exporters_inc+='#include "platform/'+e+'/export/export.h"\n'
reg_exporters+='}\n' reg_exporters+='}\n'
f = open("register_exporters.cpp","wb") f = open("register_exporters.cpp","wb")
f.write(reg_exporters_inc) f.write(reg_exporters_inc)
f.write(reg_exporters) f.write(reg_exporters)
f.close() f.close()
env.Depends("#tools/editor/doc_data_compressed.h","#doc/base/classes.xml") env.Depends("#tools/editor/doc_data_compressed.h","#doc/base/classes.xml")
env.Command("#tools/editor/doc_data_compressed.h","#doc/base/classes.xml",make_doc_header) env.Command("#tools/editor/doc_data_compressed.h","#doc/base/classes.xml",make_doc_header)
env.Depends("#tools/editor/certs_compressed.h","#tools/certs/ca-certificates.crt") env.Depends("#tools/editor/certs_compressed.h","#tools/certs/ca-certificates.crt")
env.Command("#tools/editor/certs_compressed.h","#tools/certs/ca-certificates.crt",make_certs_header) env.Command("#tools/editor/certs_compressed.h","#tools/certs/ca-certificates.crt",make_certs_header)
#make_doc_header(env.File("#tools/editor/doc_data_raw.h").srcnode().abspath,env.File("#doc/base/classes.xml").srcnode().abspath,env) #make_doc_header(env.File("#tools/editor/doc_data_raw.h").srcnode().abspath,env.File("#doc/base/classes.xml").srcnode().abspath,env)
env.add_source_files(env.tool_sources,"*.cpp") env.add_source_files(env.tool_sources,"*.cpp")
Export('env') Export('env')
SConscript('icons/SCsub'); SConscript('icons/SCsub');
SConscript('plugins/SCsub'); SConscript('plugins/SCsub');
SConscript('fileserver/SCsub'); SConscript('fileserver/SCsub');
SConscript('io_plugins/SCsub'); SConscript('io_plugins/SCsub');

View File

@@ -4,91 +4,91 @@ Import('env')
def make_editor_icons_action(target, source, env): def make_editor_icons_action(target, source, env):
import os import os
import cStringIO import cStringIO
dst = target[0].srcnode().abspath dst = target[0].srcnode().abspath
pixmaps = source pixmaps = source
s = cStringIO.StringIO() s = cStringIO.StringIO()
s.write("#include \"editor_icons.h\"\n\n") s.write("#include \"editor_icons.h\"\n\n")
s.write("#include \"editor_scale.h\"\n\n") s.write("#include \"editor_scale.h\"\n\n")
s.write("#include \"scene/resources/theme.h\"\n\n") s.write("#include \"scene/resources/theme.h\"\n\n")
hidpi_list=[] hidpi_list=[]
for x in pixmaps: for x in pixmaps:
x=str(x) x=str(x)
var_str=os.path.basename(x)[:-4]+"_png"; var_str=os.path.basename(x)[:-4]+"_png";
#print(var_str) #print(var_str)
s.write("static const unsigned char "+ var_str +"[]={\n"); s.write("static const unsigned char "+ var_str +"[]={\n");
pngf=open(x,"rb"); pngf=open(x,"rb");
b=pngf.read(1); b=pngf.read(1);
while(len(b)==1): while(len(b)==1):
s.write(hex(ord(b))) s.write(hex(ord(b)))
b=pngf.read(1); b=pngf.read(1);
if (len(b)==1): if (len(b)==1):
s.write(",") s.write(",")
s.write("\n};\n\n"); s.write("\n};\n\n");
pngf.close(); pngf.close();
var_str=os.path.basename(x)[:-4]+"_hidpi_png"; var_str=os.path.basename(x)[:-4]+"_hidpi_png";
try: try:
pngf = open(os.path.dirname(x)+"/2x/"+os.path.basename(x), "rb") pngf = open(os.path.dirname(x)+"/2x/"+os.path.basename(x), "rb")
s.write("static const unsigned char "+ var_str +"[]={\n"); s.write("static const unsigned char "+ var_str +"[]={\n");
b=pngf.read(1); b=pngf.read(1);
while(len(b)==1): while(len(b)==1):
s.write(hex(ord(b))) s.write(hex(ord(b)))
b=pngf.read(1); b=pngf.read(1);
if (len(b)==1): if (len(b)==1):
s.write(",") s.write(",")
s.write("\n};\n\n\n"); s.write("\n};\n\n\n");
hidpi_list.append(x) hidpi_list.append(x)
except: except:
s.write("static const unsigned char* "+ var_str +"=NULL;\n\n\n"); s.write("static const unsigned char* "+ var_str +"=NULL;\n\n\n");
s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png,const uint8_t* p_hidpi_png) {\n") s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png,const uint8_t* p_hidpi_png) {\n")
s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n") s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n")
s.write("\tImage img((editor_is_hidpi()&&p_hidpi_png)?p_hidpi_png:p_png);\n") s.write("\tImage img((editor_is_hidpi()&&p_hidpi_png)?p_hidpi_png:p_png);\n")
s.write("\tif (editor_is_hidpi() && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); }\n") s.write("\tif (editor_is_hidpi() && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); }\n")
s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n") s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n")
s.write("\treturn texture;\n") s.write("\treturn texture;\n")
s.write("}\n\n") s.write("}\n\n")
s.write("void editor_register_icons(Ref<Theme> p_theme) {\n\n") s.write("void editor_register_icons(Ref<Theme> p_theme) {\n\n")
for x in pixmaps: for x in pixmaps:
x=os.path.basename(str(x)) x=os.path.basename(str(x))
type=x[5:-4].title().replace("_",""); type=x[5:-4].title().replace("_","");
var_str=x[:-4]+"_png"; var_str=x[:-4]+"_png";
var_str_hidpi=x[:-4]+"_hidpi_png"; var_str_hidpi=x[:-4]+"_hidpi_png";
s.write("\tp_theme->set_icon(\""+type+"\",\"EditorIcons\",make_icon("+var_str+","+var_str_hidpi+"));\n"); s.write("\tp_theme->set_icon(\""+type+"\",\"EditorIcons\",make_icon("+var_str+","+var_str_hidpi+"));\n");
s.write("\n\n}\n\n"); s.write("\n\n}\n\n");
f = open(dst,"wb") f = open(dst,"wb")
f.write(s.getvalue()) f.write(s.getvalue())
f.close() f.close()
s.close() s.close()
make_editor_icons_builder = Builder(action=make_editor_icons_action, make_editor_icons_builder = Builder(action=make_editor_icons_action,
suffix = '.cpp', suffix = '.cpp',
src_suffix = '.png') src_suffix = '.png')
env['BUILDERS']['MakeEditorIconsBuilder']=make_editor_icons_builder env['BUILDERS']['MakeEditorIconsBuilder']=make_editor_icons_builder
env.Alias('editor_icons',[env.MakeEditorIconsBuilder('#tools/editor/editor_icons.cpp',Glob("*.png"))]) env.Alias('editor_icons',[env.MakeEditorIconsBuilder('#tools/editor/editor_icons.cpp',Glob("*.png"))])

View File

@@ -34,39 +34,39 @@ f = open("files","rb")
fname = f.readline() fname = f.readline()
while (fname!=""): while (fname!=""):
fr = open(fname.strip(),"rb") fr = open(fname.strip(),"rb")
l = fr.readline() l = fr.readline()
bc=False bc=False
fsingle = fname.strip() fsingle = fname.strip()
if (fsingle.find("/")!=-1): if (fsingle.find("/")!=-1):
fsingle=fsingle[fsingle.rfind("/")+1:] fsingle=fsingle[fsingle.rfind("/")+1:]
rep_fl="$filename" rep_fl="$filename"
rep_fi=fsingle rep_fi=fsingle
len_fl=len(rep_fl) len_fl=len(rep_fl)
len_fi=len(rep_fi) len_fi=len(rep_fi)
if (len_fi<len_fl): if (len_fi<len_fl):
for x in range(len_fl-len_fi): for x in range(len_fl-len_fi):
rep_fi+=" " rep_fi+=" "
elif (len_fl<len_fi): elif (len_fl<len_fi):
for x in range(len_fi-len_fl): for x in range(len_fi-len_fl):
rep_fl+=" " rep_fl+=" "
if (header.find(rep_fl)!=-1): if (header.find(rep_fl)!=-1):
text=header.replace(rep_fl,rep_fi) text=header.replace(rep_fl,rep_fi)
else: else:
text=header.replace("$filename",fsingle) text=header.replace("$filename",fsingle)
while (l!=""): while (l!=""):
if ((l.find("//")!=0 and l.find("/*")!=0 and l.strip()!="") or bc): if ((l.find("//")!=0 and l.find("/*")!=0 and l.strip()!="") or bc):
text+=l text+=l
bc=True bc=True
l=fr.readline() l=fr.readline()
fr.close() fr.close()
fr=open(fname.strip(),"wb") fr=open(fname.strip(),"wb")
fr.write(text) fr.write(text)
fr.close() fr.close()
#print(text) #print(text)
fname=f.readline() fname=f.readline()

View File

@@ -3,33 +3,33 @@ import os.path
import sys import sys
def tof(filepath): def tof(filepath):
with open(filepath, 'r') as f: with open(filepath, 'r') as f:
content = f.read() content = f.read()
content = content.replace("0x","") content = content.replace("0x","")
content = content.split(',') content = content.split(',')
for i in range(len(content)): for i in range(len(content)):
if len(content[i]) == 1: content[i] = "0" + content[i] if len(content[i]) == 1: content[i] = "0" + content[i]
content = "".join(content) content = "".join(content)
with open(filepath+".file", 'wb') as f: with open(filepath+".file", 'wb') as f:
content = f.write(content.decode("hex")) content = f.write(content.decode("hex"))
print(os.path.basename(filepath)+".file created.") print(os.path.basename(filepath)+".file created.")
exit(0) exit(0)
def toa(filepath): def toa(filepath):
with open(filepath, 'rb') as f: with open(filepath, 'rb') as f:
content = f.read() content = f.read()
content = binascii.hexlify(content) content = binascii.hexlify(content)
content = [content[i:i+2] for i in range(0, len(content), 2)] content = [content[i:i+2] for i in range(0, len(content), 2)]
content = ",0x".join(content) content = ",0x".join(content)
content = "0x" + content content = "0x" + content
content = content.replace("0x00","0x0") content = content.replace("0x00","0x0")
with open(filepath+".array", 'w') as f: with open(filepath+".array", 'w') as f:
content = f.write(content) content = f.write(content)
print(os.path.basename(filepath)+".array created.") print(os.path.basename(filepath)+".array created.")
exit(0) exit(0)
def usage(): def usage():
print("========================================================\n\ print("========================================================\n\
#\n\ #\n\
# Usage: python file-hex-array.py [action] [option]\n\ # Usage: python file-hex-array.py [action] [option]\n\
#\n\ #\n\
@@ -40,13 +40,13 @@ def usage():
# Example : python file-hex-array.py toa 1.png\n\ # Example : python file-hex-array.py toa 1.png\n\
#\n\ #\n\
========================================================") ========================================================")
exit(1) exit(1)
if len(sys.argv) != 3: if len(sys.argv) != 3:
usage() usage()
if sys.argv[1] == "toa" and os.path.isfile(sys.argv[2]): if sys.argv[1] == "toa" and os.path.isfile(sys.argv[2]):
toa(sys.argv[2]) toa(sys.argv[2])
elif sys.argv[1] == "tof" and os.path.isfile(sys.argv[2]): elif sys.argv[1] == "tof" and os.path.isfile(sys.argv[2]):
tof(sys.argv[2]) tof(sys.argv[2])
else: else:
usage() usage()

View File

@@ -3,7 +3,7 @@
import sys import sys
if (len(sys.argv)!=2): if (len(sys.argv)!=2):
print("Pass me a .fnt argument!") print("Pass me a .fnt argument!")
f = open(sys.argv[1],"rb") f = open(sys.argv[1],"rb")
@@ -19,39 +19,39 @@ font_cc=0
while(l!=""): while(l!=""):
fs = l.strip().find(" ") fs = l.strip().find(" ")
if (fs==-1): if (fs==-1):
l=f.readline() l=f.readline()
continue continue
t = l[0:fs] t = l[0:fs]
dv = l[fs+1:].split(" ") dv = l[fs+1:].split(" ")
d = {} d = {}
for x in dv: for x in dv:
if (x.find("=")==-1): if (x.find("=")==-1):
continue continue
s = x.split("=") s = x.split("=")
d[ s[0] ] = s[1] d[ s[0] ] = s[1]
if (t=="common"): if (t=="common"):
font_height=d["lineHeight"] font_height=d["lineHeight"]
font_ascent=d["base"] font_ascent=d["base"]
if (t=="char"): if (t=="char"):
font_chars.append(d["id"]) font_chars.append(d["id"])
font_chars.append(d["x"]) font_chars.append(d["x"])
font_chars.append(d["y"]) font_chars.append(d["y"])
font_chars.append(d["width"]) font_chars.append(d["width"])
font_chars.append(d["height"]) font_chars.append(d["height"])
font_chars.append(d["xoffset"]) font_chars.append(d["xoffset"])
font_chars.append(d["yoffset"]) font_chars.append(d["yoffset"])
font_chars.append(d["xadvance"]) font_chars.append(d["xadvance"])
font_cc+=1 font_cc+=1
l = f.readline() l = f.readline()
print("static const int _bi_font_"+name+"_height="+str(font_height)+";") print("static const int _bi_font_"+name+"_height="+str(font_height)+";")
@@ -60,11 +60,11 @@ print("static const int _bi_font_"+name+"_charcount="+str(font_cc)+";")
cstr="static const int _bi_font_"+name+"_characters={" cstr="static const int _bi_font_"+name+"_characters={"
for i in range(len(font_chars)): for i in range(len(font_chars)):
c=font_chars[i] c=font_chars[i]
if (i>0): if (i>0):
cstr+=", " cstr+=", "
cstr+=c cstr+=c
cstr+=("};") cstr+=("};")
print(cstr) print(cstr)

View File

@@ -2,8 +2,8 @@
import sys import sys
if (len(sys.argv)<2): if (len(sys.argv)<2):
print("usage: make_glwrapper.py <headers>") print("usage: make_glwrapper.py <headers>")
sys.exit(255) sys.exit(255)
functions=[] functions=[]
@@ -17,16 +17,16 @@ READ_CONSTANTS=2
read_what=READ_TYPES read_what=READ_TYPES
for x in (range(len(sys.argv)-1)): for x in (range(len(sys.argv)-1)):
f=open(sys.argv[x+1],"r") f=open(sys.argv[x+1],"r")
while(True): while(True):
line=f.readline() line=f.readline()
if (line==""): if (line==""):
break break
line=line.replace("\n","").strip() line=line.replace("\n","").strip()
""" """
if (line.find("[types]")!=-1): if (line.find("[types]")!=-1):
read_what=READ_TYPES read_what=READ_TYPES
continue continue
@@ -38,53 +38,53 @@ for x in (range(len(sys.argv)-1)):
continue continue
""" """
if (line.find("#define")!=-1): if (line.find("#define")!=-1):
if (line.find("0x")==-1 and line.find("GL_VERSION")==-1): if (line.find("0x")==-1 and line.find("GL_VERSION")==-1):
continue continue
constants.append(line) constants.append(line)
elif (line.find("typedef")!=-1): elif (line.find("typedef")!=-1):
if (line.find("(")!=-1 or line.find(")")!=-1 or line.find("ARB")!=-1 or line.find("EXT")!=-1 or line.find("GL")==-1): if (line.find("(")!=-1 or line.find(")")!=-1 or line.find("ARB")!=-1 or line.find("EXT")!=-1 or line.find("GL")==-1):
continue continue
types.append(line) types.append(line)
elif (line.find("APIENTRY")!=-1 and line.find("GLAPI")!=-1): elif (line.find("APIENTRY")!=-1 and line.find("GLAPI")!=-1):
if (line.find("ARB")!=-1 or line.find("EXT")!=-1 or line.find("NV")!=-1): if (line.find("ARB")!=-1 or line.find("EXT")!=-1 or line.find("NV")!=-1):
continue continue
line=line.replace("APIENTRY","") line=line.replace("APIENTRY","")
line=line.replace("GLAPI","") line=line.replace("GLAPI","")
glpos=line.find(" gl") glpos=line.find(" gl")
if (glpos==-1): if (glpos==-1):
glpos=line.find("\tgl") glpos=line.find("\tgl")
if (glpos==-1): if (glpos==-1):
continue continue
ret=line[:glpos].strip(); ret=line[:glpos].strip();
line=line[glpos:].strip() line=line[glpos:].strip()
namepos=line.find("(") namepos=line.find("(")
if (namepos==-1): if (namepos==-1):
continue continue
name=line[:namepos].strip() name=line[:namepos].strip()
line=line[namepos:] line=line[namepos:]
argpos=line.rfind(")") argpos=line.rfind(")")
if (argpos==-1): if (argpos==-1):
continue continue
args=line[1:argpos] args=line[1:argpos]
funcdata={} funcdata={}
funcdata["ret"]=ret funcdata["ret"]=ret
funcdata["name"]=name funcdata["name"]=name
funcdata["args"]=args funcdata["args"]=args
functions.append(funcdata) functions.append(funcdata)
print(funcdata) print(funcdata)
@@ -137,18 +137,18 @@ f.write("#else\n");
f.write("#define GLWRP_APIENTRY \n") f.write("#define GLWRP_APIENTRY \n")
f.write("#endif\n\n"); f.write("#endif\n\n");
for x in types: for x in types:
f.write(x+"\n") f.write(x+"\n")
f.write("\n\n") f.write("\n\n")
for x in constants: for x in constants:
f.write(x+"\n") f.write(x+"\n")
f.write("\n\n") f.write("\n\n")
for x in functions: for x in functions:
f.write("extern "+x["ret"]+" GLWRP_APIENTRY (*__wrapper_"+x["name"]+")("+x["args"]+");\n") f.write("extern "+x["ret"]+" GLWRP_APIENTRY (*__wrapper_"+x["name"]+")("+x["args"]+");\n")
f.write("#define "+x["name"]+" __wrapper_"+x["name"]+"\n") f.write("#define "+x["name"]+" __wrapper_"+x["name"]+"\n")
f.write("\n\n") f.write("\n\n")
f.write("typedef void (*GLWrapperFuncPtr)(void);\n\n"); f.write("typedef void (*GLWrapperFuncPtr)(void);\n\n");
@@ -165,14 +165,14 @@ f.write("#include \"glwrapper.h\"\n")
f.write("\n\n") f.write("\n\n")
for x in functions: for x in functions:
f.write(x["ret"]+" GLWRP_APIENTRY (*__wrapper_"+x["name"]+")("+x["args"]+")=NULL;\n") f.write(x["ret"]+" GLWRP_APIENTRY (*__wrapper_"+x["name"]+")("+x["args"]+")=NULL;\n")
f.write("\n\n") f.write("\n\n")
f.write("void glWrapperInit( GLWrapperFuncPtr (*wrapperFunc)(const char*) ) {\n") f.write("void glWrapperInit( GLWrapperFuncPtr (*wrapperFunc)(const char*) ) {\n")
f.write("\n") f.write("\n")
for x in functions: for x in functions:
f.write("\t__wrapper_"+x["name"]+"=("+x["ret"]+" GLWRP_APIENTRY (*)("+x["args"]+"))wrapperFunc(\""+x["name"]+"\");\n") f.write("\t__wrapper_"+x["name"]+"=("+x["ret"]+" GLWRP_APIENTRY (*)("+x["args"]+"))wrapperFunc(\""+x["name"]+"\");\n")
f.write("\n\n") f.write("\n\n")
f.write("}\n") f.write("}\n")

View File

@@ -67,20 +67,20 @@ text="""
for i in range(1,8): for i in range(1,8):
tp="" tp=""
p="" p=""
t="" t=""
for j in range(i): for j in range(i):
if (j>0): if (j>0):
tp+=", " tp+=", "
p+=", " p+=", "
t+=", " t+=", "
tp +=("m_arg"+str(j+1)+" p"+str(j+1)) tp +=("m_arg"+str(j+1)+" p"+str(j+1))
p+=("p"+str(j+1)) p+=("p"+str(j+1))
t+=("m_arg"+str(j+1)) t+=("m_arg"+str(j+1))
t = text.replace("$argtp",tp).replace("$argp",p).replace("$argt",t).replace("$num",str(i)) t = text.replace("$argtp",tp).replace("$argp",p).replace("$argt",t).replace("$num",str(i))
print(t) print(t)

View File

@@ -4,7 +4,7 @@ import sys
arg="memdump.txt" arg="memdump.txt"
if (len(sys.argv)>1): if (len(sys.argv)>1):
arg=sys.argv[1] arg=sys.argv[1]
f = open(arg,"rb") f = open(arg,"rb")
@@ -18,18 +18,18 @@ cnt={}
while(l!=""): while(l!=""):
s=l.split("-") s=l.split("-")
amount = int(s[1]) amount = int(s[1])
what=s[2] what=s[2]
if (what in sum): if (what in sum):
sum[what]+=amount sum[what]+=amount
cnt[what]+=1 cnt[what]+=1
else: else:
sum[what]=amount sum[what]=amount
cnt[what]=1 cnt[what]=1
l=f.readline() l=f.readline()
for x in sum: for x in sum:
print(x.strip()+"("+str(cnt[x])+"):\n: "+str(sum[x])) print(x.strip()+"("+str(cnt[x])+"):\n: "+str(sum[x]))

View File

@@ -129,8 +129,8 @@ special_icons = {
} }
theme_icons = { theme_icons = {
'icon_close': dict(output_names=['close', 'close_hl']), 'icon_close': dict(output_names=['close', 'close_hl']),
'tab_menu': dict(output_names=['tab_menu_hl']) 'tab_menu': dict(output_names=['tab_menu_hl'])
} }
export_icons() export_icons()

View File

@@ -10,27 +10,27 @@ import sys
line_nb = False line_nb = False
for arg in sys.argv[1:]: for arg in sys.argv[1:]:
if (arg == "--with-line-nb"): if (arg == "--with-line-nb"):
print("Enabling line numbers in the context locations.") print("Enabling line numbers in the context locations.")
line_nb = True line_nb = True
else: else:
os.sys.exit("Non supported argument '" + arg + "'. Aborting.") os.sys.exit("Non supported argument '" + arg + "'. Aborting.")
if (not os.path.exists("tools")): if (not os.path.exists("tools")):
os.sys.exit("ERROR: This script should be started from the root of the git repo.") os.sys.exit("ERROR: This script should be started from the root of the git repo.")
matches = [] matches = []
for root, dirnames, filenames in os.walk('.'): for root, dirnames, filenames in os.walk('.'):
for filename in fnmatch.filter(filenames, '*.cpp'): for filename in fnmatch.filter(filenames, '*.cpp'):
if (filename.find("collada") != -1): if (filename.find("collada") != -1):
continue continue
matches.append(os.path.join(root, filename)) matches.append(os.path.join(root, filename))
for filename in fnmatch.filter(filenames, '*.h'): for filename in fnmatch.filter(filenames, '*.h'):
if (filename.find("collada") != -1): if (filename.find("collada") != -1):
continue continue
matches.append(os.path.join(root, filename)) matches.append(os.path.join(root, filename))
matches.sort() matches.sort()
@@ -55,51 +55,51 @@ print("Updating the tools.pot template...")
for fname in matches: for fname in matches:
f = open(fname, "rb") f = open(fname, "rb")
l = f.readline() l = f.readline()
lc = 1 lc = 1
while (l): while (l):
patterns = ['RTR(\"', 'TTR(\"'] patterns = ['RTR(\"', 'TTR(\"']
idx = 0 idx = 0
pos = 0 pos = 0
while (pos >= 0): while (pos >= 0):
pos = l.find(patterns[idx], pos) pos = l.find(patterns[idx], pos)
if (pos == -1): if (pos == -1):
if (idx < len(patterns) - 1): if (idx < len(patterns) - 1):
idx += 1 idx += 1
pos = 0 pos = 0
continue continue
pos += 5 pos += 5
msg = "" msg = ""
while (pos < len(l) and (l[pos] != '"' or l[pos - 1] == '\\')): while (pos < len(l) and (l[pos] != '"' or l[pos - 1] == '\\')):
msg += l[pos] msg += l[pos]
pos += 1 pos += 1
location = os.path.relpath(fname).replace('\\','/') location = os.path.relpath(fname).replace('\\','/')
if (line_nb): if (line_nb):
location += ":" + str(lc) location += ":" + str(lc)
if (not msg in unique_str): if (not msg in unique_str):
main_po += "\n#: " + location + "\n" main_po += "\n#: " + location + "\n"
main_po += 'msgid "' + msg + '"\n' main_po += 'msgid "' + msg + '"\n'
main_po += 'msgstr ""\n' main_po += 'msgstr ""\n'
unique_str.append(msg) unique_str.append(msg)
unique_loc[msg] = [location] unique_loc[msg] = [location]
elif (not location in unique_loc[msg]): elif (not location in unique_loc[msg]):
# Add additional location to previous occurence too # Add additional location to previous occurence too
msg_pos = main_po.find('\nmsgid "' + msg + '"') msg_pos = main_po.find('\nmsgid "' + msg + '"')
if (msg_pos == -1): if (msg_pos == -1):
print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.") print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.")
main_po = main_po[:msg_pos] + ' ' + location + main_po[msg_pos:] main_po = main_po[:msg_pos] + ' ' + location + main_po[msg_pos:]
unique_loc[msg].append(location) unique_loc[msg].append(location)
l = f.readline() l = f.readline()
lc += 1 lc += 1
f.close() f.close()
f = open("tools.pot", "wb") f = open("tools.pot", "wb")
@@ -107,15 +107,15 @@ f.write(main_po)
f.close() f.close()
if (os.name == "posix"): if (os.name == "posix"):
print("Wrapping template at 79 characters for compatibility with Weblate.") print("Wrapping template at 79 characters for compatibility with Weblate.")
os.system("msgmerge -w79 tools.pot tools.pot > tools.pot.wrap") os.system("msgmerge -w79 tools.pot tools.pot > tools.pot.wrap")
shutil.move("tools.pot.wrap", "tools.pot") shutil.move("tools.pot.wrap", "tools.pot")
shutil.move("tools.pot", "tools/translations/tools.pot") shutil.move("tools.pot", "tools/translations/tools.pot")
# TODO: Make that in a portable way, if we care; if not, kudos to Unix users # TODO: Make that in a portable way, if we care; if not, kudos to Unix users
if (os.name == "posix"): if (os.name == "posix"):
added = subprocess.check_output("git diff tools/translations/tools.pot | grep \+msgid | wc -l", shell = True) added = subprocess.check_output("git diff tools/translations/tools.pot | grep \+msgid | wc -l", shell = True)
removed = subprocess.check_output("git diff tools/translations/tools.pot | grep \\\-msgid | wc -l", shell = True) removed = subprocess.check_output("git diff tools/translations/tools.pot | grep \\\-msgid | wc -l", shell = True)
print("\n# Template changes compared to the staged status:") print("\n# Template changes compared to the staged status:")
print("# Additions: %s msgids.\n# Deletions: %s msgids." % (int(added), int(removed))) print("# Additions: %s msgids.\n# Deletions: %s msgids." % (int(added), int(removed)))