diff options
author | David Turner <david@freetype.org> | 2020-07-06 10:56:36 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2020-07-07 06:51:09 +0200 |
commit | 0f35b042e02e23cc6fb29d805d25aa85679274eb (patch) | |
tree | ea1b31ac8e1428e0267096ab465bf817d3bd1976 | |
parent | cb4a943bc4d24d48eeb5d1515c5acd880c4a82ab (diff) | |
download | freetype2-0f35b042e02e23cc6fb29d805d25aa85679274eb.tar.gz |
[build] Really fix multi and C++ builds.
The following builds were still failing due to previous changes:
make multi
make multi CC="c++"
make CC="c++"
This patch fixes the issues, which were missing includes to get the
right macro definitions in multi-build mode.
Also, `FT_UNUSED' is actually used by third-party code, so move it
back to `public-macros.h' to avoid breaking it.
* include/freetype/config/public-macros.h (FT_EXPORT): Remove
special definition for C++.
(FT_UNUSED): Define here instead of...
* include/freetype/config/compiler-macros.h: ... here.
(FT_FUNCTION_DECLARATION): Remove special definition for C++.
(FT_LOCAL_ARRAY_DEF): Fix definition.
* src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h,
src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'.
-rw-r--r-- | ChangeLog | 26 | ||||
-rw-r--r-- | include/freetype/config/public-macros.h | 16 | ||||
-rw-r--r-- | include/freetype/internal/compiler-macros.h | 19 | ||||
-rw-r--r-- | src/cache/ftccback.h | 2 | ||||
-rw-r--r-- | src/gxvalid/gxvmort.h | 5 | ||||
-rw-r--r-- | src/gxvalid/gxvmorx.h | 5 | ||||
-rw-r--r-- | src/lzw/ftzopen.h | 3 |
7 files changed, 58 insertions, 18 deletions
@@ -1,3 +1,29 @@ +2020-07-07 David Turner <david@freetype.org> + + [build] Really fix multi and C++ builds. + + The following builds were still failing due to previous changes: + + make multi + make multi CC="c++" + make CC="c++" + + This patch fixes the issues, which were missing includes to get the + right macro definitions in multi-build mode. + + Also, `FT_UNUSED' is actually used by third-party code, so move it + back to `public-macros.h' to avoid breaking it. + + * include/freetype/config/public-macros.h (FT_EXPORT): Remove + special definition for C++. + (FT_UNUSED): Define here instead of... + * include/freetype/config/compiler-macros.h: ... here. + (FT_FUNCTION_DECLARATION): Remove special definition for C++. + (FT_LOCAL_ARRAY_DEF): Fix definition. + + * src/cache/ftccback.h, src/lzw/ftzopen.h, src/gxvalid/gxvmort.h, + src/gxvalid/gxvmorx.h: Add `FT_BEGIN_HEADER' and `FT_END_HEADER'. + 2020-07-06 David Turner <david@freetype.org> [build] Fix multi and C++ builds. diff --git a/include/freetype/config/public-macros.h b/include/freetype/config/public-macros.h index b1fa0f2b3..5cc3236ed 100644 --- a/include/freetype/config/public-macros.h +++ b/include/freetype/config/public-macros.h @@ -78,13 +78,23 @@ FT_BEGIN_HEADER * * FT_EXPORT( FT_Bool ) FT_Object_Method( FT_Object obj, ... ); * + * NOTE: This requires that all FT_EXPORT() uses are inside FT_BEGIN_HEADER .. + * FT_END_HEADER blocks. This guarantees that the functions are exported with + * C linkage, even when the header is included by a C++ source file. */ -#ifdef __cplusplus -#define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern "C" x -#else #define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern x + + /* `FT_UNUSED` indicates that a given parameter is not used -- */ + /* this is only used to get rid of unpleasant compiler warnings. */ + /* */ + /* Technically, this was not meant to be part of the public API, */ + /* but some third-party code depends on it. */ + /* */ +#ifndef FT_UNUSED +#define FT_UNUSED( arg ) ( (arg) = (arg) ) #endif + FT_END_HEADER #endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */ diff --git a/include/freetype/internal/compiler-macros.h b/include/freetype/internal/compiler-macros.h index 1f432bca5..b62c0777b 100644 --- a/include/freetype/internal/compiler-macros.h +++ b/include/freetype/internal/compiler-macros.h @@ -29,12 +29,6 @@ FT_BEGIN_HEADER # endif #endif - /* `FT_UNUSED` indicates that a given parameter is not used -- */ - /* this is only used to get rid of unpleasant compiler warnings. */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - /* Fix compiler warning with sgi compiler. */ #if defined( __sgi ) && !defined( __GNUC__ ) # if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 ) @@ -126,18 +120,13 @@ FT_BEGIN_HEADER * * FT_FUNCTION_DECLARATION(int) foo(int x); * - * NOTE: Technically, all FreeType headers put their function declarations - * inside an extern "C" block, giving them C linkage. This means that using - * this macro is only necessary within internal source files, but using it in - * a header will be harmless. + * NOTE: This requires that all uses are inside FT_BEGIN_HEADER..FT_END_HEADER + * blocks. Which guarantees that the declarations have C linkage when the + * headers are included by C++ sources. * * NOTE: Do not use directly, use FT_LOCAL()/FT_BASE()/FT_EXPORT() instead. */ -#ifdef __cplusplus -#define FT_FUNCTION_DECLARATION( x ) extern "C" x -#else #define FT_FUNCTION_DECLARATION( x ) extern x -#endif /* Same as FT_FUNCTION_DECLARATION(), but for function definitions instead. * NOTE: Do not use directly, use FT_LOCAL_DEF()/FT_BASE_DEF()/FT_EXPORT_DEF() @@ -171,7 +160,7 @@ FT_BEGIN_HEADER * sub-directory, but are otherwise internal to the library. */ #define FT_LOCAL_ARRAY( x ) FT_INTERNAL_FUNCTION_ATTRIBUTE extern const x -#define FT_LOCAL_ARRAY_DEF( x ) const x +#define FT_LOCAL_ARRAY_DEF( x ) FT_FUNCTION_DEFINITION( const x ) /* Use FT_BASE()/FT_BASE_DEF() to declare or define an internal library * function that are used by more than one single module. diff --git a/src/cache/ftccback.h b/src/cache/ftccback.h index 802fd4444..542acb156 100644 --- a/src/cache/ftccback.h +++ b/src/cache/ftccback.h @@ -25,6 +25,7 @@ #include "ftcglyph.h" #include "ftcsbits.h" +FT_BEGIN_HEADER FT_LOCAL( void ) ftc_inode_free( FTC_Node inode, @@ -84,6 +85,7 @@ ftc_node_destroy( FTC_Node node, FTC_Manager manager ); +FT_END_HEADER #endif /* FTCCBACK_H_ */ diff --git a/src/gxvalid/gxvmort.h b/src/gxvalid/gxvmort.h index 24c7e45b2..7237c5825 100644 --- a/src/gxvalid/gxvmort.h +++ b/src/gxvalid/gxvmort.h @@ -34,6 +34,9 @@ #include <freetype/ftsnames.h> +FT_BEGIN_HEADER + + typedef struct GXV_mort_featureRec_ { FT_UShort featureType; @@ -88,6 +91,8 @@ GXV_Validator gxvalid ); +FT_END_HEADER + #endif /* GXVMORT_H_ */ diff --git a/src/gxvalid/gxvmorx.h b/src/gxvalid/gxvmorx.h index ceb14a9e8..f747b1d63 100644 --- a/src/gxvalid/gxvmorx.h +++ b/src/gxvalid/gxvmorx.h @@ -36,6 +36,9 @@ #include <freetype/ftsnames.h> +FT_BEGIN_HEADER + + FT_LOCAL( void ) gxv_morx_subtable_type0_validate( FT_Bytes table, FT_Bytes limit, @@ -62,6 +65,8 @@ GXV_Validator gxvalid ); +FT_END_HEADER + #endif /* GXVMORX_H_ */ diff --git a/src/lzw/ftzopen.h b/src/lzw/ftzopen.h index cb9206b3e..d8768f7b4 100644 --- a/src/lzw/ftzopen.h +++ b/src/lzw/ftzopen.h @@ -24,6 +24,7 @@ #include <freetype/freetype.h> +FT_BEGIN_HEADER /* * This is a complete re-implementation of the LZW file reader, @@ -165,6 +166,8 @@ /* */ +FT_END_HEADER + #endif /* FTZOPEN_H_ */ |