CMakeLists.txt 2.0 KB

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