xref: /aosp_15_r20/external/clpeak/CMakeLists.txt (revision 1cd03ba3888297bc945f2c84574e105e3ced3e34)
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