Skip to main content

Python bindings for LLVM

Project description

Home page

http://www.llvmpy.org

Versions

This package has been tested with LLVM 3.3, Python 2.6, 2.7, 3.3 and 3.4. Other Python versions may work.

Quickstart

  1. Get and extract LLVM 3.3 source tarball from llvm.org. Then, cd into the extracted directory.

  2. Run ./configure --enable-optimized --prefix=LLVM_INSTALL_PATH.

    Note: Without the --enable-optimized flag, debug build will be selected. Unless you are developing LLVM or llvmpy, it is recommended that the flag is used to reduce build time and binary size.

    Note: Use prefix to select the installation path. It is recommended to separate your custom build from the default system package. Please replace LLVM_INSTALL_PATH with your own path.

  3. Run REQUIRES_RTTI=1 make install to build and install.

    Note: With LLVM 3.3, the default build configuration has C++ RTTI disabled. However, llvmpy requires RTTI.

    Note: Use make -j2 install to enable concurrent build. Replace 2 with the actual number of processor you have.

  4. Get llvm-py and install it:

    $ git clone https://github.com/llvmpy/llvmpy.git
    $ cd llvmpy
    $ LLVM_CONFIG_PATH=LLVM_INSTALL_PATH/bin/llvm-config python setup.py install

    Note: Some OS has a default python that may install to system locations thus requiring root permission. In that case, use:

    $ LLVM_CONFIG_PATH=LLVM_INSTALL_PATH/bin/llvm-config python setup.py install --user

    Run the tests:

    $ python -c "import llvm; llvm.test()"
  5. See documentation at ‘http://www.llvmpy.org’ and examples under ‘test’.

Common Build Problems

  1. If llvmpy cannot be imported due to “undefined symbol: _ZTIN4llvm24PassRegistrationListenerE”, it is because RTTI is not enabled when building LLVM. “_ZTIN4llvm24PassRegistrationListenerE” is the typeinfo of PassRegistrationListener class.

  2. LLVM3.3 ssize_t mismatch on 64-bit Windows. Get patch from http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130701/180049.html

  3. OSX 10.9 Mavericks uses libc++ by default but Anaconda distributes LLVM binaries link with the old libstdc++. The two binaries are incompatible but there are no compile/link time warnings. The resulting binaries may generate segmentation fault at runtime (probably due to ABI mismatch). The Fix: Use the following c++ flags: -std=libstdc++ -mmacosx-version-min=10.6.

LICENSE

llvmpy is distributed under the new BSD license, which is similar to the LLVM license itself. See the file called LICENSE for the full license text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llvmpy-0.12.7-9-g60b512d.tar.gz (1.1 MB view details)

Uploaded Source

File details

Details for the file llvmpy-0.12.7-9-g60b512d.tar.gz.

File metadata

File hashes

Hashes for llvmpy-0.12.7-9-g60b512d.tar.gz
Algorithm Hash digest
SHA256 9b8a42c49bb104d91cef33f041497bd2dd0db99b27f5cab944faa7752d74b370
MD5 74c033ff10d2f8fcc07fb1626aa9fc57
BLAKE2b-256 5523e523382a8ca3e076c4af59201f0eb29cfadeb194c02d8365c9f4b5b2e897

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page