# ext/pcre/pcrelib/config.h:#define HAVE_STDINT_H 1 - bug in PHP or ext(ernal) package that needs to be contacted?

- Thread: https://externals.io/message/49928
- Original archive: https://news-web.php.net/php.internals/49928
- Started by Michael Felt on 2010-10-19T13:32:16+00:00
- Messages: 4
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #49928 — Michael Felt — 2010-10-19T13:32:16+00:00

URL: https://externals.io/message/49928#49928

Maybe a bug? with ext/* I wonder if it is internal, or something borrowed.

The hardpart is to get a compiler old enough to not have stdint.h I suppose,
but when that is the case the build fails and/or configure misses it.

from /data/prj/php-5.2.14

# grep -n HAVE_STDINT_H */*/*/*.h
ext/date/lib/timelib_structs.h:32:#elif defined(HAVE_STDINT_H)
ext/pcre/pcrelib/config.h:108:#ifndef HAVE_STDINT_H
ext/pcre/pcrelib/config.h:109:#define HAVE_STDINT_H 1
ext/pcre/pcrelib/pcre_internal.h:197:#elif HAVE_STDINT_H

# ls -l ext/pcre/pcrelib/config.h
-rw-r--r--   1 1005     1005       11704 Mar 29 2010
ext/pcre/pcrelib/config.h

From the date I conclude configure has nothing to do with this, from the
line numbers I wonder why they say
#ifndef SOME_VARIABLE
#define SOME_VARIABLE 1

There are consequences! pcre_internal.h believes this! So, my question is:
whose error is it? PHP, or somewhere external?

make returns:

# make
/bin/sh /data/prj/php-5.2.14/libtool --silent --preserve-dup-deps
--mode=compile gcc -I/data/prj/php-5.2.14/ext/pcre/pcrelib -Iext/pcre/
-I/data/prj/php-5.2.14/ext/pcre/ -DPHP_ATOM_INC
-I/data/prj/php-5.2.14/include -I/data/prj/php-5.2.14/main
-I/data/prj/php-5.2.14 -I/data/prj/php-5.2.14/ext/date/lib
-I/usr/local/include/libxml2 -I/usr/local/include
-I/usr/local/include/freetype2 -I/usr/local/mysql/include
-I/data/prj/php-5.2.14/TSRM -I/data/prj/php-5.2.14/Zend    -I/usr/include
-L/usr/local/ssl/lib -L/usr/local/mysql/lib -L/usr/local/lib   -c
/data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_chartables.c -o
ext/pcre/pcrelib/pcre_chartables.lo
In file included from
/data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_chartables.c:25:
/data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_internal.h:198:20: stdint.h: No
such file or directory
make: *** [ext/pcre/pcrelib/pcre_chartables.lo] Error 1

This is on AIX 4.3.3 and gcc.

---

## #49929 — Michael Felt — 2010-10-19T13:36:00+00:00

URL: https://externals.io/message/49928#49929 · In reply to: #49928

p.s. my fix is:
/* Define to 1 if you have the <stdint.h> header file. * /
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H 1
#endif
*/
(added space to break end-of comment, and added end of comment below block)



> Maybe a bug? with ext/* I wonder if it is internal, or something borrowed.
>
> The hardpart is to get a compiler old enough to not have stdint.h I
> suppose, but when that is the case the build fails and/or configure misses
> it.
>
> from /data/prj/php-5.2.14
>
> # grep -n HAVE_STDINT_H */*/*/*.h
> ext/date/lib/timelib_structs.h:32:#elif defined(HAVE_STDINT_H)
> ext/pcre/pcrelib/config.h:108:#ifndef HAVE_STDINT_H
> ext/pcre/pcrelib/config.h:109:#define HAVE_STDINT_H 1
> ext/pcre/pcrelib/pcre_internal.h:197:#elif HAVE_STDINT_H
>
> # ls -l ext/pcre/pcrelib/config.h
> -rw-r--r--   1 1005     1005       11704 Mar 29 2010
> ext/pcre/pcrelib/config.h
>
> From the date I conclude configure has nothing to do with this, from the
> line numbers I wonder why they say
> #ifndef SOME_VARIABLE
> #define SOME_VARIABLE 1
>
> There are consequences! pcre_internal.h believes this! So, my question is:
> whose error is it? PHP, or somewhere external?
>
> make returns:
>
> # make
> /bin/sh /data/prj/php-5.2.14/libtool --silent --preserve-dup-deps
> --mode=compile gcc -I/data/prj/php-5.2.14/ext/pcre/pcrelib -Iext/pcre/
> -I/data/prj/php-5.2.14/ext/pcre/ -DPHP_ATOM_INC
> -I/data/prj/php-5.2.14/include -I/data/prj/php-5.2.14/main
> -I/data/prj/php-5.2.14 -I/data/prj/php-5.2.14/ext/date/lib
> -I/usr/local/include/libxml2 -I/usr/local/include
> -I/usr/local/include/freetype2 -I/usr/local/mysql/include
> -I/data/prj/php-5.2.14/TSRM -I/data/prj/php-5.2.14/Zend    -I/usr/include
> -L/usr/local/ssl/lib -L/usr/local/mysql/lib -L/usr/local/lib   -c
> /data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_chartables.c -o
> ext/pcre/pcrelib/pcre_chartables.lo
> In file included from
> /data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_chartables.c:25:
> /data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_internal.h:198:20: stdint.h: No
> such file or directory
> make: *** [ext/pcre/pcrelib/pcre_chartables.lo] Error 1
>
> This is on AIX 4.3.3 and gcc.

---

## #49933 — Pierre Joye — 2010-10-19T15:59:12+00:00

URL: https://externals.io/message/49928#49933 · In reply to: #49929

hi,

We do this in the bundled pcre library. Please check the exact logic
there and try to see what is required to make it work on your box +
compiler without breaking other platforms.

It would rock if you could provide a patch+bug report :)

Thanks!


> p.s. my fix is:
> /* Define to 1 if you have the <stdint.h> header file. * /
> #ifndef HAVE_STDINT_H
> #define HAVE_STDINT_H 1
> #endif
> */
> (added space to break end-of comment, and added end of comment below block)
>
> 
>
> > […]
>



-- 
Pierre

@pierrejoye | http://blog.thepimp.net | http://www.libgd.org

---

## #49937 — Rainer Jung — 2010-10-19T22:33:33+00:00

URL: https://externals.io/message/49928#49937 · In reply to: #49928

> Maybe a bug? with ext/* I wonder if it is internal, or something borrowed.
>
> The hardpart is to get a compiler old enough to not have stdint.h I suppose,
> but when that is the case the build fails and/or configure misses it.
>
> from /data/prj/php-5.2.14
>
> # grep -n HAVE_STDINT_H */*/*/*.h
> ext/date/lib/timelib_structs.h:32:#elif defined(HAVE_STDINT_H)
> ext/pcre/pcrelib/config.h:108:#ifndef HAVE_STDINT_H
> ext/pcre/pcrelib/config.h:109:#define HAVE_STDINT_H 1
> ext/pcre/pcrelib/pcre_internal.h:197:#elif HAVE_STDINT_H
>
> # ls -l ext/pcre/pcrelib/config.h
> -rw-r--r--   1 1005     1005       11704 Mar 29 2010
> ext/pcre/pcrelib/config.h
>
>  From the date I conclude configure has nothing to do with this, from the
> line numbers I wonder why they say
> #ifndef SOME_VARIABLE
> #define SOME_VARIABLE 1
>
> There are consequences! pcre_internal.h believes this! So, my question is:
> whose error is it? PHP, or somewhere external?
>
> make returns:
>
> # make
> /bin/sh /data/prj/php-5.2.14/libtool --silent --preserve-dup-deps
> --mode=compile gcc -I/data/prj/php-5.2.14/ext/pcre/pcrelib -Iext/pcre/
> -I/data/prj/php-5.2.14/ext/pcre/ -DPHP_ATOM_INC
> -I/data/prj/php-5.2.14/include -I/data/prj/php-5.2.14/main
> -I/data/prj/php-5.2.14 -I/data/prj/php-5.2.14/ext/date/lib
> -I/usr/local/include/libxml2 -I/usr/local/include
> -I/usr/local/include/freetype2 -I/usr/local/mysql/include
> -I/data/prj/php-5.2.14/TSRM -I/data/prj/php-5.2.14/Zend    -I/usr/include
> -L/usr/local/ssl/lib -L/usr/local/mysql/lib -L/usr/local/lib   -c
> /data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_chartables.c -o
> ext/pcre/pcrelib/pcre_chartables.lo
> In file included from
> /data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_chartables.c:25:
> /data/prj/php-5.2.14/ext/pcre/pcrelib/pcre_internal.h:198:20: stdint.h: No
> such file or directory
> make: *** [ext/pcre/pcrelib/pcre_chartables.lo] Error 1
>
> This is on AIX 4.3.3 and gcc.

Similar problem on Solaris 8. There's no good way of replacing a 
configure based build by a fixed header file. It would be better to run 
pcre configure as part of the php configure. When building for Solaris 
8, I e.g. need to redefine several defines:

typeset file=ext/pcre/pcrelib/config.h
cp -p $file $file.saved
sed \
   -e 's/#define HAVE_READLINE_HISTORY_H 1/#define 
HAVE_READLINE_HISTORY_H 0/' \
   -e 's/#define HAVE_READLINE_READLINE_H 1/#define 
HAVE_READLINE_READLINE_H 0/' \
   -e 's/#define HAVE_STDINT_H 1/#define HAVE_STDINT_H 0/' \
   -e 's/#define HAVE_STRTOQ 1/#define HAVE_STRTOQ 0/' \
   $file.saved > $file

Regards,

Rainer
