All Projects → rizsotto → Constantine

rizsotto / Constantine

Licence: gpl-3.0
A plugin for Clang compiler

Projects that are alternatives of or similar to Constantine

Easyclangcomplete
💥 Robust C/C++ code completion for Sublime Text 3
Stars: ✭ 537 (+503.37%)
Mutual labels:  clang, plugin
Fork Ts Checker Webpack Plugin
Webpack plugin that runs typescript type checker on a separate process.
Stars: ✭ 1,343 (+1408.99%)
Mutual labels:  plugin, checker
Gajim Omemo
Gajim plugin for OMEMO Multi-End Message and Object Encryption
Stars: ✭ 84 (-5.62%)
Mutual labels:  plugin
Tingle
⚡ 2kB vanilla modal plugin, no dependencies and easy-to-use
Stars: ✭ 1,287 (+1346.07%)
Mutual labels:  plugin
Androidattacher
IDA debugging plugin for android armv7 so
Stars: ✭ 87 (-2.25%)
Mutual labels:  plugin
Speed tools
敏捷开发工具包
Stars: ✭ 85 (-4.49%)
Mutual labels:  plugin
Jetpack
Security, performance, marketing, and design tools — Jetpack is made by the WordPress experts to make WP sites safer and faster, and help you grow your traffic.
Stars: ✭ 1,283 (+1341.57%)
Mutual labels:  plugin
Llvm Vs2017 Integration
MSBuild 15.0 Toolset integration for multiple LLVM (From v5 to v8)
Stars: ✭ 84 (-5.62%)
Mutual labels:  clang
Facebookclientplugin
Facebook Client Plugin for Xamarin iOS and Android
Stars: ✭ 89 (+0%)
Mutual labels:  plugin
Unrealclr
Unreal Engine 4 .NET 5 integration
Stars: ✭ 1,275 (+1332.58%)
Mutual labels:  plugin
Pawn.raknet
🛡 Plugin for SA:MP server that allows you to analyze RakNet traffic
Stars: ✭ 89 (+0%)
Mutual labels:  plugin
Fishreduxtemplateforas
Template code generator plugin of Fish Redux for Android Studio
Stars: ✭ 87 (-2.25%)
Mutual labels:  plugin
Flutter inappwebview
A Flutter plugin that allows you to add an inline webview, to use a headless webview, and to open an in-app browser window.
Stars: ✭ 1,259 (+1314.61%)
Mutual labels:  plugin
Uinavigation
A UE4 plugin designed to help easily make UMG menus navigable by mouse, keyboard and gamepad
Stars: ✭ 88 (-1.12%)
Mutual labels:  plugin
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+1313.48%)
Mutual labels:  plugin
Vueno
Vue Conversion Plugin
Stars: ✭ 89 (+0%)
Mutual labels:  plugin
Xmake Vscode
🍩 A XMake integration in Visual Studio Code
Stars: ✭ 84 (-5.62%)
Mutual labels:  plugin
Admob Unity Plugin
👾 An extension for Unity3d to place AdMob banners in your Android games.
Stars: ✭ 86 (-3.37%)
Mutual labels:  plugin
Gradle Util Plugins
Fix for windows gradle long classpath issue. Fixes JavaExec tasks that error out with message "CreateProcess error=206, The filename or extension is too long"
Stars: ✭ 87 (-2.25%)
Mutual labels:  plugin
Bitsofbytes
Code and projects from my blog posts.
Stars: ✭ 89 (+0%)
Mutual labels:  plugin

Constantine

Build Status Join the chat at https://gitter.im/rizsotto/Constantine

Constantine is a toy project to learn how to write Clang plugin.

Implements pseudo const analysis. Generates warnings about variables, which were declared without const qualifier.

How to build

Constantine was tested on Linux only. For Unbuntu/Debian build, you can take a look at the github workflow file.

Prerequisites

  1. C++ compiler to compile the sources.

  2. cmake to configure the build process.

  3. make to run the build. Makefiles generated by cmake.

  4. Install LLVM/Clang. Either you do install from sources or package for your distribution, the Clang version shall match with Constantine version. Make sure that llvm-config and clang executables are in the PATH environment.

  5. Install Lit. This is optional, do only if you want to run the tests! Lit is the LLVM Integrated Tester. If you installed Clang from sources, you shall have it automaticaly. If your package manager does not provide it, you can simply install from PyPI because it is written in python.

Build Constantine

It could be the best to build it in a separate build directory.

cmake $CONSTANTINE_SOURCE_DIR
make all
make install  # to install
make check    # to run tests
make package  # to create tgz, rpm, deb packages

You can configure the build process with passing arguments to cmake.

How to use

To run the plugin against your sources you need to tune the build script of your project. Sure you need to replace the compiler to Clang. To hook the plugin into the Clang driver, you need to pass extra flags which are Clang specific, therefore those are 'escaped' like this:

CC="clang"
CXX="clang++"
CXX_FLAGS+=" -Xclang -load -Xclang $CONSTANTINE_LIB_PATH/libconstantine.so"
CXX_FLAGS+=" -Xclang -add-plugin -Xclang constantine"

Problem reports

If you find a bug in this documentation or elsewhere in the program or would like to propose an improvement, please use the project's github issue tracker. Please describing the bug and where you found it. If you have a suggestion how to fix it, include that as well. Patches are also welcome.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].