From c1df32611c92bd2708ba98a64b81b5d1fd269c0b Mon Sep 17 00:00:00 2001 From: Peter Lemenkov <lemenkov@gmail.com> Date: Thu, 2 Sep 2010 19:04:58 +0400 Subject: [PATCH 4/5] Add autotools support Signed-off-by: Peter Lemenkov <lemenkov@gmail.com> --- Makefile | 234 ---------------------------------------------------------- Makefile.am | 41 ++++++++++ configure.ac | 131 ++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 234 deletions(-) delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 configure.ac diff --git a/Makefile b/Makefile deleted file mode 100644 index 6975fa0..0000000 --- a/Makefile +++ /dev/null @@ -1,234 +0,0 @@ -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Copyright (C) 2003 - The Authors -# -# Author : Richard GAYRAUD - 04 Nov 2003 -# From Hewlett Packard Company. -# - --include local.mk -SVN_VERSION=$(shell if test -d .svn ; then svnversion . | sed -e 's/^/svn/;' ; else echo unknown ; fi) -VERINFO=-DSVN_VERSION="\"$(SVN_VERSION)\"" - -# Output binary to be built -OUTPUT=sipp - -# C & C++ object files to be built -OBJ= xp_parser.o message.o scenario.o screen.o call.o comp.o sipp.o stat.o \ - actions.o variables.o infile.o deadcall.o task.o socketowner.o listener.o \ - opentask.o reporttask.o watchdog.o - -# Libraries directories -LIBDIR_linux= -LIBDIR_FreeBSD= -LIBDIR_hpux= -LIBDIR_tru64= -LIBDIR_SunOS= -LIBDIR_Cygwin= -LIBDIR_Darwin= - -# Archive file created in your home directory when building the archive target -# ARCHIVE= $(HOME)/$(OUTPUT).tgz -ARCHIVE= $(OUTPUT).tgz - -# Files to be erased by 'make clean' in addition to the output -# binaries and object files: -TOCLEAN= *.log $(ARCHIVE) \ - *.csv *.exe - -################################################################### -# Generic Rules - -#OSNAME=`uname` -#MODELNAME=`uname -m` - -# SYSTEM nickname -SYSTEM_HP-UX=hpux -SYSTEM_Linux=linux -SYSTEM_FreeBSD=freebsd -SYSTEM_OSF1=tru64 -SYSTEM_SunOS=SunOS -SYSTEM_CYGWIN=Cygwin -SYSTEM_Darwin=Darwin -SYSTEM=$(SYSTEM_$(OSNAME)) - -# C compiler -CC_hpux=aCC -CC_linux=gcc -CC_freebsd=cc -CC_tru64=cc -CC_SunOS=gcc -CC_Cygwin=cc -CC_Darwin=cc -CC=$(CC_$(SYSTEM)) - -# C++ compiler mapping -CPP_hpux=aCC -CPP_linux=g++ -CPP_freebsd=g++ -CPP_tru64=cxx -CPP_SunOS=g++ -CPP_Cygwin=g++ -CPP_Darwin=g++ -CPP=$(CPP_$(SYSTEM)) - -#Model specific flags -MFLAGS_ia64=+DD64 -MFLAGS_9000/800=+DAportable -MFLAGS_9000/785=+DAportable -MFLAGS_i686= -MFLAGS_i586= -MFLAGS_i486= -MFLAGS_i386= -MFLAGS_ppc= -MFLAGS=$(MFLAGS_$(MODELNAME)) - -#C Compiler Flags -# supress warning #829 (Implicit conversion of string literal to -#'char *' is deprecated) since this is both common and harmless -CFLAGS_hpux=-D__HPUX -DPROTOTYPES +W829 -CFLAGS_linux=-D__LINUX -pthread -CFLAGS_freebsd=-D__LINUX -pthread -CFLAGS_tru64=-D__OSF1 -pthread -CFLAGS_SunOS=${DEBUG_FLAGS} -D__SUNOS -CFLAGS_Cygwin=-D__CYGWIN -Dsocklen_t=int -CFLAGS_Darwin=-D__DARWIN -CFLAGS=$(CFLAGS_$(SYSTEM)) $(VERINFO) $(TLS) $(PCAPPLAY) $(EXTRACFLAGS) - -#C++ Compiler Flags -CPPFLAGS_hpux=-AA -mt -D__HPUX -D_INCLUDE_LONGLONG -DNOMACROS +W829 -CPPFLAGS_linux=-D__LINUX -pthread -CPPFLAGS_freebsd=-D__LINUX -pthread -CPPFLAGS_tru64=-D__OSF1 -pthread -CPPFLAGS_SunOS=${DEBUG_FLAGS} -D__SUNOS -CPPFLAGS_Cygwin=-D__CYGWIN -Dsocklen_t=int -CPPFLAGS_Darwin=-D__DARWIN -CPPFLAGS=$(CPPFLAGS_$(SYSTEM)) $(VERINFO) $(TLS) $(PCAPPLAY) $(EXTRACPPFLAGS) - -#Linker mapping -CCLINK_hpux=aCC -CCLINK_linux=gcc -CCLINK_freebsd=g++ -CCLINK_tru64=cxx -CCLINK_SunOS=gcc -CCLINK_Cygwin=g++ -CCLINK_Darwin=g++ -CCLINK=$(CCLINK_$(SYSTEM)) - -#Linker Flags -LFLAGS_hpux=-AA -mt -LFLAGS_linux= -LFLAGS_freebsd= -LFLAGS_tru64= -LFLAGS_SunOS=-mt ${DEBUG_FLAGS} -LFLAGS_Cygwin= -LFLAGS_Darwin= -LFLAGS=$(LFLAGS_$(SYSTEM)) $(EXTRALFLAGS) - -#Link Libraries -LIBS_linux= -ldl -lpthread -lncurses -lstdc++ -lm -LIBS_hpux= -lcurses -lpthread -L /opt/openssl/lib -L /usr/local/lib -LIBS_tru64= -lcurses -lpthread -LIBS_freebsd= -lcurses -pthread -L /usr/local/lib -LIBS_SunOS= -lcurses -lpthread -lnsl -lsocket -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic -lm -ldl -L /usr/local/ssl/lib/ -LIBS_Cygwin= -lcurses -lpthread -lstdc++ -L /usr/lib/WpdPack/Lib -LIBS_Darwin= -lcurses -LIBS=$(LIBS_$(SYSTEM)) $(EXTRALIBS) - -# Include directories -INCDIR_linux=-I. -INCDIR_freebsd=-I. -I/usr/local/include -INCDIR_hpux=-I. -I/usr/local/include -I/opt/openssl/include -INCDIR_tru64=-I. -I/opt/openssl/include -INCDIR_SunOS=-I. -I/usr/local/ssl/include/ -INCDIR_Cygwin=-I. -I/usr/include/openssl -I/usr/include -I/usr/lib/WpdPack/Include -INCDIR_Darwin=-I. -I/usr/local/ssl/include -INCDIR=$(INCDIR_$(SYSTEM)) - --include local.mk - -# Building without TLS and authentication (no openssl pre-requisite) -all: - $(MAKE) OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` $(OUTPUT) - -# Building with TLS and authentication -ossl: - $(MAKE) OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` OBJ_TLS="auth.o sslinit.o sslthreadsafe.o milenage.o rijndael.o" TLS_LIBS="-lssl -lcrypto" TLS="-D_USE_OPENSSL -DOPENSSL_NO_KRB5" $(OUTPUT) - -#Building with PCAP play -pcapplay: - $(MAKE) OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` OBJ_PCAPPLAY="send_packets.o prepare_pcap.o" PCAPPLAY_LIBS="-lpcap" PCAPPLAY="-DPCAPPLAY" $(OUTPUT) - -pcapplay_ossl: - $(MAKE) OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` OBJ_TLS="auth.o sslinit.o sslthreadsafe.o milenage.o rijndael.o" TLS_LIBS="-lssl -lcrypto" TLS="-D_USE_OPENSSL -DOPENSSL_NO_KRB5" OBJ_PCAPPLAY="send_packets.o prepare_pcap.o" PCAPPLAY_LIBS="-lpcap `if test -f ./ext; then echo -L./ext/lib; fi;`" PCAPPLAY="-DPCAPPLAY `if test -f ./ext; then echo -I./ext/include; fi;`" $(OUTPUT) - -pcapplay_hp_li_ia: - @_HPUX_LI_FLAG=-D_HPUX_LI ; export _HPUX_LI_FLAG ; $(MAKE) pcapplay - -pcapplay_ossl_hp_li_ia: - @_HPUX_LI_FLAG=-D_HPUX_LI ; export _HPUX_LI_FLAG ; $(MAKE) pcapplay_ossl - -pcapplay_cygwin: - $(MAKE) OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` OBJ_PCAPPLAY="send_packets.o prepare_pcap.o" PCAPPLAY_LIBS="-lwpcap" PCAPPLAY="-DPCAPPLAY" $(OUTPUT) - -pcapplay_ossl_cygwin: - $(MAKE) OSNAME=`uname|sed -e "s/CYGWIN.*/CYGWIN/"` MODELNAME=`uname -m|sed "s/Power Macintosh/ppc/"` OBJ_TLS="auth.o sslinit.o sslthreadsafe.o milenage.o rijndael.o" TLS_LIBS="-lssl -lcrypto" TLS="-D_USE_OPENSSL -DOPENSSL_NO_KRB5" OBJ_PCAPPLAY="send_packets.o prepare_pcap.o" PCAPPLAY_LIBS="-lwpcap" PCAPPLAY="-DPCAPPLAY" $(OUTPUT) - -$(OUTPUT): $(OBJ_TLS) $(OBJ_PCAPPLAY) $(OBJ) - $(CCLINK) $(LFLAGS) $(MFLAGS) $(LIBDIR_$(SYSTEM)) \ - $(DEBUG_FLAGS) -o $@ $(OBJ_TLS) $(OBJ_PCAPPLAY) $(OBJ) $(LIBS) $(TLS_LIBS) $(PCAPPLAY_LIBS) $(EXTRAENDLIBS) - -debug: - DEBUG_FLAGS="-g -pg" ; export DEBUG_FLAGS ; $(MAKE) all - -debug_ossl: - @DEBUG_FLAGS=-g ; export DEBUG_FLAGS ; $(MAKE) ossl - -debug_pcap: - @DEBUG_FLAGS=-g ; export DEBUG_FLAGS ; make pcapplay - -debug_pcap_cygwin: - @DEBUG_FLAGS=-g ; export DEBUG_FLAGS ; $(MAKE) pcapplay_ossl_cygwin - -clean: - rm -f *.o $(OUTPUT) *~ $(TOCLEAN) - rm -rf cxx_repository - -archive: - rm -f TMP_TAR_FILE.* $(ARCHIVE) - $(MAKE) clean - tar cf TMP_TAR_FILE.tar . - gzip TMP_TAR_FILE.tar - cp TMP_TAR_FILE.tar.gz $(ARCHIVE) - rm -f TMP_TAR_FILE.* - - -# Files types rules -.SUFFIXES: .o .cpp .c .h .hpp - -*.o: *.h *.hpp - -.C.o: - $(CPP) $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $< - -.cpp.o: - $(CPP) $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $< - -.c.o: - $(CC) $(CFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o $*.o $< - -fortune.so: fortune.cpp - g++ -fPIC $(CPPFLAGS) $(MFLAGS) $(DEBUG_FLAGS) $(_HPUX_LI_FLAG) $(INCDIR) -c -o fortune.o $< - gcc -shared -Wl,-soname,fortune.so -o $@ fortune.o diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..c6acf8b --- /dev/null +++ b/Makefile.am @@ -0,0 +1,41 @@ +bin_PROGRAMS = sipp + +DEFS += $(SYS_DEFINES) + +if HAVE_OPENSSL +ssl_SOURCES = auth.c \ + milenage.c \ + rijndael.c \ + sslinit.c \ + sslthreadsafe.c +endif + +if HAVE_PCAP +pcap_SOURCES = prepare_pcap.c \ + send_packets.c +endif + +sipp_SOURCES = comp.c \ + xp_parser.c \ + actions.cpp \ + call.cpp \ + deadcall.cpp \ + infile.cpp \ + listener.cpp \ + message.cpp \ + opentask.cpp \ + reporttask.cpp \ + scenario.cpp \ + screen.cpp \ + sipp.cpp \ + socketowner.cpp \ + stat.cpp \ + task.cpp \ + variables.cpp \ + watchdog.cpp \ + $(ssl_SOURCES) \ + $(pcap_SOURCES) + +sipp_LDADD = @LIBOBJS@ + +# fortune.cpp diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..e7891d2 --- /dev/null +++ b/configure.ac @@ -0,0 +1,131 @@ +# ======================== initialization =============================== + +AC_INIT([SIPp], [3.1], [sipp-users@lists.sourceforge.net], [sipp]) + +AC_CANONICAL_TARGET + +AC_CONFIG_SRCDIR([sipp.cpp]) +AC_CONFIG_HEADERS([config.h]) +AM_INIT_AUTOMAKE([foreign dist-xz]) + +AC_ARG_WITH([openssl],AC_HELP_STRING([--with-openssl], [build with OpenSSL support]), [openssl="$withval"],[openssl="no"]) +AC_ARG_WITH([pcap],AC_HELP_STRING([--with-pcap], [build with pcap support]), [pcap="$withval"],[pcap="no"]) + +# ==================== basic compiler settings ========================== + +AC_PROG_CC +AC_PROG_CXX +AC_HEADER_STDC + +# ==================== checks for libraries ============================= +AC_CHECK_LIB(curses,initscr,,[AC_MSG_ERROR([ncurses library missing])]) + +# For Linux and SunOS +AC_SEARCH_LIBS([dlopen], [dl]) +AC_SEARCH_LIBS([dlerror], [dl]) +AC_SEARCH_LIBS([dlsym], [dl]) + +# For SunOS +AC_SEARCH_LIBS([inet_addr], [nsl]) +AC_SEARCH_LIBS([inet_ntoa], [nsl]) + +AC_SEARCH_LIBS([pthread_mutex_init], [pthread]) +AC_SEARCH_LIBS([pthread_mutex_destroy], [pthread]) +AC_SEARCH_LIBS([pthread_mutex_lock], [pthread]) +AC_SEARCH_LIBS([pthread_mutex_unlock], [pthread]) +AC_SEARCH_LIBS([pthread_self], [pthread]) +AC_SEARCH_LIBS([pthread_cancel], [pthread]) +AC_SEARCH_LIBS([pthread_join], [pthread]) +AC_SEARCH_LIBS([pthread_attr_init], [pthread]) +AC_SEARCH_LIBS([pthread_attr_setstacksize], [pthread]) +AC_SEARCH_LIBS([pthread_create], [pthread]) +AC_SEARCH_LIBS([pthread_attr_destroy], [pthread]) +AC_SEARCH_LIBS([pthread_setschedparam], [pthread]) +AC_SEARCH_LIBS([pthread_setcancelstate], [pthread]) +AC_SEARCH_LIBS([pthread_setcanceltype], [pthread]) +AC_SEARCH_LIBS([pthread_exit], [pthread]) +AC_SEARCH_LIBS([pthread_sigmask], [pthread]) +#AC_SEARCH_LIBS([pthread_cleanup_push], [pthread]) <- macro +#AC_SEARCH_LIBS([pthread_cleanup_pop], [pthread]) <- macro + +AC_SEARCH_LIBS([floor], [m]) +AC_SEARCH_LIBS([pow], [m]) + +# For SunOS +AC_SEARCH_LIBS([htons], [socket]) +AC_SEARCH_LIBS([ntohs], [socket]) +AC_SEARCH_LIBS([bind], [socket]) +AC_SEARCH_LIBS([freeaddrinfo], [socket]) +AC_SEARCH_LIBS([getaddrinfo], [socket]) +AC_SEARCH_LIBS([listen], [socket]) +AC_SEARCH_LIBS([recvfrom], [socket]) +AC_SEARCH_LIBS([shutdown], [socket]) + +# For Linux, SunOS and Cygwin +#AC_CHECK_LIB(stdc++,main,,[AC_MSG_ERROR([stdc++ library missing])]) + +# Conditional build with OpenSSL +if test "$openssl" = 'yes'; then + AC_CHECK_HEADERS([openssl/md5.h],,[AC_MSG_ERROR([<openssl/md5.h> header missing])]) + AC_CHECK_HEADERS([openssl/bio.h],,[AC_MSG_ERROR([<openssl/bio.h> header missing])]) + AC_CHECK_HEADERS([openssl/err.h],,[AC_MSG_ERROR([<openssl/err.h> header missing])]) + AC_CHECK_HEADERS([openssl/rand.h],,[AC_MSG_ERROR([<openssl/rand.h> header missing])]) + AC_CHECK_HEADERS([openssl/ssl.h],,[AC_MSG_ERROR([<openssl/ssl.h> header missing])]) + AC_CHECK_HEADERS([openssl/x509v3.h],,[AC_MSG_ERROR([<openssl/x509v3.h> header missing])]) + AC_CHECK_LIB([ssl], [SSL_library_init],,[AC_MSG_ERROR([ssl library missing])]) + AC_CHECK_LIB([crypto], [CRYPTO_num_locks],,[AC_MSG_ERROR([crypto library missing])]) +fi +# For Makefile.am +AM_CONDITIONAL(HAVE_OPENSSL, test "$openssl" = "yes") + +# Conditional build with pcap +if test "$pcap" = 'yes'; then + AC_CHECK_HEADERS([pcap.h],,[AC_MSG_ERROR([<pcap.h> header missing])]) + AC_CHECK_LIB([pcap], [pcap_open_offline],,[AC_MSG_ERROR([pcap library missing])]) + AC_CHECK_LIB([pcap], [pcap_next],,[AC_MSG_ERROR([pcap library missing])]) + AC_CHECK_LIB([pcap], [pcap_next_ex],,[AC_MSG_ERROR([pcap library missing])]) + AC_CHECK_LIB([pcap], [pcap_close],,[AC_MSG_ERROR([pcap library missing])]) +fi +# For Makefile.am +AM_CONDITIONAL(HAVE_PCAP, test "$pcap" = "yes") + +# ==================== checks for header files ========================== + +AC_FUNC_ALLOCA +AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdlib.h string.h sys/socket.h sys/time.h unistd.h]) + +# ===== checks for typedefs, structures and compiler characteristics ==== + +AC_HEADER_STDBOOL +AC_C_INLINE +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT8_T + +# ==================== checks for library functions ===================== + +AC_FUNC_FORK +#AC_FUNC_MALLOC +#AC_FUNC_REALLOC +#AC_FUNC_STRTOD +AC_CHECK_FUNCS([alarm dup2 floor gethostname gettimeofday inet_ntoa memmove memset pow regcomp socket sqrt strcasecmp strchr strcspn strdup strerror strncasecmp strrchr strstr strtol strtoul strtoull]) + +# ==================== system-specific defines ========================= + +case "${target_os}" in + *linux*) + SYS_DEFINES="-D__LINUX" + ;; + *) + SYS_DEFINES="-D__UNKNOWN" + ;; +esac +AC_SUBST([SYS_DEFINES]) + +# ==================== generate files =================================== + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT -- 1.7.3.5