diff --git a/Makefile b/Makefile
index ae776dd0b39ae30fe964648920e63a2a233bdb03..beff62095fb9de10d28166eac6e020fde2d42266 100644
--- a/Makefile
+++ b/Makefile
@@ -1,11 +1,16 @@
 default: linux
 
-linux:
-	$(MAKE) -C src
-	$(MAKE) -C example
+linux: static shared sample
+
+macos: linux
+
+static:
+	$(MAKE) -C src static
+
+shared:
+	$(MAKE) -C src shared
 
-macos:
-	$(MAKE) -C src
+sample:
 	$(MAKE) -C example
 
 win32:
diff --git a/example/Makefile b/example/Makefile
index 9fc9cf595d6c2787660d9fd2cea0a53bd1c5c56d..1d7e4b42758b256c1ee2e83c2cd0a378b2c2fdab 100644
--- a/example/Makefile
+++ b/example/Makefile
@@ -5,7 +5,19 @@ CXX ?= g++
 
 TARGET = clfft_example
 
-CXXFLAGS += -O3 -Wall -g -I$(NVIDIA_SDK_INSTALL_PATH)/OpenCL/common/inc -I$(AMDAPPSDKROOT)/include -I../include
+ifndef OPENCL_INCLUDE
+ifdef CUDA_INSTALL_PATH
+OPENCL_INCLUDE = $(CUDA_INSTALL_PATH)/include
+endif
+ifdef OPENCL_INSTALL_PATH
+OPENCL_INCLUDE = $(OPENCL_INSTALL_PATH)/include
+endif
+endif
+ifndef OPENCL_INCLUDE
+OPENCL_INCLUDE = $(AMDAPPSDKROOT)/include -I$(NVIDIA_SDK_INSTALL_PATH)/OpenCL/common/inc
+endif
+
+CXXFLAGS += -O3 -Wall -g -I$(OPENCL_INCLUDE) -I../include -fPIC
 LDFLAGS += $(PWD)/../lib/libclfft.a
 
 OS = $(shell uname -s)
diff --git a/src/Makefile b/src/Makefile
index 6651b74ebffc79bc5c0cd7308028c75eaacd27a8..fca56f0a95e5fce0b2932a8c199640133ed9a959 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -3,25 +3,45 @@ AMDAPPSDKROOT ?= /opt/AMDAPP
 CXX ?= g++
 AR ?= ar
 
-TARGET = libclfft.a
-TARGET2 = libclfft.so
+TARGET = libeclfft.a
+TARGET2 = libeclfft.so
 
-CXXFLAGS += -O3 -Wall -g -I$(NVIDIA_SDK_INSTALL_PATH)/OpenCL/common/inc -I$(AMDAPPSDKROOT)/include -I../include -fPIC
+ifndef OPENCL_INCLUDE
+ifdef CUDA_INSTALL_PATH
+OPENCL_INCLUDE = $(CUDA_INSTALL_PATH)/include
+endif
+ifdef OPENCL_INSTALL_PATH
+OPENCL_INCLUDE = $(OPENCL_INSTALL_PATH)/include
+endif
+endif
+ifndef OPENCL_INCLUDE
+OPENCL_INCLUDE = $(AMDAPPSDKROOT)/include -I$(NVIDIA_SDK_INSTALL_PATH)/OpenCL/common/inc
+endif
+
+CXXFLAGS += -O3 -Wall -g -I$(OPENCL_INCLUDE) -I../include -fPIC
 OS = $(shell uname -s)
 ifeq ($(OS), Darwin)
 	CXXFLAGS += -I/System/Library/Frameworks
+	LDFLAGS += -framework OpenCL
 endif
 
 OBJECTS = fft_setup.o fft_execute.o fft_kernelstring.o
 
 PREFIX ?= "."
 
+default: static shared
+
+static: $(TARGET)
+
+shared: $(TARGET2)
+
 $(TARGET): $(OBJECTS)
 	$(AR) rcs $(TARGET) $(OBJECTS)
-	$(CXX) -shared -o $(TARGET2) $(OBJECTS)
 	mkdir -p ../lib
-	cp $(TARGET) ../lib/
-	cp $(TARGET2) ../lib/
+	cp $(TARGET) ../lib/libclfft.a
+
+$(TARGET2): $(OBJECTS)
+	$(CXX) $(LDFLAGS) -shared -o $(TARGET2) $(OBJECTS)
 
 fft_setup.o: fft_setup.cpp fft_internal.h fft_base_kernels.h
 	$(CXX) $(CXXFLAGS) -c fft_setup.cpp
@@ -32,12 +52,10 @@ fft_execute.o: fft_execute.cpp ../include/clFFT.h fft_internal.h
 fft_kernelstring.o: fft_kernelstring.cpp ../include/clFFT.h fft_internal.h
 	$(CXX) $(CXXFLAGS) -c fft_kernelstring.cpp
 
-install: $(TARGET) ../include/clFFT.h
+install: ../include/clFFT.h libeclfft.*
 	mkdir -p $(PREFIX)/lib $(PREFIX)/include
 	cp  ../include/clFFT.h $(PREFIX)/include/eclfft.h
-	cp  $(TARGET) $(PREFIX)/lib/libeclfft.a
-	cp  $(TARGET2) $(PREFIX)/lib/libeclfft.so
+	cp  libeclfft.* $(PREFIX)/lib/
 
 clean:
-	rm -f *.o
-	rm -f *.a
+	rm -f *.o *.a *.so
diff --git a/src/Makefile.mingw b/src/Makefile.mingw
index 1f7e6e48eddddca80bf120eb459f6ca88f6331b2..9ba45e9568ab854202df6ede4e45ab286c7ca8b9 100644
--- a/src/Makefile.mingw
+++ b/src/Makefile.mingw
@@ -3,7 +3,7 @@ AMDAPPSDKROOT ?= /opt/AMDAPP
 CXX ?= i586-mingw32msvc-g++
 AR ?= i586-mingw32msvc-ar
 
-TARGET = libclfft.a
+TARGET = libeclfft.a
 
 CXXFLAGS += -O3 -Wall -g -I$(NVIDIA_SDK_INSTALL_PATH)/OpenCL/common/inc -I$(AMDAPPSDKROOT)/include -I../include