# Specific Definitions ######################################################

INC=/usr/local/include
LIB=/usr/local/lib
CFLAGS= -I/home/robison/plot -g -Wall
CC=gcc

HFILES = device_id.h flash.h flexi.h hex_error.h hex_util.h scsim_align.h scsim.h scsim_lib.h utility.h
CONSOLEOBJS  = console.o
RADTSTOBJS  = radtst.o
RADFREQOBJS  = radfreq.o
OVNTSTOBJS  = ovntst.o
FLASHOBJS   = flash.o
SCSIMOBJS   = scsim.o
SCTESTOBJS  = sctest.o
SCCMDOBJS   = sccmd.o
PORTCOBJS   = portc.o
PORTAOBJS   = portall.o
NETLISTOBJS = netlist.o
JUNOOBJS    = hijuno.o

LIBOBJS = scsim_align.o
SIMLIBOBJS = scsim_lib.o $(LIBOBJS)
RADLIBOBJS = scrad_lib.o $(LIBOBJS)
HEXOBJS = hex_load.o hex_error.o utility.o device_id.o
MPSSEOBJS=$(LIB)/libMPSSE.a
PORTA = $(patsubst %.o,%.c, $(PORTAOBJS) )
PORTC = $(patsubst %.o,%.c, $(PORTCOBJS) )
SCSIM = $(patsubst %.o,%.c, $(SCSIMOBJS) )
SCTEST = $(patsubst %.o,%.c, $(SCTESTOBJS) )
SCCMD = $(patsubst %.o,%.c, $(SCCMDOBJS) )
SIMLIBS = $(patsubst %.o,%.c, $(SIMLIBOBJS) )
RADLIBS = scrad_lib.o
HDRS = $(wildcard *.h)

# Implicit Rules #############################################################

%.o:%.c $(HFILES)
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
    rm --force core*
    chmod g+w $@
 
build: netlist scsim sctest sccmd portc portall flash hijuno radtst radfreq ovntst console

$(PORTAOBJS):  $(HDRS) $(PORTA)
$(PORTCOBJS):  $(HDRS) $(PORTC)
$(SCSIMOBJS):  $(HDRS) $(SCSIM)
$(SCTESTOBJS): $(HDRS) $(SCTEST)
$(SCCMDOBJS):  $(HDRS) $(SCCMD)
$(SIMLIBOBJS): $(HDRS) $(SIMLIBS)
$(RADLIBOBJS): $(HDRS) $(RADLIBS)

scsim_lib.o:    scsim_lib.c $(HFILES)
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -o scsim_lib.o scsim_lib.c -D _SCCIM_
    chmod g+w scsim_lib.o
 
scrad_lib.o:    scsim_lib.c $(HFILES)
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -o scrad_lib.o scsim_lib.c -D _SCRAD_
    chmod g+w scrad_lib.o

netlist: $(NETLISTOBJS)
    $(CC) $(CFLAGS) -o $@  $(NETLISTOBJS) -L $(LIB)
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *

portall: $(PORTAOBJS) $(SIMLIBOBJS)
    $(CC) $(CFLAGS) -o $@  $(PORTAOBJS) $(SIMLIBOBJS) -L $(LIB) -l ftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *
portc: $(PORTCOBJS) $(SIMLIBOBJS)
    $(CC) $(CFLAGS) -o $@  $(PORTCOBJS) $(SIMLIBOBJS) -L $(LIB) -l ftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *

scsim: $(SCSIMOBJS) $(SIMLIBOBJS)
    $(CC) $(CFLAGS) -o $@  $(SCSIMOBJS) $(SIMLIBOBJS) -L $(LIB) -l ftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *
sctest: $(SCTESTOBJS) $(SIMLIBOBJS)
    $(CC) $(CFLAGS) -o $@  $(SCTESTOBJS) $(SIMLIBOBJS) -L $(LIB) -l ftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *
sccmd: $(SCCMDOBJS) $(SIMLIBOBJS)
    $(CC) $(CFLAGS) -o $@  $(SCCMDOBJS) $(SIMLIBOBJS) -L $(LIB) -l ftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *
flash: makefile $(FLASHOBJS) $(SIMLIBOBJS) $(HEXOBJS) $(MPSSEOBJS)
    $(CC) $(CFLAGS) -o $@ $(HEXOBJS)  $(FLASHOBJS) $(MPSSEOBJS) -ldl -L $(LIB) -lftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *
hijuno: makefile $(JUNOOBJS) $(SIMLIBOBJS) $(MPSSEOBJS)
    rm --force hijuno.o
    $(CC) -c $(CFLAGS) $(CPPFLAGS)  hijuno.c -o hijuno.o
    $(CC) $(CFLAGS) -o hijuno_tty  hijuno.o scsim_align.o
    rm --force hijuno.o
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -DFTDI_LIBMPSSE hijuno.c -o hijuno.o
    $(CC) $(CFLAGS) -DFTDI_LIBMPSSE -o hijuno_mpsse hijuno.o $(RADLIBOBJS) $(MPSSEOBJS) -ldl -L $(LIB) -lftdi
    rm --force hijuno.o
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *
radtst: makefile $(RADTSTOBJS) $(SIMLIBOBJS) $(MPSSEOBJS)
    $(CC) $(CFLAGS) -o $@ $(RADTSTOBJS) $(RADLIBOBJS) $(MPSSEOBJS) -ldl -L $(LIB) -lftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *

console: makefile $(CONSOLEOBJS) $(SIMLIBOBJS) $(MPSSEOBJS)
    $(CC) $(CFLAGS) -o $@ $(CONSOLEOBJS) $(SIMLIBOBJS) -ldl -L $(LIB) -lftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *

radfreq: makefile $(RADFREQOBJS) $(SIMLIBOBJS) $(MPSSEOBJS)
    $(CC) $(CFLAGS) -o $@ $(RADFREQOBJS) $(RADLIBOBJS) $(MPSSEOBJS) -ldl -L $(LIB) -lftdi
    chown wtr:wtr *
    chmod u+rw *
    chmod go+r *

ovntst: makefile $(OVNTSTOBJS)
    $(CC) $(CFLAGS) -o $@ $(OVNTSTOBJS)  -L/home/robison/plot -lplot  -ggdb
    rm --force oven.ps
    rm --force core*

clean:
    rm -f *.o *~ core.*
    rm -f hijuno
    rm -f hijuno_tty
    rm -f hijuno_mpsse
