ifdef VERIFY
override VERIFY = -DVERIFY
endif

ifdef OUTPUT
override OUTPUT = -DOUTPUT
endif

ifdef TIMER
override TIMER = -DTIMER
endif


NVCC        := nvcc
ARCH        := -arch=sm_75   # 按你的 GPU 改


NVCCFLAGS   := $(ARCH) -O2 -Xcompiler -fPIC -lcudart 
OBJDIR      := obj

# ===== target 1 =====
# EXE1        := single_kernel_bucketcount
# SRC1        := single_kernel_bucketcount.cu

# ===== target 2 =====
EXE2        := single_kernel_bucketprefixoffset
SRC2        := single_kernel_bucketprefixoffset.cu

# ===== target 3 =====
EXE3        := single_kernel_bucketsort
SRC3        := single_kernel_bucketsort.cu

# ===== target 4 =====
EXE4        := single_kernel_histogram1024Kernel
SRC4        := single_kernel_histogram1024Kernel.cu

# ===== target 5 =====
EXE5        := single_kernel_mergepack
SRC5        := single_kernel_mergepack.cu

# ===== target 6 =====
# EXE6        := single_kernel_mergeSortFirst
# SRC6        := single_kernel_mergeSortFirst.cu

# ===== target 7 =====
# EXE7        := single_kernel_mergeSortPass
# SRC7        := single_kernel_mergeSortPass.cu



# ===== 默认目标 =====
.PHONY: all clean

all: $(EXE1) $(EXE2) $(EXE3) $(EXE4) $(EXE5) $(EXE6) $(EXE7)

$(EXE1): $(SRC1)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

$(EXE2): $(SRC2)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

$(EXE3): $(SRC3)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

$(EXE4): $(SRC4)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

$(EXE5): $(SRC5)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

$(EXE6): $(SRC6)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

$(EXE7): $(SRC7)
	$(NVCC) $(NVCCFLAGS) -o $@ $^

clean:
	rm -f $(EXE1) $(EXE2) $(EXE3) $(EXE4) $(EXE5) $(EXE6) $(EXE7) 




