Fix argdumper build in cmake (OS X) after r228636
authorIlia K <ki.stfu@gmail.com>
Tue, 17 Feb 2015 18:25:27 +0000 (18:25 +0000)
committerIlia K <ki.stfu@gmail.com>
Tue, 17 Feb 2015 18:25:27 +0000 (18:25 +0000)
Previos version of this patch (see r229148) contained two errors:
* make_symlink_darwin_debug passes 2 arguments into make_symlink, but it required 4 arguments (was fixed by r229159)
* make_symlink doesn't work on OS X

As a quick fix, the r229148 and the r229159 were reverted. Now these errors are fixed.

Summary:
This patch fixes the following tests on OS X:

```
  FAIL: test_with_dsym (TestLaunchWithGlob.LaunchWithGlobTestCase)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 456, in wrapper
      return func(self, *args, **kwargs)
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 21, in test_with_dsym
      self.do_test ()
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 42, in do_test
      self.runCmd("process launch -G true -w %s -- fi*.tx?" % (os.getcwd()))
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 1953, in runCmd
      msg if msg else CMD_MSG(cmd))
  AssertionError: False is not True : Command 'process launch -G true -w /Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob -- fi*.tx?' returns successfully
  Config=x86_64-clang
  ======================================================================
  FAIL: test_with_dwarf (TestLaunchWithGlob.LaunchWithGlobTestCase)
  ----------------------------------------------------------------------
  Traceback (most recent call last):
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 473, in wrapper
      return func(self, *args, **kwargs)
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 28, in test_with_dwarf
      self.do_test ()
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py", line 42, in do_test
      self.runCmd("process launch -G true -w %s -- fi*.tx?" % (os.getcwd()))
    File "/Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/lldbtest.py", line 1953, in runCmd
      msg if msg else CMD_MSG(cmd))
  AssertionError: False is not True : Command 'process launch -G true -w /Users/testuser/build/workspace/LLDB_master_release_OSX/llvm_master/tools/lldb/test/functionalities/launch_with_glob -- fi*.tx?' returns successfully
```

Reviewers: epertoso, emaste, abidh, clayborg, zturner

Reviewed By: clayborg

Subscribers: abidh, lldb-commits, emaste, epertoso, zturner, clayborg

Differential Revision: http://reviews.llvm.org/D7550

llvm-svn: 229517

lldb/scripts/Python/finish-swig-Python-LLDB.sh
lldb/scripts/Python/finishSwigPythonLLDB.py
lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py
lldb/tools/CMakeLists.txt
lldb/tools/argdumper/CMakeLists.txt [new file with mode: 0644]

index 690e882..eb8ec11 100755 (executable)
@@ -167,6 +167,7 @@ else
     fi
 fi
 
+# Make symlink for darwin-debug on Darwin
 if [ ${OS_NAME} = "Darwin" ] && [ $MakefileCalled -ne 0 ]
 then
     # We are being built by CMake on Darwin
@@ -187,6 +188,27 @@ then
     fi
 fi
 
+# Make symlink for argdumper on any platform
+if [ $MakefileCalled -ne 0 ]
+then
+    # We are being built by CMake
+
+    if [ ! -L "${framework_python_dir}/argdumper" ]
+    then
+        if [ $Debug -eq 1 ]
+        then
+            echo "Creating symlink for argdumper"
+        fi
+        cd "${framework_python_dir}"
+        ln -s "../../../../bin/argdumper" argdumper
+    else
+        if [ $Debug -eq 1 ]
+        then
+            echo "${framework_python_dir}/argdumper already exists."
+        fi
+    fi
+fi
+
 create_python_package () {
     package_dir="${framework_python_dir}$1"
     package_files="$2"
index 978b0d6..fe12b28 100644 (file)
@@ -70,8 +70,8 @@ strMsgPyFileLocatedHere = "Python file will be put in '%s'";
 strMsgFrameWkPyExists = "Python output folder '%s' already exists";
 strMsgFrameWkPyMkDir = "Python output folder '%s' will be created";
 strErrMsgCreateFrmWkPyDirFailed = "Unable to create directory '%s' error: %s";
-strMsglldbsoExists = "Symlink '%s' already exists";
-strMsglldbsoMk = "Creating symlink for _lldb.so  (%s -> %s)";
+strMsgSymlinkExists = "Symlink for '%s' already exists";
+strMsgSymlinkMk = "Creating symlink for %s  (%s -> %s)";
 strErrMsgCpLldbpy = "copying lldb to lldb package directory";
 strErrMsgCreatePyPkgMissingSlash = "Parameter 3 fn create_py_pkg() missing slash"; 
 strErrMsgMkLinkExecute = "Command mklink failed: %s";
@@ -218,120 +218,169 @@ def copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs, vstrFrameworkPythonDir, vstrCfg
                strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ];
        
        return (bOk, strMsg);
+       
+#++---------------------------------------------------------------------------
+# Details:     Make the symbolic link on a Windows platform.
+# Args:                vstrSrcFile                             - (R) Source file name.
+#                      vstrTargetFile                  - (R) Destination file name.
+# Returns:     Bool - True = function success, False = failure.
+#                      Str - Error description on task failure.
+# Throws:      None.
+#--
+def make_symlink_windows( vstrSrcPath, vstrTargetPath ):
+       print "Making symlink from %s to %s" % (vstrSrcPath, vstrTargetPath);
+       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_windows()" );
+       bOk = True;
+       strErrMsg = "";
+
+       try:
+               csl = ctypes.windll.kernel32.CreateHardLinkW
+               csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32)
+               csl.restype = ctypes.c_ubyte
+               if csl(vstrTargetPath, vstrSrcPath, 0) == 0:
+                       raise ctypes.WinError()
+       except Exception as e:
+               if e.errno != 17:
+                       bOk = False;
+                       strErrMsg = "WinError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink);
+                       strErrMsg += " Src:'%s' Target:'%s'" % (vstrSrcPath, vstrTargetPath);
+
+       return (bOk, strErrMsg);
 
 #++---------------------------------------------------------------------------
-# Details:     Make the symbolic that the script bridge for Python will need in 
-#                      the Python framework directory. Code for specific to Windows.
+# Details:     Make the symbolic link on a UNIX style platform.
+# Args:                vstrSrcFile                             - (R) Source file name.
+#                      vstrTargetFile                  - (R) Destination file name.
+# Returns:     Bool - True = function success, False = failure.
+#                      Str - Error description on task failure.
+# Throws:      None.
+#--
+def make_symlink_other_platforms( vstrSrcPath, vstrTargetPath ):
+       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" );
+       bOk = True;
+       strErrMsg = "";
+
+       try:
+               os.symlink( vstrSrcPath, vstrTargetPath );
+       except OSError as e:
+               bOk = False;
+               strErrMsg = "OSError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink);
+               strErrMsg += " Src:'%s' Target:'%s'" % (vstrSrcPath, vstrTargetPath);
+       except:
+               bOk = False;
+               strErrMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ];
+
+       return (bOk, strErrMsg);
+
+#++---------------------------------------------------------------------------
+# Details:     Make the symbolic link.
 # Args:                vDictArgs                               - (R) Program input parameters.
 #                      vstrFrameworkPythonDir  - (R) Python framework directory.
-#                      vstrDllName                             - (R) File name for _lldb.dll.
+#                      vstrSrcFile                             - (R) Source file name.
+#                      vstrTargetFile                  - (R) Destination file name.
 # Returns:     Bool - True = function success, False = failure.
 #                      Str - Error description on task failure.
 # Throws:      None.
 #--
-def make_symlink_windows( vDictArgs, vstrFrameworkPythonDir, vstrDllName ):
-       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_windows()" );
+def make_symlink( vDictArgs, vstrFrameworkPythonDir, vstrSrcFile, vstrTargetFile ):
+       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink()" );
        bOk = True;
-       strMsg = "";
-
+       strErrMsg = "";
        bDbg = vDictArgs.has_key( "-d" );
-       strTarget = vstrDllName;
-       # When importing an extension module using a debug version of python, you
-       # write, for example, "import foo", but the interpreter searches for
-       # "foo_d.pyd"
-       if vDictArgs["--buildConfig"].lower() == "debug":
-               strTarget += "_d";
-       strTarget += ".pyd";
-       strDLLPath = "%s\\%s" % (vstrFrameworkPythonDir, strTarget);
-       strTarget = os.path.normcase( strDLLPath );
+       strTarget = "%s/%s" % (vstrFrameworkPythonDir, vstrTargetFile);
+       strTarget = os.path.normcase( strTarget );
        strSrc = "";
 
        os.chdir( vstrFrameworkPythonDir );
        bMakeFileCalled = vDictArgs.has_key( "-m" );
+       eOSType = utilsOsType.determine_os_type();
        if not bMakeFileCalled:
-               strSrc = os.path.normcase( "../../../LLDB" );
+               return (bOk, strErrMsg);
        else:
-               strLibFileExtn = ".dll";
-               strSrc = os.path.normcase( "../../../bin/liblldb%s" % strLibFileExtn );
+               # Resolve vstrSrcFile path relatively the build directory
+               stdBuildDir = "";
+               if eOSType == utilsOsType.EnumOsType.Windows:
+                       # On a Windows platform the vstrFrameworkPythonDir looks like:
+                       # llvm\\build\\Lib\\site-packages\\lldb
+                       strBuildDir = "../../..";
+               else:
+                       # On a UNIX style platform the vstrFrameworkPythonDir looks like:
+                       # llvm/build/lib/python2.7/site-packages/lldb
+                       strBuildDir = "../../../..";
+               strSrc = os.path.normcase( "%s/%s" % (strBuildDir, vstrSrcFile) );
 
-       if os.path.isfile( strTarget ):
+       if eOSType == utilsOsType.EnumOsType.Unknown:
+               bOk = False;
+               strErrMsg = strErrMsgOsTypeUnknown;
+       elif eOSType == utilsOsType.EnumOsType.Windows:
+               if os.path.isfile( strTarget ):
+                       if bDbg:
+                               print strMsgSymlinkExists % vstrTargetFile;
                if bDbg:
-                       print strMsglldbsoExists % strTarget;
-               return (bOk, strMsg);
+                       print strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget);
+               bOk, strErrMsg = make_symlink_windows( strSrc,
+                                                                                          strTarget );
+       else:
+               if os.path.islink( strTarget ):
+                       if bDbg:
+                               print strMsgSymlinkExists % vstrTargetFile;
+               if bDbg:
+                       print strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget);
+               return (bOk, strErrMsg);
+               bOk, strErrMsg = make_symlink_other_platforms( strSrc,
+                                                                                                          strTarget );         
 
-       if bDbg:
-               print strMsglldbsoMk % (os.path.abspath(strSrc), os.path.abspath(strTarget));
-               
-       try:
-               csl = ctypes.windll.kernel32.CreateHardLinkW
-               csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32)
-               csl.restype = ctypes.c_ubyte
-               if csl(strTarget, strSrc, 0) == 0:
-                       raise ctypes.WinError()
-       except Exception as e:
-               bOk = False;
-               strMsg = "WinError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink);
-               strMsg += " Src:'%s' Target:'%s'" % (strSrc, strTarget);
+       return (bOk, strErrMsg);
 
-       return (bOk, strMsg);
-       
 #++---------------------------------------------------------------------------
-# Details:     Make the symbolic link that the script bridge for Python will need in 
-#                      the Python framework directory. Code for all platforms apart from
-#                      Windows.
+# Details:     Make the symbolic that the script bridge for Python will need in 
+#                      the Python framework directory.
 # Args:                vDictArgs                               - (R) Program input parameters.
 #                      vstrFrameworkPythonDir  - (R) Python framework directory.
-#                      vstrSoName                              - (R) File name for _lldb.so.
+#                      vstrLiblldbName                 - (R) File name for _lldb library.
 # Returns:     Bool - True = function success, False = failure.
 #                      Str - Error description on task failure.
 # Throws:      None.
 #--
-def make_symlink_other_platforms( vDictArgs, vstrFrameworkPythonDir, vstrSoPath ):
-       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" );
+def make_symlink_liblldb( vDictArgs, vstrFrameworkPythonDir, vstrLiblldbFileName ):
+       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_liblldb()" );
        bOk = True;
-       strMsg = "";
-       bDbg = vDictArgs.has_key( "-d" );
-       strTarget = vstrSoPath + ".so";
-       strSoPath = "%s/%s" % (vstrFrameworkPythonDir, strTarget);
-       strTarget = os.path.normcase( strSoPath );
+       strErrMsg = "";
+       strTarget = vstrLiblldbFileName;
        strSrc = "";
-                       
-       os.chdir( vstrFrameworkPythonDir );
+
+       eOSType = utilsOsType.determine_os_type();
+       if eOSType == utilsOsType.EnumOsType.Windows:
+               # When importing an extension module using a debug version of python, you
+               # write, for example, "import foo", but the interpreter searches for
+               # "foo_d.pyd"
+               if vDictArgs["--buildConfig"].lower() == "debug":
+                       strTarget += "_d";
+               strTarget += ".pyd";
+       else:
+               strTarget += ".so";
+
        bMakeFileCalled = vDictArgs.has_key( "-m" );
        if not bMakeFileCalled:
-               strSrc = os.path.normcase( "../../../LLDB" );
+               strSrc = "lib/LLDB";
        else:
                strLibFileExtn = "";
-               eOSType = utilsOsType.determine_os_type();
-               if eOSType == utilsOsType.EnumOsType.Linux:
-                       strLibFileExtn = ".so";
-               elif eOSType == utilsOsType.EnumOsType.Darwin:
-                       strLibFileExtn = ".dylib";
-               strSrc = os.path.normcase( "../../../liblldb%s" % strLibFileExtn );
-
-       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);
-       
+               if eOSType == utilsOsType.EnumOsType.Windows:
+                       strLibFileExtn = ".dll";
+                       strSrc = "bin/liblldb%s" % strLibFileExtn;
+               else:
+                       if eOSType == utilsOsType.EnumOsType.Linux:
+                           strLibFileExtn = ".so";
+                       elif eOSType == utilsOsType.EnumOsType.Darwin:
+                           strLibFileExtn = ".dylib";
+                       strSrc = "lib/liblldb%s" % strLibFileExtn;
+
+       bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget );
+
+       return (bOk, strErrMsg);
+
 #++---------------------------------------------------------------------------
-# Details:     Make the symbolic link to the darwin-debug. Code for all platforms
-#           apart from Windows.
+# Details:     Make the symbolic link to the darwin-debug.
 # Args:                vDictArgs                               - (R) Program input parameters.
 #                      vstrFrameworkPythonDir  - (R) Python framework directory.
 #                      vstrDarwinDebugFileName - (R) File name for darwin-debug.
@@ -340,41 +389,54 @@ def make_symlink_other_platforms( vDictArgs, vstrFrameworkPythonDir, vstrSoPath
 # Throws:      None.
 #--
 def make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebugFileName ):
-       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" );
+       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_darwin_debug()" );
        bOk = True;
-       strMsg = "";
-       bDbg = vDictArgs.has_key( "-d" );
-       strTarget = vstrDarwinDebugFileName
-       strDarwinDebugPath = "%s/%s" % (vstrFrameworkPythonDir, strTarget);
-       strTarget = os.path.normcase( strDarwinDebugPath );
+       strErrMsg = "";
+       strTarget = vstrDarwinDebugFileName;
        strSrc = "";
                        
-       os.chdir( vstrFrameworkPythonDir );
        bMakeFileCalled = vDictArgs.has_key( "-m" );
        if not bMakeFileCalled:
-           return (bOk, strMsg);
+           return (bOk, strErrMsg);
        else:
-               strSrc = os.path.normcase( "../../../../bin/lldb-launcher" );
+               strSrc = "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);
+       bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget );
+
+       return (bOk, strErrMsg);
+
+#++---------------------------------------------------------------------------
+# Details:     Make the symbolic link to the argdumper.
+# Args:                vDictArgs                               - (R) Program input parameters.
+#                      vstrFrameworkPythonDir  - (R) Python framework directory.
+#                      vstrArgdumperFileName   - (R) File name for argdumper.
+# Returns:     Bool - True = function success, False = failure.
+#                      Str - Error description on task failure.
+# Throws:      None.
+#--
+def make_symlink_argdumper( vDictArgs, vstrFrameworkPythonDir, vstrArgdumperFileName ):
+       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_argdumper()" );
+       bOk = True;
+       strErrMsg = "";
+       strTarget = vstrArgdumperFileName;
+       strSrc = "";
+
+       eOSType = utilsOsType.determine_os_type();
+       if eOSType == utilsOsType.EnumOsType.Windows:
+               strTarget += ".exe";
+
+       bMakeFileCalled = vDictArgs.has_key( "-m" );
+       if not bMakeFileCalled:
+           return (bOk, strErrMsg);
+       else:
+               strExeFileExtn = "";
+               if eOSType == utilsOsType.EnumOsType.Windows:
+                       strExeFileExtn = ".exe";
+               strSrc = "bin/argdumper%s" % strExeFileExtn;
+
+       bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget );
+
+       return (bOk, strErrMsg);
 
 #++---------------------------------------------------------------------------
 # Details:     Make the symlink that the script bridge for Python will need in 
@@ -385,34 +447,33 @@ def make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebu
 #                      strErrMsg - Error description on task failure.
 # Throws:      None.
 #--
-def make_symlink( vDictArgs, vstrFrameworkPythonDir ):
-       dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink()" );
+def create_symlinks( vDictArgs, vstrFrameworkPythonDir ):
+       dbg = utilsDebug.CDebugFnVerbose( "Python script create_symlinks()" );
        bOk = True;
-       strWkDir = "";
        strErrMsg = "";
        eOSType = utilsOsType.determine_os_type();
 
-    # Make symlink for _lldb
-       strSoFileName = "_lldb";
-       if eOSType == utilsOsType.EnumOsType.Unknown:
-               bOk = False;
-               strErrMsg = strErrMsgOsTypeUnknown;
-       elif eOSType == utilsOsType.EnumOsType.Windows:
-               bOk, strErrMsg = make_symlink_windows( vDictArgs, 
+       # Make symlink for _lldb
+       strLibLldbFileName = "_lldb";
+       if bOk:
+               bOk, strErrMsg = make_symlink_liblldb( vDictArgs,
                                                                                           vstrFrameworkPythonDir,
-                                                                                          strSoFileName );
-       else:
-               bOk, strErrMsg = make_symlink_other_platforms( vDictArgs, 
-                                                                                                          vstrFrameworkPythonDir,
-                                                                                                          strSoFileName );             
+                                                                                          strLibLldbFileName );
 
-    # Make symlink for darwin-debug
+       # Make symlink for darwin-debug on Darwin
        strDarwinDebugFileName = "darwin-debug"
        if bOk and eOSType == utilsOsType.EnumOsType.Darwin:
                bOk, strErrMsg = make_symlink_darwin_debug( vDictArgs,
                                                                                                    vstrFrameworkPythonDir,
                                                                                                    strDarwinDebugFileName );
 
+       # Make symlink for argdumper
+       strArgdumperFileName = "argdumper"
+       if bOk:
+               bOk, strErrMsg = make_symlink_argdumper( vDictArgs,
+                                                                                                vstrFrameworkPythonDir,
+                                                                                                strArgdumperFileName );
+
        return (bOk, strErrMsg);
 
 #++---------------------------------------------------------------------------
@@ -631,7 +692,7 @@ def main( vDictArgs ):
                bOk, strMsg = find_or_create_python_dir( vDictArgs, strFrameworkPythonDir );
        
        if bOk:
-               bOk, strMsg = make_symlink( vDictArgs, strFrameworkPythonDir );
+               bOk, strMsg = create_symlinks( vDictArgs, strFrameworkPythonDir );
        
        if bOk:
                bOk, strMsg = copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs,
index 8d61e20..cabe399 100644 (file)
@@ -21,7 +21,6 @@ class LaunchWithGlobTestCase(TestBase):
         self.do_test ()
 
 
-    @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin")
     @dwarf_test
     def test_with_dwarf (self):
         self.buildDwarf()
index bb3ce2d..e56cc9b 100644 (file)
@@ -2,6 +2,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
   add_subdirectory(darwin-debug)
   add_subdirectory(debugserver)
 endif()
+  add_subdirectory(argdumper)
   add_subdirectory(driver)
 if (NOT __ANDROID_NDK__)
   add_subdirectory(lldb-mi)
diff --git a/lldb/tools/argdumper/CMakeLists.txt b/lldb/tools/argdumper/CMakeLists.txt
new file mode 100644 (file)
index 0000000..d3ca654
--- /dev/null
@@ -0,0 +1,8 @@
+add_lldb_executable(argdumper
+  argdumper.cpp
+  )
+
+target_link_libraries(argdumper liblldb)
+
+install(TARGETS argdumper
+  RUNTIME DESTINATION bin)