CMakeLists.txt 1.6 KB

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