# The sample code to compute entropy for a vector field
cmake_minimum_required (VERSION 3.19)
project (deformation LANGUAGES CXX CUDA)

SET(CUDA_SEPARABLE_COMPILATION ON)
# find_package(CUDA REQUIRED)
find_package(CUDAToolkit)
find_package(Qt5OpenGL REQUIRED)
find_package(Qt5Widgets REQUIRED) 
find_package(OpenGL REQUIRED)
#find_package(GLEW REQUIRED)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(QT_USE_QTOPENGL TRUE)


# specify the path to the headers
include_directories(
	. 
#	${CUDA_SDK_ROOT_DIR}/common/inc
#	${CUDA_SDK_ROOT_DIR}/Common
#${OpenGL_INCLUDE_DIR} # NATHAN: Incorrect case (should be all capitals)?
  ${OPENGL_INCLUDE_DIR}
  ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
	)

if(UNIX)
	SET( CUDA_PROPAGATE_HOST_FLAGS OFF )
endif(UNIX)

list( APPEND CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")# -g -ftest-coverage -fprofile-arcs")
# list(APPEND CUDA_NVCC_FLAGS "-arch=sm_20;-std=c++11;-O2;-DVERBOSE")

# specify the path to the libraries
link_directories(
#	${CUDA_TOOLKIT_INCLUDE}
${OPENGL_EGL_INCLUDE_DIRS}
)


# build the project as a library
#cuda_add_executable(${PROJECT_NAME} 
add_executable(${PROJECT_NAME} 
#	LineRendererInOpenGLDeform.h
#	LineRendererInOpenGLDeform.cpp
	helper_math.h
	StreamDeform.h
	shaderprogram.h
#	ColorPalette.h
	defines.h
#	Ellipse.h
	TransformMgr.h
	exception.h
	helper_timer.h
	glwidget.h
	glwidget.cpp
	window.h
	window.cpp
	Rotation.h
	Rotation.cpp
	Trackball.h
	Trackball.cpp
	QuatVector.h
	QuatVector.cpp
	Tracer.h
	Tracer.cpp
	DataMgr.h
	DataMgr.cpp
	main.cpp
  PolyTracer.h
	PolyTracer.cpp
	GLPolyTracer.h
	GLPolyTracer.cpp
  TexPlaneTracer.h
  TexPlaneTracer.cpp
  GLTexPlaneTracer.h
  GLTexPlaneTracer.cpp
	LineTracer.h
	LineTracer.cpp
	GLLineTracer.h
	GLLineTracer.cpp
	LineReader.h
	LineReader.cpp
	StreamDeform.cu
	Curtain.h
	Curtain.cu
	GLLensTracer.h
	GLLensTracer.cpp
	cuda_math.h
	MeshReader.h
	MeshReader.cpp
	VolumeReader.h
	VolumeReader.cpp
	DTIVolumeReader.h
	DTIVolumeReader.cpp
	eig3.h
	GLSlice2DWidget.h
	GLSlice2DWidget.cpp
)

	
qt5_use_modules(${PROJECT_NAME} Widgets)

file(COPY config.txt DESTINATION  ${CMAKE_BINARY_DIR})

if (WIN32)
	target_link_libraries(${PROJECT_NAME}  ${OPENGL_gl_LIBRARY}) #${GLEW_LIBRARIES} ) #GL
endif (WIN32)
if (UNIX) # WARNING: This will evaluate to true on Mac, but Mac is currently unsupported.
  target_link_libraries(${PROJECT_NAME} ${QT_LIBRARIES} ${OPENGL_opengl_LIBRARY}) #${GLEW_LIBRARIES} ) #GL
endif(UNIX)

set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_property(TARGET ${PROJECT_NAME} PROPERTY CUDA_ARCHITECTURES 75)
