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-10-30 18:44:57 +01:00
parent 681575fa71
commit 97c8508f5e
88 changed files with 6291 additions and 6291 deletions

View File

@ -24,28 +24,28 @@ platform_exporters=[]
global_defaults=[]
for x in glob.glob("platform/*"):
if (not os.path.isdir(x) or not os.path.exists(x+"/detect.py")):
continue
tmppath="./"+x
if (not os.path.isdir(x) or not os.path.exists(x+"/detect.py")):
continue
tmppath="./"+x
sys.path.append(tmppath)
import detect
sys.path.append(tmppath)
import detect
if (os.path.exists(x+"/export/export.cpp")):
platform_exporters.append(x[9:])
if (os.path.exists(x+"/globals/global_defaults.cpp")):
global_defaults.append(x[9:])
if (detect.is_active()):
active_platforms.append( detect.get_name() )
active_platform_ids.append(x);
if (detect.can_build()):
x=x.replace("platform/","") # rest of world
x=x.replace("platform\\","") # win32
platform_list+=[x]
platform_opts[x]=detect.get_opts()
platform_flags[x]=detect.get_flags()
sys.path.remove(tmppath)
sys.modules.pop('detect')
if (os.path.exists(x+"/export/export.cpp")):
platform_exporters.append(x[9:])
if (os.path.exists(x+"/globals/global_defaults.cpp")):
global_defaults.append(x[9:])
if (detect.is_active()):
active_platforms.append( detect.get_name() )
active_platform_ids.append(x);
if (detect.can_build()):
x=x.replace("platform/","") # rest of world
x=x.replace("platform\\","") # win32
platform_list+=[x]
platform_opts[x]=detect.get_opts()
platform_flags[x]=detect.get_flags()
sys.path.remove(tmppath)
sys.modules.pop('detect')
module_list=methods.detect_modules()
@ -59,14 +59,14 @@ custom_tools=['default']
platform_arg = ARGUMENTS.get("platform", ARGUMENTS.get("p", False))
if (os.name=="posix"):
pass
pass
elif (os.name=="nt"):
if ( os.getenv("VCINSTALLDIR")==None or platform_arg=="android"):
custom_tools=['mingw']
if ( os.getenv("VCINSTALLDIR")==None or platform_arg=="android"):
custom_tools=['mingw']
env_base=Environment(tools=custom_tools);
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('PKG_CONFIG_PATH', os.getenv('PKG_CONFIG_PATH'))
env_base.global_defaults=global_defaults
@ -109,11 +109,11 @@ customs = ['custom.py']
profile = ARGUMENTS.get("profile", False)
if profile:
import os.path
if os.path.isfile(profile):
customs.append(profile)
elif os.path.isfile(profile+".py"):
customs.append(profile+".py")
import os.path
if os.path.isfile(profile):
customs.append(profile)
elif os.path.isfile(profile+".py"):
customs.append(profile+".py")
opts=Variables(customs, ARGUMENTS)
opts.Add('target', 'Compile Target (debug/release_debug/release).', "debug")
@ -155,12 +155,12 @@ opts.Add('vsproj', 'Generate Visual Studio Project. (yes/no)', 'no')
# add platform specific options
for k in platform_opts.keys():
opt_list = platform_opts[k]
for o in opt_list:
opts.Add(o[0],o[1],o[2])
opt_list = platform_opts[k]
for o in opt_list:
opts.Add(o[0],o[1],o[2])
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
Help(opts.GenerateHelpText(env_base)) # generate help
@ -181,11 +181,11 @@ sys.modules.pop('detect')
"""
if (env_base['target']=='debug'):
env_base.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']);
env_base.Append(CPPFLAGS=['-DSCI_NAMESPACE'])
env_base.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC']);
env_base.Append(CPPFLAGS=['-DSCI_NAMESPACE'])
if (env_base['deprecated']!='no'):
env_base.Append(CPPFLAGS=['-DENABLE_DEPRECATED']);
env_base.Append(CPPFLAGS=['-DENABLE_DEPRECATED']);
env_base.platforms = {}
@ -193,214 +193,214 @@ env_base.platforms = {}
selected_platform =""
if env_base['platform'] != "":
selected_platform=env_base['platform']
selected_platform=env_base['platform']
elif env_base['p'] != "":
selected_platform=env_base['p']
env_base["platform"]=selected_platform
selected_platform=env_base['p']
env_base["platform"]=selected_platform
if selected_platform in platform_list:
sys.path.append("./platform/"+selected_platform)
import detect
if "create" in dir(detect):
env = detect.create(env_base)
else:
env = env_base.Clone()
sys.path.append("./platform/"+selected_platform)
import detect
if "create" in dir(detect):
env = detect.create(env_base)
else:
env = env_base.Clone()
if env['vsproj']=="yes":
env.vs_incs = []
env.vs_srcs = []
if env['vsproj']=="yes":
env.vs_incs = []
env.vs_srcs = []
def AddToVSProject( sources ):
for x in sources:
if type(x) == type(""):
fname = env.File(x).path
else:
fname = env.File(x)[0].path
pieces = fname.split(".")
if len(pieces)>0:
basename = pieces[0]
basename = basename.replace('\\\\','/')
env.vs_srcs = env.vs_srcs + [basename + ".cpp"]
env.vs_incs = env.vs_incs + [basename + ".h"]
#print basename
env.AddToVSProject = AddToVSProject
def AddToVSProject( sources ):
for x in sources:
if type(x) == type(""):
fname = env.File(x).path
else:
fname = env.File(x)[0].path
pieces = fname.split(".")
if len(pieces)>0:
basename = pieces[0]
basename = basename.replace('\\\\','/')
env.vs_srcs = env.vs_srcs + [basename + ".cpp"]
env.vs_incs = env.vs_incs + [basename + ".h"]
#print basename
env.AddToVSProject = AddToVSProject
env.extra_suffix=""
env.extra_suffix=""
if env["extra_suffix"] != '' :
env.extra_suffix += '.'+env["extra_suffix"]
if env["extra_suffix"] != '' :
env.extra_suffix += '.'+env["extra_suffix"]
CCFLAGS = env.get('CCFLAGS', '')
env['CCFLAGS'] = ''
CCFLAGS = env.get('CCFLAGS', '')
env['CCFLAGS'] = ''
env.Append(CCFLAGS=string.split(str(CCFLAGS)))
env.Append(CCFLAGS=string.split(str(CCFLAGS)))
CFLAGS = env.get('CFLAGS', '')
env['CFLAGS'] = ''
CFLAGS = env.get('CFLAGS', '')
env['CFLAGS'] = ''
env.Append(CFLAGS=string.split(str(CFLAGS)))
env.Append(CFLAGS=string.split(str(CFLAGS)))
LINKFLAGS = env.get('LINKFLAGS', '')
env['LINKFLAGS'] = ''
LINKFLAGS = env.get('LINKFLAGS', '')
env['LINKFLAGS'] = ''
env.Append(LINKFLAGS=string.split(str(LINKFLAGS)))
env.Append(LINKFLAGS=string.split(str(LINKFLAGS)))
flag_list = platform_flags[selected_platform]
for f in flag_list:
if not (f[0] in ARGUMENTS): # allow command line to override platform flags
env[f[0]] = f[1]
flag_list = platform_flags[selected_platform]
for f in flag_list:
if not (f[0] in ARGUMENTS): # allow command line to override platform flags
env[f[0]] = f[1]
#must happen after the flags, so when flags are used by configure, stuff happens (ie, ssl on x11)
detect.configure(env)
#must happen after the flags, so when flags are used by configure, stuff happens (ie, ssl on x11)
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["tools"]=="yes"):
print("Tools can only be built with targets 'debug' and 'release_debug'.")
sys.exit(255)
suffix+=".opt"
if (env["target"]=="release"):
if (env["tools"]=="yes"):
print("Tools can only be built with targets 'debug' and 'release_debug'.")
sys.exit(255)
suffix+=".opt"
env.Append(CCFLAGS=['-DNDEBUG']);
env.Append(CCFLAGS=['-DNDEBUG']);
elif (env["target"]=="release_debug"):
if (env["tools"]=="yes"):
suffix+=".opt.tools"
else:
suffix+=".opt.debug"
else:
if (env["tools"]=="yes"):
suffix+=".tools"
else:
suffix+=".debug"
elif (env["target"]=="release_debug"):
if (env["tools"]=="yes"):
suffix+=".opt.tools"
else:
suffix+=".opt.debug"
else:
if (env["tools"]=="yes"):
suffix+=".tools"
else:
suffix+=".debug"
if env["arch"] != "":
suffix += "."+env["arch"]
elif (env["bits"]=="32"):
suffix+=".32"
elif (env["bits"]=="64"):
suffix+=".64"
elif (env["bits"]=="fat"):
suffix+=".fat"
if env["arch"] != "":
suffix += "."+env["arch"]
elif (env["bits"]=="32"):
suffix+=".32"
elif (env["bits"]=="64"):
suffix+=".64"
elif (env["bits"]=="fat"):
suffix+=".fat"
suffix+=env.extra_suffix
suffix+=env.extra_suffix
env["PROGSUFFIX"]=suffix+env["PROGSUFFIX"]
env["OBJSUFFIX"]=suffix+env["OBJSUFFIX"]
env["LIBSUFFIX"]=suffix+env["LIBSUFFIX"]
env["SHLIBSUFFIX"]=suffix+env["SHLIBSUFFIX"]
env["PROGSUFFIX"]=suffix+env["PROGSUFFIX"]
env["OBJSUFFIX"]=suffix+env["OBJSUFFIX"]
env["LIBSUFFIX"]=suffix+env["LIBSUFFIX"]
env["SHLIBSUFFIX"]=suffix+env["SHLIBSUFFIX"]
sys.path.remove("./platform/"+selected_platform)
sys.modules.pop('detect')
sys.path.remove("./platform/"+selected_platform)
sys.modules.pop('detect')
env.module_list=[]
env.module_list=[]
for x in module_list:
if env['module_'+x+'_enabled'] != "yes":
continue
tmppath="./modules/"+x
sys.path.append(tmppath)
env.current_module=x
import config
if (config.can_build(selected_platform)):
config.configure(env)
env.module_list.append(x)
sys.path.remove(tmppath)
sys.modules.pop('config')
for x in module_list:
if env['module_'+x+'_enabled'] != "yes":
continue
tmppath="./modules/"+x
sys.path.append(tmppath)
env.current_module=x
import config
if (config.can_build(selected_platform)):
config.configure(env)
env.module_list.append(x)
sys.path.remove(tmppath)
sys.modules.pop('config')
if (env.use_ptrcall):
env.Append(CPPFLAGS=['-DPTRCALL_ENABLED']);
if (env.use_ptrcall):
env.Append(CPPFLAGS=['-DPTRCALL_ENABLED']);
# to test 64 bits compiltion
# env.Append(CPPFLAGS=['-m64'])
# to test 64 bits compiltion
# env.Append(CPPFLAGS=['-m64'])
if (env['tools']=='yes'):
env.Append(CPPFLAGS=['-DTOOLS_ENABLED'])
if (env['disable_3d']=='yes'):
env.Append(CPPFLAGS=['-D_3D_DISABLED'])
if (env['gdscript']=='yes'):
env.Append(CPPFLAGS=['-DGDSCRIPT_ENABLED'])
if (env['disable_advanced_gui']=='yes'):
env.Append(CPPFLAGS=['-DADVANCED_GUI_DISABLED'])
if (env['tools']=='yes'):
env.Append(CPPFLAGS=['-DTOOLS_ENABLED'])
if (env['disable_3d']=='yes'):
env.Append(CPPFLAGS=['-D_3D_DISABLED'])
if (env['gdscript']=='yes'):
env.Append(CPPFLAGS=['-DGDSCRIPT_ENABLED'])
if (env['disable_advanced_gui']=='yes'):
env.Append(CPPFLAGS=['-DADVANCED_GUI_DISABLED'])
if (env['minizip'] == 'yes'):
env.Append(CPPFLAGS=['-DMINIZIP_ENABLED'])
if (env['minizip'] == 'yes'):
env.Append(CPPFLAGS=['-DMINIZIP_ENABLED'])
if (env['xml']=='yes'):
env.Append(CPPFLAGS=['-DXML_ENABLED'])
if (env['xml']=='yes'):
env.Append(CPPFLAGS=['-DXML_ENABLED'])
if (env['verbose']=='no'):
methods.no_verbose(sys,env)
if (env['verbose']=='no'):
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("servers/SCsub")
SConscript("scene/SCsub")
SConscript("tools/SCsub")
SConscript("drivers/SCsub")
SConscript("bin/SCsub")
SConscript("core/SCsub")
SConscript("servers/SCsub")
SConscript("scene/SCsub")
SConscript("tools/SCsub")
SConscript("drivers/SCsub")
SConscript("bin/SCsub")
SConscript("modules/SCsub")
SConscript("main/SCsub")
SConscript("modules/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
if (env['vsproj'])=="yes":
# Microsoft Visual Studio Project Generation
if (env['vsproj'])=="yes":
AddToVSProject(env.core_sources)
AddToVSProject(env.main_sources)
AddToVSProject(env.modules_sources)
AddToVSProject(env.scene_sources)
AddToVSProject(env.servers_sources)
AddToVSProject(env.tool_sources)
AddToVSProject(env.core_sources)
AddToVSProject(env.main_sources)
AddToVSProject(env.modules_sources)
AddToVSProject(env.scene_sources)
AddToVSProject(env.servers_sources)
AddToVSProject(env.tool_sources)
# 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...
# That said, it's not needed to be set so far but I'm leaving it here so that this comment
# has a purpose.
#env['MSVS_VERSION']='9.0'
# 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
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['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
# required for Visual Studio to understand that it needs to generate an NMAKE
# project. Do not modify without knowing what you are doing.
debug_variants = ['debug|Win32']+['debug|x64']
release_variants = ['release|Win32']+['release|x64']
release_debug_variants = ['release_debug|Win32']+['release_debug|x64']
variants = debug_variants + release_variants + release_debug_variants
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_debug_targets = ['bin\\godot.windows.opt.tools.32.exe']+['bin\\godot.windows.opt.tools.64.exe']
targets = debug_targets + release_targets + release_debug_targets
msvproj = env.MSVSProject(target = ['#godot' + env['MSVSPROJECTSUFFIX'] ],
incs = env.vs_incs,
srcs = env.vs_srcs,
runfile = targets,
buildtarget = targets,
auto_build_solution=1,
variant = variants)
# 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...
# That said, it's not needed to be set so far but I'm leaving it here so that this comment
# has a purpose.
#env['MSVS_VERSION']='9.0'
# 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
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['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
# required for Visual Studio to understand that it needs to generate an NMAKE
# project. Do not modify without knowing what you are doing.
debug_variants = ['debug|Win32']+['debug|x64']
release_variants = ['release|Win32']+['release|x64']
release_debug_variants = ['release_debug|Win32']+['release_debug|x64']
variants = debug_variants + release_variants + release_debug_variants
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_debug_targets = ['bin\\godot.windows.opt.tools.32.exe']+['bin\\godot.windows.opt.tools.64.exe']
targets = debug_targets + release_targets + release_debug_targets
msvproj = env.MSVSProject(target = ['#godot' + env['MSVSPROJECTSUFFIX'] ],
incs = env.vs_incs,
srcs = env.vs_srcs,
runfile = targets,
buildtarget = targets,
auto_build_solution=1,
variant = variants)
else:
print("No valid target platform selected.")
print("The following were detected:")
for x in platform_list:
print("\t"+x)
print("\nPlease run scons again with argument: platform=<string>")
print("No valid target platform selected.")
print("The following were detected:")
for x in platform_list:
print("\t"+x)
print("\nPlease run scons again with argument: platform=<string>")

View File

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

View File

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

View File

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

View File

@ -11,66 +11,66 @@ import xml.etree.ElementTree as ET
################################################################################
flags = {
'c': platform.platform() != 'Windows', # Disable by default on windows, since we use ANSI escape codes
'b': False,
'g': False,
's': False,
'u': False,
'h': False,
'p': False,
'o': True,
'i': False,
'c': platform.platform() != 'Windows', # Disable by default on windows, since we use ANSI escape codes
'b': False,
'g': False,
's': False,
'u': False,
'h': False,
'p': False,
'o': True,
'i': False,
}
flag_descriptions = {
'c': 'Toggle colors when outputting.',
'b': 'Toggle showing only not fully described classes.',
'g': 'Toggle showing only completed classes.',
's': 'Toggle showing comments about the status.',
'u': 'Toggle URLs to docs.',
'h': 'Show help and exit.',
'p': 'Toggle showing percentage as well as counts.',
'o': 'Toggle overall column.',
'i': 'Toggle collapse of class items columns.',
'c': 'Toggle colors when outputting.',
'b': 'Toggle showing only not fully described classes.',
'g': 'Toggle showing only completed classes.',
's': 'Toggle showing comments about the status.',
'u': 'Toggle URLs to docs.',
'h': 'Show help and exit.',
'p': 'Toggle showing percentage as well as counts.',
'o': 'Toggle overall column.',
'i': 'Toggle collapse of class items columns.',
}
long_flags = {
'colors': 'c',
'use-colors': 'c',
'colors': 'c',
'use-colors': 'c',
'bad': 'b',
'only-bad': 'b',
'bad': 'b',
'only-bad': 'b',
'good': 'g',
'only-good': 'g',
'good': 'g',
'only-good': 'g',
'comments': 's',
'status': 's',
'comments': 's',
'status': 's',
'urls': 'u',
'gen-url': 'u',
'urls': 'u',
'gen-url': 'u',
'help': 'h',
'help': 'h',
'percent': 'p',
'use-percentages': 'p',
'percent': 'p',
'use-percentages': 'p',
'overall': 'o',
'use-overall': 'o',
'overall': 'o',
'use-overall': 'o',
'items': 'i',
'collapse': 'i',
'items': 'i',
'collapse': 'i',
}
table_columns = ['name', 'brief_description', 'description', 'methods', 'constants', 'members', 'signals']
table_column_names = ['Name', 'Brief Desc.', 'Desc.', 'Methods', 'Constants', 'Members', 'Signals']
colors = {
'name': [36], # cyan
'part_big_problem': [4, 31], # underline, red
'part_problem': [31], # red
'part_mostly_good': [33], # yellow
'part_good': [32], # green
'url': [4, 34], # underline, blue
'section': [1, 4], # bold, underline
'state_off': [36], # cyan
'state_on': [1, 35], # bold, magenta/plum
'name': [36], # cyan
'part_big_problem': [4, 31], # underline, red
'part_problem': [31], # red
'part_mostly_good': [33], # yellow
'part_good': [32], # green
'url': [4, 34], # underline, blue
'section': [1, 4], # bold, underline
'state_off': [36], # cyan
'state_on': [1, 35], # bold, magenta/plum
}
overall_progress_description_weigth = 10
@ -81,22 +81,22 @@ overall_progress_description_weigth = 10
################################################################################
def validate_tag(elem, tag):
if elem.tag != tag:
print('Tag mismatch, expected "' + tag + '", got ' + elem.tag)
sys.exit(255)
if elem.tag != tag:
print('Tag mismatch, expected "' + tag + '", got ' + elem.tag)
sys.exit(255)
def color(color, string):
if flags['c']:
color_format = ''
for code in colors[color]:
color_format += '\033[' + str(code) + 'm'
return color_format + string + '\033[0m'
else:
return string
if flags['c']:
color_format = ''
for code in colors[color]:
color_format += '\033[' + str(code) + 'm'
return color_format + string + '\033[0m'
else:
return string
ansi_escape = re.compile(r'\x1b[^m]*m')
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:
def __init__(self, described = 0, total = 0):
self.described = described
self.total = total
def __init__(self, described = 0, total = 0):
self.described = described
self.total = total
def __add__(self, other):
return ClassStatusProgress(self.described + other.described, self.total + other.total)
def __add__(self, other):
return ClassStatusProgress(self.described + other.described, self.total + other.total)
def increment(self, described):
if described:
self.described += 1
self.total += 1
def increment(self, described):
if described:
self.described += 1
self.total += 1
def is_ok(self):
return self.described >= self.total
def is_ok(self):
return self.described >= self.total
def to_configured_colored_string(self):
if flags['p']:
return self.to_colored_string('{percent}% ({has}/{total})', '{pad_percent}{pad_described}{s}{pad_total}')
else:
return self.to_colored_string()
def to_configured_colored_string(self):
if flags['p']:
return self.to_colored_string('{percent}% ({has}/{total})', '{pad_percent}{pad_described}{s}{pad_total}')
else:
return self.to_colored_string()
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
percent = round(100*ratio)
s = format.format(has = str(self.described), total = str(self.total), percent = str(percent))
if self.described >= self.total:
s = color('part_good', s)
elif self.described >= self.total/4*3:
s = color('part_mostly_good', s)
elif self.described > 0:
s = color('part_problem', s)
else:
s = color('part_big_problem', s)
pad_size = max(len(str(self.described)), len(str(self.total)))
pad_described = ''.ljust(pad_size - len(str(self.described)))
pad_percent = ''.ljust(3 - len(str(percent)))
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)
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
percent = round(100*ratio)
s = format.format(has = str(self.described), total = str(self.total), percent = str(percent))
if self.described >= self.total:
s = color('part_good', s)
elif self.described >= self.total/4*3:
s = color('part_mostly_good', s)
elif self.described > 0:
s = color('part_problem', s)
else:
s = color('part_big_problem', s)
pad_size = max(len(str(self.described)), len(str(self.total)))
pad_described = ''.ljust(pad_size - len(str(self.described)))
pad_percent = ''.ljust(3 - len(str(percent)))
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)
class ClassStatus:
def __init__(self, name=''):
self.name = name
self.has_brief_description = True
self.has_description = True
self.progresses = {
'methods': ClassStatusProgress(),
'constants': ClassStatusProgress(),
'members': ClassStatusProgress(),
'signals': ClassStatusProgress()
}
def __init__(self, name=''):
self.name = name
self.has_brief_description = True
self.has_description = True
self.progresses = {
'methods': ClassStatusProgress(),
'constants': ClassStatusProgress(),
'members': ClassStatusProgress(),
'signals': ClassStatusProgress()
}
def __add__(self, other):
new_status = ClassStatus()
new_status.name = self.name
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
for k in self.progresses:
new_status.progresses[k] = self.progresses[k] + other.progresses[k]
return new_status
def __add__(self, other):
new_status = ClassStatus()
new_status.name = self.name
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
for k in self.progresses:
new_status.progresses[k] = self.progresses[k] + other.progresses[k]
return new_status
def is_ok(self):
ok = True
ok = ok and self.has_brief_description
ok = ok and self.has_description
for k in self.progresses:
ok = ok and self.progresses[k].is_ok()
return ok
def is_ok(self):
ok = True
ok = ok and self.has_brief_description
ok = ok and self.has_description
for k in self.progresses:
ok = ok and self.progresses[k].is_ok()
return ok
def make_output(self):
output = {}
output['name'] = color('name', self.name)
def make_output(self):
output = {}
output['name'] = color('name', self.name)
ok_string = color('part_good', 'OK')
missing_string = color('part_big_problem', 'MISSING')
ok_string = color('part_good', 'OK')
missing_string = color('part_big_problem', 'MISSING')
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['brief_description'] = ok_string if self.has_brief_description else missing_string
output['description'] = ok_string if self.has_description else missing_string
description_progress = ClassStatusProgress(
(self.has_brief_description + self.has_description) * overall_progress_description_weigth,
2 * overall_progress_description_weigth
)
items_progress = ClassStatusProgress()
description_progress = ClassStatusProgress(
(self.has_brief_description + self.has_description) * overall_progress_description_weigth,
2 * overall_progress_description_weigth
)
items_progress = ClassStatusProgress()
for k in ['methods', 'constants', 'members', 'signals']:
items_progress += self.progresses[k]
output[k] = self.progresses[k].to_configured_colored_string()
for k in ['methods', 'constants', 'members', 'signals']:
items_progress += self.progresses[k]
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'):
output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/_classes.html')
if flags['s']:
output['comment'] = color('part_good', 'ALL OK')
else:
output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/class_{name}.html'.format(name=self.name.lower()))
if self.name.startswith('Total'):
output['url'] = color('url', 'http://docs.godotengine.org/en/latest/classes/_classes.html')
if flags['s']:
output['comment'] = color('part_good', 'ALL OK')
else:
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():
output['comment'] = color('part_good', 'ALL OK')
if flags['s'] and not flags['g'] and self.is_ok():
output['comment'] = color('part_good', 'ALL OK')
return output
return output
def generate_for_class(c):
status = ClassStatus()
status.name = c.attrib['name']
for tag in list(c):
def generate_for_class(c):
status = ClassStatus()
status.name = c.attrib['name']
for tag in list(c):
if tag.tag == 'brief_description':
status.has_brief_description = len(tag.text.strip()) > 0
if tag.tag == 'brief_description':
status.has_brief_description = len(tag.text.strip()) > 0
elif tag.tag == 'description':
status.has_description = len(tag.text.strip()) > 0
elif tag.tag == 'description':
status.has_description = len(tag.text.strip()) > 0
elif tag.tag in ['methods', 'signals']:
for sub_tag in list(tag):
descr = sub_tag.find('description')
status.progresses[tag.tag].increment(len(descr.text.strip()) > 0)
elif tag.tag in ['methods', 'signals']:
for sub_tag in list(tag):
descr = sub_tag.find('description')
status.progresses[tag.tag].increment(len(descr.text.strip()) > 0)
elif tag.tag in ['constants', 'members']:
for sub_tag in list(tag):
status.progresses[tag.tag].increment(len(sub_tag.text.strip()) > 0)
elif tag.tag in ['constants', 'members']:
for sub_tag in list(tag):
status.progresses[tag.tag].increment(len(sub_tag.text.strip()) > 0)
elif tag.tag in ['theme_items']:
pass #Ignore those tags, since they seem to lack description at all
elif tag.tag in ['theme_items']:
pass #Ignore those tags, since they seem to lack description at all
else:
print(tag.tag, tag.attrib)
else:
print(tag.tag, tag.attrib)
return status
return status
@ -248,31 +248,31 @@ input_file_list = []
input_class_list = []
for arg in sys.argv[1:]:
if arg.startswith('--'):
flags[long_flags[arg[2:]]] = not flags[long_flags[arg[2:]]]
elif arg.startswith('-'):
for f in arg[1:]:
flags[f] = not flags[f]
elif arg.endswith('.xml'):
input_file_list.append(arg)
else:
input_class_list.append(arg)
if arg.startswith('--'):
flags[long_flags[arg[2:]]] = not flags[long_flags[arg[2:]]]
elif arg.startswith('-'):
for f in arg[1:]:
flags[f] = not flags[f]
elif arg.endswith('.xml'):
input_file_list.append(arg)
else:
input_class_list.append(arg)
if flags['i']:
for r in ['methods', 'constants', 'members', 'signals']:
index = table_columns.index(r)
del table_column_names[index]
del table_columns[index]
table_column_names.append('Items')
table_columns.append('items')
for r in ['methods', 'constants', 'members', 'signals']:
index = table_columns.index(r)
del table_column_names[index]
del table_columns[index]
table_column_names.append('Items')
table_columns.append('items')
if flags['o'] == (not flags['i']):
table_column_names.append('Overall')
table_columns.append('overall')
table_column_names.append('Overall')
table_columns.append('overall')
if flags['u']:
table_column_names.append('Docs URL')
table_columns.append('url')
table_column_names.append('Docs URL')
table_columns.append('url')
################################################################################
@ -280,28 +280,28 @@ if flags['u']:
################################################################################
if len(input_file_list) < 1 or flags['h']:
if not flags['h']:
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('\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(color('section', 'Available flags') + ':')
possible_synonym_list = list(long_flags)
possible_synonym_list.sort()
flag_list = list(flags)
flag_list.sort()
for flag in flag_list:
synonyms = [color('name', '-' + flag)]
for synonym in possible_synonym_list:
if long_flags[synonym] == flag:
synonyms.append(color('name', '--' + synonym))
if not flags['h']:
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('\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(color('section', 'Available flags') + ':')
possible_synonym_list = list(long_flags)
possible_synonym_list.sort()
flag_list = list(flags)
flag_list.sort()
for flag in flag_list:
synonyms = [color('name', '-' + flag)]
for synonym in possible_synonym_list:
if long_flags[synonym] == flag:
synonyms.append(color('name', '--' + synonym))
print(('{synonyms} (Currently '+color('state_'+('on' if flags[flag] else 'off'), '{value}')+')\n\t{description}').format(
synonyms = ', '.join(synonyms),
value = ('on' if flags[flag] else 'off'),
description = flag_descriptions[flag]
))
sys.exit(0)
print(('{synonyms} (Currently '+color('state_'+('on' if flags[flag] else 'off'), '{value}')+')\n\t{description}').format(
synonyms = ', '.join(synonyms),
value = ('on' if flags[flag] else 'off'),
description = flag_descriptions[flag]
))
sys.exit(0)
@ -313,25 +313,25 @@ class_names = []
classes = {}
for file in input_file_list:
tree = ET.parse(file)
doc = tree.getroot()
tree = ET.parse(file)
doc = tree.getroot()
if 'version' not in doc.attrib:
print('Version missing from "doc"')
sys.exit(255)
if 'version' not in doc.attrib:
print('Version missing from "doc"')
sys.exit(255)
version = doc.attrib['version']
version = doc.attrib['version']
for c in list(doc):
if c.attrib['name'] in class_names:
continue
class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c
for c in list(doc):
if c.attrib['name'] in class_names:
continue
class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c
class_names.sort()
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')
for cn in input_class_list:
if not cn in classes:
print('Cannot find class ' + cn + '!')
sys.exit(255)
if not cn in classes:
print('Cannot find class ' + cn + '!')
sys.exit(255)
c = classes[cn]
validate_tag(c, 'class')
status = ClassStatus.generate_for_class(c)
c = classes[cn]
validate_tag(c, 'class')
status = ClassStatus.generate_for_class(c)
if flags['b'] and status.is_ok():
continue
if flags['g'] and not status.is_ok():
continue
if flags['b'] and status.is_ok():
continue
if flags['g'] and not status.is_ok():
continue
total_status = total_status + status
out = status.make_output()
row = []
for column in table_columns:
if column in out:
row.append(out[column])
else:
row.append('')
total_status = total_status + status
out = status.make_output()
row = []
for column in table_columns:
if column in out:
row.append(out[column])
else:
row.append('')
if 'comment' in out and out['comment'] != '':
row.append(out['comment'])
if 'comment' in out and 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:
print(color('part_big_problem', 'No classes suitable for printing!'))
sys.exit(0)
print(color('part_big_problem', 'No classes suitable for printing!'))
sys.exit(0)
if len(table) > 2:
total_status.name = 'Total = {0}'.format(len(table) - 1)
out = total_status.make_output()
row = []
for column in table_columns:
if column in out:
row.append(out[column])
else:
row.append('')
table.append(row)
total_status.name = 'Total = {0}'.format(len(table) - 1)
out = total_status.make_output()
row = []
for column in table_columns:
if column in out:
row.append(out[column])
else:
row.append('')
table.append(row)
table_column_sizes = []
for row in table:
for cell_i, cell in enumerate(row):
if cell_i >= len(table_column_sizes):
table_column_sizes.append(0)
for cell_i, cell in enumerate(row):
if cell_i >= len(table_column_sizes):
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]
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)
for row_i, row in enumerate(table):
row_string = table_column_chars
for cell_i, cell in enumerate(row):
padding_needed = table_column_sizes[cell_i] - nonescape_len(cell) + 2
if cell_i == 0:
row_string += table_row_chars[2] + cell + table_row_chars[2]*(padding_needed-1)
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_column_chars
row_string = table_column_chars
for cell_i, cell in enumerate(row):
padding_needed = table_column_sizes[cell_i] - nonescape_len(cell) + 2
if cell_i == 0:
row_string += table_row_chars[2] + cell + table_row_chars[2]*(padding_needed-1)
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_column_chars
print(row_string)
print(row_string)
if row_i == 0 or row_i == len(table) - 2:
print(divider_string)
if row_i == 0 or row_i == len(table) - 2:
print(divider_string)
print(divider_string)
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:]:
input_list.append(arg)
input_list.append(arg)
if len(input_list) < 1:
print("usage: makedoku.py <classes.xml>")
sys.exit(0)
print("usage: makedoku.py <classes.xml>")
sys.exit(0)
def validate_tag(elem,tag):
if (elem.tag != tag):
print("Tag mismatch, expected '"+tag+"', got "+elem.tag);
sys.exit(255)
if (elem.tag != tag):
print("Tag mismatch, expected '"+tag+"', got "+elem.tag);
sys.exit(255)
class_names=[]
@ -27,289 +27,289 @@ classes={}
def make_class_list(class_list,columns):
f=open("class_list.txt","wb")
prev=0
col_max = len(class_list) / columns + 1
print("col max is ", col_max)
col_count = 0
row_count = 0
last_initial = ""
fit_columns=[]
f=open("class_list.txt","wb")
prev=0
col_max = len(class_list) / columns + 1
print("col max is ", col_max)
col_count = 0
row_count = 0
last_initial = ""
fit_columns=[]
for n in range(0,columns):
fit_columns+=[[]]
for n in range(0,columns):
fit_columns+=[[]]
indexers=[]
last_initial=""
indexers=[]
last_initial=""
idx=0
for n in class_list:
col = idx/col_max
if (col>=columns):
col=columns-1
fit_columns[col]+=[n]
idx+=1
if (n[:1]!=last_initial):
indexers+=[n]
last_initial=n[:1]
idx=0
for n in class_list:
col = idx/col_max
if (col>=columns):
col=columns-1
fit_columns[col]+=[n]
idx+=1
if (n[:1]!=last_initial):
indexers+=[n]
last_initial=n[:1]
row_max=0
row_max=0
for n in range(0,columns):
if (len(fit_columns[n])>row_max):
row_max=len(fit_columns[n])
for n in range(0,columns):
if (len(fit_columns[n])>row_max):
row_max=len(fit_columns[n])
for r in range(0,row_max):
s="|"
for c in range(0,columns):
if (r>=len(fit_columns[c])):
continue
for r in range(0,row_max):
s="|"
for c in range(0,columns):
if (r>=len(fit_columns[c])):
continue
classname = fit_columns[c][r]
initial=classname[0]
if (classname in indexers):
s+="**"+initial+"**|"
else:
s+=" |"
classname = fit_columns[c][r]
initial=classname[0]
if (classname in indexers):
s+="**"+initial+"**|"
else:
s+=" |"
s+="[["+classname.lower()+"|"+classname+"]]|"
s+="[["+classname.lower()+"|"+classname+"]]|"
s+="\n"
f.write(s)
s+="\n"
f.write(s)
def dokuize_text(txt):
return txt
return txt
def dokuize_text(text):
pos=0
while(True):
pos = text.find("[",pos)
if (pos==-1):
break
pos=0
while(True):
pos = text.find("[",pos)
if (pos==-1):
break
endq_pos=text.find("]",pos+1)
if (endq_pos==-1):
break
endq_pos=text.find("]",pos+1)
if (endq_pos==-1):
break
pre_text=text[:pos]
post_text=text[endq_pos+1:]
tag_text=text[pos+1:endq_pos]
pre_text=text[:pos]
post_text=text[endq_pos+1:]
tag_text=text[pos+1:endq_pos]
if (tag_text in class_names):
tag_text="[["+tag_text.lower()+"|"+tag_text+"]]"
else: #command
cmd=tag_text
space_pos=tag_text.find(" ")
if (cmd.find("html")==0):
cmd=tag_text[:space_pos]
param=tag_text[space_pos+1:]
tag_text="<"+param+">"
elif(cmd.find("method")==0):
cmd=tag_text[:space_pos]
param=tag_text[space_pos+1:]
if (tag_text in class_names):
tag_text="[["+tag_text.lower()+"|"+tag_text+"]]"
else: #command
cmd=tag_text
space_pos=tag_text.find(" ")
if (cmd.find("html")==0):
cmd=tag_text[:space_pos]
param=tag_text[space_pos+1:]
tag_text="<"+param+">"
elif(cmd.find("method")==0):
cmd=tag_text[:space_pos]
param=tag_text[space_pos+1:]
if (param.find(".")!=-1):
class_param,method_param=param.split(".")
tag_text="[["+class_param.lower()+"#"+method_param+"|"+class_param+'.'+method_param+"]]"
else:
tag_text="[[#"+param+"|"+param+"]]"
elif (cmd.find("image=")==0):
tag_text="{{"+cmd[6:]+"}}"
elif (cmd.find("url=")==0):
tag_text="[["+cmd[4:]+"|"
elif (cmd=="/url"):
tag_text="]]>"
elif (cmd=="center"):
tag_text=""
elif (cmd=="/center"):
tag_text=""
elif (cmd=="br"):
tag_text="\\\\\n"
elif (cmd=="i" or cmd=="/i"):
tag_text="//"
elif (cmd=="b" or cmd=="/b"):
tag_text="**"
elif (cmd=="u" or cmd=="/u"):
tag_text="__"
else:
tag_text="["+tag_text+"]"
if (param.find(".")!=-1):
class_param,method_param=param.split(".")
tag_text="[["+class_param.lower()+"#"+method_param+"|"+class_param+'.'+method_param+"]]"
else:
tag_text="[[#"+param+"|"+param+"]]"
elif (cmd.find("image=")==0):
tag_text="{{"+cmd[6:]+"}}"
elif (cmd.find("url=")==0):
tag_text="[["+cmd[4:]+"|"
elif (cmd=="/url"):
tag_text="]]>"
elif (cmd=="center"):
tag_text=""
elif (cmd=="/center"):
tag_text=""
elif (cmd=="br"):
tag_text="\\\\\n"
elif (cmd=="i" or cmd=="/i"):
tag_text="//"
elif (cmd=="b" or cmd=="/b"):
tag_text="**"
elif (cmd=="u" or cmd=="/u"):
tag_text="__"
else:
tag_text="["+tag_text+"]"
text=pre_text+tag_text+post_text
pos=len(pre_text)+len(tag_text)
text=pre_text+tag_text+post_text
pos=len(pre_text)+len(tag_text)
#tnode = ET.SubElement(parent,"div")
#tnode.text=text
return text
#tnode = ET.SubElement(parent,"div")
#tnode.text=text
return text
def make_type(t):
global class_names
if (t in class_names):
return "[["+t.lower()+"|"+t+"]]"
return t
global class_names
if (t in class_names):
return "[["+t.lower()+"|"+t+"]]"
return t
def make_method(f,name,m,declare,event=False):
s=" * "
ret_type="void"
args=list(m)
mdata={}
mdata["argidx"]=[]
for a in args:
if (a.tag=="return"):
idx=-1
elif (a.tag=="argument"):
idx=int(a.attrib["index"])
else:
continue
s=" * "
ret_type="void"
args=list(m)
mdata={}
mdata["argidx"]=[]
for a in args:
if (a.tag=="return"):
idx=-1
elif (a.tag=="argument"):
idx=int(a.attrib["index"])
else:
continue
mdata["argidx"].append(idx)
mdata[idx]=a
mdata["argidx"].append(idx)
mdata[idx]=a
if (not event):
if (-1 in mdata["argidx"]):
s+=make_type(mdata[-1].attrib["type"])
else:
s+="void"
s+=" "
if (not event):
if (-1 in mdata["argidx"]):
s+=make_type(mdata[-1].attrib["type"])
else:
s+="void"
s+=" "
if (declare):
if (declare):
#span.attrib["class"]="funcdecl"
#a=ET.SubElement(span,"a")
#a.attrib["name"]=name+"_"+m.attrib["name"]
#a.text=name+"::"+m.attrib["name"]
s+="**"+m.attrib["name"]+"**"
else:
s+="[[#"+m.attrib["name"]+"|"+m.attrib["name"]+"]]"
#span.attrib["class"]="funcdecl"
#a=ET.SubElement(span,"a")
#a.attrib["name"]=name+"_"+m.attrib["name"]
#a.text=name+"::"+m.attrib["name"]
s+="**"+m.attrib["name"]+"**"
else:
s+="[[#"+m.attrib["name"]+"|"+m.attrib["name"]+"]]"
s+="**(**"
argfound=False
for a in mdata["argidx"]:
arg=mdata[a]
if (a<0):
continue
if (a>0):
s+=", "
else:
s+=" "
s+="**(**"
argfound=False
for a in mdata["argidx"]:
arg=mdata[a]
if (a<0):
continue
if (a>0):
s+=", "
else:
s+=" "
s+=make_type(arg.attrib["type"])
if ("name" in arg.attrib):
s+=" "+arg.attrib["name"]
else:
s+=" arg"+str(a)
s+=make_type(arg.attrib["type"])
if ("name" in arg.attrib):
s+=" "+arg.attrib["name"]
else:
s+=" arg"+str(a)
if ("default" in arg.attrib):
s+="="+arg.attrib["default"]
if ("default" in arg.attrib):
s+="="+arg.attrib["default"]
argfound=True
argfound=True
if (argfound):
s+=" "
s+="**)**"
if (argfound):
s+=" "
s+="**)**"
if ("qualifiers" in m.attrib):
s+=" "+m.attrib["qualifiers"]
if ("qualifiers" in m.attrib):
s+=" "+m.attrib["qualifiers"]
f.write(s+"\n")
f.write(s+"\n")
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):
inh=node.attrib["inherits"].strip()
f.write("**Inherits:** [["+inh.lower()+"|"+inh+"]]\\\\\n")
if ("category" in node.attrib):
f.write("**Category:** "+node.attrib["category"].strip()+"\\\\\n")
if ("inherits" in node.attrib):
inh=node.attrib["inherits"].strip()
f.write("**Inherits:** [["+inh.lower()+"|"+inh+"]]\\\\\n")
if ("category" in node.attrib):
f.write("**Category:** "+node.attrib["category"].strip()+"\\\\\n")
briefd = node.find("brief_description")
if (briefd!=None):
f.write("===== Brief Description ======\n")
f.write( dokuize_text(briefd.text.strip())+"\n" )
briefd = node.find("brief_description")
if (briefd!=None):
f.write("===== Brief Description ======\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):
f.write("===== Member Functions ======\n")
for m in list(methods):
make_method(f,node.attrib["name"],m,False)
if(methods!=None and len(list(methods))>0):
f.write("===== Member Functions ======\n")
for m in list(methods):
make_method(f,node.attrib["name"],m,False)
events = node.find("signals")
if(events!=None and len(list(events))>0):
f.write("===== Signals ======\n")
for m in list(events):
make_method(f,node.attrib["name"],m,True,True)
events = node.find("signals")
if(events!=None and len(list(events))>0):
f.write("===== Signals ======\n")
for m in list(events):
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):
f.write("===== Member Variables ======\n")
if(members!=None and len(list(members))>0):
f.write("===== Member Variables ======\n")
for c in list(members):
s = " * "
s+=make_type(c.attrib["type"])+" "
s+="**"+c.attrib["name"]+"**"
if (c.text.strip()!=""):
s+=" - "+c.text.strip()
f.write(s+"\n")
for c in list(members):
s = " * "
s+=make_type(c.attrib["type"])+" "
s+="**"+c.attrib["name"]+"**"
if (c.text.strip()!=""):
s+=" - "+c.text.strip()
f.write(s+"\n")
constants = node.find("constants")
if(constants!=None and len(list(constants))>0):
f.write("===== Numeric Constants ======\n")
for c in list(constants):
s = " * "
s+="**"+c.attrib["name"]+"**"
if ("value" in c.attrib):
s+=" = **"+c.attrib["value"]+"**"
if (c.text.strip()!=""):
s+=" - "+c.text.strip()
f.write(s+"\n")
constants = node.find("constants")
if(constants!=None and len(list(constants))>0):
f.write("===== Numeric Constants ======\n")
for c in list(constants):
s = " * "
s+="**"+c.attrib["name"]+"**"
if ("value" in c.attrib):
s+=" = **"+c.attrib["value"]+"**"
if (c.text.strip()!=""):
s+=" - "+c.text.strip()
f.write(s+"\n")
descr=node.find("description")
if (descr!=None and descr.text.strip()!=""):
f.write("===== Description ======\n")
f.write(dokuize_text(descr.text.strip())+"\n")
descr=node.find("description")
if (descr!=None and descr.text.strip()!=""):
f.write("===== Description ======\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):
f.write("===== Member Function Description ======\n")
for m in list(methods):
if(methods!=None and len(list(methods))>0):
f.write("===== Member Function Description ======\n")
for m in list(methods):
d=m.find("description")
if (d==None or d.text.strip()==""):
continue
f.write("== "+m.attrib["name"]+" ==\n")
make_method(f,node.attrib["name"],m,False)
f.write("\\\\\n")
f.write(dokuize_text(d.text.strip()))
f.write("\n")
d=m.find("description")
if (d==None or d.text.strip()==""):
continue
f.write("== "+m.attrib["name"]+" ==\n")
make_method(f,node.attrib["name"],m,False)
f.write("\\\\\n")
f.write(dokuize_text(d.text.strip()))
f.write("\n")
"""
"""
div=ET.Element("div")
div.attrib["class"]="class";
@ -487,20 +487,20 @@ def make_doku_class(node):
return div
"""
for file in input_list:
tree = ET.parse(file)
doc=tree.getroot()
tree = ET.parse(file)
doc=tree.getroot()
if ("version" not in doc.attrib):
print("Version missing from 'doc'")
sys.exit(255)
if ("version" not in doc.attrib):
print("Version missing from 'doc'")
sys.exit(255)
version=doc.attrib["version"]
version=doc.attrib["version"]
for c in list(doc):
if (c.attrib["name"] in class_names):
continue
class_names.append(c.attrib["name"])
classes[c.attrib["name"]]=c
for c in list(doc):
if (c.attrib["name"] in class_names):
continue
class_names.append(c.attrib["name"])
classes[c.attrib["name"]]=c
class_names.sort()
@ -508,7 +508,7 @@ class_names.sort()
make_class_list(class_names,4)
for cn in class_names:
c=classes[cn]
make_doku_class(c)
c=classes[cn]
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 = []
for arg in sys.argv[1:]:
input_list.append(arg)
input_list.append(arg)
if len(input_list) < 1:
print 'usage: makemd.py <classes.xml>'
sys.exit(0)
print 'usage: makemd.py <classes.xml>'
sys.exit(0)
def validate_tag(elem, tag):
if elem.tag != tag:
print "Tag mismatch, expected '" + tag + "', got " + elem.tag
sys.exit(255)
if elem.tag != tag:
print "Tag mismatch, expected '" + tag + "', got " + elem.tag
sys.exit(255)
class_names = []
@ -26,321 +26,321 @@ classes = {}
def make_class_list(class_list, columns):
f = open('class_list.md', 'wb')
prev = 0
col_max = len(class_list) / columns + 1
print ('col max is ', col_max)
col_count = 0
row_count = 0
last_initial = ''
fit_columns = []
f = open('class_list.md', 'wb')
prev = 0
col_max = len(class_list) / columns + 1
print ('col max is ', col_max)
col_count = 0
row_count = 0
last_initial = ''
fit_columns = []
for n in range(0, columns):
fit_columns += [[]]
for n in range(0, columns):
fit_columns += [[]]
indexers = []
last_initial = ''
indexers = []
last_initial = ''
idx = 0
for n in class_list:
col = idx / col_max
if col >= columns:
col = columns - 1
fit_columns[col] += [n]
idx += 1
if n[:1] != last_initial:
indexers += [n]
last_initial = n[:1]
idx = 0
for n in class_list:
col = idx / col_max
if col >= columns:
col = columns - 1
fit_columns[col] += [n]
idx += 1
if n[:1] != last_initial:
indexers += [n]
last_initial = n[:1]
row_max = 0
f.write("\n")
row_max = 0
f.write("\n")
for n in range(0, columns):
if len(fit_columns[n]) > row_max:
row_max = len(fit_columns[n])
for n in range(0, columns):
if len(fit_columns[n]) > row_max:
row_max = len(fit_columns[n])
f.write("| ")
for n in range(0, columns):
f.write(" | |")
f.write("| ")
for n in range(0, columns):
f.write(" | |")
f.write("\n")
f.write("| ")
for n in range(0, columns):
f.write(" --- | ------- |")
f.write("\n")
f.write("\n")
f.write("| ")
for n in range(0, columns):
f.write(" --- | ------- |")
f.write("\n")
for r in range(0, row_max):
s = '| '
for c in range(0, columns):
if r >= len(fit_columns[c]):
continue
for r in range(0, row_max):
s = '| '
for c in range(0, columns):
if r >= len(fit_columns[c]):
continue
classname = fit_columns[c][r]
initial = classname[0]
if classname in indexers:
s += '**' + initial + '** | '
else:
s += ' | '
classname = fit_columns[c][r]
initial = classname[0]
if classname in indexers:
s += '**' + initial + '** | '
else:
s += ' | '
s += '[' + classname + '](class_'+ classname.lower()+') | '
s += '[' + classname + '](class_'+ classname.lower()+') | '
s += '\n'
f.write(s)
s += '\n'
f.write(s)
def dokuize_text(txt):
return txt
return txt
def dokuize_text(text):
pos = 0
while True:
pos = text.find('[', pos)
if pos == -1:
break
pos = 0
while True:
pos = text.find('[', pos)
if pos == -1:
break
endq_pos = text.find(']', pos + 1)
if endq_pos == -1:
break
endq_pos = text.find(']', pos + 1)
if endq_pos == -1:
break
pre_text = text[:pos]
post_text = text[endq_pos + 1:]
tag_text = text[pos + 1:endq_pos]
pre_text = text[:pos]
post_text = text[endq_pos + 1:]
tag_text = text[pos + 1:endq_pos]
if tag_text in class_names:
tag_text = make_type(tag_text)
else:
if tag_text in class_names:
tag_text = make_type(tag_text)
else:
# command
# command
cmd = tag_text
space_pos = tag_text.find(' ')
if cmd.find('html') == 0:
cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:]
tag_text = '<' + param + '>'
elif cmd.find('method') == 0:
cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:]
cmd = tag_text
space_pos = tag_text.find(' ')
if cmd.find('html') == 0:
cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:]
tag_text = '<' + param + '>'
elif cmd.find('method') == 0:
cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:]
if param.find('.') != -1:
(class_param, method_param) = param.split('.')
tag_text = '['+class_param+'.'+method_param.replace("_","&#95;")+'](' + class_param.lower() + '#' \
+ method_param + ')'
else:
tag_text = '[' + param.replace("_","&#95;") + '](#' + param + ')'
elif cmd.find('image=') == 0:
tag_text = '![](' + cmd[6:] + ')'
elif cmd.find('url=') == 0:
tag_text = '[' + cmd[4:] + ']('+cmd[4:]
elif cmd == '/url':
tag_text = ')'
elif cmd == 'center':
tag_text = ''
elif cmd == '/center':
tag_text = ''
elif cmd == 'br':
tag_text = '\n'
elif cmd == 'i' or cmd == '/i':
tag_text = '_'
elif cmd == 'b' or cmd == '/b':
tag_text = '**'
elif cmd == 'u' or cmd == '/u':
tag_text = '__'
else:
tag_text = '[' + tag_text + ']'
if param.find('.') != -1:
(class_param, method_param) = param.split('.')
tag_text = '['+class_param+'.'+method_param.replace("_","&#95;")+'](' + class_param.lower() + '#' \
+ method_param + ')'
else:
tag_text = '[' + param.replace("_","&#95;") + '](#' + param + ')'
elif cmd.find('image=') == 0:
tag_text = '![](' + cmd[6:] + ')'
elif cmd.find('url=') == 0:
tag_text = '[' + cmd[4:] + ']('+cmd[4:]
elif cmd == '/url':
tag_text = ')'
elif cmd == 'center':
tag_text = ''
elif cmd == '/center':
tag_text = ''
elif cmd == 'br':
tag_text = '\n'
elif cmd == 'i' or cmd == '/i':
tag_text = '_'
elif cmd == 'b' or cmd == '/b':
tag_text = '**'
elif cmd == 'u' or cmd == '/u':
tag_text = '__'
else:
tag_text = '[' + tag_text + ']'
text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text)
text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text)
# tnode = ET.SubElement(parent,"div")
# tnode.text=text
return text
return text
def make_type(t):
global class_names
if t in class_names:
return '[' + t + '](class_' + t.lower() + ')'
return t
global class_names
if t in class_names:
return '[' + t + '](class_' + t.lower() + ')'
return t
def make_method(
f,
name,
m,
declare,
event=False,
):
f,
name,
m,
declare,
event=False,
):
s = ' * '
ret_type = 'void'
args = list(m)
mdata = {}
mdata['argidx'] = []
for a in args:
if a.tag == 'return':
idx = -1
elif a.tag == 'argument':
idx = int(a.attrib['index'])
else:
continue
s = ' * '
ret_type = 'void'
args = list(m)
mdata = {}
mdata['argidx'] = []
for a in args:
if a.tag == 'return':
idx = -1
elif a.tag == 'argument':
idx = int(a.attrib['index'])
else:
continue
mdata['argidx'].append(idx)
mdata[idx] = a
mdata['argidx'].append(idx)
mdata[idx] = a
if not event:
if -1 in mdata['argidx']:
s += make_type(mdata[-1].attrib['type'])
else:
s += 'void'
s += ' '
if not event:
if -1 in mdata['argidx']:
s += make_type(mdata[-1].attrib['type'])
else:
s += 'void'
s += ' '
if declare:
if declare:
# span.attrib["class"]="funcdecl"
# a=ET.SubElement(span,"a")
# a.attrib["name"]=name+"_"+m.attrib["name"]
# a.text=name+"::"+m.attrib["name"]
# span.attrib["class"]="funcdecl"
# a=ET.SubElement(span,"a")
# a.attrib["name"]=name+"_"+m.attrib["name"]
# a.text=name+"::"+m.attrib["name"]
s += ' **'+m.attrib['name'].replace("_","&#95;")+'** '
else:
s += ' **['+ m.attrib['name'].replace("_","&#95;")+'](#' + m.attrib['name'] + ')** '
s += ' **'+m.attrib['name'].replace("_","&#95;")+'** '
else:
s += ' **['+ m.attrib['name'].replace("_","&#95;")+'](#' + m.attrib['name'] + ')** '
s += ' **(**'
argfound = False
for a in mdata['argidx']:
arg = mdata[a]
if a < 0:
continue
if a > 0:
s += ', '
else:
s += ' '
s += ' **(**'
argfound = False
for a in mdata['argidx']:
arg = mdata[a]
if a < 0:
continue
if a > 0:
s += ', '
else:
s += ' '
s += make_type(arg.attrib['type'])
if 'name' in arg.attrib:
s += ' ' + arg.attrib['name']
else:
s += ' arg' + str(a)
s += make_type(arg.attrib['type'])
if 'name' in arg.attrib:
s += ' ' + arg.attrib['name']
else:
s += ' arg' + str(a)
if 'default' in arg.attrib:
s += '=' + arg.attrib['default']
if 'default' in arg.attrib:
s += '=' + arg.attrib['default']
argfound = True
argfound = True
if argfound:
s += ' '
s += ' **)**'
if argfound:
s += ' '
s += ' **)**'
if 'qualifiers' in m.attrib:
s += ' ' + m.attrib['qualifiers']
if 'qualifiers' in m.attrib:
s += ' ' + m.attrib['qualifiers']
f.write(s + '\n')
f.write(s + '\n')
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:
inh = node.attrib['inherits'].strip()
f.write('####**Inherits:** '+make_type(inh)+'\n')
if 'category' in node.attrib:
f.write('####**Category:** ' + node.attrib['category'].strip()
+ '\n')
if 'inherits' in node.attrib:
inh = node.attrib['inherits'].strip()
f.write('####**Inherits:** '+make_type(inh)+'\n')
if 'category' in node.attrib:
f.write('####**Category:** ' + node.attrib['category'].strip()
+ '\n')
briefd = node.find('brief_description')
if briefd != None:
f.write('\n### Brief Description \n')
f.write(dokuize_text(briefd.text.strip()) + '\n')
briefd = node.find('brief_description')
if briefd != None:
f.write('\n### Brief Description \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:
f.write('\n### Member Functions \n')
for m in list(methods):
make_method(f, node.attrib['name'], m, False)
if methods != None and len(list(methods)) > 0:
f.write('\n### Member Functions \n')
for m in list(methods):
make_method(f, node.attrib['name'], m, False)
events = node.find('signals')
if events != None and len(list(events)) > 0:
f.write('\n### Signals \n')
for m in list(events):
make_method(f, node.attrib['name'], m, True, True)
events = node.find('signals')
if events != None and len(list(events)) > 0:
f.write('\n### Signals \n')
for m in list(events):
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:
f.write('\n### Member Variables \n')
if members != None and len(list(members)) > 0:
f.write('\n### Member Variables \n')
for c in list(members):
s = ' * '
s += make_type(c.attrib['type']) + ' '
s += '**' + c.attrib['name'] + '**'
if c.text.strip() != '':
s += ' - ' + c.text.strip()
f.write(s + '\n')
for c in list(members):
s = ' * '
s += make_type(c.attrib['type']) + ' '
s += '**' + c.attrib['name'] + '**'
if c.text.strip() != '':
s += ' - ' + c.text.strip()
f.write(s + '\n')
constants = node.find('constants')
if constants != None and len(list(constants)) > 0:
f.write('\n### Numeric Constants \n')
for c in list(constants):
s = ' * '
s += '**' + c.attrib['name'] + '**'
if 'value' in c.attrib:
s += ' = **' + c.attrib['value'] + '**'
if c.text.strip() != '':
s += ' - ' + c.text.strip()
f.write(s + '\n')
constants = node.find('constants')
if constants != None and len(list(constants)) > 0:
f.write('\n### Numeric Constants \n')
for c in list(constants):
s = ' * '
s += '**' + c.attrib['name'] + '**'
if 'value' in c.attrib:
s += ' = **' + c.attrib['value'] + '**'
if c.text.strip() != '':
s += ' - ' + c.text.strip()
f.write(s + '\n')
descr = node.find('description')
if descr != None and descr.text.strip() != '':
f.write('\n### Description \n')
f.write(dokuize_text(descr.text.strip()) + '\n')
descr = node.find('description')
if descr != None and descr.text.strip() != '':
f.write('\n### Description \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:
f.write('\n### Member Function Description \n')
for m in list(methods):
if methods != None and len(list(methods)) > 0:
f.write('\n### Member Function Description \n')
for m in list(methods):
d = m.find('description')
if d == None or d.text.strip() == '':
continue
f.write('\n#### <a name="'+m.attrib['name']+'">' + m.attrib['name'] + '</a>\n')
make_method(f, node.attrib['name'], m, True)
f.write('\n')
f.write(dokuize_text(d.text.strip()))
f.write('\n')
d = m.find('description')
if d == None or d.text.strip() == '':
continue
f.write('\n#### <a name="'+m.attrib['name']+'">' + m.attrib['name'] + '</a>\n')
make_method(f, node.attrib['name'], m, True)
f.write('\n')
f.write(dokuize_text(d.text.strip()))
f.write('\n')
for file in input_list:
tree = ET.parse(file)
doc = tree.getroot()
tree = ET.parse(file)
doc = tree.getroot()
if 'version' not in doc.attrib:
print "Version missing from 'doc'"
sys.exit(255)
if 'version' not in doc.attrib:
print "Version missing from 'doc'"
sys.exit(255)
version = doc.attrib['version']
version = doc.attrib['version']
for c in list(doc):
if c.attrib['name'] in class_names:
continue
class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c
for c in list(doc):
if c.attrib['name'] in class_names:
continue
class_names.append(c.attrib['name'])
classes[c.attrib['name']] = c
class_names.sort()
make_class_list(class_names, 2)
for cn in class_names:
c = classes[cn]
make_doku_class(c)
c = classes[cn]
make_doku_class(c)

View File

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

18
drivers/SCsub vendored
View File

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

View File

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

View File

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

View File

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

View File

@ -7,7 +7,7 @@ Import('env')
# Thirdparty source files
thirdparty_dir = "#thirdparty/rtaudio/"
thirdparty_sources = [
"RtAudio.cpp",
"RtAudio.cpp",
]
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
thirdparty_dir = "#thirdparty/zlib/"
thirdparty_sources = [
"adler32.c",
"compress.c",
"crc32.c",
"deflate.c",
"infback.c",
"inffast.c",
"inflate.c",
"inftrees.c",
"trees.c",
"uncompr.c",
"zutil.c",
"adler32.c",
"compress.c",
"crc32.c",
"deflate.c",
"infback.c",
"inffast.c",
"inflate.c",
"inftrees.c",
"trees.c",
"uncompr.c",
"zutil.c",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

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

View File

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

View File

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

View File

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

View File

@ -8,21 +8,21 @@ Import('env_modules')
env_enet = env_modules.Clone()
if (env["enet"] != "system"): # builtin
thirdparty_dir = "#thirdparty/enet/"
thirdparty_sources = [
"callbacks.c",
"compress.c",
"host.c",
"list.c",
"packet.c",
"peer.c",
"protocol.c",
"unix.c",
"win32.c",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
thirdparty_dir = "#thirdparty/enet/"
thirdparty_sources = [
"callbacks.c",
"compress.c",
"host.c",
"list.c",
"packet.c",
"peer.c",
"protocol.c",
"unix.c",
"win32.c",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
env_enet.add_source_files(env.modules_sources, thirdparty_sources)
env_enet.Append(CPPPATH = [thirdparty_dir])
env_enet.add_source_files(env.modules_sources, thirdparty_sources)
env_enet.Append(CPPPATH = [thirdparty_dir])
env_enet.add_source_files(env.modules_sources, "*.cpp")

View File

@ -1,6 +1,6 @@
def can_build(platform):
return True
return True
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
thirdparty_dir = "#thirdparty/rg-etc1/"
thirdparty_sources = [
"rg_etc1.cpp",
"rg_etc1.cpp",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,11 +1,11 @@
def can_build(platform):
return True
return True
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
thirdparty_dir = "#thirdparty/jpeg-compressor/"
thirdparty_sources = [
"jpgd.cpp",
"jpgd.cpp",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
def can_build(platform):
return True
return True
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):
return True
return True
def configure(env):
pass
pass

View File

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

View File

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

View File

@ -1,6 +1,6 @@
def can_build(platform):
return True
return True
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
thirdparty_dir = "#thirdparty/pvrtccompressor/"
thirdparty_sources = [
"BitScale.cpp",
"MortonTable.cpp",
"PvrTcDecoder.cpp",
"PvrTcEncoder.cpp",
"PvrTcPacket.cpp",
"BitScale.cpp",
"MortonTable.cpp",
"PvrTcDecoder.cpp",
"PvrTcEncoder.cpp",
"PvrTcPacket.cpp",
]
thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,10 +8,10 @@ env_webm = env_modules.Clone()
# Thirdparty source files
thirdparty_libsimplewebm_dir = "#thirdparty/libsimplewebm/"
thirdparty_libsimplewebm_sources = [
"libwebm/mkvparser/mkvparser.cc",
"OpusVorbisDecoder.cpp",
"VPXDecoder.cpp",
"WebMDemuxer.cpp",
"libwebm/mkvparser/mkvparser.cc",
"OpusVorbisDecoder.cpp",
"VPXDecoder.cpp",
"WebMDemuxer.cpp",
]
thirdparty_libsimplewebm_sources = [thirdparty_libsimplewebm_dir + file for file in thirdparty_libsimplewebm_sources]
@ -20,15 +20,15 @@ env_webm.Append(CPPPATH = [thirdparty_libsimplewebm_dir, thirdparty_libsimpleweb
# also requires libogg, libvorbis and libopus
if (env["libogg"] != "system"): # builtin
env_webm.Append(CPPPATH = ["#thirdparty/libogg"])
env_webm.Append(CPPPATH = ["#thirdparty/libogg"])
if (env["libvorbis"] != "system"): # builtin
env_webm.Append(CPPPATH = ["#thirdparty/libvorbis"])
env_webm.Append(CPPPATH = ["#thirdparty/libvorbis"])
if (env["opus"] != "system"): # builtin
env_webm.Append(CPPPATH = ["#thirdparty"])
env_webm.Append(CPPPATH = ["#thirdparty"])
if (env["libvpx"] != "system"): # builtin
Export('env_webm')
SConscript("libvpx/SCsub")
Export('env_webm')
SConscript("libvpx/SCsub")
# Godot source files
env_webm.add_source_files(env.modules_sources, "*.cpp")

View File

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

View File

@ -3,231 +3,231 @@
libvpx_dir = "#thirdparty/libvpx/"
libvpx_sources = [
"vp8/vp8_dx_iface.c",
"vp8/vp8_dx_iface.c",
"vp8/common/generic/systemdependent.c",
"vp8/common/generic/systemdependent.c",
"vp8/common/alloccommon.c",
"vp8/common/blockd.c",
"vp8/common/copy_c.c",
"vp8/common/debugmodes.c",
"vp8/common/dequantize.c",
"vp8/common/entropy.c",
"vp8/common/entropymode.c",
"vp8/common/entropymv.c",
"vp8/common/extend.c",
"vp8/common/filter.c",
"vp8/common/findnearmv.c",
"vp8/common/idct_blk.c",
"vp8/common/idctllm.c",
"vp8/common/loopfilter_filters.c",
"vp8/common/mbpitch.c",
"vp8/common/modecont.c",
"vp8/common/quant_common.c",
"vp8/common/reconinter.c",
"vp8/common/reconintra.c",
"vp8/common/reconintra4x4.c",
"vp8/common/rtcd.c",
"vp8/common/setupintrarecon.c",
"vp8/common/swapyv12buffer.c",
"vp8/common/treecoder.c",
"vp8/common/vp8_loopfilter.c",
"vp8/common/alloccommon.c",
"vp8/common/blockd.c",
"vp8/common/copy_c.c",
"vp8/common/debugmodes.c",
"vp8/common/dequantize.c",
"vp8/common/entropy.c",
"vp8/common/entropymode.c",
"vp8/common/entropymv.c",
"vp8/common/extend.c",
"vp8/common/filter.c",
"vp8/common/findnearmv.c",
"vp8/common/idct_blk.c",
"vp8/common/idctllm.c",
"vp8/common/loopfilter_filters.c",
"vp8/common/mbpitch.c",
"vp8/common/modecont.c",
"vp8/common/quant_common.c",
"vp8/common/reconinter.c",
"vp8/common/reconintra.c",
"vp8/common/reconintra4x4.c",
"vp8/common/rtcd.c",
"vp8/common/setupintrarecon.c",
"vp8/common/swapyv12buffer.c",
"vp8/common/treecoder.c",
"vp8/common/vp8_loopfilter.c",
"vp8/decoder/dboolhuff.c",
"vp8/decoder/decodeframe.c",
"vp8/decoder/decodemv.c",
"vp8/decoder/detokenize.c",
"vp8/decoder/onyxd_if.c",
"vp8/decoder/threading.c",
"vp8/decoder/dboolhuff.c",
"vp8/decoder/decodeframe.c",
"vp8/decoder/decodemv.c",
"vp8/decoder/detokenize.c",
"vp8/decoder/onyxd_if.c",
"vp8/decoder/threading.c",
"vp9/vp9_dx_iface.c",
"vp9/vp9_dx_iface.c",
"vp9/common/vp9_alloccommon.c",
"vp9/common/vp9_blockd.c",
"vp9/common/vp9_common_data.c",
"vp9/common/vp9_debugmodes.c",
"vp9/common/vp9_entropy.c",
"vp9/common/vp9_entropymode.c",
"vp9/common/vp9_entropymv.c",
"vp9/common/vp9_filter.c",
"vp9/common/vp9_frame_buffers.c",
"vp9/common/vp9_idct.c",
"vp9/common/vp9_loopfilter.c",
"vp9/common/vp9_mvref_common.c",
"vp9/common/vp9_pred_common.c",
"vp9/common/vp9_quant_common.c",
"vp9/common/vp9_reconinter.c",
"vp9/common/vp9_reconintra.c",
"vp9/common/vp9_rtcd.c",
"vp9/common/vp9_scale.c",
"vp9/common/vp9_scan.c",
"vp9/common/vp9_seg_common.c",
"vp9/common/vp9_thread_common.c",
"vp9/common/vp9_tile_common.c",
"vp9/common/vp9_alloccommon.c",
"vp9/common/vp9_blockd.c",
"vp9/common/vp9_common_data.c",
"vp9/common/vp9_debugmodes.c",
"vp9/common/vp9_entropy.c",
"vp9/common/vp9_entropymode.c",
"vp9/common/vp9_entropymv.c",
"vp9/common/vp9_filter.c",
"vp9/common/vp9_frame_buffers.c",
"vp9/common/vp9_idct.c",
"vp9/common/vp9_loopfilter.c",
"vp9/common/vp9_mvref_common.c",
"vp9/common/vp9_pred_common.c",
"vp9/common/vp9_quant_common.c",
"vp9/common/vp9_reconinter.c",
"vp9/common/vp9_reconintra.c",
"vp9/common/vp9_rtcd.c",
"vp9/common/vp9_scale.c",
"vp9/common/vp9_scan.c",
"vp9/common/vp9_seg_common.c",
"vp9/common/vp9_thread_common.c",
"vp9/common/vp9_tile_common.c",
"vp9/decoder/vp9_decodeframe.c",
"vp9/decoder/vp9_decodemv.c",
"vp9/decoder/vp9_decoder.c",
"vp9/decoder/vp9_detokenize.c",
"vp9/decoder/vp9_dsubexp.c",
"vp9/decoder/vp9_dthread.c",
"vp9/decoder/vp9_decodeframe.c",
"vp9/decoder/vp9_decodemv.c",
"vp9/decoder/vp9_decoder.c",
"vp9/decoder/vp9_detokenize.c",
"vp9/decoder/vp9_dsubexp.c",
"vp9/decoder/vp9_dthread.c",
"vpx/src/vpx_codec.c",
"vpx/src/vpx_decoder.c",
"vpx/src/vpx_image.c",
"vpx/src/vpx_psnr.c",
"vpx/src/vpx_codec.c",
"vpx/src/vpx_decoder.c",
"vpx/src/vpx_image.c",
"vpx/src/vpx_psnr.c",
"vpx_dsp/bitreader.c",
"vpx_dsp/bitreader_buffer.c",
"vpx_dsp/intrapred.c",
"vpx_dsp/inv_txfm.c",
"vpx_dsp/loopfilter.c",
"vpx_dsp/prob.c",
"vpx_dsp/vpx_convolve.c",
"vpx_dsp/vpx_dsp_rtcd.c",
"vpx_dsp/bitreader.c",
"vpx_dsp/bitreader_buffer.c",
"vpx_dsp/intrapred.c",
"vpx_dsp/inv_txfm.c",
"vpx_dsp/loopfilter.c",
"vpx_dsp/prob.c",
"vpx_dsp/vpx_convolve.c",
"vpx_dsp/vpx_dsp_rtcd.c",
"vpx_mem/vpx_mem.c",
"vpx_mem/vpx_mem.c",
"vpx_scale/vpx_scale_rtcd.c",
"vpx_scale/vpx_scale_rtcd.c",
"vpx_scale/generic/yv12config.c",
"vpx_scale/generic/yv12extend.c",
"vpx_scale/generic/yv12config.c",
"vpx_scale/generic/yv12extend.c",
"vpx_util/vpx_thread.c"
"vpx_util/vpx_thread.c"
]
libvpx_sources_intrin_x86 = [
"vp8/common/x86/filter_x86.c",
"vp8/common/x86/loopfilter_x86.c",
"vp8/common/x86/vp8_asm_stubs.c",
"vp8/common/x86/filter_x86.c",
"vp8/common/x86/loopfilter_x86.c",
"vp8/common/x86/vp8_asm_stubs.c",
"vpx_dsp/x86/vpx_asm_stubs.c"
"vpx_dsp/x86/vpx_asm_stubs.c"
]
libvpx_sources_intrin_x86_mmx = [
"vp8/common/x86/idct_blk_mmx.c",
"vp8/common/x86/idct_blk_mmx.c",
]
libvpx_sources_intrin_x86_sse2 = [
"vp8/common/x86/idct_blk_sse2.c",
"vp8/common/x86/idct_blk_sse2.c",
"vp9/common/x86/vp9_idct_intrin_sse2.c",
"vp9/common/x86/vp9_idct_intrin_sse2.c",
"vpx_dsp/x86/inv_txfm_sse2.c",
"vpx_dsp/x86/loopfilter_sse2.c",
"vpx_dsp/x86/inv_txfm_sse2.c",
"vpx_dsp/x86/loopfilter_sse2.c",
]
libvpx_sources_intrin_x86_ssse3 = [
"vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c"
"vpx_dsp/x86/vpx_subpixel_8t_intrin_ssse3.c"
]
libvpx_sources_intrin_x86_avx2 = [
"vpx_dsp/x86/loopfilter_avx2.c",
"vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c"
"vpx_dsp/x86/loopfilter_avx2.c",
"vpx_dsp/x86/vpx_subpixel_8t_intrin_avx2.c"
]
libvpx_sources_x86asm = [
"vp8/common/x86/copy_sse2.asm",
"vp8/common/x86/copy_sse3.asm",
"vp8/common/x86/dequantize_mmx.asm",
"vp8/common/x86/idctllm_mmx.asm",
"vp8/common/x86/idctllm_sse2.asm",
"vp8/common/x86/iwalsh_mmx.asm",
"vp8/common/x86/iwalsh_sse2.asm",
"vp8/common/x86/loopfilter_sse2.asm",
"vp8/common/x86/recon_mmx.asm",
"vp8/common/x86/recon_sse2.asm",
"vp8/common/x86/subpixel_mmx.asm",
"vp8/common/x86/subpixel_sse2.asm",
"vp8/common/x86/subpixel_ssse3.asm",
"vp8/common/x86/vp8_loopfilter_mmx.asm",
"vp8/common/x86/copy_sse2.asm",
"vp8/common/x86/copy_sse3.asm",
"vp8/common/x86/dequantize_mmx.asm",
"vp8/common/x86/idctllm_mmx.asm",
"vp8/common/x86/idctllm_sse2.asm",
"vp8/common/x86/iwalsh_mmx.asm",
"vp8/common/x86/iwalsh_sse2.asm",
"vp8/common/x86/loopfilter_sse2.asm",
"vp8/common/x86/recon_mmx.asm",
"vp8/common/x86/recon_sse2.asm",
"vp8/common/x86/subpixel_mmx.asm",
"vp8/common/x86/subpixel_sse2.asm",
"vp8/common/x86/subpixel_ssse3.asm",
"vp8/common/x86/vp8_loopfilter_mmx.asm",
"vpx_dsp/x86/intrapred_sse2.asm",
"vpx_dsp/x86/intrapred_ssse3.asm",
"vpx_dsp/x86/inv_wht_sse2.asm",
"vpx_dsp/x86/vpx_convolve_copy_sse2.asm",
"vpx_dsp/x86/vpx_subpixel_8t_sse2.asm",
"vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
"vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
"vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm",
"vpx_dsp/x86/intrapred_sse2.asm",
"vpx_dsp/x86/intrapred_ssse3.asm",
"vpx_dsp/x86/inv_wht_sse2.asm",
"vpx_dsp/x86/vpx_convolve_copy_sse2.asm",
"vpx_dsp/x86/vpx_subpixel_8t_sse2.asm",
"vpx_dsp/x86/vpx_subpixel_8t_ssse3.asm",
"vpx_dsp/x86/vpx_subpixel_bilinear_sse2.asm",
"vpx_dsp/x86/vpx_subpixel_bilinear_ssse3.asm",
"vpx_ports/emms.asm"
"vpx_ports/emms.asm"
]
libvpx_sources_x86_64asm = [
"vp8/common/x86/loopfilter_block_sse2_x86_64.asm",
"vp8/common/x86/loopfilter_block_sse2_x86_64.asm",
"vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm"
"vpx_dsp/x86/inv_txfm_ssse3_x86_64.asm"
]
libvpx_sources_arm = [
"vpx_ports/arm_cpudetect.c",
"vpx_ports/arm_cpudetect.c",
"vp8/common/arm/loopfilter_arm.c",
"vp8/common/arm/loopfilter_arm.c",
]
libvpx_sources_arm_neon = [
"vp8/common/arm/neon/bilinearpredict_neon.c",
"vp8/common/arm/neon/copymem_neon.c",
"vp8/common/arm/neon/dc_only_idct_add_neon.c",
"vp8/common/arm/neon/dequant_idct_neon.c",
"vp8/common/arm/neon/dequantizeb_neon.c",
"vp8/common/arm/neon/idct_blk_neon.c",
"vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
"vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
"vp8/common/arm/neon/iwalsh_neon.c",
"vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
"vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
"vp8/common/arm/neon/mbloopfilter_neon.c",
"vp8/common/arm/neon/shortidct4x4llm_neon.c",
"vp8/common/arm/neon/sixtappredict_neon.c",
"vp8/common/arm/neon/vp8_loopfilter_neon.c",
"vp8/common/arm/neon/bilinearpredict_neon.c",
"vp8/common/arm/neon/copymem_neon.c",
"vp8/common/arm/neon/dc_only_idct_add_neon.c",
"vp8/common/arm/neon/dequant_idct_neon.c",
"vp8/common/arm/neon/dequantizeb_neon.c",
"vp8/common/arm/neon/idct_blk_neon.c",
"vp8/common/arm/neon/idct_dequant_0_2x_neon.c",
"vp8/common/arm/neon/idct_dequant_full_2x_neon.c",
"vp8/common/arm/neon/iwalsh_neon.c",
"vp8/common/arm/neon/loopfiltersimplehorizontaledge_neon.c",
"vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c",
"vp8/common/arm/neon/mbloopfilter_neon.c",
"vp8/common/arm/neon/shortidct4x4llm_neon.c",
"vp8/common/arm/neon/sixtappredict_neon.c",
"vp8/common/arm/neon/vp8_loopfilter_neon.c",
"vp9/common/arm/neon/vp9_iht4x4_add_neon.c",
"vp9/common/arm/neon/vp9_iht8x8_add_neon.c",
"vp9/common/arm/neon/vp9_iht4x4_add_neon.c",
"vp9/common/arm/neon/vp9_iht8x8_add_neon.c",
"vpx_dsp/arm/idct16x16_1_add_neon.c",
"vpx_dsp/arm/idct16x16_add_neon.c",
"vpx_dsp/arm/idct16x16_neon.c",
"vpx_dsp/arm/idct32x32_1_add_neon.c",
"vpx_dsp/arm/idct32x32_add_neon.c",
"vpx_dsp/arm/idct4x4_1_add_neon.c",
"vpx_dsp/arm/idct4x4_add_neon.c",
"vpx_dsp/arm/idct8x8_1_add_neon.c",
"vpx_dsp/arm/idct8x8_add_neon.c",
"vpx_dsp/arm/intrapred_neon.c",
"vpx_dsp/arm/loopfilter_16_neon.c",
"vpx_dsp/arm/loopfilter_4_neon.c",
"vpx_dsp/arm/loopfilter_8_neon.c",
"vpx_dsp/arm/loopfilter_neon.c",
"vpx_dsp/arm/vpx_convolve8_avg_neon.c",
"vpx_dsp/arm/vpx_convolve8_neon.c",
"vpx_dsp/arm/vpx_convolve_avg_neon.c",
"vpx_dsp/arm/vpx_convolve_copy_neon.c",
"vpx_dsp/arm/vpx_convolve_neon.c"
"vpx_dsp/arm/idct16x16_1_add_neon.c",
"vpx_dsp/arm/idct16x16_add_neon.c",
"vpx_dsp/arm/idct16x16_neon.c",
"vpx_dsp/arm/idct32x32_1_add_neon.c",
"vpx_dsp/arm/idct32x32_add_neon.c",
"vpx_dsp/arm/idct4x4_1_add_neon.c",
"vpx_dsp/arm/idct4x4_add_neon.c",
"vpx_dsp/arm/idct8x8_1_add_neon.c",
"vpx_dsp/arm/idct8x8_add_neon.c",
"vpx_dsp/arm/intrapred_neon.c",
"vpx_dsp/arm/loopfilter_16_neon.c",
"vpx_dsp/arm/loopfilter_4_neon.c",
"vpx_dsp/arm/loopfilter_8_neon.c",
"vpx_dsp/arm/loopfilter_neon.c",
"vpx_dsp/arm/vpx_convolve8_avg_neon.c",
"vpx_dsp/arm/vpx_convolve8_neon.c",
"vpx_dsp/arm/vpx_convolve_avg_neon.c",
"vpx_dsp/arm/vpx_convolve_copy_neon.c",
"vpx_dsp/arm/vpx_convolve_neon.c"
]
libvpx_sources_arm_neon_gas = [
"vpx_dsp/arm/gas/intrapred_neon_asm.s",
"vpx_dsp/arm/gas/loopfilter_mb_neon.s",
"vpx_dsp/arm/gas/save_reg_neon.s"
"vpx_dsp/arm/gas/intrapred_neon_asm.s",
"vpx_dsp/arm/gas/loopfilter_mb_neon.s",
"vpx_dsp/arm/gas/save_reg_neon.s"
]
libvpx_sources_arm_neon_armasm_ms = [
"vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm",
"vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm",
"vpx_dsp/arm/armasm_ms/save_reg_neon.asm"
"vpx_dsp/arm/armasm_ms/intrapred_neon_asm.asm",
"vpx_dsp/arm/armasm_ms/loopfilter_mb_neon.asm",
"vpx_dsp/arm/armasm_ms/save_reg_neon.asm"
]
libvpx_sources_arm_neon_gas_apple = [
"vpx_dsp/arm/gas_apple/intrapred_neon_asm.s",
"vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s",
"vpx_dsp/arm/gas_apple/save_reg_neon.s"
"vpx_dsp/arm/gas_apple/intrapred_neon_asm.s",
"vpx_dsp/arm/gas_apple/loopfilter_mb_neon.s",
"vpx_dsp/arm/gas_apple/save_reg_neon.s"
]
libvpx_sources = [libvpx_dir + file for file in libvpx_sources]
@ -258,133 +258,133 @@ osx_fat = (env["platform"] == 'osx' and cpu_bits == 'fat')
webm_cpu_x86 = False
webm_cpu_arm = False
if env["platform"] == 'winrt':
if 'arm' in env["PROGSUFFIX"]:
webm_cpu_arm = True
else:
webm_cpu_x86 = True
if 'arm' in env["PROGSUFFIX"]:
webm_cpu_arm = True
else:
webm_cpu_x86 = True
else:
is_android_x86 = (env["platform"] == 'android' and env["android_arch"] == 'x86')
if is_android_x86:
cpu_bits = '32'
if osx_fat:
webm_cpu_x86 = True
else:
webm_cpu_x86 = (cpu_bits == '32' or cpu_bits == '64') and (env["platform"] == 'windows' or env["platform"] == 'x11' or env["platform"] == 'osx' or env["platform"] == 'haiku' or is_android_x86)
webm_cpu_arm = env["platform"] == 'iphone' or env["platform"] == 'bb10' or (env["platform"] == 'android' and env["android_arch"] != 'x86')
is_android_x86 = (env["platform"] == 'android' and env["android_arch"] == 'x86')
if is_android_x86:
cpu_bits = '32'
if osx_fat:
webm_cpu_x86 = True
else:
webm_cpu_x86 = (cpu_bits == '32' or cpu_bits == '64') and (env["platform"] == 'windows' or env["platform"] == 'x11' or env["platform"] == 'osx' or env["platform"] == 'haiku' or is_android_x86)
webm_cpu_arm = env["platform"] == 'iphone' or env["platform"] == 'bb10' or (env["platform"] == 'android' and env["android_arch"] != 'x86')
if webm_cpu_x86:
import subprocess
import os
import subprocess
import os
yasm_paths = [
"yasm",
"../../../yasm",
]
yasm_paths = [
"yasm",
"../../../yasm",
]
yasm_found = False
yasm_found = False
devnull = open(os.devnull)
for yasm_path in yasm_paths:
try:
yasm_found = True
subprocess.Popen([yasm_path, "--version"], stdout=devnull, stderr=devnull).communicate()
except:
yasm_found = False
if yasm_found:
break
devnull = open(os.devnull)
for yasm_path in yasm_paths:
try:
yasm_found = True
subprocess.Popen([yasm_path, "--version"], stdout=devnull, stderr=devnull).communicate()
except:
yasm_found = False
if yasm_found:
break
if not yasm_found:
webm_cpu_x86 = False
print "YASM is necessary for WebM SIMD optimizations."
if not yasm_found:
webm_cpu_x86 = False
print "YASM is necessary for WebM SIMD optimizations."
webm_simd_optimizations = False
if webm_cpu_x86:
if osx_fat:
#'osx' platform only: run python script which will compile using 'yasm' command and then merge 32-bit and 64-bit using 'lipo' command
env_libvpx["AS"] = 'python modules/webm/libvpx/yasm_osx_fat.py'
env_libvpx["ASFLAGS"] = '-I' + libvpx_dir[1:]
env_libvpx["ASCOM"] = '$AS $ASFLAGS $TARGET $SOURCES'
else:
if env["platform"] == 'windows' or env["platform"] == 'winrt':
env_libvpx["ASFORMAT"] = 'win'
elif env["platform"] == 'osx':
env_libvpx["ASFORMAT"] = 'macho'
else:
env_libvpx["ASFORMAT"] = 'elf'
env_libvpx["ASFORMAT"] += cpu_bits
if osx_fat:
#'osx' platform only: run python script which will compile using 'yasm' command and then merge 32-bit and 64-bit using 'lipo' command
env_libvpx["AS"] = 'python modules/webm/libvpx/yasm_osx_fat.py'
env_libvpx["ASFLAGS"] = '-I' + libvpx_dir[1:]
env_libvpx["ASCOM"] = '$AS $ASFLAGS $TARGET $SOURCES'
else:
if env["platform"] == 'windows' or env["platform"] == 'winrt':
env_libvpx["ASFORMAT"] = 'win'
elif env["platform"] == 'osx':
env_libvpx["ASFORMAT"] = 'macho'
else:
env_libvpx["ASFORMAT"] = 'elf'
env_libvpx["ASFORMAT"] += cpu_bits
env_libvpx["AS"] = 'yasm'
env_libvpx["ASFLAGS"] = '-I' + libvpx_dir[1:] + ' -f $ASFORMAT -D $ASCPU'
env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES'
env_libvpx["AS"] = 'yasm'
env_libvpx["ASFLAGS"] = '-I' + libvpx_dir[1:] + ' -f $ASFORMAT -D $ASCPU'
env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES'
if cpu_bits == '32':
env_libvpx["ASCPU"] = 'X86_32'
elif cpu_bits == '64':
env_libvpx["ASCPU"] = 'X86_64'
if cpu_bits == '32':
env_libvpx["ASCPU"] = 'X86_32'
elif cpu_bits == '64':
env_libvpx["ASCPU"] = 'X86_64'
env_libvpx.Append(CCFLAGS=['-DWEBM_X86ASM'])
env_libvpx.Append(CCFLAGS=['-DWEBM_X86ASM'])
webm_simd_optimizations = True
webm_simd_optimizations = True
if webm_cpu_arm:
if env["platform"] == 'iphone':
env_libvpx["ASFLAGS"] = '-arch armv7'
elif env["platform"] == 'android':
env_libvpx["ASFLAGS"] = '-mfpu=neon'
elif env["platform"] == 'winrt':
env_libvpx["AS"] = 'armasm'
env_libvpx["ASFLAGS"] = ''
env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES'
if env["platform"] == 'iphone':
env_libvpx["ASFLAGS"] = '-arch armv7'
elif env["platform"] == 'android':
env_libvpx["ASFLAGS"] = '-mfpu=neon'
elif env["platform"] == 'winrt':
env_libvpx["AS"] = 'armasm'
env_libvpx["ASFLAGS"] = ''
env_libvpx["ASCOM"] = '$AS $ASFLAGS -o $TARGET $SOURCES'
env_libvpx.Append(CCFLAGS=['-DWEBM_ARMASM'])
env_libvpx.Append(CCFLAGS=['-DWEBM_ARMASM'])
webm_simd_optimizations = True
webm_simd_optimizations = True
if webm_simd_optimizations == False:
print "WebM SIMD optimizations are disabled. Check if your CPU architecture, CPU bits or platform are supported!"
print "WebM SIMD optimizations are disabled. Check if your CPU architecture, CPU bits or platform are supported!"
env_libvpx.add_source_files(env.modules_sources, libvpx_sources)
if webm_cpu_x86:
is_clang_or_gcc = ('gcc' in env["CC"]) or ('clang' in env["CC"])
is_clang_or_gcc = ('gcc' in env["CC"]) or ('clang' in env["CC"])
env_libvpx_mmx = env_libvpx.Clone()
if cpu_bits == '32' and is_clang_or_gcc:
env_libvpx_mmx.Append(CCFLAGS=['-mmmx'])
env_libvpx_mmx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_mmx)
env_libvpx_mmx = env_libvpx.Clone()
if cpu_bits == '32' and is_clang_or_gcc:
env_libvpx_mmx.Append(CCFLAGS=['-mmmx'])
env_libvpx_mmx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_mmx)
env_libvpx_sse2 = env_libvpx.Clone()
if cpu_bits == '32' and is_clang_or_gcc:
env_libvpx_sse2.Append(CCFLAGS=['-msse2'])
env_libvpx_sse2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_sse2)
env_libvpx_sse2 = env_libvpx.Clone()
if cpu_bits == '32' and is_clang_or_gcc:
env_libvpx_sse2.Append(CCFLAGS=['-msse2'])
env_libvpx_sse2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_sse2)
env_libvpx_ssse3 = env_libvpx.Clone()
if is_clang_or_gcc:
env_libvpx_ssse3.Append(CCFLAGS=['-mssse3'])
env_libvpx_ssse3.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_ssse3)
env_libvpx_ssse3 = env_libvpx.Clone()
if is_clang_or_gcc:
env_libvpx_ssse3.Append(CCFLAGS=['-mssse3'])
env_libvpx_ssse3.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_ssse3)
env_libvpx_avx2 = env_libvpx.Clone()
if is_clang_or_gcc:
env_libvpx_avx2.Append(CCFLAGS=['-mavx2'])
env_libvpx_avx2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_avx2)
env_libvpx_avx2 = env_libvpx.Clone()
if is_clang_or_gcc:
env_libvpx_avx2.Append(CCFLAGS=['-mavx2'])
env_libvpx_avx2.add_source_files(env.modules_sources, libvpx_sources_intrin_x86_avx2)
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86)
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_intrin_x86)
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86asm)
if cpu_bits == '64' or osx_fat:
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86_64asm)
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86asm)
if cpu_bits == '64' or osx_fat:
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_x86_64asm)
elif webm_cpu_arm:
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm)
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm)
env_libvpx_neon = env_libvpx.Clone()
if env["platform"] == 'android' and env["android_arch"] == 'armv6':
env_libvpx_neon.Append(CCFLAGS=['-mfpu=neon'])
env_libvpx_neon.add_source_files(env.modules_sources, libvpx_sources_arm_neon)
env_libvpx_neon = env_libvpx.Clone()
if env["platform"] == 'android' and env["android_arch"] == 'armv6':
env_libvpx_neon.Append(CCFLAGS=['-mfpu=neon'])
env_libvpx_neon.add_source_files(env.modules_sources, libvpx_sources_arm_neon)
if env["platform"] == 'winrt':
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_armasm_ms)
elif env["platform"] == 'iphone':
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas_apple)
else:
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas)
if env["platform"] == 'winrt':
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_armasm_ms)
elif env["platform"] == 'iphone':
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas_apple)
else:
env_libvpx.add_source_files(env.modules_sources, libvpx_sources_arm_neon_gas)

View File

@ -14,25 +14,25 @@ lipo_command = ''
exit_code = 1
for arch in ['32', '64']:
if arch == '32' and input_file.endswith('x86_64.asm'):
can_remove[arch] = False
else:
command = 'yasm ' + includes + ' -f macho' + arch + ' -D X86_' + arch + ' -o ' + output_file + '.' + arch + ' ' + input_file
print(command)
if os.system(command) == 0:
lipo_command += output_file + '.' + arch + ' '
can_remove[arch] = True
else:
can_remove[arch] = False
if arch == '32' and input_file.endswith('x86_64.asm'):
can_remove[arch] = False
else:
command = 'yasm ' + includes + ' -f macho' + arch + ' -D X86_' + arch + ' -o ' + output_file + '.' + arch + ' ' + input_file
print(command)
if os.system(command) == 0:
lipo_command += output_file + '.' + arch + ' '
can_remove[arch] = True
else:
can_remove[arch] = False
if lipo_command != '':
lipo_command = 'lipo -create ' + lipo_command + '-output ' + output_file
print(lipo_command)
if os.system(lipo_command) == 0:
exit_code = 0
lipo_command = 'lipo -create ' + lipo_command + '-output ' + output_file
print(lipo_command)
if os.system(lipo_command) == 0:
exit_code = 0
for arch in ['32', '64']:
if can_remove[arch]:
os.remove(output_file + '.' + arch)
if can_remove[arch]:
os.remove(output_file + '.' + arch)
sys.exit(exit_code)

View File

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

View File

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

View File

@ -6,20 +6,20 @@ Import('env')
android_files = [
'os_android.cpp',
'godot_android.cpp',
'file_access_android.cpp',
'dir_access_android.cpp',
'audio_driver_opensl.cpp',
'file_access_jandroid.cpp',
'dir_access_jandroid.cpp',
'thread_jandroid.cpp',
'audio_driver_jandroid.cpp',
'ifaddrs_android.cpp',
'android_native_app_glue.c',
'java_glue.cpp',
'cpu-features.c',
'java_class_wrapper.cpp'
'os_android.cpp',
'godot_android.cpp',
'file_access_android.cpp',
'dir_access_android.cpp',
'audio_driver_opensl.cpp',
'file_access_jandroid.cpp',
'dir_access_jandroid.cpp',
'thread_jandroid.cpp',
'audio_driver_jandroid.cpp',
'ifaddrs_android.cpp',
'android_native_app_glue.c',
'java_glue.cpp',
'cpu-features.c',
'java_class_wrapper.cpp'
]
#env.Depends('#core/math/vector3.h', 'vector3_psp.h')
@ -28,11 +28,11 @@ android_files = [
env_android = env.Clone()
if env['target'] == "profile":
env_android.Append(CPPFLAGS=['-DPROFILER_ENABLED'])
env_android.Append(CPPFLAGS=['-DPROFILER_ENABLED'])
android_objects=[]
for x in android_files:
android_objects.append( env_android.SharedObject( x ) )
android_objects.append( env_android.SharedObject( x ) )
prog = None
@ -48,43 +48,43 @@ gradle_text = gradle_basein.read()
gradle_maven_repos_text=""
if len(env.android_maven_repos) > 0:
gradle_maven_repos_text+="maven {\n"
for x in env.android_maven_repos:
gradle_maven_repos_text+="\t\t"+x+"\n"
gradle_maven_repos_text+="\t}\n"
gradle_maven_repos_text+="maven {\n"
for x in env.android_maven_repos:
gradle_maven_repos_text+="\t\t"+x+"\n"
gradle_maven_repos_text+="\t}\n"
gradle_maven_dependencies_text=""
for x in env.android_dependencies:
gradle_maven_dependencies_text+=x+"\n"
gradle_maven_dependencies_text+=x+"\n"
gradle_java_dirs_text=""
for x in env.android_java_dirs:
gradle_java_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_java_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_res_dirs_text=""
for x in env.android_res_dirs:
gradle_res_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_res_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_aidl_dirs_text=""
for x in env.android_aidl_dirs:
gradle_aidl_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_aidl_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_jni_dirs_text=""
for x in env.android_jni_dirs:
gradle_jni_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_jni_dirs_text+=",'"+x.replace("\\","/")+"'"
gradle_asset_dirs_text=""
gradle_default_config_text=""
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_DEPENDENCIES$$",gradle_maven_dependencies_text)
@ -114,19 +114,19 @@ env_android.SharedLibrary("#bin/libgodot",[android_objects],SHLIBSUFFIX=env["SHL
lib_arch_dir = ''
if env['android_arch'] == 'armv6':
lib_arch_dir = 'armeabi'
lib_arch_dir = 'armeabi'
elif env['android_arch'] == 'armv7':
lib_arch_dir = 'armeabi-v7a'
lib_arch_dir = 'armeabi-v7a'
elif env['android_arch'] == 'x86':
lib_arch_dir = 'x86'
lib_arch_dir = 'x86'
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 env['target'] == 'release':
lib_type_dir = 'release'
else: # release_debug, debug
lib_type_dir = 'debug'
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"))
if env['target'] == 'release':
lib_type_dir = 'release'
else: # release_debug, debug
lib_type_dir = 'debug'
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"))

View File

@ -4,247 +4,247 @@ import string
import platform
def is_active():
return True
return True
def get_name():
return "Android"
return "Android"
def can_build():
import os
if (not os.environ.has_key("ANDROID_NDK_ROOT")):
return False
import os
if (not os.environ.has_key("ANDROID_NDK_ROOT")):
return False
return True
return True
def get_opts():
return [
('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_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"),
('android_arch', 'select compiler architecture: (armv7/armv6/x86)',"armv7"),
('android_neon','enable neon (armv7 only)',"yes"),
('android_stl','enable STL support in android port (for modules)',"no")
]
return [
('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_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"),
('android_arch', 'select compiler architecture: (armv7/armv6/x86)',"armv7"),
('android_neon','enable neon (armv7 only)',"yes"),
('android_stl','enable STL support in android port (for modules)',"no")
]
def get_flags():
return [
('tools', 'no'),
('openssl', 'builtin'), #use builtin openssl
]
return [
('tools', 'no'),
('openssl', 'builtin'), #use builtin openssl
]
def create(env):
tools = env['TOOLS']
if "mingw" in tools:
tools.remove('mingw')
if "applelink" in tools:
tools.remove("applelink")
env.Tool('gcc')
return env.Clone(tools=tools);
tools = env['TOOLS']
if "mingw" in tools:
tools.remove('mingw')
if "applelink" in tools:
tools.remove("applelink")
env.Tool('gcc')
return env.Clone(tools=tools);
def configure(env):
# Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32
import os
if (os.name=="nt"):
# Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32
import os
if (os.name=="nt"):
import subprocess
import subprocess
def mySubProcess(cmdline,env):
#print "SPAWNED : " + cmdline
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
data, err = proc.communicate()
rv = proc.wait()
if rv:
print "====="
print err
print "====="
return rv
def mySubProcess(cmdline,env):
#print "SPAWNED : " + cmdline
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
stderr=subprocess.PIPE, startupinfo=startupinfo, shell = False, env = env)
data, err = proc.communicate()
rv = proc.wait()
if rv:
print "====="
print err
print "====="
return rv
def mySpawn(sh, escape, cmd, args, env):
def mySpawn(sh, escape, cmd, args, env):
newargs = ' '.join(args[1:])
cmdline = cmd + " " + newargs
newargs = ' '.join(args[1:])
cmdline = cmd + " " + newargs
rv=0
if len(cmdline) > 32000 and cmd.endswith("ar") :
cmdline = cmd + " " + args[1] + " " + args[2] + " "
for i in range(3,len(args)) :
rv = mySubProcess( cmdline + args[i], env )
if rv :
break
else:
rv = mySubProcess( cmdline, env )
rv=0
if len(cmdline) > 32000 and cmd.endswith("ar") :
cmdline = cmd + " " + args[1] + " " + args[2] + " "
for i in range(3,len(args)) :
rv = mySubProcess( cmdline + args[i], env )
if rv :
break
else:
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']:
env['android_arch']='armv7'
if env['android_arch'] not in ['armv7','armv6','x86']:
env['android_arch']='armv7'
if env['android_arch']=='x86':
env['NDK_TARGET']=env['NDK_TARGET_X86']
env["x86_libtheora_opt_gcc"]=True
if env['android_arch']=='x86':
env['NDK_TARGET']=env['NDK_TARGET_X86']
env["x86_libtheora_opt_gcc"]=True
if env['PLATFORM'] == 'win32':
env.Tool('gcc')
env['SHLIBSUFFIX'] = '.so'
if env['PLATFORM'] == 'win32':
env.Tool('gcc')
env['SHLIBSUFFIX'] = '.so'
neon_text=""
if env["android_arch"]=="armv7" and env['android_neon']=='yes':
neon_text=" (with neon)"
print("Godot Android!!!!! ("+env['android_arch']+")"+neon_text)
neon_text=""
if env["android_arch"]=="armv7" and env['android_neon']=='yes':
neon_text=" (with neon)"
print("Godot Android!!!!! ("+env['android_arch']+")"+neon_text)
env.Append(CPPPATH=['#platform/android'])
env.Append(CPPPATH=['#platform/android'])
if env['android_arch']=='x86':
env.extra_suffix=".x86"+env.extra_suffix
elif env['android_arch']=='armv6':
env.extra_suffix=".armv6"+env.extra_suffix
elif env["android_arch"]=="armv7":
if env['android_neon']=='yes':
env.extra_suffix=".armv7.neon"+env.extra_suffix
else:
env.extra_suffix=".armv7"+env.extra_suffix
if env['android_arch']=='x86':
env.extra_suffix=".x86"+env.extra_suffix
elif env['android_arch']=='armv6':
env.extra_suffix=".armv6"+env.extra_suffix
elif env["android_arch"]=="armv7":
if env['android_neon']=='yes':
env.extra_suffix=".armv7.neon"+env.extra_suffix
else:
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 (platform.machine().endswith('64')):
gcc_path=gcc_path+"/linux-x86_64/bin"
else:
gcc_path=gcc_path+"/linux-x86/bin"
elif (sys.platform.startswith("darwin")):
gcc_path=gcc_path+"/darwin-x86_64/bin"
env['SHLINKFLAGS'][1] = '-shared'
env['SHLIBSUFFIX'] = '.so'
elif (sys.platform.startswith('win')):
if (platform.machine().endswith('64')):
gcc_path=gcc_path+"/windows-x86_64/bin"
else:
gcc_path=gcc_path+"/windows-x86/bin"
if (sys.platform.startswith("linux")):
if (platform.machine().endswith('64')):
gcc_path=gcc_path+"/linux-x86_64/bin"
else:
gcc_path=gcc_path+"/linux-x86/bin"
elif (sys.platform.startswith("darwin")):
gcc_path=gcc_path+"/darwin-x86_64/bin"
env['SHLINKFLAGS'][1] = '-shared'
env['SHLIBSUFFIX'] = '.so'
elif (sys.platform.startswith('win')):
if (platform.machine().endswith('64')):
gcc_path=gcc_path+"/windows-x86_64/bin"
else:
gcc_path=gcc_path+"/windows-x86/bin"
env['ENV']['PATH'] = gcc_path+":"+env['ENV']['PATH']
if env['android_arch']=='x86':
env['CC'] = gcc_path+'/i686-linux-android-gcc'
env['CXX'] = gcc_path+'/i686-linux-android-g++'
env['AR'] = gcc_path+"/i686-linux-android-ar"
env['RANLIB'] = gcc_path+"/i686-linux-android-ranlib"
env['AS'] = gcc_path+"/i686-linux-android-as"
else:
env['CC'] = gcc_path+'/arm-linux-androideabi-gcc'
env['CXX'] = gcc_path+'/arm-linux-androideabi-g++'
env['AR'] = gcc_path+"/arm-linux-androideabi-ar"
env['RANLIB'] = gcc_path+"/arm-linux-androideabi-ranlib"
env['AS'] = gcc_path+"/arm-linux-androideabi-as"
env['ENV']['PATH'] = gcc_path+":"+env['ENV']['PATH']
if env['android_arch']=='x86':
env['CC'] = gcc_path+'/i686-linux-android-gcc'
env['CXX'] = gcc_path+'/i686-linux-android-g++'
env['AR'] = gcc_path+"/i686-linux-android-ar"
env['RANLIB'] = gcc_path+"/i686-linux-android-ranlib"
env['AS'] = gcc_path+"/i686-linux-android-as"
else:
env['CC'] = gcc_path+'/arm-linux-androideabi-gcc'
env['CXX'] = gcc_path+'/arm-linux-androideabi-g++'
env['AR'] = gcc_path+"/arm-linux-androideabi-ar"
env['RANLIB'] = gcc_path+"/arm-linux-androideabi-ranlib"
env['AS'] = gcc_path+"/arm-linux-androideabi-as"
if env['android_arch']=='x86':
env['ARCH'] = 'arch-x86'
else:
env['ARCH'] = 'arch-arm'
if env['android_arch']=='x86':
env['ARCH'] = 'arch-x86'
else:
env['ARCH'] = 'arch-arm'
import string
#include path
gcc_include=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH'] +"/usr/include"
ld_sysroot=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']
#glue_include=env["ANDROID_NDK_ROOT"]+"/sources/android/native_app_glue"
ld_path=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']+"/usr/lib"
env.Append(CPPPATH=[gcc_include])
import string
#include path
gcc_include=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH'] +"/usr/include"
ld_sysroot=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']
#glue_include=env["ANDROID_NDK_ROOT"]+"/sources/android/native_app_glue"
ld_path=env["ANDROID_NDK_ROOT"]+"/platforms/"+ndk_platform+"/"+env['ARCH']+"/usr/lib"
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['neon_enabled']=False
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'))
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'))
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'))
if env['android_neon']=='yes':
env['neon_enabled']=True
env.Append(CCFLAGS=['-mfpu=neon','-D__ARM_NEON__'])
else:
env.Append(CCFLAGS=['-mfpu=vfpv3-d16'])
env['neon_enabled']=False
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'))
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'))
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'))
if env['android_neon']=='yes':
env['neon_enabled']=True
env.Append(CCFLAGS=['-mfpu=neon','-D__ARM_NEON__'])
else:
env.Append(CCFLAGS=['-mfpu=vfpv3-d16'])
env.Append(LDPATH=[ld_path])
env.Append(LIBS=['OpenSLES'])
env.Append(LDPATH=[ld_path])
env.Append(LIBS=['OpenSLES'])
# env.Append(LIBS=['c','m','stdc++','log','EGL','GLESv1_CM','GLESv2','OpenSLES','supc++','android'])
env.Append(LIBS=['EGL','OpenSLES','android'])
env.Append(LIBS=['c','m','stdc++','log','GLESv1_CM','GLESv2', 'z'])
env.Append(LIBS=['EGL','OpenSLES','android'])
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.Append(LINKFLAGS=["-Wl,-soname,libgodot_android.so"])
env["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack ")
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(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC'])
env.Append(CCFLAGS=['-D_DEBUG', '-g1', '-Wall', '-O0', '-DDEBUG_ENABLED'])
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'])
# TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
if (env["android_arch"]=="armv6" or env["android_arch"]=="armv7"):
env.Append(CFLAGS=["-DOPUS_ARM_OPT"])
env.opus_fixed_point="yes"
# TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
if (env["android_arch"]=="armv6" or env["android_arch"]=="armv7"):
env.Append(CFLAGS=["-DOPUS_ARM_OPT"])
env.opus_fixed_point="yes"
if (env['android_stl']=='yes'):
#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"])
if env['android_arch']=='x86':
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"])
elif env['android_arch']=='armv6':
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"])
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(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"])
if (env['android_stl']=='yes'):
#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"])
if env['android_arch']=='x86':
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"])
elif env['android_arch']=='armv6':
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"])
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(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"])
env.Append(LIBS=["gnustl_static","supc++"])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"])
env.Append(LIBS=["gnustl_static","supc++"])
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/gnu-libstdc++/libs/armeabi/include"])
#env.Append(LINKFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a"])
else:
#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(LINKFLAGS=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a"])
else:
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/include"])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"])
if env['android_arch']=='x86':
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86"])
elif env["android_arch"]=="armv6":
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi"])
elif env["android_arch"]=="armv7":
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"])
env.Append(LIBS=['gnustl_static'])
env.Append(CCFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST'])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/include"])
env.Append(CPPPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cpufeatures"])
if env['android_arch']=='x86':
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86"])
elif env["android_arch"]=="armv6":
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi"])
elif env["android_arch"]=="armv7":
env.Append(LIBPATH=[env["ANDROID_NDK_ROOT"]+"/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a"])
env.Append(LIBS=['gnustl_static'])
env.Append(CCFLAGS=["-fno-exceptions",'-DNO_SAFE_CAST'])
import methods
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 = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
import methods
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 = { '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 = [
'bbutil.c',
'os_bb10.cpp',
'audio_driver_bb10.cpp',
'godot_bb10.cpp',
'payment_service.cpp',
'bbutil.c',
'os_bb10.cpp',
'audio_driver_bb10.cpp',
'godot_bb10.cpp',
'payment_service.cpp',
]
env_bps = env.Clone()
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":
env_bps.Append(CPPFLAGS=['-DBB10_LGLES_OVERRIDE'])
env_bps.Append(CPPFLAGS=['-DBB10_LGLES_OVERRIDE'])
prog = None

View File

@ -5,85 +5,85 @@ import methods
def is_active():
return True
return True
def get_name():
return "BlackBerry 10"
return "BlackBerry 10"
def can_build():
import os
if (not os.environ.has_key("QNX_TARGET")):
return False
return True
import os
if (not os.environ.has_key("QNX_TARGET")):
return False
return True
def get_opts():
return [
('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_CONFIGURATION', 'path to qnx configuration', os.environ.get("QNX_CONFIGURATION", 0)),
('qnx_target', 'Qnx target (armle or x86', 'armle'),
('bb10_payment_service', 'Enable Payment Service for BlackBerry10', 'yes'),
('bb10_lgles_override', 'Force legacy GLES (1.1) on iOS', 'no'),
('bb10_exceptions', 'Use exceptions when compiling on bb10', 'no'),
]
return [
('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_CONFIGURATION', 'path to qnx configuration', os.environ.get("QNX_CONFIGURATION", 0)),
('qnx_target', 'Qnx target (armle or x86', 'armle'),
('bb10_payment_service', 'Enable Payment Service for BlackBerry10', 'yes'),
('bb10_lgles_override', 'Force legacy GLES (1.1) on iOS', 'no'),
('bb10_exceptions', 'Use exceptions when compiling on bb10', 'no'),
]
def get_flags():
return [
('tools', 'no'),
('builtin_zlib', 'yes'),
('module_theora_enabled', 'no'),
]
return [
('tools', 'no'),
('builtin_zlib', 'yes'),
('module_theora_enabled', 'no'),
]
def configure(env):
if env['PLATFORM'] == 'win32':
env.Tool('mingw')
env['SPAWN'] = methods.win32_spawn
if env['PLATFORM'] == 'win32':
env.Tool('mingw')
env['SPAWN'] = methods.win32_spawn
env['qnx_target_ver'] = env['qnx_target']
if env['qnx_target'] == "armle":
env['qnx_prefix'] = 'ntoarmv7'
env['qnx_target_ver'] = 'armle-v7'
else:
env['qnx_prefix'] = 'ntox86'
env['qnx_target_ver'] = env['qnx_target']
if env['qnx_target'] == "armle":
env['qnx_prefix'] = 'ntoarmv7'
env['qnx_target_ver'] = 'armle-v7'
else:
env['qnx_prefix'] = 'ntox86'
env['OBJSUFFIX'] = ".qnx.${qnx_target}.o"
env['LIBSUFFIX'] = ".qnx.${qnx_target}.a"
env['PROGSUFFIX'] = ".qnx.${qnx_target}"
print("PROGSUFFIX: "+env['PROGSUFFIX']+" target: "+env['qnx_target'])
env['OBJSUFFIX'] = ".qnx.${qnx_target}.o"
env['LIBSUFFIX'] = ".qnx.${qnx_target}.a"
env['PROGSUFFIX'] = ".qnx.${qnx_target}"
print("PROGSUFFIX: "+env['PROGSUFFIX']+" target: "+env['qnx_target'])
env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/bin')
env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/usr/bin')
env['ENV']['QNX_HOST'] = env['QNX_HOST']
env['ENV']['QNX_TARGET'] = env['QNX_TARGET']
env['ENV']['QNX_CONFIGURATION'] = env['QNX_CONFIGURATION']
env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/bin')
env.PrependENVPath('PATH', env['QNX_CONFIGURATION'] + '/usr/bin')
env['ENV']['QNX_HOST'] = env['QNX_HOST']
env['ENV']['QNX_TARGET'] = env['QNX_TARGET']
env['ENV']['QNX_CONFIGURATION'] = env['QNX_CONFIGURATION']
env['CC'] = '$qnx_prefix-gcc'
env['CXX'] = '$qnx_prefix-g++'
env['AR'] = '$qnx_prefix-ar'
env['RANLIB'] = '$qnx_prefix-ranlib'
env['CC'] = '$qnx_prefix-gcc'
env['CXX'] = '$qnx_prefix-g++'
env['AR'] = '$qnx_prefix-ar'
env['RANLIB'] = '$qnx_prefix-ranlib'
env.Append(CPPPATH = ['#platform/bb10'])
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'))
if env['bb10_exceptions']=="yes":
env.Append(CCFLAGS = ['-fexceptions'])
else:
env.Append(CCFLAGS = ['-fno-exceptions'])
env.Append(CPPPATH = ['#platform/bb10'])
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'))
if env['bb10_exceptions']=="yes":
env.Append(CCFLAGS = ['-fexceptions'])
else:
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(LINKFLAGS=['-g'])
env.Append(CCFLAGS=['-g', '-O0','-DDEBUG_ENABLED', '-D_DEBUG'])
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')
common_haiku = [
'os_haiku.cpp',
'context_gl_haiku.cpp',
'haiku_application.cpp',
'haiku_direct_window.cpp',
'haiku_gl_view.cpp',
'key_mapping_haiku.cpp',
'audio_driver_media_kit.cpp'
'os_haiku.cpp',
'context_gl_haiku.cpp',
'haiku_application.cpp',
'haiku_direct_window.cpp',
'haiku_gl_view.cpp',
'key_mapping_haiku.cpp',
'audio_driver_media_kit.cpp'
]
target = env.Program(
'#bin/godot',
['godot_haiku.cpp'] + common_haiku
'#bin/godot',
['godot_haiku.cpp'] + common_haiku
)
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):
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.Depends(target, command)

View File

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

View File

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

View File

@ -3,187 +3,187 @@ import sys
def is_active():
return True
return True
def get_name():
return "iOS"
return "iOS"
def can_build():
import sys
import os
if sys.platform == 'darwin' or os.environ.has_key("OSXCROSS_IOS"):
return True
import sys
import os
if sys.platform == 'darwin' or os.environ.has_key("OSXCROSS_IOS"):
return True
return False
return False
def get_opts():
return [
('IPHONEPLATFORM', 'name of the iphone platform', 'iPhoneOS'),
('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/'),
('game_center', 'Support for game center', 'yes'),
('store_kit', 'Support for in-app store', 'yes'),
('icloud', 'Support for iCloud', 'yes'),
('ios_gles22_override', 'Force GLES2.0 on iOS', 'yes'),
('ios_appirater', 'Enable Appirater', 'no'),
('ios_exceptions', 'Use exceptions when compiling on playbook', 'yes'),
('ios_triple', 'Triple for ios toolchain', ''),
('ios_sim', 'Build simulator binary', 'no'),
]
return [
('IPHONEPLATFORM', 'name of the iphone platform', 'iPhoneOS'),
('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/'),
('game_center', 'Support for game center', 'yes'),
('store_kit', 'Support for in-app store', 'yes'),
('icloud', 'Support for iCloud', 'yes'),
('ios_gles22_override', 'Force GLES2.0 on iOS', 'yes'),
('ios_appirater', 'Enable Appirater', 'no'),
('ios_exceptions', 'Use exceptions when compiling on playbook', 'yes'),
('ios_triple', 'Triple for ios toolchain', ''),
('ios_sim', 'Build simulator binary', 'no'),
]
def get_flags():
return [
('tools', 'no'),
('webp', 'yes'),
('builtin_zlib', 'yes'),
('openssl','builtin'), #use builtin openssl
]
return [
('tools', 'no'),
('webp', 'yes'),
('builtin_zlib', 'yes'),
('openssl','builtin'), #use builtin openssl
]
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['CXX'] = '$IPHONEPATH/usr/bin/${ios_triple}clang++'
env['AR'] = '$IPHONEPATH/usr/bin/${ios_triple}ar'
env['RANLIB'] = '$IPHONEPATH/usr/bin/${ios_triple}ranlib'
env['CC'] = '$IPHONEPATH/usr/bin/${ios_triple}clang'
env['CXX'] = '$IPHONEPATH/usr/bin/${ios_triple}clang++'
env['AR'] = '$IPHONEPATH/usr/bin/${ios_triple}ar'
env['RANLIB'] = '$IPHONEPATH/usr/bin/${ios_triple}ranlib'
import string
if (env["ios_sim"]=="yes" or env["arch"] == "x86"): # i386, simulator
env["arch"]="x86"
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\\\"')
elif (env["arch"]=="arm64"): # arm64
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.Append(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
else: # armv7
env["arch"] = "arm"
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')
import string
if (env["ios_sim"]=="yes" or env["arch"] == "x86"): # i386, simulator
env["arch"]="x86"
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\\\"')
elif (env["arch"]=="arm64"): # arm64
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.Append(CPPFLAGS=['-DNEED_LONG_INT'])
env.Append(CPPFLAGS=['-DLIBYUV_DISABLE_NEON'])
else: # armv7
env["arch"] = "arm"
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')
if (env["arch"]=="x86"):
env['IPHONEPLATFORM'] = 'iPhoneSimulator'
env.Append(LINKFLAGS=['-arch', 'i386', '-mios-simulator-version-min=4.3',
'-isysroot', '$IPHONESDK',
#'-mmacosx-version-min=10.6',
'-Xlinker',
'-objc_abi_version',
'-Xlinker', '2',
'-framework', 'AudioToolbox',
'-framework', 'AVFoundation',
'-framework', 'CoreAudio',
'-framework', 'CoreGraphics',
'-framework', 'CoreMedia',
'-framework', 'Foundation',
'-framework', 'Security',
'-framework', 'UIKit',
'-framework', 'MediaPlayer',
'-framework', 'OpenGLES',
'-framework', 'QuartzCore',
'-framework', 'SystemConfiguration',
'-F$IPHONESDK',
])
elif (env["arch"]=="arm64"):
env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
'-isysroot', '$IPHONESDK',
#'-stdlib=libc++',
'-framework', 'Foundation',
'-framework', 'UIKit',
'-framework', 'CoreGraphics',
'-framework', 'OpenGLES',
'-framework', 'QuartzCore',
'-framework', 'CoreAudio',
'-framework', 'AudioToolbox',
'-framework', 'SystemConfiguration',
'-framework', 'Security',
#'-framework', 'AdSupport',
'-framework', 'MediaPlayer',
'-framework', 'AVFoundation',
'-framework', 'CoreMedia',
])
else:
env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
'-isysroot', '$IPHONESDK',
'-framework', 'Foundation',
'-framework', 'UIKit',
'-framework', 'CoreGraphics',
'-framework', 'OpenGLES',
'-framework', 'QuartzCore',
'-framework', 'CoreAudio',
'-framework', 'AudioToolbox',
'-framework', 'SystemConfiguration',
'-framework', 'Security',
#'-framework', 'AdSupport',
'-framework', 'MediaPlayer',
'-framework', 'AVFoundation',
'-framework', 'CoreMedia',
])
if (env["arch"]=="x86"):
env['IPHONEPLATFORM'] = 'iPhoneSimulator'
env.Append(LINKFLAGS=['-arch', 'i386', '-mios-simulator-version-min=4.3',
'-isysroot', '$IPHONESDK',
#'-mmacosx-version-min=10.6',
'-Xlinker',
'-objc_abi_version',
'-Xlinker', '2',
'-framework', 'AudioToolbox',
'-framework', 'AVFoundation',
'-framework', 'CoreAudio',
'-framework', 'CoreGraphics',
'-framework', 'CoreMedia',
'-framework', 'Foundation',
'-framework', 'Security',
'-framework', 'UIKit',
'-framework', 'MediaPlayer',
'-framework', 'OpenGLES',
'-framework', 'QuartzCore',
'-framework', 'SystemConfiguration',
'-F$IPHONESDK',
])
elif (env["arch"]=="arm64"):
env.Append(LINKFLAGS=['-arch', 'arm64', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
'-isysroot', '$IPHONESDK',
#'-stdlib=libc++',
'-framework', 'Foundation',
'-framework', 'UIKit',
'-framework', 'CoreGraphics',
'-framework', 'OpenGLES',
'-framework', 'QuartzCore',
'-framework', 'CoreAudio',
'-framework', 'AudioToolbox',
'-framework', 'SystemConfiguration',
'-framework', 'Security',
#'-framework', 'AdSupport',
'-framework', 'MediaPlayer',
'-framework', 'AVFoundation',
'-framework', 'CoreMedia',
])
else:
env.Append(LINKFLAGS=['-arch', 'armv7', '-Wl,-dead_strip', '-miphoneos-version-min=5.1.1',
'-isysroot', '$IPHONESDK',
'-framework', 'Foundation',
'-framework', 'UIKit',
'-framework', 'CoreGraphics',
'-framework', 'OpenGLES',
'-framework', 'QuartzCore',
'-framework', 'CoreAudio',
'-framework', 'AudioToolbox',
'-framework', 'SystemConfiguration',
'-framework', 'Security',
#'-framework', 'AdSupport',
'-framework', 'MediaPlayer',
'-framework', 'AVFoundation',
'-framework', 'CoreMedia',
])
if env['game_center'] == 'yes':
env.Append(CPPFLAGS=['-fblocks', '-DGAME_CENTER_ENABLED'])
env.Append(LINKFLAGS=['-framework', 'GameKit'])
if env['game_center'] == 'yes':
env.Append(CPPFLAGS=['-fblocks', '-DGAME_CENTER_ENABLED'])
env.Append(LINKFLAGS=['-framework', 'GameKit'])
if env['store_kit'] == 'yes':
env.Append(CPPFLAGS=['-DSTOREKIT_ENABLED'])
env.Append(LINKFLAGS=['-framework', 'StoreKit'])
if env['store_kit'] == 'yes':
env.Append(CPPFLAGS=['-DSTOREKIT_ENABLED'])
env.Append(LINKFLAGS=['-framework', 'StoreKit'])
if env['icloud'] == 'yes':
env.Append(CPPFLAGS=['-DICLOUD_ENABLED'])
if env['icloud'] == 'yes':
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(LINKFLAGS=['-O3']) #
env.Append(CCFLAGS=['-O3', '-DNS_BLOCK_ASSERTIONS=1','-Wall', '-gdwarf-2']) # removed -ffast-math
env.Append(LINKFLAGS=['-O3']) #
elif env["target"] == "release_debug":
env.Append(CCFLAGS=['-Os', '-DNS_BLOCK_ASSERTIONS=1','-Wall','-DDEBUG_ENABLED'])
env.Append(LINKFLAGS=['-Os'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED'])
elif env["target"] == "release_debug":
env.Append(CCFLAGS=['-Os', '-DNS_BLOCK_ASSERTIONS=1','-Wall','-DDEBUG_ENABLED'])
env.Append(LINKFLAGS=['-Os'])
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(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED'])
env.Append(CCFLAGS=['-D_DEBUG', '-DDEBUG=1', '-gdwarf-2', '-Wall', '-O0', '-DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ENABLED'])
elif (env["target"]=="profile"):
elif (env["target"]=="profile"):
env.Append(CCFLAGS=['-g','-pg', '-Os'])
env.Append(LINKFLAGS=['-pg'])
env.Append(CCFLAGS=['-g','-pg', '-Os'])
env.Append(LINKFLAGS=['-pg'])
if (env["ios_sim"]=="yes"): #TODO: Check if needed?
env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.6'
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'])
if (env["ios_sim"]=="yes"): #TODO: Check if needed?
env['ENV']['MACOSX_DEPLOYMENT_TARGET'] = '10.6'
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'])
# TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
env.opus_fixed_point="yes"
if env["arch"]=="x86":
pass
elif(env["arch"]=="arm64"):
env.Append(CFLAGS=["-DOPUS_ARM64_OPT"])
else:
env.Append(CFLAGS=["-DOPUS_ARM_OPT"])
# TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
env.opus_fixed_point="yes"
if env["arch"]=="x86":
pass
elif(env["arch"]=="arm64"):
env.Append(CFLAGS=["-DOPUS_ARM64_OPT"])
else:
env.Append(CFLAGS=["-DOPUS_ARM_OPT"])
if env['ios_exceptions'] == 'yes':
env.Append(CPPFLAGS=['-fexceptions'])
else:
env.Append(CPPFLAGS=['-fno-exceptions'])
#env['neon_enabled']=True
env['S_compiler'] = '$IPHONEPATH/Developer/usr/bin/gcc'
if env['ios_exceptions'] == 'yes':
env.Append(CPPFLAGS=['-fexceptions'])
else:
env.Append(CPPFLAGS=['-fno-exceptions'])
#env['neon_enabled']=True
env['S_compiler'] = '$IPHONEPATH/Developer/usr/bin/gcc'
import methods
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 = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )
import methods
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 = { 'GLSL120GLES' : env.Builder(action = methods.build_gles2_headers, suffix = 'glsl.h',src_suffix = '.glsl') } )

View File

@ -3,20 +3,20 @@
Import('env')
javascript_files = [
"os_javascript.cpp",
"audio_driver_javascript.cpp",
"javascript_main.cpp",
"audio_server_javascript.cpp",
"javascript_eval.cpp"
"os_javascript.cpp",
"audio_driver_javascript.cpp",
"javascript_main.cpp",
"audio_server_javascript.cpp",
"javascript_eval.cpp"
]
env_javascript = env.Clone()
if env['target'] == "profile":
env_javascript.Append(CPPFLAGS=['-DPROFILER_ENABLED'])
env_javascript.Append(CPPFLAGS=['-DPROFILER_ENABLED'])
javascript_objects=[]
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=["--shell-file",'"platform/javascript/godot_shell.html"'])

View File

@ -3,103 +3,103 @@ import sys
import string
def is_active():
return True
return True
def get_name():
return "JavaScript"
return "JavaScript"
def can_build():
import os
if (not os.environ.has_key("EMSCRIPTEN_ROOT")):
return False
return True
import os
if (not os.environ.has_key("EMSCRIPTEN_ROOT")):
return False
return True
def get_opts():
return [
['wasm','Compile to WebAssembly','no'],
['javascript_eval','Enable JavaScript eval interface','yes'],
]
return [
['wasm','Compile to WebAssembly','no'],
['javascript_eval','Enable JavaScript eval interface','yes'],
]
def get_flags():
return [
('tools', 'no'),
('builtin_zlib', 'yes'),
('module_etc1_enabled', 'no'),
('module_mpc_enabled', 'no'),
('module_theora_enabled', 'no'),
]
return [
('tools', 'no'),
('builtin_zlib', 'yes'),
('module_etc1_enabled', 'no'),
('module_mpc_enabled', 'no'),
('module_theora_enabled', 'no'),
]
def configure(env):
env['ENV'] = os.environ;
env.use_windows_spawn_fix('javascript')
env['ENV'] = os.environ;
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['CC'] = em_path+'/emcc'
env['CXX'] = em_path+'/emcc'
#env['AR'] = em_path+"/emar"
env['AR'] = em_path+"/emcc"
env['ARFLAGS'] = "-o"
env['ENV']['PATH'] = em_path+":"+env['ENV']['PATH']
env['CC'] = em_path+'/emcc'
env['CXX'] = em_path+'/emcc'
#env['AR'] = em_path+"/emar"
env['AR'] = em_path+"/emcc"
env['ARFLAGS'] = "-o"
# env['RANLIB'] = em_path+"/emranlib"
env['RANLIB'] = em_path + "/emcc"
env['OBJSUFFIX'] = '.bc'
env['LIBSUFFIX'] = '.bc'
env['CCCOM'] = "$CC -o $TARGET $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"
env['CXXCOM'] = "$CC -o $TARGET $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES"
env['RANLIB'] = em_path + "/emcc"
env['OBJSUFFIX'] = '.bc'
env['LIBSUFFIX'] = '.bc'
env['CCCOM'] = "$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["LINKFLAGS"]= string.split(" -g --sysroot="+ld_sysroot+" -Wl,--no-undefined -Wl,-z,noexecstack ")
if (env["target"]=="release"):
env.Append(CCFLAGS=['-O2'])
elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-O2', '-DDEBUG_ENABLED'])
#env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-g4', '-DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC'])
if (env["target"]=="release"):
env.Append(CCFLAGS=['-O2'])
elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['-O2','-DDEBUG_ENABLED'])
elif (env["target"]=="debug"):
env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-O2', '-DDEBUG_ENABLED'])
#env.Append(CCFLAGS=['-D_DEBUG', '-Wall', '-g4', '-DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['-DDEBUG_MEMORY_ALLOC'])
# TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
env.opus_fixed_point = "yes"
# TODO: Move that to opus module's config
if("module_opus_enabled" in env and env["module_opus_enabled"] != "no"):
env.opus_fixed_point = "yes"
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=['-DGLES2_ENABLED'])
env.Append(CPPFLAGS=['-DGLES_NO_CLIENT_ARRAYS'])
env.Append(CPPFLAGS=['-s','FULL_ES2=1'])
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=['-DGLES2_ENABLED'])
env.Append(CPPFLAGS=['-DGLES_NO_CLIENT_ARRAYS'])
env.Append(CPPFLAGS=['-s','FULL_ES2=1'])
# env.Append(CPPFLAGS=['-DANDROID_ENABLED', '-DUNIX_ENABLED','-DMPC_FIXED_POINT'])
if env['wasm'] == 'yes':
env.Append(LINKFLAGS=['-s','BINARYEN=1'])
env.Append(LINKFLAGS=['-s','\'BINARYEN_METHOD="native-wasm"\''])
env["PROGSUFFIX"]+=".webassembly"
else:
env.Append(CPPFLAGS=['-s','ASM_JS=1'])
env.Append(LINKFLAGS=['-s','ASM_JS=1'])
if env['wasm'] == 'yes':
env.Append(LINKFLAGS=['-s','BINARYEN=1'])
env.Append(LINKFLAGS=['-s','\'BINARYEN_METHOD="native-wasm"\''])
env["PROGSUFFIX"]+=".webassembly"
else:
env.Append(CPPFLAGS=['-s','ASM_JS=1'])
env.Append(LINKFLAGS=['-s','ASM_JS=1'])
if env['javascript_eval'] == 'yes':
env.Append(CPPFLAGS=['-DJAVASCRIPT_EVAL_ENABLED'])
if env['javascript_eval'] == 'yes':
env.Append(CPPFLAGS=['-DJAVASCRIPT_EVAL_ENABLED'])
env.Append(LINKFLAGS=['-O2'])
#env.Append(LINKFLAGS=['-g4'])
env.Append(LINKFLAGS=['-O2'])
#env.Append(LINKFLAGS=['-g4'])
#print "CCCOM is:", env.subst('$CCCOM')
#print "P: ", env['p'], " Platofrm: ", env['platform']
#print "CCCOM is:", env.subst('$CCCOM')
#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 = { '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 = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
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 = { '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') } )

View File

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

View File

@ -4,99 +4,99 @@ import sys
def is_active():
return True
return True
def get_name():
return "OSX"
return "OSX"
def can_build():
if (sys.platform == "darwin" or os.environ.has_key("OSXCROSS_ROOT")):
return True
if (sys.platform == "darwin" or os.environ.has_key("OSXCROSS_ROOT")):
return True
return False
return False
def get_opts():
return [
('force_64_bits','Force 64 bits binary','no'),
('osxcross_sdk','OSXCross SDK version','darwin14'),
return [
('force_64_bits','Force 64 bits binary','no'),
('osxcross_sdk','OSXCross SDK version','darwin14'),
]
]
def get_flags():
return [
]
return [
]
def configure(env):
env.Append(CPPPATH=['#platform/osx'])
env.Append(CPPPATH=['#platform/osx'])
if (env["bits"]=="default"):
env["bits"]="32"
if (env["bits"]=="default"):
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")):
#regular native build
if (env["bits"]=="64"):
env.Append(CCFLAGS=['-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'x86_64'])
elif (env["bits"]=="32"):
env.Append(CCFLAGS=['-arch', 'i386'])
env.Append(LINKFLAGS=['-arch', 'i386'])
else:
env.Append(CCFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
else:
#osxcross build
root=os.environ.get("OSXCROSS_ROOT",0)
if env["bits"]=="64":
basecmd=root+"/target/bin/x86_64-apple-"+env["osxcross_sdk"]+"-"
else:
basecmd=root+"/target/bin/i386-apple-"+env["osxcross_sdk"]+"-"
if (not os.environ.has_key("OSXCROSS_ROOT")):
#regular native build
if (env["bits"]=="64"):
env.Append(CCFLAGS=['-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'x86_64'])
elif (env["bits"]=="32"):
env.Append(CCFLAGS=['-arch', 'i386'])
env.Append(LINKFLAGS=['-arch', 'i386'])
else:
env.Append(CCFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
env.Append(LINKFLAGS=['-arch', 'i386', '-arch', 'x86_64'])
else:
#osxcross build
root=os.environ.get("OSXCROSS_ROOT",0)
if env["bits"]=="64":
basecmd=root+"/target/bin/x86_64-apple-"+env["osxcross_sdk"]+"-"
else:
basecmd=root+"/target/bin/i386-apple-"+env["osxcross_sdk"]+"-"
env['CC'] = basecmd+"cc"
env['CXX'] = basecmd+"c++"
env['AR'] = basecmd+"ar"
env['RANLIB'] = basecmd+"ranlib"
env['AS'] = basecmd+"as"
env['CC'] = basecmd+"cc"
env['CXX'] = basecmd+"c++"
env['AR'] = basecmd+"ar"
env['RANLIB'] = basecmd+"ranlib"
env['AS'] = basecmd+"as"
env.Append(CPPFLAGS=["-DAPPLE_STYLE_KEYS"])
env.Append(CPPFLAGS=['-DUNIX_ENABLED','-DGLES2_ENABLED','-DOSX_ENABLED'])
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(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(CPPFLAGS=["-DAPPLE_STYLE_KEYS"])
env.Append(CPPFLAGS=['-DUNIX_ENABLED','-DGLES2_ENABLED','-DOSX_ENABLED'])
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(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'])
if (env["CXX"]=="clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"]="clang"
env["LD"]="clang++"
if (env["CXX"]=="clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"]="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 = { '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 = { 'HLSL9' : env.Builder(action = methods.build_hlsl_dx9_headers, suffix = 'hlsl.h',src_suffix = '.hlsl') } )
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 = { '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["x86_libtheora_opt_gcc"]=True
env["x86_libtheora_opt_gcc"]=True

View File

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

View File

@ -4,73 +4,73 @@ import sys
def is_active():
return True
return True
def get_name():
return "Server"
return "Server"
def can_build():
if (os.name!="posix"):
return False
if (os.name!="posix"):
return False
return True # enabled
return True # enabled
def get_opts():
return [
('use_llvm','Use llvm compiler','no'),
('force_32_bits','Force 32 bits binary','no')
]
return [
('use_llvm','Use llvm compiler','no'),
('force_32_bits','Force 32 bits binary','no')
]
def get_flags():
return [
]
return [
]
def configure(env):
env.Append(CPPPATH=['#platform/server'])
if (env["use_llvm"]=="yes"):
env["CC"]="clang"
env["CXX"]="clang++"
env["LD"]="clang++"
env.Append(CPPPATH=['#platform/server'])
if (env["use_llvm"]=="yes"):
env["CC"]="clang"
env["CXX"]="clang++"
env["LD"]="clang++"
is64=sys.maxsize > 2**32
is64=sys.maxsize > 2**32
if (env["bits"]=="default"):
if (is64):
env["bits"]="64"
else:
env["bits"]="32"
if (env["bits"]=="default"):
if (is64):
env["bits"]="64"
else:
env["bits"]="32"
#if (env["tools"]=="no"):
# #no tools suffix
# env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX']
# env['LIBSUFFIX'] = ".nt"+env['LIBSUFFIX']
#if (env["tools"]=="no"):
# #no tools suffix
# env['OBJSUFFIX'] = ".nt"+env['OBJSUFFIX']
# 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(LIBS=['pthread','z']) #TODO detect linux/BSD!
env.Append(CPPFLAGS=['-DSERVER_ENABLED','-DUNIX_ENABLED'])
env.Append(LIBS=['pthread','z']) #TODO detect linux/BSD!
if (env["CXX"]=="clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"]="clang"
env["LD"]="clang++"
if (env["CXX"]=="clang++"):
env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
env["CC"]="clang"
env["LD"]="clang++"

View File

@ -4,14 +4,14 @@ Import('env')
common_win=[
"context_gl_win.cpp",
"os_windows.cpp",
"ctxgl_procaddr.cpp",
"key_mapping_win.cpp",
"tcp_server_winsock.cpp",
"packet_peer_udp_winsock.cpp",
"stream_peer_winsock.cpp",
"joystick.cpp",
"context_gl_win.cpp",
"os_windows.cpp",
"ctxgl_procaddr.cpp",
"key_mapping_win.cpp",
"tcp_server_winsock.cpp",
"packet_peer_udp_winsock.cpp",
"stream_peer_winsock.cpp",
"joystick.cpp",
]
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
if (env['vsproj'])=="yes":
env.vs_srcs = env.vs_srcs + ["platform/windows/godot_win.cpp"]
for x in common_win:
env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)]
env.vs_srcs = env.vs_srcs + ["platform/windows/godot_win.cpp"]
for x in common_win:
env.vs_srcs = env.vs_srcs + ["platform/windows/" + str(x)]

View File

@ -100,299 +100,299 @@ import sys
import methods
def is_active():
return True
return True
def get_name():
return "Windows"
return "Windows"
def can_build():
if (os.name=="nt"):
#building natively on windows!
if ( os.getenv("VCINSTALLDIR") ):
return True
else:
print("\nMSVC not detected, attempting Mingw.")
mingw32 = ""
mingw64 = ""
if ( os.getenv("MINGW32_PREFIX") ) :
mingw32 = os.getenv("MINGW32_PREFIX")
if ( os.getenv("MINGW64_PREFIX") ) :
mingw64 = os.getenv("MINGW64_PREFIX")
if (os.name=="nt"):
#building natively on windows!
if ( os.getenv("VCINSTALLDIR") ):
return True
else:
print("\nMSVC not detected, attempting Mingw.")
mingw32 = ""
mingw64 = ""
if ( os.getenv("MINGW32_PREFIX") ) :
mingw32 = os.getenv("MINGW32_PREFIX")
if ( os.getenv("MINGW64_PREFIX") ) :
mingw64 = os.getenv("MINGW64_PREFIX")
test = "gcc --version > NUL 2>&1"
if os.system(test)!= 0 and os.system(mingw32+test)!=0 and os.system(mingw64+test)!=0 :
print("- could not detect gcc.")
print("Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH.\n")
return False
else:
print("- gcc detected.")
test = "gcc --version > NUL 2>&1"
if os.system(test)!= 0 and os.system(mingw32+test)!=0 and os.system(mingw64+test)!=0 :
print("- could not detect gcc.")
print("Please, make sure a path to a Mingw /bin directory is accessible into the environment PATH.\n")
return False
else:
print("- gcc detected.")
return True
return True
if (os.name=="posix"):
if (os.name=="posix"):
mingw = "i586-mingw32msvc-"
mingw64 = "x86_64-w64-mingw32-"
mingw32 = "i686-w64-mingw32-"
mingw = "i586-mingw32msvc-"
mingw64 = "x86_64-w64-mingw32-"
mingw32 = "i686-w64-mingw32-"
if (os.getenv("MINGW32_PREFIX")):
mingw32=os.getenv("MINGW32_PREFIX")
mingw = mingw32
if (os.getenv("MINGW64_PREFIX")):
mingw64=os.getenv("MINGW64_PREFIX")
if (os.getenv("MINGW32_PREFIX")):
mingw32=os.getenv("MINGW32_PREFIX")
mingw = mingw32
if (os.getenv("MINGW64_PREFIX")):
mingw64=os.getenv("MINGW64_PREFIX")
test = "gcc --version &>/dev/null"
if (os.system(mingw+test) == 0 or os.system(mingw64+test) == 0 or os.system(mingw32+test) == 0):
return True
test = "gcc --version &>/dev/null"
if (os.system(mingw+test) == 0 or os.system(mingw64+test) == 0 or os.system(mingw32+test) == 0):
return True
return False
return False
def get_opts():
mingw=""
mingw32=""
mingw64=""
if ( os.name == "posix" ):
mingw = "i586-mingw32msvc-"
mingw32 = "i686-w64-mingw32-"
mingw64 = "x86_64-w64-mingw32-"
mingw=""
mingw32=""
mingw64=""
if ( os.name == "posix" ):
mingw = "i586-mingw32msvc-"
mingw32 = "i686-w64-mingw32-"
mingw64 = "x86_64-w64-mingw32-"
if os.system(mingw32+"gcc --version &>/dev/null") != 0 :
mingw32 = mingw
if os.system(mingw32+"gcc --version &>/dev/null") != 0 :
mingw32 = mingw
if (os.getenv("MINGW32_PREFIX")):
mingw32=os.getenv("MINGW32_PREFIX")
mingw = mingw32
if (os.getenv("MINGW64_PREFIX")):
mingw64=os.getenv("MINGW64_PREFIX")
if (os.getenv("MINGW32_PREFIX")):
mingw32=os.getenv("MINGW32_PREFIX")
mingw = mingw32
if (os.getenv("MINGW64_PREFIX")):
mingw64=os.getenv("MINGW64_PREFIX")
return [
('mingw_prefix','Mingw Prefix',mingw32),
('mingw_prefix_64','Mingw Prefix 64 bits',mingw64),
]
return [
('mingw_prefix','Mingw Prefix',mingw32),
('mingw_prefix_64','Mingw Prefix 64 bits',mingw64),
]
def get_flags():
return [
('builtin_zlib', 'yes'),
('openssl','builtin'), #use builtin openssl
]
return [
('builtin_zlib', 'yes'),
('openssl','builtin'), #use builtin openssl
]
def build_res_file( target, source, env ):
cmdbase = ""
if (env["bits"] == "32"):
cmdbase = env['mingw_prefix']
else:
cmdbase = env['mingw_prefix_64']
CPPPATH = env['CPPPATH']
cmdbase = cmdbase + 'windres --include-dir . '
import subprocess
for x in range(len(source)):
cmd = cmdbase + '-i ' + str(source[x]) + ' -o ' + str(target[x])
try:
out = subprocess.Popen(cmd,shell = True,stderr = subprocess.PIPE).communicate()
if len(out[1]):
return 1
except:
return 1
return 0
cmdbase = ""
if (env["bits"] == "32"):
cmdbase = env['mingw_prefix']
else:
cmdbase = env['mingw_prefix_64']
CPPPATH = env['CPPPATH']
cmdbase = cmdbase + 'windres --include-dir . '
import subprocess
for x in range(len(source)):
cmd = cmdbase + '-i ' + str(source[x]) + ' -o ' + str(target[x])
try:
out = subprocess.Popen(cmd,shell = True,stderr = subprocess.PIPE).communicate()
if len(out[1]):
return 1
except:
return 1
return 0
def configure(env):
env.Append(CPPPATH=['#platform/windows'])
env['is_mingw']=False
if (os.name=="nt" and os.getenv("VCINSTALLDIR") ):
#build using visual studio
env['ENV']['TMP'] = os.environ['TMP']
env.Append(CPPPATH=['#platform/windows/include'])
env.Append(LIBPATH=['#platform/windows/lib'])
env.Append(CPPPATH=['#platform/windows'])
env['is_mingw']=False
if (os.name=="nt" and os.getenv("VCINSTALLDIR") ):
#build using visual studio
env['ENV']['TMP'] = os.environ['TMP']
env.Append(CPPPATH=['#platform/windows/include'])
env.Append(LIBPATH=['#platform/windows/lib'])
if (env["target"]=="release"):
if (env["target"]=="release"):
env.Append(CCFLAGS=['/O2'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
env.Append(CCFLAGS=['/O2'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
elif (env["target"]=="release_debug"):
elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
elif (env["target"]=="debug_release"):
env.Append(CCFLAGS=['/O2','/DDEBUG_ENABLED'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
elif (env["target"]=="debug_release"):
env.Append(CCFLAGS=['/Z7','/Od'])
env.Append(LINKFLAGS=['/DEBUG'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
env.Append(LINKFLAGS=['/ENTRY:mainCRTStartup'])
env.Append(CCFLAGS=['/Z7','/Od'])
env.Append(LINKFLAGS=['/DEBUG'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS'])
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(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG'])
env.Append(CCFLAGS=['/Z7','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED','/DD3D_DEBUG_INFO','/Od'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG'])
env.Append(CCFLAGS=['/MT','/Gd','/GR','/nologo'])
env.Append(CXXFLAGS=['/TP'])
env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
env.Append(CCFLAGS=['/DWIN32'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/MT','/Gd','/GR','/nologo'])
env.Append(CXXFLAGS=['/TP'])
env.Append(CPPFLAGS=['/DMSVC', '/GR', ])
env.Append(CCFLAGS=['/I'+os.getenv("WindowsSdkDir")+"/Include"])
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DRTAUDIO_ENABLED'])
env.Append(CCFLAGS=['/DWIN32'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/DGLES2_ENABLED'])
LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32','Ws2_32', 'shell32','advapi32','dinput8','dxguid']
env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS])
env.Append(CCFLAGS=['/DGLES2_ENABLED'])
LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32','Ws2_32', 'shell32','advapi32','dinput8','dxguid']
env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS])
env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"])
if (os.getenv("DXSDK_DIR")):
DIRECTX_PATH=os.getenv("DXSDK_DIR")
else:
DIRECTX_PATH="C:/Program Files/Microsoft DirectX SDK (March 2009)"
env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"])
if (os.getenv("DXSDK_DIR")):
DIRECTX_PATH=os.getenv("DXSDK_DIR")
else:
DIRECTX_PATH="C:/Program Files/Microsoft DirectX SDK (March 2009)"
if (os.getenv("VCINSTALLDIR")):
VC_PATH=os.getenv("VCINSTALLDIR")
else:
VC_PATH=""
if (os.getenv("VCINSTALLDIR")):
VC_PATH=os.getenv("VCINSTALLDIR")
else:
VC_PATH=""
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(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"])
env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"])
env['ENV'] = os.environ;
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(CCFLAGS=["/I"+DIRECTX_PATH+"/Include"])
env.Append(LIBPATH=[DIRECTX_PATH+"/Lib/x86"])
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
compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV'])
# 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 = methods.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)
if(env["bits"] != "default"):
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)"
+" 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.")
sys.exit()
# 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"):
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)"
+" 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.")
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
# 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["x86_libtheora_opt_vc"]=True
# 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)
env["bits"]="32"
env["x86_libtheora_opt_vc"]=True
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(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"):
env["bits"]="64"
env["x86_libtheora_opt_vc"]=False
print "Compiled program architecture will be a 64 bit executable (forcing bits=64)."
elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"):
print "Compiled program architecture will be a 32 bit executable. (forcing bits=32)."
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."
if env["bits"]=="64":
env.Append(CCFLAGS=['/D_WIN64'])
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(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"):
env["bits"]="64"
env["x86_libtheora_opt_vc"]=False
print "Compiled program architecture will be a 64 bit executable (forcing bits=64)."
elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"):
print "Compiled program architecture will be a 32 bit executable. (forcing bits=32)."
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."
if env["bits"]=="64":
env.Append(CCFLAGS=['/D_WIN64'])
# Incremental linking fix
env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program']
env['BUILDERS']['Program'] = methods.precious_program
# Incremental linking fix
env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program']
env['BUILDERS']['Program'] = methods.precious_program
else:
else:
# Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32
env.use_windows_spawn_fix()
# Workaround for MinGW. See:
# http://www.scons.org/wiki/LongCmdLinesOnWin32
env.use_windows_spawn_fix()
#build using mingw
if (os.name=="nt"):
env['ENV']['TMP'] = os.environ['TMP'] #way to go scons, you can be so stupid sometimes
else:
env["PROGSUFFIX"]=env["PROGSUFFIX"]+".exe" # for linux cross-compilation
#build using mingw
if (os.name=="nt"):
env['ENV']['TMP'] = os.environ['TMP'] #way to go scons, you can be so stupid sometimes
else:
env["PROGSUFFIX"]=env["PROGSUFFIX"]+".exe" # for linux cross-compilation
mingw_prefix=""
mingw_prefix=""
if (env["bits"]=="default"):
env["bits"]="32"
if (env["bits"]=="default"):
env["bits"]="32"
if (env["bits"]=="32"):
env.Append(LINKFLAGS=['-static'])
env.Append(LINKFLAGS=['-static-libgcc'])
env.Append(LINKFLAGS=['-static-libstdc++'])
mingw_prefix=env["mingw_prefix"];
else:
env.Append(LINKFLAGS=['-static'])
mingw_prefix=env["mingw_prefix_64"];
if (env["bits"]=="32"):
env.Append(LINKFLAGS=['-static'])
env.Append(LINKFLAGS=['-static-libgcc'])
env.Append(LINKFLAGS=['-static-libstdc++'])
mingw_prefix=env["mingw_prefix"];
else:
env.Append(LINKFLAGS=['-static'])
mingw_prefix=env["mingw_prefix_64"];
nulstr=""
nulstr=""
if (os.name=="posix"):
nulstr=">/dev/null"
else:
nulstr=">nul"
if (os.name=="posix"):
nulstr=">/dev/null"
else:
nulstr=">nul"
# if os.system(mingw_prefix+"gcc --version"+nulstr)!=0:
# #not really super consistent but..
# print("Can't find Windows compiler: "+mingw_prefix)
# sys.exit(255)
# if os.system(mingw_prefix+"gcc --version"+nulstr)!=0:
# #not really super consistent but..
# print("Can't find Windows compiler: "+mingw_prefix)
# sys.exit(255)
if (env["target"]=="release"):
if (env["target"]=="release"):
env.Append(CCFLAGS=['-msse2'])
env.Append(CCFLAGS=['-msse2'])
if (env["bits"]=="64"):
env.Append(CCFLAGS=['-O3'])
else:
env.Append(CCFLAGS=['-O2'])
if (env["bits"]=="64"):
env.Append(CCFLAGS=['-O3'])
else:
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['AS']=mingw_prefix+"as"
env['CXX'] = mingw_prefix+"g++"
env['AR'] = mingw_prefix+"ar"
env['RANLIB'] = mingw_prefix+"ranlib"
env['LD'] = mingw_prefix+"g++"
env["x86_libtheora_opt_gcc"]=True
env["CC"]=mingw_prefix+"gcc"
env['AS']=mingw_prefix+"as"
env['CXX'] = mingw_prefix+"g++"
env['AR'] = mingw_prefix+"ar"
env['RANLIB'] = mingw_prefix+"ranlib"
env['LD'] = mingw_prefix+"g++"
env["x86_libtheora_opt_gcc"]=True
#env['CC'] = "winegcc"
#env['CXX'] = "wineg++"
#env['CC'] = "winegcc"
#env['CXX'] = "wineg++"
env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows'])
env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED'])
env.Append(CCFLAGS=['-DGLES2_ENABLED'])
env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','ws2_32','kernel32', 'oleaut32', 'dinput8', 'dxguid'])
env.Append(CCFLAGS=['-DWINDOWS_ENABLED','-mwindows'])
env.Append(CPPFLAGS=['-DRTAUDIO_ENABLED'])
env.Append(CCFLAGS=['-DGLES2_ENABLED'])
env.Append(LIBS=['mingw32','opengl32', 'dsound', 'ole32', 'd3d9','winmm','gdi32','iphlpapi','shlwapi','wsock32','ws2_32','kernel32', 'oleaut32', 'dinput8', 'dxguid'])
# if (env["bits"]=="32"):
# env.Append(LIBS=['gcc_s'])
# #--with-arch=i686
# env.Append(CPPFLAGS=['-march=i686'])
# env.Append(LINKFLAGS=['-march=i686'])
# if (env["bits"]=="32"):
# env.Append(LIBS=['gcc_s'])
# #--with-arch=i686
# env.Append(CPPFLAGS=['-march=i686'])
# env.Append(LINKFLAGS=['-march=i686'])
#'d3dx9d'
env.Append(CPPFLAGS=['-DMINGW_ENABLED'])
#env.Append(LINKFLAGS=['-g'])
#'d3dx9d'
env.Append(CPPFLAGS=['-DMINGW_ENABLED'])
#env.Append(LINKFLAGS=['-g'])
# resrc
env['is_mingw']=True
env.Append( BUILDERS = { 'RES' : env.Builder(action = build_res_file, suffix = '.o',src_suffix = '.rc') } )
# resrc
env['is_mingw']=True
env.Append( BUILDERS = { 'RES' : env.Builder(action = build_res_file, suffix = '.o',src_suffix = '.rc') } )
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 = { '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 = { '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 = { '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') } )

View File

@ -3,21 +3,21 @@
Import('env')
files = [
'thread_winrt.cpp',
'#platform/windows/tcp_server_winsock.cpp',
'#platform/windows/packet_peer_udp_winsock.cpp',
'#platform/windows/stream_peer_winsock.cpp',
'#platform/windows/key_mapping_win.cpp',
'joystick_winrt.cpp',
'gl_context_egl.cpp',
'app.cpp',
'os_winrt.cpp',
'thread_winrt.cpp',
'#platform/windows/tcp_server_winsock.cpp',
'#platform/windows/packet_peer_udp_winsock.cpp',
'#platform/windows/stream_peer_winsock.cpp',
'#platform/windows/key_mapping_win.cpp',
'joystick_winrt.cpp',
'gl_context_egl.cpp',
'app.cpp',
'os_winrt.cpp',
]
if "build_angle" in env and env["build_angle"]:
cmd = env.AlwaysBuild(env.ANGLE('libANGLE.lib', None))
cmd = env.AlwaysBuild(env.ANGLE('libANGLE.lib', None))
prog = env.Program('#bin/godot', files)
if "build_angle" in env and env["build_angle"]:
env.Depends(prog, [cmd])
env.Depends(prog, [cmd])

View File

@ -6,161 +6,161 @@ import methods
def is_active():
return True
return True
def get_name():
return "WinRT"
return "WinRT"
def can_build():
if (os.name=="nt"):
#building natively on windows!
if (os.getenv("VSINSTALLDIR")):
if (os.name=="nt"):
#building natively on windows!
if (os.getenv("VSINSTALLDIR")):
if (os.getenv("ANGLE_SRC_PATH") == None):
return False
if (os.getenv("ANGLE_SRC_PATH") == None):
return False
return True
return False
return True
return False
def get_opts():
return []
return []
def get_flags():
return [
('tools', 'no'),
('builtin_zlib', 'yes'),
('openssl', 'builtin'),
('xaudio2', 'yes'),
]
return [
('tools', 'no'),
('builtin_zlib', 'yes'),
('openssl', 'builtin'),
('xaudio2', 'yes'),
]
def configure(env):
if(env["bits"] != "default"):
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)"
+" that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=winrt) and SCons will attempt to detect what MSVC compiler"
+" will be executed and inform you.")
sys.exit()
if(env["bits"] != "default"):
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)"
+" that is being used to run SCons. As a consequence, bits argument is disabled. Run scons again without bits argument (example: scons p=winrt) and SCons will attempt to detect what MSVC compiler"
+" will be executed and inform you.")
sys.exit()
arch = ""
env['ENV'] = os.environ;
arch = ""
env['ENV'] = os.environ;
# ANGLE
angle_root = os.getenv("ANGLE_SRC_PATH")
env.Append(CPPPATH=[angle_root + '/include'])
jobs = str(env.GetOption("num_jobs"))
angle_build_cmd = "msbuild.exe " + angle_root + "/winrt/10/src/angle.sln /nologo /v:m /m:" + jobs + " /p:Configuration=Release /p:Platform="
# ANGLE
angle_root = os.getenv("ANGLE_SRC_PATH")
env.Append(CPPPATH=[angle_root + '/include'])
jobs = str(env.GetOption("num_jobs"))
angle_build_cmd = "msbuild.exe " + angle_root + "/winrt/10/src/angle.sln /nologo /v:m /m:" + jobs + " /p:Configuration=Release /p:Platform="
if os.path.isfile(str(os.getenv("ANGLE_SRC_PATH")) + "/winrt/10/src/angle.sln"):
env["build_angle"] = True
if os.path.isfile(str(os.getenv("ANGLE_SRC_PATH")) + "/winrt/10/src/angle.sln"):
env["build_angle"] = True
if os.getenv('Platform') == "ARM":
if os.getenv('Platform') == "ARM":
print "Compiled program architecture will be an ARM executable. (forcing bits=32)."
print "Compiled program architecture will be an ARM executable. (forcing bits=32)."
arch="arm"
env["bits"]="32"
env.Append(LINKFLAGS=['/MACHINE:ARM'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/arm'])
arch="arm"
env["bits"]="32"
env.Append(LINKFLAGS=['/MACHINE:ARM'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/arm'])
angle_build_cmd += "ARM"
angle_build_cmd += "ARM"
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_ARM/lib'])
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_ARM/lib'])
else:
else:
compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV'])
compiler_version_str = methods.detect_visual_c_compiler_version(env['ENV'])
if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"):
env["bits"]="64"
print "Compiled program architecture will be a x64 executable (forcing bits=64)."
elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"):
env["bits"]="32"
print "Compiled program architecture will be a x86 executable. (forcing bits=32)."
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."
env["bits"]="32"
if(compiler_version_str == "amd64" or compiler_version_str == "x86_amd64"):
env["bits"]="64"
print "Compiled program architecture will be a x64 executable (forcing bits=64)."
elif (compiler_version_str=="x86" or compiler_version_str == "amd64_x86"):
env["bits"]="32"
print "Compiled program architecture will be a x86 executable. (forcing bits=32)."
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."
env["bits"]="32"
if (env["bits"] == "32"):
arch = "x86"
if (env["bits"] == "32"):
arch = "x86"
angle_build_cmd += "Win32"
angle_build_cmd += "Win32"
env.Append(CPPFLAGS=['/DPNG_ABORT=abort'])
env.Append(LINKFLAGS=['/MACHINE:X86'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store'])
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_Win32/lib'])
env.Append(CPPFLAGS=['/DPNG_ABORT=abort'])
env.Append(LINKFLAGS=['/MACHINE:X86'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store'])
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_Win32/lib'])
else:
arch = "x64"
else:
arch = "x64"
angle_build_cmd += "x64"
angle_build_cmd += "x64"
env.Append(LINKFLAGS=['/MACHINE:X64'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/amd64'])
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_x64/lib'])
env.Append(LINKFLAGS=['/MACHINE:X64'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/amd64'])
env.Append(LIBPATH=[angle_root + '/winrt/10/src/Release_x64/lib'])
env.Append(CPPPATH=['#platform/winrt','#drivers/windows'])
env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', '/WINMD', '/APPCONTAINER', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1', '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"'])
env.Append(CPPFLAGS=['/D','__WRL_NO_DEFAULT_LIB__','/D','WIN32'])
env.Append(CPPFLAGS=['/FU', os.environ['VCINSTALLDIR'] + 'lib/store/references/platform.winmd'])
env.Append(CPPFLAGS=['/AI', os.environ['VCINSTALLDIR'] + 'lib/store/references'])
env.Append(CPPPATH=['#platform/winrt','#drivers/windows'])
env.Append(LINKFLAGS=['/MANIFEST:NO', '/NXCOMPAT', '/DYNAMICBASE', '/WINMD', '/APPCONTAINER', '/ERRORREPORT:PROMPT', '/NOLOGO', '/TLBID:1', '/NODEFAULTLIB:"kernel32.lib"', '/NODEFAULTLIB:"ole32.lib"'])
env.Append(CPPFLAGS=['/D','__WRL_NO_DEFAULT_LIB__','/D','WIN32'])
env.Append(CPPFLAGS=['/FU', os.environ['VCINSTALLDIR'] + 'lib/store/references/platform.winmd'])
env.Append(CPPFLAGS=['/AI', os.environ['VCINSTALLDIR'] + 'lib/store/references'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/references'])
env.Append(LIBPATH=[os.environ['VCINSTALLDIR'] + 'lib/store/references'])
if (env["target"]=="release"):
if (env["target"]=="release"):
env.Append(CPPFLAGS=['/O2', '/GL'])
env.Append(CPPFLAGS=['/MD'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS', '/LTCG'])
env.Append(CPPFLAGS=['/O2', '/GL'])
env.Append(CPPFLAGS=['/MD'])
env.Append(LINKFLAGS=['/SUBSYSTEM:WINDOWS', '/LTCG'])
elif (env["target"]=="release_debug"):
elif (env["target"]=="release_debug"):
env.Append(CCFLAGS=['/O2','/Zi','/DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['/MD'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(CCFLAGS=['/O2','/Zi','/DDEBUG_ENABLED'])
env.Append(CPPFLAGS=['/MD'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
elif (env["target"]=="debug"):
elif (env["target"]=="debug"):
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED'])
env.Append(CPPFLAGS=['/MDd'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG'])
env.Append(CCFLAGS=['/Zi','/DDEBUG_ENABLED','/DDEBUG_MEMORY_ENABLED'])
env.Append(CPPFLAGS=['/MDd'])
env.Append(LINKFLAGS=['/SUBSYSTEM:CONSOLE'])
env.Append(LINKFLAGS=['/DEBUG'])
env.Append(CCFLAGS=string.split('/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'))
env.Append(CXXFLAGS=string.split('/ZW /FS'))
env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral'])
env.Append(CCFLAGS=string.split('/FS /MP /GS /wd"4453" /wd"28204" /wd"4291" /Zc:wchar_t /Gm- /fp:precise /D "_UNICODE" /D "UNICODE" /D "WINAPI_FAMILY=WINAPI_FAMILY_APP" /errorReport:prompt /WX- /Zc:forScope /Gd /EHsc /nologo'))
env.Append(CXXFLAGS=string.split('/ZW /FS'))
env.Append(CCFLAGS=['/AI', os.environ['VCINSTALLDIR']+'\\vcpackages', '/AI', os.environ['WINDOWSSDKDIR']+'\\References\\CommonConfiguration\\Neutral'])
env["PROGSUFFIX"]="."+arch+env["PROGSUFFIX"]
env["OBJSUFFIX"]="."+arch+env["OBJSUFFIX"]
env["LIBSUFFIX"]="."+arch+env["LIBSUFFIX"]
env["PROGSUFFIX"]="."+arch+env["PROGSUFFIX"]
env["OBJSUFFIX"]="."+arch+env["OBJSUFFIX"]
env["LIBSUFFIX"]="."+arch+env["LIBSUFFIX"]
env.Append(CCFLAGS=['/DWINRT_ENABLED'])
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/DWINRT_ENABLED'])
env.Append(CCFLAGS=['/DWINDOWS_ENABLED'])
env.Append(CCFLAGS=['/DTYPED_METHOD_BIND'])
env.Append(CCFLAGS=['/DGLES2_ENABLED','/DGL_GLEXT_PROTOTYPES','/DEGL_EGLEXT_PROTOTYPES','/DANGLE_ENABLED'])
env.Append(CCFLAGS=['/DGLES2_ENABLED','/DGL_GLEXT_PROTOTYPES','/DEGL_EGLEXT_PROTOTYPES','/DANGLE_ENABLED'])
LIBS = [
'WindowsApp',
'mincore',
'libANGLE',
'libEGL',
'libGLESv2',
]
env.Append(LINKFLAGS=[p+".lib" for p in LIBS])
LIBS = [
'WindowsApp',
'mincore',
'libANGLE',
'libEGL',
'libGLESv2',
]
env.Append(LINKFLAGS=[p+".lib" for p in LIBS])
# Incremental linking fix
env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program']
env['BUILDERS']['Program'] = methods.precious_program
# Incremental linking fix
env['BUILDERS']['ProgramOriginal'] = env['BUILDERS']['Program']
env['BUILDERS']['Program'] = methods.precious_program
env.Append( BUILDERS = { 'ANGLE' : env.Builder(action = angle_build_cmd) } )
env.Append( BUILDERS = { 'ANGLE' : env.Builder(action = angle_build_cmd) } )
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 = { '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 = { '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 = { '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') } )

View File

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

View File

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

View File

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

View File

@ -22,21 +22,21 @@ f.write("\n\n\n");
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);
while(len(b)==1):
f.write(hex(ord(b)))
b=pngf.read(1);
if (len(b)==1):
f.write(",")
b=pngf.read(1);
while(len(b)==1):
f.write(hex(ord(b)))
b=pngf.read(1);
if (len(b)==1):
f.write(",")
f.write("\n};\n\n\n");
pngf.close();
f.write("\n};\n\n\n");
pngf.close();
#Generate shaders block
@ -48,25 +48,25 @@ f.write("\n\n\n");
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();
while(b!=""):
if (b.endswith("\r\n")):
b=b[:-2]
if (b.endswith("\n")):
b=b[:-1]
f.write(" \""+b)
b=sf.readline();
if (b!=""):
f.write("\"\n")
b=sf.readline();
while(b!=""):
if (b.endswith("\r\n")):
b=b[:-2]
if (b.endswith("\n")):
b=b[:-1]
f.write(" \""+b)
b=sf.readline();
if (b!=""):
f.write("\"\n")
f.write("\";\n\n\n");
sf.close();
f.write("\";\n\n\n");
sf.close();
f.close();

View File

@ -11,115 +11,115 @@ Export('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("#ifndef _EDITOR_TRANSLATIONS_H\n")
g.write("#define _EDITOR_TRANSLATIONS_H\n")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_TRANSLATIONS_H\n")
g.write("#define _EDITOR_TRANSLATIONS_H\n")
import zlib
import os.path
import zlib
import os.path
paths = [node.srcnode().abspath for node in source]
sorted_paths = sorted(paths, key=lambda path: os.path.splitext(os.path.basename(path))[0])
paths = [node.srcnode().abspath for node in source]
sorted_paths = sorted(paths, key=lambda path: os.path.splitext(os.path.basename(path))[0])
xl_names=[]
for i in range(len(sorted_paths)):
print("Appending translation: "+sorted_paths[i])
f = open(sorted_paths[i],"rb")
buf = f.read()
decomp_size = len(buf)
buf = zlib.compress(buf)
name = os.path.splitext(os.path.basename(sorted_paths[i]))[0]
xl_names=[]
for i in range(len(sorted_paths)):
print("Appending translation: "+sorted_paths[i])
f = open(sorted_paths[i],"rb")
buf = f.read()
decomp_size = len(buf)
buf = zlib.compress(buf)
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+"_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _translation_"+name+"_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\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 unsigned char _translation_"+name+"_compressed[]={\n")
for i in range(len(buf)):
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("\tconst char* lang;\n");
g.write("\tint comp_size;\n");
g.write("\tint uncomp_size;\n");
g.write("\tconst unsigned char* data;\n");
g.write("};\n\n");
g.write("static EditorTranslationList _editor_translations[]={\n")
for x in xl_names:
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("};\n")
g.write("struct EditorTranslationList {\n")
g.write("\tconst char* lang;\n");
g.write("\tint comp_size;\n");
g.write("\tint uncomp_size;\n");
g.write("\tconst unsigned char* data;\n");
g.write("};\n\n");
g.write("static EditorTranslationList _editor_translations[]={\n")
for x in xl_names:
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("};\n")
g.write("#endif")
g.write("#endif")
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("#ifndef _EDITOR_FONTS_H\n")
g.write("#define _EDITOR_FONTS_H\n")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _EDITOR_FONTS_H\n")
g.write("#define _EDITOR_FONTS_H\n")
#saving uncompressed, since freetype will reference from memory pointer
xl_names=[]
for i in range(len(source)):
print("Appending font: "+source[i].srcnode().abspath)
f = open(source[i].srcnode().abspath,"rb")
buf = f.read()
import os.path
name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0]
#saving uncompressed, since freetype will reference from memory pointer
xl_names=[]
for i in range(len(source)):
print("Appending font: "+source[i].srcnode().abspath)
f = open(source[i].srcnode().abspath,"rb")
buf = f.read()
import os.path
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"):
import glob
import glob
dir = env.Dir('.').abspath
tlist = glob.glob(dir + "/translations/*.po")
dir = env.Dir('.').abspath
tlist = glob.glob(dir + "/translations/*.po")
print("translations: ",tlist)
env.Depends('#tools/editor/translations.h',tlist)
env.Command('#tools/editor/translations.h',tlist,make_translations_header)
print("translations: ",tlist)
env.Depends('#tools/editor/translations.h',tlist)
env.Command('#tools/editor/translations.h',tlist,make_translations_header)
flist = glob.glob(dir + "/editor_fonts/*.ttf")
flist.append( glob.glob(dir + "/editor_fonts/*.otf") )
flist = glob.glob(dir + "/editor_fonts/*.ttf")
flist.append( glob.glob(dir + "/editor_fonts/*.otf") )
print("fonts: ",flist)
env.Depends('#tools/editor/builtin_fonts.h',flist)
env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header)
print("fonts: ",flist)
env.Depends('#tools/editor/builtin_fonts.h',flist)
env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header)
SConscript('editor/SCsub');
SConscript('collada/SCsub');
SConscript('doc/SCsub')
SConscript('editor/SCsub');
SConscript('collada/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):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src,"rb")
g = open(dst,"wb")
buf = f.read()
decomp_size = len(buf)
import zlib
buf = zlib.compress(buf)
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src,"rb")
g = open(dst,"wb")
buf = f.read()
decomp_size = len(buf)
import zlib
buf = zlib.compress(buf)
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _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_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _doc_data_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n")
g.write("};\n")
g.write("#endif")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _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_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _doc_data_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n")
g.write("};\n")
g.write("#endif")
def make_certs_header(target,source,env):
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src,"rb")
g = open(dst,"wb")
buf = f.read()
decomp_size = len(buf)
import zlib
buf = zlib.compress(buf)
src = source[0].srcnode().abspath
dst = target[0].srcnode().abspath
f = open(src,"rb")
g = open(dst,"wb")
buf = f.read()
decomp_size = len(buf)
import zlib
buf = zlib.compress(buf)
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _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_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _certs_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n")
g.write("};\n")
g.write("#endif")
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef _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_uncompressed_size="+str(decomp_size)+";\n")
g.write("static const unsigned char _certs_compressed[]={\n")
for i in range(len(buf)):
g.write(str(ord(buf[i]))+",\n")
g.write("};\n")
g.write("#endif")
@ -59,30 +59,30 @@ def make_certs_header(target,source,env):
if (env["tools"]=="yes"):
reg_exporters_inc='#include "register_exporters.h"\n'
reg_exporters='void register_exporters() {\n'
for e in env.platform_exporters:
env.tool_sources.append("#platform/"+e+"/export/export.cpp")
reg_exporters+='\tregister_'+e+'_exporter();\n'
reg_exporters_inc+='#include "platform/'+e+'/export/export.h"\n'
reg_exporters+='}\n'
f = open("register_exporters.cpp","wb")
f.write(reg_exporters_inc)
f.write(reg_exporters)
f.close()
reg_exporters_inc='#include "register_exporters.h"\n'
reg_exporters='void register_exporters() {\n'
for e in env.platform_exporters:
env.tool_sources.append("#platform/"+e+"/export/export.cpp")
reg_exporters+='\tregister_'+e+'_exporter();\n'
reg_exporters_inc+='#include "platform/'+e+'/export/export.h"\n'
reg_exporters+='}\n'
f = open("register_exporters.cpp","wb")
f.write(reg_exporters_inc)
f.write(reg_exporters)
f.close()
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.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.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.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)
#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')
SConscript('icons/SCsub');
SConscript('plugins/SCsub');
SConscript('fileserver/SCsub');
SConscript('io_plugins/SCsub');
Export('env')
SConscript('icons/SCsub');
SConscript('plugins/SCsub');
SConscript('fileserver/SCsub');
SConscript('io_plugins/SCsub');

View File

@ -4,93 +4,93 @@ Import('env')
def make_editor_icons_action(target, source, env):
import os
import cStringIO
import os
import cStringIO
dst = target[0].srcnode().abspath
pixmaps = source
dst = target[0].srcnode().abspath
pixmaps = source
s = cStringIO.StringIO()
s = cStringIO.StringIO()
s.write("#include \"editor_icons.h\"\n\n")
s.write("#include \"editor_scale.h\"\n\n")
s.write("#include \"scene/resources/theme.h\"\n\n")
s.write("#include \"editor_icons.h\"\n\n")
s.write("#include \"editor_scale.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)
var_str=os.path.basename(x)[:-4]+"_png";
#print(var_str)
x=str(x)
var_str=os.path.basename(x)[:-4]+"_png";
#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);
while(len(b)==1):
s.write(hex(ord(b)))
b=pngf.read(1);
if (len(b)==1):
s.write(",")
b=pngf.read(1);
while(len(b)==1):
s.write(hex(ord(b)))
b=pngf.read(1);
if (len(b)==1):
s.write(",")
s.write("\n};\n\n");
s.write("\n};\n\n");
pngf.close();
var_str=os.path.basename(x)[:-4]+"_hidpi_png";
try:
pngf.close();
var_str=os.path.basename(x)[:-4]+"_hidpi_png";
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);
while(len(b)==1):
s.write(hex(ord(b)))
b=pngf.read(1);
if (len(b)==1):
s.write(",")
b=pngf.read(1);
while(len(b)==1):
s.write(hex(ord(b)))
b=pngf.read(1);
if (len(b)==1):
s.write(",")
s.write("\n};\n\n\n");
hidpi_list.append(x)
s.write("\n};\n\n\n");
hidpi_list.append(x)
except:
s.write("static const unsigned char* "+ var_str +"=NULL;\n\n\n");
except:
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("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n")
s.write("\tbool use_hidpi_image=(editor_get_scale()>1.0&&p_hidpi_png);\n")
s.write("\tImage img(use_hidpi_image?p_hidpi_png:p_png);\n")
s.write("\tif (editor_get_scale()>1.0 && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); use_hidpi_image=true;}\n")
s.write("\timg.resize(img.get_width()*EDSCALE/(use_hidpi_image?2:1),img.get_height()*EDSCALE/(use_hidpi_image?2:1));\n")
s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n")
s.write("\treturn texture;\n")
s.write("}\n\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("\tbool use_hidpi_image=(editor_get_scale()>1.0&&p_hidpi_png);\n")
s.write("\tImage img(use_hidpi_image?p_hidpi_png:p_png);\n")
s.write("\tif (editor_get_scale()>1.0 && !p_hidpi_png) { img.convert(Image::FORMAT_RGBA); img.expand_x2_hq2x(); use_hidpi_image=true;}\n")
s.write("\timg.resize(img.get_width()*EDSCALE/(use_hidpi_image?2:1),img.get_height()*EDSCALE/(use_hidpi_image?2:1));\n")
s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n")
s.write("\treturn texture;\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))
type=x[5:-4].title().replace("_","");
var_str=x[:-4]+"_png";
var_str_hidpi=x[:-4]+"_hidpi_png";
s.write("\tp_theme->set_icon(\""+type+"\",\"EditorIcons\",make_icon("+var_str+","+var_str_hidpi+"));\n");
x=os.path.basename(str(x))
type=x[5:-4].title().replace("_","");
var_str=x[:-4]+"_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("\n\n}\n\n");
s.write("\n\n}\n\n");
f = open(dst,"wb")
f.write(s.getvalue())
f.close()
s.close()
f = open(dst,"wb")
f.write(s.getvalue())
f.close()
s.close()
make_editor_icons_builder = Builder(action=make_editor_icons_action,
suffix = '.cpp',
src_suffix = '.png')
suffix = '.cpp',
src_suffix = '.png')
env['BUILDERS']['MakeEditorIconsBuilder']=make_editor_icons_builder
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()
while (fname!=""):
fr = open(fname.strip(),"rb")
l = fr.readline()
bc=False
fsingle = fname.strip()
fr = open(fname.strip(),"rb")
l = fr.readline()
bc=False
fsingle = fname.strip()
if (fsingle.find("/")!=-1):
fsingle=fsingle[fsingle.rfind("/")+1:]
rep_fl="$filename"
rep_fi=fsingle
len_fl=len(rep_fl)
len_fi=len(rep_fi)
if (len_fi<len_fl):
for x in range(len_fl-len_fi):
rep_fi+=" "
elif (len_fl<len_fi):
for x in range(len_fi-len_fl):
rep_fl+=" "
if (header.find(rep_fl)!=-1):
text=header.replace(rep_fl,rep_fi)
else:
text=header.replace("$filename",fsingle)
if (fsingle.find("/")!=-1):
fsingle=fsingle[fsingle.rfind("/")+1:]
rep_fl="$filename"
rep_fi=fsingle
len_fl=len(rep_fl)
len_fi=len(rep_fi)
if (len_fi<len_fl):
for x in range(len_fl-len_fi):
rep_fi+=" "
elif (len_fl<len_fi):
for x in range(len_fi-len_fl):
rep_fl+=" "
if (header.find(rep_fl)!=-1):
text=header.replace(rep_fl,rep_fi)
else:
text=header.replace("$filename",fsingle)
while (l!=""):
if ((l.find("//")!=0 and l.find("/*")!=0 and l.strip()!="") or bc):
text+=l
bc=True
l=fr.readline()
while (l!=""):
if ((l.find("//")!=0 and l.find("/*")!=0 and l.strip()!="") or bc):
text+=l
bc=True
l=fr.readline()
fr.close()
fr=open(fname.strip(),"wb")
fr.write(text)
fr.close()
#print(text)
fname=f.readline()
fr.close()
fr=open(fname.strip(),"wb")
fr.write(text)
fr.close()
#print(text)
fname=f.readline()

View File

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

View File

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

View File

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

View File

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

View File

@ -4,7 +4,7 @@ import sys
arg="memdump.txt"
if (len(sys.argv)>1):
arg=sys.argv[1]
arg=sys.argv[1]
f = open(arg,"rb")
@ -18,18 +18,18 @@ cnt={}
while(l!=""):
s=l.split("-")
amount = int(s[1])
what=s[2]
if (what in sum):
sum[what]+=amount
cnt[what]+=1
else:
sum[what]=amount
cnt[what]=1
s=l.split("-")
amount = int(s[1])
what=s[2]
if (what in sum):
sum[what]+=amount
cnt[what]+=1
else:
sum[what]=amount
cnt[what]=1
l=f.readline()
l=f.readline()
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

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

View File

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