| # Copyright 2019 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| if (is_android) { |
| import("//build/config/android/rules.gni") |
| } |
| |
| import("//device/vr/buildflags/buildflags.gni") |
| |
| declare_args() { |
| # Used to determine whether or not the OpenXR loader is allowed to consider |
| # paths specified by a ContentProvider on Android as valid paths to load an |
| # OpenXR runtime from. It is more secure, albeit potentially not spec |
| # compliant, to set this to false, but more spec compliant to set it to true. |
| # When set to true, ContentProvider paths will be considered as valid paths to |
| # load an OpenXR runtime from. |
| # When set to false, ContentProvider paths will be ignored. |
| # For more details see the "Android Active Runtime Location" section from: |
| # https://registry.khronos.org/OpenXR/specs/1.0/loader.html#active-runtime-information |
| allow_openxr_content_providers = false |
| } |
| |
| if (enable_openxr) { |
| source_set("openxr_headers") { |
| # This visibility is done to help enforce the dependency that |
| # openxr_platform.h requires platform headers to be included before it. |
| # If you'd like to expand this visibility, you will need to make similar |
| # DEPS rules for it as are present in the below locations. |
| visibility = [ |
| "//chrome/browser/vr/*", |
| "//chrome/test/*", |
| "//components/webxr/*", |
| "//device/vr/*", |
| ] |
| |
| sources = [ |
| "dev/xr_android.h", |
| "src/include/openxr/openxr.h", |
| "src/include/openxr/openxr_platform.h", |
| "src/include/openxr/openxr_platform_defines.h", |
| "src/src/common/hex_and_handles.h", |
| ] |
| |
| public_configs = [ ":config" ] |
| } |
| |
| if (is_android) { |
| # On Android, the loader comes with a couple more external dependencies. |
| source_set("jnipp") { |
| sources = [ |
| "src/src/external/jnipp/jnipp.cpp", |
| "src/src/external/jnipp/jnipp.h", |
| ] |
| |
| cflags_cc = [ "-Wno-shadow" ] |
| |
| configs += [ |
| # JNIPP uses exceptions to communicate failures: |
| "//build/config/compiler:exceptions", |
| ] |
| } |
| |
| config("android-jni-wrappers-config") { |
| include_dirs = [ "src/src/external/jnipp" ] |
| } |
| |
| source_set("android-jni-wrappers") { |
| sources = [ |
| "src/src/external/android-jni-wrappers/wrap/ObjectWrapperBase.h", |
| "src/src/external/android-jni-wrappers/wrap/android.content.cpp", |
| "src/src/external/android-jni-wrappers/wrap/android.content.h", |
| "src/src/external/android-jni-wrappers/wrap/android.content.impl.h", |
| "src/src/external/android-jni-wrappers/wrap/android.database.cpp", |
| "src/src/external/android-jni-wrappers/wrap/android.database.h", |
| "src/src/external/android-jni-wrappers/wrap/android.database.impl.h", |
| "src/src/external/android-jni-wrappers/wrap/android.net.cpp", |
| "src/src/external/android-jni-wrappers/wrap/android.net.h", |
| "src/src/external/android-jni-wrappers/wrap/android.net.impl.h", |
| ] |
| |
| # android-jni-wrappers assume jnipp headers are in the include path and |
| # they also do so in the headers that are intended to be included by the |
| # consumer of this target, so let's add them to public_configs to |
| # propagate the include dirs to our consumers: |
| public_configs = [ ":android-jni-wrappers-config" ] |
| |
| public_deps = [ ":jnipp" ] |
| } |
| } |
| |
| component("openxr") { |
| # This visibility is done to help enforce the dependency that |
| # openxr_platform.h requires platform headers to be included before it. |
| # If you'd like to expand this visibility, you will need to make similar |
| # DEPS rules for it as are present in the below locations. |
| visibility = [ |
| "//chrome/browser/vr/*", |
| "//chrome/test/*", |
| "//components/webxr/*", |
| "//device/vr/*", |
| ] |
| sources = [ |
| "dev/xr_android.h", |
| "src/include/openxr/openxr.h", |
| "src/include/openxr/openxr_platform.h", |
| "src/include/openxr/openxr_platform_defines.h", |
| "src/src/common/extra_algorithms.h", |
| "src/src/common/filesystem_utils.cpp", |
| "src/src/common/filesystem_utils.hpp", |
| "src/src/common/hex_and_handles.h", |
| "src/src/common/object_info.cpp", |
| "src/src/common/object_info.h", |
| "src/src/common/platform_utils.hpp", |
| "src/src/common/xr_dependencies.h", |
| "src/src/common/xr_linear.h", |
| "src/src/loader/api_layer_interface.cpp", |
| "src/src/loader/api_layer_interface.hpp", |
| "src/src/loader/exception_handling.hpp", |
| "src/src/loader/loader_core.cpp", |
| "src/src/loader/loader_init_data.cpp", |
| "src/src/loader/loader_init_data.hpp", |
| "src/src/loader/loader_instance.cpp", |
| "src/src/loader/loader_instance.hpp", |
| "src/src/loader/loader_logger.cpp", |
| "src/src/loader/loader_logger.hpp", |
| "src/src/loader/loader_logger_recorders.cpp", |
| "src/src/loader/loader_logger_recorders.hpp", |
| "src/src/loader/loader_platform.hpp", |
| "src/src/loader/loader_properties.cpp", |
| "src/src/loader/loader_properties.hpp", |
| "src/src/loader/manifest_file.hpp", |
| "src/src/loader/runtime_interface.cpp", |
| "src/src/loader/runtime_interface.hpp", |
| "src/src/loader/xr_generated_loader.cpp", |
| "src/src/loader/xr_generated_loader.hpp", |
| "src/src/xr_generated_dispatch_table_core.c", |
| "src/src/xr_generated_dispatch_table_core.h", |
| "src_overrides/src/loader/manifest_file.cpp", |
| ] |
| |
| if (is_component_build && is_win) { |
| sources += [ "openxr.def" ] |
| } |
| |
| include_dirs = [ |
| "src/include", |
| "src/src/common", |
| "src/src", |
| "src/src/loader", |
| ] |
| |
| deps = [ "//third_party/jsoncpp" ] |
| |
| public_configs = [ ":config" ] |
| |
| defines = [ |
| "OPENXR_NON_CMAKE_BUILD", |
| "DISABLE_STD_FILESYSTEM", |
| ] |
| |
| if (!allow_openxr_content_providers) { |
| defines += [ "XRLOADER_DISABLE_CONTENT_PROVIDERS" ] |
| } |
| |
| cflags_cc = [ |
| "-Wno-format", |
| "-Wno-microsoft-cast", |
| "-Wno-microsoft-include", |
| "-Wno-unused-function", |
| "-Wno-extra-semi", |
| ] |
| |
| if (is_android) { |
| sources += [ |
| "dev/xr_android.h", |
| "src/src/loader/android_utilities.h", |
| "src_overrides/src/loader/android_utilities.cpp", |
| ] |
| |
| deps += [ ":android-jni-wrappers" ] |
| |
| # OpenXR loader on Android assumes that android-jni-wrappers are in the |
| # include path: |
| include_dirs += [ "src/src/external/android-jni-wrappers" ] |
| |
| libs = [ |
| "android", |
| "log", |
| ] |
| } |
| |
| # Missing includes are fixed upstream |
| # TODO(crbug.com/440183782): Remove this once a release contains the fix |
| use_libcxx_modules = false |
| } |
| |
| if (is_android) { |
| java_group("openxr_manifest_java") { |
| if (allow_openxr_content_providers) { |
| mergeable_android_manifests = |
| [ "src_overrides/src/loader/AndroidManifest.xml.in" ] |
| } |
| } |
| } |
| |
| config("config") { |
| # These build define flags need to be set for openxr.h to define |
| # constants related to Windows and D3D. |
| if (is_win) { |
| defines = [ |
| "XRLOADER_DISABLE_EXCEPTION_HANDLING", |
| "XR_OS_WINDOWS", |
| "XR_USE_PLATFORM_WIN32", |
| "XR_USE_GRAPHICS_API_D3D11", |
| ] |
| } else { |
| defines = [ |
| "XRLOADER_DISABLE_EXCEPTION_HANDLING", |
| "XR_KHR_LOADER_INIT_SUPPORT", |
| "XR_OS_ANDROID", |
| "XR_USE_PLATFORM_ANDROID", |
| "XR_USE_GRAPHICS_API_OPENGL_ES", |
| ] |
| } |
| } |
| } |