CLIENT_SOCKET_LIB?= libClientSocket
CLIENT_SOCKET_STATIC_LIB?= $(CLIENT_SOCKET_LIB).a
CLIENT_SOCKET_SHARED_LIB?= $(CLIENT_SOCKET_LIB).so

#XXX: Put these in a common place
#XXX: This file needs the same compilation options as the kernel
AR = ar
RANLIB = ranlib
CC = gcc
LD = ld

COPTFLAGS?=-O -pipe -g

INCLUDES += -I. -I.. -I../lib_req_resp
VPATH = $(S)/lib_req_resp

COPTS=	${INCLUDES}
CFLAGS=	${COPTFLAGS} ${CWARNFLAGS} ${DEBUG} ${COPTS}

CFLAGS += -DALPINE

DEFINED_PROF=	${PROF}
ifdef PROF
CFLAGS+=	-malign-functions=4
#if ${PROFLEVEL} >= 2
#IDENT+=	-DGPROF4 -DGUPROF
#PROF+=	-mprofiler-epilogue
#endif
endif

# Put configuration-specific C flags last (except for ${PROF}) so that they
# can override the others.
CFLAGS+=	${CONF_CFLAGS}

.IMPSRC = $(filter %.c %.s, $^)
.TARGET = $@

NORMAL_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
NORMAL_C_C= ${CC} -c ${CFLAGS} ${PROF} ${.IMPSRC}
NORMAL_S= ${CC} -c ${ASM_CFLAGS} ${.IMPSRC}
PROFILE_C= ${CC} -c ${CFLAGS} ${.IMPSRC}

SYSTEM_DEP= Makefile ${SYSTEM_OBJS}
SYSTEM_OBJS= ${OBJS} \

BEFORE_DEPEND=

OBJS= client_socket.o req_resp.o native_syscalls.o fd_map.o 

CFILES= client_socket.c fd_map.c 

SFILES=
MFILES=
CLEAN=

.PHONY:	all modules

all: $(CLIENT_SOCKET_SHARED_LIB)

$(CLIENT_SOCKET_SHARED_LIB): $(CLIENT_SOCKET_STATIC_LIB)
	$(LD) -E -o $@ -L./ -shared -export-dynamic -Bdynamic \
	      --whole-archive $(CLIENT_SOCKET_STATIC_LIB) --no-whole-archive

$(CLIENT_SOCKET_STATIC_LIB): ${SYSTEM_DEP}
	@rm -f $@
	@echo linking $@
	$(AR) ru $@ $(SYSTEM_OBJS) && $(RANLIB) $@

DEPEND_EXISTS = $(shell test -f .depend && echo yes)
ifneq ($(strip $(DEPEND_EXISTS)), yes)
${SYSTEM_OBJS}: $(filter %.h, ${BEFORE_DEPEND})
endif

clean:
	rm -f *.o *.a *.so *.So *.ko *.s eddep errs \
	      linterrs makelinks \
	      tags \
	      ${CLEAN}

#lint: /tmp
#	@lint -hbxn -DGENERIC -Dvolatile= ${COPTS} \
#	  $S/$M/$M/Locore.c ${CFILES} ioconf.c | \
#	    grep -v 'struct/union .* never defined' | \
#	    grep -v 'possible pointer alignment problem'

# This is a hack.  BFD "optimizes" away dynamic mode if there are no
# dynamic references.  We could probably do a '-Bforcedynamic' mode like
# in the a.out ld.  For now, this works.
hack.So: Makefile
	touch hack.c
	${CC} -shared -nostdlib hack.c -o hack.So
	rm -f hack.c

cleandepend:
	rm -f .depend

# Dependencies listed by hand. Ack !

client_socket.o: client_socket.c
	${NORMAL_C}
req_resp.o: 
	ln -s ../lib_req_resp/req_resp.o .
native_syscalls.o: 
	ln -s ../lib_req_resp/native_syscalls.o .
fd_map.o: fd_map.c
	${NORMAL_C}
# DO NOT DELETE THIS LINE -- make depend uses it
