VPATH = /home/mfrank/mfrank/projects/05-08-10/try3/ece511/apps/vpr
XTOOLS_DIR = /home/mfrank/polyflow-tools/
all: vpr

# STRIP OFF THE .c and .f
STEMS = $(patsubst %.f,%, $(patsubst %.c,%, $(SOURCES)))
OBJS = $(patsubst %,%.o,$(STEMS))


SOURCES	  = main.c util.c read_netlist.c read_arch.c place.c route.c \
	    draw.c graphics.c stats.c segment_stats.c rr_graph.c \
	    rr_graph2.c rr_graph_sbox.c rr_graph_util.c \
	    rr_graph_timing_params.c rr_graph_area.c check_rr_graph.c \
	    check_route.c hash.c read_place.c
CFLAGS = -Wall -O3 -DSPEC_CPU2000
CCCPFLAGS = -DSPEC_CPU2000

vpr: $(OBJS)
	$(RLD) -EL -o $@ $(LIBDIR_FLAGS) \
		$^ $(XTOOLS_DIR)/lib/crt0.o \
		-lc -lm -lgcc

unixver: $(SOURCES)
	gcc $(CFLAGS) -D_user_main=main -o $@ $^ -lm


PLACE_FLAGS =  -nodisp -place_only -init_t 5 -exit_t 0.005 \
		-alpha_t 0.9412 -inner_num 2

ROUTE_FLAGS =  -nodisp -route_only -route_chan_width 15 \
		-pres_fac_mult 2 -acc_fac 1 \
		-first_iter_pres_fac 4 -initial_pres_fac 8

SMRED_PLACE_FILES = smred.net small.arch smred.place.out del.me.out
SMRED_ROUTE_FILES = smred.net small.arch smred.place smred.route.out

MDRED_PLACE_FILES = mdred.net small.arch mdred.place.out del.me.out
MDRED_ROUTE_FILES = mdred.net small.arch mdred.place mdred.route.out

LGRED_PLACE_FILES = lgred.net small.arch lgred.place.out del.me.out
LGRED_ROUTE_FILES = lgred.net small.arch lgred.place lgred.route.out

#SPEC2000 TEST is same as lgred

TRAIN_PLACE_FILES = train.net ref.arch train.place.out del.me.out
TRAIN_ROUTE_FILES = train.net ref.arch train.place train.route.out

REF_PLACE_FILES = ref.net ref.arch ref.place.out del.me.out
REF_ROUTE_FILES = ref.net ref.arch ref.place ref.route.out


smred.place.log:
	$(ARCHSIM) ./vpr src/data/smred.net src/data/small.arch smred.place.out del.me.out $(PLACE_FLAGS) 2>&1 | tee smred.place.log

smred.route.log:
	$(ARCHSIM) ./vpr src/data/smred.net src/data/small.arch src/data/smred.place smred.route.out $(ROUTE_FLAGS) 2>&1 | tee smred.route.log

lgred.place.log:
	$(ARCHSIM) ./vpr src/data/lgred.net src/data/small.arch lgred.place.out del.me.out $(PLACE_FLAGS) 2>&1 | tee lgred.place.log

lgred.route.log:
	$(ARCHSIM) ./vpr src/data/lgred.net src/data/small.arch src/data/lgred.place lgred.route.out $(ROUTE_FLAGS) 2>&1 | tee lgred.route.log

unix.place.log:
	./unixver src/data/smred.net src/data/small.arch unix.place.out del.me.out $(PLACE_FLAGS) 2>&1 | tee unix.place.log

unix.route.log:
	./unixver src/data/smred.net src/data/small.arch src/data/smred.place unix.route.out $(ROUTE_FLAGS) 2>&1 | tee unix.route.log

unixl.place.log: 
	./unixver src/data/lgred.net src/data/small.arch unixl.place.out del.me.out $(PLACE_FLAGS) 2>&1 | tee unixl.place.log

unixl.route.log:
	./unixver src/data/lgred.net src/data/small.arch src/data/lgred.place unixl.route.out $(ROUTE_FLAGS) 2>&1 | tee unixl.route.log


include $(XTOOLS_DIR)/Makefile.include
