88 lines
2.5 KiB
C
88 lines
2.5 KiB
C
![]() |
/****************************************************************************
|
||
|
*
|
||
|
* config/public-macros.h
|
||
|
*
|
||
|
* Define a set of compiler macros used in public FreeType headers.
|
||
|
*
|
||
|
* Copyright (C) 2020 by
|
||
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||
|
*
|
||
|
* This file is part of the FreeType project, and may only be used,
|
||
|
* modified, and distributed under the terms of the FreeType project
|
||
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||
|
* this file you indicate that you have read the license and
|
||
|
* understand and accept it fully.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/* The definitions in this file are used by the public FreeType headers,
|
||
|
* and thus should be considered part of the public API.
|
||
|
*
|
||
|
* Other compiler-specific macro definitions that are not exposed by the
|
||
|
* FreeType API should go into include/freetype/internal/compiler-macros.h
|
||
|
* instead.
|
||
|
*/
|
||
|
#ifndef FREETYPE_CONFIG_PUBLIC_MACROS_H_
|
||
|
#define FREETYPE_CONFIG_PUBLIC_MACROS_H_
|
||
|
|
||
|
/* FT_BEGIN_HEADER and FT_END_HEADER might have already been defined by
|
||
|
* <freetype/config/ftheader.h>, but we don't want to include this header
|
||
|
* here, so redefine the macros here only when needed. Their definition is
|
||
|
* very stable, so keeping them in sync with the ones in the header should
|
||
|
* not be a maintenance issue.
|
||
|
*/
|
||
|
#ifndef FT_BEGIN_HEADER
|
||
|
# ifdef __cplusplus
|
||
|
# define FT_BEGIN_HEADER extern "C" {
|
||
|
# else
|
||
|
# define FT_BEGIN_HEADER /* nothing */
|
||
|
# endif
|
||
|
#endif /* FT_END_HEADER */
|
||
|
|
||
|
#ifndef FT_END_HEADER
|
||
|
# ifdef __cplusplus
|
||
|
# define FT_END_HEADER }
|
||
|
# else
|
||
|
# define FT_END_HEADER /* nothing */
|
||
|
# endif
|
||
|
#endif /* FT_END_HEADER */
|
||
|
|
||
|
FT_BEGIN_HEADER
|
||
|
|
||
|
/* Define a public FreeType API function. This ensures it is properly exported
|
||
|
* or imported at build time.
|
||
|
*/
|
||
|
#ifndef FT_EXPORT
|
||
|
|
||
|
#ifdef FT2_BUILD_LIBRARY
|
||
|
|
||
|
#if defined( _WIN32 ) && defined( DLL_EXPORT )
|
||
|
#define FT_EXPORT( x ) __declspec( dllexport ) x
|
||
|
#elif defined( __GNUC__ ) && __GNUC__ >= 4
|
||
|
#define FT_EXPORT( x ) __attribute__(( visibility( "default" ) )) x
|
||
|
#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
|
||
|
#define FT_EXPORT( x ) __global x
|
||
|
#elif defined( __cplusplus )
|
||
|
#define FT_EXPORT( x ) extern "C" x
|
||
|
#else
|
||
|
#define FT_EXPORT( x ) extern x
|
||
|
#endif
|
||
|
|
||
|
#else /* !FT2_BUILD_LIBRARY */
|
||
|
|
||
|
#if defined( _WIN32 ) && defined( DLL_IMPORT )
|
||
|
#define FT_EXPORT( x ) __declspec( dllimport ) x
|
||
|
#elif defined( __cplusplus )
|
||
|
#define FT_EXPORT( x ) extern "C" x
|
||
|
#else
|
||
|
#define FT_EXPORT( x ) extern x
|
||
|
#endif
|
||
|
|
||
|
#endif /* !FT2_BUILD_LIBRARY */
|
||
|
|
||
|
#endif /* !FT_EXPORT */
|
||
|
|
||
|
FT_END_HEADER
|
||
|
|
||
|
#endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */
|