#
# common defines
#
SRC = ../../../src
#DEFINES = -D_GNU_SOURCE -DPAFEE_STATISTICS_ENABLE -DPAFEE_UNITTEST -DPAFEE_DEBUG
DEFINES = -D_GNU_SOURCE -DPAFEE_STATISTICS_ENABLE -DPAFEE_UNITTEST -DPAFEE_OS_LINUX
INCLUDES = -I$(SRC)/common -I$(SRC)/memory -I$(SRC)/device -I$(SRC)/osabstraction -I$(SRC)/cLib -I$(SRC)/utility

#
# for x86 build
#
CXX = g++
CFLAGS =  $(INCLUDES) $(DEFINES) -Wall -O2
LDFLAGS = -lpthread

#
# for ARM-EMP9 build
#
#CXX = arm-linux-uclibc-g++
#INCLUDES+ = -I/opt/alpha_project/emp-arm9/linux/tools/include/directfb -I/home/terasaki/include
#CFLAGS =  $(INCLUDES) $(DEFINES) -Wall -O2
#LDFLAGS = -lpthread -L/opt/alpha_project/emp-arm9/linux/tools/usr/lib




#
# Targets define
#
PAFEE_OS_OBJS = PafeeMutex.o
PAFEE_DEVICE = PafeeStdStreamOutput.o
PAFEE_MEM_OBJS = PafeeFlexibleAllocator.o PafeeLockedAllocator.o PafeeStatisticsAllocator.o PafeeFastFixedAllocator.o PafeeComboAllocator.o



PafeeMutex.o: $(SRC)/osabstraction/PafeeMutex.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
PafeeFlexibleAllocator.o: $(SRC)/memory/PafeeFlexibleAllocator.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
PafeeFastFixedAllocator.o:  $(SRC)/memory/PafeeFastFixedAllocator.cpp
	$(CXX) $(CFLAGS) -c $^ 

PafeeLockedAllocator.o: $(SRC)/memory/PafeeLockedAllocator.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
PafeeComboAllocator.o: $(SRC)/memory/PafeeComboAllocator.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
PafeeStatisticsAllocator.o: $(SRC)/memory/PafeeStatisticsAllocator.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
PafeeStdStreamOutput.o: $(SRC)/device/PafeeStdStreamOutput.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
memorySpeed.o: memorySpeed.cpp
	$(CXX) $(CFLAGS) -c $^ 
	
memoryTest.o: memoryTest.cpp
	$(CXX) $(CFLAGS) -c $^ 


#
# command
#

memspeed: $(PAFEE_OS_OBJS) $(PAFEE_DEVICE) $(PAFEE_MEM_OBJS) memorySpeed.o
	$(CXX) $(CFLAGS) $(LDFLAGS) -o memspeed.out  $^

memtest: $(PAFEE_OS_OBJS) $(PAFEE_DEVICE) $(PAFEE_MEM_OBJS) memoryTest.o
	$(CXX) $(CFLAGS) $(LDFLAGS) -o memtest.out  $^

all: memtest memspeed

clean:
	rm -r -f *.o
	
