X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-psi;a=blobdiff_plain;f=m4%2Fpsi%2Fpsi.m4;h=67878346db61e5765024af4e225c09502888b94d;hp=b979719862a2db08fff771411158c4c7def3fe7d;hb=5fb98c298b198dbc7dba9d1c339b21e179c65b4e;hpb=3ef8c66ab1300801bcdb15b43f9f28e77b6487b6 diff --git a/m4/psi/psi.m4 b/m4/psi/psi.m4 index b979719..6787834 100644 --- a/m4/psi/psi.m4 +++ b/m4/psi/psi.m4 @@ -1,15 +1,3 @@ -dnl Generated headers with pre-defined types, structs, consts and decls. -PSI_STDINC=$PHP_PSI_SRCDIR/php_psi_stdinc.h -PSI_STDTYPES=$PHP_PSI_SRCDIR/php_psi_stdtypes.h -PSI_TYPES=$PHP_PSI_SRCDIR/php_psi_types.h -PSI_STRUCTS=$PHP_PSI_SRCDIR/php_psi_structs.h -PSI_UNIONS=$PHP_PSI_SRCDIR/php_psi_unions.h -PSI_CONSTS=$PHP_PSI_SRCDIR/php_psi_consts.h -PSI_REDIRS=$PHP_PSI_SRCDIR/php_psi_redirs.h -PSI_MACROS=$PHP_PSI_SRCDIR/php_psi_macros.h -PSI_DECLS=$PHP_PSI_SRCDIR/php_psi_decls.h -PSI_VA_DECLS=$PHP_PSI_SRCDIR/php_psi_va_decls.h -PSI_FN_DECLS=$PHP_PSI_SRCDIR/php_psi_fn_decls.h dnl PSI_CONFIG_INIT() dnl Creates stubs of the headers with pre-defined types etc. @@ -27,6 +15,7 @@ AC_DEFUN(PSI_CONFIG_INIT, [ PHP_SUBST(PSI_DEPS) PSI_CONFIG_TMP=$(mktemp -d) + PSI_FUNC_LIBC_MAIN else PSI_FAST_CONFIG=false PSI_DEPS=false @@ -37,106 +26,35 @@ AC_DEFUN(PSI_CONFIG_INIT, [ fi fi - cat >$PHP_PSI_BUILDDIR/php_psi.dep <>$PHP_PSI_BUILDDIR/php_psi.dep <$i <>$PSI_STDTYPES <@ = { - {PSI_T_INT8, "int8_t", NULL}, - {PSI_T_INT16, "int16_t", NULL}, - {PSI_T_INT32, "int32_t", NULL}, - {PSI_T_INT64, "int64_t", NULL}, - {PSI_T_UINT8, "uint8_t", NULL}, - {PSI_T_UINT16, "uint16_t", NULL}, - {PSI_T_UINT32, "uint32_t", NULL}, - {PSI_T_UINT64, "uint64_t", NULL}, -EOF - cat >>$PSI_TYPES <@ = { -EOF - cat >>$PSI_STRUCTS <@ = { -EOF - cat >>$PSI_UNIONS <@ = { -EOF - cat >>$PSI_CONSTS <@ = { -EOF - cat >>$PSI_REDIRS <@ = { -EOF - cat >>$PSI_MACROS <>$PSI_DECLS <@ = { -EOF - cat >>$PSI_VA_DECLS <@ = { -EOF - cat >>$PSI_FN_DECLS <@ = { -EOF + PSI_STDTYPES= + PSI_TYPES= + PSI_COMPOSITES= + PSI_CONSTS= + PSI_REDIRS= + PSI_MACROS= + PSI_DECLS= + + AC_CONFIG_FILES( + [$PHP_PSI_BUILDDIR/php_psi_stdinc.h:$PHP_PSI_SRCDIR/php_psi_stdinc.h.in] + [$PHP_PSI_BUILDDIR/php_psi_posix.h:$PHP_PSI_SRCDIR/php_psi_posix.h.in] + ) + +]) + +dnl PSI_CONFIG_WAIT() +dnl Internal: waits for sub configures in maintainer mode +AC_DEFUN(PSI_CONFIG_WAIT, [ + wait + if test $? -gt 0; then + cat $PSI_CONFIG_TMP/*/stderr.log >&2 + exit 1 + fi ]) dnl PSI_CONFIG_DONE() dnl Finish the headers with the pre-defined types etc. AC_DEFUN(PSI_CONFIG_DONE, [ - - wait + PSI_CONFIG_WAIT if $PSI_FAST_CONFIG; then for conf_env in $PSI_CONFIG_TMP/*/conf.env; do @@ -148,33 +66,15 @@ AC_DEFUN(PSI_CONFIG_DONE, [ LIBS=$psi_save_LIBS PHP_EVAL_LIBLINE($psi_eval_LIBS, PSI_SHARED_LIBADD) - cat >$PSI_STDINC <>$i </dev/null; then + if expr "$PHP_PSI_POSIX" : '.*\b$1\b' >/dev/null; then AS_TR_SH([psi_config_posix_]$1)=true fi ;; @@ -212,44 +112,70 @@ AC_DEFUN(PSI_SH_TEST_POSIX_ENABLED, [ fi ]) -dnl PSI_CONFIG_POSIX(section, headers) +dnl PSI_CONFIG_POSIX(section, headers, dependents) AC_DEFUN(PSI_CONFIG_POSIX, [ PSI_CONFIG_POSIX_ENABLED($1, [ if $PSI_FAST_CONFIG; then - PSI_CONFIG_POSIX_PARALLEL($1, $2) + PSI_CONFIG_POSIX_PARALLEL($1, $2, [$3]) else ifelse([$2],,:,[AC_CHECK_HEADERS($2)]) AS_TR_CPP([PSI_CHECK_$1]) + $3 fi ]) ]) AC_DEFUN([PSI_CONFIG_POSIX_PARALLEL], [ ( - dnl setup + dnl chaway mkdir $PSI_CONFIG_TMP/AS_TR_SH([$1]) - ln -s $(pwd)/confdefs.h $PSI_CONFIG_TMP/AS_TR_SH([$1])/confdefs.h + cd $PSI_CONFIG_TMP/AS_TR_SH([$1]) + + dnl AC_DEFINEs + ln -s $abs_builddir/confdefs.h confdefs.h - dnl restore stdio - exec 66>&AS_MESSAGE_FD - exec AS_MESSAGE_FD>$PSI_CONFIG_TMP/AS_TR_SH([$1])/stdout.log - exec 2>$PSI_CONFIG_TMP/AS_TR_SH([$1])/stderr.log + dnl STDOUT, STDERR + exec {PSI_MESSAGE_FD}>&AS_MESSAGE_FD {PSI_ERROR_FD}>&2 + exec AS_MESSAGE_FD>stdout.log 2>stderr.log dnl check for headers? ifelse([$2],,:,[AC_CHECK_HEADERS($2)]) - dnl chaway - cd $PSI_CONFIG_TMP/AS_TR_SH([$1]) - dnl run checks + PSI_TYPES= + PSI_CONSTS= + PSI_COMPOSITES= + PSI_REDIRS= + PSI_MACROS= + PSI_DECLS= AS_TR_CPP([PSI_CHECK_$1]) - dnl save libs - cat >$PSI_CONFIG_TMP/AS_TR_SH([$1])/conf.env <conf.env <>conf.env <>conf.env + dnl restore STDOUT,STDERR + exec AS_MESSAGE_FD>&$PSI_MESSAGE_FD 2>&$PSI_ERROR_FD + dnl done - printf "%s " "$1" >&66 + AS_ECHO_N(["$1 "]) + cd - >/dev/null + + dnl run dependents + $3 + + PSI_CONFIG_WAIT ) & ]) @@ -311,6 +237,9 @@ typedef bool _Bool; #ifdef HAVE_ARPA_NAMESER_H # include #endif +#ifdef HAVE_ARPA_INET_H +# include +#endif #ifdef HAVE_FCNTL_H # include #endif @@ -371,8 +300,14 @@ AC_DEFUN(PSI_LEMON, [ AC_ARG_VAR(LEMON, The lemon parser generator of the SQLite project) if test -z "$LEMON" then - AC_PATH_PROG(LEMON, lemon, ./lemon) + AC_PATH_PROG(LEMON, lemon, $PHP_PSI_BUILDDIR/lemon) + if expr + "$LEMON" : "/" >/dev/null; then + LEMON_PATH= + else + LEMON_PATH=$abs_builddir/ + fi fi + PHP_SUBST(LEMON_PATH) PHP_SUBST(LEMON) ]) @@ -410,7 +345,7 @@ AC_DEFUN([PSI_SH_TEST_ALIGNOF], [test -n "$AS_TR_SH([ac_cv_alignof_]$1)" && test dnl PSI_CHECK_SIZEOF(type, special-includes) dnl AC_CHECK_SIZEOF wrapper with PSI_INCLUDES -dnl Defines psi\\SIZEOF_ pre-defined constant in $PSI_CONSTS. +dnl Defines psi\\SIZEOF_ pre-defined constant in $PSI_CONSTS_H. AC_DEFUN(PSI_CHECK_SIZEOF, [ AC_CHECK_SIZEOF($1, [], PSI_INCLUDES $2) @@ -421,7 +356,7 @@ AC_DEFUN(PSI_CHECK_SIZEOF, [ dnl PSI_CHECK_ALIGNOF(type, special-includes) dnl AC_CHECK_ALIGNOF wrapper with PSI_INCLUDES -dnl Defines psi\\ALIGNOF_ pre-defined constant in $PSI_CONSTS. +dnl Defines psi\\ALIGNOF_ pre-defined constant in $PSI_CONSTS_H. AC_DEFUN(PSI_CHECK_ALIGNOF, [ AC_CHECK_ALIGNOF($1, PSI_INCLUDES $2)