1TARGET = cacti
2SHELL = /bin/sh
3.PHONY: all depend clean
4.SUFFIXES: .cc .o
5
6ifndef NTHREADS
7  NTHREADS = 8
8endif
9
10
11LIBS = 
12INCS = -lm
13
14ifeq ($(TAG),dbg)
15  DBG = -Wall 
16  OPT = -ggdb -g -O0 -DNTHREADS=1  -gstabs+
17else
18  DBG = 
19  OPT = -O3 -msse2 -mfpmath=sse -DNTHREADS=$(NTHREADS)
20endif
21
22#CXXFLAGS = -Wall -Wno-unknown-pragmas -Winline $(DBG) $(OPT) 
23CXXFLAGS = -Wno-unknown-pragmas $(DBG) $(OPT) 
24CXX = g++ -m32
25CC  = gcc -m32
26
27SRCS  = area.cc bank.cc mat.cc main.cc Ucache.cc io.cc technology.cc basic_circuit.cc parameter.cc \
28		decoder.cc component.cc uca.cc subarray.cc wire.cc htree2.cc \
29		cacti_interface.cc router.cc nuca.cc crossbar.cc arbiter.cc 
30
31OBJS = $(patsubst %.cc,obj_$(TAG)/%.o,$(SRCS))
32PYTHONLIB_SRCS = $(patsubst main.cc, ,$(SRCS)) obj_$(TAG)/cacti_wrap.cc
33PYTHONLIB_OBJS = $(patsubst %.cc,%.o,$(PYTHONLIB_SRCS)) 
34INCLUDES       = -I /usr/include/python2.4 -I /usr/lib/python2.4/config
35
36all: obj_$(TAG)/$(TARGET)
37	cp -f obj_$(TAG)/$(TARGET) $(TARGET)
38
39obj_$(TAG)/$(TARGET) : $(OBJS)
40	$(CXX) $(OBJS) -o $@ $(INCS) $(CXXFLAGS) $(LIBS) -pthread
41
42#obj_$(TAG)/%.o : %.cc
43#	$(CXX) -c $(CXXFLAGS) $(INCS) -o $@ $<
44
45obj_$(TAG)/%.o : %.cc
46	$(CXX) $(CXXFLAGS) -c $< -o $@
47
48clean:
49	-rm -f *.o _cacti.so cacti.py $(TARGET)
50
51
52