[FriBidi] FriBidi Installation

Eli Zaretskii eliz at gnu.org
Sun Dec 23 10:00:36 PST 2012


> Date: Sun, 23 Dec 2012 05:58:20 +0200
> From: Eli Zaretskii <eliz at gnu.org>
> Cc: pmallen1 at cox.net, fribidi at lists.freedesktop.org
> 
> > Date: Sat, 22 Dec 2012 20:35:03 -0500
> > From: Behdad Esfahbod <behdad at behdad.org>
> > Cc: FriBidi <fribidi at lists.freedesktop.org>
> > 
> > There's not really much I can help you with.  You need a build environment set
> > up first.  There's nothing FriBidi specific to that.  It's a Windows issues.
> > Then you can compile FriBidi.
> 
> Just installing MSYS+MinGW should be all that's needed.  Then you just
> do the usual Unix stance: "configure && make"

I spoke too soon, there are a few obstacles on the way.  Here's my
report of building fribidi-0.19.5 on MS-Windows using MSYS+MinGW32:

 . Compilation warnings:

       CC     fribidi-char-sets.lo
     fribidi-char-sets.c:121:1: warning: conflicting types for built-in function 'toupper' [enabled by default]

   This happens because charset/fribidi-char-sets.c defines its own
   'static' function toupper.  Solution -- rename it to fribidi_toupper.
   I think it's not nice for a project to invade the namespace of the
   standard C library.

       CC     fribidi-bidi-types.lo
     In file included from fribidi-bidi-types.c:93:0:
     fribidi-bidi-types.c: In function 'fribidi_get_bidi_type_name':
     fribidi-bidi-types-list.h:83:1: warning: case value '32' not in enumerated type 'FriBidiCharType' [-Wswitch]
     fribidi-bidi-types-list.h:84:1: warning: case value '33' not in enumerated type 'FriBidiCharType' [-Wswitch]
     In file included from fribidi-bidi-types.c:113:0:
     fribidi-bidi-types.c: In function '_fribidi__char_from_bidi_type__internal__':
     fribidi-bidi-types-list.h:83:1: warning: case value '32' not in enumerated type 'FriBidiCharType' [-Wswitch]
     fribidi-bidi-types-list.h:84:1: warning: case value '33' not in enumerated type 'FriBidiCharType' [-Wswitch]

   I didn't figure out how to fix those, as the complex system of
   macros used by fribidi-bidi-types-list.h is, well, complex.  Any
   suggestions?

 . Fatal error during linking:

     /bin/sh ../libtool  --tag=CC   --mode=link gcc  -g -O2 -Wall -ansi  -no-undefined -version-info 3:4:3 -export-symbols-regex "^fribidi_.*" -export-symbols ./fribidi.def  -o libfribidi.la -rpath d:/usr/lib fribidi.lo fribidi-arabic.lo fribidi-bidi.lo fribidi-bidi-types.lo fribidi-deprecated.lo fribidi-joining.lo fribidi-joining-types.lo fribidi-mem.lo fribidi-mirroring.lo fribidi-run.lo fribidi-shape.lo  ../charset/libfribidi-char-sets.la
     libtool: link: more than one -exported-symbols argument is not allowed

   This is because of this test in libtool:

      case $arg in
      [...]
      -export-symbols | -export-symbols-regex)
        if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
          func_fatal_error "more than one -exported-symbols argument is not allowed"
        fi

   It is caused by lib/Makefile.in doing this:

     @OS_WIN32_TRUE at am__append_1 = -export-symbols $(srcdir)/fribidi.def
     ...
     libfribidi_la_LDFLAGS = -no-undefined -version-info $(LT_VERSION_INFO) \
	     -export-symbols-regex "^fribidi_.*" $(am__append_1)

   I solved this by commenting out the am__append_1 line.  Then the
   library was built, and "make check" passed all tests.

   Why is the Windows-specific fribidi.def file needed?  Did libtool
   or Binutils in some old version not support -export-symbols-regex
   on Windows?  If so, that reason is long gone, and you could simply
   use the normal Unix switches to libtool.

Thanks.


More information about the fribidi mailing list