| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- # common settings
- TARGETDIR := build
- PRFX_PATH ?= ~/opt/iterative_point_recovery
- OCLH_PATH ?= ~/opt/oclh
- RM := rm -rf
- SRCDIR := src
- C_SRCS := $(wildcard $(SRCDIR)/*.clc)
- # host settings
- CC := gcc
- LINKER := gcc
- CFLAGS := -xc -std=c11 -pedantic -Wall -Wextra -Wconversion
- LDFLAGS :=
- OUTPUTFLAGS := -c -fmessage-length=0
- MISCFLAGS := -pthread
- INCLUDES := -I"src/include_hd/"
- LIBS := -lm
- HOST_OBJS := $(patsubst $(SRCDIR)/%.clc,$(TARGETDIR)/%.o,$(C_SRCS))
- C_DEPS := $(wildcard $(TARGETDIR)/*.d)
- IPR_HOST_LIBRARY_NAME := libIterPntRcv.so
- MODEFLAGS := -O3
- # GPGPU settings
- # GPGPU_DEV_IDX := 0
- OCL_CC := $(OCLH_PATH)/bin/oclh_cr
- OCL_LINKER := $(OCLH_PATH)/bin/oclh_lr
- OCL_CFLAGS := -cl-std=CL1.2 -Werror
- OCL_LDFLAGS :=
- OCL_OUTPUTFLAGS := --verbatim-output-name
- OCL_INCLUDES:= -I src/include_hd/ \
- -I $(OCLH_PATH)/include/include_d/ \
- -I $(OCLH_PATH)/include/include_hd/
- OCL_OBJS := $(patsubst $(SRCDIR)/%.clc,$(TARGETDIR)/%.clo,$(C_SRCS))
- IPR_OCL_LIBRARY_NAME := libIterPntRcv
- # intermediate targets
- $(TARGETDIR)/%.o: $(SRCDIR)/%.clc
- mkdir -p $(TARGETDIR); \
- $(CC) $(INCLUDES) $(MODEFLAGS) $(CFLAGS) $(DEFS) $(OUTPUTFLAGS) \
- -fPIC -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
- $(TARGETDIR)/%.clo: $(SRCDIR)/%.clc FORCE
- ifneq ($(strip $(GPGPU_DEV_IDX)),)
- mkdir -p $(TARGETDIR); \
- $(OCL_CC) --dev-idxs=$(GPGPU_DEV_IDX) $(OCL_INCLUDES) \
- $(OCL_MODEFLAGS) $(OCL_CFLAGS) $(OCL_DEFS) $(OCL_OUTPUTFLAGS) \
- -o "$@" "$<"
- endif
- @echo ' '
- all: host_lib opencl_lib
- host_lib: $(HOST_OBJS)
- @echo 'Building target: $@'
- @echo 'Invoking host C Linker'
- $(LINKER) $(LDFLAGS) $(MISCFLAGS) $(LIBS) $(HOST_OBJS) \
- -shared -Wl,-soname,$(IPR_HOST_LIBRARY_NAME) \
- -o "$(TARGETDIR)/$(IPR_HOST_LIBRARY_NAME)"
- @echo 'Finished building target: $@'
- @echo ' '
- opencl_lib: $(OCL_OBJS)
- ifneq ($(strip $(GPGPU_DEV_IDX)),)
- @echo 'Building target: $@'
- @echo 'Invoking OpenCL C Linker'
- $(OCL_LINKER) --dev-idxs=$(GPGPU_DEV_IDX) $(OCL_LDFLAGS) \
- -create-library -o $(TARGETDIR)/$(IPR_OCL_LIBRARY_NAME) \
- $(OCL_OBJS)
- @echo 'Finished building target: $@'
- endif
- @echo ' '
- debug: MODEFLAGS := -O0 -g3
- debug: OCL_MODEFLAGS := -g
- debug: host_lib opencl_lib
- install:
- mkdir -p $(PRFX_PATH)/lib
- cp $(TARGETDIR)/$(IPR_HOST_LIBRARY_NAME) $(PRFX_PATH)/lib
- ocllibs=($(TARGETDIR)/$(IPR_OCL_LIBRARY_NAME)*.clso) ;\
- if [ -f "$${ocllibs[0]}" ]; then \
- cp $(TARGETDIR)/$(IPR_OCL_LIBRARY_NAME)*.clso $(PRFX_PATH)/lib;\
- fi
- mkdir -p $(PRFX_PATH)/include_hd
- cp $(SRCDIR)/include_hd/* $(PRFX_PATH)/include_hd
- cd $(PRFX_PATH)/lib ; \
- ln -fs $(IPR_HOST_LIBRARY_NAME) $(IPR_HOST_LIBRARY_NAME).0 ; \
- ln -fs $(IPR_HOST_LIBRARY_NAME) $(IPR_HOST_LIBRARY_NAME).0.0
- uninstall:
- $(RM) $(PRFX_PATH)/lib/$(IPR_HOST_LIBRARY_NAME) \
- $(PRFX_PATH)/lib/$(IPR_OCL_LIBRARY_NAME)*.clso $(PRFX_PATH)/lib \
- $(PRFX_PATH)/include_hd/* $(PRFX_PATH)/include_hd $(PRFX_PATH)
- clean:
- $(RM) *.log $(TARGETDIR)/*.log \
- $(HOST_OBJS) $(OCL_OBJS) $(C_DEPS) \
- $(TARGETDIR)/$(IPR_HOST_LIBRARY_NAME)* \
- $(TARGETDIR)/$(IPR_OCL_LIBRARY_NAME)*.clso
- @echo ' '
- FORCE: ;
- .PHONY: clean debug stable
|