summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2000-08-01 17:05:20 +0000
committerWerner Lemberg <wl@gnu.org>2000-08-01 17:05:20 +0000
commit53c4de62d053c0a8fac295fa94949f9b1cc7a2bc (patch)
tree2600fdeadd67df0877f2b1f1f8cf583c075a36a9
parenta74e4c0dac6269d35515c70f43f369dcbeeb4f4b (diff)
downloadfreetype2-53c4de62d053c0a8fac295fa94949f9b1cc7a2bc.tar.gz
Removing FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT. It has never worked.
Instead, define BASE_DEF() and BASE_FUNC() similarly to FT_EXPORT_DEF() and FT_EXPORT_FUNC(), respectively, allowing the programmer to define proper types and/or export lists for multiple DLLs if necessary (e.g. ftbase.dll -- standalone, fttype1.dll -- needs ftbase.dll, etc.). The library is finally compiling and linking natively with a C++ compiler!
-rw-r--r--include/freetype/config/ftconfig.h75
-rw-r--r--src/autohint/ahmodule.c2
-rw-r--r--src/base/ftinit.c4
-rw-r--r--src/cff/t2driver.c2
-rw-r--r--src/cid/cidriver.c2
-rw-r--r--src/psnames/psmodule.c2
-rw-r--r--src/raster1/ftrend1.c11
-rw-r--r--src/sfnt/sfdriver.c3
-rw-r--r--src/smooth/ftsmooth.c2
-rw-r--r--src/truetype/ttdriver.c2
-rw-r--r--src/type1/t1driver.c2
-rw-r--r--src/type1z/z1driver.c2
-rw-r--r--src/winfonts/winfnt.c2
13 files changed, 80 insertions, 31 deletions
diff --git a/include/freetype/config/ftconfig.h b/include/freetype/config/ftconfig.h
index bf4d33167..a2e984249 100644
--- a/include/freetype/config/ftconfig.h
+++ b/include/freetype/config/ftconfig.h
@@ -159,33 +159,78 @@
#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-#define LOCAL_DEF static
-#define LOCAL_FUNC static
+
+#define LOCAL_DEF static
+#define LOCAL_FUNC static
+
+#else
+
+#ifdef __cplusplus
+#define LOCAL_DEF extern "C"
+#define LOCAL_FUNC extern "C"
#else
-#define LOCAL_DEF extern
-#define LOCAL_FUNC /* nothing */
+#define LOCAL_DEF extern
+#define LOCAL_FUNC extern
#endif
-#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
-#define BASE_DEF( x ) static x
-#define BASE_FUNC( x ) static x
+#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
+
+
+#ifndef BASE_DEF
+
+#ifdef __cplusplus
+#define BASE_DEF( x ) extern "C" x
#else
-#define BASE_DEF( x ) extern x
-#define BASE_FUNC( x ) extern x
+#define BASE_DEF( x ) extern x
#endif
-#ifndef FT_EXPORT_DEF
-#define FT_EXPORT_DEF( x ) extern x
+#endif /* !BASE_DEF */
+
+
+#ifndef BASE_FUNC
+
+#ifdef __cplusplus
+#define BASE_FUNC( x ) extern "C" x
+#else
+#define BASE_FUNC( x ) extern x
#endif
-#ifndef FT_EXPORT_FUNC
-#define FT_EXPORT_FUNC( x ) extern x
+#endif /* !BASE_FUNC */
+
+
+#ifndef FT_EXPORT_DEF
+
+#ifdef __cplusplus
+#define FT_EXPORT_DEF( x ) extern "C" x
+#else
+#define FT_EXPORT_DEF( x ) extern x
+#endif
+
+#endif /* !FT_EXPORT_DEF */
+
+
+#ifndef FT_EXPORT_FUNC
+
+#ifdef __cplusplus
+#define FT_EXPORT_FUNC( x ) extern "C" x
+#else
+#define FT_EXPORT_FUNC( x ) extern x
#endif
-#ifndef FT_EXPORT_VAR
-#define FT_EXPORT_VAR( x ) extern x
+#endif /* !FT_EXPORT_FUNC */
+
+
+#ifndef FT_EXPORT_VAR
+
+#ifdef __cplusplus
+#define FT_EXPORT_VAR( x ) extern "C" x
+#else
+#define FT_EXPORT_VAR( x ) extern x
#endif
+#endif /* !FT_EXPORT_VAR */
+
+
#ifdef __cplusplus
}
#endif
diff --git a/src/autohint/ahmodule.c b/src/autohint/ahmodule.c
index 85755681e..255d542d9 100644
--- a/src/autohint/ahmodule.c
+++ b/src/autohint/ahmodule.c
@@ -107,7 +107,7 @@
};
- const FT_Module_Class autohint_module_class =
+ FT_EXPORT_VAR( const FT_Module_Class ) autohint_module_class =
{
ft_module_hinter,
sizeof ( FT_AutoHinterRec ),
diff --git a/src/base/ftinit.c b/src/base/ftinit.c
index 8cfc0de58..ed060d5aa 100644
--- a/src/base/ftinit.c
+++ b/src/base/ftinit.c
@@ -53,7 +53,11 @@
#define FT_COMPONENT trace_init
#undef FT_USE_MODULE
+#ifdef __cplusplus
+#define FT_USE_MODULE( x ) extern "C" const FT_Module_Class* x;
+#else
#define FT_USE_MODULE( x ) extern const FT_Module_Class* x;
+#endif
#include <freetype/config/ftmodule.h>
diff --git a/src/cff/t2driver.c b/src/cff/t2driver.c
index d1e1b188d..ab6c20f9a 100644
--- a/src/cff/t2driver.c
+++ b/src/cff/t2driver.c
@@ -302,7 +302,7 @@
/* The FT_DriverInterface structure is defined in ftdriver.h. */
- const FT_Driver_Class cff_driver_class =
+ FT_EXPORT_VAR( const FT_Driver_Class ) cff_driver_class =
{
/* begin with the FT_Module_Class fields */
{
diff --git a/src/cid/cidriver.c b/src/cid/cidriver.c
index f1c6b6a01..b4f0fd7d6 100644
--- a/src/cid/cidriver.c
+++ b/src/cid/cidriver.c
@@ -182,7 +182,7 @@
}
- const FT_Driver_Class t1cid_driver_class =
+ FT_EXPORT_VAR( const FT_Driver_Class ) t1cid_driver_class =
{
/* first of all, the FT_Module_Class fields */
{
diff --git a/src/psnames/psmodule.c b/src/psnames/psmodule.c
index 55ab5dfce..448ea18a6 100644
--- a/src/psnames/psmodule.c
+++ b/src/psnames/psmodule.c
@@ -296,7 +296,7 @@
#endif /* !FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES */
- const FT_Module_Class psnames_module_class =
+ FT_EXPORT_VAR( const FT_Module_Class ) psnames_module_class =
{
0, /* this is not a font driver, nor a renderer */
sizeof( FT_ModuleRec ),
diff --git a/src/raster1/ftrend1.c b/src/raster1/ftrend1.c
index d774cf1d4..9364864c7 100644
--- a/src/raster1/ftrend1.c
+++ b/src/raster1/ftrend1.c
@@ -213,7 +213,7 @@
}
- const FT_Renderer_Class ft_raster1_renderer_class =
+ FT_EXPORT_VAR( const FT_Renderer_Class ) ft_raster1_renderer_class =
{
{
ft_module_renderer,
@@ -241,10 +241,11 @@
};
- /* this renderer is _NOT_ part of the default modules, you'll need */
- /* to register it by hand in your application. It should only be */
- /* used for backwards-compatibility with FT 1.x anyway. */
- const FT_Renderer_Class ft_raster5_renderer_class =
+ /* This renderer is _NOT_ part of the default modules; you will need */
+ /* to register it by hand in your application. It should only be */
+ /* used for backwards-compatibility with FT 1.x anyway. */
+ /* */
+ FT_EXPORT_VAR( const FT_Renderer_Class ) ft_raster5_renderer_class =
{
{
ft_module_renderer,
diff --git a/src/sfnt/sfdriver.c b/src/sfnt/sfdriver.c
index 96a738b43..dfeb7116a 100644
--- a/src/sfnt/sfdriver.c
+++ b/src/sfnt/sfdriver.c
@@ -204,8 +204,7 @@
};
- const
- FT_Module_Class sfnt_module_class =
+ FT_EXPORT_VAR( const FT_Module_Class ) sfnt_module_class =
{
0, /* not a font driver or renderer */
sizeof( FT_ModuleRec ),
diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c
index 6f399acf5..f0408468f 100644
--- a/src/smooth/ftsmooth.c
+++ b/src/smooth/ftsmooth.c
@@ -189,7 +189,7 @@
}
- const FT_Renderer_Class ft_smooth_renderer_class =
+ FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_renderer_class =
{
{
ft_module_renderer,
diff --git a/src/truetype/ttdriver.c b/src/truetype/ttdriver.c
index 0b3cb480c..9e19f28e5 100644
--- a/src/truetype/ttdriver.c
+++ b/src/truetype/ttdriver.c
@@ -430,7 +430,7 @@
/* The FT_DriverInterface structure is defined in ftdriver.h. */
- const FT_Driver_Class tt_driver_class =
+ FT_EXPORT_VAR( const FT_Driver_Class ) tt_driver_class =
{
{
ft_module_font_driver |
diff --git a/src/type1/t1driver.c b/src/type1/t1driver.c
index 49b5a5637..603546c97 100644
--- a/src/type1/t1driver.c
+++ b/src/type1/t1driver.c
@@ -324,7 +324,7 @@
- const FT_Driver_Class t1_driver_class =
+ FT_EXPORT_VAR( const FT_Driver_Class ) t1_driver_class =
{
{
ft_module_font_driver | ft_module_driver_scalable,
diff --git a/src/type1z/z1driver.c b/src/type1z/z1driver.c
index aea2c10f1..ef6570d1e 100644
--- a/src/type1z/z1driver.c
+++ b/src/type1z/z1driver.c
@@ -283,7 +283,7 @@
}
- const FT_Driver_Class t1_driver_class =
+ FT_EXPORT_VAR( const FT_Driver_Class ) t1_driver_class =
{
{
ft_module_font_driver | ft_module_driver_scalable,
diff --git a/src/winfonts/winfnt.c b/src/winfonts/winfnt.c
index 79a549eeb..99f29e866 100644
--- a/src/winfonts/winfnt.c
+++ b/src/winfonts/winfnt.c
@@ -588,7 +588,7 @@
}
- const FT_Driver_Class winfnt_driver_class =
+ FT_EXPORT_VAR( const FT_Driver_Class ) winfnt_driver_class =
{
{
ft_module_font_driver,