[libvoikko] Namespace collisions in HFST and Lttoolbox
Harri Pitkänen
hatapitk at iki.fi
Fri Mar 12 19:28:33 EET 2010
I was trying to build libvoikko with --enable-hfst --enable-lttoolbox and ran
into multiple problems related to namespace collisions from these packages.
First there is a problem specific to HFST only: When configured using pkg-
config, -I/include/hfst2 is added to CFLAGS. This breaks things because this
directory contains file "string.h" which now gets included in place of the
standard C header with the same name. I suppose that the HFST file should be
included as <hfst2/string.h> and adding the directory to include path is
unnecessary. The small patch at the end of this message fixes the problem.
Another problem is that both HFST and Lttoolbox introduce some classes in the
default namespace. Since the libraries serve similar purposes it is not a
surprise that some of the classes have exactly same names. Here are some
examples, there might be others too:
/usr/include/lttoolbox-3.1/lttoolbox/alphabet.h:35: error: redefinition of
‘class Alphabet’
/home/harri/apps/include/hfst2/sfst/alphabet.h:220: error: previous definition
of ‘class Alphabet’
/usr/include/lttoolbox-3.1/lttoolbox/node.h:107: error: redefinition of ‘class
Node’
/home/harri/apps/include/hfst2/sfst/fst.h:375: error: previous definition of
‘class Node’
/usr/include/lttoolbox-3.1/lttoolbox/state.h:36: error: redefinition of ‘union
State’
/home/harri/apps/include/hfst2/hfst.h:12: error: previous definition of ‘union
State’
For now it is not possible to enable both HFST and Lttoolbox backends
simultaneously in libvoikko due to these collisions.
I have CCd hfst-bugs but have not yet reported this to Apertium bug tracker.
I'll do that later unless someone here wants to take care of this issue for
me.
Harri
Index: hfst/hfst.pc.in
===================================================================
--- hfst/hfst.pc.in (revision 275)
+++ hfst/hfst.pc.in (working copy)
@@ -7,4 +7,4 @@
Description: Finite-state transducer library bridge for multiple FLOSS
packages
Version: @LIBHFST_VERSION@
Libs: -L${libdir} -l at LIBHFST_NAME@ @LIBS@
-Cflags: -I${includedir}/@LIBHFST_NAME@@LIBHFST_MAJOR@
+Cflags: -I${includedir}
More information about the Libvoikko
mailing list