
#
# Change these if default is unsuitable
# (default is in the architecture rules)
#
MAKE = make
CC = gcc

OBJ = cksum.o debug.o if.o ip_input.o ip_output.o main.o mbuf.o misc.o sbuf.o sl.o\
	slcompress.o socket.o tcp_input.o tcp_output.o tcp_subr.o tcp_timer.o\
	terminal.o udp.o

all:
	@(if [ -f .os ] ; \
	then \
	  	echo Making for `cat .os`; \
	  	exec make `cat .os`; \
	else \
	  	echo "Type: $(MAKE) <OS>"; \
	  	echo "      where <OS> is one of:"; \
	  	echo ; \
	  	echo "            freebsd, netbsd, solaris, linux, sunos,"; \
		echo "            aix, sco"; \
	  	echo ; \
		echo "(Note: solaris means solaris 2.x, use sunos for earlier versions)"; \
		echo "Make sure that the Endian specified for your machine is correnct"; \
	fi);

slirp: $(OBJ)
	$(CC) -o slirp $(OBJ) $(LDFLAGS)

clean:
	rm -f $(OBJ)
	rm -f slirp core slirp.core core.slirp

#
# Architectures
#

# Common flags
COMMON = $(CFLAGS) -DDEBUG -O2 -g -Wstrict-prototypes

#
# If you don't have gcc, then uncomment these and cross your fingers
#
#CC = cc
#COMMON += -DANSI

solaris:
	@echo solaris > .os
	@$(MAKE) "LDFLAGS = -lsocket -lnsl" \
		 "CFLAGS = -D_BIG_ENDIAN_ $(COMMON)" \
		slirp

freebsd:
	@echo freebsd > .os
	@$(MAKE) "CFLAGS = -D_LITTLE_ENDIAN_ $(COMMON)" \
		slirp

netbsd:
	@echo netbsd > .os
	@$(MAKE) "CFLAGS = -D_BIG_ENDIAN_ $(COMMON)" \
		slirp

linux:
	@echo linux > .os
	@$(MAKE) "CFLAGS = -D_LITTLE_ENDIAN_ $(COMMON) -DNO_FILIO" \
                slirp
		
sunos:
	@echo sunos > .os
	@$(MAKE) "CFLAGS = -D_BIG_ENDIAN_ $(COMMON) -DBAD_SPRINTF -DNO_STRERROR" \
		slirp

aix:
	@echo aix > .os
	@$(MAKE) "CFLAGS = -D_BIG_ENDIAN_ $(COMMON) -DAIX -DNO_FILIO -DUSE_IOCTL " \
		slirp

sco:
	@echo sco > .os
	@$(MAKE) "CFLAGS = -D_LITTLE_ENDIAN_ $(COMMON) -DNO_READV -DNO_FILIO" \

#
# OBJ's
# XXX The dependants here are incomplete.  If you make 
# major changes be sure to "make clean" first
#

debug.o: debug.c h/debug.h
	$(CC) $(CFLAGS) -c debug.c

cksum.o: cksum.c
	$(CC) $(CFLAGS) -c cksum.c

if.o: if.c
	$(CC) $(CFLAGS) -c if.c

ip_input.o: ip_input.c h/ip.h
	$(CC) $(CFLAGS) -c ip_input.c

ip_output.o: ip_output.c h/ip.h
	$(CC) $(CFLAGS) -c ip_output.c

main.o: main.c h/main.h
	$(CC) $(CFLAGS) -c main.c

mbuf.o: mbuf.c h/mbuf.h
	$(CC) $(CFLAGS) -c mbuf.c

misc.o: misc.c h/misc.h
	$(CC) $(CFLAGS) -c misc.c

sl.o: sl.c h/sl.h
	$(CC) $(CFLAGS) -c sl.c

socket.o: socket.c h/socket.h
	$(CC) $(CFLAGS) -c socket.c

tcp_input.o: tcp_input.c h/tcp.h
	$(CC) $(CFLAGS) -c tcp_input.c

tcp_output.o: tcp_output.c h/tcp.h
	$(CC) $(CFLAGS) -c tcp_output.c

tcp_subr.o: tcp_subr.c h/tcp.h
	$(CC) $(CFLAGS) -c tcp_subr.c

tcp_timer.o: tcp_timer.c h/tcp.h
	$(CC) $(CFLAGS) -c tcp_timer.c

terminal.o: terminal.c
	$(CC) $(CFLAGS) -c terminal.c

sbuf.o: sbuf.c h/sbuf.h
	$(CC) $(CFLAGS) -c sbuf.c

udp.o: udp.c h/udp.h
	$(CC) $(CFLAGS) -c udp.c

slcompress.o: slcompress.c h/slcompress.h
	$(CC) $(CFLAGS) -c slcompress.c






















