| # Copyright 2019 The ANGLE Project Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| # |
| # Build integration for glmark2. |
| |
| import("../../gni/angle.gni") |
| |
| glmark2_glad_common_sources = [ |
| "src/src/glad/include/glad/egl.h", |
| "src/src/glad/src/egl.c", |
| ] |
| |
| config("glmark2_glad_config") { |
| include_dirs = [ "src/src/glad/include" ] |
| } |
| |
| source_set("glmark2_glad_gles") { |
| sources = glmark2_glad_common_sources + [ |
| "src/src/glad/include/glad/gles2.h", |
| "src/src/glad/src/gles2.c", |
| ] |
| public_configs = [ ":glmark2_glad_config" ] |
| } |
| |
| source_set("glmark2_glad_gl") { |
| sources = glmark2_glad_common_sources + [ |
| "src/src/glad/include/glad/gl.h", |
| "src/src/glad/src/gl.c", |
| ] |
| public_configs = [ ":glmark2_glad_config" ] |
| } |
| |
| glmark_data_path = "${angle_root}/third_party/glmark2/src/data" |
| raw_glmark_data_path = rebase_path(glmark_data_path, root_build_dir) |
| |
| config("glmark2_common_config") { |
| defines = [ "GLMARK_DATA_PATH=\"${raw_glmark_data_path}\"" ] |
| include_dirs = [ "src/src" ] |
| if (is_win) { |
| include_dirs += [ "src/src/include" ] |
| |
| # M_PI is nonstandard. |
| defines += [ "_USE_MATH_DEFINES" ] |
| |
| if (!is_clang) { |
| cflags = [ |
| # MSVC warns about the copyright character being illegal. |
| "/wd4828", |
| |
| # A warning generated in scene-effect-2d in vec2::calc_offset |
| "/wd4146", |
| ] |
| } |
| } |
| } |
| |
| config("glmark2_gles_config") { |
| defines = [ "GLMARK2_USE_GLESv2" ] |
| } |
| |
| config("glmark2_gl_config") { |
| defines = [ "GLMARK2_USE_GL" ] |
| } |
| |
| group("glmark2_gles") { |
| public_configs = [ |
| ":glmark2_common_config", |
| ":glmark2_gles_config", |
| ] |
| public_deps = [ |
| ":glmark2_glad_gles", |
| ] |
| } |
| |
| group("glmark2_gl") { |
| public_configs = [ |
| ":glmark2_common_config", |
| ":glmark2_gl_config", |
| ] |
| public_deps = [ |
| ":glmark2_glad_gl", |
| ] |
| } |
| |
| # Supplies compatible headers on Win32. |
| config("glmark2_headers_config") { |
| if (is_win) { |
| if (is_clang) { |
| cflags = [ |
| "-Wno-unused-function", |
| "-Wno-writable-strings", |
| "-Wno-extra-tokens", |
| ] |
| } |
| } |
| } |
| |
| source_set("glmark2_headers") { |
| sources = [ |
| "src/src/canvas.h", |
| "src/src/gl-headers.h", |
| "src/src/gl-state-egl.h", |
| "src/src/gl-state.h", |
| "src/src/gl-visual-config.h", |
| "src/src/mesh.h", |
| "src/src/scene.h", |
| "src/src/shared-library.h", |
| "src/src/texture.h", |
| ] |
| |
| if (is_linux) { |
| sources += [ "src/src/gl-state-glx.h" ] |
| } |
| if (is_win) { |
| sources += [ |
| "src/src/gl-state-wgl.h", |
| "src/src/include/dirent.h", |
| "src/src/include/getopt.h", |
| "src/src/include/sys/time.h", |
| ] |
| } |
| public_configs = [ ":glmark2_headers_config" ] |
| include_dirs = [ "src/src" ] |
| } |
| |
| config("glmark2_libmatrix_config") { |
| include_dirs = [ "src/src/libmatrix" ] |
| } |
| |
| template("glmark2_libmatrix") { |
| source_set(target_name) { |
| forward_variables_from(invoker, "*") |
| sources = [ |
| "src/src/libmatrix/gl-if.h", |
| "src/src/libmatrix/log.cc", |
| "src/src/libmatrix/log.h", |
| "src/src/libmatrix/mat.cc", |
| "src/src/libmatrix/mat.h", |
| "src/src/libmatrix/program.cc", |
| "src/src/libmatrix/program.h", |
| "src/src/libmatrix/shader-source.cc", |
| "src/src/libmatrix/shader-source.h", |
| "src/src/libmatrix/stack.h", |
| "src/src/libmatrix/util.cc", |
| "src/src/libmatrix/util.h", |
| "src/src/libmatrix/vec.h", |
| ] |
| |
| if (is_clang) { |
| cflags_cc = [ "-Wno-implicit-fallthrough" ] |
| } |
| public_deps = [ |
| ":glmark2_headers", |
| ] |
| public_configs = [ ":glmark2_libmatrix_config" ] |
| } |
| } |
| |
| glmark2_libmatrix("glmark2_libmatrix_gles") { |
| deps = [ |
| ":glmark2_gles", |
| ] |
| } |
| |
| glmark2_libmatrix("glmark2_libmatrix_gl") { |
| deps = [ |
| ":glmark2_gl", |
| ] |
| } |
| |
| config("glmark2_scene_ideas_config") { |
| include_dirs = [ "src/src/scene-ideas" ] |
| } |
| |
| template("glmark2_scene_ideas") { |
| source_set(target_name) { |
| forward_variables_from(invoker, "*") |
| sources = [ |
| "src/src/scene-ideas/a.cc", |
| "src/src/scene-ideas/characters.h", |
| "src/src/scene-ideas/d.cc", |
| "src/src/scene-ideas/e.cc", |
| "src/src/scene-ideas/i.cc", |
| "src/src/scene-ideas/lamp.cc", |
| "src/src/scene-ideas/lamp.h", |
| "src/src/scene-ideas/logo.cc", |
| "src/src/scene-ideas/logo.h", |
| "src/src/scene-ideas/m.cc", |
| "src/src/scene-ideas/n.cc", |
| "src/src/scene-ideas/o.cc", |
| "src/src/scene-ideas/s.cc", |
| "src/src/scene-ideas/splines.cc", |
| "src/src/scene-ideas/splines.h", |
| "src/src/scene-ideas/t.cc", |
| "src/src/scene-ideas/table.cc", |
| "src/src/scene-ideas/table.h", |
| ] |
| public_configs = [ ":glmark2_scene_ideas_config" ] |
| } |
| } |
| |
| glmark2_scene_ideas("glmark2_scene_ideas_gles") { |
| deps = [ |
| ":glmark2_gles", |
| ":glmark2_libmatrix_gles", |
| ] |
| } |
| |
| glmark2_scene_ideas("glmark2_scene_ideas_gl") { |
| deps = [ |
| ":glmark2_gl", |
| ":glmark2_libmatrix_gl", |
| ] |
| } |
| |
| config("glmark2_scene_terrain_config") { |
| include_dirs = [ "src/src/scene-terrain" ] |
| } |
| |
| template("glmark2_scene_terrain") { |
| source_set(target_name) { |
| forward_variables_from(invoker, "*") |
| sources = [ |
| "src/src/scene-terrain/base-renderer.cpp", |
| "src/src/scene-terrain/blur-renderer.cpp", |
| "src/src/scene-terrain/copy-renderer.cpp", |
| "src/src/scene-terrain/luminance-renderer.cpp", |
| "src/src/scene-terrain/normal-from-height-renderer.cpp", |
| "src/src/scene-terrain/overlay-renderer.cpp", |
| "src/src/scene-terrain/renderer-chain.cpp", |
| "src/src/scene-terrain/renderer.h", |
| "src/src/scene-terrain/simplex-noise-renderer.cpp", |
| "src/src/scene-terrain/terrain-renderer.cpp", |
| "src/src/scene-terrain/texture-renderer.cpp", |
| ] |
| |
| public_configs = [ ":glmark2_scene_terrain_config" ] |
| } |
| } |
| |
| glmark2_scene_terrain("glmark2_scene_terrain_gles") { |
| deps = [ |
| ":glmark2_gles", |
| ":glmark2_libmatrix_gles", |
| ] |
| } |
| |
| glmark2_scene_terrain("glmark2_scene_terrain_gl") { |
| deps = [ |
| ":glmark2_gl", |
| ":glmark2_libmatrix_gl", |
| ] |
| } |
| |
| template("glmark2_common") { |
| source_set(target_name) { |
| forward_variables_from(invoker, "*") |
| sources = [ |
| "src/src/benchmark-collection.cpp", |
| "src/src/benchmark-collection.h", |
| "src/src/benchmark.cpp", |
| "src/src/benchmark.h", |
| "src/src/default-benchmarks.h", |
| "src/src/gl-headers.cpp", |
| "src/src/gl-visual-config.cpp", |
| "src/src/gl-visual-config.h", |
| "src/src/image-reader.cpp", |
| "src/src/image-reader.h", |
| "src/src/main-loop.cpp", |
| "src/src/main-loop.h", |
| "src/src/mesh.cpp", |
| "src/src/model.cpp", |
| "src/src/model.h", |
| "src/src/native-state.h", |
| "src/src/options.cpp", |
| "src/src/options.h", |
| "src/src/scene-buffer.cpp", |
| "src/src/scene-build.cpp", |
| "src/src/scene-bump.cpp", |
| "src/src/scene-clear.cpp", |
| "src/src/scene-collection.h", |
| "src/src/scene-conditionals.cpp", |
| "src/src/scene-default-options.cpp", |
| "src/src/scene-desktop.cpp", |
| "src/src/scene-effect-2d.cpp", |
| "src/src/scene-function.cpp", |
| "src/src/scene-grid.cpp", |
| "src/src/scene-ideas.cpp", |
| "src/src/scene-jellyfish.cpp", |
| "src/src/scene-jellyfish.h", |
| "src/src/scene-loop.cpp", |
| "src/src/scene-pulsar.cpp", |
| "src/src/scene-refract.cpp", |
| "src/src/scene-refract.h", |
| "src/src/scene-shading.cpp", |
| "src/src/scene-shadow.cpp", |
| "src/src/scene-terrain.cpp", |
| "src/src/scene-texture.cpp", |
| "src/src/scene.cpp", |
| "src/src/shared-library.cpp", |
| "src/src/text-renderer.cpp", |
| "src/src/text-renderer.h", |
| "src/src/texture.cpp", |
| ] |
| |
| public_deps += [ |
| ":glmark2_headers", |
| "${angle_libpng_dir}:libpng", |
| "${angle_root}/third_party:jpeg", |
| ] |
| } |
| } |
| |
| glmark2_common("glmark2_common_gles") { |
| public_deps = [ |
| ":glmark2_gles", |
| ":glmark2_libmatrix_gles", |
| ":glmark2_scene_ideas_gles", |
| ":glmark2_scene_terrain_gles", |
| ] |
| } |
| |
| glmark2_common("glmark2_common_gl") { |
| public_deps = [ |
| ":glmark2_gl", |
| ":glmark2_libmatrix_gl", |
| ":glmark2_scene_ideas_gl", |
| ":glmark2_scene_terrain_gl", |
| ] |
| } |
| |
| glmark2_version = "2017.07" |
| |
| template("glmark2_exe") { |
| executable(target_name) { |
| forward_variables_from(invoker, "*") |
| sources += [ |
| "src/src/canvas-generic.cpp", |
| "src/src/canvas-generic.h", |
| "src/src/main.cpp", |
| ] |
| data = [ |
| "src/data/", |
| ] |
| |
| defines += [ "GLMARK_VERSION=\"${glmark2_version}\"" ] |
| |
| if (is_win) { |
| defines += [ "GLMARK2_USE_WIN32" ] |
| sources += [ |
| "src/src/native-state-win32.cpp", |
| "src/src/native-state-win32.h", |
| ] |
| } |
| if (is_linux) { |
| defines += [ "GLMARK2_USE_X11" ] |
| sources += [ |
| "src/src/native-state-x11.cpp", |
| "src/src/native-state-x11.h", |
| ] |
| libs = [ "X11" ] |
| } |
| } |
| } |
| |
| glmark2_exe("glmark2_angle") { |
| sources = [ |
| "src/src/gl-state-egl.cpp", |
| ] |
| deps = [ |
| ":glmark2_common_gles", |
| ] |
| data_deps = [ |
| "${angle_root}:libEGL", |
| "${angle_root}:libGLESv2", |
| ] |
| |
| defines = [ |
| "EGL_EGL_PROTOTYPES=1", |
| "GLMARK2_USE_EGL", |
| ] |
| |
| if (is_linux && !is_component_build) { |
| # Set rpath to find shared libs in a non-component build. |
| public_configs = [ "//build/config/gcc:rpath_for_built_shared_libraries" ] |
| } |
| } |
| |
| if (is_linux) { |
| glmark2_exe("glmark2_glx") { |
| sources = [ |
| "src/src/gl-state-glx.cpp", |
| "src/src/glad/include/glad/glx.h", |
| "src/src/glad/src/glx.c", |
| ] |
| deps = [ |
| ":glmark2_common_gl", |
| ] |
| |
| defines = [ "GLMARK2_USE_GLX" ] |
| } |
| } |
| |
| # opengl32.lib/opengl32.dll are not available on Windows ARM64. |
| if (is_win && target_cpu != "arm64") { |
| glmark2_exe("glmark2_wgl") { |
| sources = [ |
| "src/src/gl-state-wgl.cpp", |
| ] |
| deps = [ |
| ":glmark2_common_gl", |
| ] |
| |
| libs = [ "opengl32.lib" ] |
| defines = [ "GLMARK2_USE_WGL" ] |
| } |
| } |