Merge pull request #19522 from PatriceJiang/lua_binding

[tolua] make genbinding.py to work with newer versions of NDK
This commit is contained in:
minggo 2019-03-19 14:19:58 +08:00 committed by GitHub
commit e1f4ef6ccf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 58 additions and 1 deletions

View File

@ -37,6 +37,62 @@ def _check_python_bin_env():
return PYTHON_BIN
def _find_first_file_in_dir(dir, fn):
if os.path.isfile(dir):
if os.path.basename(dir) == fn:
return os.path.join(os.path.dirname(dir), fn)
else :
return None
elif os.path.isdir(dir):
for subdir in os.listdir(dir):
searchPath = _find_first_file_in_dir(os.path.join(dir, subdir), fn)
if searchPath is not None:
return searchPath
else:
return None
def _find_all_files_match(dir, cond, all):
if cond(dir):
all.append(dir)
elif os.path.isdir(dir):
for subdir in os.listdir(dir):
_find_all_files_match(os.path.join(dir, subdir), cond, all)
def _find_toolchain_include_path():
'''
Search gcc prebuilt include path
for instance: "$NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/include"
'''
foundFiles = []
_find_all_files_match(os.path.join(_check_ndk_root_env(), "toolchains"), lambda x : os.path.basename(x) == "stdarg.h" and "arm-linux-androideabi" in x , foundFiles)
if len(foundFiles) == 0:
return ""
else:
return "-I" + os.path.dirname(foundFiles[0])
def _find_llvm_include_path():
'''
Search llvm prebuilt include path.
for instance: "$NDK_ROOT/toolchains/llvm/prebuilt/windows-x86_64/lib64/clang/6.0.2/include"
'''
versionFile = _find_first_file_in_dir(_check_ndk_root_env(), "AndroidVersion.txt")
if versionFile is None:
return ""
versionDir = os.path.dirname(versionFile)
includeDir = _find_first_file_in_dir(versionDir, "stdarg.h")
llvmIncludePath = os.path.dirname(includeDir)
return "-I"+llvmIncludePath
def _defaultIncludePath():
'''default include path for libclang, llvm & gcc include path
'''
llvmInclude = _find_llvm_include_path()
toolchainInclude = _find_toolchain_include_path()
exactIncludes = llvmInclude + " " + toolchainInclude
return exactIncludes
class CmdError(Exception):
pass
@ -112,6 +168,7 @@ def main():
cocos_root = os.path.abspath(os.path.join(project_root, ''))
cxx_generator_root = os.path.abspath(os.path.join(project_root, 'tools/bindings-generator'))
extraFlags = _defaultIncludePath()
# save config to file
config = ConfigParser.ConfigParser()
config.set('DEFAULT', 'androidndkdir', ndk_root)
@ -119,7 +176,7 @@ def main():
config.set('DEFAULT', 'gcc_toolchain_dir', gcc_toolchain_path)
config.set('DEFAULT', 'cocosdir', cocos_root)
config.set('DEFAULT', 'cxxgeneratordir', cxx_generator_root)
config.set('DEFAULT', 'extra_flags', '')
config.set('DEFAULT', 'extra_flags', extraFlags)
conf_ini_file = os.path.abspath(os.path.join(os.path.dirname(__file__), 'userconf.ini'))