head	1.3;
access;
symbols;
locks
	johns:1.3; strict;
comment	@# @;


1.3
date	2010.03.23.18.57.29;	author johns;	state Exp;
branches;
next	1.2;

1.2
date	2010.03.23.18.48.53;	author johns;	state Exp;
branches;
next	1.1;

1.1
date	2010.02.17.04.19.17;	author johns;	state Exp;
branches;
next	;


desc
@@


1.3
log
@improve linkage behavior for AMD builds
@
text
@# CUDA and OpenCL Makefile

default:
	@@echo "Choose a build target:"
	@@echo "------------------------------------------------"
	@@echo "linux-amd-32     x86 CPUs and AMD/ATI GPUs      "
	@@echo "linux-amd-64     x86 CPUs and AMD/ATI GPUs      "
	@@echo "linux-ibm-32     Power CPUs and Cell processors "
	@@echo "linux-nvidia-32  NVIDIA GPUs                    "
	@@echo "linux-nvidia-64  NVIDIA GPUs                    "
	@@echo "macosx-32        x86 CPUs, various GPUs         "
	@@echo "macosx-64        x86 CPUs, various GPUs         "

#ATIOPENCLHOME32 = /Projects/vmd/opencl/amd/ati-stream-sdk-v2.0-beta4-lnx32
#ATIOPENCLHOME64 = /Projects/vmd/opencl/amd/ati-stream-sdk-v2.0-beta4-lnx64
#ATIOPENCLHOME32 = /opt/ati-stream-sdk-v2.01-rhel32
ATIOPENCLHOME32 = /opt/ati-stream-sdk-v2.01-rhel64
ATIOPENCLHOME64 = /opt/ati-stream-sdk-v2.01-rhel64

#CUDAHOME     = /usr/local/cuda
#CUDAHOME    = /usr/local/encap/cuda-2.3
CUDAHOME    = /usr/local/encap/cuda-3.0
CUDACC      = $(CUDAHOME)/bin/nvcc
CUDAINCS    = -I. -I$(CUDAHOME)/common/inc -DUNIX


linux-amd-32:
	$(MAKE) all \
	"OPENCLINC  = -I$(ATIOPENCLHOME32)/include" \
	"OPENCLLIBS = -L$(ATIOPENCLHOME32)/lib/x86 -lOpenCL" \
	"CC = gcc" \
	"CFLAGS = -m32 -O -g" \
	"CXX = g++" \
	"CXXFLAGS = -m32 -O -g" \
	"CXXLFLAGS = -lm -Wl,-rpath,$(ATIOPENCLHOME32)/lib/x86"

linux-amd-64:
	$(MAKE) all \
	"OPENCLINC  = -I$(ATIOPENCLHOME64)/include" \
	"OPENCLLIBS = -L$(ATIOPENCLHOME64)/lib/x86_64 -lOpenCL" \
	"CC = gcc" \
	"CFLAGS = -m64 -O -g" \
	"CXX = g++" \
	"CXXFLAGS = -m64 -O -g" \
	"CXXLFLAGS = -lm -Wl,-rpath,$(ATIOPENCLHOME64)/lib/x86_64"

linux-ibm-32:
	$(MAKE) all \
	"OPENCLINC  = -I/usr/include/CL/inc" \
	"OPENCLLIBS = -lCL" \
	"CC = gcc" \
	"CFLAGS = -m32 -O -g" \
	"CXX = g++" \
	"CXXFLAGS = -m32 -O -g" \
	"CXXLFLAGS = -lm"

#
# No 64-bit IBM OpenCL libs yet?
#
# linux-ibm-64:
#       $(MAKE) all \
#       "OPENCLINC  = -I/usr/include/CL/inc" \
#       "OPENCLLIBS = -lCL" \
#       "CC = gcc" \
#       "CFLAGS = -m64 -O -g" \
#       "CXX = g++" \
#       "CXXFLAGS = -m64 -O -g" \
#       "CXXLFLAGS = -lm"

linux-nvidia-32:
	$(MAKE) all \
	"OPENCLINC  = -I/usr/include/CL/inc" \
	"OPENCLLIBS = -lOpenCL" \
	"CUDAOBJS = CUDAOrbital.o" \
        "CUDACCFLAGS = --machine 32 --ptxas-options=-v -O3 -Xcompiler $(CUDAINCS)" \
	"CUDALIBS = -L$(CUDAHOME)/lib -lcudart" \
	"CC = gcc" \
	"CFLAGS = -m32 -O -g -DCUDA" \
	"CXX = g++" \
	"CXXFLAGS = -m32 -O -g -DCUDA" \
	"CXXLFLAGS = -lm -Wl,-rpath,$(CUDAHOME)/lib"

linux-nvidia-64:
	$(MAKE) all \
	"OPENCLINC  = -I/usr/include/CL/inc" \
	"OPENCLLIBS = -lOpenCL" \
	"CUDAOBJS = CUDAOrbital.o" \
        "CUDACCFLAGS = --machine 64 --ptxas-options=-v -O3 -Xcompiler $(CUDAINCS)" \
	"CUDALIBS = -L$(CUDAHOME)/lib64 -lcudart" \
	"CC = gcc" \
	"CFLAGS = -m64 -O -g -DCUDA" \
	"CXX = g++" \
	"CXXFLAGS = -m64 -O -g -DCUDA" \
	"CXXLFLAGS = -lm -Wl,-rpath,$(CUDAHOME)/lib64"

macosx-32:
	$(MAKE) all \
	"OPENCLINC  = " \
	"OPENCLLIBS = -framework OpenCL" \
	"CC = gcc" \
	"CFLAGS = -m32 -O -g" \
	"CXX = g++" \
	"CXXFLAGS = -m32 -O -g" \
	"CXXLFLAGS = -lm"

macosx-64:
	$(MAKE) all \
	"OPENCLINC  = " \
	"OPENCLLIBS = -framework OpenCL" \
	"CC = gcc" \
	"CFLAGS = -m64 -O -g" \
	"CXX = g++" \
	"CXXFLAGS = -m64 -O -g" \
	"CXXLFLAGS = -lm"

#CUDAOBJS = CUDAOrbital.o
OPENCLOBJS = OpenCLOrbital.o OpenCLUtils.o
OBJS     = WKFThreads.o WKFUtils.o main.o
BINS     = clorbital

all: $(BINS)

.SUFFIXES: .C .c .cu ..c .i .o

.cu.o:
	$(CUDACC) $(CUDACCFLAGS) -c $<
.c.o:
	$(CC) $(CCFLAGS) $(OPENCLINC) -c $<
.C.o:
	$(CXX) $(CXXFLAGS) $(OPENCLINC) -c $<

clorbital: $(OPENCLOBJS) $(CUDAOBJS) $(OBJS)
	$(CXX) $(CXXFLAGS) $(OPENCLOBJS) $(CUDAOBJS) $(OBJS) -o $@@ $(CXXLFLAGS) $(OPENCLLIBS)  $(CUDALIBS)

clean:	
	rm -f $(OPENCLOBJS) CUDAOrbital.o $(CUDAOBJS) $(OBJS) $(BINS) *.cubin *.ptx *.linkinfo

@


1.2
log
@build on all platforms
@
text
@d16 2
a17 1
ATIOPENCLHOME32 = /opt/ati-stream-sdk-v2.01-rhel32
d35 1
a35 1
	"CXXLFLAGS = -lm"
d45 1
a45 1
	"CXXLFLAGS = -lm"
@


1.1
log
@Initial revision
@
text
@d1 1
a1 1
# CUDA makefile
d5 13
a17 4
	@@echo "-------------------------------------------"
	@@echo "linux-ati"
	@@echo "linux-cell"
	@@echo "linux-nvidia"
d19 18
a36 1
linux-ati:
d38 2
a39 2
	"OPENCLINC  = -I/lusers/tcbg/opencl/ati-stream-sdk-v2.0-beta4-lnx32/include" \
	"OPENCLLIBS = -L/lusers/tcbg/opencl/ati-stream-sdk-v2.0-beta4-lnx32/lib/x86 -lOpenCL" \
d41 1
a41 1
	"CFLAGS = -m32 -O -g -DBUILD_STANDALONE" \
d43 1
a43 1
	"CXXFLAGS = -m32 -O -g -DBUILD_STANDALONE" \
d46 1
a46 1
linux-cell:
d51 1
a51 1
	"CFLAGS = -m32 -O -g -DBUILD_STANDALONE" \
d53 1
a53 1
	"CXXFLAGS = -m32 -O -g -DBUILD_STANDALONE" \
d56 14
a69 1
linux-nvidia:
d71 2
d74 10
a83 1
	"CUDALIBS = -L$(CUDAHOME)/lib64 -lcudart" \
d86 13
d100 1
a100 1
	"CFLAGS = -m64 -O -g -DBUILD_STANDALONE -DCUDA" \
d102 1
a102 1
	"CXXFLAGS = -m64 -O -g -DBUILD_STANDALONE -DCUDA" \
d105 9
a113 5
#CUDAHOME     = /usr/local/cuda
CUDAHOME    = /usr/local/encap/cuda-2.3
CUDACC      = $(CUDAHOME)/bin/nvcc
CUDAINCS    = -I. -I$(CUDAHOME)/common/inc -DUNIX
CUDACCFLAGS = --machine 64 --ptxas-options=-v -O3 -Xcompiler $(CUDAINCS)
d116 1
a116 1
OPENCLOBJS = OpenCLOrbital.o
d135 1
a135 1
	rm -f $(OPENCLOBJS) $(CUDAOBJS) $(OBJS) $(BINS) *.cubin *.ptx *.linkinfo
@
