Makefile 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. # Names of target, sources and object files
  2. BIN = benchmark
  3. SRC = timer.c utilities.c benchmark.c opencl_fft.c
  4. # Dependencies
  5. DEP_OCLFFT = .deps/oclfft/src/liboclfft.so
  6. DEP_CLFFT = .deps/clFFT/src/library/libclFFT.so
  7. DEPS = $(DEP_OCLFFT) $(DEP_CLFFT)
  8. # Debug mode
  9. CC_MARK := @
  10. ifeq ($(V), 1)
  11. override CC_MARK =
  12. endif
  13. # Libs titiles
  14. LIBS_MSG =
  15. # Common flags definition
  16. CPPFLAGS =
  17. CFLAGS ?= -O3 -Wall -Werror -Wno-unused-variable -fmessage-length=0
  18. CFLAGS += -std=c99
  19. LDFLAGS += -lm -lOpenCL
  20. ifneq ($(CUDA_PATH),)
  21. override CPPFLAGS += -DHAVE_CUDA_FFT
  22. override CFLAGS += -I$(CUDA_PATH)/include
  23. override LDFLAGS += -L$(CUDA_PATH)/lib$(ARCH) -lcufft -lcudart -Wl,-rpath=$(CUDA_PATH)/lib$(ARCH)
  24. override LIBS_MSG += " +cuda"
  25. override SRC += $(wildcard cuda*.c)
  26. endif
  27. # AMD FFT library
  28. override DEPS += $(DEP_CLFFT)
  29. override CFLAGS += -I.deps/clFFT/src/include -DHAVE_AMD_FFT
  30. override LDFLAGS += -L.deps/clFFT/src/library -lclFFT -Wl,-rpath=.deps/clFFT/src/library
  31. override LIBS_MSG += " +amd"
  32. # Apple FFT library
  33. override CPPFLAGS += -DHAVE_APPLE_FFT
  34. override CFLAGS += -I.deps/
  35. override LDFLAGS += -L.deps/oclfft/src -loclfft -Wl,-rpath=.deps/oclfft/src
  36. override LIBS_MSG += " +apple"
  37. # FFTW library
  38. FFTW_EXISTS = $(shell pkg-config --exists fftw3 && echo "1" || echo "0")
  39. ifeq ($(FFTW_EXISTS),1)
  40. override CPPFLAGS += -DHAVE_FFTW
  41. override CFLAGS += $(shell pkg-config --cflags fftw3)
  42. override LDFLAGS += $(shell pkg-config --libs fftw3)
  43. override LIBS_MSG += " +fftw"
  44. override SRC += $(wildcard cpu*.c)
  45. endif
  46. ALL_CPPFLAGS :=
  47. ALL_CFLAGS :=
  48. ALL_LDFLAGS :=
  49. override ALL_CFLAGS += $(CFLAGS)
  50. override ALL_LDFLAGS += $(LDFLAGS)
  51. override ALL_CPPFLAGS += $(CPPFLAGS)
  52. OBJS = $(subst .c,.o,$(SRC))
  53. .PHONY: all clean distclean run
  54. all: $(BIN)
  55. %.o: %.c Makefile $(DEPS)
  56. @echo [CC] $@
  57. $(CC_MARK)$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c $< -o $@
  58. $(BIN): $(OBJS) $(DEPS)
  59. @echo [LD] $@
  60. $(CC_MARK)$(CC) $(OBJS) -o $@ $(ALL_LDFLAGS)
  61. @echo " built with:$(LIBS_MSG)"
  62. run: $(BIN)
  63. @echo "Run benchmark"
  64. @./benchmark
  65. clean:
  66. rm -f $(BIN) $(OBJS)
  67. distclean:
  68. rm -rf .deps
  69. $(DEP_OCLFFT):
  70. @mkdir -p .deps
  71. @git clone http://ufo.kit.edu/git/oclfft .deps/oclfft
  72. @cd .deps/oclfft; cmake .; make; ln -s src/clFFT.h clFFT.h
  73. $(DEP_CLFFT):
  74. @mkdir -p .deps
  75. @git clone https://github.com/clMathLibraries/clFFT .deps/clFFT
  76. @cd .deps/clFFT/src; AMDAPPSDKROOT="" cmake . -DOPENCL_ROOT=/usr; AMDAPPSDKROOT="" make