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