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