CUR_REL_PATH := libs/user

include ../../config.mk

LIB = libuser.a

CFLAGS= -c ${OPTIMIZEFLAG} ${C_OPT} -D${MACH_OS} \
        -I../../include -I${IRIS_ROOT}/include

CXXFLAGS= -c ${OPTIMIZEFLAG} ${CC_OPT} -D${MACH_OS} \
        -I../../include -I${IRIS_ROOT}/include
CCFLAGS = ${CXXFLAGS}

CFLAGS_OPT= -c ${OPTIMIZEFLAG} ${C_OPT} -D${MACH_OS} \
	-I../../include -I${IRIS_ROOT}/include

CFLAGS_NOOPT= -c ${DEBUGFLAG} ${C_OPT} -D${MACH_OS} \
	-I../../include -I${IRIS_ROOT}/include

CPPMSG= -DMESSAGE_ONLY -I../../include -I${IRIS_ROOT}/include

all: ${LIB_DIR} ${LIB_DIR}/${LIB} ${MSG_CAT}

USER_C_SRCS =   angle.c \
		AngleNames.c \
		byteops.c \
		c_cmd_lookup.c \
		compress.c \
		DataConvert.c \
		DataNames.c \
		data_types.c \
		dft.c \
		dspcustom.c \
		EarthCurve.c \
		error_report.c \
		fambiguous_range.c \
		fileops.c \
		fnyquist_vel.c \
	 	help.c \
		KiloCount.c \
		lowmath.c \
		mapio.c \
		msgque.c \
		process.c \
		ProjectionNames.c \
		rtvec.c \
		schedule.c \
		semaphore.c \
		shmem.c \
		sig_subs.c \
		sig_system.c \
		SocketConnect.c \
		SocketIo.c \
		SocketSupport.c \
		sphere.c \
		str_subs.c \
		swap.c \
		TimeNames.c \
		timesubs.c \
		ttyio.c \
		UdpSupport.c \
		unlevelize.c \
		username.c \
		VaxData.c

byteops.o    : byteops.c    ; ${CC} ${CFLAGS_OPT} byteops.c
compress.o   : compress.c   ; ${CC} ${CFLAGS_OPT} compress.c
data_types.o : data_types.c ; ${CC} ${CFLAGS_OPT} data_types.c
dft.o        : dft.c        ; ${CC} ${CFLAGS_OPT} dft.c
unlevelize.o : unlevelize.c ; ${CC} ${CFLAGS_OPT} unlevelize.c

USER_C_OBJS = ${USER_C_SRCS:.c=.o}

TEST_C_SRCS = test_c.c
TEST_C_OBJS = ${TEST_C_SRCS:.c=.o}

MKDEPEND_CSRCS = ${USER_C_SRCS} ${TEST_C_SRCS} test_time.o

LDFLAGS = -L../lib  -L${IRIS_ROOT}/libs/lib

LLIBS = -luser -lm ${LSEARCH_BSD}

depend: makefile.d

check: test_c test_run

makefile.d: ${MKDEPEND_CSRCS}
	touch makefile.d
	makedepend -fmakefile.d -- ${CFLAGS} -- ${MKDEPEND_CSRCS} 
	makedepend -fmakefile.d -a -o.usg -- ${CFLAGS} -- messages.msg

test_c:	${TEST_C_OBJS} all
	${CXX} ${LD_OPT} ${TEST_C_OBJS} ${LDFLAGS} ${LLIBS} -o test_c

test_run:	test_c
		test_c ; touch test_run

test2: test2.o all
	${CXX} ${LD_OPT} test2.o ${LDFLAGS} ${LLIBS} -o test2
	./test2

test_sphere:	test_sphere.o all
	${CXX} ${LD_OPT} test_sphere.o ${LDFLAGS} ${LLIBS} -o test_sphere

test_time:	test_time.o all
	${CXX} ${LD_OPT} test_time.o ${LDFLAGS} ${LLIBS} -o test_time

trtvec: rtvec.c all
	${CC} ${CFLAGS_NOOPT} -DSELFTEST -o trtvec.o rtvec.c
	${CXX} ${LD_OPT} trtvec.o ${LDFLAGS} ${LLIBS} -o trtvec

prtvec: trtvec
	rm -f trtvec.dat ; ./trtvec > trtvec.dat
	echo 'set grid ;' \
	     'plot "trtvec.dat" using 1:2 title "All Data" with points ps 2,' \
	     '     "trtvec.dat" using 1:3 title "Drop One" with points ps 1,' \
	     '     "trtvec.dat" using 1:4 title "Drop Two" with points ps 0,' \
	     '     "trtvec.dat" using 1:5 title "Original" with points pt 3 ps 3 ;' \
	     'pause 1200 "Hit ^C to exit "' | gnuplot

cleanexe:
	rm -f test_c test2 test_run test_time core trtvec trtvec.dat

clean: cleanexe
	rm -f *.o *~ *.a *.usg *.cat* *.d *.d.bak ${LIB_DIR}/${LIB}

install: all ${IRIS_BIN} ${IRIS_NLS} ${IRIS_LIB}
	install -m 0664 -o ${IRIS_USER} -g ${IRIS_GROUP} ${LIB} ${IRIS_LIB}
	install -m 0664 -o ${IRIS_USER} -g ${IRIS_GROUP} ${MSG_CAT} ${IRIS_NLS}

uninstall:
	cd ${IRIS_NLS}; rm -f ${MSG_CAT}
	cd ${IRIS_LIB}; rm -f ${LIB}

install_src: ${INST_SRC_DIR}
	install -m 0664 -o ${IRIS_USER} -g ${IRIS_GROUP} Makefile *.[cCh] *.msg ${INST_SRC_DIR}

uninstall_src:
	rm -rf ${INST_SRC_DIR}

${LIB}: ${USER_C_OBJS}
	rm -f $@; $(AR) -rsc $@ $^

-include makefile.d
