# Copyright (C) Igor Sysoev # Copyright (C) NGINX, Inc. # Sizes of C types. # "-Wall -Werror" or similar constraints in default CFLAGS may require # to use "%zu" format to printf() result of sizeof(). But "%zu" may # be unavailable, so the "(int)" cast is a simple and portable solution: # printf("%d", (int) sizeof(TYPE)); njs_feature="sizeof(int)" njs_feature_name=NJS_INT_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#include int main() { printf(\"%d\", (int) sizeof(int)); return 0; }" . auto/feature njs_feature="sizeof(u_int)" njs_feature_name=NJS_UINT_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#include #include int main() { printf(\"%d\", (int) sizeof(u_int)); return 0; }" . auto/feature njs_feature="sizeof(void *)" njs_feature_name=NJS_PTR_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#include int main() { printf(\"%d\", (int) sizeof(void *)); return 0; }" . auto/feature njs_feature="sizeof(uintptr_t)" njs_feature_name=NJS_UINTPTR_T_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#include #include int main() { printf(\"%d\", (int) sizeof(uintptr_t)); return 0; }" . auto/feature case "$njs_feature_value" in 8) NJS_64BIT=1 ;; *) NJS_64BIT=0 ;; esac njs_feature="sizeof(size_t)" njs_feature_name=NJS_SIZE_T_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#include int main() { printf(\"%d\", (int) sizeof(size_t)); return 0; }" . auto/feature njs_feature="sizeof(off_t)" njs_feature_name=NJS_OFF_T_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#define _FILE_OFFSET_BITS 64 #include #include int main() { printf(\"%d\", (int) sizeof(off_t)); return 0; }" . auto/feature njs_feature="sizeof(time_t)" njs_feature_name=NJS_TIME_T_SIZE njs_feature_run=value njs_feature_incs= njs_feature_libs= njs_feature_test="#include #include int main(void) { printf(\"%d\", (int) sizeof(time_t)); return 0; }" . auto/feature # Ensuring that double type is always evaluated at standard # precision required by njs_diyfp_t case $NJS_CC_NAME in gcc) NJS_CFLAGS="$NJS_CFLAGS -fexcess-precision=standard" ;; clang) njs_found=no njs_feature="flag -ffp-eval-method=double" njs_feature_name=NJS_HAVE_FP_EVAL_METHOD njs_feature_run=no njs_feature_incs="-ffp-eval-method=double" njs_feature_libs= njs_feature_test="int main(void) { return 0; }" . auto/feature if [ $njs_found = yes ]; then NJS_CFLAGS="$NJS_CFLAGS -ffp-eval-method=double" fi ;; SunC) njs_found=no njs_feature="flag -xarch=sse2" njs_feature_name=NJS_HAVE_XARCH_SSE2 njs_feature_run=no njs_feature_incs="-xarch=sse2" njs_feature_libs= njs_feature_test="int main(void) { return 0; }" . auto/feature if [ $njs_found = yes ]; then NJS_CFLAGS="$NJS_CFLAGS -xarch=sse2" fi ;; esac