configure.in
上传用户:pycemail
上传日期:2007-01-04
资源大小:329k
文件大小:13k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1. dnl Process this file with autoconf to produce a configure script.
  2. AC_INIT(include/conf.h)
  3. ac_core_modules="mod_core.o mod_auth.o mod_xfer.o mod_site.o mod_ls.o mod_unixpw.o mod_log.o"
  4. ac_build_core_modules="modules/mod_core.o modules/mod_auth.o modules/mod_xfer.o modules/mod_site.o modules/mod_ls.o modules/mod_unixpw.o modules/mod_log.o"
  5. dnl Get the OS type
  6. AC_CONFIG_AUX_DIR(./)
  7. AC_CANONICAL_SYSTEM
  8. dnl Create symlinks in modules/ and contrib/
  9. olddir=`pwd`
  10. cd contrib
  11. test -f README.linux-privs || ln -s ../README.linux-privs README.linux-privs
  12. cd $olddir
  13. OSTYPE=-D`echo $build_os | sed 's/..*$//g' | sed 's/-.*//g' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
  14. OSREL=-D`echo $build_os | sed 's/-.*//g' | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | tr '.' '_'`
  15. if test "$OSTYPE" = "$OSREL" ; then
  16.   OSTYPE=""
  17. fi
  18. AC_SUBST(OSREL)
  19. AC_SUBST(OSTYPE)
  20. dnl Checks for programs.
  21. AC_PROG_CC
  22. AC_PROG_MAKE_SET
  23. AC_PROG_INSTALL
  24. LDFLAGS="-Llib $LDFLAGS"
  25. if test x"$CFLAGS" = x ; then
  26.   fullCFLAGS="$CFLAGS"
  27.   dnl Compilation tests
  28.   dnl First test to see if -O2 will work
  29.   AC_MSG_CHECKING([whether the C compiler accepts -O2])
  30.   CFLAGS="-O2"
  31.   AC_TRY_COMPILE(,,
  32.     AC_MSG_RESULT(yes); fullCFLAGS="$CFLAGS",
  33.     AC_MSG_RESULT(no))
  34.   dnl test for -malign-jumps=2
  35.   AC_MSG_CHECKING([whether the C compiler accepts -malign-jumps])
  36.   CFLAGS="-malign-jumps=2"
  37.   AC_TRY_COMPILE(,,
  38.     AC_MSG_RESULT(yes); fullCFLAGS="$fullCFLAGS $CFLAGS",
  39.     AC_MSG_RESULT(no))
  40.   dnl test for -Wall
  41.   AC_MSG_CHECKING([whether the C compiler accepts -Wall])
  42.   CFLAGS="-Wall"
  43.   AC_TRY_COMPILE(,,
  44.     AC_MSG_RESULT(yes); fullCFLAGS="$fullCFLAGS $CFLAGS",
  45.     AC_MSG_RESULT(no))
  46.   CFLAGS="$fullCFLAGS"
  47. fi
  48. dnl Modules
  49. AC_ARG_WITH(modules,
  50.   [  --with-modules=LIST     add additional modules to proftpd
  51.                           LIST is a ':' separated list of modules to add ],
  52.   [ ac_addl_modules=`echo "$withval" | sed -e 's/:/.o /g'`.o ;
  53.     for amodule in $ac_addl_modules; do
  54.       ac_build_addl_modules="modules/$amodule $ac_build_addl_modules"
  55.     done ])
  56. dnl Checks for libraries.  Yes, this is the hard way, but it's necessary.
  57. AC_CACHE_CHECK(for standalone crypt,pr_cv_lib_standalone_crypt,
  58.   AC_TRY_LINK(,[crypt();],
  59.    pr_cv_lib_standalone_crypt="yes", pr_cv_lib_standalone_crypt="no" ))
  60. if test "$pr_cv_lib_standalone_crypt" = "no"; then
  61.   AC_CHECK_LIB(crypt,crypt)
  62. fi
  63. AC_CACHE_CHECK(for standalone gethostbyname,pr_cv_lib_standalone_gethost,
  64.   AC_TRY_LINK(,[gethostbyname();],
  65.    pr_cv_lib_standalone_gethost="yes",
  66. pr_cv_lib_standalone_gethost="no" ))
  67. if test "$pr_cv_lib_standalone_gethost" = "no"; then
  68.   AC_CHECK_LIB(resolv,gethostbyname)
  69.   AC_CHECK_LIB(resolv,inet_aton)
  70. fi
  71. AC_CACHE_CHECK(for standalone inet_aton,pr_cv_lib_standalone_aton,
  72.   AC_TRY_LINK(,[inet_aton();],
  73.    pr_cv_lib_standalone_aton="yes",
  74. pr_cv_lib_standalone_aton="no" ))
  75. if test "$pr_cv_lib_standalone_aton" = "no"; then
  76.   AC_CHECK_LIB(bind,inet_aton)
  77. fi
  78. AC_CACHE_CHECK(for standalone nsl functions,pr_cv_lib_standalone_nsl,[
  79.   AC_TRY_LINK(,[gethostent();],
  80.   pr_cv_lib_standalone_nsl="yes", pr_cv_lib_standalone_nsl="no") ])
  81. if test "$pr_cv_lib_standalone_nsl" = "no"; then
  82.   AC_CHECK_LIB(nsl,gethostent)
  83. fi
  84. AC_CACHE_CHECK(for standalone socket functions,pr_cv_lib_standalone_sockets,
  85.   AC_TRY_LINK(,[bind();],
  86.   pr_cv_lib_standalone_sockets="yes", pr_cv_lib_standalone_sockets="no"))
  87. if test "$pr_cv_lib_standalone_sockets" = "no"; then
  88.   AC_CHECK_LIB(socket,bind)
  89. fi
  90. AC_CACHE_CHECK(for _pw_stayopen variable,pr_cv_var__pw_stayopen,
  91.   AC_TRY_LINK(
  92.     [extern int _pw_stayopen; ],
  93.     [_pw_stayopen = 1;],
  94.     pr_cv_var__pw_stayopen="yes", pr_cv_var__pw_stayopen="no"))
  95. if test "$pr_cv_var__pw_stayopen" = "yes"; then
  96.   AC_DEFINE(HAVE__PW_STAYOPEN)
  97. fi
  98. dnl Check for enabled shadow/autoshadow
  99. AC_ARG_ENABLE(shadow,
  100.   [  --enable-shadow         force compilation of shadowed password support],
  101.   [ if test "$enableval" = "no" ; then
  102.       use_shadow=""
  103.     else
  104.       use_shadow="-DUSESHADOW"
  105.       force_shadow="yes"
  106.     fi ])
  107. AC_ARG_ENABLE(autoshadow,
  108.   [  --enable-autoshadow     enabled auto-detection of shadowed passwords],
  109.   [ if test "$enableval" != "no" ; then
  110.       use_shadow="-DUSESHADOW -DAUTOSHADOW"
  111.       force_shadow="yes"
  112.     fi ])
  113. AC_CHECK_LIB(security, set_auth_parameters, LIBS="$LIBS -lsecurity")
  114. AC_CHECK_HEADERS(sys/security.h)
  115. AC_CHECK_HEADERS(krb.h)
  116. AC_CHECK_HEADERS(hpsecurity.h)
  117. AC_CHECK_HEADERS(prot.h)
  118. AC_CHECK_FUNCS(set_auth_parameters getprpwent)
  119. dnl Checks for installation user/group
  120. test x"$install_user" = x && install_user=root
  121. test x"$install_group" = x && install_group=root
  122. AC_SUBST(install_user)
  123. AC_SUBST(install_group)
  124. dnl Checks for header files.
  125. AC_HEADER_DIRENT
  126. AC_HEADER_STDC
  127. AC_HEADER_SYS_WAIT
  128. AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h unistd.h memory.h)
  129. AC_CHECK_HEADERS(shadow.h,
  130.   [ if test "$use_shadow" = "" && test -f /etc/shadow ; then
  131.       use_shadow="-DUSESHADOW"
  132.     fi ])
  133. AC_CHECK_HEADERS(security/pam_appl.h,
  134.   [ if test "$force_shadow" != "yes"; then
  135. if test "$use_shadow" != ""; then
  136.   use_shadow=""
  137. fi
  138. AC_CHECK_LIB(dl,dlopen)
  139. if test `echo $ac_addl_modules | grep -c mod_pam` = "0"; then
  140.   ac_addl_modules="mod_pam.o $ac_addl_modules"
  141.   ac_build_addl_modules="modules/mod_pam.o $ac_build_addl_modules"
  142. fi
  143.     fi ])
  144. AC_CHECK_HEADERS(ctype.h getopt.h crypt.h bstring.h strings.h)
  145. AC_CHECK_HEADERS(sys/types.h sys/param.h sys/file.h)
  146. AC_CHECK_HEADERS(netdb.h netinet/in.h netinet/tcp.h arpa/inet.h sys/stat.h)
  147. AC_CHECK_HEADERS(errno.h sys/socket.h sys/termios.h sys/termio.h)
  148. AC_CHECK_HEADERS(sys/statvfs.h sys/vfs.h sys/select.h sys/sendfile.h)
  149. AC_CHECK_HEADERS(utmpx.h)
  150. AC_CHECK_HEADERS(regex.h)
  151. AC_CHECK_HEADER(glob.h,have_glob_h="yes",)
  152. AC_CHECK_HEADER(fnmatch.h,have_fnmatch_h="yes",)
  153. AC_CHECK_HEADER(syslog.h,have_syslog_h="yes",)
  154. dnl Checks for typedefs, structures, and compiler characteristics.
  155. AC_C_CONST
  156. AC_TYPE_UID_T
  157. AC_TYPE_PID_T
  158. AC_TYPE_SIZE_T
  159. AC_HEADER_TIME
  160. AC_STRUCT_TM
  161. dnl Check for generic typedefs
  162. AC_CHECK_TYPE(umode_t,mode_t)
  163. AC_CHECK_TYPE(ino_t,ino_t)
  164. dnl See what type of utmp exists
  165. AC_CHECK_HEADERS(utmp.h, have_utmp=1, have_utmp=0)
  166. if test $have_utmp; then
  167.   AC_CACHE_CHECK(whether your struct utmp has ut_user,
  168.    pr_cv_header_utmaxtype,
  169. AC_EGREP_HEADER([ *ut_user.*;],utmp.h,
  170. pr_cv_header_utmaxtype="yes",
  171. pr_cv_header_utmaxtype="no"))
  172.   AC_CACHE_CHECK(whether your struct utmp has ut_host,
  173.    pr_cv_header_ut_host,
  174. AC_EGREP_HEADER([ *ut_host.*;],utmp.h,
  175. pr_cv_header_ut_host="yes",
  176. pr_cv_header_ut_host="no"))
  177.   if test "$pr_cv_header_utmaxtype" = "yes"; then
  178.     AC_DEFINE(HAVE_UTMAXTYPE)
  179.   fi
  180.   if test "$pr_cv_header_ut_host" = "yes"; then
  181.     AC_DEFINE(HAVE_UT_UT_HOST)
  182.   fi
  183. fi
  184. if test "$have_glob_h" = "yes"; then
  185.   dnl See if we have GLOB_PERIOD
  186.   AC_CACHE_CHECK(whether your glob.h defines GLOB_PERIOD,
  187.    pr_cv_header_glob_period,
  188. AC_EGREP_CPP(yes,[
  189. #include <glob.h>
  190. #ifdef GLOB_PERIOD
  191.   yes
  192. #endif
  193. ],pr_cv_header_glob_period="yes",pr_cv_header_glob_period="no"))
  194.   dnl See if we have GLOB_ALTDIRFUNC
  195.   if test "$pr_cv_header_glob_period" = "yes"; then
  196.     AC_CACHE_CHECK(whether your glob.h defines GLOB_ALTDIRFUNC,
  197.      pr_cv_header_glob_altdirfunc,
  198. AC_EGREP_CPP(yes,[
  199. #include <glob.h>
  200. #ifdef GLOB_ALTDIRFUNC
  201.   yes
  202. #endif
  203. ],pr_cv_header_glob_altdirfunc="yes",pr_cv_header_glob_altdirfunc="no"))
  204.     if test "$pr_cv_header_glob_altdirfunc" = "yes"; then
  205.       AC_DEFINE(HAVE_GLOB_H)
  206.       AC_DEFINE(HAVE_GLOB_PERIOD)
  207.     fi
  208.   fi
  209. fi
  210. dnl Check to see if timer_t is already defined
  211. AC_MSG_CHECKING(for timer_t)
  212. AC_CACHE_VAL(pr_cv_header_timer_t,
  213. AC_EGREP_HEADER([.*typedef.*timer_t;],sys/types.h,
  214. pr_cv_header_timer_t="yes",
  215. AC_EGREP_HEADER([.*typedef.*timer_t;],limits.h,
  216. pr_cv_header_timer_t="yes",pr_cv_header_timer_t="no")))
  217. AC_MSG_RESULT($pr_cv_header_timer_t)
  218. if test "$pr_cv_header_timer_t" = "yes"; then
  219.   AC_DEFINE(HAVE_TIMER_T)
  220. fi
  221. dnl See if various LOG_ macros are defined
  222. if test "$have_syslog_h" = "yes"; then
  223.   AC_DEFINE(HAVE_SYSLOG_H)
  224.   AC_CACHE_CHECK(whether your syslog.h defines LOG_CRON,
  225.    pr_cv_header_syslog_log_cron,
  226.    AC_EGREP_CPP(yes,[
  227. #include <syslog.h>
  228. #ifdef LOG_CRON
  229.   yes
  230. #endif
  231. ],pr_cv_header_syslog_log_cron="yes",
  232. pr_cv_header_syslog_log_cron="no") )
  233.   AC_CACHE_CHECK(whether your syslog.h defines LOG_FTP,
  234.    pr_cv_header_syslog_log_ftp,
  235.    AC_EGREP_CPP(yes,[
  236. #include <syslog.h>
  237. #ifdef LOG_FTP
  238.   yes
  239. #endif
  240. ],pr_cv_header_syslog_log_ftp="yes",
  241. pr_cv_header_syslog_log_ftp="no") )
  242.   if test "$pr_cv_header_syslog_log_cron" = "yes"; then
  243.     AC_DEFINE(HAVE_LOG_CRON)
  244.   fi
  245.   if test "$pr_cv_header_syslog_log_ftp" = "yes"; then
  246.     AC_DEFINE(HAVE_LOG_FTP)
  247.   fi
  248. fi
  249. dnl See if we have FNM_NOESCAPE
  250. if test "$have_fnmatch_h" = "yes"; then
  251.   AC_CACHE_CHECK(whether your fnmatch.h defines FNM_NOESCAPE,
  252.    pr_cv_header_fnmatch_noescape,
  253. AC_EGREP_CPP(yes,[
  254. #include <fnmatch.h>
  255. #ifdef FNM_NOESCAPE
  256.   yes
  257. #endif
  258.   ],pr_cv_header_fnmatch_noescape="yes", pr_cv_header_fnmatch_noescape="no"))
  259. fi
  260. dnl Checks for library functions.
  261. AC_FUNC_ALLOCA
  262. if test "$pr_cv_header_fnmatch_noescape" = "yes"; then
  263.   AC_FUNC_FNMATCH
  264. fi
  265. AC_PROG_GCC_TRADITIONAL
  266. AC_FUNC_SETPGRP
  267. AC_TYPE_SIGNAL
  268. AC_FUNC_VPRINTF
  269. AC_CHECK_FUNCS(getcwd gethostname gettimeofday mkdir rmdir select sendfile socket strerror strtol)
  270. AC_CHECK_FUNCS(strchr memcpy bcopy flock getopt getopt_long strsep)
  271. AC_CHECK_FUNCS(vsnprintf __vsnprintf snprintf __snprintf)
  272. AC_CHECK_FUNCS(setsid setpassent seteuid setegid crypt fgetpwent fgetgrent)
  273. AC_CHECK_FUNCS(inet_aton siginterrupt setpgid)
  274. AC_CHECK_FUNCS(regcomp)
  275. dnl Only check for glob if we have glob.h, GLOB_PERIOD, and GLOB_ALTDIRFUNC
  276. if test "$have_glob_h" = "yes" && 
  277.    test "$pr_cv_header_glob_period" = "yes" && 
  278.    test "$pr_cv_header_glob_altdirfunc" = "yes"; then
  279. AC_CHECK_FUNCS(glob)
  280. fi
  281. dnl Check for various argv[] replacing functions on various OSs
  282. AC_CHECK_FUNCS(setproctitle)
  283. AC_CHECK_HEADERS(libutil.h)
  284. AC_CHECK_LIB(util, setproctitle,
  285. [AC_DEFINE(HAVE_SETPROCTITLE)
  286. ac_cv_func_setproctitle="yes" ; LIBS="$LIBS -lutil"])
  287. if test "$ac_cv_func_setproctitle" = "yes"; then
  288.   AC_DEFINE(PF_ARGV_TYPE, PF_ARGV_NONE)
  289. else
  290.   pf_argv_set="no"
  291.   AC_CHECK_HEADERS(sys/pstat.h,have_pstat_h="yes",have_pstat_h="no")
  292.   if test "$have_pstat_h" = "yes"; then
  293.     AC_CHECK_FUNCS(pstat)
  294.     
  295.     if test "$ac_cv_func_pstat" = "yes"; then
  296. AC_DEFINE(PF_ARGV_TYPE, PF_ARGV_PSTAT)
  297.     else
  298. AC_DEFINE(PF_ARGV_TYPE, PF_ARGV_WRITABLE)
  299.     fi
  300.     pf_argv_set="yes"
  301.   fi
  302.   if test "$pf_argv_set" = "no"; then
  303.     AC_EGREP_HEADER([#define.*PS_STRINGS.*],sys/exec.h,
  304. have_psstrings="yes",have_psstrings="no")
  305.     if test "$have_psstrings" = "yes"; then
  306. AC_DEFINE(PF_ARGV_TYPE, PF_ARGV_PSSTRINGS)
  307. pf_argv_set="yes"
  308.     fi
  309.   fi
  310.   if test "$pf_argv_set" = "no"; then
  311.     AC_CACHE_CHECK(whether __progname and __progname_full are available,
  312.     pf_cv_var_progname,
  313.     AC_TRY_LINK([extern char *__progname, *__progname_full;],
  314. [__progname = "foo"; __progname_full = "foo bar";],
  315. pf_cv_var_progname="yes", pf_cv_var_progname="no"))
  316.     if test "$pf_cv_var_progname" = "yes"; then
  317. AC_DEFINE(HAVE___PROGNAME)
  318.     fi
  319.     AC_CACHE_CHECK(which argv replacement method to use,
  320.     pf_cv_argv_type,
  321.     AC_EGREP_CPP(yes,[
  322. #if defined(__GNU_HURD__)
  323.   yes
  324. #endif
  325.   ],pf_cv_argv_type="new", pf_cv_argv_type="writeable"))
  326.     if test "$pf_cv_argv_type" = "new"; then
  327. AC_DEFINE(PF_ARGV_TYPE, PF_ARGV_NEW)
  328. pf_argv_set="yes"
  329.     fi
  330.     if test "$pf_argv_set" = "no"; then
  331. AC_DEFINE(PF_ARGV_TYPE, PF_ARGV_WRITEABLE)
  332.     fi
  333.   fi
  334. fi
  335. dnl Add the proftpd support library
  336. LIBS="-lsupp $LIBS"
  337. dnl Module handling.
  338. for module in $ac_addl_modules; do
  339.   src=`echo "$module" | sed -e 's/.o$//'`.c;
  340.   if test -f $srcdir/modules/$src -o -f $srcdir/contrib/$src; then
  341.     if ! test -f $srcdir/modules/$src; then
  342. olddir=`pwd`
  343. cd $srcdir/modules
  344. ln -s ../contrib/$src $src
  345. cd $olddir
  346.     fi
  347.     alib=`cat $srcdir/modules/$src | grep "\$Libraries:" | sed -e 's/^.*$Libraries: (.*)\$/1/'`
  348.     test x"$alib" = x || ac_addl_libs="$alib $ac_addl_libs"
  349.     adir=`cat $srcdir/modules/$src | grep "\$Directories:" | sed -e 's/^.*$Directories: (.*)\$/1/'`
  350.     test x"$adir" = x || ac_addl_dirs="$adir $ac_addl_dirs"
  351.   else
  352.     echo "source file '$srcdir/modules/$src' cannot be found -- aborting"
  353.     exit 1
  354.   fi
  355. done
  356. ac_addl_libs=`echo "$ac_addl_libs" | sed -e 's/ *$//'`
  357. test "x$ac_addl_libs" = x || LIBS="$LIBS $ac_addl_libs"
  358. ac_addl_dirs=`echo "$ac_addl_dirs" | sed -e 's/ *$//'`
  359. ADDL_DIRS="$ac_addl_dirs"
  360. MODULES="$ac_core_modules $ac_addl_modules"
  361. BUILD_MODULES="$ac_build_core_modules $ac_build_addl_modules"
  362. VERSION=`cat $srcdir/include/version.h | grep "#define VERSION" | sed -e 's/^.*"(.*)"/1/'`
  363. AC_SUBST(MODULES)
  364. AC_SUBST(BUILD_MODULES)
  365. AC_SUBST(ADDL_DIRS)
  366. AC_SUBST(VERSION)
  367. AC_CONFIG_HEADER(config.h)
  368. CFLAGS="$CFLAGS $use_shadow"
  369. AC_OUTPUT(lib/Makefile src/Makefile modules/Makefile Makefile Make.rules Make.modules contrib/proftpd.spec)