# Makefile for Thrift test project.
#
# Author:
#   Marc Kwiatkowski <marc@facebook.com>
#   Aditya Agarwal   <aditya@facebook.com>


ifndef thrift_home
thrift_home=../..
endif #thrift_home

target: all

ifndef boost_home
#boost_home=../../../../../thirdparty/boost_1_33_1
boost_home=/usr/local/include/boost-1_33_1
endif #boost_home
target: all

include_paths = $(thrift_home)/lib/cpp/src \
                $(thrift_home)/lib/cpp \
                $(thrift_home)/ \
                $(boost_home)

include_flags = $(patsubst %,-I%, $(include_paths))

# Tools
ifndef THRIFT
THRIFT = ../../compiler/cpp/thrift
endif # THRIFT

CC     = g++
LD     = g++

# Compiler flags
DCFL  = -Wall -O3 -g -I./gen-cpp $(include_flags) -L$(thrift_home)/lib/cpp/.libs -lthrift -lthriftnb -levent
CFL   = -Wall -O3 -I./gen-cpp $(include_flags) -L$(thrift_home)/lib/cpp/.libs -lthrift -lthriftnb -levent

all: stress-test stress-test-nb

debug: stress-test-debug stress-test-debug-nb

stubs: ../StressTest.thrift
	$(THRIFT) --cpp --php ../StressTest.thrift

stress-test-debug-nb: stubs
	g++ -o stress-test-nb $(DCFL) src/nb-main.cpp ./gen-cpp/Service.cpp gen-cpp/StressTest_types.cpp

stress-test-nb: stubs
	g++ -o stress-test-nb $(CFL) src/nb-main.cpp ./gen-cpp/Service.cpp gen-cpp/StressTest_types.cpp

stress-test-debug: stubs
	g++ -o stress-test $(DCFL) src/main.cpp ./gen-cpp/Service.cpp gen-cpp/StressTest_types.cpp

stress-test: stubs
	g++ -o stress-test $(CFL) src/main.cpp ./gen-cpp/Service.cpp gen-cpp/StressTest_types.cpp

clean:
	rm -fr stress-test stress-test-nb gen-cpp
