CC=/usr/bin/gcc

IPATHS=-I/share/apps/cuda/include -I/share/apps/open-mx/include
LPATHS=-L/share/apps/clOpenCL/src -L/share/apps/open-mx/lib

LIBS=-lm -lpthread -lopen-mx -lOpenCL

FLAGS=-Wall -Werror -pthread -D_STATIC_MAX_PLATFORMS_AND_DEVICES -O0

XLINKER=\
 -Xlinker --wrap=main \
 -Xlinker --wrap=clGetPlatformIDs \
 -Xlinker --wrap=clGetPlatformInfo \
 -Xlinker --wrap=clGetDeviceIDs \
 -Xlinker --wrap=clGetDeviceInfo \
 -Xlinker --wrap=clCreateContext \
 -Xlinker --wrap=clCreateCommandQueue \
 -Xlinker --wrap=clCreateBuffer \
 -Xlinker --wrap=clCreateProgramWithSource \
 -Xlinker --wrap=clBuildProgram \
 -Xlinker --wrap=clCreateKernel \
 -Xlinker --wrap=clSetKernelArg \
 -Xlinker --wrap=clEnqueueNDRangeKernel \
 -Xlinker --wrap=clEnqueueWriteBuffer \
 -Xlinker --wrap=clEnqueueReadBuffer \
 -Xlinker --wrap=clGetEventProfilingInfo

all:: ccl_matrix cl_matrix ccl_matrixRuf cl_matrixRuf
	@echo ++++++++++++++++++++++++++++++++++++++++++++++++++
	@echo do not forget \"source /share/apps/env_clOpenCL...\"
	@echo ++++++++++++++++++++++++++++++++++++++++++++++++++
	rm -f *.o *~

clean::
	rm -f ccl_matrix cl_matrix ccl_matrixRuf cl_matrixRuf
	rm -f *.o *~

ccl_matrix:: cl_matrix.c
	$(CC) $(FLAGS) -o ccl_matrix cl_matrix.c $(IPATHS) $(LPATHS) -lOpenCCL $(LIBS) $(XLINKER)

cl_matrix:: cl_matrix.c
	$(CC) $(FLAGS) -o cl_matrix cl_matrix.c $(IPATHS) $(LPATHS) $(LIBS)

ccl_matrixRuf:: cl_matrixRuf.c
	$(CC) $(FLAGS) -o ccl_matrixRuf cl_matrixRuf.c $(IPATHS) $(LPATHS) -lOpenCCL $(LIBS) $(XLINKER)

cl_matrixRuf:: cl_matrixRuf.c
	$(CC) $(FLAGS) -o cl_matrixRuf cl_matrixRuf.c $(IPATHS) $(LPATHS) $(LIBS)
