INCLUDE_DIRECTORIES(${OpenCL_INCLUDE_DIRS})

IF(MSVC)
	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4251")
ENDIF(MSVC)


SET (HEADER_FILES
	FlexibleDiffusionSolverFE_GPU_OpenCL.h
	OpenCLHelper.h
)
	
SET (KERNEL_FILES
  DiffusionKernel.cl
  common.cl
  ImplicitMatrix.cl
  )
  
SOURCE_GROUP(Kernels FILES
	${KERNEL_FILES})
	

INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/core)

ADD_DEFINITIONS(-DPDESOLVERSGPU_EXPORT_COMPILER_DEFINITION)
ADD_LIBRARY(FlexibleDiffusionSolverFE_OpenCL SHARED 
	${HEADER_FILES}
	${KERNEL_FILES}
	FlexibleDiffusionSolverFE_GPU_OpenCL.cpp
	OpenCLHelper.cpp
)

TARGET_LINK_LIBRARIES(FlexibleDiffusionSolverFE_OpenCL
	${OpenCL_LIBRARIES} cc3d::Logger)


install(TARGETS FlexibleDiffusionSolverFE_OpenCL
        EXPORT FlexibleDiffusionSolverFE_OpenCL
        RUNTIME DESTINATION ${COMPUCELL3D_INSTALL_STEPPABLE_DIR}
        LIBRARY DESTINATION ${COMPUCELL3D_INSTALL_STEPPABLE_DIR}
        ARCHIVE DESTINATION ${COMPUCELL3D_INSTALL_STEPPABLE_DIR}
)

INSTALL(FILES 
	${KERNEL_FILES} 
	../GPUSolverParams.h
	GPUBoundaryConditions.h
	DESTINATION ${COMPUCELL3D_INSTALL_STEPPABLE_DIR}/OpenCL)