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