# Make command to use for dependencies
MAKE=gmake
RM=rm
MKDIR=mkdir

# -----Begin user-editable area-----

CONDEFS= -DMPI_POOLING  -DPARALLEL_CODE -DASYNC_GIVE -DMPI_MIXED -DSYNCHRONOUS_THREADED # -DMETRIC_TRACE -DAPI_TRACE -D_PRINT_DEBUG
# -DMETRIC_TRACE -DAPI_TRACE -D_PRINT_DEBUG
# -DASYNC_GIVE
#-D_PRINT_DEBUG -DPARALLEL_CODE -DDISABLE_CHECK -DVERBOSE_DATA -DAPI_TRACE -D_PRINT_DEBUG 
EXTRA_LINK=


CC=mpicc-vt
CXX=mpicxx-vt

# -----End user-editable area-----

# If no configuration is specified, "Release" will be used
ifndef "CFG"
CFG=Debug
endif

#
# Configuration: Debug
#
ifeq "$(CFG)" "Debug"
OUTDIR=Debug
OUTFILE=$(OUTDIR)/gmwat
CFG_INC=
CFG_LIB=-lboost_thread -lrt 
CFG_OBJ=
COMMON_OBJ=$(OUTDIR)/app_synthetic.o $(OUTDIR)/gmwat.o 
OBJ=$(COMMON_OBJ) $(CFG_OBJ)
ALL_OBJ=$(OUTDIR)/app_synthetic.o $(OUTDIR)/gmwat.o 

COMPILE=$(CXX) -c   -g -Wall -o "$(OUTDIR)/$(*F).o" $(CFG_INC) "$<" $(CONDEFS)
COMPILEC=$(CC) -c   -g -Wall -o "$(OUTDIR)/$(*F).o" $(CFG_INC) "$<" $(CONDEFS)
LINK=$(CXX)  -g -Wall -o "$(OUTFILE)" $(ALL_OBJ) $(CFG_LIB)

# Pattern rules
$(OUTDIR)/%.o : %.cpp
	$(COMPILE)

$(OUTDIR)/%.o : %.c
	$(COMPILEC)

# Build rules
all: $(OUTFILE)

$(OUTFILE): $(OUTDIR)  $(OBJ)
	$(LINK)

$(OUTDIR):
	$(MKDIR) -p "$(OUTDIR)"

# Rebuild this project
rebuild: cleanall all

# Clean this project
clean:
	$(RM) -f $(OUTFILE)
	$(RM) -f $(OBJ)

# Clean this project and all dependencies
cleanall: clean

execute: $(PWD)/Debug/gmwat machines
	mpirun -n 2 -hostfile machines $(PWD)/Debug/gmwat 32 1 1 1024 1 1024 1000 250 --gmwat-stats=127
endif

#
# Configuration: Release
#
ifeq "$(CFG)" "Release"
OUTDIR=Release
OUTFILE=$(OUTDIR)/gmwat
CFG_INC=
CFG_LIB=-Wl,-static -lboost_thread -Wl,-call_shared  -Wl,-static -lrt -Wl,-call_shared
CFG_OBJ=
COMMON_OBJ=$(OUTDIR)/app_synthetic.o $(OUTDIR)/gmwat.o 
OBJ=$(COMMON_OBJ) $(CFG_OBJ)
ALL_OBJ=$(OUTDIR)/app_synthetic.o $(OUTDIR)/gmwat.o 

COMPILE=$(CXX) -c -O3  -g -Wall -o "$(OUTDIR)/$(*F).o" $(CFG_INC) "$<" $(CONDEFS)
COMPILEC=$(CC) -c -O3  -g -Wall -o "$(OUTDIR)/$(*F).o" $(CFG_INC) "$<" $(CONDEFS)
LINK=$(CXX) -O3  -g -Wall -o "$(OUTFILE)" $(ALL_OBJ) $(CFG_LIB)

# Pattern rules
$(OUTDIR)/%.o : %.cpp
	$(COMPILE)

$(OUTDIR)/%.o : %.c
	$(COMPILEC)

# Build rules
all: $(OUTFILE)

$(OUTFILE): $(OUTDIR)  $(OBJ)
	$(LINK)

$(OUTDIR):
	$(MKDIR) -p "$(OUTDIR)"

# Rebuild this project
rebuild: cleanall all

# Clean this project
clean:
	$(RM) -f $(OUTFILE)
	$(RM) -f $(OBJ)

# Clean this project and all dependencies
cleanall: clean

execute: $(PWD)/Debug/gmwat machines
	mpirun -n 2 -hostfile machines $(PWD)/Debug/gmwat 32 1 1 1024 1 1024 1000 250 --gmwat-stats=127
endif



