#
# RCCL  Version 1.0           Author :  Vincent Hayward
#                                       School of Electrical Engineering
#                                       Purdue University
#       Dir     : src
#       File    : Makefile
#       Remarks : Make and maintain rccl.
#
# make         : make a task named 'task' after 'task.c'
#                in src directory for development of the library.
# make insplan : install the plan version
# make install : install the real version and cp related files
# make speed   : make the speed measurement program
# make intest  : make interactive test program
# make lint    : lint the current version (bug in llib-lc for strcat strcpy)
# make nm      : look at the entries
# make wc      : count the lines


CFLAGS= -O
LINTFLAGS =
LINTLIB = ../lint/llib-rtc ../lint/llib-dbot

#
# libraries and directories involved
#

LIBDIR= /c/rccl/l
INCDIR= /c/rccl/h
LINDIR= /c/rccl/l
LIBES=  /c/rccl/l/rtc.a  /c/rccl/l/dbot.a

#
# source files  (rccl only)
#

SFILES  = drive.c \
	  diff.c  \
	  equat.c \
	  jacob.c \
	  main.c  \
	  misc.c  \
	  moves.c \
	  news.c  \
	  other.c \
	  optim.c \
	  select.c \
	  setp.c  \
	  shared.c\
	  solut.c \
	  teach.c \
	  trans.c

#
# include files
#

HFILES  = ../h/bio.h \
	  ../h/kine.h \
	  ../h/manip.h \
	  ../h/pumadata.h \
	  ../h/standata.h \
	  ../h/switch.h \
	  ../h/rccl.h \
	  ../h/umac.h \
	  ../h/which.h


#
# dependances
#

SWITCH  = ../o/main.o  \
	  ../o/misc.o  \
	  ../o/setp.o  \
	  ../o/shared.o

RCCL    = ../o/drive.o \
	  ../o/equat.o \
	  ../o/jacob.o \
	  ../o/main.o  \
	  ../o/misc.o  \
	  ../o/moves.o \
	  ../o/news.o  \
	  ../o/other.o \
	  ../o/optim.o \
	  ../o/select.o\
	  ../o/setp.o  \
	  ../o/shared.o\
	  ../o/solut.o \
	  ../o/teach.o \
	  ../o/trans.o \
\
	  ../o/speed.o \
	  ../o/intest.o

ARMTYPE = ../o/jacob.o \
	  ../o/main.o  \
	  ../o/misc.o  \
	  ../o/select.o\
	  ../o/shared.o\
	  ../o/solut.o \
\
	  ../o/intest.o\
	  ../o/speed.o

KINE    = ../o/jacob.o \
	  ../o/main.o  \
	  ../o/misc.o  \
	  ../o/select.o\
	  ../o/shared.o\
	  ../o/solut.o \
	  ../o/teach.o \
\
	  ../o/intest.o

DATA   =  ../o/shared.o

MANIP =   ../o/drive.o \
	  ../o/equat.o \
	  ../o/jacob.o \
	  ../o/main.o  \
	  ../o/misc.o  \
	  ../o/moves.o \
	  ../o/news.o  \
	  ../o/optim.o \
	  ../o/other.o \
	  ../o/select.o\
	  ../o/setp.o  \
	  ../o/shared.o\
	  ../o/solut.o \
\
	  ../o/intest.o \
	  ../o/speed.o

BIO =     ../o/main.o  \
	  ../o/misc.o  \
	  ../o/shared.o


UMAC =    ../o/drive.o  \
	  ../o/jacob.o  \
	  ../o/main.o   \
	  ../o/misc.o   \
	  ../o/select.o \
	  ../o/solut.o  \
	  ../o/teach.o  \
	  ../o/trans.o  \
	  ../o/setp.o   \
\
	  ../o/speed.o

#
# sets of object files
#

RCCLO   = ../o/diff.o  \
	  ../o/drive.o \
	  ../o/equat.o \
	  ../o/jacob.o \
	  ../o/main.o  \
	  ../o/misc.o  \
	  ../o/moves.o \
	  ../o/news.o  \
	  ../o/other.o \
	  ../o/optim.o \
	  ../o/select.o\
	  ../o/setp.o  \
	  ../o/shared.o\
	  ../o/solut.o \
	  ../o/teach.o \
	  ../o/trans.o

SPEEDO  = ../o/diff.o \
	  ../o/jacob.o \
	  ../o/speed.o \
	  ../o/patch.o \
	  ../o/shared.o\
	  ../o/solut.o \
	  ../o/trans.o

INTESTO = ../o/diff.o  \
	  ../o/intest.o\
	  ../o/jacob.o \
	  ../o/other.o \
	  ../o/patch.o \
	  ../o/select.o\
	  ../o/shared.o\
	  ../o/solut.o \
	  ../o/trans.o


#
# make a task
#

task: $(RCCLO) $(LIBES) ../o/task.o
	cc $(CFLAGS) ../o/task.o $(RCCLO) $(LIBES) -lnm -o task

#
# when all ok :
#
# do this first with ../h/switch.h set with  PLAN

insplan: $(RCCLO)
	ar r $(LIBDIR)/rccl.plan $(RCCLO)
	ranlib $(LIBDIR)/rccl.plan
#
# then this     with ../h/switch.h set with  REAL

install: $(RCCLO)
	ar r $(LIBDIR)/rccl.a $(RCCLO)
	ranlib $(LIBDIR)/rccl.a
	cp ../h/rccl.h $(INCDIR)
	cp ../h/which.h $(INCDIR)
	cp ../h/kine.h $(INCDIR)
	cp ../h/hand.h $(INCDIR)
	cp ../h/umac.h $(INCDIR)
	cp ../h/exiod.h $(INCDIR)
	cp ../lint/llib-rccl $(LINDIR)
	echo do not forget update llib-rccl

#
# make the speed measurements
#

speed:  $(SPEEDO) $(LIBES)
	cc $(CFLAGS) $(SPEEDO) $(LIBES) -lnm -lU77 -o speed

#
# make interactive test
#

intest: $(INTESTO) $(LIBES)
	cc $(CFLAGS) $(INTESTO) $(LIBES) -lnm -o intest


#
# different group treatments
#

lint:
	lint $(LINTFLAGS) $(SFILES) -v $(LINTLIB)

nm:
	nm -g $(RCCLO)

wc:
	wc -v $(SFILES)
	wc -v $(HFILES)

#
# these depend on thoses
#

$(SWITCH) : ../h/switch.h

$(ARMTYPE): ../h/which.h

$(BIO)    : ../h/bio.h

$(KINE) : ../h/kine.h

$(DATA)  : ../h/pumadata.h ../h/standata.h

$(MANIP) : ../h/manip.h

$(UMAC)  : ../h/umac.h

$(RCCL)  : ../h/rccl.h


../o/task.o   :    task.c ../h/rccl.h
	cc task.c $(CFLAGS) -c
	mv task.o ../o/task.o

../o/diff.o  :    diff.c
	cc diff.c $(CFLAGS) -c
	mv diff.o ../o/diff.o

../o/drive.o  :    drive.c
	cc drive.c $(CFLAGS) -c
	mv drive.o ../o/drive.o

../o/equat.o  :    equat.c
	cc equat.c $(CFLAGS) -c
	mv equat.o ../o/equat.o

../o/jacob.o  :    jacob.c
	cc jacob.c $(CFLAGS) -c
	mv jacob.o ../o/jacob.o

../o/shared.o  :    shared.c
	cc shared.c $(CFLAGS) -c
	mv shared.o ../o/shared.o

../o/main.o   :    main.c
	cc main.c $(CFLAGS) -c
	mv main.o ../o/main.o

../o/misc.o   :    misc.c
	cc misc.c $(CFLAGS) -c
	mv misc.o ../o/misc.o

../o/moves.o  :    moves.c
	cc moves.c $(CFLAGS) -c
	mv moves.o ../o/moves.o

../o/news.o   :    news.c
	cc news.c $(CFLAGS) -c
	mv news.o ../o/news.o

../o/other.o   :   other.c
	cc other.c $(CFLAGS) -c
	mv other.o ../o/other.o

../o/optim.o   :   optim.c
	cc optim.c $(CFLAGS) -c
	mv optim.o ../o/optim.o

../o/select.o   :    select.c
	cc select.c $(CFLAGS) -c
	mv select.o ../o/select.o

../o/setp.o   :    setp.c
	cc setp.c $(CFLAGS) -c
	mv setp.o ../o/setp.o

../o/solut.o   :   solut.c
	cc solut.c $(CFLAGS) -c
	mv solut.o ../o/solut.o

../o/teach.o   :   teach.c
	cc teach.c $(CFLAGS) -c
	mv teach.o ../o/teach.o

../o/trans.o   :   trans.c
	cc trans.c $(CFLAGS) -c
	mv trans.o ../o/trans.o


../o/speed.o   :   speed.c
	cc speed.c $(CFLAGS) -c
	mv speed.o ../o/speed.o

../o/patch.o   :   patch.c
	cc patch.c $(CFLAGS) -c
	mv patch.o ../o/patch.o

../o/intest.o  :   intest.c
	cc intest.c $(CFLAGS) -c
	mv intest.o ../o/intest.o


