Home | History | Annotate | Line # | Download | only in libcxxrt
README revision 1.1
      1  1.1  joerg libcxxabi
      2  1.1  joerg =========
      3  1.1  joerg 
      4  1.1  joerg This library implements the Code Sourcery C++ ABI, as documented here:
      5  1.1  joerg 
      6  1.1  joerg http://www.codesourcery.com/public/cxx-abi/abi.html
      7  1.1  joerg 
      8  1.1  joerg It is intended to sit below an STL implementation, and provide features required by the compiler for implementation of the C++ language.
      9  1.1  joerg 
     10  1.1  joerg Current Status
     11  1.1  joerg --------------
     12  1.1  joerg 
     13  1.1  joerg At present, the library implements the following parts of the ABI specification:
     14  1.1  joerg 
     15  1.1  joerg - RTTI classes and support for the dynamic_cast<> operator.
     16  1.1  joerg - Exception handling.
     17  1.1  joerg - Thread-safe initializers.
     18  1.1  joerg 
     19  1.1  joerg Exception handling requires the assistance of a stack-unwinding library
     20  1.1  joerg implementing the low-level parts of the ABI.  Either libgcc_s or libunwind
     21  1.1  joerg should work for this purpose.
     22  1.1  joerg 
     23  1.1  joerg The library depends on various libc features, but does not depend on any C++
     24  1.1  joerg features not implemented purely in the compiler or in the library itself.
     25  1.1  joerg 
     26  1.1  joerg Supported Platforms
     27  1.1  joerg -------------------
     28  1.1  joerg 
     29  1.1  joerg This code was initially developed on FreeBSD/x86, and has also been tested on FreeBSD/x86-64.  It should work on other platforms that use the Code Sourcery ABI, for example Itanium, however this is untested.
     30  1.1  joerg 
     31  1.1  joerg This library also supports the ARM EH ABI.
     32  1.1  joerg 
     33  1.1  joerg Installation
     34  1.1  joerg ------------
     35  1.1  joerg 
     36  1.1  joerg The default build system does not perform any installation.  It is expected that this will be done by at a higher level.  The exact installation steps depend on how you plan on deploying libcxxrt.
     37  1.1  joerg 
     38  1.1  joerg There are three files that you may consider installing:
     39  1.1  joerg 
     40  1.1  joerg - cxxabi.h (and unwind.h and either unwind-arm.h or unwind-itanium.h)
     41  1.1  joerg - libcxxrt.a
     42  1.1  joerg - libcxxrt.so
     43  1.1  joerg 
     44  1.1  joerg The first describes the contract between this library and the compiler / STL implementation (lib[std]{cxx,c++}).  Its contents should be considered semi-private, as it is probably not a good idea to encourage any code above the STL implementation to depend on it.  Doing so will introduce portability issues.  You may install this file but I recommend simply copying or linking it into your STL implementation's build directory.
     45  1.1  joerg 
     46  1.1  joerg In general, I recommend against installing both the .a and the .so file.  For static linking, the .a file should be linked against the static and dynamic versions of your STL implementation.  Statically linking libcxxrt into your STL implementation means that users who dynamically link against the STL implementation can have libcxxrt upgraded automatically when you ship a new version of your STL implementation.
     47  1.1  joerg 
     48  1.1  joerg The other option, installing the .so, is recommended for situations where you have two or more STL implementations and wish to be able to link against both (e.g. where an application links one library using libstdc++ and another using libc++).  To support this case, you should link both STL implementations against libcxxrt.so.  
     49  1.1  joerg 
     50  1.1  joerg Supporting all of these options in the CMake build system is not practical - the amount of effort required to select the one that you want would be more than the effort required to perform the installation from an external script or build system.
     51