Annotation of embedaddon/php/sapi/fpm/config.m4, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>