diff --git a/configure b/configure index 2a87d109240bddc8f7ccafe9286c42527e9d3046..dab70385346e6452aab28f3264ca0beb3eefb4d0 100755 --- a/configure +++ b/configure @@ -13249,6 +13249,10 @@ fi fi +if test -z $ac_header_dirent -o "$ac_header_dirent" = "no"; then + as_fn_error $? "*** Could not find dirent header that defines 'DIR'." "$LINENO" 5 +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : @@ -13361,6 +13365,10 @@ $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi +if test "$ac_cv_header_stdc" != "yes"; then + as_fn_error $? "*** ANSI C header files not found." "$LINENO" 5 +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 $as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } if ${ac_cv_header_sys_wait_h+:} false; then : @@ -13402,7 +13410,38 @@ $as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h fi -for ac_header in arpa/inet.h fcntl.h inttypes.h libintl.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/event.h sys/file.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h termios.h unistd.h utime.h arpa/nameser.h sys/io.h +if test "$ac_cv_header_sys_wait_h" != "yes"; then + as_fn_error $? "*** POSIX.1 compatible sys/wait.h is required." "$LINENO" 5 +fi + +# Check for headers that are unconditionally required on all platforms. Do not use +# this to check for headers that are only needed by modules. +for ac_header in \ + arpa/nameser.h assert.h ctype.h dlfcn.h errno.h fcntl.h float.h grp.h \ + inttypes.h limits.h locale.h math.h pwd.h netinet/in.h regex.h resolv.h \ + sched.h stdarg.h stdint.h stdio.h stdlib.h string.h syslog.h \ + sys/file.h sys/ioctl.h sys/param.h sys/resource.h sys/socket.h sys/stat.h \ + sys/time.h sys/types.h sys/un.h \ + termios.h time.h unistd.h \ + +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + + as_fn_error $? "*** A required header was not found." "$LINENO" 5 + +fi + +done + + +for ac_header in arpa/inet.h libintl.h malloc.h netdb.h stddef.h strings.h sys/event.h utime.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" diff --git a/configure.ac b/configure.ac index d04d369022b0c439b55690c4070aa9bbed41ce79..d8a567fa62202d4e43c0efa739881236793afd7f 100644 --- a/configure.ac +++ b/configure.ac @@ -589,9 +589,34 @@ AST_EXT_LIB_SETUP([ZLIB], [zlib compression], [z]) AC_FUNC_ALLOCA AC_HEADER_DIRENT +if test -z $ac_header_dirent -o "$ac_header_dirent" = "no"; then + AC_MSG_ERROR([*** Could not find dirent header that defines 'DIR'.]) +fi + AC_HEADER_STDC +if test "$ac_cv_header_stdc" != "yes"; then + AC_MSG_ERROR([*** ANSI C header files not found.]) +fi + AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h libintl.h limits.h locale.h malloc.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/event.h sys/file.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h termios.h unistd.h utime.h arpa/nameser.h sys/io.h]) +if test "$ac_cv_header_sys_wait_h" != "yes"; then + AC_MSG_ERROR([*** POSIX.1 compatible sys/wait.h is required.]) +fi + +# Check for headers that are unconditionally required on all platforms. Do not use +# this to check for headers that are only needed by modules. +AC_CHECK_HEADERS([ \ + arpa/nameser.h assert.h ctype.h dlfcn.h errno.h fcntl.h float.h grp.h \ + inttypes.h limits.h locale.h math.h pwd.h netinet/in.h regex.h resolv.h \ + sched.h stdarg.h stdint.h stdio.h stdlib.h string.h syslog.h \ + sys/file.h sys/ioctl.h sys/param.h sys/resource.h sys/socket.h sys/stat.h \ + sys/time.h sys/types.h sys/un.h \ + termios.h time.h unistd.h \ +], [], [ + AC_MSG_ERROR([*** A required header was not found.]) +]) + +AC_CHECK_HEADERS([arpa/inet.h libintl.h malloc.h netdb.h stddef.h strings.h sys/event.h utime.h]) # Any one of these packages support a mandatory requirement, so we want to check on them as early as possible. AST_EXT_LIB_CHECK([TERMCAP], [termcap], [tgetent], []) diff --git a/include/asterisk.h b/include/asterisk.h index dc530dfd41a38e9441eae02e1c9d21602fb9553e..899438b0eef58845fa71602b19ba509854307e99 100644 --- a/include/asterisk.h +++ b/include/asterisk.h @@ -19,13 +19,12 @@ #define _ASTERISK_H #include "asterisk/autoconfig.h" +#include "asterisk/compat.h" #if !defined(NO_MALLOC_DEBUG) && !defined(STANDALONE) && !defined(STANDALONE2) && defined(MALLOC_DEBUG) #include "asterisk/astmm.h" #endif -#include "asterisk/compat.h" - /* Default to allowing the umask or filesystem ACLs to determine actual file * creation permissions */ @@ -54,8 +53,6 @@ #if defined(DEBUG_FD_LEAKS) && !defined(STANDALONE) && !defined(STANDALONE2) && !defined(STANDALONE_AEL) /* These includes are all about ordering */ -#include <stdio.h> -#include <sys/types.h> #include <sys/stat.h> #include <sys/socket.h> #include <fcntl.h> diff --git a/include/asterisk/astmm.h b/include/asterisk/astmm.h index e129dc034a9a769b966de46d94027b6945984924..06300c861bf451f4e5c01bf476e277ba2e7e2078 100644 --- a/include/asterisk/astmm.h +++ b/include/asterisk/astmm.h @@ -30,21 +30,10 @@ extern "C" { #ifndef _ASTERISK_ASTMM_H #define _ASTERISK_ASTMM_H -/* IWYU pragma: private, include "asterisk/utils.h" */ - -#ifndef STANDALONE +/* IWYU pragma: private, include "asterisk.h" */ #define __AST_DEBUG_MALLOC -#include "asterisk.h" - -/* Include these now to prevent them from being needed later */ -#include <sys/types.h> -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <stdarg.h> - void *ast_std_malloc(size_t size); void *ast_std_calloc(size_t nmemb, size_t size); void *ast_std_realloc(void *ptr, size_t size); @@ -179,8 +168,6 @@ void __ast_mm_init_phase_2(void); #define ast_free(a) \ __ast_free(a,__FILE__, __LINE__, __PRETTY_FUNCTION__) -#endif /* !STANDALONE */ - #else #error "NEVER INCLUDE astmm.h DIRECTLY!!" #endif /* _ASTERISK_ASTMM_H */ diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index 5446b010cb7a6341029c7aaa0488d39f0796197d..5f8a9d37c823e4a8735af671a70871e0e27c4f94 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -62,6 +62,9 @@ /* Define to 1 if you have the `asprintf' function. */ #undef HAVE_ASPRINTF +/* Define to 1 if you have the <assert.h> header file. */ +#undef HAVE_ASSERT_H + /* Define to 1 if you have the `atan' function. */ #undef HAVE_ATAN @@ -170,6 +173,9 @@ /* Define to 1 if you have the 'crypt_r' function. */ #undef HAVE_CRYPT_R +/* Define to 1 if you have the <ctype.h> header file. */ +#undef HAVE_CTYPE_H + /* Define to 1 if you have a functional curl library. */ #undef HAVE_CURL @@ -198,6 +204,9 @@ /* Define to 1 if your system has the dladdr() GNU extension */ #undef HAVE_DLADDR +/* Define to 1 if you have the <dlfcn.h> header file. */ +#undef HAVE_DLFCN_H + /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ #undef HAVE_DOPRNT @@ -210,6 +219,9 @@ /* Define to 1 if you have the `endpwent' function. */ #undef HAVE_ENDPWENT +/* Define to 1 if you have the <errno.h> header file. */ +#undef HAVE_ERRNO_H + /* Define to 1 if you have the `euidaccess' function. */ #undef HAVE_EUIDACCESS @@ -243,6 +255,9 @@ /* Define to 1 if you have the LIBFFTW3 library. */ #undef HAVE_FFTW3 +/* Define to 1 if you have the <float.h> header file. */ +#undef HAVE_FLOAT_H + /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR @@ -312,6 +327,9 @@ /* Define if your system has the GMIME libraries. */ #undef HAVE_GMIME +/* Define to 1 if you have the <grp.h> header file. */ +#undef HAVE_GRP_H + /* Define to indicate the GSM library */ #undef HAVE_GSM @@ -461,6 +479,9 @@ /* Define to 1 if you have the <malloc.h> header file. */ #undef HAVE_MALLOC_H +/* Define to 1 if you have the <math.h> header file. */ +#undef HAVE_MATH_H + /* Define to 1 if you have the `memchr' function. */ #undef HAVE_MEMCHR @@ -756,6 +777,9 @@ /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV +/* Define to 1 if you have the <pwd.h> header file. */ +#undef HAVE_PWD_H + /* Define if your system has the PWLib libraries. */ #undef HAVE_PWLIB @@ -768,6 +792,9 @@ /* Define to 1 if you have the `regcomp' function. */ #undef HAVE_REGCOMP +/* Define to 1 if you have the <regex.h> header file. */ +#undef HAVE_REGEX_H + /* Define to 1 if you have the `remainder' function. */ #undef HAVE_REMAINDER @@ -777,6 +804,9 @@ /* Define to 1 if you have the LIBRESAMPLE library. */ #undef HAVE_RESAMPLE +/* Define to 1 if you have the <resolv.h> header file. */ +#undef HAVE_RESOLV_H + /* Define to 1 if your system has the close resolver function. */ #undef HAVE_RES_CLOSE @@ -813,6 +843,9 @@ /* Define to 1 if your system has /sbin/launchd. */ #undef HAVE_SBIN_LAUNCHD +/* Define to 1 if you have the <sched.h> header file. */ +#undef HAVE_SCHED_H + /* Define if your system has the SDL libraries. */ #undef HAVE_SDL @@ -893,6 +926,9 @@ zero-length file name argument. */ #undef HAVE_STAT_EMPTY_STRING_BUG +/* Define to 1 if you have the <stdarg.h> header file. */ +#undef HAVE_STDARG_H + /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H @@ -902,6 +938,9 @@ /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the <stdio.h> header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H @@ -1070,9 +1109,6 @@ /* Define to 1 if you have the <sys/ioctl.h> header file. */ #undef HAVE_SYS_IOCTL_H -/* Define to 1 if you have the <sys/io.h> header file. */ -#undef HAVE_SYS_IO_H - /* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H @@ -1083,6 +1119,9 @@ /* Define to 1 if your system has working sys/poll.h */ #undef HAVE_SYS_POLL_H +/* Define to 1 if you have the <sys/resource.h> header file. */ +#undef HAVE_SYS_RESOURCE_H + /* Define to 1 if you have the <sys/select.h> header file. */ #undef HAVE_SYS_SELECT_H @@ -1101,6 +1140,9 @@ /* Define to 1 if you have the <sys/types.h> header file. */ #undef HAVE_SYS_TYPES_H +/* Define to 1 if you have the <sys/un.h> header file. */ +#undef HAVE_SYS_UN_H + /* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H @@ -1122,6 +1164,9 @@ /* Define to 1 if your system defines timersub. */ #undef HAVE_TIMERSUB +/* Define to 1 if you have the <time.h> header file. */ +#undef HAVE_TIME_H + /* Define to 1 if you have the Term Info library. */ #undef HAVE_TINFO diff --git a/include/asterisk/compat.h b/include/asterisk/compat.h index 252ce914a276e5fc94f3d699ece11fd057e2443e..88f88cf8bb409a69842e74b4f69225426da71246 100644 --- a/include/asterisk/compat.h +++ b/include/asterisk/compat.h @@ -27,35 +27,18 @@ #define __STDC_VERSION__ 0 #endif -#ifdef HAVE_INTTYPES_H #include <inttypes.h> -#endif - -#ifdef HAVE_LIMITS_H #include <limits.h> -#endif - -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif #ifdef HAVE_STDDEF_H #include <stddef.h> #endif -#ifdef HAVE_STDINT_H #include <stdint.h> -#endif - -#ifdef HAVE_SYS_TYPES_H #include <sys/types.h> -#endif - #include <stdarg.h> - -#ifdef HAVE_STDLIB_H #include <stdlib.h> -#endif #ifdef HAVE_ALLOCA_H #include <alloca.h> /* not necessarily present - could be in stdlib */ @@ -65,9 +48,7 @@ #include <stdio.h> /* this is always present */ -#ifdef HAVE_STRING_H #include <string.h> -#endif #ifndef AST_POLL_COMPAT #include <poll.h> @@ -158,7 +139,6 @@ void timersub(struct timeval *tvend, struct timeval *tvstart, struct timeval *tv #include <alloca.h> #include <strings.h> -#include <string.h> #include <pthread.h> #include <sys/stat.h> #include <signal.h>