Makefile 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. -include makefile.init
  2. #-include makefile.defs
  3. RM := rm -rf
  4. CC := gcc
  5. LINKER := gcc
  6. CFLAGS := -std=c11 -pedantic -Wall -Wextra -Wconversion
  7. LDFLAGS := -L/usr/local/cuda/lib64 -L/opt/intel/opencl/lib64
  8. OUTPUTFLAGS := -c -fmessage-length=0
  9. MISCFLAGS := -pthread
  10. INCLUDES := -I"src/include_h/" -I"src/include_hd/" \
  11. -I"/usr/local/cuda/include"
  12. DEFS :=
  13. # for debug
  14. MODEFLAGS := -O0 -g3
  15. TARGETDIR := build/Debug
  16. # for release
  17. ### MODEFLAGS := -O3
  18. ### TARGETDIR := build/Release
  19. # All of the sources participating in the build are defined here
  20. # -include sources.mk
  21. OBJS :=
  22. C_DEPS :=
  23. # Every subdirectory with source files must be described here
  24. SRCDIR := src
  25. # -include subdir.mk
  26. # Add inputs and outputs from these tool invocations to the build variables
  27. C_SRCS += $(wildcard $(SRCDIR)/*.c)
  28. #OBJS += $(wildcard $(TARGETDIR)/*.o)
  29. OBJS += $(patsubst $(SRCDIR)/%.c,$(TARGETDIR)/%.o,$(C_SRCS))
  30. C_DEPS += $(wildcard $(TARGETDIR)/*.d)
  31. OCLH_BUILDER_NAME := oclh_br
  32. OCLH_COMPILER_NAME := oclh_cr
  33. OCLH_LINKER_NAME := oclh_lr
  34. OCLH_LIBRARY_NAME := liboclh.so
  35. # Each subdirectory must supply rules for building sources it contributes
  36. $(TARGETDIR)/%.o: $(SRCDIR)/%.c
  37. @echo 'Building file: $<'
  38. @echo 'Invoking: GCC C Compiler'
  39. mkdir -p $(TARGETDIR); \
  40. $(CC) $(INCLUDES) $(MODEFLAGS) $(CFLAGS) $(DEFS) $(OUTPUTFLAGS) \
  41. -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" \
  42. -o "$@" "$<"
  43. @echo 'Finished building: $<'
  44. @echo ' '
  45. # -include objects.mk
  46. USER_OBJS :=
  47. LIBS := -lOpenCL
  48. ifneq ($(MAKECMDGOALS),clean)
  49. ifneq ($(strip $(C_DEPS)),)
  50. -include $(C_DEPS)
  51. endif
  52. endif
  53. # Add inputs and outputs from these tool invocations to the build variables
  54. # All Target
  55. all: oclh_builder
  56. # Tool invocations
  57. oclh_builder: DEFS= -D__OCLH_BUILDER_FLAG -D__OCLH_BUILD_LOG_TO_STDOUT_FLAG
  58. oclh_builder: OUTPUTNAME=$(OCLH_BUILDER_NAME)
  59. oclh_builder: $(OBJS) $(USER_OBJS)
  60. @echo 'Building target: $@'
  61. @echo 'Invoking C Linker'
  62. $(LINKER) $(LDFLAGS) $(MISCFLAGS) $(LIBS) \
  63. -o "$(TARGETDIR)/$(OUTPUTNAME)" $(OBJS) $(USER_OBJS)
  64. @echo 'Finished building target: $@'
  65. @echo ' '
  66. # Other Targets
  67. clean:
  68. $(RM) $(OBJS)$(C_DEPS) \
  69. $(TARGETDIR)/$(OCLH_BUILDER_NAME) \
  70. $(TARGETDIR)/$(OCLH_COMPILER_NAME) \
  71. $(TARGETDIR)/$(OCLH_LINKER_NAME) \
  72. $(TARGETDIR)/$(OCLH_LIBRARY_NAME)
  73. @echo ' '
  74. .PHONY: all clean dependents
  75. -include makefile.targets