home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / misc / src / rpm / configure.in < prev    next >
Text File  |  1997-09-17  |  10KB  |  398 lines

  1. dnl configure.in for RPM
  2. dnl
  3. dnl Don't add checks for things we can't work around, unless those checks
  4. dnl failing causes the script to bomb out with a message. If we can't fix
  5. dnl it, why check it?
  6.  
  7. AC_INIT(rpm.c)
  8. AC_CONFIG_HEADER(config.h)
  9.  
  10. dnl default to not using NLS
  11. XGETTEXT=""
  12. LIBINTL=""
  13. PO=""
  14. GETTEXTSTUB="gettextstub.o"
  15.  
  16. AC_CANONICAL_SYSTEM
  17.  
  18. dnl Checks for programs.
  19. AC_PROG_CC
  20. AC_PROG_CPP
  21. AC_PROG_GCC_TRADITIONAL
  22. AC_PROG_INSTALL
  23.  
  24. AC_MSG_CHECKING(POSIX chmod...)
  25. touch foo.chmodtest
  26. chmod 744 foo.chmodtest
  27. chmod +X foo.chmodtest 2>/dev/null
  28. a=`ls -l foo.chmodtest | awk '{print $1}'`
  29. rm -f foo.chmodtest
  30. if test "$a" = "-rwxr-xr-x"; then
  31.     AC_MSG_RESULT(yes)
  32.     FIXPERMS=a+rX,g-w,o-w 
  33. else
  34.     AC_MSG_RESULT(no (tell your OS vendor about GNU fileutils))
  35.     FIXPERMS=a+r,g-w,o-w 
  36. fi
  37.  
  38. AC_AIX
  39. AC_MINIX
  40. AC_ISC_POSIX
  41.  
  42. AC_PROG_AWK
  43. AC_PROG_LN_S
  44. AC_PROG_MAKE_SET
  45. AC_PROG_RANLIB
  46.  
  47. AC_CHECK_TOOL(AR, ar, :)
  48.  
  49. if test "$cross_compiling" != "yes"; then
  50.     AC_MSG_CHECKING(GNU gzip...)
  51.     if test -z "$GZIPBIN"; then
  52.         oldifs="$IFS"
  53.         IFS=:
  54.         for n in $PATH:/opt/gnu/bin; do
  55.             if test -f $n/gzip; then
  56.                 GZIPBIN="$n/gzip";
  57.                 break
  58.             fi
  59.         done
  60.         IFS="$oldifs"
  61.     fi
  62.  
  63.     if test -z "$GZIPBIN"; then
  64.         GZIPBIN="gzip"
  65.         AC_MSG_RESULT(no)
  66.         AC_MSG_WARN(RPM will not work without GNU gzip.)
  67.     else
  68.         AC_MSG_RESULT(yes)
  69.     fi
  70. fi
  71.  
  72. topdir=`pwd`
  73.  
  74. if test $prefix != "/usr" -a $prefix != "/usr/local"; then
  75.     AC_MSG_CHECKING("$prefix/lib... $ac_c")
  76.     if test -d $prefix/lib ; then
  77.         LIBS="$LIBS -L$prefix/lib"
  78.         AC_MSG_RESULT(yes)
  79.     else
  80.         AC_MSG_RESULT(no)
  81.     fi
  82.  
  83.     echo $ac_n "checking for $prefix/include... $ac_c"
  84.     if test -d $prefix/include ; then
  85.         INCPATH="$INCPATH -I$prefix/include"
  86.         AC_MSG_RESULT(yes)
  87.     else
  88.         AC_MSG_RESULT(no)
  89.     fi
  90. fi
  91.  
  92. AC_MSG_CHECKING(/usr/local/lib...)
  93. if test -d /usr/local/lib ; then
  94.     LIBS="$LIBS -L/usr/local/lib"
  95.     
  96.     AC_MSG_RESULT(yes)
  97. else
  98.     AC_MSG_RESULT(no)
  99. fi
  100.  
  101. AC_MSG_CHECKING(/usr/local/include...)
  102. if test -d /usr/local/include ; then
  103.     INCPATH="$INCPATH -I/usr/local/include"
  104.     AC_MSG_RESULT(yes)
  105. else
  106.     AC_MSG_RESULT(no)
  107. fi
  108.  
  109. AC_MSG_CHECKING(/usr/ucblib...)
  110. if test -d /usr/ucblib ; then
  111.     LIBS="$LIBS -L/usr/ucblib"
  112.     
  113.     AC_MSG_RESULT(yes)
  114. else
  115.     AC_MSG_RESULT(no)
  116. fi
  117.  
  118. dnl Checks for libraries.
  119.  
  120. AC_CHECK_FUNC(strcasecmp, [], [
  121.     AC_CHECK_LIB(ucb, strcasecmp, [LIBS="$LIBS -lucb" USEUCB=y])
  122. ])
  123.  
  124. AC_CHECK_FUNC(random, [], [
  125.     AC_CHECK_LIB(random, random, [LIBS="$LIBS -lm"], [
  126.     if test -z "$USEUCB"; then
  127.         AC_CHECK_LIB(ucb, random, [LIBS="$LIBS -lucb" USEUCB=y])
  128.     fi
  129.     ])
  130. ])
  131.  
  132. dnl
  133. dnl handle --disable-nls
  134. dnl
  135. AC_ARG_ENABLE([nls],
  136. [  --disable-nls           do not use National Language Support], 
  137.     USE_NLS=$enableval, USE_NLS=yes)
  138.  
  139. if test "$USE_NLS" != "no"; then
  140.     AC_CHECK_FUNC(gettext, [HAVEGETTEXT="yes"], 
  141.       AC_CHECK_LIB(intl, gettext, [LIBINTL="-lintl" HAVEGETTEXT="y"], 
  142.            AC_MSG_WARN([sorry this package needs libintl.a (from the 
  143.     gettext package)])
  144.          )
  145.         )
  146.  
  147.     AC_CHECK_PROG(XGETTEXT, xgettext, xgettext)
  148.  
  149.     if test "$XGETTEXT" != ""; then 
  150.     if xgettext --help 2>&1 | grep illegal >/dev/null ; then
  151.         echo "xgettext isn't GNU version"
  152.         XGETTEXT=""
  153.     fi
  154.     fi
  155.  
  156.     if test "$XGETTEXT" != "" -a "$HAVEGETTEXT" != ""; then
  157.     echo "xgettext and gettext() exist; will build i18n support"
  158.     PO=po
  159.     GETTEXTSTUB=""
  160.     else
  161.     echo "xgettext and libintl.a don't both exist; will not build i18n support"
  162.     fi
  163. else
  164.     echo "user specificed no gettext; will not build i18n support"
  165. fi
  166.  
  167. AC_CHECK_FUNC(getdomainname, [], [
  168.     AC_CHECK_LIB(nsl, getdomainname, [LIBS="$LIBS -lnsl"])
  169. ])
  170. AC_CHECK_FUNC(socket, [], [
  171.     AC_CHECK_LIB(socket, socket, [LIBS="$LIBS -lsocket"])
  172. ])
  173.  
  174. AC_CHECK_FUNC(dbopen, [],
  175.   AC_CHECK_LIB(db, dbopen, [], AC_MSG_WARN([sorry this package needs libdb.a 
  176. (from the db package)]))
  177.            )
  178.  
  179. AC_CHECK_FUNC(fork, [], [echo "using vfork() instead of fork()";
  180.     MISCOBJS=fakefork.o])
  181.  
  182. dnl AmigaOS and IXEmul have a fork() dummy
  183.     case "$target" in
  184.     m68k-*-amigaos ) 
  185.         echo "Building for AmigaOS: using vfork() instead of fork()"; 
  186.         CFLAGS="$CFLAGS -Dfork=vfork" 
  187.         ;;
  188. esac
  189.  
  190.  
  191. ZLIB=
  192. for zlib in z gz ; do
  193.    AC_CHECK_LIB(${zlib}, gzread, 
  194.     [LIBS="$LIBS -l${zlib}"; break], 
  195.     [if test ${zlib} = gz; then 
  196.         AC_MSG_WARN([sorry this package needs libz.a or libgz.a (from the zlib package)]) 
  197.      fi]
  198.            )
  199. done
  200.  
  201. dnl Checks for header files we can live without.
  202. AC_HEADER_STDC
  203. AC_HEADER_MAJOR
  204. AC_CHECK_HEADERS(netinet/in_systm.h limits.h)
  205. AC_CHECK_HEADERS(alloca.h dirent.h sys/socket.h sys/select.h)
  206. AC_CHECK_HEADERS(machine/types.h string.h)
  207. AC_CHECK_HEADERS(mntent.h sys/mnttab.h sys/systemcfg.h)
  208. AC_CHECK_HEADERS(glob.h,,MISCOBJS="$MISCOBJS glob.o")
  209. AC_CHECK_HEADERS(fnmatch.h,,MISCOBJS="$MISCOBJS fnmatch.o")
  210.  
  211. if test "$PO" = po; then
  212.     AC_CHECK_HEADERS(libintl.h)
  213. fi
  214.  
  215. AC_C_BIGENDIAN
  216.  
  217. dnl look for libc features
  218. PROVIDES_ERRNO=no
  219. AC_MSG_CHECKING(if <netdb.h> defines h_errno...)
  220. AC_TRY_LINK([#include <netdb.h>],printf("%d",h_errno),PROVIDES_ERRNO=yes)
  221. AC_MSG_RESULT($PROVIDES_ERRNO)
  222. if test $PROVIDES_ERRNO = yes; then
  223.     AC_DEFINE(HAVE_HERRNO)
  224. fi
  225.  
  226. dnl If a system doesn't have S_IFSOCK, define it as 0 which will
  227. dnl make S_ISSOCK always return false (nice, eh?)
  228. AC_MSG_CHECKING(if <sys/stat.h> defines S_IFSOCK...)
  229. AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_IFSOCK),
  230.     HAS_S_IFSOCK=yes,HAS_S_IFSOCK=no)
  231. AC_MSG_RESULT($HAS_S_IFSOCK)
  232. if test $HAS_S_IFSOCK = yes; then
  233.     AC_DEFINE(HAVE_S_IFSOCK)
  234. fi
  235.  
  236. dnl Some Unix's are missing S_ISLNK, S_ISSOCK
  237. AC_MSG_CHECKING(if <sys/stat.h> defines S_ISLNK...)
  238. AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_ISLNK(0755)),
  239.     HAS_S_ISLNK=yes,HAS_S_ISLNK=no)
  240. AC_MSG_RESULT($HAS_S_ISLNK)
  241. if test $HAS_S_ISLNK = yes; then
  242.     AC_DEFINE(HAVE_S_ISLNK)
  243. fi
  244.  
  245. AC_MSG_CHECKING(if <sys/stat.h> defines S_ISSOCK...)
  246. AC_TRY_LINK([#include <sys/stat.h>],printf("%d", S_ISSOCK(0755)),
  247.     HAS_S_ISSOCK=yes,HAS_S_ISSOCK=no)
  248. AC_MSG_RESULT($HAS_S_ISSOCK)
  249. if test $HAS_S_ISSOCK = yes; then
  250.     AC_DEFINE(HAVE_S_ISSOCK)
  251. fi
  252.  
  253. AC_MSG_CHECKING(if timezone is defined...)
  254. AC_TRY_LINK([#include <time.h>],printf("%ld", timezone),
  255.       HAS_TIMEZONE=yes,HAS_TIMEZONE=no)
  256. AC_MSG_RESULT($HAS_TIMEZONE)
  257. if test $HAS_TIMEZONE = no; then
  258.       AC_DEFINE(NEED_TIMEZONE)
  259. fi
  260.  
  261. dnl Checks for library functions.
  262. AC_CHECK_FUNC(inet_aton, AC_DEFINE(HAVE_INET_ATON), MISCOBJS="$MISCOBJS inet_aton.o")
  263. AC_CHECK_FUNC(realpath, AC_DEFINE(HAVE_REALPATH), MISCOBJS="$MISCOBJS realpath.o")
  264. AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT), [
  265.   AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL),[
  266.     AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R), [
  267.       AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r"; 
  268.                     AC_DEFINE(HAVE_GETMNTINFO_R)],
  269.                  MISCOBJS="$MISCOBJS getmntent.o")])])])
  270. AC_CHECK_FUNC(strerror, [], MISCOBJS="$MISCOBJS strerror.o")
  271. AC_CHECK_FUNC(strtol, [], MISCOBJS="$MISCOBJS strtol.o")
  272. AC_CHECK_FUNC(strtoul, [], MISCOBJS="$MISCOBJS strtoul.o")
  273. LCHOWN=no
  274. AC_CHECK_FUNC(lchown, [LCHOWN=yes; AC_DEFINE(HAVE_LCHOWN)])
  275.  
  276. if test "$LCHOWN" = no; then 
  277.     dnl Does chown() follow symlinks? This should be a good enough test.
  278.     AC_MSG_CHECKING(whether chown() follows symlinks...)
  279.     AC_ARG_ENABLE([broken-chown],
  280.     [  --enable-broken-chown  this system's chown follows symbolic links], 
  281.         result=yes, result=unknown)
  282.     if echo "$build" | egrep "(aix)|(hpux)" > /dev/null ; then
  283.     result=yes
  284.     elif echo "$build" | egrep "(nextstep)" > /dev/null ; then
  285.     result=no
  286.     fi
  287.     if test $result = unknown; then
  288.     if test `id | cut -f 2 -d \= | cut -f 1 -d \(` = 0; then
  289.         rm -f foo bar
  290.         touch foo
  291.         ln -s foo bar
  292.         chown 10 bar
  293.         if test `ls -l foo | awk '{print $3}'` != "root"; then
  294.         result=yes
  295.         else
  296.         result=no
  297.         fi
  298.         rm -f foo bar
  299.     else
  300.         AC_MSG_CHECKING((cannot check by non-root user))
  301.         result=no
  302.     fi
  303.     fi
  304.  
  305.     AC_MSG_RESULT($result)
  306.     if test $result = yes; then
  307.         AC_DEFINE(CHOWN_FOLLOWS_SYMLINK)
  308.     fi
  309. fi
  310.  
  311. if test -n "$MISCOBJS"; then
  312.     LIBMISC=-lmisc
  313. fi
  314.  
  315. if test "x$varprefix" = "x"; then
  316.     varprefix=`echo $prefix | sed 's/usr/var/'`
  317.     test "x$prefix" = xNONE && varprefix=`echo $ac_default_prefix | sed 's/usr/var/'`
  318. fi
  319.  
  320. if test "x$tmpdir" = "x"; then
  321.     if test -d $varprefix/tmp; then
  322.     tmpdir=$varprefix/tmp
  323.     else
  324.     if test -d /var/tmp; then
  325.         tmpdir=/var/tmp
  326.     else
  327.         tmpdir=/tmp
  328.     fi
  329.     fi
  330. fi
  331.  
  332. # Solaris 2.5.1 seems to confuse things
  333. if echo "$build" | grep "solaris2.5" > /dev/null ; then
  334.     echo "Hacking things up for Solaris 2.5.x"
  335.     build_os="solaris"
  336. fi
  337.  
  338. RPM=rpm
  339. # Solaris needs -ldl to use -lnsl, and it can't build static
  340. # binaries if you use -ldl
  341. if echo "$build_os" | grep solaris >/dev/null; then
  342.     echo "hacking things up for solaris"
  343.     RPM=rpm.shared
  344.     LIBDL=-ldl
  345. elif echo "$build_os" | grep sco > /dev/null; then
  346.     echo "hacking things up for sco"
  347.     RPM=rpm.shared
  348.     AC_DEFINE(NEED_STRINGS_H)
  349.     AC_DEFINE(HAVE_STRUCT_MNTTAB)
  350. elif echo "$build_os" | grep sunos > /dev/null; then
  351.     echo "hacking things up for sunos"
  352.     CFLAGS="$CFLAGS -D__USE_FIXED_PROTOTYPES__"
  353.     AC_DEFINE(NEED_STRINGS_H)
  354.     AC_DEFINE(NEED_MYREALLOC)
  355.     MISCOBJS="$MISCOBJS myrealloc.o"
  356. elif echo "$build_os" | grep hpux > /dev/null; then
  357.     RPM=rpm.shared
  358.     echo "hacking things up for hpux"
  359. fi
  360.  
  361. rm -f ./find-provides.sh
  362. if test -f autodeps/${build_os}.prov ; then
  363.     echo "using autodeps/$build_os.prov for automatic provides generation"
  364.     ln -s autodeps/${build_os}.prov ./find-provides.sh
  365. else
  366.     echo "*** no default provides information is available for $build_os"
  367.     ln -s autodeps/none ./find-provides.sh
  368. fi
  369.  
  370. rm -f ./find-requires.sh
  371. if test -f autodeps/${build_os}.req ; then
  372.     echo "using autodeps/$build_os.req for automatic requires generation"
  373.     ln -s autodeps/$build_os.req ./find-requires.sh
  374. else
  375.     echo "*** no default requires information is available for $build_os"
  376.     ln -s autodeps/none ./find-requires.sh
  377. fi
  378.  
  379. AC_SUBST(MISCOBJS)
  380. AC_SUBST(INCPATH)
  381. AC_SUBST(LIBMISC)
  382. AC_SUBST(LIBINTL)
  383. AC_SUBST(varprefix)
  384. AC_SUBST(tmpdir)
  385. AC_SUBST(topdir)
  386. AC_SUBST(INTLDEF)
  387. AC_SUBST(XGETTEXT)
  388. AC_SUBST(LIBINTL)
  389. AC_SUBST(LIBS)
  390. AC_SUBST(LIBDL)
  391. AC_SUBST(PO)
  392. AC_SUBST(GETTEXTSTUB)
  393. AC_SUBST(RPM)
  394. AC_SUBST(GZIPBIN)
  395. AC_SUBST(FIXPERMS)
  396.  
  397. AC_OUTPUT(Makefile Makefile.inc lib-rpmrc lib/Makefile build/Makefile tools/Makefile po/Makefile misc/Makefile)
  398.