
# Copyright (C) Igor Sysoev


CC_WARN=
ngx_fmt_collect=yes

# C types

ngx_type="int"; . auto/types/sizeof
#ngx_formats="%d"; . auto/fmt/fmt

ngx_type="long"; . auto/types/sizeof
#ngx_formats="%ld"; . auto/fmt/fmt

ngx_type="long long"; . auto/types/sizeof
#ngx_formats="%lld %qd"; . auto/fmt/fmt

ngx_type="void *"; . auto/types/sizeof; ngx_ptr_size=$ngx_size
#ngx_fmt_name=PTR_FMT;
#eval ngx_formats=\${ngx_${ngx_ptr_size}_fmt}; . auto/fmt/ptrfmt


# POSIX types

NGX_INCLUDE_AUTO_CONFIG_H="#include \"../$NGX_AUTO_CONFIG_H\""

ngx_type="uint64_t"; ngx_types="u_int64_t"; . auto/types/typedef

ngx_type="sig_atomic_t"; ngx_types="int"; . auto/types/typedef
. auto/types/sizeof
ngx_param=SIG_ATOMIC_T_SIZE; ngx_value=$ngx_size; . auto/types/value

ngx_type="socklen_t"; ngx_types="uint32_t"; . auto/types/typedef

ngx_type="in_addr_t"; ngx_types="uint32_t"; . auto/types/typedef

ngx_type="in_port_t"; ngx_types="u_short"; . auto/types/typedef

ngx_type="rlim_t"; ngx_types="int"; . auto/types/typedef

. auto/types/uintptr_t

. auto/endianess


# printf() formats

#CC_WARN=$CC_STRONG
#ngx_fmt_collect=no
#
#ngx_fmt_name=OFF_T_FMT; ngx_type="off_t"; . auto/types/sizeof
ngx_param=OFF_T_MAX_VALUE; ngx_value=$ngx_max_value; . auto/types/value
#eval ngx_formats=\${ngx_${ngx_size}_fmt}; . auto/fmt/fmt
#
#ngx_fmt_name=TIME_T_FMT; ngx_type="time_t"; . auto/types/sizeof
ngx_param=TIME_T_SIZE; ngx_value=$ngx_size; . auto/types/value
ngx_param=TIME_T_LEN; ngx_value=$ngx_max_len; . auto/types/value
#eval ngx_formats=\${ngx_${ngx_size}_fmt}; . auto/fmt/fmt
#
#ngx_fmt_name=SIZE_T_FMT; ngx_type="size_t"; . auto/types/sizeof
#eval ngx_formats=\${ngx_${ngx_size}_fmt}; . auto/fmt/fmt
#
#ngx_fmt_name=SIZE_T_X_FMT; . auto/fmt/xfmt
#
#ngx_fmt_name=PID_T_FMT; ngx_type="pid_t"; . auto/types/sizeof
#eval ngx_formats=\${ngx_${ngx_size}_fmt}; . auto/fmt/fmt
#
#ngx_fmt_name=RLIM_T_FMT; ngx_type="rlim_t"; . auto/types/sizeof
#eval ngx_formats=\${ngx_${ngx_size}_fmt}; . auto/fmt/fmt


# syscalls, libc calls and some features


ngx_feature="setproctitle()"
ngx_feature_name="HAVE_SETPROCTITLE"
ngx_feature_run=no
ngx_feature_incs=
ngx_feature_libs=
ngx_feature_test="setproctitle(\"test\");"
. auto/feature


ngx_feature="pread()"
ngx_feature_name="pread"
ngx_feature_run=no
ngx_feature_incs=
ngx_feature_libs=
ngx_feature_test="char buf[1]; ssize_t n; n = pread(0, buf, 1, 0)"
. auto/feature


ngx_feature="pwrite()"
ngx_feature_name="pwrite"
ngx_feature_run=no
ngx_feature_incs=
ngx_feature_libs=
ngx_feature_test="char buf[1]; ssize_t n; n = pwrite(1, buf, 1, 0)"
. auto/feature


ngx_feature="strerror_r()"
ngx_feature_name="strerror_r"
ngx_feature_run=yes
ngx_feature_incs="#include <string.h>"
ngx_feature_libs=
ngx_feature_test="char buf[32]; int n; n = strerror_r(1, buf, 32);
                  if (n > 32) return 1;"
. auto/feature


# GNU style strerror_r() returns not length, but pointer

ngx_feature="gnu style strerror_r()"
ngx_feature_name="gnu_strerror_r"
ngx_feature_run=yes
ngx_feature_incs="#include <string.h>"
ngx_feature_libs=
ngx_feature_test="char buf[32]; int n; n = strerror_r(1, buf, 32);
                  if (n < 32) return 1;"
. auto/feature


ngx_feature="localtime_r()"
ngx_feature_name="localtime_r"
ngx_feature_run=no
ngx_feature_incs="#include <time.h>"
ngx_feature_libs=
ngx_feature_test="struct tm t; time_t c=0; localtime_r(&c, &t)"
. auto/feature


ngx_feature="posix_memalign()"
ngx_feature_name="posix_memalign"
ngx_feature_run=no
ngx_feature_incs="#include <stdlib.h>"
ngx_feature_libs=
ngx_feature_test="void *p; int n; n = posix_memalign(&p, 4096, 4096)"
. auto/feature


ngx_feature="memalign()"
ngx_feature_name="memalign"
ngx_feature_run=no
ngx_feature_incs="#include <stdlib.h>"
ngx_feature_libs=
ngx_feature_test="void *p; p = memalign(4096, 4096)"
. auto/feature


ngx_feature="sched_yield()"
ngx_feature_name="HAVE_SCHED_YIELD"
ngx_feature_run=no
ngx_feature_incs="#include <sched.h>"
ngx_feature_libs=
ngx_feature_test="sched_yield()"
. auto/feature


ngx_feature="mmap(MAP_ANON|MAP_SHARED)"
ngx_feature_name="MAP_ANON"
ngx_feature_run=yes
ngx_feature_incs="#include <sys/mman.h>"
ngx_feature_libs=
ngx_feature_test="void *p;
                  p = mmap(NULL, 4096, PROT_READ|PROT_WRITE,
                           MAP_ANON|MAP_SHARED, -1, 0);
                  if (p == MAP_FAILED) return 1;"
. auto/feature


ngx_feature='mmap("/dev/zero", MAP_SHARED)'
ngx_feature_name="MAP_DEVZERO"
ngx_feature_run=yes
ngx_feature_incs="#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>"
ngx_feature_libs=
ngx_feature_test='void *p; int  fd;
                  fd = open("/dev/zero", O_RDWR);
                  p = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
                  if (p == MAP_FAILED) return 1;'
. auto/feature


ngx_feature="System V shared memory"
ngx_feature_name="SYSVSHM"
ngx_feature_run=yes
ngx_feature_incs="#include <sys/ipc.h>
#include <sys/shm.h>"
ngx_feature_libs=
ngx_feature_test="int  id;
                  id = shmget(IPC_PRIVATE, 4096, (SHM_R|SHM_W|IPC_CREAT));
                  if (id == -1) return 1;
                  shmctl(id, IPC_RMID, NULL);"
. auto/feature


ngx_feature="struct msghdr.msg_control"
ngx_feature_name="msghdr_msg_control"
ngx_feature_run=no
ngx_feature_incs="#include <sys/socket.h>"
ngx_feature_libs=
ngx_feature_test="struct msghdr  msg; msg.msg_control = NULL"
. auto/feature


ngx_feature="ioctl(FIONBIO)"
ngx_feature_name="FIONBIO"
ngx_feature_run=no
ngx_feature_incs="#include <sys/ioctl.h>
$NGX_INCLUDE_SYS_FILIO_H"
ngx_feature_libs=
ngx_feature_test="int i; i = FIONBIO"
. auto/feature


ngx_feature="struct tm.tm_gmtoff"
ngx_feature_name="gmtoff"
ngx_feature_run=no
ngx_feature_incs="#include <time.h>"
ngx_feature_libs=
ngx_feature_test="struct tm  tm; tm.tm_gmtoff = 0"
. auto/feature
