Fix darwin-debug build in cmake (OS X)

This patch fixes test_launch_in_terminal test which doesn't work
in OS X since the moment as it was added in r225284. The test fails
because Target::Launch returns the following error: "the darwin-debug
executable doesn't exist at
<output_dir>/lib/python2.7/site-packages/lldb/darwin-debug'".

Patch by Ilia K
Differential Revision: http://reviews.llvm.org/D7102

llvm-svn: 227096
This commit is contained in:
Zachary Turner 2015-01-26 17:23:18 +00:00
parent 078b612de1
commit 0bf09687fb
4 changed files with 81 additions and 2 deletions

View File

@ -167,6 +167,25 @@ else
fi
fi
if [ ${OS_NAME} = "Darwin" ] && [ $MakefileCalled -ne 0 ]
then
# We are being built by CMake on Darwin
if [ ! -L "${framework_python_dir}/darwin-debug" ]
then
if [ $Debug -eq 1 ]
then
echo "Creating symlink for darwin-debug"
fi
cd "${framework_python_dir}"
ln -s "../../../../bin/lldb-launcher" darwin-debug
else
if [ $Debug -eq 1 ]
then
echo "${framework_python_dir}/darwin-debug already exists."
fi
fi
fi
create_python_package () {
package_dir="${framework_python_dir}$1"

View File

@ -329,6 +329,53 @@ def make_symlink_other_platforms( vDictArgs, vstrFrameworkPythonDir, vstrSoPath
return (bOk, strMsg);
#++---------------------------------------------------------------------------
# Details: Make the symbolic link to the darwin-debug. Code for all platforms
# apart from Windows.
# Args: vDictArgs - (R) Program input parameters.
# vstrFrameworkPythonDir - (R) Python framework directory.
# vstrDarwinDebugFileName - (R) File name for darwin-debug.
# Returns: Bool - True = function success, False = failure.
# Str - Error description on task failure.
# Throws: None.
#--
def make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebugFileName ):
dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" );
bOk = True;
strMsg = "";
bDbg = vDictArgs.has_key( "-d" );
strTarget = vstrDarwinDebugFileName
strDarwinDebugPath = "%s/%s" % (vstrFrameworkPythonDir, strTarget);
strTarget = os.path.normcase( strDarwinDebugPath );
strSrc = "";
os.chdir( vstrFrameworkPythonDir );
bMakeFileCalled = vDictArgs.has_key( "-m" );
if not bMakeFileCalled:
return (bOk, strMsg);
else:
strSrc = os.path.normcase( "../../../../bin/lldb-launcher" );
if os.path.islink( strTarget ):
if bDbg:
print strMsglldbsoExists % strTarget;
return (bOk, strMsg);
if bDbg:
print strMsglldbsoMk;
try:
os.symlink( strSrc, strTarget );
except OSError as e:
bOk = False;
strMsg = "OSError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink);
strMsg += " Src:'%s' Target:'%s'" % (strSrc, strTarget);
except:
bOk = False;
strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ];
return (bOk, strMsg);
#++---------------------------------------------------------------------------
# Details: Make the symlink that the script bridge for Python will need in
# the Python framework directory.
@ -343,9 +390,10 @@ def make_symlink( vDictArgs, vstrFrameworkPythonDir ):
bOk = True;
strWkDir = "";
strErrMsg = "";
strSoFileName = "_lldb";
eOSType = utilsOsType.determine_os_type();
# Make symlink for _lldb
strSoFileName = "_lldb";
if eOSType == utilsOsType.EnumOsType.Unknown:
bOk = False;
strErrMsg = strErrMsgOsTypeUnknown;
@ -357,6 +405,14 @@ def make_symlink( vDictArgs, vstrFrameworkPythonDir ):
bOk, strErrMsg = make_symlink_other_platforms( vDictArgs,
vstrFrameworkPythonDir,
strSoFileName );
# Make symlink for darwin-debug
strDarwinDebugFileName = "darwin-debug"
if bOk and eOSType == utilsOsType.EnumOsType.Darwin:
bOk, strErrMsg = make_symlink_darwin_debug( vDictArgs,
vstrFrameworkPythonDir,
strDarwinDebugFileName );
return (bOk, strErrMsg);
#++---------------------------------------------------------------------------

View File

@ -1,4 +1,5 @@
if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
add_subdirectory(darwin-debug)
add_subdirectory(debugserver)
endif()
add_subdirectory(driver)

View File

@ -0,0 +1,3 @@
add_lldb_executable(lldb-launcher
darwin-debug.cpp
)