cmake_minimum_required(VERSION 3.9)

set(CMAKE_CXX_STANDARD 17)
project(mandel VERSION 1.0.0 DESCRIPTION "library for mandelbrot calculations")

find_package(OpenCL REQUIRED)
find_package(OpenMP)


FILE(GLOB MandelSources src/*.cpp
FILE(GLOB MandelHeaders include/*.h))


include_directories(
    "include"
    ${OpenCL_INCLUDE_DIRS}
)
link_directories(${OpenCL_LIBRARY})

if (APPLE)
    SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -framework OpenCL")
endif()

if (MSVC)
    set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
else()
    set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS -mavx)
endif(MSVC)


if (MSVC)
    set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS /arch:SSE2)
else()
    set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS -msse2)
endif(MSVC)

add_library(mandel STATIC ${MandelSources})


if(OpenMP_CXX_FOUND)
    target_link_libraries(mandel PUBLIC OpenCL::OpenCL OpenMP::OpenMP_CXX)
else()
    target_link_libraries(mandel OpenCL::OpenCL)
endif()