From 10effdf61e6ee3d35394acf58e7cdc7121798b36 Mon Sep 17 00:00:00 2001 From: David Turner Date: Wed, 29 Dec 1999 00:22:24 +0000 Subject: [PATCH] Added the rules files `module.mk' to "sfnt", "truetype" and "type1" to reflect the new modules/drivers list management performed through the file `freetype2/config/modules.mk' Changed the driver header files to reflect the new modules/drivers list management. We get rid, at last, of the infamous pre-processor tricks used to build the list at compile time. `src/base/ftinit.c' is also modified to reflect the changes.. --- src/base/ftdriver.h | 62 ----------------------------------------- src/base/ftinit.c | 61 ++++++++++++---------------------------- src/sfnt/module.mk | 6 ++++ src/sfnt/rules.mk | 7 ----- src/sfnt/sfdriver.h | 52 ---------------------------------- src/truetype/module.mk | 6 ++++ src/truetype/rules.mk | 7 ----- src/truetype/ttdriver.h | 52 ---------------------------------- src/type1/module.mk | 6 ++++ src/type1/rules.mk | 8 ------ src/type1/t1driver.h | 49 -------------------------------- 11 files changed, 36 insertions(+), 280 deletions(-) create mode 100644 src/sfnt/module.mk create mode 100644 src/truetype/module.mk create mode 100644 src/type1/module.mk diff --git a/src/base/ftdriver.h b/src/base/ftdriver.h index 04cf74809..fe24f4641 100644 --- a/src/base/ftdriver.h +++ b/src/base/ftdriver.h @@ -573,68 +573,6 @@ } FT_DriverInterface; - - - /*************************************************************************/ - /* */ - /* */ - /* FT_DriverChain */ - /* */ - /* */ - /* A very structure used exclusively by "ftinit.c" in the function */ - /* FT_Add_Default_Drivers. This function is in charge of loading the */ - /* set of "default" font drivers into each new library object. */ - /* */ - /* The set itself is determined at _compile_ time through various */ - /* macro definitions. */ - /* */ - /* */ - /* next :: pointer to next element in driver list chain */ - /* interface :: pointer to the driver's interface */ - /* */ - typedef struct FT_DriverChain_ FT_DriverChain; - - struct FT_DriverChain_ - { - const FT_DriverChain* next; - const FT_DriverInterface* interface; - }; - - -/************************************************************************* - * - * Here is a template of the code that should appear in each - * font driver's _interface_ file (the one included by "ftinit.c"). - * - * It is used to build, at compile time, a simple linked list of - * the interfaces of the drivers which have been #included in - * "ftinit.c". See the source code of the latter file for details - * - * (Note that this is only required when you want your driver included - * in the set of default drivers loaded by FT_Init_FreeType. Other - * drivers can still be added manually at runtime with FT_Add_Driver. - * - * { - * #ifdef FTINIT_DRIVER_CHAIN - * - * static - * const FT_DriverChain ftinit__driver_chain = - * { - * FT_INIT_LAST_DRIVER_CHAIN, - * &_driver_interface - * }; - * - * #undef FT_INIT_LAST_DRIVER_CHAIN - * #define FT_INIT_LAST_DRIVER_CHAIN &ftinit__driver_chain - * - * #endif - * } - * - * replace with your driver's prefix - * - *************************************************************************/ - - #endif /* FTDRIVER_H */ diff --git a/src/base/ftinit.c b/src/base/ftinit.c index ca754aedf..56f41f609 100644 --- a/src/base/ftinit.c +++ b/src/base/ftinit.c @@ -48,47 +48,25 @@ ************************************************************************/ #include -#include #include #include +#include #undef FT_COMPONENT #define FT_COMPONENT trace_init - /*************************************************************************/ - /* */ - /* The macros FT_SUPPORT_xxxx are defined by Makefile.lib when this file */ - /* is compiled. They come from a make variable called FTINIT_MACROS */ - /* which is updated by each driver Makefile. */ - /* */ - /* This means that when a driver isn't part of the build, ftinit.o */ - /* won't try to reference it. */ - /* */ - /*************************************************************************/ - -#define FTINIT_DRIVER_CHAIN -#define FT_INIT_LAST_DRIVER_CHAIN ((FT_DriverChain*) 0) - - /* Include the SFNT driver interface if needed */ - -#ifdef FT_SUPPORT_SFNT -#include "sfdriver.h" -#endif - - /* Include the TrueType driver interface if needed */ - -#ifdef FT_SUPPORT_TRUETYPE -#include "ttdriver.h" -#endif - - - /* Include the Type1 driver interface if needed */ - -#ifdef FT_SUPPORT_TYPE1 -#include "t1driver.h" -#endif +#undef FT_DRIVER +#define FT_DRIVER(x) extern FT_DriverInterface x; +#include +#undef FT_DRIVER +#define FT_DRIVER(x) &x, +static +const FT_DriverInterface* ft_default_drivers[] = { +#include + 0 +}; /*************************************************************************/ /* */ @@ -104,23 +82,20 @@ EXPORT_FUNC void FT_Default_Drivers( FT_Library library ) { - FT_Error error; - const FT_DriverChain* chain = FT_INIT_LAST_DRIVER_CHAIN; + FT_Error error; + const FT_DriverInterface* *cur; - while (chain) + cur = ft_default_drivers; + while (*cur) { - error = FT_Add_Driver( library, chain->interface ); - + error = FT_Add_Driver( library, *cur ); /* notify errors, but don't stop */ if (error) { FT_ERROR(( "FT.Default_Drivers: cannot install `%s', error = %x\n", - chain->interface->driver_name, - error )); + (*cur)->driver_name, error )); } - - chain = chain->next; - error = 0; /* clear error */ + cur++; } } diff --git a/src/sfnt/module.mk b/src/sfnt/module.mk new file mode 100644 index 000000000..66ae7d22e --- /dev/null +++ b/src/sfnt/module.mk @@ -0,0 +1,6 @@ +make_module_list: add_sfnt_driver + +add_sfnt_driver: + $(OPEN_DRIVER)sfnt_driver_interface$(CLOSE_DRIVER) + $(ECHO_DRIVER)sfnt $(ECHO_DRIVER_DESC) pseudo-driver for TrueType & OpenType formats $(ECHO_DRIVER_DONE) + diff --git a/src/sfnt/rules.mk b/src/sfnt/rules.mk index 2aa008b57..3232cad39 100644 --- a/src/sfnt/rules.mk +++ b/src/sfnt/rules.mk @@ -161,12 +161,5 @@ $(OBJ_)sf%.$O: $(SFNT_DIR_)sf%.c $(BASE_H) $(SHARED_H) $(SFNT_DRV_H) DRV_OBJS_S += $(SFNT_DRV_OBJ_S) DRV_OBJS_M += $(SFNT_DRV_OBJ_M) - -# update `ftinit' variables -# -FTINIT_DRIVER_PATHS += $(SFNT_DIR) $(SHARED) -FTINIT_DRIVER_H += $(SFNT_DRV_H) -FTINIT_DRIVER_MACROS += FT_SUPPORT_SFNT - endif # END diff --git a/src/sfnt/sfdriver.h b/src/sfnt/sfdriver.h index fd10d88a6..b0eb25850 100644 --- a/src/sfnt/sfdriver.h +++ b/src/sfnt/sfdriver.h @@ -25,58 +25,6 @@ EXPORT_DEF const FT_DriverInterface sfnt_driver_interface; - - -/************************************************************************* - * - * Here is a template of the code that should appear in each - * font driver's _interface_ file (the one included by "ftinit.c"). - * - * It is used to build, at compile time, a simple linked list of - * the interfaces of the drivers which have been #included in - * "ftinit.c". See the source code of the latter file for details - * - * (Note that this is only required when you want your driver included - * in the set of default drivers loaded by FT_Init_FreeType. Other - * drivers can still be added manually at runtime with FT_Add_Driver. - * - * { - * #ifdef FTINIT_DRIVER_CHAIN - * - * static - * const FT_DriverChain ftinit__driver_chain = - * { - * FT_INIT_LAST_DRIVER_CHAIN, - * &_driver_interface - * }; - * - * #undef FT_INIT_LAST_DRIVER_CHAIN - * #define FT_INIT_LAST_DRIVER_CHAIN &ftinit__driver_chain - * - * #endif - * } - * - * replace with your driver's prefix - * - *************************************************************************/ - - -#ifdef FTINIT_DRIVER_CHAIN - - static - const FT_DriverChain ftinit_sfnt_driver_chain = - { - FT_INIT_LAST_DRIVER_CHAIN, - &sfnt_driver_interface - }; - -#undef FT_INIT_LAST_DRIVER_CHAIN -#define FT_INIT_LAST_DRIVER_CHAIN &ftinit_sfnt_driver_chain - -#endif /* FTINIT_DRIVER_CHAIN */ - - - #endif /* SFDRIVER_H */ diff --git a/src/truetype/module.mk b/src/truetype/module.mk new file mode 100644 index 000000000..1c9152631 --- /dev/null +++ b/src/truetype/module.mk @@ -0,0 +1,6 @@ +make_module_list: add_truetype_driver + +add_truetype_driver: + $(OPEN_DRIVER)tt_driver_interface$(CLOSE_DRIVER) + $(ECHO_DRIVER)truetype $(ECHO_DRIVER_DESC) Windows/Mac font files with extension *.ttf or *.ttc $(ECHO_DRIVER_DONE) + diff --git a/src/truetype/rules.mk b/src/truetype/rules.mk index cba7ac126..3d029efdc 100644 --- a/src/truetype/rules.mk +++ b/src/truetype/rules.mk @@ -195,11 +195,4 @@ $(OBJ_)ttpload.$O: $(TT_DIR_)ttpload.c $(BASE_H) $(SFNT_SRC) $(TT_DRV_H) DRV_OBJS_S += $(TT_DRV_OBJ_S) DRV_OBJS_M += $(TT_DRV_OBJ_M) - -# update `ftinit' variables -# -FTINIT_DRIVER_PATHS += $(SFNT_DIR) $(TT_DIR) $(TT_EXT_DIR) -FTINIT_DRIVER_H += $(SFNT_H) $(TT_DRV_H) -FTINIT_DRIVER_MACROS += FT_SUPPORT_TRUETYPE - # END diff --git a/src/truetype/ttdriver.h b/src/truetype/ttdriver.h index eba67b612..16e20c3e8 100644 --- a/src/truetype/ttdriver.h +++ b/src/truetype/ttdriver.h @@ -135,58 +135,6 @@ EXPORT_DEF const TT_DriverInterface tt_format_interface; - - -/************************************************************************* - * - * Here is a template of the code that should appear in each - * font driver's _interface_ file (the one included by "ftinit.c"). - * - * It is used to build, at compile time, a simple linked list of - * the interfaces of the drivers which have been #included in - * "ftinit.c". See the source code of the latter file for details - * - * (Note that this is only required when you want your driver included - * in the set of default drivers loaded by FT_Init_FreeType. Other - * drivers can still be added manually at runtime with FT_Add_Driver. - * - * { - * #ifdef FTINIT_DRIVER_CHAIN - * - * static - * const FT_DriverChain ftinit__driver_chain = - * { - * FT_INIT_LAST_DRIVER_CHAIN, - * &_driver_interface - * }; - * - * #undef FT_INIT_LAST_DRIVER_CHAIN - * #define FT_INIT_LAST_DRIVER_CHAIN &ftinit__driver_chain - * - * #endif - * } - * - * replace with your driver's prefix - * - *************************************************************************/ - - -#ifdef FTINIT_DRIVER_CHAIN - - static - const FT_DriverChain ftinit_tt_driver_chain = - { - FT_INIT_LAST_DRIVER_CHAIN, - &tt_driver_interface - }; - -#undef FT_INIT_LAST_DRIVER_CHAIN -#define FT_INIT_LAST_DRIVER_CHAIN &ftinit_tt_driver_chain - -#endif /* FTINIT_DRIVER_CHAIN */ - - - #endif /* TTDRIVER_H */ diff --git a/src/type1/module.mk b/src/type1/module.mk new file mode 100644 index 000000000..0acc599cd --- /dev/null +++ b/src/type1/module.mk @@ -0,0 +1,6 @@ +make_module_list: add_type1_driver + +add_type1_driver: + $(OPEN_DRIVER)t1_driver_interface$(CLOSE_DRIVER) + $(ECHO_DRIVER)type1 $(ECHO_DRIVER_DESC) Postscript font files with extension *.pfa or *.pfb $(ECHO_DRIVER_DONE) + diff --git a/src/type1/rules.mk b/src/type1/rules.mk index adae99c86..3c50a4d8b 100644 --- a/src/type1/rules.mk +++ b/src/type1/rules.mk @@ -156,12 +156,4 @@ $(OBJ_)t1%.$O: $(T1SHARED_DIR_)t1%.c $(BASE_H) $(T1SHARED_H) DRV_OBJS_S += $(T1_DRV_OBJ_S) DRV_OBJS_M += $(T1_DRV_OBJ_M) - -# update 'ftinit' variables -# -FTINIT_DRIVER_PATHS += $(T1_DIR) $(T1SHARED_DIR) -FTINIT_DRIVER_H += $(T1_DRV_H) -FTINIT_DRIVER_MACROS += FT_SUPPORT_TYPE1 - - # END diff --git a/src/type1/t1driver.h b/src/type1/t1driver.h index 61a16b0c0..a442035c3 100644 --- a/src/type1/t1driver.h +++ b/src/type1/t1driver.h @@ -24,54 +24,5 @@ EXPORT_DEF const FT_DriverInterface t1_driver_interface; - -/************************************************************************* - * - * Here is a template of the code that should appear in each - * font driver's _interface_ file (the one included by "ftinit.c"). - * - * It is used to build, at compile time, a simple linked list of - * the interfaces of the drivers which have been #included in - * "ftinit.c". See the source code of the latter file for details - * - * (Note that this is only required when you want your driver included - * in the set of default drivers loaded by FT_Init_FreeType. Other - * drivers can still be added manually at runtime with FT_Add_Driver. - * - * { - * #ifdef FTINIT_DRIVER_CHAIN - * - * static - * const FT_DriverChain ftinit__driver_chain = - * { - * FT_INIT_LAST_DRIVER_CHAIN, - * &_driver_interface - * }; - * - * #undef FT_INIT_LAST_DRIVER_CHAIN - * #define FT_INIT_LAST_DRIVER_CHAIN &ftinit__driver_chain - * - * #endif - * } - * - * replace with your driver's prefix - * - *************************************************************************/ - -#ifdef FTINIT_DRIVER_CHAIN - - static - const FT_DriverChain ftinit_t1_driver_chain = - { - FT_INIT_LAST_DRIVER_CHAIN, - &t1_driver_interface - }; - -#undef FT_INIT_LAST_DRIVER_CHAIN -#define FT_INIT_LAST_DRIVER_CHAIN &ftinit_t1_driver_chain - -#endif /* FTINIT_DRIVER_CHAIN */ - - #endif /* T1DRIVER_H */