#
#	Makefile for the socket library.
#

SHELL = /bin/sh

CC = gcc
#
# 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.
#
CPPFLAGS = -I../include -DUNX2DOS
CFLAGS = -Wall -O2 -fomit-frame-pointer

SRCS = 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

OBJS = 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

#
# self-configuration section
#

ifeq (short.target, $(wildcard short.target))
SOCKETLIB = socket16.olb
XFLAGS = -mshort
endif

ifeq (long.target, $(wildcard long.target))
SOCKETLIB = socket.olb
endif

ifeq (bshort.target, $(wildcard bshort.target))
SOCKETLIB = bsocket16.olb
XFLAGS = -mshort -mbaserel
endif

ifeq (blong.target, $(wildcard blong.target))
SOCKETLIB = bsocket.olb
XFLAGS = -mbaserel
endif

ifeq (kernel.target, $(wildcard kernel.target))
SOCKETLIB = ksocket16.olb
XFLAGS = -mshort -DKERNEL
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: $(OBJS)
	$(AR) rs $(SOCKETLIB) $(OBJS)

clean:
	rm -f $(OBJS) *.target

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

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