]> git.wh0rd.org - fontconfig.git/commitdiff
Changes for Windows:
authorTor Lillqvist <tml@iki.fi>
Sat, 22 Mar 2003 21:25:34 +0000 (21:25 +0000)
committerTor Lillqvist <tml@iki.fi>
Sat, 22 Mar 2003 21:25:34 +0000 (21:25 +0000)
On Windows with gcc (a.k.a. mingw) build as a DLL.
We don't want to hardcode the fonts.conf file location in the DLL, so we
    look up the DLL location at run-time in a DllMain() function. The
    fonts.conf location is deduced from that.
The colon can't be used as path separator on Windows, semicolon is used
    instead. File path components can be separated with either slash or
    backslash. Absolute paths can also begin with a drive letter.
Add internal function FcStrLastSlash that strrchr's the last slash, or
    backslash on Windows.
There is no link() on Windows. For atomicity checks, mkdir a lock directory
    instead.
In addition to HOME, also look for USERPROFILE.
Recognize the special font directory token WINDOWSFONTDIR, to use the
    system's font directory.
Remove the fontconfig-def.cpp that was obsolete. Add fontconfig.def(.in),
    without internal functions.
Add a fontconfig-zip(.in) script, used to build a binary distribution.

13 files changed:
ChangeLog
Makefile.am
configure.in
fc-lang/fc-lang.man
src/Makefile.am
src/fcatomic.c
src/fccache.c
src/fccfg.c
src/fcint.h
src/fcstr.c
src/fcxml.c
src/fontconfig-def.cpp [deleted file]
src/fontconfig.def.in [new file with mode: 0755]

index 04b3061fe822eb2cd0f93568467f08c1ea0f803b..25ed617cee92aeedf216f52c3b8d276af2fe503b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2003-03-22  Tor Lillqvist  <tml@iki.fi>
+
+       Changes for Windows:
+         
+       + On Windows with gcc (a.k.a. mingw) build as a DLL.
+         
+       + We don't want to hardcode the fonts.conf file location in the
+         DLL, so we look up the DLL location at run-time in a DllMain()
+         function. The fonts.conf location is deduced from that.
+
+       + The colon can't be used as path separator on Windows,
+         semicolon is used instead. File path components can be separated
+         with either slash or backslash. Absolute paths can also begin
+         with a drive letter.
+
+       + Add internal function FcStrLastSlash that strrchr's the last
+         slash, or backslash on Windows.
+       
+       + There is no link() on Windows. For atomicity checks, mkdir a
+         lock directory instead.
+         
+       + In addition to HOME, also look for USERPROFILE.
+
+       + Recognize the special font directory token WINDOWSFONTDIR, to
+         use the system's font directory.
+         
+       + Remove the fontconfig-def.cpp that was obsolete. Add
+         fontconfig.def(.in), without internal functions.
+         
+       + Add a fontconfig-zip(.in) script, used to build a binary
+         distribution.
+
 Fri Mar  7 07:55:00 EST 2003    Mike A. Harris <mharris@redhat.com>
        + RPM specfile cleanups for 2.1.92: Removed man1/* and added man5/*
          to main package and man3/* to devel package
index 7ee600e67ae7d08509ffcef16de5b48492d6a6b4..6c3b041ad2750dc0cbd73c31bd8a942e5c7ccbcb 100644 (file)
@@ -29,7 +29,8 @@ EXTRA_DIST = \
        fonts.dtd \
        local.conf \
         fontconfig.spec.in \
-        fontconfig.spec
+        fontconfig.spec \
+       fontconfig-zip.in
 
 pkgconfigdir=$(libdir)/pkgconfig
 pkgconfig_DATA = fontconfig.pc
index f3295bf255024c7e992348d1e88c4fb656bf88dd..061ce66e00c00a38d65bb4740b0de3b3735fd919 100644 (file)
@@ -39,11 +39,16 @@ dnl libtool versioning
 
 LT_CURRENT=1
 LT_REVISION=4
+AC_SUBST(LT_CURRENT)
+AC_SUBST(LT_REVISION)
 LT_AGE=0
 
 LT_VERSION_INFO="$LT_CURRENT:$LT_REVISION:$LT_AGE"
 AC_SUBST(LT_VERSION_INFO)
 
+LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
+AC_SUBST(LT_CURRENT_MINUS_AGE)
+
 dnl ==========================================================================
 
 AM_CONFIG_HEADER(config.h)
@@ -51,9 +56,28 @@ AM_CONFIG_HEADER(config.h)
 AC_PROG_CC
 AC_PROG_INSTALL
 AC_PROG_LN_S
+AC_LIBTOOL_WIN32_DLL
 AM_PROG_LIBTOOL
 AC_PROG_MAKE_SET
 
+dnl ==========================================================================
+
+case "$host" in
+  *-*-mingw*)
+    os_win32=yes
+    ;;
+  *)
+    os_win32=no
+esac
+AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
+
+if test "$os_win32" = "yes"; then
+  AC_CHECK_PROG(ms_librarian, lib.exe, yes, no)
+fi
+AM_CONDITIONAL(MS_LIB_AVAILABLE, test x$ms_librarian = xyes)
+
+dnl ==========================================================================
+
 # Checks for header files.
 AC_HEADER_DIRENT
 AC_HEADER_STDC
@@ -65,7 +89,7 @@ AC_TYPE_PID_T
 
 # Checks for library functions.
 AC_FUNC_VPRINTF
-AC_CHECK_FUNCS([memmove memset strchr strrchr strtol getopt getopt_long])
+AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long])
 
 #
 # Checks for FreeType
@@ -334,6 +358,7 @@ Makefile
 fontconfig/Makefile
 fc-lang/Makefile
 src/Makefile
+src/fontconfig.def
 fc-cache/Makefile
 fc-list/Makefile
 doc/Makefile
@@ -342,4 +367,5 @@ test/Makefile
 fontconfig.spec
 fontconfig.pc
 fonts.conf
+fontconfig-zip
 ])
index 1eda09367b0b3b8cc74389cedf38db9e6daac4e0..554f786d3b6452a38ca8a5e0d9309587a54ba387 100644 (file)
 .\"
 .TH FC-LANG 1 __vendorversion__
 .SH NAME
-fc-lang, fclang.c \- create an database of language orthographies
+fc-lang, fclang.h \- create an database of language orthographies
 .SH SYNOPSIS
 .B "fc-lang"
 .RI [ language-coverage
 \|.\|.\|. ]
 .SH DESCRIPTION
 .I Fc-lang
-builds the fclang.c file used in the fontconfig library to automatically
+builds the fclang.h file used in the fontconfig library to automatically
 determine language coverage for fonts which don't contain this information.
 .SH FILES
 .TP 15
-.B fclang.tmpl.c
+.B fclang.tmpl.h
 The template file in which the tables are inserted
 .SH "SEE ALSO"
 fontconfig(3)
index 7758b4c2a75e29c6cb8a1478ff286d8ca75d1425..f81131472fce10cbc85c558b7f2b8d23b7a488cf 100644 (file)
@@ -1,9 +1,54 @@
+if OS_WIN32
+
+no_undefined = -no-undefined
+export_symbols = -export-symbols fontconfig.def
+
+# gcc import library install/uninstall
+
+install-libtool-import-lib: 
+       $(INSTALL) .libs/libfontconfig.dll.a $(DESTDIR)$(libdir)
+       $(INSTALL) fontconfig.def $(DESTDIR)$(libdir)/glib-2.0.def
+
+uninstall-libtool-import-lib:
+       -rm $(DESTDIR)$(libdir)/libfontconfig.dll.a $(DESTDIR)$(libdir)/fontconfig.def
+
+else
+
+install-libtool-import-lib:
+uninstall-libtool-import-lib:
+
+endif
+
+if MS_LIB_AVAILABLE
+
+# Microsoft import library install/uninstall
+
+noinst_DATA = fontconfig.lib
+
+fontconfig.lib : libfontconfig.la
+       lib -name:libfontconfig-$(lt_current_minus_age).dll -def:fontconfig.def -out:$@
+
+install-ms-import-lib:
+       $(INSTALL) fontconfig.lib $(DESTDIR)$(libdir)
+
+uninstall-ms-import-lib:
+       -rm $(DESTDIR)$(libdir)/fontconfig.lib
+
+else
+
+install-ms-lib:
+uninstall-ms-lib:
+
+endif
+
 INCLUDES =                                             \
        $(FREETYPE_CFLAGS)                              \
        $(EXPAT_CFLAGS)                                 \
        -I$(top_srcdir)                                 \
        -I$(top_srcdir)/src
-       
+
+EXTRA_DIST = fontconfig.def.in
+
 noinst_HEADERS=fcint.h
 
 libfontconfig_la_SOURCES = \
@@ -26,11 +71,15 @@ libfontconfig_la_SOURCES = \
        fcpat.c \
        fcstr.c \
        fcxml.c
-       
+
 lib_LTLIBRARIES = libfontconfig.la
 
 libfontconfig_la_LDFLAGS =                     \
-       -version-info @LT_VERSION_INFO@
+       -version-info @LT_VERSION_INFO@ $(no_undefined) $(export_symbols)
 
 libfontconfig_la_LIBADD = $(FREETYPE_LIBS) $(EXPAT_LIBS)
 
+install-data-local: install-ms-import-lib install-libtool-import-lib
+
+uninstall-local: uninstall-ms-import-lib uninstall-libtool-import-lib
+
index c2159a8773d2e1bf62312483230f5dd860382853..65163fbdb763f83df5328c90abb0a72933dc5676 100644 (file)
@@ -30,7 +30,7 @@
  * Uses only regular filesystem calls so it should
  * work even in the absense of functioning file locking
  *
- *  Four files:
+ * On Unix, four files are used:
  *     file        - the data file accessed by other apps.
  *     new         - a new version of the data file while it's being written
  *     lck         - the lock file
  *     Attempt to link it to 'lck'
  *     Unlink 'tmp'
  *     If the link succeeded, the lock is held
+ *
+ * On Windows, where there are no links, no tmp file is used, and lck
+ * is a directory that's mkdir'ed. If the mkdir succeeds, the lock is
+ * held.
  */
 
 #include "fcint.h"
 #include <stdlib.h>
 #include <time.h>
 
+#ifdef _WIN32
+#define mkdir(path,mode) _mkdir(path)
+#endif
+
 #define NEW_NAME       ".NEW"
 #define LCK_NAME       ".LCK"
 #define TMP_NAME       ".TMP-XXXXXX"
@@ -96,6 +104,7 @@ FcAtomicLock (FcAtomic *atomic)
     int                ret;
     struct stat        lck_stat;
 
+#ifdef HAVE_LINK
     strcpy ((char *) atomic->tmp, (char *) atomic->file);
     strcat ((char *) atomic->tmp, TMP_NAME);
     fd = mkstemp ((char *) atomic->tmp);
@@ -122,6 +131,9 @@ FcAtomicLock (FcAtomic *atomic)
     }
     ret = link ((char *) atomic->tmp, (char *) atomic->lck);
     (void) unlink ((char *) atomic->tmp);
+#else
+    ret = mkdir ((char *) atomic->lck, 0600);
+#endif
     if (ret < 0)
     {
        /*
@@ -135,8 +147,13 @@ FcAtomicLock (FcAtomic *atomic)
            time_t  now = time (0);
            if ((long int) (now - lck_stat.st_mtime) > 10 * 60)
            {
+#ifdef HAVE_LINK
                if (unlink ((char *) atomic->lck) == 0)
                    return FcAtomicLock (atomic);
+#else
+               if (rmdir ((char *) atomic->lck) == 0)
+                   return FcAtomicLock (atomic);
+#endif
            }
        }
        return FcFalse;
@@ -174,7 +191,11 @@ FcAtomicDeleteNew (FcAtomic *atomic)
 void
 FcAtomicUnlock (FcAtomic *atomic)
 {
+#ifdef HAVE_LINK
     unlink ((char *) atomic->lck);
+#else
+    rmdir ((char *) atomic->lck);
+#endif
 }
 
 void
index ab32629e2847bba392308c06aacb8461633734d2..6ca235dfbe67569f5b9ab58c8c51e81621df4768 100644 (file)
@@ -188,9 +188,19 @@ FcCacheWritePath (FILE *f, const FcChar8 *dir, const FcChar8 *file)
     if (dir)
        if (!FcCacheWriteChars (f, dir))
            return FcFalse;
+#ifdef _WIN32
+    if (dir &&
+       dir[strlen((const char *) dir) - 1] != '/' &&
+       dir[strlen((const char *) dir) - 1] != '\\')
+    {
+       if (!FcCacheWriteChars (f, "\\"))
+           return FcFalse;
+    }
+#else
     if (dir && dir[strlen((const char *) dir) - 1] != '/')
        if (PUTC ('/', f) == EOF)
            return FcFalse;
+#endif
     if (!FcCacheWriteChars (f, file))
        return FcFalse;
     if (PUTC ('"', f) == EOF)
@@ -258,8 +268,13 @@ FcCacheFontSetAdd (FcFontSet           *set,
            return FcFalse;
     }
     strncpy ((char *) path, (const char *) dir, dir_len);
+#ifdef _WIN32
+    if (dir[dir_len - 1] != '/' && dir[dir_len - 1] != '\\' )
+       path[dir_len++] = '\\';
+#else
     if (dir[dir_len - 1] != '/')
        path[dir_len++] = '/';
+#endif
     strcpy ((char *) path + dir_len, (const char *) file);
     if (!FcStrCmp (name, FC_FONT_FILE_DIR))
     {
@@ -361,7 +376,7 @@ FcFilePathInfoGet (const FcChar8    *path)
     FcFilePathInfo  i;
     FcChar8        *slash;
 
-    slash = (FcChar8 *) strrchr ((const char *) path, '/');
+    slash = FcStrLastSlash (path);
     if (slash)
     {
         i.dir = path;
@@ -840,9 +855,11 @@ FcGlobalCacheSave (FcGlobalCache    *cache,
     if (cache->broken)
        return FcFalse;
 
+#if defined (HAVE_GETUID) && defined (HAVE_GETEUID)
     /* Set-UID programs can't safely update the cache */
     if (getuid () != geteuid ())
        return FcFalse;
+#endif
     
     atomic = FcAtomicCreate (cache_file);
     if (!atomic)
@@ -1033,7 +1050,7 @@ FcFileBaseName (const FcChar8 *cache, const FcChar8 *file)
 {
     const FcChar8   *cache_slash;
 
-    cache_slash = (const FcChar8 *) strrchr ((const char *) cache, '/');
+    cache_slash = FcStrLastSlash (cache);
     if (cache_slash && !strncmp ((const char *) cache, (const char *) file,
                                 (cache_slash + 1) - cache))
        return file + ((cache_slash + 1) - cache);
index 0d7f17e3392fe1b6b1ebf61ad8a0e0276237fb6c..a8f10b90abc1ce924fd0480ef1451f64db13ef0a 100644 (file)
 
 #include "fcint.h"
 
+#if defined (_WIN32) && defined (PIC)
+#define STRICT
+#include <windows.h>
+#undef STRICT
+#endif
+
 FcConfig    *_fcConfig;
 
 FcConfig *
@@ -1267,10 +1273,58 @@ FcConfigSubstitute (FcConfig    *config,
     return FcConfigSubstituteWithPat (config, p, 0, kind);
 }
 
+#if defined (_WIN32) && defined (PIC)
+
+static FcChar8 fontconfig_path[1000] = "";
+
+BOOL WINAPI
+DllMain (HINSTANCE hinstDLL,
+        DWORD     fdwReason,
+        LPVOID    lpvReserved)
+{
+  FcChar8 *p;
+
+  switch (fdwReason) {
+  case DLL_PROCESS_ATTACH:
+      if (!GetModuleFileName ((HMODULE) hinstDLL, fontconfig_path,
+                             sizeof (fontconfig_path)))
+         break;
+
+      /* If the fontconfig DLL is in a "bin" or "lib" subfolder,
+       * assume it's a Unix-style installation tree, and use
+       * "etc/fonts" in there as FONTCONFIG_PATH. Otherwise use the
+       * folder where the DLL is as FONTCONFIG_PATH.
+       */
+      p = strrchr (fontconfig_path, '\\');
+      if (p)
+      {
+         *p = '\0';
+         p = strrchr (fontconfig_path, '\\');
+         if (p && (FcStrCmpIgnoreCase (p + 1, "bin") == 0 ||
+                   FcStrCmpIgnoreCase (p + 1, "lib") == 0))
+             *p = '\0';
+         strcat (fontconfig_path, "\\etc\\fonts");
+      }
+      else
+          fontconfig_path[0] = '\0';
+      
+      break;
+  }
+
+  return TRUE;
+}
+
+#undef FONTCONFIG_PATH
+#define FONTCONFIG_PATH fontconfig_path
+
+#else /* !(_WIN32 && PIC) */
+
 #ifndef FONTCONFIG_PATH
 #define FONTCONFIG_PATH        "/etc/fonts"
 #endif
 
+#endif /* !(_WIN32 && PIC) */
+
 #ifndef FONTCONFIG_FILE
 #define FONTCONFIG_FILE        "fonts.conf"
 #endif
@@ -1287,9 +1341,16 @@ FcConfigFileExists (const FcChar8 *dir, const FcChar8 *file)
        return 0;
 
     strcpy ((char *) path, (const char *) dir);
-    /* make sure there's a single separating / */
+    /* make sure there's a single separator */
+#ifdef _WIN32
+    if ((!path[0] || (path[strlen((char *) path)-1] != '/' &&
+                     path[strlen((char *) path)-1] != '\\')) &&
+        (file[0] != '/' && file[0] != '\\'))
+       strcat ((char *) path, "\\");
+#else
     if ((!path[0] || path[strlen((char *) path)-1] != '/') && file[0] != '/')
        strcat ((char *) path, "/");
+#endif
     strcat ((char *) path, (char *) file);
 
     FcMemAlloc (FC_MEM_STRING, strlen ((char *) path) + 1);
@@ -1316,7 +1377,7 @@ FcConfigGetPath (void)
        e = env;
        npath++;
        while (*e)
-           if (*e++ == ':')
+           if (*e++ == FC_SEARCH_PATH_SEPARATOR)
                npath++;
     }
     path = calloc (npath, sizeof (FcChar8 *));
@@ -1329,7 +1390,7 @@ FcConfigGetPath (void)
        e = env;
        while (*e) 
        {
-           colon = (FcChar8 *) strchr ((char *) e, ':');
+           colon = (FcChar8 *) strchr ((char *) e, FC_SEARCH_PATH_SEPARATOR);
            if (!colon)
                colon = e + strlen ((char *) e);
            path[i] = malloc (colon - e + 1);
@@ -1376,7 +1437,16 @@ FcChar8 *
 FcConfigHome (void)
 {
     if (_FcConfigHomeEnabled)
-       return getenv ("HOME");
+    {
+        char *home = getenv ("HOME");
+
+#ifdef _WIN32
+       if (home == NULL)
+           home = getenv ("USERPROFILE");
+#endif
+
+       return home;
+    }
     return 0;
 }
 
@@ -1400,6 +1470,14 @@ FcConfigFilename (const FcChar8 *url)
            url = (FcChar8 *) FONTCONFIG_FILE;
     }
     file = 0;
+
+#ifdef _WIN32
+    if (isalpha (*url) &&
+       url[1] == ':' &&
+       (url[2] == '/' || url[2] == '\\'))
+       goto absolute_path;
+#endif
+
     switch (*url) {
     case '~':
        dir = FcConfigHome ();
@@ -1408,6 +1486,10 @@ FcConfigFilename (const FcChar8 *url)
        else
            file = 0;
        break;
+#ifdef _WIN32
+    case '\\':
+    absolute_path:
+#endif
     case '/':
        file = FcConfigFileExists (0, url);
        break;
index 9873a66e8af91548244d78a7616bbf4694804cf2..a008f069698e7db4da5919e10fceeb324eae757e 100644 (file)
@@ -53,6 +53,12 @@ typedef struct _FcSymbolic {
 #define FC_FONT_FILE_INVALID   ((FcChar8 *) ".")
 #define FC_FONT_FILE_DIR       ((FcChar8 *) ".dir")
 
+#ifdef _WIN32
+#define FC_SEARCH_PATH_SEPARATOR ';'
+#else
+#define FC_SEARCH_PATH_SEPARATOR ':'
+#endif
+
 #define FC_DBG_MATCH   1
 #define FC_DBG_MATCHV  2
 #define FC_DBG_EDIT    4
@@ -649,4 +655,7 @@ FcStrCmpIgnoreBlanksAndCase (const FcChar8 *s1, const FcChar8 *s2);
 FcBool
 FcStrUsesHome (const FcChar8 *s);
 
+FcChar8 *
+FcStrLastSlash (const FcChar8  *path);
+
 #endif /* _FC_INT_H_ */
index 8c13696ecb3e498f58050895cfcb91a1e576c5a1..5b75f0e62eaf4488649ef17d8b6a90e2af9961da 100644 (file)
@@ -447,13 +447,32 @@ FcStrCopyFilename (const FcChar8 *s)
     return new;
 }
 
+FcChar8 *
+FcStrLastSlash (const FcChar8  *path)
+{
+    FcChar8        *slash;
+
+    slash = (FcChar8 *) strrchr ((const char *) path, '/');
+#ifdef _WIN32
+    {
+        FcChar8     *backslash;
+
+       backslash = (FcChar8 *) strrchr ((const char *) path, '\\');
+       if (!slash || (backslash && backslash > slash))
+           slash = backslash;
+    }
+#endif
+
+    return slash;
+}
+  
 FcChar8 *
 FcStrDirname (const FcChar8 *file)
 {
     FcChar8 *slash;
     FcChar8 *dir;
 
-    slash = (FcChar8 *) strrchr ((char *) file, '/');
+    slash = FcStrLastSlash (file);
     if (!slash)
        return FcStrCopy ((FcChar8 *) ".");
     dir = malloc ((slash - file) + 1);
@@ -470,7 +489,7 @@ FcStrBasename (const FcChar8 *file)
 {
     FcChar8 *slash;
 
-    slash = (FcChar8 *) strrchr ((char *) file, '/');
+    slash = FcStrLastSlash (file);
     if (!slash)
        return FcStrCopy (file);
     return FcStrCopy (slash + 1);
index 033de96794b46e69f8287446dfbccb30d722d7e9..95b0c85b3301168ab18d089cc673844907b5718a 100644 (file)
 #include <expat.h>
 #endif
 
+#ifdef _WIN32
+#define STRICT
+#include <windows.h>
+#undef STRICT
+#endif
+
 FcTest *
 FcTestCreate (FcMatchKind   kind, 
              FcQual        qual,
@@ -1600,6 +1606,30 @@ FcEndElement(void *userData, const XML_Char *name)
            FcConfigMessage (parse, FcSevereError, "out of memory");
            break;
        }
+#ifdef _WIN32
+       if (strcmp (data, "WINDOWSFONTDIR") == 0)
+       {
+           int rc;
+           FcStrFree (data);
+           data = malloc (1000);
+           if (!data)
+           {
+               FcConfigMessage (parse, FcSevereError, "out of memory");
+               break;
+           }
+           FcMemAlloc (FC_MEM_STRING, 1000);
+           rc = GetWindowsDirectory (data, 800);
+           if (rc == 0 || rc > 800)
+           {
+               FcConfigMessage (parse, FcSevereError, "GetWindowsDirectory failed");
+               FcStrFree (data);
+               break;
+           }
+           if (data [strlen (data) - 1] != '\\')
+               strcat (data, "\\");
+           strcat (data, "fonts");
+       }
+#endif
        if (!FcStrUsesHome (data) || FcConfigHome ())
        {
            if (!FcConfigAddDir (parse->config, data))
diff --git a/src/fontconfig-def.cpp b/src/fontconfig-def.cpp
deleted file mode 100644 (file)
index da027ca..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-LIBRARY fontconfig
-VERSION LIBRARY_VERSION
-EXPORTS
-FcAtomicCreate
-FcAtomicDeleteNew
-FcAtomicDestroy
-FcAtomicLock
-FcAtomicNewFile
-FcAtomicOrigFile
-FcAtomicReplaceOrig
-FcAtomicUnlock
-FcAvlDelete
-FcAvlInsert
-FcBlanksAdd
-FcBlanksCreate
-FcBlanksDestroy
-FcBlanksIsMember
-FcFileCacheCreate
-FcFileCacheDestroy
-FcFileCacheFind
-FcFileCacheLoad
-FcFileCacheReadDir
-FcFileCacheSave
-FcFileCacheUpdate
-FcFileCacheWriteDir
-FcConfigAddBlank
-FcConfigAddConfigFile
-FcConfigAddDir
-FcConfigAddEdit
-FcConfigAppFontAddDir
-FcConfigAppFontAddFile
-FcConfigAppFontClear
-FcConfigBuildFonts
-FcConfigCompareValue
-FcConfigCreate
-FcConfigDestroy
-FcConfigFilename
-FcConfigGetBlanks
-FcConfigGetCache
-FcConfigGetConfigFiles
-FcConfigGetCurrent
-FcConfigGetDirs
-FcConfigGetFonts
-FcConfigSetCache
-FcConfigSetCurrent
-FcConfigSetFonts
-FcConfigSubstitute
-FcCharSetAddChar
-FcCharSetCopy
-FcCharSetCount
-FcCharSetCoverage
-FcCharSetCreate
-FcCharSetDestroy
-FcCharSetEqual
-FcCharSetHasChar
-FcCharSetIntersect
-FcCharSetIntersectCount
-FcCharSetNew
-FcCharSetSubtract
-FcCharSetSubtractCount
-FcCharSetUnion
-FcFreeTypeCharIndex
-FcFreeTypeCharSet
-FcNameParseCharSet
-FcNameUnparseCharSet
-FcDebug
-FcEditPrint
-FcExprPrint
-FcFontSetPrint
-FcOpPrint
-FcPatternPrint
-FcSubstPrint
-FcTestPrint
-FcValueListPrint
-FcValuePrint
-FcDefaultSubstitute
-FcDirSave
-FcDirScan
-FcFileScan
-FcFreeTypeQuery
-FcFontSetAdd
-FcFontSetCreate
-FcFontSetDestroy
-FcInit
-FcInitConfig
-FcInitFonts
-FcMemAlloc
-FcMemFree
-FcMemReport
-FcFontList
-FcFontSetList
-FcObjectSetAdd
-FcObjectSetBuild
-FcObjectSetCreate
-FcObjectSetDestroy
-FcObjectSetVaBuild
-FcFontMatch
-FcFontRenderPrepare
-FcFontSetMatch
-FcFontSetSort
-FcMatrixCopy
-FcMatrixEqual
-FcMatrixFree
-FcMatrixMultiply
-FcMatrixRotate
-FcMatrixScale
-FcMatrixShear
-FcNameBool
-FcNameConstant
-FcNameGetConstant
-FcNameGetObjectType
-FcNameParse
-FcNameRegisterConstants
-FcNameRegisterObjectTypes
-FcNameUnparse
-FcNameUnregisterConstants
-FcNameUnregisterObjectTypes
-FcPatternAdd
-FcPatternAddBool
-FcPatternAddCharSet
-FcPatternAddDouble
-FcPatternAddInteger
-FcPatternAddMatrix
-FcPatternAddString
-FcPatternBuild
-FcPatternCreate
-FcPatternDel
-FcPatternDestroy
-FcPatternDuplicate
-FcPatternFind
-FcPatternGet
-FcPatternGetBool
-FcPatternGetCharSet
-FcPatternGetDouble
-FcPatternGetInteger
-FcPatternGetMatrix
-FcPatternGetString
-FcPatternVaBuild
-FcValueDestroy
-FcValueListDestroy
-FcValueSave
-FcStrBufChar
-FcStrBufData
-FcStrBufDestroy
-FcStrBufDone
-FcStrBufInit
-FcStrBufString
-FcStrCmpIgnoreCase
-FcStrCopy
-FcStrFree
-FcStrPlus
-FcUtf8Len
-FcUtf8ToUcs4
-FcConfigParseAndLoad
-FcConfigSaveField
-FcEditCreate
-FcEditDestroy
-FcExprCreateBool
-FcExprCreateConst
-FcExprCreateDouble
-FcExprCreateField
-FcExprCreateInteger
-FcExprCreateMatrix
-FcExprCreateNil
-FcExprCreateOp
-FcExprCreateString
-FcExprDestroy
-FcTestCreate
-FcTestDestroy
-/* $RCSId: xc/lib/fontconfig/fontconfig-def.cpp,v 1.1 2002/04/07 15:19:46 alanh Exp $ */
diff --git a/src/fontconfig.def.in b/src/fontconfig.def.in
new file mode 100755 (executable)
index 0000000..cd937f3
--- /dev/null
@@ -0,0 +1,161 @@
+LIBRARY fontconfig
+VERSION @LT_CURRENT@.@LT_REVISION@
+EXPORTS
+       FcAtomicCreate
+       FcAtomicDeleteNew
+       FcAtomicDestroy
+       FcAtomicLock
+       FcAtomicNewFile
+       FcAtomicOrigFile
+       FcAtomicReplaceOrig
+       FcAtomicUnlock
+       FcBlanksAdd
+       FcBlanksCreate
+       FcBlanksDestroy
+       FcBlanksIsMember
+       FcCharSetAddChar
+       FcCharSetCopy
+       FcCharSetCount
+       FcCharSetCreate
+       FcCharSetDestroy
+       FcCharSetEqual
+       FcCharSetFirstPage
+       FcCharSetHasChar
+       FcCharSetIntersect
+       FcCharSetIntersectCount
+       FcCharSetIsSubset
+       FcCharSetNextPage
+       FcCharSetSubtract
+       FcCharSetSubtractCount
+       FcCharSetUnion
+       FcConfigAppFontAddDir
+       FcConfigAppFontAddFile
+       FcConfigAppFontClear
+       FcConfigBuildFonts
+       FcConfigCreate
+       FcConfigDestroy
+       FcConfigFilename
+       FcConfigGetBlanks
+       FcConfigGetCache
+       FcConfigGetConfigDirs
+       FcConfigGetConfigFiles
+       FcConfigGetCurrent
+       FcConfigGetFontDirs
+       FcConfigGetFonts
+       FcConfigGetRescanInverval
+       FcConfigParseAndLoad
+       FcConfigSetCurrent
+       FcConfigSetRescanInverval
+       FcConfigSubstitute
+       FcConfigSubstituteWithPat
+       FcConfigUptoDate
+       FcDefaultSubstitute
+       FcDirCacheValid
+       FcDirSave
+       FcDirScan
+       FcFileScan
+       FcFontList
+       FcFontMatch
+       FcFontRenderPrepare
+       FcFontSetAdd
+       FcFontSetCreate
+       FcFontSetDestroy
+       FcFontSetList
+       FcFontSetMatch
+       FcFontSetPrint
+       FcFontSetSort
+       FcFontSetSortDestroy
+       FcFontSort
+       FcFreeTypeCharIndex
+       FcFreeTypeCharSet
+       FcFreeTypeQuery
+       FcGetVersion
+       FcInit
+       FcInitBringUptoDate
+       FcInitLoadConfig
+       FcInitLoadConfigAndFonts
+       FcInitReinitialize
+       FcLangSetAdd
+       FcLangSetCompare
+       FcLangSetCopy
+       FcLangSetCreate
+       FcLangSetDestroy
+       FcLangSetEqual
+       FcLangSetHasLang
+       FcLangSetHash
+       FcMatrixCopy
+       FcMatrixEqual
+       FcMatrixMultiply
+       FcMatrixRotate
+       FcMatrixScale
+       FcMatrixShear
+       FcNameConstant
+       FcNameGetConstant
+       FcNameGetObjectType
+       FcNameParse
+       FcNameRegisterConstants
+       FcNameRegisterObjectTypes
+       FcNameUnparse
+       FcNameUnregisterConstants
+       FcNameUnregisterObjectTypes
+       FcObjectSetAdd
+       FcObjectSetBuild
+       FcObjectSetCreate
+       FcObjectSetDestroy
+       FcObjectSetVaBuild
+       FcPatternAdd
+       FcPatternAddBool
+       FcPatternAddCharSet
+       FcPatternAddDouble
+       FcPatternAddFTFace
+       FcPatternAddInteger
+       FcPatternAddLangSet
+       FcPatternAddMatrix
+       FcPatternAddString
+       FcPatternAddWeak
+       FcPatternBuild
+       FcPatternCreate
+       FcPatternDel
+       FcPatternDestroy
+       FcPatternDuplicate
+       FcPatternEqual
+       FcPatternEqualSubset
+       FcPatternGet
+       FcPatternGetBool
+       FcPatternGetCharSet
+       FcPatternGetDouble
+       FcPatternGetFTFace
+       FcPatternGetInteger
+       FcPatternGetLangSet
+       FcPatternGetMatrix
+       FcPatternGetString
+       FcPatternHash
+       FcPatternPrint
+       FcPatternReference
+       FcPatternVaBuild
+       FcStrBasename
+       FcStrCmp
+       FcStrCmp
+       FcStrCmpIgnoreCase
+       FcStrCopy
+       FcStrCopyFilename
+       FcStrDirname
+       FcStrListCreate
+       FcStrListDone
+       FcStrListNext
+       FcStrSetAdd
+       FcStrSetAddFilename
+       FcStrSetCreate
+       FcStrSetDel
+       FcStrSetDestroy
+       FcStrSetEqual
+       FcStrSetMember
+       FcUcs4ToUtf8
+       FcUtf16Len
+       FcUtf16ToUcs4
+       FcUtf8Len
+       FcUtf8ToUcs4
+       FcValueDestroy
+       FcValueEqual
+       FcValuePrint
+       FcValueSave