1PHP_ARG_ENABLE([fpm],, 2 [AS_HELP_STRING([--enable-fpm], 3 [Enable building of the fpm SAPI executable])], 4 [no], 5 [no]) 6 7dnl Configure checks. 8AC_DEFUN([AC_FPM_STDLIBS], 9[ 10 AC_CHECK_FUNCS(clearenv setproctitle setproctitle_fast) 11 12 AC_SEARCH_LIBS(socket, socket) 13 AC_SEARCH_LIBS(inet_addr, nsl) 14]) 15 16AC_DEFUN([AC_FPM_PRCTL], 17[ 18 AC_MSG_CHECKING([for prctl]) 19 20 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/prctl.h>]], [[prctl(0, 0, 0, 0, 0);]])], [ 21 AC_DEFINE([HAVE_PRCTL], 1, [do we have prctl?]) 22 AC_MSG_RESULT([yes]) 23 ], [ 24 AC_MSG_RESULT([no]) 25 ]) 26]) 27 28AC_DEFUN([AC_FPM_CLOCK], 29[ 30 have_clock_gettime=no 31 32 AC_MSG_CHECKING([for clock_gettime]) 33 34 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts);]])], [ 35 have_clock_gettime=yes 36 AC_MSG_RESULT([yes]) 37 ], [ 38 AC_MSG_RESULT([no]) 39 ]) 40 41 if test "$have_clock_gettime" = "no"; then 42 AC_MSG_CHECKING([for clock_gettime in -lrt]) 43 44 SAVED_LIBS="$LIBS" 45 LIBS="$LIBS -lrt" 46 47 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]], [[struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts);]])], [ 48 have_clock_gettime=yes 49 AC_MSG_RESULT([yes]) 50 ], [ 51 LIBS="$SAVED_LIBS" 52 AC_MSG_RESULT([no]) 53 ]) 54 fi 55 56 if test "$have_clock_gettime" = "yes"; then 57 AC_DEFINE([HAVE_CLOCK_GETTIME], 1, [do we have clock_gettime?]) 58 fi 59 60 have_clock_get_time=no 61 62 if test "$have_clock_gettime" = "no"; then 63 AC_MSG_CHECKING([for clock_get_time]) 64 65 AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <mach/mach.h> 66 #include <mach/clock.h> 67 #include <mach/mach_error.h> 68 69 int main() 70 { 71 kern_return_t ret; clock_serv_t aClock; mach_timespec_t aTime; 72 ret = host_get_clock_service(mach_host_self(), REALTIME_CLOCK, &aClock); 73 74 if (ret != KERN_SUCCESS) { 75 return 1; 76 } 77 78 ret = clock_get_time(aClock, &aTime); 79 if (ret != KERN_SUCCESS) { 80 return 2; 81 } 82 83 return 0; 84 } 85 ]])], [ 86 have_clock_get_time=yes 87 AC_MSG_RESULT([yes]) 88 ], [ 89 AC_MSG_RESULT([no]) 90 ], [AC_MSG_RESULT([no (cross-compiling)])]) 91 fi 92 93 if test "$have_clock_get_time" = "yes"; then 94 AC_DEFINE([HAVE_CLOCK_GET_TIME], 1, [do we have clock_get_time?]) 95 fi 96]) 97 98AC_DEFUN([AC_FPM_TRACE], 99[ 100 have_ptrace=no 101 have_broken_ptrace=no 102 103 AC_MSG_CHECKING([for ptrace]) 104 105 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 106 #include <sys/types.h> 107 #include <sys/ptrace.h> ]], [[ptrace(0, 0, (void *) 0, 0);]])], [ 108 have_ptrace=yes 109 AC_MSG_RESULT([yes]) 110 ], [ 111 AC_MSG_RESULT([no]) 112 ]) 113 114 if test "$have_ptrace" = "yes"; then 115 AC_MSG_CHECKING([whether ptrace works]) 116 117 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 118 #include <unistd.h> 119 #include <signal.h> 120 #include <sys/wait.h> 121 #include <sys/types.h> 122 #include <sys/ptrace.h> 123 #include <errno.h> 124 125 #if !defined(PTRACE_ATTACH) && defined(PT_ATTACH) 126 #define PTRACE_ATTACH PT_ATTACH 127 #endif 128 129 #if !defined(PTRACE_DETACH) && defined(PT_DETACH) 130 #define PTRACE_DETACH PT_DETACH 131 #endif 132 133 #if !defined(PTRACE_PEEKDATA) && defined(PT_READ_D) 134 #define PTRACE_PEEKDATA PT_READ_D 135 #endif 136 137 int main() 138 { 139 long v1 = (unsigned int) -1; /* copy will fail if sizeof(long) == 8 and we've got "int ptrace()" */ 140 long v2; 141 pid_t child; 142 int status; 143 144 if ( (child = fork()) ) { /* parent */ 145 int ret = 0; 146 147 if (0 > ptrace(PTRACE_ATTACH, child, 0, 0)) { 148 return 2; 149 } 150 151 waitpid(child, &status, 0); 152 153 #ifdef PT_IO 154 struct ptrace_io_desc ptio = { 155 .piod_op = PIOD_READ_D, 156 .piod_offs = &v1, 157 .piod_addr = &v2, 158 .piod_len = sizeof(v1) 159 }; 160 161 if (0 > ptrace(PT_IO, child, (void *) &ptio, 0)) { 162 ret = 3; 163 } 164 #else 165 errno = 0; 166 167 v2 = ptrace(PTRACE_PEEKDATA, child, (void *) &v1, 0); 168 169 if (errno) { 170 ret = 4; 171 } 172 #endif 173 ptrace(PTRACE_DETACH, child, (void *) 1, 0); 174 175 kill(child, SIGKILL); 176 177 return ret ? ret : (v1 != v2); 178 } 179 else { /* child */ 180 sleep(10); 181 return 0; 182 } 183 } 184 ]])], [ 185 AC_MSG_RESULT([yes]) 186 ], [ 187 have_ptrace=no 188 have_broken_ptrace=yes 189 AC_MSG_RESULT([no]) 190 ], [ 191 AC_MSG_RESULT([skipped (cross-compiling)]) 192 ]) 193 fi 194 195 if test "$have_ptrace" = "yes"; then 196 AC_DEFINE([HAVE_PTRACE], 1, [do we have ptrace?]) 197 fi 198 199 have_mach_vm_read=no 200 201 if test "$have_broken_ptrace" = "yes"; then 202 AC_MSG_CHECKING([for mach_vm_read]) 203 204 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <mach/mach.h> 205 #include <mach/mach_vm.h> 206 ]], [[ 207 mach_vm_read((vm_map_t)0, (mach_vm_address_t)0, (mach_vm_size_t)0, (vm_offset_t *)0, (mach_msg_type_number_t*)0); 208 ]])], [ 209 have_mach_vm_read=yes 210 AC_MSG_RESULT([yes]) 211 ], [ 212 AC_MSG_RESULT([no]) 213 ]) 214 fi 215 216 if test "$have_mach_vm_read" = "yes"; then 217 AC_DEFINE([HAVE_MACH_VM_READ], 1, [do we have mach_vm_read?]) 218 fi 219 220 proc_mem_file="" 221 222 if test -r /proc/$$/mem ; then 223 proc_mem_file="mem" 224 else 225 if test -r /proc/$$/as ; then 226 proc_mem_file="as" 227 fi 228 fi 229 230 if test -n "$proc_mem_file" ; then 231 AC_MSG_CHECKING([for proc mem file]) 232 233 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 234 #define _GNU_SOURCE 235 #define _FILE_OFFSET_BITS 64 236 #include <stdint.h> 237 #include <unistd.h> 238 #include <sys/types.h> 239 #include <sys/stat.h> 240 #include <fcntl.h> 241 #include <stdio.h> 242 int main() 243 { 244 long v1 = (unsigned int) -1, v2 = 0; 245 char buf[128]; 246 int fd; 247 sprintf(buf, "/proc/%d/$proc_mem_file", getpid()); 248 fd = open(buf, O_RDONLY); 249 if (0 > fd) { 250 return 1; 251 } 252 if (sizeof(long) != pread(fd, &v2, sizeof(long), (uintptr_t) &v1)) { 253 close(fd); 254 return 1; 255 } 256 close(fd); 257 return v1 != v2; 258 } 259 ]])], [ 260 AC_MSG_RESULT([$proc_mem_file]) 261 ], [ 262 proc_mem_file="" 263 AC_MSG_RESULT([no]) 264 ], [ 265 AC_MSG_RESULT([skipped (cross-compiling)]) 266 ]) 267 fi 268 269 if test -n "$proc_mem_file"; then 270 AC_DEFINE_UNQUOTED([PROC_MEM_FILE], "$proc_mem_file", [/proc/pid/mem interface]) 271 fi 272 273 fpm_trace_type="" 274 275 if test "$have_ptrace" = "yes"; then 276 fpm_trace_type=ptrace 277 278 elif test -n "$proc_mem_file"; then 279 fpm_trace_type=pread 280 281 elif test "$have_mach_vm_read" = "yes" ; then 282 fpm_trace_type=mach 283 284 else 285 AC_MSG_WARN([FPM Trace - ptrace, pread, or mach: could not be found]) 286 fi 287 288]) 289 290AC_DEFUN([AC_FPM_BUILTIN_ATOMIC], 291[ 292 AC_MSG_CHECKING([if gcc supports __sync_bool_compare_and_swap]) 293 AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ 294 int variable = 1; 295 return (__sync_bool_compare_and_swap(&variable, 1, 2) 296 && __sync_add_and_fetch(&variable, 1)) ? 1 : 0; 297 ]])], [ 298 AC_MSG_RESULT([yes]) 299 AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Define to 1 if gcc supports __sync_bool_compare_and_swap() a.o.]) 300 ], [ 301 AC_MSG_RESULT([no]) 302 ]) 303]) 304 305AC_DEFUN([AC_FPM_LQ], 306[ 307 have_lq=no 308 309 AC_MSG_CHECKING([for TCP_INFO]) 310 311 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netinet/tcp.h>]], [[struct tcp_info ti; int x = TCP_INFO;]])], [ 312 have_lq=tcp_info 313 AC_MSG_RESULT([yes]) 314 ], [ 315 AC_MSG_RESULT([no]) 316 ]) 317 318 if test "$have_lq" = "tcp_info"; then 319 AC_DEFINE([HAVE_LQ_TCP_INFO], 1, [do we have TCP_INFO?]) 320 fi 321 322 if test "$have_lq" = "no" ; then 323 AC_MSG_CHECKING([for SO_LISTENQLEN]) 324 325 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[int x = SO_LISTENQLIMIT; int y = SO_LISTENQLEN;]])], [ 326 have_lq=so_listenq 327 AC_MSG_RESULT([yes]) 328 ], [ 329 AC_MSG_RESULT([no]) 330 ]) 331 332 if test "$have_lq" = "tcp_info"; then 333 AC_DEFINE([HAVE_LQ_SO_LISTENQ], 1, [do we have SO_LISTENQxxx?]) 334 fi 335 fi 336]) 337 338AC_DEFUN([AC_FPM_SYSCONF], 339[ 340 AC_MSG_CHECKING([for sysconf]) 341 342 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]], [[sysconf(_SC_CLK_TCK);]])],[ 343 AC_DEFINE([HAVE_SYSCONF], 1, [do we have sysconf?]) 344 AC_MSG_RESULT([yes]) 345 ], [ 346 AC_MSG_RESULT([no]) 347 ]) 348]) 349 350AC_DEFUN([AC_FPM_TIMES], 351[ 352 AC_MSG_CHECKING([for times]) 353 354 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/times.h>]], [[struct tms t; times(&t);]])],[ 355 AC_DEFINE([HAVE_TIMES], 1, [do we have times?]) 356 AC_MSG_RESULT([yes]) 357 ], [ 358 AC_MSG_RESULT([no]) 359 ]) 360]) 361 362AC_DEFUN([AC_FPM_KQUEUE], 363[ 364 AC_MSG_CHECKING([for kqueue]) 365 366 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 367 #include <sys/types.h> 368 #include <sys/event.h> 369 #include <sys/time.h> 370 ]], [[ 371 int kfd; 372 struct kevent k; 373 kfd = kqueue(); 374 /* 0 -> STDIN_FILENO */ 375 EV_SET(&k, 0, EVFILT_READ , EV_ADD | EV_CLEAR, 0, 0, NULL); 376 ]])], [ 377 AC_DEFINE([HAVE_KQUEUE], 1, [do we have kqueue?]) 378 AC_MSG_RESULT([yes]) 379 ], [ 380 AC_MSG_RESULT([no]) 381 ]) 382]) 383 384AC_DEFUN([AC_FPM_PORT], 385[ 386 AC_MSG_CHECKING([for port framework]) 387 388 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 389 #include <port.h> 390 ]], [[ 391 int port; 392 393 port = port_create(); 394 if (port < 0) { 395 return 1; 396 } 397 ]])], [ 398 AC_DEFINE([HAVE_PORT], 1, [do we have port framework?]) 399 AC_MSG_RESULT([yes]) 400 ], [ 401 AC_MSG_RESULT([no]) 402 ]) 403]) 404 405AC_DEFUN([AC_FPM_DEVPOLL], 406[ 407 AC_MSG_CHECKING([for /dev/poll]) 408 409 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 410 #include <stdio.h> 411 #include <sys/devpoll.h> 412 ]], [[ 413 int n, dp; 414 struct dvpoll dvp; 415 dp = 0; 416 dvp.dp_fds = NULL; 417 dvp.dp_nfds = 0; 418 dvp.dp_timeout = 0; 419 n = ioctl(dp, DP_POLL, &dvp) 420 ]])], [ 421 AC_DEFINE([HAVE_DEVPOLL], 1, [do we have /dev/poll?]) 422 AC_MSG_RESULT([yes]) 423 ], [ 424 AC_MSG_RESULT([no]) 425 ]) 426]) 427 428AC_DEFUN([AC_FPM_EPOLL], 429[ 430 AC_MSG_CHECKING([for epoll]) 431 432 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 433 #include <sys/epoll.h> 434 ]], [[ 435 int epollfd; 436 struct epoll_event e; 437 438 epollfd = epoll_create(1); 439 if (epollfd < 0) { 440 return 1; 441 } 442 443 e.events = EPOLLIN | EPOLLET; 444 e.data.fd = 0; 445 446 if (epoll_ctl(epollfd, EPOLL_CTL_ADD, 0, &e) == -1) { 447 return 1; 448 } 449 450 e.events = 0; 451 if (epoll_wait(epollfd, &e, 1, 1) < 0) { 452 return 1; 453 } 454 ]])], [ 455 AC_DEFINE([HAVE_EPOLL], 1, [do we have epoll?]) 456 AC_MSG_RESULT([yes]) 457 ], [ 458 AC_MSG_RESULT([no]) 459 ]) 460]) 461 462AC_DEFUN([AC_FPM_SELECT], 463[ 464 AC_MSG_CHECKING([for select]) 465 466 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ 467 /* According to POSIX.1-2001 */ 468 #include <sys/select.h> 469 470 /* According to earlier standards */ 471 #include <sys/time.h> 472 #include <sys/types.h> 473 #include <unistd.h> 474 ]], [[ 475 fd_set fds; 476 struct timeval t; 477 t.tv_sec = 0; 478 t.tv_usec = 42; 479 FD_ZERO(&fds); 480 /* 0 -> STDIN_FILENO */ 481 FD_SET(0, &fds); 482 select(FD_SETSIZE, &fds, NULL, NULL, &t); 483 ]])], [ 484 AC_DEFINE([HAVE_SELECT], 1, [do we have select?]) 485 AC_MSG_RESULT([yes]) 486 ], [ 487 AC_MSG_RESULT([no]) 488 ]) 489]) 490 491AC_DEFUN([AC_FPM_APPARMOR], 492[ 493 AC_MSG_CHECKING([for apparmor]) 494 495 SAVED_LIBS="$LIBS" 496 LIBS="$LIBS -lapparmor" 497 498 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/apparmor.h>]], [[change_hat("test", 0);]])], [ 499 AC_DEFINE([HAVE_APPARMOR], 1, [do we have apparmor support?]) 500 AC_MSG_RESULT([yes]) 501 ], [ 502 LIBS="$SAVED_LIBS" 503 AC_MSG_RESULT([no]) 504 ]) 505]) 506 507AC_MSG_CHECKING(for FPM build) 508if test "$PHP_FPM" != "no"; then 509 AC_MSG_RESULT($PHP_FPM) 510 511 AC_FPM_STDLIBS 512 AC_FPM_PRCTL 513 AC_FPM_CLOCK 514 AC_FPM_TRACE 515 AC_FPM_BUILTIN_ATOMIC 516 AC_FPM_LQ 517 AC_FPM_SYSCONF 518 AC_FPM_TIMES 519 AC_FPM_KQUEUE 520 AC_FPM_PORT 521 AC_FPM_DEVPOLL 522 AC_FPM_EPOLL 523 AC_FPM_SELECT 524 AC_FPM_APPARMOR 525 526 PHP_ARG_WITH([fpm-user],, 527 [AS_HELP_STRING([[--with-fpm-user[=USER]]], 528 [Set the user for php-fpm to run as. (default: nobody)])], 529 [nobody], 530 [no]) 531 532 PHP_ARG_WITH([fpm-group],, 533 [AS_HELP_STRING([[--with-fpm-group[=GRP]]], 534 [Set the group for php-fpm to run as. For a system user, this should 535 usually be set to match the fpm username (default: nobody)])], 536 [nobody], 537 [no]) 538 539 PHP_ARG_WITH([fpm-systemd],, 540 [AS_HELP_STRING([--with-fpm-systemd], 541 [Activate systemd integration])], 542 [no], 543 [no]) 544 545 PHP_ARG_WITH([fpm-acl],, 546 [AS_HELP_STRING([--with-fpm-acl], 547 [Use POSIX Access Control Lists])], 548 [no], 549 [no]) 550 551 if test "$PHP_FPM_SYSTEMD" != "no" ; then 552 PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 209]) 553 554 AC_CHECK_HEADERS(systemd/sd-daemon.h, [HAVE_SD_DAEMON_H="yes"], [HAVE_SD_DAEMON_H="no"]) 555 if test $HAVE_SD_DAEMON_H = "no"; then 556 AC_MSG_ERROR([Your system does not support systemd.]) 557 else 558 AC_DEFINE(HAVE_SYSTEMD, 1, [FPM use systemd integration]) 559 PHP_FPM_SD_FILES="fpm/fpm_systemd.c" 560 PHP_EVAL_LIBLINE($SYSTEMD_LIBS) 561 PHP_EVAL_INCLINE($SYSTEMD_CFLAGS) 562 php_fpm_systemd=notify 563 fi 564 else 565 php_fpm_systemd=simple 566 fi 567 568 if test "$PHP_FPM_ACL" != "no" ; then 569 AC_CHECK_HEADERS([sys/acl.h]) 570 dnl *BSD has acl_* built into libc. 571 AC_CHECK_FUNC(acl_free, [ 572 AC_DEFINE(HAVE_FPM_ACL, 1, [ POSIX Access Control List ]) 573 ],[ 574 AC_CHECK_LIB(acl, acl_free, [ 575 PHP_ADD_LIBRARY(acl) 576 AC_DEFINE(HAVE_FPM_ACL, 1, [ POSIX Access Control List ]) 577 ],[ 578 AC_MSG_ERROR(libacl required not found) 579 ]) 580 ]) 581 fi 582 583 PHP_SUBST_OLD(php_fpm_systemd) 584 AC_DEFINE_UNQUOTED(PHP_FPM_SYSTEMD, "$php_fpm_systemd", [fpm systemd service type]) 585 586 if test -z "$PHP_FPM_USER" -o "$PHP_FPM_USER" = "yes" -o "$PHP_FPM_USER" = "no"; then 587 php_fpm_user="nobody" 588 else 589 php_fpm_user="$PHP_FPM_USER" 590 fi 591 592 if test -z "$PHP_FPM_GROUP" -o "$PHP_FPM_GROUP" = "yes" -o "$PHP_FPM_GROUP" = "no"; then 593 php_fpm_group="nobody" 594 else 595 php_fpm_group="$PHP_FPM_GROUP" 596 fi 597 598 PHP_SUBST_OLD(php_fpm_user) 599 PHP_SUBST_OLD(php_fpm_group) 600 php_fpm_sysconfdir=`eval echo $sysconfdir` 601 PHP_SUBST_OLD(php_fpm_sysconfdir) 602 php_fpm_localstatedir=`eval echo $localstatedir` 603 PHP_SUBST_OLD(php_fpm_localstatedir) 604 php_fpm_prefix=`eval echo $prefix` 605 PHP_SUBST_OLD(php_fpm_prefix) 606 607 AC_DEFINE_UNQUOTED(PHP_FPM_USER, "$php_fpm_user", [fpm user name]) 608 AC_DEFINE_UNQUOTED(PHP_FPM_GROUP, "$php_fpm_group", [fpm group name]) 609 610 PHP_ADD_BUILD_DIR(sapi/fpm/fpm) 611 PHP_ADD_BUILD_DIR(sapi/fpm/fpm/events) 612 PHP_OUTPUT(sapi/fpm/php-fpm.conf sapi/fpm/www.conf sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html) 613 PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/fpm/Makefile.frag]) 614 615 SAPI_FPM_PATH=sapi/fpm/php-fpm 616 617 if test "$fpm_trace_type" && test -f "$abs_srcdir/sapi/fpm/fpm/fpm_trace_$fpm_trace_type.c"; then 618 PHP_FPM_TRACE_FILES="fpm/fpm_trace.c fpm/fpm_trace_$fpm_trace_type.c" 619 fi 620 621 PHP_FPM_CFLAGS="-I$abs_srcdir/sapi/fpm -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1" 622 623 PHP_FPM_FILES="fpm/fpm.c \ 624 fpm/fpm_children.c \ 625 fpm/fpm_cleanup.c \ 626 fpm/fpm_clock.c \ 627 fpm/fpm_conf.c \ 628 fpm/fpm_env.c \ 629 fpm/fpm_events.c \ 630 fpm/fpm_log.c \ 631 fpm/fpm_main.c \ 632 fpm/fpm_php.c \ 633 fpm/fpm_php_trace.c \ 634 fpm/fpm_process_ctl.c \ 635 fpm/fpm_request.c \ 636 fpm/fpm_shm.c \ 637 fpm/fpm_scoreboard.c \ 638 fpm/fpm_signals.c \ 639 fpm/fpm_sockets.c \ 640 fpm/fpm_status.c \ 641 fpm/fpm_stdio.c \ 642 fpm/fpm_unix.c \ 643 fpm/fpm_worker_pool.c \ 644 fpm/zlog.c \ 645 fpm/events/select.c \ 646 fpm/events/poll.c \ 647 fpm/events/epoll.c \ 648 fpm/events/kqueue.c \ 649 fpm/events/devpoll.c \ 650 fpm/events/port.c \ 651 " 652 653 PHP_SELECT_SAPI(fpm, program, $PHP_FPM_FILES $PHP_FPM_TRACE_FILES $PHP_FPM_SD_FILES, $PHP_FPM_CFLAGS, '$(SAPI_FPM_PATH)') 654 655 case $host_alias in 656 *aix*) 657 BUILD_FPM="echo '\#! .' > php.sym && echo >>php.sym && nm -BCpg \`echo \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_FPM_OBJS) | sed 's/\([A-Za-z0-9_]*\)\.lo/\1.o/g'\` | \$(AWK) '{ if (((\$\$2 == \"T\") || (\$\$2 == \"D\") || (\$\$2 == \"B\")) && (substr(\$\$3,1,1) != \".\")) { print \$\$3 } }' | sort -u >> php.sym && \$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) -Wl,-brtl -Wl,-bE:php.sym \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_FASTCGI_OBJS) \$(PHP_FPM_OBJS) \$(EXTRA_LIBS) \$(FPM_EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_FPM_PATH)" 658 ;; 659 *darwin*) 660 BUILD_FPM="\$(CC) \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(NATIVE_RPATHS) \$(PHP_GLOBAL_OBJS:.lo=.o) \$(PHP_BINARY_OBJS:.lo=.o) \$(PHP_FASTCGI_OBJS:.lo=.o) \$(PHP_FPM_OBJS:.lo=.o) \$(PHP_FRAMEWORKS) \$(EXTRA_LIBS) \$(FPM_EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_FPM_PATH)" 661 ;; 662 *) 663 BUILD_FPM="\$(LIBTOOL) --mode=link \$(CC) -export-dynamic \$(CFLAGS_CLEAN) \$(EXTRA_CFLAGS) \$(EXTRA_LDFLAGS_PROGRAM) \$(LDFLAGS) \$(PHP_RPATHS) \$(PHP_GLOBAL_OBJS) \$(PHP_BINARY_OBJS) \$(PHP_FASTCGI_OBJS) \$(PHP_FPM_OBJS) \$(EXTRA_LIBS) \$(FPM_EXTRA_LIBS) \$(ZEND_EXTRA_LIBS) -o \$(SAPI_FPM_PATH)" 664 ;; 665 esac 666 667 PHP_SUBST(SAPI_FPM_PATH) 668 PHP_SUBST(BUILD_FPM) 669 670else 671 AC_MSG_RESULT(no) 672fi 673