summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/finishSwigWrapperClasses.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/finishSwigWrapperClasses.py')
-rw-r--r--lldb/scripts/finishSwigWrapperClasses.py403
1 files changed, 0 insertions, 403 deletions
diff --git a/lldb/scripts/finishSwigWrapperClasses.py b/lldb/scripts/finishSwigWrapperClasses.py
deleted file mode 100644
index 7e9166bf75e..00000000000
--- a/lldb/scripts/finishSwigWrapperClasses.py
+++ /dev/null
@@ -1,403 +0,0 @@
-""" Post process SWIG Bridge wrapper code Python script for Windows/LINUX/OSX platform
-
- --------------------------------------------------------------------------
- File: finishSwigWrapperClasses.py
-
- Overview: Python script(s) to finish off the SWIG Python C++ Script
- Bridge wrapper code on the Windows/LINUX/OSX platform.
- The Python scripts are equivalent to the shell script (.sh)
- files.
- We use SWIG to create a C++ file containing the appropriate
- wrapper classes and functions for each scripting language,
- before liblldb is built (thus the C++ file can be compiled
- into liblldb. In some cases, additional work may need to be
- done after liblldb has been compiled, to make the scripting
- language stuff fully functional. Any such post-processing
- is handled through the Python scripts called here.
-
- Gotchas: None.
-
- Copyright: None.
- --------------------------------------------------------------------------
-
-"""
-
-# Python modules:
-import sys # Provide argument parsing
-import os # Provide directory and file handling
-
-# Third party modules:
-
-# In-house modules:
-import utilsArgsParse # Parse and validate this script's input arguments
-import utilsOsType # Determine the OS type this script is running on
-import utilsDebug # Debug Python scripts
-
-# Instantiations:
-# True = Turn on script function tracing, False = off.
-gbDbgVerbose = False
-gbDbgFlag = False # Global debug mode flag, set by input parameter
-# --dbgFlag. True = operate in debug mode.
-# True = yes called from makefile system, False = not.
-gbMakeFileFlag = False
-
-# User facing text:
-strMsgErrorNoMain = "Program called by another Python script not allowed"
-strExitMsgSuccess = "Program successful"
-strExitMsgError = "Program error: "
-strParameter = "Parameter: "
-strMsgErrorOsTypeUnknown = "Unable to determine OS type"
-strScriptDirNotFound = "Unable to locate the script directory \'/script\'"
-strScriptLangsFound = "Found the following script languages:"
-strPostProcessError = "Executing \'%s\' post process script failed: "
-strScriptNotFound = "Unable to locate the post process script file \'%s\' in \'%s\'"
-strScriptLangFound = "Found \'%s\' build script."
-strScriptLangsFound = "Found the following script languages:"
-strExecuteMsg = "Executing \'%s\' build script..."
-strExecuteError = "Executing \'%s\' build script failed: "
-strHelpInfo = "\
-Python script(s) to finish off the SWIG Python C++ Script \n\
-Bridge wrapper code on the Windows/LINUX/OSX platform. The Python \n\
-scripts are equivalent to the shell script (.sh) files \n\
-run on others platforms.\n\
-Args: -h (optional) Print help information on this program.\n\
- -d (optional) Determines whether or not this script\n\
- outputs additional information when running.\n\
- -m (optional) Specify called from Makefile system.\n\
- --srcRoot= The root of the lldb source tree.\n\
- --targetDir= Where the lldb framework/shared library gets put.\n\
- --cfgBldDir= (optional) Where the build-swig-Python-LLDB.py program \n\
- will put the lldb.py file it generated from running\n\
- SWIG.\n\
- --prefix= (optional) Is the root directory used to determine where\n\
- third-party modules for scripting languages should\n\
- be installed. Where non-Darwin systems want to put\n\
- the .py and .so files so that Python can find them\n\
- automatically. Python install directory.\n\
- --lldbLibDir (optional) The name of the directory containing liblldb.so.\n\
- \"lib\" by default.\n\
- --cmakeBuildConfiguration= (optional) Is the build configuration(Debug, Release, RelWithDebugInfo)\n\
- used to determine where the bin and lib directories are \n\
- created for a Windows build.\n\
- --argsFile= The args are read from a file instead of the\n\
- command line. Other command line args are ignored.\n\
- --useSystemSix Use system six.py version.\n\
-\n\
-Usage:\n\
- finishSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath\n\
- --cfgBldDir=ADirPath --prefix=ADirPath --lldbLibDir=ADirPath -m -d\n\
-\n\
-" # TAG_PROGRAM_HELP_INFO
-
-#++---------------------------------------------------------------------------
-# Details: Exit the program on success. Called on program successfully done
-# its work. Returns a status result to the caller.
-# Args: vnResult - (R) 0 or greater indicating success.
-# vMsg - (R) Success message if any to show success to user.
-# Returns: None.
-# Throws: None.
-#--
-
-
-def program_exit_success(vnResult, vMsg):
- strMsg = ""
-
- if vMsg.__len__() != 0:
- strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult)
- print(strMsg)
-
- sys.exit(vnResult)
-
-#++---------------------------------------------------------------------------
-# Details: Exit the program with error. Called on exit program failed its
-# task. Returns a status result to the caller.
-# Args: vnResult - (R) A negative number indicating error condition.
-# vMsg - (R) Error message to show to user.
-# Returns: None.
-# Throws: None.
-#--
-
-
-def program_exit_on_failure(vnResult, vMsg):
- print(("%s%s (%d)" % (strExitMsgError, vMsg, vnResult)))
- sys.exit(vnResult)
-
-#++---------------------------------------------------------------------------
-# Details: Exit the program return a exit result number and print a message.
-# Positive numbers and zero are returned for success other error
-# occurred.
-# Args: vnResult - (R) A -ve (an error), 0 or +ve number (ok or status).
-# vMsg - (R) Error message to show to user.
-# Returns: None.
-# Throws: None.
-#--
-
-
-def program_exit(vnResult, vMsg):
- if vnResult >= 0:
- program_exit_success(vnResult, vMsg)
- else:
- program_exit_on_failure(vnResult, vMsg)
-
-#++---------------------------------------------------------------------------
-# Details: Dump input parameters.
-# Args: vDictArgs - (R) Map of input args to value.
-# Returns: None.
-# Throws: None.
-#--
-
-
-def print_out_input_parameters(vDictArgs):
- for arg, val in list(vDictArgs.items()):
- strEqs = ""
- strQ = ""
- if val.__len__() != 0:
- strEqs = " ="
- strQ = "\""
- print(("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ)))
-
-#++---------------------------------------------------------------------------
-# Details: Validate the arguments passed to the program. This function exits
-# the program should error with the arguments be found.
-# Args: vArgv - (R) List of arguments and values.
-# Returns: Int - 0 = success, -ve = some failure.
-# Dict - Map of arguments names to argument values
-# Throws: None.
-#--
-
-
-def validate_arguments(vArgv):
- dbg = utilsDebug.CDebugFnVerbose("validate_arguments()")
- strMsg = ""
- dictArgs = {}
- nResult = 0
- strListArgs = "hdm" # Format "hiox:" = -h -i -o -x <arg>
- listLongArgs = [
- "srcRoot=",
- "targetDir=",
- "cfgBldDir=",
- "prefix=",
- "cmakeBuildConfiguration=",
- "lldbLibDir=",
- "lldbPythonPath=",
- "argsFile",
- "useSystemSix"]
- dictArgReq = {"-h": "o", # o = optional, m = mandatory
- "-d": "o",
- "-m": "o",
- "--srcRoot": "m",
- "--targetDir": "m",
- "--cfgBldDir": "o",
- "--prefix": "o",
- "--cmakeBuildConfiguration": "o",
- "--lldbLibDir": "o",
- "--argsFile": "o",
- "--useSystemSix": "o",
- "--lldbPythonPath": "m"}
-
- # Check for mandatory parameters
- nResult, dictArgs, strMsg = utilsArgsParse.parse(vArgv, strListArgs,
- listLongArgs,
- dictArgReq,
- strHelpInfo)
- if nResult < 0:
- program_exit_on_failure(nResult, strMsg)
-
- # User input -h for help
- if nResult == 1:
- program_exit_success(0, strMsg)
-
- return (nResult, dictArgs)
-
-#++---------------------------------------------------------------------------
-# Details: Locate post process script language directory and the script within
-# and execute.
-# Args: vStrScriptLang - (R) Name of the script language to build.
-# vstrFinishFileName - (R) Prefix file name to build full name.
-# vDictArgs - (R) Program input parameters.
-# Returns: Int - 0 = Success, < 0 some error condition.
-# Str - Error message.
-# Throws: None.
-#--
-
-
-def run_post_process(vStrScriptLang, vstrFinishFileName, vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("run_post_process()")
- nResult = 0
- strStatusMsg = ""
- strScriptFile = vstrFinishFileName % vStrScriptLang
- strScriptFileDir = os.path.normpath(
- os.path.join(
- vDictArgs["--srcRoot"],
- "scripts",
- vStrScriptLang))
- strScriptFilePath = os.path.join(strScriptFileDir, strScriptFile)
-
- # Check for the existence of the script file
- strPath = os.path.normcase(strScriptFilePath)
- bOk = os.path.exists(strPath)
- if not bOk:
- strDir = os.path.normcase(strScriptFileDir)
- strStatusMsg = strScriptNotFound % (strScriptFile, strDir)
- return (-9, strStatusMsg)
-
- if gbDbgFlag:
- print((strScriptLangFound % vStrScriptLang))
- print((strExecuteMsg % vStrScriptLang))
-
- # Change where Python looks for our modules
- strDir = os.path.normcase(strScriptFileDir)
- sys.path.append(strDir)
-
- # Execute the specific language script
- dictArgs = vDictArgs # Remove any args not required before passing on
- strModuleName = strScriptFile[: strScriptFile.__len__() - 3]
- module = __import__(strModuleName)
- nResult, strStatusMsg = module.main(dictArgs)
-
- # Revert sys path
- sys.path.remove(strDir)
-
- return (nResult, strStatusMsg)
-
-#++---------------------------------------------------------------------------
-# Details: Step through each script language sub directory supported
-# and execute post processing script for each scripting language,
-# make sure the build script for that language exists.
-# For now the only language we support is Python, but we expect this
-# to change.
-# Args: vDictArgs - (R) Program input parameters.
-# Returns: Int - 0 = Success, < 0 some error condition.
-# Str - Error message.
-# Throws: None.
-#--
-
-
-def run_post_process_for_each_script_supported(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose(
- "run_post_process_for_each_script_supported()")
- nResult = 0
- strStatusMsg = ""
- strScriptDir = os.path.normpath(
- os.path.join(
- vDictArgs["--srcRoot"],
- "scripts"))
- strFinishFileName = "finishSwig%sLLDB.py"
-
- # Check for the existence of the scripts folder
- strScriptsDir = os.path.normcase(strScriptDir)
- bOk = os.path.exists(strScriptsDir)
- if not bOk:
- return (-8, strScriptDirNotFound)
-
- # Look for any script language directories to build for
- listDirs = ["Python"]
-
- # Iterate script directory find any script language directories
- for scriptLang in listDirs:
- dbg.dump_text("Executing language script for \'%s\'" % scriptLang)
- nResult, strStatusMsg = run_post_process(
- scriptLang, strFinishFileName, vDictArgs)
- if nResult < 0:
- break
-
- if nResult < 0:
- strTmp = strPostProcessError % scriptLang
- strTmp += strStatusMsg
- strStatusMsg = strTmp
-
- return (nResult, strStatusMsg)
-
-#++---------------------------------------------------------------------------
-# Details: Program's main() with arguments passed in from the command line.
-# Program either exits normally or with error from this function -
-# top most level function.
-# Args: vArgv - (R) List of arguments and values.
-# Returns: None
-# Throws: None.
-#--
-
-
-def main(vArgv):
- dbg = utilsDebug.CDebugFnVerbose("main()")
- bOk = False
- dictArgs = {}
- nResult = 0
- strMsg = ""
-
- # The validate arguments fn will exit the program if tests fail
- nResult, dictArgs = validate_arguments(vArgv)
-
- eOSType = utilsOsType.determine_os_type()
- if eOSType == utilsOsType.EnumOsType.Unknown:
- program_exit(-4, strMsgErrorOsTypeUnknown)
-
- global gbDbgFlag
- gbDbgFlag = "-d" in dictArgs
- if gbDbgFlag:
- print_out_input_parameters(dictArgs)
-
- nResult, strMsg = run_post_process_for_each_script_supported(dictArgs)
-
- program_exit(nResult, strMsg)
-
-#-----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
-
-# TAG_PROGRAM_HELP_INFO
-""" Details: Program main entry point.
-
- --------------------------------------------------------------------------
- Args: -h (optional) Print help information on this program.
- -d (optional) Determines whether or not this script
- outputs additional information when running.
- -m (optional) Specify called from Makefile system. If given locate
- the LLDBWrapPython.cpp in --srcRoot/source folder
- else in the --targetDir folder.
- --srcRoot= The root of the lldb source tree.
- --targetDir= Where the lldb framework/shared library gets put.
- --cfgBldDir= Where the buildSwigPythonLLDB.py program will
- (optional) put the lldb.py file it generated from running
- SWIG.
- --prefix= Is the root directory used to determine where
- (optional) third-party modules for scripting languages should
- be installed. Where non-Darwin systems want to put
- the .py and .so files so that Python can find them
- automatically. Python install directory.
- --cmakeBuildConfiguration= (optional) Is the build configuration(Debug, Release, RelWithDebugInfo)\n\
- used to determine where the bin and lib directories are \n\
- created for a Windows build.\n\
- --lldbLibDir= The name of the directory containing liblldb.so.
- (optional) "lib" by default.
- --argsFile= The args are read from a file instead of the
- command line. Other command line args are ignored.
- --useSystemSix Use system six.py version.
- Usage:
- finishSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath
- --cfgBldDir=ADirPath --prefix=ADirPath --lldbLibDir=ADirPath -m -d
- --useSystemSix
-
- Results: 0 Success
- -1 Error - invalid parameters passed.
- -2 Error - incorrect number of mandatory parameters passed.
-
- -4 Error - unable to determine OS type.
- -5 Error - program not run with name of "__main__".
- -8 Error - unable to locate the scripts folder.
- -9 Error - unable to locate the post process language script
- file.
-
- -100+ - Error messages from the child language script file.
-
- --------------------------------------------------------------------------
-
-"""
-
-# Called using "__main__" when not imported i.e. from the command line
-if __name__ == "__main__":
- utilsDebug.CDebugFnVerbose.bVerboseOn = gbDbgVerbose
- dbg = utilsDebug.CDebugFnVerbose("__main__")
- main(sys.argv[1:])
-else:
- program_exit(-5, strMsgErrorNoMain)
OpenPOWER on IntegriCloud