# Create the library and add the default arguments. add_target_library(omptarget.rtl.level_zero LEVEL_ZERO) set(LEVEL_ZERO_SRC_FILES src/L0Context.cpp src/L0Device.cpp src/L0Kernel.cpp src/L0Memory.cpp src/L0Program.cpp src/L0Plugin.cpp src/L0Program.cpp src/L0Options.cpp ) target_sources(omptarget.rtl.level_zero PRIVATE ${LEVEL_ZERO_SRC_FILES} ) target_include_directories(omptarget.rtl.level_zero PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_include_directories(omptarget.rtl.level_zero PRIVATE ${LIBOMPTARGET_INCLUDE_DIR} ${LIBOMPTARGET_DEP_LEVEL_ZERO_INCLUDE_DIR} ${LIBOMPTARGET_LLVM_INCLUDE_DIRS} ${LIBOMPTARGET_OMP_HEADER_DIR} ) if (EXISTS ${LIBOMPTARGET_DEP_LEVEL_ZERO_LIBRARY} AND NOT "level_zero" IN_LIST LIBOMPTARGET_DLOPEN_PLUGINS) message(STATUS "Building Level Zero NG plugin linked against level_zero library") if(UNIX) target_link_libraries(omptarget.rtl.level_zero PRIVATE ${LIBOMPTARGET_DEP_LEVEL_ZERO_LIBRARY}) elseif(WIN32) # Full path to the Level Zero library is recognized as a linker option, so we # separate directory and file name cmake_path(GET LIBOMPTARGET_DEP_LEVEL_ZERO_LIBRARY FILENAME LEVEL_ZERO_LIBRARY_NAME) cmake_path(GET LIBOMPTARGET_DEP_LEVEL_ZERO_LIBRARY PARENT_PATH LEVEL_ZERO_LIBRARY_PATH) target_link_libraries(omptarget.rtl.level_zero PRIVATE ${LEVEL_ZERO_LIBRARY_NAME} ${LIBOMP_LIB_FILE}) target_link_directories(omptarget.rtl.level_zero PRIVATE ${LEVEL_ZERO_LIBRARY_PATH}) else() message(FATAL_ERROR "Missing platform support") endif() else() message(STATUS "Building Level Zero NG plugin for dlopened level_zero") target_sources(omptarget.rtl.level_zero PRIVATE src/L0DynWrapper.cpp) endif() option(LIBOMPTARGET_FORCE_LEVELZERO_TESTS "Build Level Zero libomptarget tests" OFF) if (LIBOMPTARGET_FOUND_INTELGPU_GPU OR LIBOMPTARGET_FORCE_LEVELZERO_TESTS) # Report to the parent scope that we are building a plugin for intelgpu set(LIBOMPTARGET_SYSTEM_TARGETS "${LIBOMPTARGET_SYSTEM_TARGETS} spirv64-intel" PARENT_SCOPE) list(APPEND LIBOMPTARGET_TESTED_PLUGINS "omptarget.rtl.level_zero") set(LIBOMPTARGET_TESTED_PLUGINS "${LIBOMPTARGET_TESTED_PLUGINS}" PARENT_SCOPE) else() message(STATUS "Not generating Level Zero tests, no supported devices detected." " Use 'LIBOMPTARGET_FORCE_INTELGPU_TESTS' to override.") endif()