xref: /PHP-8.2/sapi/phpdbg/config.m4 (revision 2fec3e7f)
1PHP_ARG_ENABLE([phpdbg],
2  [for phpdbg support],
3  [AS_HELP_STRING([--disable-phpdbg],
4    [Disable building of phpdbg])],
5  [yes],
6  [yes])
7
8PHP_ARG_ENABLE([phpdbg-debug],
9  [for phpdbg debug build],
10  [AS_HELP_STRING([--enable-phpdbg-debug],
11    [Build phpdbg in debug mode])],
12  [no],
13  [no])
14
15PHP_ARG_ENABLE([phpdbg-readline],
16  [for phpdbg readline support],
17  [AS_HELP_STRING([--enable-phpdbg-readline],
18    [Enable readline support in phpdbg (depends on static ext/readline)])],
19  [no],
20  [no])
21
22if test "$PHP_PHPDBG" != "no"; then
23  AC_HEADER_TIOCGWINSZ
24  AC_DEFINE(HAVE_PHPDBG, 1, [ ])
25
26  if test "$PHP_PHPDBG_DEBUG" != "no"; then
27    AC_DEFINE(PHPDBG_DEBUG, 1, [ ])
28  else
29    AC_DEFINE(PHPDBG_DEBUG, 0, [ ])
30  fi
31
32  PHP_PHPDBG_CFLAGS="-D_GNU_SOURCE -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
33  PHP_PHPDBG_FILES="phpdbg.c phpdbg_parser.c phpdbg_lexer.c phpdbg_prompt.c phpdbg_help.c phpdbg_break.c phpdbg_print.c phpdbg_bp.c phpdbg_list.c phpdbg_utils.c phpdbg_info.c phpdbg_cmd.c phpdbg_set.c phpdbg_frame.c phpdbg_watch.c phpdbg_btree.c phpdbg_sigsafe.c phpdbg_io.c phpdbg_out.c"
34
35  AC_MSG_CHECKING([for phpdbg and readline integration])
36  if test "$PHP_PHPDBG_READLINE" = "yes"; then
37    if test "$PHP_READLINE" != "no" -o  "$PHP_LIBEDIT" != "no"; then
38  	  AC_DEFINE(HAVE_PHPDBG_READLINE, 1, [ ])
39  	  PHPDBG_EXTRA_LIBS="$PHP_READLINE_LIBS"
40  	  AC_MSG_RESULT([ok])
41  	else
42  	  AC_MSG_RESULT([readline is not available])
43    fi
44  else
45    AC_MSG_RESULT([disabled])
46  fi
47
48  AC_CACHE_CHECK([for userfaultfd faulting on write-protected memory support], ac_cv_phpdbg_userfaultfd_writefault, AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
49    #include <linux/userfaultfd.h>
50    #ifndef UFFDIO_WRITEPROTECT_MODE_WP
51    # error userfaults on write-protected memory not supported
52    #endif
53  ]])], [ac_cv_phpdbg_userfaultfd_writefault=yes], [ac_cv_phpdbg_userfaultfd_writefault=no]))
54  if test "$ac_cv_phpdbg_userfaultfd_writefault" = "yes"; then
55    if test "$enable_zts" != "yes"; then
56      CFLAGS_SAVE="$CFLAGS"
57      LIBS_SAVE="$LIBS"
58
59      PTHREADS_CHECK
60      AC_MSG_CHECKING([working pthreads]);
61
62      if test "$pthreads_working" = "yes"; then
63      	AC_MSG_RESULT([$ac_cv_pthreads_cflags -l$ac_cv_pthreads_lib]);
64      	PHP_PHPDBG_CFLAGS="$PHP_PHPDBG_CFLAGS $ac_cv_pthreads_cflags"
65      	PHPDBG_EXTRA_LIBS="$PHPDBG_EXTRA_LIBS -l$ac_cv_pthreads_lib"
66      	AC_DEFINE(HAVE_USERFAULTFD_WRITEFAULT, 1, [Whether faulting on write-protected memory support can be compiled for userfaultfd])
67      else
68        AC_MSG_WARN([pthreads not available])
69      fi
70
71      CFLAGS="$CFLAGS_SAVE"
72      LIBS="$LIBS_SAVE"
73    else
74      AC_DEFINE(HAVE_USERFAULTFD_WRITEFAULT, 1, [Whether faulting on write-protected memory support can be compiled for userfaultfd])
75    fi
76  fi
77
78  PHP_SUBST(PHPDBG_EXTRA_LIBS)
79
80  PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/phpdbg/Makefile.frag], [$abs_srcdir/sapi/phpdbg], [$abs_builddir/sapi/phpdbg])
81  PHP_SELECT_SAPI(phpdbg, program, $PHP_PHPDBG_FILES, $PHP_PHPDBG_CFLAGS, [$(SAPI_PHPDBG_PATH)])
82
83  BUILD_BINARY="sapi/phpdbg/phpdbg"
84  BUILD_SHARED="sapi/phpdbg/libphpdbg.la"
85
86  BUILD_PHPDBG="\$(LIBTOOL) --tag=CC --mode=link \
87        \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \
88                \$(PHP_GLOBAL_OBJS:.lo=.o) \
89                \$(PHP_BINARY_OBJS:.lo=.o) \
90                \$(PHP_PHPDBG_OBJS:.lo=.o) \
91                \$(EXTRA_LIBS) \
92                \$(PHPDBG_EXTRA_LIBS) \
93                \$(ZEND_EXTRA_LIBS) \
94                \$(PHP_FRAMEWORKS) \
95         -o \$(BUILD_BINARY)"
96
97  BUILD_PHPDBG_SHARED="\$(LIBTOOL) --tag=CC --mode=link \
98        \$(CC) -shared -Wl,-soname,libphpdbg.so -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \
99                \$(PHP_GLOBAL_OBJS) \
100                \$(PHP_BINARY_OBJS) \
101                \$(PHP_PHPDBG_OBJS) \
102                \$(EXTRA_LIBS) \
103                \$(PHPDBG_EXTRA_LIBS) \
104                \$(ZEND_EXTRA_LIBS) \
105                \-DPHPDBG_SHARED \
106         -o \$(BUILD_SHARED)"
107
108  PHP_SUBST(BUILD_BINARY)
109  PHP_SUBST(BUILD_SHARED)
110  PHP_SUBST(BUILD_PHPDBG)
111  PHP_SUBST(BUILD_PHPDBG_SHARED)
112
113  PHP_OUTPUT(sapi/phpdbg/phpdbg.1)
114fi
115