123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- cmake_minimum_required(VERSION 3.9)
- set(CMAKE_CXX_STANDARD 17)
- OPTION(ARCH "Target Architecture" X86_64)
- project(mandel VERSION 1.0.0 DESCRIPTION "library for mandelbrot calculations")
- find_package(OpenCL)
- find_package(OpenMP)
- #FILE(GLOB MandelSources src/*.cpp)
- SET(MandelSources
- src/ClGenerators.cpp
- src/CpuGenerators.cpp
- src/Generators.cpp
- src/mandel.cpp
- src/CpuGeneratorsAVX.cpp
- src/CpuGeneratorsSSE2.cpp
- src/Hardware.cpp
- src/MandelUtil.cpp
- )
- FILE(GLOB MandelHeaders include/*.h)
- if (NOT (ARCH EQUAL X86_64 OR ARCH EQUAL X86))
- list(REMOVE_ITEM MandelSources src/CpuGeneratorsAVX.cpp src/CpuGeneratorsSSE2.cpp)
- endif()
- message(${MandelSources})
- include_directories(
- "include"
- ${OpenCL_INCLUDE_DIRS}
- )
- link_directories(${OpenCL_LIBRARY})
- if (APPLE AND OpenCL_FOUND)
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework OpenCL")
- endif()
- if (${ARCH} EQUAL X86_64 OR ${ARCH} EQUAL X86)
- 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)
- endif()
- add_library(mandel STATIC ${MandelSources})
- if(OpenMP_CXX_FOUND)
- target_link_libraries(mandel PUBLIC OpenMP::OpenMP_CXX)
- endif()
- if(OpenCL_FOUND)
- target_link_libraries(mandel OpenCL::OpenCL)
- endif()
|