The changes to configure.ac and dlls/gdi/Makefile.in can use a bit of cleaning up, I guess, but this is beyond my autoconf skills. Anyone who is better aquanted with these tools - please give me a hand here. The code as is does compile and does detect the existance/non-existance of ICU.
Changelog: Shachar Shemesh <winecode@shemesh.biz> config.ac include/config.h.in
* Add check for ICU library. Requires custom compile code, as the library uses ugly name mangling. * Add "HAVE_ICU" definition
dlls/gdi
* Modify Makefile.in so that if ICU is available, static link it and dynamic link stdc++. * Add bidi.c and gdibidi.h - framework for BiDi support
objects/gdiobj.c
* Add call to BidiInit from GDI_Init
-- Shachar Shemesh Open Source integration consultant Home page & resume - http://www.shemesh.biz/
Index: configure.ac =================================================================== RCS file: /home/sun/sources/cvs/wine/configure.ac,v retrieving revision 1.160 diff -u -r1.160 configure.ac --- configure.ac 21 May 2003 18:50:53 -0000 1.160 +++ configure.ac 23 May 2003 14:36:30 -0000 @@ -409,6 +409,44 @@ AC_SUBST(SANELIBS) AC_SUBST(SANEINCL) +dnl **** Check for the ICU library **** +AC_LANG_PUSH([C++]) +AC_CHECK_HEADERS(unicode/ubidi.h) + +if test "x$ICU_LIB_DIR" = "x" +then + ICU_LIB_DIR="/usr/lib" +fi + +if test "x$ICUUC_LIB" = "x" +then + ICUUC_LIB="$ICU_LIB_DIR/libicuuc.a" +fi + +if test "x$ICUDATA_LIB" = "x" +then + ICUDATA_LIB="$ICU_LIB_DIR/libicudata.a" +fi +AC_MSG_CHECKING([static linking with $ICUUC_LIB and $ICUDATA_LIB]) +saved_libs="$LIBS" +LIBS="$LIBS $ICUUC_LIB $ICUDATA_LIB" +AC_TRY_LINK( + [#include <unicode/ubidi.h>],[ubidi_open()], + icu_lib="yes", icu_lib="no") +if test "$icu_lib" = "yes" +then + AC_DEFINE([HAVE_ICU],1,[Define if ICU is installed]) + HAVE_ICU=1 +else + HAVE_ICU=0 +fi +AC_MSG_RESULT([$icu_lib]) +LIBS="$saved_libs" +AC_SUBST([HAVE_ICU]) +AC_SUBST([ICUUC_LIB]) +AC_SUBST([ICUDATA_LIB]) +AC_LANG_POP([C++]) + dnl **** Check for FreeType 2 **** AC_CHECK_LIB(freetype,FT_Init_FreeType,ft_lib=yes,ft_lib=no,$X_LIBS) if test "$ft_lib" = "no" Index: dlls/gdi/Makefile.in =================================================================== RCS file: /home/sun/sources/cvs/wine/dlls/gdi/Makefile.in,v retrieving revision 1.51 diff -u -r1.51 Makefile.in --- dlls/gdi/Makefile.in 6 May 2003 18:34:53 -0000 1.51 +++ dlls/gdi/Makefile.in 27 May 2003 18:05:32 -0000 @@ -8,6 +8,9 @@ ALTNAMES = gdi.exe dispdib.dll wing.dll EXTRAINCL = @FREETYPEINCL@ EXTRALIBS = $(LIBUNICODE) +ifeq '@HAVE_ICU@' '1' +EXTRALIBS += @ICUUC_LIB@ @ICUDATA_LIB@ -lstdc++ -lgcc_s +endif LDDLLFLAGS = @LDDLLFLAGS@ SYMBOLFILE = $(MODULE).tmp.o @@ -41,6 +44,7 @@ $(TOPOBJDIR)/objects/pen.c \ $(TOPOBJDIR)/objects/region.c \ $(TOPOBJDIR)/objects/text.c \ + bidi.c \ driver.c \ enhmfdrv/bitblt.c \ enhmfdrv/dc.c \ Index: include/config.h.in =================================================================== RCS file: /home/sun/sources/cvs/wine/include/config.h.in,v retrieving revision 1.155 diff -u -r1.155 config.h.in --- include/config.h.in 20 May 2003 17:48:40 -0000 1.155 +++ include/config.h.in 23 May 2003 09:06:09 -0000 @@ -77,6 +77,12 @@ /* Define to 1 if you have the `fpclass' function. */ #undef HAVE_FPCLASS +/* Define if the ICU library is available for static linking */ +#undef HAVE_ICU + +/* Define if the bidi header is available for ICU */ +#undef HAVE_UNICODE_UBIDI_H + /* Define if FreeType 2 is installed */ #undef HAVE_FREETYPE Index: objects/gdiobj.c =================================================================== RCS file: /home/sun/sources/cvs/wine/objects/gdiobj.c,v retrieving revision 1.87 diff -u -r1.87 gdiobj.c --- objects/gdiobj.c 21 May 2003 18:28:49 -0000 1.87 +++ objects/gdiobj.c 22 May 2003 11:00:17 -0000 @@ -628,6 +628,8 @@ WineEngInit(); + WineBidiInit(); + return TRUE; } --- /dev/null 2003-01-06 20:21:43.000000000 +0200 +++ dlls/gdi/bidi.c 2003-05-28 08:42:46.000000000 +0300 @@ -0,0 +1,49 @@ + +/* + * GDI BiDirectional handling + * + * Copyright 2003 Shachar Shemesh + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include <winbase.h> +#include <wine/debug.h> +#include <wine/library.h> +#include <dlfcn.h> + +/* As this is not an exported include, it's important not to turn it into a <> + * quotes + */ +#include "gdibidi.h" + +#if HAVE_BIDI + +#include <unicode/ubidi.h> + +WINE_DEFAULT_DEBUG_CHANNEL(bidi); + +BOOL BidiAvail=FALSE; + +/************************************************************* + * WineEngInit + * + * Initialize FreeType library and create a list of available faces + */ +BOOL WineBidiInit(void) +{ + return TRUE; +} + +#endif /* HAVE_BIDI */ --- /dev/null 2003-01-06 20:21:43.000000000 +0200 +++ dlls/gdi/gdibidi.h 2003-05-28 08:41:53.000000000 +0300 @@ -0,0 +1,42 @@ +/* + * GDI BiDi definitions + * + * Copyright 2003 Shachar Shemesh + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef __WINE_GDI_BIDI_H +#define __WINE_GDI_BIDI_H + +#include <config.h> + +#if HAVE_ICU + +extern BOOL BidiAvail; + +BOOL WineBidiInit(void); + +#define HAVE_BIDI 1 + +#else /* HAVE_ICU */ + +#define BidiAvail FALSE +#define WineBidiInit() FALSE + +#undef HAVE_BIDI + +#endif /* HAVE_ICU */ + +#endif /* __WINE_GDI_BIDI_H */