10Sigor@sysoev.ru 20Sigor@sysoev.ru# Copyright (C) Igor Sysoev 30Sigor@sysoev.ru# Copyright (C) NGINX, Inc. 40Sigor@sysoev.ru 50Sigor@sysoev.ru 60Sigor@sysoev.ru# Linux glibc 2.1.91, FreeBSD 7.0, Solaris 11, 70Sigor@sysoev.ru# MacOSX 10.6 (Snow Leopard), NetBSD 5.0. 80Sigor@sysoev.ru 90Sigor@sysoev.runxt_feature="posix_memalign()" 100Sigor@sysoev.runxt_feature_name=NXT_HAVE_POSIX_MEMALIGN 110Sigor@sysoev.runxt_feature_run=yes 120Sigor@sysoev.runxt_feature_incs= 130Sigor@sysoev.runxt_feature_libs= 140Sigor@sysoev.runxt_feature_test="#include <stdlib.h> 150Sigor@sysoev.ru 160Sigor@sysoev.ru int main() { 170Sigor@sysoev.ru void *p; 180Sigor@sysoev.ru 190Sigor@sysoev.ru if (posix_memalign(&p, 4096, 4096) != 0) 200Sigor@sysoev.ru return 1; 210Sigor@sysoev.ru 220Sigor@sysoev.ru free(p); 230Sigor@sysoev.ru return 0; 240Sigor@sysoev.ru }" 250Sigor@sysoev.ru. auto/feature 260Sigor@sysoev.ru 270Sigor@sysoev.ru 280Sigor@sysoev.ruif [ $nxt_found = no ]; then 290Sigor@sysoev.ru 300Sigor@sysoev.ru # Solaris, HP-UX. 310Sigor@sysoev.ru 320Sigor@sysoev.ru nxt_feature="memalign()" 330Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_MEMALIGN 340Sigor@sysoev.ru nxt_feature_run=yes 350Sigor@sysoev.ru nxt_feature_incs= 360Sigor@sysoev.ru nxt_feature_libs= 370Sigor@sysoev.ru nxt_feature_test="#include <stdlib.h> 380Sigor@sysoev.ru 390Sigor@sysoev.ru int main() { 400Sigor@sysoev.ru void *p; 410Sigor@sysoev.ru 420Sigor@sysoev.ru p = memalign(4096, 4096); 430Sigor@sysoev.ru if (p == NULL) 440Sigor@sysoev.ru return 1; 450Sigor@sysoev.ru 460Sigor@sysoev.ru free(p); 470Sigor@sysoev.ru return 0; 480Sigor@sysoev.ru }" 490Sigor@sysoev.ru . auto/feature 500Sigor@sysoev.rufi 510Sigor@sysoev.ru 520Sigor@sysoev.ru 530Sigor@sysoev.ru# Linux malloc_usable_size(). 540Sigor@sysoev.ru 550Sigor@sysoev.runxt_feature="Linux malloc_usable_size()" 560Sigor@sysoev.runxt_feature_name=NXT_HAVE_MALLOC_USABLE_SIZE 570Sigor@sysoev.runxt_feature_run=yes 580Sigor@sysoev.runxt_feature_incs= 590Sigor@sysoev.runxt_feature_libs= 600Sigor@sysoev.runxt_feature_test="#include <malloc.h> 610Sigor@sysoev.ru 620Sigor@sysoev.ru int main() { 630Sigor@sysoev.ru void *p; 640Sigor@sysoev.ru 650Sigor@sysoev.ru p = malloc(4096); 660Sigor@sysoev.ru if (malloc_usable_size(p) < 4096) 670Sigor@sysoev.ru return 1; 680Sigor@sysoev.ru return 0; 690Sigor@sysoev.ru }" 700Sigor@sysoev.ru. auto/feature 710Sigor@sysoev.ru 720Sigor@sysoev.ru 730Sigor@sysoev.ruif [ $nxt_found = no ]; then 740Sigor@sysoev.ru 750Sigor@sysoev.ru # FreeBSD malloc_usable_size(). 760Sigor@sysoev.ru 770Sigor@sysoev.ru nxt_feature="FreeBSD malloc_usable_size()" 780Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_MALLOC_USABLE_SIZE 790Sigor@sysoev.ru nxt_feature_run=yes 800Sigor@sysoev.ru nxt_feature_incs= 810Sigor@sysoev.ru nxt_feature_libs= 820Sigor@sysoev.ru nxt_feature_test="#include <stdlib.h> 830Sigor@sysoev.ru #include <malloc_np.h> 840Sigor@sysoev.ru 850Sigor@sysoev.ru int main() { 860Sigor@sysoev.ru void *p; 870Sigor@sysoev.ru 880Sigor@sysoev.ru p = malloc(4096); 890Sigor@sysoev.ru if (malloc_usable_size(p) < 4096) 900Sigor@sysoev.ru return 1; 910Sigor@sysoev.ru return 0; 920Sigor@sysoev.ru }" 930Sigor@sysoev.ru . auto/feature 940Sigor@sysoev.rufi 950Sigor@sysoev.ru 960Sigor@sysoev.ru 970Sigor@sysoev.ruif [ $nxt_found = no ]; then 980Sigor@sysoev.ru 990Sigor@sysoev.ru # MacOSX malloc_good_size(). 1000Sigor@sysoev.ru 1010Sigor@sysoev.ru nxt_feature="MacOSX malloc_good_size()" 1020Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_MALLOC_GOOD_SIZE 1030Sigor@sysoev.ru nxt_feature_run=yes 1040Sigor@sysoev.ru nxt_feature_incs= 1050Sigor@sysoev.ru nxt_feature_libs= 1060Sigor@sysoev.ru nxt_feature_test="#include <malloc/malloc.h> 1070Sigor@sysoev.ru 1080Sigor@sysoev.ru int main() { 1090Sigor@sysoev.ru if (malloc_good_size(4096) < 4096) 1100Sigor@sysoev.ru return 1; 1110Sigor@sysoev.ru return 0; 1120Sigor@sysoev.ru }" 1130Sigor@sysoev.ru . auto/feature 1140Sigor@sysoev.rufi 1150Sigor@sysoev.ru 1160Sigor@sysoev.ru 1170Sigor@sysoev.ru# alloca(). 1180Sigor@sysoev.ru 1190Sigor@sysoev.ru# Linux, FreeBSD, MacOSX. 1200Sigor@sysoev.ru 1210Sigor@sysoev.runxt_feature="alloca()" 1220Sigor@sysoev.runxt_feature_name=NXT_HAVE_ALLOCA 1230Sigor@sysoev.runxt_feature_run=yes 1240Sigor@sysoev.runxt_feature_incs= 1250Sigor@sysoev.runxt_feature_libs= 1260Sigor@sysoev.runxt_feature_test="#include <stdlib.h> 1270Sigor@sysoev.ru 1280Sigor@sysoev.ru int main() { 1290Sigor@sysoev.ru void *p; 1300Sigor@sysoev.ru 1310Sigor@sysoev.ru p = alloca(256); 1320Sigor@sysoev.ru if (p == 0) 1330Sigor@sysoev.ru return 1; 1340Sigor@sysoev.ru return 0; 1350Sigor@sysoev.ru }" 1360Sigor@sysoev.ru. auto/feature 1370Sigor@sysoev.ru 1380Sigor@sysoev.ru 1390Sigor@sysoev.ruif [ $nxt_found = no ]; then 1400Sigor@sysoev.ru 1410Sigor@sysoev.ru # Linux, Solaris, MacOSX. 1420Sigor@sysoev.ru 1430Sigor@sysoev.ru nxt_feature="alloca() in alloca.h" 1440Sigor@sysoev.ru nxt_feature_name=NXT_HAVE_ALLOCA_H 1450Sigor@sysoev.ru nxt_feature_run=yes 1460Sigor@sysoev.ru nxt_feature_incs= 1470Sigor@sysoev.ru nxt_feature_libs= 1480Sigor@sysoev.ru nxt_feature_test="#include <alloca.h> 1490Sigor@sysoev.ru 1500Sigor@sysoev.ru int main() { 1510Sigor@sysoev.ru void *p; 1520Sigor@sysoev.ru 1530Sigor@sysoev.ru p = alloca(256); 1540Sigor@sysoev.ru if (p == 0) 1550Sigor@sysoev.ru return 1; 1560Sigor@sysoev.ru return 0; 1570Sigor@sysoev.ru }" 1580Sigor@sysoev.ru . auto/feature 1590Sigor@sysoev.rufi 160*328Smax.romanov@nginx.com 161*328Smax.romanov@nginx.com 162*328Smax.romanov@nginx.com# Linux mallopt(). 163*328Smax.romanov@nginx.com 164*328Smax.romanov@nginx.comnxt_feature="Linux mallopt()" 165*328Smax.romanov@nginx.comnxt_feature_name=NXT_HAVE_MALLOPT 166*328Smax.romanov@nginx.comnxt_feature_run= 167*328Smax.romanov@nginx.comnxt_feature_incs= 168*328Smax.romanov@nginx.comnxt_feature_libs= 169*328Smax.romanov@nginx.comnxt_feature_test="#include <malloc.h> 170*328Smax.romanov@nginx.com 171*328Smax.romanov@nginx.com int main() { 172*328Smax.romanov@nginx.com mallopt(M_PERTURB, 0x55); 173*328Smax.romanov@nginx.com return 0; 174*328Smax.romanov@nginx.com }" 175*328Smax.romanov@nginx.com. auto/feature 176