1cmake_minimum_required(VERSION 3.5) 2project(clpeak) 3 4include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/common.cmake) 5include(GNUInstallDirs) 6 7if (NOT CMAKE_BUILD_TYPE) 8 message(STATUS "Setting build type to Release") 9 set(CMAKE_BUILD_TYPE "Release") 10endif() 11 12find_package(OpenCL) 13FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS}) 14if(NOT OpenCL_FOUND OR NOT HPP_FOUND) 15 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") 16 include(BuildSdk) 17 18 find_package(OpenCL REQUIRED) 19 20 set(OpenCL_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS} "${SDK_ROOT}/include") 21 FIND_PATH(HPP_FOUND CL/opencl.hpp PATHS ${OpenCL_INCLUDE_DIRS} REQUIRED) 22endif() 23 24if(NOT OpenCL_FOUND) 25 message(FATAL_ERROR "Could not find OpenCL include/libs. Set OCL_ROOT to your OpenCL SDK") 26else() 27 message(STATUS "Selected OpenCL includes from ${OpenCL_INCLUDE_DIRS}") 28 message(STATUS "Selected OpenCL lib ${OpenCL_LIBRARIES}") 29endif() 30 31# extra libs for static library 32if(UNIX AND ${OpenCL_LIBRARIES} MATCHES "libOpenCL.a") 33 set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} pthread dl) 34elseif(WIN32 AND ${OpenCL_LIBRARIES} MATCHES "OpenCL.lib") 35 set(OpenCL_LIBRARIES ${OpenCL_LIBRARIES} cfgmgr32.lib runtimeobject.lib) 36endif() 37 38set(CMAKE_CXX_STANDARD "11") 39set(CMAKE_CXX_STANDARD_REQUIRED ON) 40 41set(CLPEAK_SOURCE_FILES 42 src/common.cpp 43 src/clpeak.cpp 44 src/options.cpp 45 src/logger.cpp 46 src/global_bandwidth.cpp 47 src/compute_sp.cpp 48 src/compute_hp.cpp 49 src/compute_dp.cpp 50 src/compute_integer.cpp 51 src/compute_integer_fast.cpp 52 src/compute_char.cpp 53 src/compute_short.cpp 54 src/transfer_bandwidth.cpp 55 src/kernel_latency.cpp 56 src/entry.cpp 57) 58 59add_executable(clpeak ${CLPEAK_SOURCE_FILES}) 60target_link_libraries(clpeak ${OpenCL_LIBRARIES}) 61target_include_directories(clpeak PRIVATE ${OpenCL_INCLUDE_DIRS} "include" "src/kernels") 62target_compile_definitions(clpeak PRIVATE CL_TARGET_OPENCL_VERSION=120) 63 64if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR 65 CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR 66 CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") 67 target_compile_options(clpeak PRIVATE -fPIC -Wall -Wextra -Wno-unused-parameter) 68endif() 69 70install(TARGETS clpeak RUNTIME DESTINATION bin) 71install(FILES LICENSE DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/clpeak") 72 73enable_testing() 74add_test(clpeak_test_run clpeak) 75 76set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}-${VERSION_STR}") 77set(CPACK_GENERATOR "ZIP") 78include (CPack) 79