CC=hipcc -fgpu-sanitize -fsanitize-thread-memory-access -fsanitize-stats -munsafe-fp-atomics
LNK=hipcc
OPT=
CXXFLAGS= -D__HIP_PLATFORM_HCC___ -Wno-unused-result --amdgpu-target=gfx90a -I/pfs/lustrep1/users/kpapadak/bins/googletest/googletest/include -L/pfs/lustrep1/users/kpapadak/bins/googletest/build/lib
EXTRA= -g3  --std=c++17
EXTRA+=
EXTRA+=  -DHASHMAPDEBUG
GTEST=-lgtest  -lpthread
OBJ= gtest_vec_host.o   gtest_vec_device.o  gtest_hashmap.o  delete_mechanism.o insertion_mechanism.o hybrid_cpu.o hybrid_gpu.o pointer_test.o

default: tests
tests: ${OBJ}

clean:
	rm  ${OBJ}
allclean:
	rm ${OBJ} &
	rm gtestvechost &
	rm gtestvecdevice &
	rm gtest_hashmap &
	rm compaction &
	rm delete_mechanism &
	rm hybrid_cpu &
	rm hybrid_gpu &
	rm pointertest &
	rm insertion

gtest_hashmap.o: hashmap_unit_test/main.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST}  -o gtest_hashmap hashmap_unit_test/main.cu

gtest_vec_host.o: gtest_vec_host/vec_test.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o gtestvechost gtest_vec_host/vec_test.cu

gtest_vec_device.o: gtest_vec_device/vec_test.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o gtestvecdevice gtest_vec_device/vec_test.cu

stream_compaction.o: stream_compaction/race.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o compaction stream_compaction/race.cu

delete_mechanism.o: delete_by_compaction/main.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o delete_mechanism delete_by_compaction/main.cu

insertion_mechanism.o: insertion_mechanism/main.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o insertion insertion_mechanism/main.cu

pointer_test.o: pointer_test/main.cu
	${CC} ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o pointertest pointer_test/main.cu

hybrid_gpu.o: hybrid/main.cpp
	${CC} -x cu  ${CXXFLAGS} ${OPT} ${EXTRA} ${GTEST} -o hybrid_gpu hybrid/main.cpp

hybrid_cpu.o: hybrid/main.cpp
	g++ -fsanitize=address -fno-omit-frame-pointer ${CXXFLAGS} -O3  -std=c++17 -DSPLIT_HOST_ONLY -DHASHINATOR_HOST_ONLY  -o hybrid_cpu hybrid/main.cpp -I/usr/local/cuda/include/ -L/usr/local/cuda/lib64 -lcudart -lcuda  -lgtest -lgtest_main -lpthread  -Wall  -Wpedantic -Werror -static-libasan
