1*3da8d17dSfengbojiang(姜凤波) 2*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Igor Sysoev 3*3da8d17dSfengbojiang(姜凤波)# Copyright (C) Nginx, Inc. 4*3da8d17dSfengbojiang(姜凤波) 5*3da8d17dSfengbojiang(姜凤波) 6*3da8d17dSfengbojiang(姜凤波)if [ $NGX_LIBATOMIC != YES ]; then 7*3da8d17dSfengbojiang(姜凤波) 8*3da8d17dSfengbojiang(姜凤波) have=NGX_HAVE_LIBATOMIC . auto/have 9*3da8d17dSfengbojiang(姜凤波) CORE_INCS="$CORE_INCS $NGX_LIBATOMIC/src" 10*3da8d17dSfengbojiang(姜凤波) LINK_DEPS="$LINK_DEPS $NGX_LIBATOMIC/src/libatomic_ops.a" 11*3da8d17dSfengbojiang(姜凤波) CORE_LIBS="$CORE_LIBS $NGX_LIBATOMIC/src/libatomic_ops.a" 12*3da8d17dSfengbojiang(姜凤波) 13*3da8d17dSfengbojiang(姜凤波)else 14*3da8d17dSfengbojiang(姜凤波) 15*3da8d17dSfengbojiang(姜凤波) ngx_feature="atomic_ops library" 16*3da8d17dSfengbojiang(姜凤波) ngx_feature_name=NGX_HAVE_LIBATOMIC 17*3da8d17dSfengbojiang(姜凤波) ngx_feature_run=yes 18*3da8d17dSfengbojiang(姜凤波) ngx_feature_incs="#define AO_REQUIRE_CAS 19*3da8d17dSfengbojiang(姜凤波) #include <atomic_ops.h>" 20*3da8d17dSfengbojiang(姜凤波) ngx_feature_path= 21*3da8d17dSfengbojiang(姜凤波) ngx_feature_libs="-latomic_ops" 22*3da8d17dSfengbojiang(姜凤波) ngx_feature_test="long n = 0; 23*3da8d17dSfengbojiang(姜凤波) if (!AO_compare_and_swap(&n, 0, 1)) 24*3da8d17dSfengbojiang(姜凤波) return 1; 25*3da8d17dSfengbojiang(姜凤波) if (AO_fetch_and_add(&n, 1) != 1) 26*3da8d17dSfengbojiang(姜凤波) return 1; 27*3da8d17dSfengbojiang(姜凤波) if (n != 2) 28*3da8d17dSfengbojiang(姜凤波) return 1; 29*3da8d17dSfengbojiang(姜凤波) AO_nop();" 30*3da8d17dSfengbojiang(姜凤波) . auto/feature 31*3da8d17dSfengbojiang(姜凤波) 32*3da8d17dSfengbojiang(姜凤波) if [ $ngx_found = yes ]; then 33*3da8d17dSfengbojiang(姜凤波) CORE_LIBS="$CORE_LIBS $ngx_feature_libs" 34*3da8d17dSfengbojiang(姜凤波) else 35*3da8d17dSfengbojiang(姜凤波) 36*3da8d17dSfengbojiang(姜凤波)cat << END 37*3da8d17dSfengbojiang(姜凤波) 38*3da8d17dSfengbojiang(姜凤波)$0: error: libatomic_ops library was not found. 39*3da8d17dSfengbojiang(姜凤波) 40*3da8d17dSfengbojiang(姜凤波)END 41*3da8d17dSfengbojiang(姜凤波) exit 1 42*3da8d17dSfengbojiang(姜凤波) fi 43*3da8d17dSfengbojiang(姜凤波)fi 44