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