CC= gcc
CFLAGS= -g
INT_DEFINES= 

SRCDIR = ../../src
MGRSRC =  $(SRCDIR)/mgrs
ARDPSRC = $(SRCDIR)/ardp
CMMDSRC = $(SRCDIR)/CMMDlib
MISCSRC = $(SRCDIR)/misc
LIBSRC  = $(SRCDIR)/libfunc

LIBDIR = ../../lib/$(ARCH)
ARDPLIB = $(LIBDIR)/libardp.a
COMMLIB = $(LIBDIR)/libcomm.a
CMMDLIB = $(LIBDIR)/libCMMD.a

INCLDIR = $(SRCDIR)/include
INCLUDES= -I$(INCLDIR) -I$(INCLDIR)/$(ARCH)

LIBS= -lm -lcomm -lardp 

CFILES = nodemngr.c nmaux.c unix_create.c portmpg.c prm_jalloc.c \
	 jobmngr.c jmaux.c iot_create.c \
	 sysmngr.c \
	 term_iotask.c gfunc.c uio.c \
	 file_iotask.c 

OBJS = $(CFILES:.c=.o)

INCL_MF =  $(INCLDIR)/prm.h $(INCLDIR)/comm.h

INCL_AF = $(INCLDIR)/ardp.h $(INCLDIR)/charset.h $(INCLDIR)/list_macros.h

INCL_SF = $(INCLDIR)/nodemngr.h $(INCLDIR)/jobmngr.h $(INCLDIR)/sysmngr.h \
	  $(INCLDIR)/msg_tags.h $(INCLDIR)/altmac.h

ARDP_CFILES = \
	$(ARDPSRC)/ardp_abort.c \
	$(ARDPSRC)/ardp_accept.c \
	$(ARDPSRC)/ardp_add2req.c \
	$(ARDPSRC)/ardp_get_nxt.c \
	$(ARDPSRC)/ardp_headers.c \
	$(ARDPSRC)/ardp_pr_actv.c \
	$(ARDPSRC)/ardp_ptalloc.c \
	$(ARDPSRC)/ardp_reply.c \
	$(ARDPSRC)/ardp_replyf.c \
	$(ARDPSRC)/ardp_respond.c \
	$(ARDPSRC)/ardp_retriev.c \
	$(ARDPSRC)/ardp_rqalloc.c \
	$(ARDPSRC)/ardp_send.c \
	$(ARDPSRC)/ardp_snd_pkt.c \
	$(ARDPSRC)/ardp_srv_ini.c \
	$(ARDPSRC)/ardp_xmit.c \
	$(MISCSRC)/stcopy.c \
	$(MISCSRC)/plog.c 

COMMLIB_CFILES = \
        $(LIBSRC)/vsend.c   \
	$(LIBSRC)/vrecv.c   \
	$(LIBSRC)/vsendrecv_v.c \
        $(LIBSRC)/asend.c   \
	$(LIBSRC)/bcast.c \
	$(LIBSRC)/io_printf.c \
	$(LIBSRC)/io_open.c \
	$(LIBSRC)/io_read.c \
	$(LIBSRC)/io_write.c \
	$(LIBSRC)/io_close.c \
	$(LIBSRC)/io_seek.c \
	$(LIBSRC)/io_stat.c \
	$(LIBSRC)/io_delete.c \
	$(LIBSRC)/task_exit.c \
	$(LIBSRC)/copy_pkt.c \
	$(LIBSRC)/prm_resp.c \
	$(LIBSRC)/cache_ops.c \
	$(LIBSRC)/task_init.c \
	$(LIBSRC)/numtasks.c \
	$(LIBSRC)/creat_channel.c \
	$(LIBSRC)/hp_getrusage.c \
	$(LIBSRC)/PDAP_fsrv_err.c \
	$(LIBSRC)/PDAP_copy_pkt.c \
	$(LIBSRC)/PDAP_file_pkt.c \
	$(LIBSRC)/prm_func.c \
	$(MISCSRC)/internal_err.c $(MISCSRC)/vqsprintf.c \
	$(MISCSRC)/month_sname.c $(MISCSRC)/msg_poll.c \
	$(MISCSRC)/p_err_string.c $(MISCSRC)/pfs_debug.c

CMMDLIB_CFILES = \
	$(CMMDSRC)/CMMD_sendrcv_v.c \
	$(CMMDSRC)/CMMD_reduce.c \
	$(CMMDSRC)/CMMD_bc.c \
	$(CMMDSRC)/CMMD_time.c 


nodemngr_objs = nodemngr.o portmpg.o unix_create.o nmaux.o prm_jalloc.o

jobmngr_objs = jobmngr.o iot_create.o jmaux.o

sysmngr_objs = sysmngr.o

term_iotask_objs = term_iotask.o gfunc.o uio.o

file_iotask_objs = file_iotask.o portmpg.o


all:: nodemngr jobmngr sysmngr term_iotask file_iotask 

incl_m::  $(INCL_MF)

nodemngr: $(nodemngr_objs) $(ARDPLIB) $(COMMLIB)
	$(CC) $(CFLAGS) -o $@ $(nodemngr_objs) -L$(LIBDIR) $(LIBS)

jobmngr: $(jobmngr_objs) $(ARDPLIB) $(COMMLIB)
	$(CC) $(CFLAGS) -o $@ $(jobmngr_objs) -L$(LIBDIR) $(LIBS)

sysmngr: $(sysmngr_objs) $(ARDPLIB) $(COMMLIB)
	$(CC) $(CFLAGS) -o $@ $(sysmngr_objs) -L$(LIBDIR) $(LIBS)

term_iotask: $(term_iotask_objs) $(ARDPLIB) $(COMMLIB) $(CMMDLIB)
	$(CC) $(CFLAGS) -o $@ $(term_iotask_objs) -L$(LIBDIR) -lCMMD $(LIBS) 

file_iotask: $(file_iotask_objs) $(ARDPLIB) $(COMMLIB)
	$(CC) $(CFLAGS) -o $@ $(file_iotask_objs) -L$(LIBDIR) $(LIBS)


$(ARDPLIB): $(ARDP_CFILES) 
	make -f ./Makefile-ardp install ; 
	if [ $$? ] ; then exit ; fi


$(COMMLIB): $(COMMLIB_CFILES)
	make -f ./Makefile-libs DEFINES="$(DEFINES)" install ; 
	if [ $$? ] ; then exit ; fi
	
$(CMMDLIB): $(CMMDLIB_CFILES)
	make -f ./Makefile-CMMD DEFINES="$(DEFINES)" install ; 
	if [ $$? ] ; then exit ; fi


$(OBJS): $(MGRSRC)/$$(@:.o=.c) $(INCL_AF) $(INCL_MF) 
	$(CC) -c $(CFLAGS) $(INT_DEFINES) $(DEFINES) -DDFL_SM=\"$(DSM)\" $(INCLUDES) $(MGRSRC)/$(@:.o=.c)


# dependencies

jobmngr.o: $(INCLDIR)/jobmngr.h

nodemngr.o: $(INCLDIR)/nodemngr.h

sysmngr.o: $(INCLDIR)/sysmngr.h

clean:
	rm -f $(OBJS)  core

