1 cmake_minimum_required(VERSION 3.22.1)
2 project(extract_opencl)
3
4 #get_cmake_property(_variableNames VARIABLES)
5 #foreach (_variableName ${_variableNames})
6 # message(STATUS "${_variableName}=${${_variableName}}")
7 #endforeach()
8 find_package(OpenCL)
9 if(OPENCL_FOUND)
10 set(JEXTRACT_PACKAGE opencl)
11 set(JEXTRACT_SOURCE ${CMAKE_SOURCE_DIR}/${JEXTRACT_PACKAGE}/src/main/java)
12 set(JEXTRACT_HEADER ${JEXTRACT_SOURCE}/${JEXTRACT_PACKAGE}/${JEXTRACT_PACKAGE}_h.java)
13
14 if (APPLE)
15 set(OSX_SDK ${CMAKE_OSX_SYSROOT})
16 set(OSX_SDK_LIBRARY_FRAMEWORKS ${OSX_SDK}/System/Library/Frameworks)
17 set(OSX_SYS_LIBRARY_FRAMEWORKS /System/Library/Frameworks)
18
19 add_custom_command(OUTPUT ${JEXTRACT_HEADER}
20 COMMAND echo creating ${JEXTRACT_SOURCE}
21 COMMAND mkdir -p ${JEXTRACT_SOURCE}
22 COMMAND echo -F${OSX_SDK_LIBRARY_FRAMEWORKS} > ${CMAKE_BINARY_DIR}/compile_flags.txt
23 COMMAND jextract
24 --target-package ${JEXTRACT_PACKAGE}
25 --output ${JEXTRACT_SOURCE}
26 --library :${OSX_SYS_LIBRARY_FRAMEWORKS}/OpenCL.framework/OpenCL
27 --header-class-name ${JEXTRACT_PACKAGE}_h
28 ${OSX_SDK_LIBRARY_FRAMEWORKS}/OpenCL.framework/Headers/opencl.h
29 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
30 VERBATIM
31 )
32 else()
33 add_custom_command(OUTPUT ${JEXTRACT_HEADER}
34 COMMAND echo creating ${JEXTRACT_SOURCE}
35 COMMAND mkdir -p ${JEXTRACT_SOURCE}
36 COMMAND jextract
37 --target-package ${JEXTRACT_PACKAGE}
38 --output ${JEXTRACT_SOURCE}
39 --library :${OpenCL_LIBRARY}
40 --header-class-name ${JEXTRACT_PACKAGE}_h
41 ${OpenCL_INCLUDE_DIR}/CL/opencl.h
42 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
43 VERBATIM
44 )
45
46 endif()
47
48 add_custom_target(extract_opencl DEPENDS ${JEXTRACT_HEADER})
49 else()
50 message("NO OPENCL")
51 endif()