A clone of btpd with my configuration changes.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

154 lignes
4.0 KiB

  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