A clone of btpd with my configuration changes.
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

configure.ac 4.0 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. AC_PREREQ(2.61)
  2. AC_INIT(btpd, 0.15, btpd@murmeldjur.se)
  3. AM_INIT_AUTOMAKE([1.10 foreign subdir-objects])
  4. AC_CONFIG_FILES([Makefile])
  5. AC_PROG_CC
  6. AM_PROG_CC_C_O
  7. AC_PROG_RANLIB
  8. AC_USE_SYSTEM_EXTENSIONS
  9. AC_DEFUN([PROG_SILENT_IFELSE],
  10. ac_output=`$1 2>&1`
  11. if test x"$ac_output" != x; then
  12. echo $1 nonsilent >&AS_MESSAGE_LOG_FD
  13. echo $ac_output >&AS_MESSAGE_LOG_FD
  14. [$3]
  15. else
  16. [$2]
  17. fi)
  18. AC_DEFUN([CC_ARGS_OK_IFELSE],
  19. AC_LANG_PUSH(C)
  20. AC_LANG_CONFTEST([int foo(void) { return 12; }])
  21. AC_LANG_POP(C)
  22. PROG_SILENT_IFELSE([$CC $1 -c conftest.c],
  23. rm -f conftest.c conftest.$OBJEXT
  24. [$2],
  25. rm -f conftest.c conftest.$OBJEXT
  26. [$3]))
  27. AC_ARG_WITH(openssl,
  28. [ --with-openssl=dir use openssl installed in dir],
  29. [
  30. AC_SUBST(openssl_LDFLAGS,["-L${withval}/lib -Wl,-R,${withval}/lib"])
  31. AC_SUBST(openssl_CPPFLAGS,"-I${withval}/include")
  32. ])
  33. AC_ARG_WITH(evloop-method,
  34. [ --with-evloop-method select evloop method (epoll,poll,kqueue)],
  35. evloop_methods=$withval,
  36. evloop_methods="epoll kqueue poll")
  37. old_LIBS=$LIBS
  38. LIBS=""
  39. AC_SEARCH_LIBS(inet_ntop, nsl,,AC_MSG_FAILURE(btpd needs inet_ntop))
  40. AC_SEARCH_LIBS(bind, socket,,AC_MSG_FAILURE(btpd needs bind))
  41. AC_SUBST(INETLIBS,$LIBS)
  42. LIBS=$old_LIBS
  43. AC_CHECK_FUNCS(asprintf)
  44. AC_MSG_CHECKING(for CLOCK_MONOTONIC)
  45. AC_COMPILE_IFELSE([
  46. #include <sys/time.h>
  47. #include <time.h>
  48. int main(void) { return clock_gettime(CLOCK_MONOTONIC, (void *)0); }
  49. ], clock_gettime=yes, clock_gettime=no)
  50. AC_MSG_RESULT($clock_gettime)
  51. if test $clock_gettime = yes; then
  52. old_LIBS=$LIBS
  53. LIBS=""
  54. AC_SEARCH_LIBS(clock_gettime,rt,clock_gettime=yes,clock_gettime=no)
  55. AC_SUBST(CLOCKLIB,$LIBS)
  56. LIBS=$old_LIBS
  57. AC_DEFINE(HAVE_CLOCK_MONOTONIC)
  58. fi
  59. if test $clock_gettime = no; then
  60. AC_CHECK_FUNCS(mach_absolute_time,,
  61. AC_MSG_FAILURE(no supported time mechanism found))
  62. fi
  63. AC_MSG_CHECKING(whether compiler accepts -Wno-pointer-sign)
  64. CC_ARGS_OK_IFELSE(-Wno-pointer-sign,
  65. AC_SUBST(WARNNPS,"-Wno-pointer-sign")
  66. AC_MSG_RESULT(yes)
  67. ,
  68. AC_MSG_RESULT(no))
  69. old_LDFLAGS="$LDFLAGS"
  70. LDFLAGS="$LDFLAGS $openssl_LDFLAGS"
  71. AC_CHECK_LIB(crypto, SHA1_Final,:,AC_MSG_FAILURE(btpd needs openssl's libraries and headers))
  72. LDFLAGS=$old_LDFLAGS
  73. for m in $evloop_methods; do
  74. case $m in
  75. epoll)
  76. AC_CHECK_FUNC(epoll_wait,[
  77. AC_SUBST(EVLOOP_IMPL,"evloop/epoll.${OBJEXT}")
  78. AC_SUBST(EVLOOP_METHOD,EVLOOP_EPOLL)
  79. break])
  80. ;;
  81. kqueue)
  82. AC_CHECK_FUNC(kqueue,[
  83. AC_SUBST(EVLOOP_IMPL,"evloop/kqueue.${OBJEXT}")
  84. AC_SUBST(EVLOOP_METHOD,EVLOOP_KQUEUE)
  85. break])
  86. ;;
  87. poll)
  88. AC_CHECK_FUNC(poll,[
  89. AC_SUBST(EVLOOP_IMPL,"evloop/poll.${OBJEXT}")
  90. AC_SUBST(EVLOOP_METHOD,EVLOOP_POLL)
  91. break])
  92. break
  93. ;;
  94. *)
  95. AC_MSG_ERROR($m is not a valid evloop method)
  96. exit 1
  97. ;;
  98. esac
  99. done
  100. if test x"$EVLOOP_METHOD" = x; then
  101. AC_MSG_FAILURE(no suitable evloop method found)
  102. exit 1
  103. else
  104. AC_MSG_NOTICE(selected evloop method $EVLOOP_METHOD)
  105. fi
  106. for i in 0 1 2 3 4 5 6 7; do
  107. case $i in
  108. 0) if test x"$TD_CFLAGS$TD_LIBS" = x; then continue; fi;;
  109. 1) TD_CFLAGS=-pthread;;
  110. 2) TD_CFLAGS=-pthreads;;
  111. 3) TD_CFLAGS=-kthread;;
  112. 4) TD_CFLAGS=-mt;;
  113. 5) TD_LIBS=-lpthread;;
  114. 6) ;;
  115. 7) AC_MSG_FAILURE(how do you build with pthreads on this system?);;
  116. esac
  117. AC_MSG_CHECKING(whether pthreads compiles with flags \"$TD_CFLAGS $TD_LIBS\")
  118. CC_ARGS_OK_IFELSE($TD_CFLAGS $CFLAGS $TD_LIBS $LIBS,,
  119. AC_MSG_RESULT(no)
  120. TD_CFLAGS=""; TD_LIBS=""
  121. continue)
  122. old_CFLAGS=$CFLAGS; old_LIBS=$LIBS
  123. CFLAGS="$TD_CFLAGS $CFLAGS"; LIBS="$TD_LIBS $LIBS"
  124. AC_LINK_IFELSE([
  125. #include <pthread.h>
  126. int main(void) { return pthread_create(0,0,0,0);}
  127. ], [
  128. AC_MSG_RESULT(yes)
  129. CFLAGS=$old_CFLAGS; LIBS=$old_LIBS
  130. break
  131. ], [
  132. AC_MSG_RESULT(no)
  133. TD_CFLAGS=""; TD_LIBS=""
  134. CFLAGS=$old_CFLAGS; LIBS=$old_LIBS
  135. ])
  136. done
  137. AC_SUBST(TD_CFLAGS)
  138. AC_SUBST(TD_LIBS)
  139. AC_OUTPUT