X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/648e5523fbfc3dfbce58f66437112bc442470c87..51caf50203be08ba6f15e0d72b777f036d6bee72:/src/conf_post.h diff --git a/src/conf_post.h b/src/conf_post.h index 6c9747a436..2d967c0fef 100644 --- a/src/conf_post.h +++ b/src/conf_post.h @@ -44,26 +44,11 @@ along with GNU Emacs. If not, see . */ # define __has_attribute(a) 0 /* non-clang */ #endif -/* This silences a few compilation warnings on FreeBSD. */ -#ifdef BSD_SYSTEM_AHB -#undef BSD_SYSTEM_AHB -#undef BSD_SYSTEM -#if __FreeBSD__ == 1 -#define BSD_SYSTEM 199103 -#elif __FreeBSD__ == 2 -#define BSD_SYSTEM 199306 -#elif __FreeBSD__ >= 3 -#define BSD_SYSTEM 199506 -#endif -#endif - #ifdef DARWIN_OS #ifdef emacs #define malloc unexec_malloc #define realloc unexec_realloc #define free unexec_free -/* Don't use posix_memalign because it is not compatible with unexmacosx.c. */ -#undef HAVE_POSIX_MEMALIGN #endif /* The following solves the problem that Emacs hangs when evaluating (make-comint "test0" "/nodir/nofile" nil "") when /nodir/nofile @@ -173,13 +158,7 @@ extern void _DebPrint (const char *fmt, ...); /* Tell regex.c to use a type compatible with Emacs. */ #define RE_TRANSLATE_TYPE Lisp_Object #define RE_TRANSLATE(TBL, C) char_table_translate (TBL, C) -#ifdef make_number -/* If make_number is a macro, use it. */ #define RE_TRANSLATE_P(TBL) (!EQ (TBL, make_number (0))) -#else -/* If make_number is a function, avoid it. */ -#define RE_TRANSLATE_P(TBL) (!(INTEGERP (TBL) && XINT (TBL) == 0)) -#endif #endif #include @@ -220,21 +199,59 @@ extern void _DebPrint (const char *fmt, ...); #undef noinline #endif -#define INLINE _GL_INLINE +/* Use Gnulib's extern-inline module for extern inline functions. + An include file foo.h should prepend FOO_INLINE to function + definitions, with the following overall pattern: + + [#include any other .h files first.] + ... + INLINE_HEADER_BEGIN + ... + INLINE int + incr (int i) + { + return i + 1; + } + ... + INLINE_HEADER_END + + For every executable, exactly one file that includes the header + should do this: + + #define INLINE EXTERN_INLINE + + before including config.h or any other .h file. + Other .c files should not define INLINE. + + C99 compilers compile functions like 'incr' as C99-style extern + inline functions. Pre-C99 GCCs do something similar with + GNU-specific keywords. Pre-C99 non-GCC compilers use static + functions, which bloats the code but is good enough. */ + +#ifndef INLINE +# define INLINE _GL_INLINE +#endif #define EXTERN_INLINE _GL_EXTERN_INLINE #define INLINE_HEADER_BEGIN _GL_INLINE_HEADER_BEGIN #define INLINE_HEADER_END _GL_INLINE_HEADER_END +/* To use the struct hack with N elements, declare the struct like this: + struct s { ...; t name[FLEXIBLE_ARRAY_MEMBER]; }; + and allocate (offsetof (struct s, name) + N * sizeof (t)) bytes. */ +#if 199901 <= __STDC_VERSION__ +# define FLEXIBLE_ARRAY_MEMBER +#elif __GNUC__ && !defined __STRICT_ANSI__ +# define FLEXIBLE_ARRAY_MEMBER 0 +#else +# define FLEXIBLE_ARRAY_MEMBER 1 +#endif + /* Use this to suppress gcc's `...may be used before initialized' warnings. */ #ifdef lint /* Use CODE only if lint checking is in effect. */ # define IF_LINT(Code) Code -/* Assume that the expression COND is true. This differs in intent - from 'assert', as it is a message from the programmer to the compiler. */ -# define lint_assume(cond) ((cond) ? (void) 0 : abort ()) #else # define IF_LINT(Code) /* empty */ -# define lint_assume(cond) ((void) (0 && (cond))) #endif /* conf_post.h ends here */