Hi Rene,
thanks for the feedback on the CWS, I hadn't seen the build problems
with the internal graphite module on Ubuntu Intrepid, because I didn't
have system graphite installed. Please see comments below on the
specific errors.
Rene Engelhard wrote:
I can't build cws graphite01 completely with either internal or external
silgraphite:
with internal, the graphite build itself fails with:
mkdir .libs
g++ -I. -I./unxlngppc.pro/inc/so_graphite -I../inc -I./inc/pch -I./inc
-I./unx/inc -I./unxlngppc.pro/inc -I.
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/stl
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/external
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/unxlngppc/inc
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/inc
-I/home/rene/OpenOffice.org/cws/graphite01/res
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/stl
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/inc/Xp31
-INO_JAVA_HOME/include -INO_JAVA_HOME/include/linux
-INO_JAVA_HOME/include/native_threads/include -I/usr/include
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/offuh
-I. -I./res -I. -fsigned-char -pipe -frtti -Wno-ctor-dtor-privacy -DLINUX -DUNX
-DVCL -DGCC -DC300 -DPOWERPC -DCVER=C300 -DNPTL -DGLIBC=2 -D_PTHREADS
-D_REENTRAN
T -DNEW_SOLAR -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=400 -DPOWERPC -DPPC
-DHAVE_GCC_VISIBILITY_FEATURE -D__DMAKE -DUNIX -DCPPU_ENV=gcc3
-DGXX_INCLUDE_PATH=/usr/include/c++/4.3 -DSUPD=300 -DPRODUCT -DNDEBUG
-DPRODUCT_FULL -DOSL_DEBUG_LEVEL=0 -DOPTIMIZE -DCUI -I.
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/stl
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/external
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/unxlngppc/inc
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/inc
-I/home/rene/OpenOffice.org/cws/graphite01/res
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/stl
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/inc/Xp31
-INO_JAVA_HOME/include -INO_JAVA_HOME/include/linux
-INO_JAVA_HOME/include/native_threads/include -I/usr/include
-D_FILE_OFFSET_BITS=64 -fPIC -DNDEBUG -DTRACING -O3 -DNDEBUG -Wl,-Bdynamic -o
profile-gr
aphite GrUtfTextSrc.o ProfileHarness.o -L../lib -L/home/rene/OpenOffice.org/cws/graphite01/solenv/unxlngppc/lib -L/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/lib -LNO_JAVA_HOME/lib -LNO_JAVA_HOME/jre/bin -LNO_JAVA_HOME/jre/bin/classic -L/usr/lib -ldl -lpthread -lm -lstlport_gcc -lstdc++ -L/home/rene/OpenOffice.org/cws/graphite01/graphite/unxlngppc.pro/misc/build/silgraphite-2.3/engine/src /usr/lib/libgraphite.so
ProfileHarness.o: In function `runGraphite(Parameters)':
ProfileHarness.cpp:(.text+0xc68): undefined reference to
`gr3ooo::FileFont::FileFont(_IO_FILE*, float, unsigned int, unsigned int)'
ProfileHarness.cpp:(.text+0xcd4): undefined reference to
`gr3ooo::FileFont::fontHasGraphiteTables()'
ProfileHarness.cpp:(.text+0xd98): undefined reference to
`gr3ooo::RangeSegment::RangeSegment(gr3ooo::Font*, gr3ooo::ITextSource*,
gr3ooo::LayoutEnvironment*, unsigned int, unsigned int, gr3ooo::Segment*)'
ProfileHarness.cpp:(.text+0xda4): undefined reference to
`gr3ooo::Segment::startCharacter()'
ProfileHarness.cpp:(.text+0xdb0): undefined reference to
`gr3ooo::Segment::stopCharacter()'
ProfileHarness.cpp:(.text+0x11d4): undefined reference to
`gr3ooo::LineFillSegment::LineFillSegment(gr3ooo::Font*, gr3ooo::ITextSource*,
gr3ooo::LayoutEnvironment*, unsigned int, unsigned int, float, bool)'
ProfileHarness.cpp:(.text+0x11e0): undefined reference to
`gr3ooo::Segment::startCharacter()'
ProfileHarness.cpp:(.text+0x11ec): undefined reference to
`gr3ooo::Segment::stopCharacter()'
collect2: ld returned 1 exit status
make[2]: *** [profile-graphite] Error 1
make[2]: Leaving directory
`/home/rene/OpenOffice.org/cws/graphite01/graphite/unxlngppc.pro/misc/build/silgraphite-2.3/engine/test/ProfileHarness'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory
`/home/rene/OpenOffice.org/cws/graphite01/graphite/unxlngppc.pro/misc/build/silgraphite-2.3/engine/test'
make: *** [all-recursive] Error 1
dmake: Error code 2, while making
'./unxlngppc.pro/misc/build/so_built_so_graphite'
ProfileHarness.cpp should be picking up GrClient.h from the patched OOo
version of graphite, which will in turn get GrCommon.h with the #define
gr gr3ooo patch. It seems to be getting confused about which library to
use at link time and was picking up the system version when I tried with
system graphite installed, but internal graphite selected. I've got it
to work for me by using a more select choice of LDFLAGS in the makefile.mk
--- makefile.mk (revision 265518)
+++ makefile.mk (revision 265520)
@@ -103,9 +103,8 @@
.ENDIF
EXTRA_GR_CXX_FLAGS=-fPIC
-CONFIGURE_ACTION=bash -c 'autoreconf -i -f; CXXFLAGS="$(INCLUDE)
$(CFLAGSCXX) $(CFLAGSCOBJ) $(CDEFS) $(CDEFSOBJ) $(SOLARINC) $(SOLARDEF)
$(LFS_CFLAGS) $(EXTRA_GR_CXX_FLAGS)" LDFLAGS="$(SOLARLIB) $(STDLIB)"
./configure $(CONFIGURE_FLAGS)'
-#CONFIGURE_ACTION=bash -c 'autoreconf -i -f; CXXFLAGS="$(SOLARINC)
$(SOLARDEF) $(LFS_CFLAGS)" LDFLAGS="$(SOLARLIB) $(STDLIB)" ./configure
$(CONFIGURE_FLAGS)'
-#CONFIGURE_ACTION+=CXXFLAGS="$(INCLUDE) $(CFLAGSCXX) $(CFLAGSCOBJ)
$(CDEFS) $(CDEFSOBJ) $(SOLARINC) $(SOLARDEF) $(LFS_CFLAGS)"
LDFLAGS="$(SOLARLIB) $(STDLIB)" ./configure
+# don't use SOLARLIB for LDFLAGS because it pulls in system graphite so
build will fail
+CONFIGURE_ACTION=bash -c 'autoreconf -i -f && CXXFLAGS="$(INCLUDE)
$(CFLAGSCXX) $(CFLAGSCOBJ) $(CDEFS) $(CDEFSOBJ) $(SOLARINC)
$(LFS_CFLAGS) $(EXTRA_GR_CXX_FLAGS)"
LDFLAGS="-L$(SOLARVERSION)/$(INPATH)/lib" ./configure $(CONFIGURE_FLAGS)'
.ENDIF
BUILD_DIR=$(CONFIGURE_DIR)
If there is a neater way of doing this, then feel free to change it.
The namespace redefine is necessary because OOo can be built with
STLPort which is binary incompatible with the system STL. The graphite
library uses STL in the public interface and graphite may be linked in
through pango and pango-graphite at the same time as the internal OOo
graphite causing a symbol clash. Hence, if you have both system and OOo
graphite installed OOo will crash unless there is the namespace change.
It could also crash if the OOo graphite and the system graphite are at
different versions even with the same STL version.
with system-graphite it breaks in vcl:
Making: ../../unxlngppc.pro/slo/graphite_layout.obj
g++ -fsigned-char -fmessage-length=0 -c -Os -fno-strict-aliasing
-fvisibility=hidden -I/usr/include/freetype2 -DUSE_FT_EMBOLDEN
-DENABLE_GRAPHITE -I. -I../../unxlngppc.pro/inc/glyphs -I../inc
-I../../inc/pch -I../../inc -I../../unx/inc -I../../unxlngppc.pro/inc -I.
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/stl
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/external
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/unxlngppc/inc
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/inc
-I/home/rene/OpenOffice.org/cws/graphite01/res
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/stl
-I/home/rene/OpenOffice.org/cws/graphite01/solenv/inc/Xp31
-INO_JAVA_HOME/include -INO_JAVA_HOME/include/linux
-INO_JAVA_HOME/include/native_threads/include -I/usr/include
-I/home/rene/OpenOffice.org/cws/graphite01/solver/300/unxlngppc.pro/inc/off
uh -I. -I../../res -I. -fsigned-char -pipe -frtti -Wno-ctor-dtor-privacy
-fPIC -DLINUX -DUNX -DVCL -DGCC -DC300 -DPOWERPC -DCVER=C300 -DNPTL -DGLIBC=2
-D_PTHREADS -D_REENTRANT -DNEW_SOLAR -D_USE_NAMESPACE=1 -DSTLPORT_VERSION=400
-DPOWERPC -DPPC -DHAVE_GCC_VISIBILITY_FEATURE -D__DMAKE -DUNIX -DCPPU_ENV=gcc3
-DGXX_INCLUDE_PATH=/usr/include/c++/4.3 -DSUPD=300 -DPRODUCT -DNDEBUG
-DPRODUCT_FULL -DOSL_DEBUG_LEVEL=0 -DOPTIMIZE -DCUI -DUSE_BUILTIN_RASTERIZER
-DVCL_DLLIMPLEMENTATION -DSHAREDLIB -D_DLL_ -fexceptions
-fno-enforce-eh-specs -DEXCEPTIONS_ON -o
../../unxlngppc.pro/slo/graphite_layout.o
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:544:
error: 'gr3ooo' has not been declared
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:544:
error: ISO C++ forbids declaration of 'Font' with no type
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:544:
error: 'Font' declared as a 'virtual' field
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:544:
error: expected ';' before '*' token
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:547:
error: 'getTable' declared as a 'virtual' field
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:547:
error: expected ';' before '(' token
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:549:
error: expected `;' before 'virtual'
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx: In
member function 'gr::Segment* GraphiteLayout::CreateSegment(ImplLayoutArgs&,
GrSegRecord**)':
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:611:
error: cannot declare variable 'hasher' to be of abstract type 'GrFontHasher'
/home/rene/OpenOffice.org/cws/graphite01/vcl/source/glyphs/graphite_layout.cxx:535:
note: because the following virtual functions are pure within 'GrFontHasher':
/usr/include/graphite/Font.h:226: note: virtual gr::Font*
gr::Font::copyThis()
/usr/include/graphite/Font.h:283: note: virtual const void*
gr::Font::getTable(gr::fontTableId32, size_t*)
dmake: Error code 1, while making '../../unxlngppc.pro/slo/graphite_layout.obj'
The best way to fix this is to change the references in
graphite_layout.cxx to use just gr and then it will work without any
need for extra defines in vcl. I've now checked in graphite_layout.cxx
without the gr3ooo references, so this should be fixed.
Please let me know if you still have trouble.
Regards,
Keith
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]