Commit Graph

13 Commits

Author SHA1 Message Date
Vassil Vassilev
272905eced Implement clang plugin support.
Clang allows third party shared libraries to provide user-defined
extensions. For example, a custom libTemplateInstantiation.so can
visualize all template instantiation chains in clang. To enable it
one needs to pass a set of options such as -fplugin.

Cling should be able to inherently work with clang plugins. However,
cling still does not make full use of the clang driver where the plugin
setup is handled.

This patch enables plugins in cling and extends them in some aspects.
In particular, cling allows loading of plugins from shared libraries
but also if they are linked to the same library where cling is. This is
very useful in cases where cling runs itself in a shared library (eg
libCling). Users of libCling (such as ROOT) prefer to keep all llvm and
clang related symbols local to avoid symbol clashes if there is another
version of clang and llvm linked against a package. This can be done by
dlopen-ing libCling with RTLD_LOCAL visibility mode. Then the only way
for clang plugins to work in this scenario is to be linked to libCling.

Patch by Aleksandr Efremov and me.
2018-07-28 13:17:44 +02:00
Vassil Vassilev
bfb4168dc9 Implement basic plugin support in cling.
We rely on clang's plugin infrastructure for loading, argument processing
and unloading plugins.

This patch teaches cling to work with clang plugins such as clad -- a
clang plugin implementing automatic differentiation facilities.
2018-02-20 10:59:12 +01:00
Axel Naumann
cb73393548 Build cling-demo as part of cling. 2017-03-20 15:44:07 +01:00
Axel Naumann
2e08275916 Build libcling.so based on OBJECT "library" in CMake. 2016-07-19 10:59:32 +02:00
Pere Mato
547d42919d Fix for ROOT-8267 - ROOT 6 master fails to compile if clang present in system include paths, picks up system's clang includes! 2016-07-13 14:59:39 +02:00
Axel Naumann
dec6519991 Add Jupyter lib. 2015-12-16 20:29:22 +01:00
Pere Mato
20e2f24106 Fix for ROOT-7184 - CMake config issue when enabling cling tests 2015-03-13 18:31:50 +01:00
manasij7479
f9f829c48e autoloading visitor 2014-06-10 15:24:01 +02:00
manasij7479
ae5a3ce221 fwd tool: generates forward declarations from given file 2014-06-10 15:24:01 +02:00
Axel Naumann
8aedeca69c Refer to license in CMake files. 2014-01-07 12:02:58 +01:00
Vassil Vassilev
d95fd05850 From Peter Kummel: prepend current cmake dir. 2013-10-20 23:00:59 +02:00
Pere Mato Vila
3d33fb56c2 Avoid building cling 'UserInterface' library and 'cling' executable when bulding ROOT with CMake. Fixed the order of libraries in link statement.. 2013-06-05 16:26:50 +02:00
Axel Naumann
05ba8a3a07 Move cling from cint/ to interpreter/ (Will add a "we have moved" readme to cint/cling.)
git-svn-id: http://root.cern.ch/svn/root/trunk@45844 27541ba8-7e3a-0410-8455-c3a389f83636
2012-09-05 09:37:39 +00:00