NVCC ?= nvcc CXX ?= g++ ARCH ?= sm_86 CXXFLAGS = -O3 -std=c++17 -Wall -pthread -fPIC -Iinclude -Isrc NVCCFLAGS = -O3 -std=c++14 -arch=$(ARCH) --use_fast_math -Xcompiler -fPIC,-Wall -Iinclude -Isrc LIB_DIR = lib BIN_DIR = bin BUILD_DIR = build SHARED_LIB = $(LIB_DIR)/libcudaslicer_offset.so STATIC_LIB = $(LIB_DIR)/libcudaslicer_offset.a BENCH_BIN = $(BIN_DIR)/gpu_slicer_c_bench all: $(SHARED_LIB) $(STATIC_LIB) $(BENCH_BIN) $(BUILD_DIR)/gpu_offset.o: src/gpu_offset.cu include/gpu_offset.h src/cpu_offset.h src/vectorizer.h | $(BUILD_DIR) $(NVCC) $(NVCCFLAGS) -c $< -o $@ $(BUILD_DIR)/cpu_offset.o: src/cpu_offset.cpp src/cpu_offset.h src/vectorizer.h include/gpu_offset.h | $(BUILD_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ $(BUILD_DIR)/stl_slicer.o: src/stl_slicer.cpp src/stl_slicer.h include/gpu_offset.h | $(BUILD_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ $(BUILD_DIR)/main_bench.o: src/main_bench.cpp src/stl_slicer.h include/gpu_offset.h | $(BUILD_DIR) $(CXX) $(CXXFLAGS) -c $< -o $@ $(SHARED_LIB): $(BUILD_DIR)/gpu_offset.o $(BUILD_DIR)/cpu_offset.o | $(LIB_DIR) $(NVCC) -shared -arch=$(ARCH) -o $@ $^ -lcudart $(STATIC_LIB): $(BUILD_DIR)/gpu_offset.o $(BUILD_DIR)/cpu_offset.o | $(LIB_DIR) ar rcs $@ $^ $(BENCH_BIN): $(BUILD_DIR)/main_bench.o $(BUILD_DIR)/stl_slicer.o $(SHARED_LIB) | $(BIN_DIR) $(CXX) $(CXXFLAGS) $(BUILD_DIR)/main_bench.o $(BUILD_DIR)/stl_slicer.o -L$(LIB_DIR) -lcudaslicer_offset -lcudart -Wl,-rpath,'$$ORIGIN/../lib' -o $@ $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR): mkdir -p $@ clean: rm -rf $(BUILD_DIR) $(LIB_DIR) $(BIN_DIR) .PHONY: all clean