1 cmake_minimum_required(VERSION 3.22.1)
 2 project(opencl_backend)
 3 
 4 set(CMAKE_CXX_STANDARD 17)
 5 
 6 find_package(OpenCL)
 7 if(OPENCL_FOUND)
 8     message("OPENCL")
 9     if ("${OPENCL_BACKEND}EMPTY" STREQUAL "EMPTY")
10         set (OPENCL_BACKEND "${CMAKE_SOURCE_DIR}")
11         message("OPENCL_BACKEND=${OPENCL_BACKEND}")
12     endif()
13 
14     if ("${SHARED_BACKEND}EMPTY" STREQUAL "EMPTY")
15         set (SHARED_BACKEND "${CMAKE_SOURCE_DIR}/../shared")
16         message("SHARED_BACKEND=${SHARED_BACKEND}")
17     endif()
18 
19     if (APPLE)
20        set(OPENCL_INCLUDE_DIR "-framework OpenCL")
21        set(OPENCL_LIB "-framework OpenCL")
22     else()
23        set(OPENCL_LIB "OpenCL")
24     endif()
25 
26     include_directories(
27         ${OPENCL_BACKEND}/src/main/native/include
28         ${SHARED_BACKEND}/src/main/native/include
29         ${OPENCL_INCLUDE_DIR}
30     )
31     link_directories(
32         ${CMAKE_BINARY_DIR}
33         ../shared/target/build
34     )
35 
36     add_library(opencl_backend SHARED
37         ${OPENCL_BACKEND}/src/main/native/include/opencl_backend.h
38         ${OPENCL_BACKEND}/src/main/native/cpp/opencl_backend.cpp
39         ${OPENCL_BACKEND}/src/main/native/cpp/opencl_backend_buffer.cpp
40         ${OPENCL_BACKEND}/src/main/native/cpp/opencl_backend_info.cpp
41         ${OPENCL_BACKEND}/src/main/native/cpp/opencl_backend_queue.cpp
42         ${OPENCL_BACKEND}/src/main/native/cpp/opencl_backend_kernel.cpp
43         ${OPENCL_BACKEND}/src/main/native/cpp/opencl_backend_program.cpp
44     )
45 
46     target_link_libraries(opencl_backend
47             shared_backend
48         ${OPENCL_LIB}
49     )
50 
51     add_executable(opencl_info
52             ${OPENCL_BACKEND}/src/main/native/include/opencl_backend.h
53             ${OPENCL_BACKEND}/src/main/native/cpp/info.cpp
54     )
55     add_executable(opencl_squares
56             ${OPENCL_BACKEND}/src/main/native/include/opencl_backend.h
57             ${OPENCL_BACKEND}/src/main/native/cpp/squares.cpp
58         )
59 
60     target_link_libraries(opencl_squares
61         opencl_backend
62 
63     )
64     target_link_libraries(opencl_info
65         opencl_backend
66 
67     )
68 
69     add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/extractFile
70             COMMAND echo jextract stuff
71             #COMMAND BANNER jextract stuff
72             COMMAND touch ${CMAKE_BINARY_DIR}/extractFile
73             #COMMAND ${CMAKE_COMMAND} -E touch ${LIBFOO_TAR_HEADERS}
74             WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
75             #DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/libfoo/foo.tar"
76             COMMENT "Extracting opencl"
77             VERBATIM
78     )
79 
80     add_custom_target(extract DEPENDS ${CMAKE_BINARY_DIR}/extractFile)
81 
82 endif()