DPR_VERSION = 3.1
DPP_VERSION = 1.8

DPR_OBJ =\
	dpr/util_P.o\
	dpr/figure_P.o\
	dpr/optim_P.o\
	dpr/coord_P.o\
    dpr/mvcon_I.o\
	dpr/chanrout_R.o\
	dpr/dpr_R.o\
	dpr/dprlin_R.o\
	dpr/load_R.o\
	dpr/optiplace_R.o\
	dpr/router_R.o\
	dpr/save_R.o\
	dpr/sig_R.o\
	dpr/util_R.o

SCR_OBJ =\
	scr/AllowFree.o\
	scr/DynamicUtil.o\
	scr/GreedyRout.o\
	scr/StaticUtil.o\
	scr/SymbChanRout.o


SCR_HEADERS  = scr/StaticUtil.h\
               scr/DynamicUtil.h\
               scr/AllowFree.h\
               scr/GreedyRout.h\
               scr/SymbChanRout.h\
               scr/ScrDataBase.h\
               scr/scr.h
 
SCR_LOCAL_CFLAGS  = $(CFLAGS) -DSCR_MAXLINE=500 -DSCR_MAXCOL=1500 
# use -DSCR_DEBUG to verbose mode

include $(TOP)/etc/$(MACHINE).mk

ALC_INC = -I$(ALLIANCE_INCLUDE) \
          -DMGN_H='"mgn319.h"' \
          -DMLU_H='"mlu411.h"' \
          -DMPU_H='"mpu402.h"' \
          -DMLO_H='"mlo404.h"' \
          -DMPH_H='"mph402.h"' \
          -DBHL_H='"bhl106.h"' \
          -DBVL_H='"bvl108.h"' \
          -DBEH_H='"beh106.h"' \
          -DPAT_H='"pat104.h"' \
          -DLOG_H='"log200.h"' \
          -DICU_H='"icu201.h"' \
          -DICN_H='"icn201.h"' \
          -DIAC_H='"iac201.h"' \
          -DMUT_H='"mut315.h"'

ALC_LIB = -L$(ALLIANCE_LIB) \
          -lMgn319 \
          -lMlu411 \
          -lMpu402 \
          -lMcp401 \
          -lMap402 \
          -lMmg401 \
          -lMcl408 \
          -lMal404 \
          -lMvl406 \
          -lMel406 \
          -lMsl608 \
          -lMhl402 \
          -lMlo404 \
          -lMph402 \
          -lBvl108 \
          -lBhl106 \
          -lBeh106 \
          -lPat104 \
          -lIcu201 \
          -lIcc201 \
          -lIca201 \
          -lIcn201 \
          -lMut315

EXTRAFLAGS = $(ALC_INC) \
             -DDPR_VERSION='"$(DPR_VERSION)"' \
             -DDPP_VERSION='"$(DPP_VERSION)"' \
             -DALLIANCE_VERSION=$(ALLIANCE_VERSION) \
             -D$(MACHINE) 

distrib : ../bin/dpr 
	@touch distrib
	@if [ -f ../bin/INSTALLED ] ; \
	then $(RM) ../bin/INSTALLED ; \
	else exit 0 ; fi

../bin/dpr : scr/libscr.a $(DPR_OBJ)
	$(CC) $(CFLAGS) $(DPR_OBJ) -Lscr $(ALC_LIB) -lscr -o ../bin/dpr
# $(CC) $(CFLAGS) $(DPR_OBJ) -Lscr $(ALC_LIB) -lscr -g -o ../bin/dpr

################################################################################
# 			Symbolic Channel Router                                            #
################################################################################
scr/libscr.a : $(SCR_OBJ)

scr/StaticUtil.o : scr/StaticUtil.c scr/scr.h scr/ScrDataBase.h
	$(CC) $(ALC_INC) $(GSCR_LOCAL_CFLAGS) -c scr/StaticUtil.c -o scr/StaticUtil.o
	$(AR) $(ARFLAGS) scr/libscr.a scr/StaticUtil.o
	-$(RANLIB) scr/libscr.a

scr/DynamicUtil.o : scr/DynamicUtil.c scr/greedy.h scr/ScrDataBase.h
	$(CC) $(ALC_INC) $(SCR_LOCAL_CFLAGS) -c scr/DynamicUtil.c -o scr/DynamicUtil.o
	$(AR) $(ARFLAGS) scr/libscr.a scr/DynamicUtil.o
	-$(RANLIB) scr/libscr.a

scr/AllowFree.o : scr/AllowFree.c scr/ScrDataBase.h
	$(CC) $(ALC_INC) $(SCR_LOCAL_CFLAGS) -c scr/AllowFree.c -o scr/AllowFree.o
	$(AR) $(ARFLAGS) scr/libscr.a scr/AllowFree.o
	-$(RANLIB) scr/libscr.a

scr/GreedyRout.o : scr/GreedyRout.c scr/greedy.h scr/DynamicUtil.c
	$(CC) $(ALC_INC) $(SCR_LOCAL_CFLAGS) -c scr/GreedyRout.c -o scr/GreedyRout.o
	$(AR) $(ARFLAGS) scr/libscr.a scr/GreedyRout.o
	-$(RANLIB) scr/libscr.a

scr/SymbChanRout.o : scr/SymbChanRout.c $(SCR_HEADERS)
	$(CC) $(ALC_INC) $(SCR_LOCAL_CFLAGS) -c scr/SymbChanRout.c -o scr/SymbChanRout.o
	$(AR) $(ARFLAGS) scr/libscr.a scr/SymbChanRout.o
	-$(RANLIB) scr/libscr.a

################################################################################

.c.o : 
	$(CC) $(CFLAGS) $(EXTRAFLAGS) -c $<
# $(CC) $(CFLAGS) $(EXTRAFLAGS) -g -c $<
	-$(MV) `basename $@` $@

clean:
	-@$(RM) -f ../bin/* ../lib/* ../include/* \
               dpr/*.o scr/*.o scr/*.a distrib > /dev/null 2>&1
