Jerome Beclin ead0f8d091 Implement cling (clang) internal state verification.
There are cases where cling needs to 'rollback' its state to a previous one.
Examples for that are cling's error recovery and code unloading. This can become
easily tricky to implement. One step reducing the complexity is the verification
of the 'interesting' data structures.

Implement .storeState and .compareState commands, which dump the internal compiler
data structures like AST (implemented), included files (in progress) and lookup
tables (unimplemented yet). The information is dumped into a file and then that
file is diff-ed to the one taken with .compareState. If they were identical all
files are deleted otherwise a .diff file with the differences remains for debug.
2013-08-21 14:29:57 +02:00
2013-08-07 17:58:57 +02:00
2013-05-03 14:14:17 +02:00
2012-12-13 17:22:52 +00:00

          _  _  _      _         _  _  _   _           _      _  _  _
       _ (_)(_)(_) _  (_)       (_)(_)(_) (_) _       (_)  _ (_)(_)(_) _
      (_)         (_) (_)          (_)    (_)(_)_     (_) (_)         (_)
      (_)             (_)          (_)    (_)  (_)_   (_) (_)    _  _  _
      (_)             (_)          (_)    (_)    (_)_ (_) (_)   (_)(_)(_)
      (_)          _  (_)          (_)    (_)      (_)(_) (_)         (_)
      (_) _  _  _ (_) (_) _  _   _ (_) _  (_)         (_) (_) _  _  _ (_)
         (_)(_)(_)    (_)(_)(_) (_)(_)(_) (_)         (_)    (_)(_)(_)(_)

--------------------------------------------------------------------------------

1. I N S T A L L A T I O N   I N S T R U C T I O N S

1.1 Dependencies

   CLING source depends on the LLVM [1] and CLANG [2] headers and libraries.
You will also need CMake [3] >= 2.6.1 or GNU Make to build all of those
packages and subversion [4] to get the source code.

   [1] http://llvm.org
   [2] http://clang.llvm.org
   [3] http://cmake.org
   [4] http://subversion.tigris.org/

1.2 Building

   To build LLVM and CLANG you must:

   * Check out the sources:

     mkdir src
     cd src
     svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
     cd llvm/tools
     svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
     svn co http://root.cern.ch/svn/root/trunk/interpreter/cling cling
     cd ..

   * Apply some patches

     cat tools/cling/patches/* | patch -p0

   * Configure, build and install them, either using CMake:

     cd ..
     mkdir build
     cd build
     cmake -DCMAKE_INSTALL_PREFIX=/some/install/dir \
           -DLLVM_TARGETS_TO_BUILD=CBackend\;CppBackend\;X86 \
           -DCMAKE_BUILD_TYPE=Debug \
           -DCMAKE_CXX_COMPILER=`which c++` \
           -DCMAKE_C_COMPILER=`which gcc` \
           ../llvm
     make
     make install

     or GNU Make (see ../src/configure --help for all options):

     cd ..
     mkdir build
     cd build
     ../llvm/configure --prefix=/some/install/dir
     make
     make install

2. U S A G E

   To interpret a C file type: "./cling test.c". To invoke cling in the
interactive mode type "cling" without file name.  Use ".L filename" to 
load libraries or C++ files.  Type C++ code at the prompt to interpret it.
Description
Cling - The Interactive C++ Interpreter
Readme 21 MiB
Languages
C++ 71.5%
C 16.4%
Python 5.6%
HTML 3.3%
CMake 2.7%
Other 0.5%