#
#	Makefile for the socket library.
#
#
# If you define UNX2DOS, all path names specified by `struct sockaddr_un'
# will be converted from unix style to dos style prior to passing them
# to the OS. Note that this is time consuming, espacially for sendto().
# You MUST define UNX2DOS if you are going to use unix style path names
# containing / and the like.
#
# Add -DNIS to CFLAGS if you want to compile in hostname lookup via
# yellow pages.
#

include ../MakeVars

CPPFLAGS = -nostdinc -I. -I$(MINTINCLUDE) -I../include -DUNX2DOS -DDEBUG
CFLAGS = $(COPTS) -Wall -O2 -fomit-frame-pointer

BASESRCS = socket.c socketpair.c bind.c listen.c connect.c accept.c \
  recv.c send.c recvfrom.c sendto.c shutdown.c getsockname.c \
  getpeername.c getsockopt.c setsockopt.c sendmsg.c recvmsg.c \
  sncpy.c ident.c

INETSRCS = inet_addr.c inet_lnaof.c inet_makeaddr.c inet_netof.c \
  inet_network.c inet_ntoa.c \
  getnetbyaddr.c getnetbyname.c getnetent.c getproto.c getprotoent.c \
  getprotoname.c getservbyname.c getservbyport.c getservent.c \
  herror.c rcmd.c \
  gethostnamadr.c sethostent.c res_comp.c res_debug.c res_init.c \
  res_mkquery.c res_query.c res_send.c \

BASEOBJS = socket.o socketpair.o bind.o listen.o connect.o accept.o \
  recv.o send.o recvfrom.o sendto.o shutdown.o getsockname.o \
  getpeername.o getsockopt.o setsockopt.o sendmsg.o recvmsg.o \
  sncpy.o ident.o

INETOBJS = inet_addr.o inet_lnaof.o inet_makeaddr.o inet_netof.o \
  inet_network.o inet_ntoa.o \
  getnetbyaddr.o getnetbyname.o getnetent.o getproto.o getprotoent.o \
  getprotoname.o getservbyname.o getservbyport.o getservent.o \
  herror.o rcmd.o \
  gethostnamadr.o sethostent.o res_comp.o res_debug.o res_init.o \
  res_mkquery.o res_query.o res_send.o \

SOCKETLIBS = socket.olb socket16.olb bsocket.olb bsocket16.olb

#
# self-configuration section
#

ifeq (short.target, $(wildcard short.target))
SOCKETLIB = socket16.olb
XFLAGS = -mshort
SRCS = $(BASESRCS) $(INETSRCS)
OBJS = $(BASEOBJS) $(INETOBJS)
endif

ifeq (long.target, $(wildcard long.target))
SOCKETLIB = socket.olb
SRCS = $(BASESRCS) $(INETSRCS)
OBJS = $(BASEOBJS) $(INETOBJS)
endif

ifeq (bshort.target, $(wildcard bshort.target))
SOCKETLIB = bsocket16.olb
XFLAGS = -mshort -mbaserel
SRCS = $(BASESRCS) $(INETSRCS)
OBJS = $(BASEOBJS) $(INETOBJS)
endif

ifeq (blong.target, $(wildcard blong.target))
SOCKETLIB = bsocket.olb
XFLAGS = -mbaserel
SRCS = $(BASESRCS) $(INETSRCS)
OBJS = $(BASEOBJS) $(INETOBJS)
endif

ifeq (kernel.target, $(wildcard kernel.target))
SOCKETLIB = ksocket16.olb
XFLAGS = -mshort -DKERNEL
SRCS = $(BASESRCS)
OBJS = $(BASEOBJS)
endif

.c.o:
	$(CC) $(XFLAGS) $(CFLAGS) $(CPPFLAGS) -c $< -o $@

all: short long bshort blong

%.target:
	rm -f *.target
	$(MAKE) clean
	touch $@

short: short.target
	$(MAKE) lib

long: long.target
	$(MAKE) lib

bshort: bshort.target
	$(MAKE) lib

blong: blong.target
	$(MAKE) lib

kernel: kernel.target
	$(MAKE) lib

lib: $(SOCKETLIB)

ifndef CROSS
$(SOCKETLIB): $(patsubst %, $(SOCKETLIB)(%), $(OBJS))
	$(AR) s $(SOCKETLIB)

(%): %
	$(AR) r $@ $%
else
$(SOCKETLIB): $(OBJS)
	$(AR) rcs $(SOCKETLIB) $(OBJS)
endif

# Should depend on target all...

install:
	$(INSTALL) $(LIBMODE) $(SOCKETLIBS) $(MINTLIB)
	$(INSTALL) $(LIBMODE) sys/socket.h $(MINTINCLUDE)/sys
	$(INSTALL) $(LIBMODE) sys/un.h     $(MINTINCLUDE)/sys
	-mkdir $(MINTINCLUDE)/netinet
	$(INSTALL) $(LIBMODE) netinet/in.h       $(MINTINCLUDE)/netinet
	$(INSTALL) $(LIBMODE) netinet/in_systm.h $(MINTINCLUDE)/netinet
	$(INSTALL) $(LIBMODE) netinet/ip.h       $(MINTINCLUDE)/netinet
	$(INSTALL) $(LIBMODE) netinet/ip_icmp.h  $(MINTINCLUDE)/netinet
	$(INSTALL) $(LIBMODE) netinet/tcp.h      $(MINTINCLUDE)/netinet
	$(INSTALL) $(LIBMODE) netinet/udp.h      $(MINTINCLUDE)/netinet
	-mkdir $(MINTINCLUDE)/arpa
	$(INSTALL) $(LIBMODE) arpa/ftp.h     $(MINTINCLUDE)/arpa
	$(INSTALL) $(LIBMODE) arpa/inet.h    $(MINTINCLUDE)/arpa
	$(INSTALL) $(LIBMODE) arpa/nameser.h $(MINTINCLUDE)/arpa
	$(INSTALL) $(LIBMODE) arpa/telnet.h  $(MINTINCLUDE)/arpa
	$(INSTALL) $(LIBMODE) arpa/tftp.h    $(MINTINCLUDE)/arpa
	-mkdir $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) net/if.h       $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) net/route.h    $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) net/if_arp.h   $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) net/if_ether.h $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) net/if_sl.h    $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) net/if_ppp.h   $(MINTINCLUDE)/net
	$(INSTALL) $(LIBMODE) resolv.h $(MINTINCLUDE)
	$(INSTALL) $(LIBMODE) netdb.h  $(MINTINCLUDE)
	$(INSTALL) $(LIBMODE) sockios.h  $(MINTINCLUDE)
	 

clean:
	rm -f $(BASEOBJS) $(INETOBJS) *.target

depend:
	$(CC) -MM $(XFLAGS) $(CPPFLAGS) *.c > depend

$(SOCKETLIB)(ident.o): ../include/version.h

ifeq (depend, $(wildcard depend))
include depend
endif
