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()