dnl Process this file with autoconf to produce a configure script. AC_INIT(src/normalform/NT.cc) AC_CONFIG_HEADER(src/config.h) AC_CONFIG_SUBDIRS(src/Core) AC_CONFIG_SUBDIRS(src/rpsl) AC_CANONICAL_HOST dnl Version number control top_srcdir="`dirname $0`" VERSION="(IRRToolSet v`cat ${top_srcdir}/VERSION`) ${USER}@`hostname`" VERSION2=IRRToolSet`cat ${top_srcdir}/VERSION` VERSION_RELEASE=`cat ${top_srcdir}/VERSION` AC_SUBST(VERSION) AC_SUBST(VERSION2) AC_SUBST(VERSION_RELEASE) AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging], if eval "test x$enable_debug = xyes"; then OPTFLAG="-gstabs+ -DDEBUG -fno-inline" else OPTFLAG="-O3 -gstabs+" fi , OPTFLAG="-O3 -gstabs+" ) case "${host_os}" in solaris* ) EXTRA_INCLUDE_DIRS="-I/opt/sfw/${ac_cv_host}/include" EXTRA_LIBS="-lsocket -lnsl" ;; bsdi* ) dnl Commented out by wlee@isi.edu dnl EXTRA_INCLUDE_DIRS="-I/usr/include/g++ -I/usr/include/g++/stdc++" EXTRA_LIBS="-lipc" ;; esac : ${CFLAGS="$OPTFLAG"} : ${CXXFLAGS="$OPTFLAG -frtti"} all_INCDIRS='-I$(top_srcdir)/src/Core -I$(top_srcdir)/src/rpsl' AC_SUBST(all_INCDIRS) AC_SUBST(EXTRA_INCLUDE_DIRS) AC_SUBST(EXTRA_LIBS) AC_DEFINE_UNQUOTED(EXTRA_INCLUDE_DIRS, ${EXTRA_INCLUDE_DIRS}) AC_DEFINE_UNQUOTED(EXTRA_LIBS, ${EXTRA_LIBS}) dnl Checks for programs. AC_PROG_MAKE_SET dnl AC_PATH_PROG(PERL_PATH,perl,/usr/local/bin/perl) AC_PROG_CC AC_PROG_CPP AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_INSTALL AC_PROG_MAKE_SET(MAKE=make) AC_ARG_PROGRAM AC_PROG_LN_S AC_PROG_INSTALL AC_C_CONST AC_C_BIGENDIAN : ${LD=$CXX} AC_SUBST(LD) : ${LEX="flex"} AC_SUBST(LEX) : ${YACC="bison -y"} AC_SUBST(YACC) AC_PROG_RANLIB dnl Checks for libraries. AC_CHECK_LIB(dl, dlopen, [ TCL_NEEDS_DL="-ldl" ], [ TCL_NEEDS_DL="" ]) READLINE_LIBS="" AC_ARG_ENABLE(readline, [ --enable-readline support fancy command line editing (default: yes)], if eval "test x$enable_readline = xyes"; then AC_CHECK_LIB(termcap, main) AC_CHECK_LIB(readline, main) AC_CHECK_LIB(history, main) READLINE_LIBS="$LIBS" fi , AC_CHECK_LIB(termcap, main) AC_CHECK_LIB(readline, main) AC_CHECK_LIB(history, main) READLINE_LIBS="$LIBS" ) AC_SUBST(READLINE_LIBS) LIBS="" dnl Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS(regex.h limits.h sys/time.h unistd.h) AC_CHECK_HEADERS(strings.h string.h memory.h malloc.h) AC_CHECK_HEADERS(sys/sockio.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_SIZE_T AC_HEADER_TIME dnl ******************** things that need to be compiled with c++ AC_LANG_SAVE AC_LANG_CPLUSPLUS tmp_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -Werror" AC_MSG_CHECKING(for struct timeval) AC_TRY_COMPILE([#ifdef TIME_WITH_SYS_TIME #include #include #else #ifdef HAVE_SYS_TIME_H #include #else #include #endif #endif], [static struct timeval x; x.tv_sec = x.tv_usec;], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_TIMEVAL)], AC_MSG_RESULT(no)) AC_MSG_CHECKING(for whether rusage uses timeval) AC_EGREP_CPP([timeval[[ \t]]*ru_utime], [#include #if HAVE_SYS_RUSAGE_H #include #endif ], [AC_MSG_RESULT(yes) AC_DEFINE(RUSAGE_USES_TIMEVAL)], AC_MSG_RESULT(no)) dnl Check if accept uses socklen_t is defined AC_MSG_CHECKING(for whether accept uses type (socklen_t *) as parameter) AC_TRY_COMPILE([ #include #include ], [ int sock; struct sockaddr socknew; int addrlen = 5; int newsock = accept (sock, &socknew, (socklen_t *) &addrlen); ], [AC_DEFINE(ACCEPT_USES_SOCKLEN_T) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) dnl Check if accept uses size_t is defined AC_MSG_CHECKING(for whether accept uses type (size_t *) as parameter) AC_TRY_COMPILE([ #include #include ], [ int sock; struct sockaddr socknew; int addrlen = 5; int newsock = accept (sock, &socknew, (size_t *) &addrlen); ], [AC_DEFINE(ACCEPT_USES_SIZE_T) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) dnl Check for typedefs AC_EGREP_HEADER(in_addr_t, netinet/in.h, , AC_EGREP_HEADER(in_addr_t, sys/endian.h, , AC_CHECK_TYPE(in_addr_t, unsigned long))) dnl Checks for library functions. AC_CHECK_FUNCS(gettimeofday socket strstr memcpy vsnprintf) dnl Check for function declerations (util/net.hh barfs if defined) AC_EGREP_HEADER(gettimeofday, sys/time.h, AC_DEFINE(HAVE_DECL_GETTIMEOFDAY)) AC_EGREP_HEADER(bzero, string.h, AC_DEFINE(HAVE_DECL_BZERO)) AC_EGREP_HEADER(bcopy, string.h, AC_DEFINE(HAVE_DECL_BCOPY)) AC_EGREP_HEADER(gethostname, unistd.h, AC_DEFINE(HAVE_DECL_GETHOSTNAME)) AC_EGREP_HEADER(gethostbyname,netdb.h, AC_DEFINE(HAVE_DECL_GETHOSTBYNAME)) AC_EGREP_HEADER(select, sys/select.h, AC_DEFINE(HAVE_DECL_SELECT)) AC_EGREP_HEADER(socket, sys/socket.h, AC_DEFINE(HAVE_DECL_SOCKET)) AC_EGREP_HEADER(connect, sys/socket.h, AC_DEFINE(HAVE_DECL_CONNECT)) AC_EGREP_HEADER(bind, sys/socket.h, AC_DEFINE(HAVE_DECL_BIND)) AC_EGREP_HEADER(listen, sys/socket.h, AC_DEFINE(HAVE_DECL_LISTEN)) AC_EGREP_HEADER(accept, sys/socket.h, AC_DEFINE(HAVE_DECL_ACCEPT)) AC_EGREP_HEADER(recvfrom, sys/socket.h, AC_DEFINE(HAVE_DECL_RECVFROM)) AC_EGREP_HEADER(setsockopt, sys/socket.h, AC_DEFINE(HAVE_DECL_SETSOCKOPT)) AC_EGREP_HEADER(send, sys/socket.h, AC_DEFINE(HAVE_DECL_SEND)) AC_EGREP_HEADER(sendto, sys/socket.h, AC_DEFINE(HAVE_DECL_SENDTO)) case "${host_os}" in solaris* ) AC_EGREP_HEADER(bzero, strings.h, AC_DEFINE(HAVE_DECL_BZERO)) AC_EGREP_HEADER(bcopy, strings.h, AC_DEFINE(HAVE_DECL_BCOPY)) ;; esac dnl ############################################# AC_MSG_CHECKING(if we need to declare sys_errlist) AC_EGREP_CPP(sys_errlist, [ #include #include ], [AC_MSG_RESULT(no)], [ AC_DEFINE(NEED_TO_DECLARE_SYS_ERRLIST) AC_MSG_RESULT(yes) ]) AC_MSG_CHECKING(if struct ip contains ip_vhl instead of ip_v and ip_hl) AC_EGREP_CPP(ip_vhl, [ extern "C" { #include } ], [ AC_DEFINE(STRUCT_IP_USES_VHL) AC_MSG_RESULT(yes) ], [AC_MSG_RESULT(no)]) AC_MSG_CHECKING(if struct udphdr contains uh_ulen or len) AC_TRY_COMPILE([ #include #include ], [ struct udphdr u; u.uh_ulen = 1; ], [AC_DEFINE(HAVE_BSD_STYLE_UDPHDR) AC_MSG_RESULT(uh_ulen)], AC_MSG_RESULT(len)) ########################## htons ################################## AC_MSG_CHECKING(if a declaration for htons is needed) htons=notneeded AC_TRY_COMPILE([ extern "C" { #include #include #include #include #include } ], [ int port = 5; struct sockaddr_in server_sockaddr; server_sockaddr.sin_port = htons((u_short) port); ], [AC_MSG_RESULT(no)], [htons=needed]) if test $htons = needed; then AC_TRY_COMPILE([ extern "C" { #include #include #include #include #include extern u_short htons(...); } ], [ int port = 5; struct sockaddr_in server_sockaddr; server_sockaddr.sin_port = htons((u_short) port); ], [AC_DEFINE(DEFINE_HTONS_WITH_ELLIPSIS) AC_MSG_RESULT(with ellipsis)], [ AC_DEFINE(DEFINE_HTONS_WITH_USHORT) AC_MSG_RESULT(with ushort)]) fi AC_LANG_RESTORE CXXFLAGS="$tmp_CXXFLAGS" ########################## X11 ################################## dnl Checks for X11 AC_PATH_X if test "${x_libraries}" != NONE && test -n "${x_libraries}"; then LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"` fi if test "${x_includes}" != NONE && test -n "${x_includes}"; then C_SWITCH_X_SITE=-I`echo ${x_includes} | sed -e "s/:/ -I/g"` fi AC_SUBST(LD_SWITCH_X_SITE) AC_SUBST(C_SWITCH_X_SITE) AC_DEFINE_UNQUOTED(LD_SWITCH_X_SITE, ${LD_SWITCH_X_SITE}) AC_DEFINE_UNQUOTED(C_SWITCH_X_SITE, ${C_SWITCH_X_SITE}) dnl Use tcl/tk include path for testing (!) dnl Save the original value TMP_CPPFLAGS="$CPPFLAGS" CPPFLAGS="${CPPFLAGS} ${C_SWITCH_X_SITE}" dnl Checks for tcl/Tk AC_CHECK_HEADER(tk.h, , [ if test -n "${TCL_TK_LIBRARY_DIR}"; then TMP=-L`echo ${TCL_TK_LIBRARY_DIR} | sed -e "s/:/ -L/g"` LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${TMP}" fi if test -n "${TCL_TK_INCLUDE_DIR}"; then TMP=-I`echo ${TCL_TK_INCLUDE_DIR} | sed -e "s/:/ -I/g"` C_SWITCH_X_SITE="${C_SWITCH_X_SITE} ${TMP}" fi ]) CPPFLAGS="${TMP_CPPFLAGS}" AC_SUBST(LD_TCL_TK_LIBS) if test -z "${LD_TCL_TK_LIBS}"; then LD_TCL_TK_LIBS=" -ltk -ltcl" fi LD_TCL_TK_LIBS="${LD_TCL_TK_LIBS} ${TCL_NEEDS_DL}" dnl Check if tk.h contains Tk_CreateMainWindow() dnl dnl Save the original value TMP_CPPFLAGS="$CPPFLAGS" dnl Assign new value CPPFLAGS="$CPPFLAGS ${C_SWITCH_X_SITE}" AC_MSG_CHECKING(for Tk_CreateMainWindow) AC_EGREP_HEADER(Tk_CreateMainWindow, tk.h, [AC_DEFINE(HAVE_TK_CREATEMAINWINDOW) AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) dnl Restore the original value CPPFLAGS="$TMP_CPPFLAGS" AC_MSG_CHECKING(for memalign definition) AC_EGREP_HEADER(memalign, malloc.h, [AC_DEFINE(HAVE_MEMALIGN_DEFINITION) AC_MSG_RESULT(yes)], AC_MSG_RESULT(no)) AC_CHECK_HEADERS(malloc.h) ############################ prefix ################################ AC_SUBST(prefix) AC_SUBST(exec_prefix) AC_SUBST(bindir) AC_SUBST(mandir) # Remove any trailing slashes in these variables. changequote(, )dnl test "${prefix}" != NONE && prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'` test "${exec_prefix}" != NONE && exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'` changequote([, ])dnl ############################ OUTPUT ################################ AC_OUTPUT(Makefile src/Makefile src/util/Makefile src/util/version.cc src/re2dfa/Makefile src/gnug++/Makefile src/irr/Makefile src/normalform/Makefile src/peval/Makefile src/prpath/Makefile src/CIDRAdvisor/Makefile src/prtraceroute/Makefile src/roe/Makefile src/aoe/Makefile src/rpslcheck/Makefile src/RtConfig/Makefile src/bgp/Makefile )