[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'.
This commit is contained in:
parent
cb4a943bc4
commit
0f35b042e0
26
ChangeLog
26
ChangeLog
@ -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.
|
||||
|
@ -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_ */
|
||||
|
@ -27,12 +27,6 @@ FT_BEGIN_HEADER
|
||||
# if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
|
||||
# pragma set woff 3505
|
||||
# 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. */
|
||||
@ -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.
|
||||
|
2
src/cache/ftccback.h
vendored
2
src/cache/ftccback.h
vendored
@ -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_ */
|
||||
|
||||
|
@ -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_ */
|
||||
|
||||
|
||||
|
@ -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_ */
|
||||
|
||||
|
||||
|
@ -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_ */
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user