diff --git a/.bazelrc b/.bazelrc index 444bbe4b947..9b94844cf8c 100644 --- a/.bazelrc +++ b/.bazelrc @@ -16,6 +16,9 @@ build --flag_alias=device=@config//:device build --flag_alias=cpu=@config//:cpu build --flag_alias=enable_assert=@config//:enable_assert +#Build oneDAL via bazel +build --release_dpc + # Always pass this env variable to test rules, because SYCL # OpenCL backend uses it to determine available devices test --test_env=OCL_ICD_FILENAMES \ diff --git a/BUILD b/BUILD index 1e40ec7a410..6a9f62c54fd 100644 --- a/BUILD +++ b/BUILD @@ -1,6 +1,7 @@ load("@onedal//dev/bazel:release.bzl", "release", "release_include", + "release_env" ) release( @@ -14,6 +15,10 @@ release( hdrs = [ "@onedal//cpp/daal:kernel_defines" ], add_prefix = "services/internal", ), + release_include( + hdrs = [ "@micromkl_dpc//:headers" ], + skip_prefix = "external/micromkl_dpc/include/", + ), release_include( hdrs = [ "@onedal//cpp/oneapi/dal:public_includes" ], skip_prefix = "cpp", @@ -34,8 +39,8 @@ release( "@onedal//cpp/oneapi/dal:dynamic_dpc", "@onedal//cpp/oneapi/dal:static_parameters_dpc", "@onedal//cpp/oneapi/dal:dynamic_parameters_dpc", - # TODO: Add onedal_sycl ], "//conditions:default": [], }), + env = release_env() ) diff --git a/dev/bazel/release.bzl b/dev/bazel/release.bzl index 9d785b20f12..592ae81211d 100644 --- a/dev/bazel/release.bzl +++ b/dev/bazel/release.bzl @@ -82,12 +82,38 @@ def _copy_lib(ctx, prefix): dst_files.append(dst_file) return dst_files +def _copy_env(ctx, prefix): + lib_prefix = paths.join(prefix, "env") + env_files = env_scripts_generator(ctx) + dst_files = [] + for lib in env_files: + dst_path = paths.join(lib_prefix, lib.basename) + dst_file = _copy(ctx, lib, dst_path) + dst_files.append(dst_file) + return dst_files + +#draft version for env script, its necessary to do it autogenerated +def env_scripts_generator(ctx): + out = ctx.actions.declare_file("vars.sh") + ctx.actions.write( + output=out, + content="""\ + export CMAKE_PREFIX_PATH="`pwd`/bazel-bin/release/daal/latest":$CMAKE_PREFIX_PATH + export CPATH="`pwd`/bazel-bin/release/daal/latest/include":$CPATH + export DALROOT="`pwd`/bazel-bin/release/daal/latest" + export LD_LIBRARY_PATH="`pwd`/bazel-bin/release/daal/latest/lib/intel64":$LD_LIBRARY_PATH + export LIBRARY_PATH="`pwd`/bazel-bin/release/daal/latest/lib/intel64":$LIBRARY_PATH + """, + ) + return [out] + def _copy_to_release_impl(ctx): extra_toolchain = ctx.toolchains["@onedal//dev/bazel/toolchains:extra"] prefix = ctx.attr.name + "/daal/latest" files = [] files += _copy_include(ctx, prefix) files += _copy_lib(ctx, prefix) + files += _copy_env(ctx, prefix) return [DefaultInfo(files=depset(files))] _release = rule( @@ -97,6 +123,7 @@ _release = rule( "include_prefix": attr.string_list(), "include_skip_prefix": attr.string_list(), "lib": attr.label_list(allow_files=True), + "env": attr.label_list(allow_files=True), }, toolchains = [ "@onedal//dev/bazel/toolchains:extra" @@ -130,7 +157,10 @@ headers_filter = rule( def release_include(hdrs, skip_prefix="", add_prefix=""): return (hdrs, add_prefix, skip_prefix) -def release(name, include, lib): +def release_env(): + return () + +def release(name, include, lib, env): rule_include = [] rule_include_prefix = [] rule_include_skip_prefix = [] @@ -145,4 +175,5 @@ def release(name, include, lib): include_prefix = rule_include_prefix, include_skip_prefix = rule_include_skip_prefix, lib = lib, + env = env, )