function(add_kernels SRC_DIR KERNEL_FILES) set(INIT_KERNELS_LIST) set(KERNELS_DECLS) foreach(KERNEL_FILE ${KERNEL_FILES}) if("${CMAKE_VERSION}" VERSION_LESS 3.0) configure_file(${KERNEL_FILE} ${KERNEL_FILE}.delete) else() set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${KERNEL_FILE}) endif() get_filename_component(BASE_NAME ${KERNEL_FILE} NAME_WE) string(TOUPPER "${BASE_NAME}" KEY_NAME) string(MAKE_C_IDENTIFIER "${KEY_NAME}" VAR_NAME) string(APPEND KERNELS_DECLS "extern const size_t APP_KERNEL_${VAR_NAME}_SIZE;\n") string(APPEND KERNELS_DECLS "extern const unsigned char APP_KERNEL_${VAR_NAME}[];\n") list(APPEND INIT_KERNELS_LIST " { \"${KEY_NAME}\", std::string(reinterpret_cast(APP_KERNEL_${VAR_NAME}), APP_KERNEL_${VAR_NAME}_SIZE) }") endforeach() string(REPLACE ";" ",\n" INIT_KERNELS "${INIT_KERNELS_LIST}") configure_file(${SRC_DIR}/kernel.cpp.in ${PROJECT_BINARY_DIR}/kernel.cpp) endfunction() function(add_kernel_includes SRC_DIR KERNEL_FILES) set(INIT_KERNELS_LIST) foreach(KERNEL_FILE ${KERNEL_FILES}) if("${CMAKE_VERSION}" VERSION_LESS 3.0) configure_file(${KERNEL_FILE} ${KERNEL_FILE}.delete) else() set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${KERNEL_FILE}) endif() get_filename_component(BASE_NAME ${KERNEL_FILE} NAME_WE) get_filename_component(FILE_NAME ${KERNEL_FILE} NAME) string(TOUPPER "${BASE_NAME}" KEY_NAME) string(MAKE_C_IDENTIFIER "${KEY_NAME}" VAR_NAME) list(APPEND INIT_KERNELS_LIST " { \"${FILE_NAME}\", std::string(reinterpret_cast(${VAR_NAME}), ${VAR_NAME}_SIZE) }") endforeach() string(REPLACE ";" ",\n" INIT_KERNELS "${INIT_KERNELS_LIST}") configure_file(${SRC_DIR}/kernel_includes.cpp.in ${PROJECT_BINARY_DIR}/kernel_includes.cpp) endfunction()