CMakeLists.txt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. cmake_minimum_required(VERSION 3.9)
  2. set(ARCH "X86_64" CACHE STRING "Target Architecture")
  3. project(mandel VERSION 1.0.0 DESCRIPTION "library for mandelbrot calculations")
  4. find_package(OpenCL)
  5. find_package(OpenMP)
  6. set(CMAKE_CXX_STANDARD 17)
  7. #FILE(GLOB MandelSources src/*.cpp)
  8. SET(MandelSources
  9. src/ClGenerators.cpp
  10. src/CpuGenerators.cpp
  11. src/Generators.cpp
  12. src/mandel.cpp
  13. src/Hardware.cpp
  14. src/MandelUtil.cpp
  15. )
  16. FILE(GLOB MandelHeaders include/*.h)
  17. if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
  18. list(APPEND MandelSources src/CpuGeneratorsAVX.cpp src/CpuGeneratorsSSE2.cpp)
  19. endif()
  20. # message(${MandelSources})
  21. include_directories(
  22. "include"
  23. ${OpenCL_INCLUDE_DIRS}
  24. )
  25. link_directories(${OpenCL_LIBRARY})
  26. if (APPLE AND OpenCL_FOUND)
  27. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework OpenCL")
  28. endif()
  29. if (ARCH STREQUAL "X86_64" OR ARCH STREQUAL "X86")
  30. if (MSVC)
  31. set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS /arch:AVX)
  32. else()
  33. set_source_files_properties(src/CpuGeneratorsAVX.cpp PROPERTIES COMPILE_FLAGS -mavx)
  34. endif(MSVC)
  35. if (MSVC)
  36. set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS /arch:SSE2)
  37. else()
  38. set_source_files_properties(src/CpuGeneratorsSSE2.cpp PROPERTIES COMPILE_FLAGS -msse2)
  39. endif(MSVC)
  40. endif()
  41. add_library(mandel STATIC ${MandelSources})
  42. if(OpenMP_CXX_FOUND)
  43. target_link_libraries(mandel PUBLIC OpenMP::OpenMP_CXX)
  44. endif()
  45. if(OpenCL_FOUND)
  46. target_link_libraries(mandel PUBLIC OpenCL::OpenCL)
  47. endif()