Defining uint64_t, etc., during configure

A system where I’m trying to build nginx doesn’t define a few types it
needs like uint64_t, uint32_t, uintptr_t, etc., anywhere in
/usr/include. What is the proper way to define these missing types for
nginx’s configure?

On Mon, Apr 26, 2010 at 10:08:59AM -0400, Brian Lewis wrote:

A system where I’m trying to build nginx doesn’t define a few types it
needs like uint64_t, uint32_t, uintptr_t, etc., anywhere in
/usr/include. What is the proper way to define these missing types for
nginx’s configure?

It seems there is no way currently to make it right.
What is your system ?


Igor S.
http://sysoev.ru/en/

On Tuesday, 27.04.10 at 21:50, Igor S. wrote:

On Mon, Apr 26, 2010 at 10:08:59AM -0400, Brian Lewis wrote:

A system where I’m trying to build nginx doesn’t define a few types
it needs like uint64_t, uint32_t, uintptr_t, etc., anywhere in
/usr/include. What is the proper way to define these missing types
for nginx’s configure?

It seems there is no way currently to make it right.
What is your system ?

The 'uname -a’s are

SCO_SV sco5 3.2 5.0.6 i386
SCO_SV sco6 5 6.0.0 i386

On Tuesday, 27.04.10 at 22:35, Igor S. wrote:

Try the attached patch. It should show found replacements and fail on
uintptr_t. Could you show the new ./configure output from

checking for int size … 4 bytes
to
checking for uintptr_t …

?

Thank you for the patch. The output is

checking for int size … 4 bytes
checking for long size … 4 bytes
checking for long long size … 8 bytes
checking for void * size … 4 bytes
checking for int64_t … int64_t not found, long long used
checking for uint64_t … uint64_t not found u_int64_t not found,
unsigned long long used
checking for int32_t … int32_t not found, int used
checking for uint32_t … uint32_t not found u_int32_t not found,
unsigned int used
checking for sig_atomic_t … found
checking for sig_atomic_t size … 4 bytes
checking for socklen_t … socklen_t not found, int used
checking for in_addr_t … in_addr_t not found uint32_t not found,
unsigned int used
checking for in_port_t … in_port_t not found, u_short used
checking for rlim_t … found
checking for uintptr_t … uintptr_t not found , uint32_t used

./configure completes successfully. Then, make produces

gcc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter
-Wunused-function -Wunused-variable -Wunused-value -Werror -g -I
src/core -I src/event -I src/event/modules -I src/os/unix -I objs
-o objs/src/core/nginx.o
src/core/nginx.c
In file included from src/os/unix/ngx_posix_config.h:96,
from src/core/ngx_config.h:41,
from src/core/nginx.c:7:
objs/ngx_auto_config.h:167: warning: redefinition of int32_t' /usr/include/sys/bitypes.h:82: warning:int32_t’ previously declared
here

On Tue, Apr 27, 2010 at 03:39:25PM -0400, Brian Lewis wrote:

Thank you for the patch. The output is
checking for sig_atomic_t size … 4 bytes
src/core/nginx.c
In file included from src/os/unix/ngx_posix_config.h:96,
from src/core/ngx_config.h:41,
from src/core/nginx.c:7:
objs/ngx_auto_config.h:167: warning: redefinition of int32_t' /usr/include/sys/bitypes.h:82: warning: int32_t’ previously declared here

It seems SCO has int32_t. Then could you show what is after
“checking for int32_t” in objs/autoconf.err ?


Igor S.
http://sysoev.ru/en/

On Tue, Apr 27, 2010 at 01:57:32PM -0400, Brian Lewis wrote:

The 'uname -a’s are

SCO_SV sco5 3.2 5.0.6 i386
SCO_SV sco6 5 6.0.0 i386

Try the attached patch. It should show found replacements and fail on
uintptr_t. Could you show the new ./configure output from

checking for int size … 4 bytes
to
checking for uintptr_t …

?

On Tue, Apr 27, 2010 at 04:09:36PM -0400, Brian Lewis wrote:

return 0;

}

Adding ‘#include <sys/bitypes.h>’ lets autotest.c compile.

It seems <sys/bitypes.h> is the right way to use int32_t, etc. on SCO.
Could you try the attached patch ?

On Wednesday, 28.04.10 at 23:18, Igor S. wrote:

It seems <sys/bitypes.h> is the right way to use int32_t, etc. on SCO.
Could you try the attached patch ?

Thank you for the patch.

checking for uint64_t … uint64_t not found u_int64_t not found
./configure: error: can not define uint64_t

<sys/bitypes.h> defines int32_t and u_int32_t, but I don’t see any
definitions for int64_t or u_int64_t anywhere in /usr/include.

On Tuesday, 27.04.10 at 23:50, Igor S. wrote:

It seems SCO has int32_t. Then could you show what is after
“checking for int32_t” in objs/autoconf.err ?

objs/autotest.c: In function main': objs/autotest.c:11: error:int32_t’ undeclared (first use in this
function)
objs/autotest.c:11: error: (Each undeclared identifier is reported only
once
objs/autotest.c:11: error: for each function it appears in.)
objs/autotest.c:11: error: parse error before “i”

#include <sys/types.h>
#include <signal.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <netinet/in.h>

int main() {
int32_t i = 0;
return 0;
}

Adding ‘#include <sys/bitypes.h>’ lets autotest.c compile.

On Wed, Apr 28, 2010 at 03:42:45PM -0400, Brian Lewis wrote:

definitions for int64_t or u_int64_t anywhere in /usr/include.
Well, here is a new patch.

On Wed, Apr 28, 2010 at 11:51:53PM +0400, Igor S. wrote:

<sys/bitypes.h> defines int32_t and u_int32_t, but I don’t see any
definitions for int64_t or u_int64_t anywhere in /usr/include.

Well, here is a new patch.

Sorry, this patch is wrong. Here is a new one.

On Thursday, 29.04.10 at 00:01, Igor S. wrote:

Sorry, this patch is wrong. Here is a new one.

Thanks.

checking for int size … 4 bytes
checking for long size … 4 bytes
checking for long long size … 8 bytes
checking for void * size … 4 bytes
checking for int64_t … int64_t not found, long long used
checking for uint64_t … uint64_t not found u_int64_t not found,
unsigned long long used
checking for sig_atomic_t … found
checking for sig_atomic_t size … 4 bytes
checking for socklen_t … socklen_t not found, int used
checking for in_addr_t … in_addr_t not found uint32_t not found
./configure: error: can not define in_addr_t

On Wednesday, 28.04.10 at 23:51, Igor S. wrote:

Well, here is a new patch.

Thank you.

creating objs/Makefile
checking for int size … 4 bytes
checking for long size … 4 bytes
checking for long long size … 8 bytes
checking for void * size … 4 bytes
checking for int64_t … int64_t not found, long used
checking for uint64_t … uint64_t not found u_int64_t:unsigned not
found, long used
checking for sig_atomic_t … found
checking for sig_atomic_t size … 4 bytes
checking for socklen_t … socklen_t not found, int used
checking for in_addr_t … in_addr_t not found uint32_t not found
./configure: error: can not define in_addr_t

No definition for in_addr_t exists anywhere in /usr/include.

On Thursday, 29.04.10 at 10:30, Igor S. wrote:

On Wed, Apr 28, 2010 at 04:07:57PM -0400, Brian Lewis wrote:

checking for in_addr_t … in_addr_t not found uint32_t not found
./configure: error: can not define in_addr_t

What is in objs/autoconf.err after
checking for sys/bitypes.h
?

There are no errors in that section. <sys/bitypes.h> defines u_int32_t,
though.

On Wed, Apr 28, 2010 at 04:07:57PM -0400, Brian Lewis wrote:

checking for uint64_t … uint64_t not found u_int64_t not found, unsigned long long used
checking for sig_atomic_t … found
checking for sig_atomic_t size … 4 bytes
checking for socklen_t … socklen_t not found, int used
checking for in_addr_t … in_addr_t not found uint32_t not found
./configure: error: can not define in_addr_t

What is in objs/autoconf.err after
checking for sys/bitypes.h
?


Igor S.
http://sysoev.ru/en/

On Thu, Apr 29, 2010 at 09:46:00AM -0400, Brian Lewis wrote:

though.
Well, here is a new patch.

On Thursday, 29.04.10 at 17:55, Igor S. wrote:

Well, here is a new patch.

Thank you. That patch allows ./configure to complete.

make produces
src/core/ngx_string.c: In function ngx_vslprintf': src/core/ngx_string.c:275: warning:ngx_pid_t’ is promoted to int' when passed through…’
src/core/ngx_string.c:275: warning: (so you should pass int' notngx_pid_t’ to `va_arg’)
make[1]: *** [objs/src/core/ngx_string.o] Error 1

On Thu, Apr 29, 2010 at 05:55:27PM +0400, Igor S. wrote:

There are no errors in that section. <sys/bitypes.h> defines u_int32_t,
though.

Well, here is a new patch.

BTW, if the patch will resolve the issue, could you please post full
./configure ouput ?


Igor S.
http://sysoev.ru/en/

On Thu, Apr 29, 2010 at 10:06:58AM -0400, Brian Lewis wrote:

On Thursday, 29.04.10 at 17:58, Igor S. wrote:

BTW, if the patch will resolve the issue, could you please post full
./configure ouput ?

Output of
./configure --without-http_rewrite_module --without-http-cache
:

checking for OS

  • SCO_SV 3.2 i386

checking for off_t size … 4 bytes

Does SCO support files >2G ?


Igor S.
http://sysoev.ru/en/

On Thursday, 29.04.10 at 17:58, Igor S. wrote:

BTW, if the patch will resolve the issue, could you please post full
./configure ouput ?

Output of
./configure --without-http_rewrite_module --without-http-cache
:

checking for OS

  • SCO_SV 3.2 i386
    checking for C compiler … found
  • using GNU C compiler
  • gcc version: 3.3.1
    checking for gcc -pipe switch … found
    checking for gcc builtin atomic operations … not found
    checking for gcc variadic macros … found
    checking for C99 variadic macros … found
    checking for unistd.h … found
    checking for inttypes.h … not found
    checking for limits.h … found
    checking for sys/filio.h … not found
    checking for sys/param.h … found
    checking for sys/mount.h … found
    checking for sys/statvfs.h … found
    checking for sys/bitypes.h … found
    checking for crypt.h … found
    checking for SCO_SV specific features
    checking for nobody group … not found
    checking for nogroup group … found
    checking for poll() … found
    checking for /dev/poll … not found
    checking for kqueue … not found
    checking for crypt() … found
    checking for F_READAHEAD … not found
    checking for posix_fadvise() … not found
    checking for O_DIRECT … not found
    checking for F_NOCACHE … not found
    checking for directio() … not found
    checking for statfs() … not found
    checking for statvfs() … found
    checking for dlopen() … found
    checking for sched_yield() … found
    checking for zlib library … found
    creating objs/Makefile
    checking for int size … 4 bytes
    checking for long size … 4 bytes
    checking for long long size … 8 bytes
    checking for void * size … 4 bytes
    checking for int64_t … int64_t not found, long long used
    checking for uint64_t … uint64_t not found u_int64_t not found,
    unsigned long long used
    checking for int32_t … found
    checking for uint32_t … uint32_t not found, u_int32_t used
    checking for sig_atomic_t … found
    checking for sig_atomic_t size … 4 bytes
    checking for socklen_t … socklen_t not found, int used
    checking for in_addr_t … in_addr_t not found uint32_t not found,
    u_int32_t used
    checking for in_port_t … in_port_t not found, u_short used
    checking for rlim_t … found
    checking for uintptr_t … uintptr_t not found , uint32_t used
    checking for system endianess … little endianess
    checking for size_t size … 4 bytes
    checking for off_t size … 4 bytes
    checking for time_t size … 4 bytes
    checking for setproctitle() … not found
    checking for pread() … not found
    checking for pwrite() … not found
    checking for strerror_r() … not found
    checking for gnu style strerror_r() … not found
    checking for sys_errlist[] … not found
    checking for localtime_r() … found
    checking for posix_memalign() … not found
    checking for memalign() … found
    checking for mmap(MAP_ANON|MAP_SHARED) … not found
    checking for mmap("/dev/zero", MAP_SHARED) … found
    checking for System V shared memory … found
    checking for struct msghdr.msg_control … found
    checking for ioctl(FIONBIO) … not found
    checking for struct tm.tm_gmtoff … not found
    checking for struct dirent.d_namlen … not found
    checking for struct dirent.d_type … not found

Configuration summary

  • PCRE library is not used
  • OpenSSL library is not used
  • md5 library is not used
  • sha1 library is not used
  • using system zlib library

nginx path prefix: “/usr/local/nginx”
nginx binary file: “/usr/local/nginx/sbin/nginx”
nginx configuration prefix: “/usr/local/nginx/conf”
nginx configuration file: “/usr/local/nginx/conf/nginx.conf”
nginx pid file: “/usr/local/nginx/logs/nginx.pid”
nginx error log file: “/usr/local/nginx/logs/error.log”
nginx http access log file: “/usr/local/nginx/logs/access.log”
nginx http client request body temporary files: “client_body_temp”
nginx http proxy temporary files: “proxy_temp”
nginx http fastcgi temporary files: “fastcgi_temp”