1 # Makefile template for ROOT dictionary generation
3 # This is a common include file which handles generation of the ROOT dictionary
5 # - the dict.cxx (variable DICTCPP)
6 # - the dict.h (variable DICTCPP:.cxx=.h)
7 # - optional: the linkdef.h (variable MODULE postfixed by -LinkDef.h)
9 # If the MODULE_DHDR variable is set in the package definition lib<module>.pkg
10 # to a custom LinkDef file, the automatic generation of the LinkDef header is
11 # disabled. Instead, the specified one is used.
14 # 1. set variable CLASS_HDRS to the class header files
15 # 2. set DICTCPP variable to dictionary c++ file name
16 # e.g. <module>-DICT.cxx (<module> replaced by your module name)
17 # 3. add the source file name to the list of generated sources
18 # nodist_lib<module>_la_SOURCES = $(DICTCPP)
19 # 4. add additional include files which are necessary for the compilation
20 # of the dictionary files and which are not part of the CLASS_HDRS to
21 # the DICTINCLUDE variable
22 # 5. include this file from your Makefile(.am)
23 # e.g. include ../make.dict
25 # Author: Matthias.Richter@ift.uib.no
27 DICTAUTODEF = $(MODULE)-LinkDef.h
28 DICTDEF = $(shell if test "x$(MODULE_DHDR)" = "x"; then echo $(DICTAUTODEF); else echo $(MODULE_DHDR); fi)
29 DICTFILES = $(DICTCPP) $(DICTCPP:.cxx=.h) $(DICTAUTODEF)
30 DICTHEADERS = $(CLASS_HDRS)
32 CLEANFILES += $(DICTFILES)
34 EXTRA_DIST += $(MODULE_DHDR)
36 # the rootcint buffer for macros is limited to 1024 characters
37 # we have to filter out some of the defines
38 DEFFILTER = -DPACKAGE* -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
40 $(DICTCPP:.cxx=.h): $(DICTCPP)
41 if test $@ ; then : ; else rm -f $< ; $(MAKE) $(MAKEFLAGS) $< ; fi
43 $(DICTCPP): $(DICTHEADERS:%=$(srcdir)/%) $(DICTDEF)
44 if [ -x $(ROOTCINT) ]; then $(ROOTCINT) -f $@ -c $(CPPFLAGS) $(AM_CPPFLAGS) \
45 `for i in $(DEFS);do case $$i in $(foreach def, $(DEFFILTER), $(def) |) -DVERSION*);; *) echo -n " $$i";; esac; done` \
46 $(foreach i, $(DICTINCLUDE), $(i)) \
49 $(DICTAUTODEF): Makefile.am $(PKGDEF)
50 @echo '//automatically generated ROOT DICT definition' > $@
51 @echo '//!!! DO NOT EDIT THIS FILE !!!' >> $@
52 @echo '//add further class definitions to the CLASS_HDRS variable in Makefile.am' >> $@
53 @echo '#ifdef __CINT__' >> $@
54 @echo '#pragma link off all globals;' >> $@
55 @echo '#pragma link off all classes;' >> $@
56 @echo '#pragma link off all functions;' >> $@
57 @$(foreach i, $(DICTHEADERS:.h=), \
58 echo "#pragma link C++ class "`echo $(i)| sed -e 's|.*/||'`"+;" >> $@ ;)