Index: scripts/CMakeLists.txt =================================================================== --- scripts/CMakeLists.txt +++ scripts/CMakeLists.txt @@ -3,12 +3,13 @@ file(GLOB SWIG_INPUTS Python/interface/*.i) if ( LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION ) + find_package(SWIG REQUIRED) add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp DEPENDS ${LLDB_SOURCE_DIR}/scripts/lldb.swig DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/buildSwigWrapperClasses.py - DEPENDS ${SWIG_INPUTS} - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/buildSwigWrapperClasses.py "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}" "--prefix=${CMAKE_BINARY_DIR}" -m + DEPENDS ${SWIG_INPUTS} + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/buildSwigWrapperClasses.py "--srcRoot=${LLDB_SOURCE_DIR}" "--targetDir=${CMAKE_CURRENT_BINARY_DIR}" "--cfgBldDir=${CMAKE_CURRENT_BINARY_DIR}" "--prefix=${CMAKE_BINARY_DIR}" "--swigExecutable=${SWIG_EXECUTABLE}" -m COMMENT "Python script building LLDB Python wrapper") set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/LLDBWrapPython.cpp PROPERTIES GENERATED 1) Index: scripts/buildSwigWrapperClasses.py =================================================================== --- scripts/buildSwigWrapperClasses.py +++ scripts/buildSwigWrapperClasses.py @@ -85,10 +85,11 @@ automatically. Python install directory.\n\ --argsFile= The args are read from a file instead of the\n\ command line. Other command line args are ignored.\n\ + --swigExecutable= (optional) Full path of swig executable.\n\ \n\ Usage:\n\ buildSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath\n\ - --cfgBldDir=ADirPath --prefix=ADirPath -m -d\n\ + --cfgBldDir=ADirPath --prefix=ADirPath --swigExecutable=ADirPath -m -d\n\ \n\ "; #TAG_PROGRAM_HELP_INFO strHelpInfoExtraWindows = "\ @@ -425,17 +426,19 @@ dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists()" ); bExeFileFound = False; strStatusMsg = ""; - from utilsOsType import EnumOsType; - - switch = { EnumOsType.Unknown : check_lldb_swig_executable_file_exists_Unknown, + if "--swigExecutable" in vDictArgs: + vDictArgs["--swigExeName"] = os.path.basename(vDictArgs["--swigExecutable"]) + vDictArgs["--swigExePath"] = os.path.dirname(vDictArgs["--swigExecutable"]) + bExeFileFound = True + else: + from utilsOsType import EnumOsType; + switch = { EnumOsType.Unknown : check_lldb_swig_executable_file_exists_Unknown, EnumOsType.Darwin : check_lldb_swig_executable_file_exists_Darwin, EnumOsType.FreeBSD : check_lldb_swig_executable_file_exists_FreeBSD, EnumOsType.Linux : check_lldb_swig_executable_file_exists_Linux, - EnumOsType.Windows : check_lldb_swig_executable_file_exists_Windows } - bExeFileFound, strStatusMsg = switch[ veOSType ]( vDictArgs ); - + EnumOsType.Windows : check_lldb_swig_executable_file_exists_Windows } + bExeFileFound, strStatusMsg = switch[ veOSType ]( vDictArgs ); return (bExeFileFound, strStatusMsg); - #++--------------------------------------------------------------------------- # Details: Validate the arguments passed to the program. This function exits # the program should error with the arguments be found. @@ -450,14 +453,15 @@ dictArgs = {}; nResult = 0; strListArgs = "hdmM"; # Format "hiox:" = -h -i -o -x - listLongArgs = ["srcRoot=", "targetDir=", "cfgBldDir=", "prefix=", - "argsFile"]; + listLongArgs = ["srcRoot=", "targetDir=", "cfgBldDir=", "prefix=", + "swigExecutable=", "argsFile"]; dictArgReq = { "-h": "o", # o = optional, m = mandatory "-d": "o", "-m": "o", "-M": "o", "--srcRoot": "m", "--targetDir": "m", + "--swigExecutable" : "o", "--cfgBldDir": "o", "--prefix": "o", "--argsFile": "o" }; @@ -553,8 +557,8 @@ --argsFile= The args are read from a file instead of the command line. Other command line args are ignored. Usage: - buildSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath - --cfgBldDir=ADirPath --prefix=ADirPath -m -d + buildSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath + --cfgBldDir=ADirPath --prefix=ADirPath --swigExecutable=ADirPath -m -d Results: 0 Success -1 Error - invalid parameters passed. @@ -579,4 +583,3 @@ main( sys.argv[ 1: ] ); else: program_exit( -5, strMsgErrorNoMain ); - \ No newline at end of file Index: scripts/utilsArgsParse.py =================================================================== --- scripts/utilsArgsParse.py +++ scripts/utilsArgsParse.py @@ -67,7 +67,7 @@ # Validate parameters above and error on not recognised try: - dictOptsNeeded, dictArgsLeftOver = getopt.getopt( vArgv, + dictOptsNeeded, dictArgsLeftOver = getopt.getopt( vArgv, vstrListArgs, vListLongArgs ); except getopt.GetoptError: @@ -143,4 +143,3 @@ return (-2, dictDummy, strMsg); return (0, dictArgs, strDummy); -