cmake_minimum_required( VERSION 3.1 )
project( parallelwelten_2 )

set( EXECUTABLE parallelwelten_2 )

if( MSVC )
	message( "MSVC: adding compiler flags" )
	add_compile_options("/arch:SSE2")
	add_compile_options("/I.")
elseif( UNIX )
	message( "UNIX-like system: adding compiler flags" )
	add_compile_options("-msse2")
	add_compile_options("-I.")
endif( MSVC )

find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )

find_package( OpenCL REQUIRED )

set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS} CACHE FILEPATH "OpenCL include directory")
set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} CACHE FILEPATH "OpenCL libraries")
include_directories( ${OpenCL_INCLUDE_DIRS} )

message( "OpenCL include directory is: " ${OpenCL_INCLUDE_DIRS} )

file(GLOB clfiles "${PROJECT_SOURCE_DIR}/*.cl")
file(GLOB headers "${PROJECT_SOURCE_DIR}/*.hpp")
add_executable( ${EXECUTABLE} main.cpp ${clfiles} ${headers} )
target_link_libraries( ${EXECUTABLE} ${OpenCL_LIBRARIES} )
target_link_libraries( ${EXECUTABLE} ${OpenCV_LIBS} )
set_source_files_properties(${clfiles} ${headers} PROPERTIES HEADER_FILE_ONLY TRUE)

source_group(OpenCL FILES ${clfiles})

# copy src for .cl files so that they can probably be read if someone
# just starts the program
add_custom_command(TARGET ${EXECUTABLE} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "$<TARGET_FILE_DIR:${EXECUTABLE}>/src" )
foreach(filename ${clfiles})
  add_custom_command(TARGET ${EXECUTABLE} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${filename}" "$<TARGET_FILE_DIR:${EXECUTABLE}>/src" )
endforeach()
add_custom_command(TARGET ${EXECUTABLE} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "${PROJECT_SOURCE_DIR}/../preview.png" "$<TARGET_FILE_DIR:${EXECUTABLE}>")

