blob: e6e3ff2690f2a14267bba8d600ba51331036304e [file] [log] [blame]
##################################################
# Makefile
# iperf top level
#
# by Mark Gates <mgates@nlanr.net>
# October 1999
# $Id: Makefile,v 1.2 2007-05-22 21:24:53 randall Exp $
SHELL = /bin/sh
TOP = .
CFLAGS= -g
CXXFLAGS= -g
##################################################
# files
LIBRARY = lib/libdast.a
PROG = iperf
JAR_FILE = jperf.jar
CONFIG_FILES = Makefile.rules cfg/config.h cfg/configure
PLATFORM = `./cfg/config.guess`
##################################################
# targets
#
# all -- compile library and iperf program
# config -- run autoconf script
# clean -- remove all compiled object files
# depend -- create dependency files
# distclean -- remove most files that can be generated
# install -- compile and install library and headers
# tar -- tar up the directory, skipping machine specific files
#
all: $(LIBRARY) $(PROG)
foo:
@echo $(PLATFORM)
UNAME = `uname -a`
@echo $(UNAME)
clean:
@echo ; (cd cfg ; make clean)
@echo ; (cd lib ; make clean)
@echo ; (cd src ; make clean)
config:
@echo ; (cd cfg ; make all)
depend:
@echo ; (cd lib ; make depend)
@echo ; (cd src ; make depend)
distclean:
@echo ; (cd cfg ; make distclean)
@echo ; (cd lib ; make distclean)
@echo ; (cd src ; make distclean)
install: $(PROG)
@echo
@echo "Where should the iperf binary be installed? [/usr/local/bin]"
@read INSTALL_DIR; \
export INSTALL_DIR; \
INSTALL_DIR=`echo $$INSTALL_DIR | perl -p -e 's/~/$$ENV{"HOME"}/'`; \
if test -z "$$INSTALL_DIR"; then \
INSTALL_DIR=/usr/local/bin; \
fi; \
echo ; (cd src ; make install);
bindist: all
@PLATFORM=`./cfg/config.guess`; \
FILE=iperf-$(VERSION)-$$PLATFORM.tar; \
( tar -cvf $$FILE iperf doc README KNOWN_PROBLEMS; \
gzip $$FILE; \
echo Saved at $$FILE.gz; \
);
tar:
@echo
@DIR=`pwd | sed 's|^.*/||'`; \
DIRV=$$DIR-$(VERSION); \
( cd ..; \
mv $$DIR $$DIRV; \
tar --exclude-from $$DIRV/.tar.excludes -cvf $$DIRV.tar $$DIRV; \
gzip $$DIRV.tar; \
mv $$DIRV $$DIR; \
); \
if test -w RELEASES/source/ ; then \
mv -i ../$$DIRV.tar.gz RELEASES/source/; \
echo Saved in RELEASES/source/$$DIRV.tar.gz; \
else \
mv -i ../$$DIRV.tar.gz .; \
echo Saved in $$DIRV.tar.gz; \
fi
.PHONY: all config clean depend distclean install tar
##################################################
# build specific files
$(LIBRARY):
-rm -f $(LIBRARY)
@echo ; (cd lib ; make all)
$(PROG):
-rm -f $(PROG)
@echo ; (cd src ; make all)
Makefile.rules: Makefile.rules.in
make config
cfg/configure: cfg/configure.in cfg/dast.m4
make config
# The configure script won't update config.h if it doesn't
# changed, so remove config.h first to force rebuilding it.
cfg/config.h: cfg/config.h.in
-rm -f cfg/config.h
make config
# Version info maintained in VERSION, but we want to
# compile it into iperf, so create a header file too.
include VERSION
src/version.h: VERSION
@echo Update version information to $(VERSION), $(VERSION_DATE)
@echo \#define IPERF_VERSION \"$(VERSION)\" > .ver
@echo \#define IPERF_VERSION_DATE \"$(VERSION_DATE)\" >> .ver
@mv -f .ver $@
# some versions of make apparently can't handle expanding
# wildcards like lib/*.[ch] lib/*.[ch]pp
$(LIBRARY): $(CONFIG_FILES) \
lib/Condition.hpp \
lib/Mutex.hpp \
lib/Socket.cpp \
lib/Socket.hpp \
lib/SocketAddr.cpp \
lib/SocketAddr.hpp \
lib/Thread.cpp \
lib/Thread.hpp \
lib/Timestamp.hpp \
lib/delay.cpp \
lib/delay.hpp \
lib/error.c \
lib/gettimeofday.c \
lib/gettimeofday.h \
lib/gnu_getopt.c \
lib/gnu_getopt.h \
lib/gnu_getopt_long.c \
lib/headers.h \
lib/inet_pton.c \
lib/inet_ntop.c \
lib/inet_aton.h \
lib/signal.c \
lib/snprintf.c \
lib/snprintf.h \
lib/sockets.c \
lib/stdio.c \
lib/string.c \
lib/tcp_window_size.c \
lib/util.h
$(PROG): $(LIBRARY) \
$(CONFIG_FILES) \
src/Client.cpp \
src/Client.hpp \
src/Extractor.cpp \
src/Extractor.hpp \
src/Listener.cpp \
src/Listener.hpp \
src/Locale.hpp \
src/PerfSocket.cpp \
src/PerfSocket.hpp \
src/PerfSocket_TCP.cpp \
src/PerfSocket_UDP.cpp \
src/Server.cpp \
src/Server.hpp \
src/Settings.cpp \
src/Settings.hpp \
src/Speaker.cpp \
src/Speaker.hpp \
src/Notify.cpp \
src/Notify.hpp \
src/Audience.cpp \
src/Audience.hpp \
src/List.cpp \
src/List.h \
src/main.cpp \
src/version.h