📄 configure.ac
字号:
AC_CHECK_MCSC(mcsc=yes, mcsc=no)dnl # check for SJLJ methodAC_CHECK_HEADERS(signal.h)AC_CHECK_FUNCS(sigsetjmp siglongjmp setjmp longjmp _setjmp _longjmp)AC_CHECK_FUNCS(sigaltstack sigstack)AC_CHECK_SJLJ(sjlj=yes, sjlj=no, sjlj_type)dnl #dnl # 2. make a general decisiondnl #if test ".$mcsc" = .yes; then mctx_mth=mcsc mctx_dsp=sc mctx_stk=mcelif test ".$sjlj" = .yes; then mctx_mth=sjlj mctx_dsp=$sjlj_type mctx_stk=none AC_IFALLYES(func:sigstack, mctx_stk=ss) AC_IFALLYES(func:sigaltstack, mctx_stk=sas) case $mctx_dsp in sjljlx|sjljisc|sjljw32 ) mctx_stk=none esacelse AC_ERROR([no appropriate mctx method found])fidnl #dnl # 3. allow decision to be overridden by userdnl #AC_ARG_WITH(mctx-mth,dnl[ --with-mctx-mth=ID force mctx method (mcsc,sjlj)],[case $withval in mcsc|sjlj ) mctx_mth=$withval ;; * ) AC_ERROR([invalid mctx method -- allowed: mcsc,sjlj]) ;;esac])dnlAC_ARG_WITH(mctx-dsp,dnl[ --with-mctx-dsp=ID force mctx dispatching (sc,ssjlj,sjlj,usjlj,sjlje,...)],[case $withval in sc|ssjlj|sjlj|usjlj|sjlje|sjljlx|sjljisc|sjljw32 ) mctx_dsp=$withval ;; * ) AC_ERROR([invalid mctx dispatching -- allowed: sc,ssjlj,sjlj,usjlj,sjlje,sjljlx,sjljisc,sjljw32]) ;;esac])dnlAC_ARG_WITH(mctx-stk,dnl[ --with-mctx-stk=ID force mctx stack setup (mc,ss,sas,...)],[case $withval in mc|ss|sas|none ) mctx_stk=$withval ;; * ) AC_ERROR([invalid mctx stack setup -- allowed: mc,ss,sas,none]) ;;esac])dnldnl #dnl # 4. determine a few additional detailsdnl #dnl # whether sigaltstack has to use stack_t instead of struct sigaltstackAC_CHECK_TYPEDEF(stack_t, signal.h)dnl # direction of stack growAC_CHECK_STACKGROWTH(PTH_STACKGROWTH)if test ".$ac_cv_check_stackgrowth" = ".down"; then PTH_STACK_GROWTH="down"else PTH_STACK_GROWTH="up"fiAC_SUBST(PTH_STACK_GROWTH)dnl # GNU Hurd has a broken libc which has stubs for sigaltstack anddnl # sigstack. When the following Autoconf checks for them are run, itdnl # even crashes the system. So we have to disable these checks here.case $PLATFORM in *86-*-gnu0* ) ac_cv_func_sigaltstack="no"; ac_cv_func_sigstack="no" ;;esacdnl # how to specify stacks for the various functionsAC_CHECK_STACKSETUP(makecontext, pth_skaddr_makecontext, pth_sksize_makecontext)AC_CHECK_STACKSETUP(sigaltstack, pth_skaddr_sigaltstack, pth_sksize_sigaltstack)AC_CHECK_STACKSETUP(sigstack, pth_skaddr_sigstack, pth_sksize_sigstack)dnl # how to implement POSIX compliant sig{set,long}jmp()case $mctx_dsp in [ ssjlj ) pth_sigjmpbuf='sigjmp_buf' pth_sigsetjmp='sigsetjmp(buf,1)' pth_siglongjmp='siglongjmp(buf,val)' ;; sjlj ) pth_sigjmpbuf='jmp_buf' pth_sigsetjmp='setjmp(buf)' pth_siglongjmp='longjmp(buf,val)' ;; usjlj ) pth_sigjmpbuf='jmp_buf' pth_sigsetjmp='_setjmp(buf)' pth_siglongjmp='_longjmp(buf,val)' ;; sjlje ) pth_sigjmpbuf='jmp_buf' pth_sigsetjmp='setjmp(buf)' pth_siglongjmp='longjmp(buf,val)' ;; sjljlx|sjljisc|sjljw32 ) pth_sigjmpbuf='sigjmp_buf' pth_sigsetjmp='sigsetjmp(buf,1)' pth_siglongjmp='siglongjmp(buf,val)' ;;] esacpth_sigjmpbuf="#define pth_sigjmpbuf $pth_sigjmpbuf"pth_sigsetjmp="#define pth_sigsetjmp(buf) $pth_sigsetjmp"pth_siglongjmp="#define pth_siglongjmp(buf,val) $pth_siglongjmp"AC_SUBST(pth_sigjmpbuf)AC_SUBST(pth_sigsetjmp)AC_SUBST(pth_siglongjmp)dnl #dnl # 5. export the resultsdnl #AC_DEFINE_UNQUOTED(PTH_MCTX_MTH_use, [PTH_MCTX_MTH_$mctx_mth], [define for machine context method])AC_DEFINE_UNQUOTED(PTH_MCTX_DSP_use, [PTH_MCTX_DSP_$mctx_dsp], [define for machine context dispatching])AC_DEFINE_UNQUOTED(PTH_MCTX_STK_use, [PTH_MCTX_STK_$mctx_stk], [define for machine context stack])PTH_MCTX_ID="$mctx_mth/$mctx_dsp/$mctx_stk"AC_MSG_RESULT([decision on mctx implementation... ${TB}${PTH_MCTX_ID}${TN}])AC_SUBST(PTH_MCTX_ID)AC_MSG_VERBOSE([decided mctx method: $mctx_mth])AC_MSG_VERBOSE([decided mctx dispatching: $mctx_dsp])AC_MSG_VERBOSE([decided mctx stack setup: $mctx_stk])dnl ##dnl ## SYSTEM CALL MAPPINGdnl ##AC_MSG_PART(System Call Mapping)dnl # check for syscall(2)AC_CHECK_HEADERS(sys/syscall.h sys/socketcall.h)AC_CHECK_FUNCS(syscall)AC_CHECK_DEFINE(SYS_read, sys/syscall.h)dnl # check for dlsym(3) with RTLD_NEXTAC_CHECK_HEADERS(dlfcn.h)AC_CHECK_LIB(dl, dlsym)AC_CHECK_FUNCS(dlopen dlsym dlclose)AC_CHECK_DEFINE(RTLD_NEXT, dlfcn.h)dnl # check for path to dynamic C libraryAC_MSG_CHECKING([for syscall dynamic libraries])pth_syscall_libs=""dirs=`echo "$LDFLAGS" |\ sed -e 's;-L\([[^ ]]*\);<\1>;g' |\ sed -e 's;^[[^<]]*<;;' -e 's;>[[^<]]*<; ;g' -e 's;>.*$;;'`dirs="$dirs /usr/lib /lib"libs=`echo "$LIBS" |\ sed -e 's;-l\([[^ ]]*\);<\1>;g' |\ sed -e 's;^[[^<]]*<;;' -e 's;>[[^<]]*<; ;g' -e 's;>.*$;;'`libs="$libs c"for lib in $libs; do for dir in $dirs; do for ext in so sl; do if test -f "${dir}/lib${lib}.${ext}"; then if test ".$pth_syscall_libs" = .; then pth_syscall_libs="${dir}/lib${lib}.${ext}" else pth_syscall_libs="${pth_syscall_libs}:${dir}/lib${lib}.${ext}" fi fi done donedoneAC_MSG_RESULT([$pth_syscall_libs])AC_DEFINE_UNQUOTED(PTH_SYSCALL_LIBS, ["$pth_syscall_libs"], [define for the paths to syscall dynamic libraries])AC_MSG_CHECKING([whether soft system call mapping is used])AC_ARG_ENABLE(syscall-soft,dnl[ --enable-syscall-soft enable soft system call mapping (default=no)],enable_syscall_soft="$enableval",if test ".$enable_syscall_soft" = .; then enable_syscall_soft=nofi)dnlif test .$enable_syscall_soft = .yes; then PTH_SYSCALL_SOFT=1 msg="yes"else PTH_SYSCALL_SOFT=0 msg="no"fiAC_MSG_RESULT([$msg])AC_SUBST(PTH_SYSCALL_SOFT)AC_MSG_CHECKING([whether hard system call mapping is used])AC_ARG_ENABLE(syscall-hard,dnl[ --enable-syscall-hard enable hard system call mapping (default=no)],enable_syscall_hard="$enableval",[if test ".$enable_syscall_hard" = .; then enable_syscall_hard=nofi])dnlif test ".$enable_syscall_hard" = .yes; then AC_IFALLYES(func:syscall header:sys/syscall.h define:SYS_read, enable_syscall_hard=yes, enable_syscall_hard=no)fiif test ".$enable_syscall_hard" = .yes; then PTH_SYSCALL_HARD=1 msg="yes"else PTH_SYSCALL_HARD=0 msg="no"fiAC_MSG_RESULT([$msg])AC_SUBST(PTH_SYSCALL_HARD)if test ".$enable_syscall_hard" = .yes; then echo "${TB}Warning: The hard system call mapping variant is an experimental feature.${TN}" echo "${TB} It is not guaranteed to work if the mapped system calls on your${TN}" echo "${TB} platform do not 100% comply to the POSIX.1-2001/SUSv3 prototypes.${TN}"fidnl ##dnl ## BUILD PARAMETERSdnl ##AC_MSG_PART(Build Parameters)dnl # check for various build parametersAC_CHECK_BUILDPARAMdnl # whether to build Pthread libraryAC_MSG_CHECKING(whether to build Pthread library)AC_ARG_ENABLE(pthread,dnl[ --enable-pthread build Pthread library (default=no)],enable_pthread="$enableval",if test ".$enable_pthread" = .; then enable_pthread=nofi)dnlAC_MSG_RESULT([$enable_pthread])if test ".$enable_pthread" = .yes; then PTHREAD_O=pthread.o dnl # only for stripped down Pth source tree LIBPTHREAD_A=libpthread.a dnl # only for stripped down Pth source tree LIBPTHREAD_LA=libpthread.la PTHREAD_CONFIG_1='$(S)pthread-config.1' PTHREAD_3='$(S)pthread.3' INSTALL_PTHREAD=install-pthread UNINSTALL_PTHREAD=uninstall-pthread TEST_PTHREAD=test_pthread enable_syscall_soft=yes PTH_SYSCALL_SOFT=1 AC_HAVE_HEADERS(pthread.h) ac_warn=no if test ".$ac_cv_header_pthread_h" = .yes; then warn=yes changequote(<<,>>) case $PLATFORM in *-*-freebsd* ) ac_warn=no ;; *-*-linux* ) ac_warn=no ;; *-*-solaris* ) ac_warn=no ;; *-*-irix* ) ac_warn=no ;; esac changequote([,]) fi if test ".$ac_warn" = .yes; then echo "${TB}Warning: You seem to have a vendor Pthread library installed.${TN}" echo "${TB} There might be conflicts with its pthread.h under compile-time!${TN}" fielse PTHREAD_O="" dnl # only for stripped down Pth source tree LIBPTHREAD_A="" dnl # only for stripped down Pth source tree LIBPTHREAD_LA="" PTHREAD_CONFIG_1="" PTHREAD_3="" INSTALL_PTHREAD="" UNINSTALL_PTHREAD="" TEST_PTHREAD=""fiAC_SUBST(PTHREAD_O)AC_SUBST(LIBPTHREAD_A)AC_SUBST(LIBPTHREAD_LA)AC_SUBST(PTHREAD_CONFIG_1)AC_SUBST(PTHREAD_3)AC_SUBST(INSTALL_PTHREAD)AC_SUBST(UNINSTALL_PTHREAD)AC_SUBST(TEST_PTHREAD)dnl # whether to build against OSSP ex libraryAC_CHECK_EXTLIB(OSSP ex, ex, __ex_ctx, ex.h, AC_DEFINE(PTH_EX, 1, [define if using OSSP ex in GNU pth]))dnl # whether to build against Sfio libraryPTH_EXT_SFIO=0AC_CHECK_EXTLIB(Sfio, sfio, sfdisc, sfio.h, PTH_EXT_SFIO=1)AC_SUBST(PTH_EXT_SFIO)dnl # whether to build against Dmalloc libraryAC_CHECK_EXTLIB(Dmalloc, dmalloc, dmalloc_debug, dmalloc.h, AC_DEFINE(PTH_DMALLOC, 1, [define if using Dmalloc in GNU pth]))dnl ##dnl ## OUTPUT SUBSTITUTIONdnl ##AC_MSG_PART(Output Substitution)AC_OUTPUT(dnlMakefile dnlpthread-config dnlpthread.h dnlpth-config dnlpth.h dnlpth_acmac.h dnl,dnlchmod +rx pthread-configchmod +rx pth-config)dnlif test ".$enable_pthread" = .no; then rm -f pthread-config rm -f pthread.hfiif test ".$enable_batch" != .yes; then echo "" echo "Now please type \`${TB}make${TN}' to compile. Good luck." echo ""fi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -