###
###   GREED  Makefile (thanks to MPG123 ;))
###

# Where to install binary and manpage on "make install":

PREFIX=/usr
BINDIR=$(PREFIX)/bin
MANDIR=$(PREFIX)/man
SECTION=1

###################################################
######                                       ######
######   End of user-configurable settings   ######
######                                       ######
###################################################

nothing-specified:
	@echo ""
	@echo "You must specify the system which you want to compile for:"
	@echo ""
	@echo "make linux           Linux"
	@echo "make linuxppc        Linux PowerPC"
	@echo "make freebsd         FreeBSD"
	@echo "make openbsd         OpenBSD"
	@echo "make solaris         Solaris 2.x (tested: 2.5 and 2.5.1) using SparcWorks cc"
	@echo "make solaris-gcc     Solaris 2.x using GNU cc (somewhat slower)"
	@echo "make sunos           SunOS 4.x (tested: 4.1.4)"
	@echo "make hpux            HP/UX 9/10, /7xx"
	@echo "make sgi             SGI running IRIX"
	@echo "make dec             DEC Unix (tested: 3.2 and 4.0), OSF/1"
	@echo "make ultrix          DEC Ultrix (tested: 4.4)"
	@echo "make aix             IBM AIX (tested: 4.2)"
	@echo "make os2             IBM OS/2"
	@echo "make generic         try this one if your system isn't listed above"
	@echo ""
	@echo "Please read the file INSTALL for additional information."
	@echo ""


linux:
	$(MAKE) CC=gcc LDFLAGS= \
		OBJECTS= \
		CFLAGS='-Wall -O2 -m486 -funroll-all-loops -finline-functions -ffast-math' \
		greed

linuxppc:
	$(MAKE) CC=gcc LDFLAGS= \
		OBJECTS= \
		CFLAGS='-Wall -O2 -funroll-all-loops -finline-functions -ffast-math' \
		greed

#### the following defines are for experimental use ... 
#
#CFLAGS='-pg -DI386_ASSEM -DREAL_IS_FLOAT -DLINUX -Wall -O2 -m486 -funroll-all-loops -finline-functions -ffast-math' mpg123
#CFLAGS='-DI386_ASSEM -O2 -DREAL_IS_FLOAT -DLINUX -Wall -g'
#CFLAGS='-DI386_ASSEM -DREAL_IS_FLOAT -DLINUX -Wall -O2 -m486 -fomit-frame-pointer -funroll-all-loops -finline-functions -ffast-math -malign-loops=2 -malign-jumps=2 -malign-functions=2'

freebsd:
	$(MAKE) CC=cc LDFLAGS= \
		OBJECTS= \
		CFLAGS='-Wall -ansi -pedantic -O4 -m486 \
			-funroll-all-loops -ffast-math -DROT_I386 \
			-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP' \
		greed

openbsd:
	$(MAKE) CC=cc LDFLAGS= \
		OBJECTS= \
		CFLAGS='-Wall -ansi -O4 -m486 \
			-funroll-all-loops -ffast-math -DROT_I386 \
			-DI386_ASSEM -DREAL_IS_FLOAT -DUSE_MMAP' \
		greed

solaris:
	$(MAKE) CC=cc LDFLAGS='-lresolv -lsocket -lnsl' OBJECTS= \
		CFLAGS='-fast -native -xO5 -DSOLARIS -DREAL_IS_FLOAT \
			-DUSE_MMAP' \
		greed

solaris-gcc:
	$(MAKE) CC=gcc LDFLAGS='-lsocket -lnsl' OBJECTS= \
		CFLAGS='-O2 -Wall -DSOLARIS -DREAL_IS_FLOAT -DUSE_MMAP \
			-funroll-all-loops -finline-functions' \
		greed

sunos:
	$(MAKE) CC=gcc LDFLAGS='-lsocket -lxnet' OBJECTS= \
		CFLAGS='-O2 -DSUNOS -DREAL_IS_FLOAT -DUSE_MMAP \
			-funroll-loops' \
		greed

hpux:
	$(MAKE) CC=cc LDFLAGS= OBJECTS= \
		CFLAGS='-DREAL_IS_FLOAT -Ae -O -D_HPUX_SOURCE -DHPUX' \
		greed

sgi:
	$(MAKE) CC=cc LDFLAGS= OBJECTS= GEN_LIB= \
		CFLAGS='-Xcpluscomm -O2 -DSGI -DREAL_IS_FLOAT -DUSE_MMAP' \
		greed

dec:
	$(MAKE) CC=cc LDFLAGS= OBJECTS= \
		CFLAGS='-std1 -warnprotos -O4 -DUSE_MMAP' \
		greed

ultrix:
	$(MAKE) CC=cc LDFLAGS= OBJECTS= \
		CFLAGS='-std1 -O2 -DULTRIX' \
		greed

aix:
	$(MAKE) LDFLAGS= OBJECTS= \
		CFLAGS='-O -DAIX -DUSE_MMAP' \
		greed
os2:
	$(MAKE) CC=gcc LDFLAGS= \
		OBJECTS= \
		CFLAGS='-DREAL_IS_FLOAT -DOS2 -Wall -O2 -m486 \
		-funroll-all-loops \
		-finline-functions -ffast-math' \
		LIBS='-los2me -lsocket' \
		greed.exe

generic:
	$(MAKE) LDFLAGS= OBJECTS= \
		CFLAGS='-O' \
		greed

debug:
	$(MAKE) LDFLAGS= OBJECTS= \
		CFLAGS='-g' \
		greed


greed: main.o connect.o $(OBJECTS) ftpheader.o httpheader.o \
		parse.o util.o download.o proxy.o Makefile
	$(CC) $(CFLAGS) $(LDFLAGS) main.o connect.o download.o \
		ftpheader.o httpheader.o parse.o util.o proxy.o $(OBJECTS) \
		-o greed
	@echo ""
	@echo "Done!  Now just type in 'make install' to install it!"
	@echo "Greed will install in /usr, if you want it in another directory,"
	@echo "just edit the Makefile and change PREFIX"
	@echo ""


greed.exe: main.o connect.o $(OBJECTS) ftpheader.o httpheader.o \
		parse.o util.o download.o Makefile
	$(CC) $(CFLAGS) $(LDFLAGS) main.o connect.o download.o \
		ftpheader.o httpheader.o parse.o util.o $(OBJECTS) \
		-o greed.exe -lm $(LIBS)



connect.o:	main.h
download.o:	main.h
ftpheader.o:	main.h
httpheader.o:	main.h
main.o:		main.h
parse.o:	main.h
proxy.o:	main.h
util.o:		main.h

clean:
	rm -f *.o *core *~ greed a.out

prepared-for-install:
	@if [ ! -x greed ]; then \
		echo '###' ; \
		echo '###  Before doing "make install", you have to compile the software.' ; \
		echo '### Type "make" for more information.' ; \
		echo '###' ; \
		exit 1 ; \
	fi

install:	prepared-for-install
	strip greed
	if [ -x /usr/ccs/bin/mcs ]; then /usr/ccs/bin/mcs -d greed; fi
	cp -f greed $(BINDIR)
	chmod 755 $(BINDIR)/greed
	cp -f greed.1.gz $(MANDIR)/man$(SECTION)
	chmod 644 $(MANDIR)/man$(SECTION)/greed.1.gz
	if [ -r $(MANDIR)/windex ]; then catman -w -M $(MANDIR) $(SECTION); fi

dist:	clean
	DISTNAME="`basename \`pwd\``" ; \
	sed '/prgDate/s_".*"_"'`date +%Y/%m/%d`'"_' version.h > version.new; \
	mv -f version.new version.h; \
	cd .. ; \
	rm -f "$$DISTNAME".tar.gz "$$DISTNAME".tar ; \
	tar cvf "$$DISTNAME".tar "$$DISTNAME" ; \
	gzip -9 "$$DISTNAME".tar
