From 56f6d0652cb2bbe0d702b325f498f6e11d455bf2 Mon Sep 17 00:00:00 2001 From: benjaminwagner Date: Wed, 13 Jan 2016 10:45:19 -0800 Subject: [PATCH] Reland of Move BUILD.public to public.bzl. (patchset #1 id:1 of https://codereview.chromium.org/1580923002/ ) Reason for revert: Internal cl/111468120 is now ready to go. Original issue's description: > Revert of Move BUILD.public to public.bzl. (patchset #1 id:1 of https://codereview.chromium.org/1577353002/ ) > > Reason for revert: > Corresponding google-private changes not ready. > > Original issue's description: > > Move BUILD.public to public.bzl. > > > > This allows building with bazel (see http://bazel.io). > > > > BUG=skia: > > GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1577353002 > > > > Committed: https://skia.googlesource.com/skia/+/eeebfff54877b24151570c4f02b2299e3f9ef967 > > TBR=benjaminwagner@google.com,mtklein@google.com > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=skia: > > Committed: https://skia.googlesource.com/skia/+/330043c073de2ee63faa1caa3cb4170da68a79f2 TBR=mtklein@google.com,iroth@google.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/1584563004 --- BUILD.public => public.bzl | 305 +++++++++++++++++++------------------ 1 file changed, 153 insertions(+), 152 deletions(-) rename BUILD.public => public.bzl (70%) diff --git a/BUILD.public b/public.bzl similarity index 70% rename from BUILD.public rename to public.bzl index 5816acd2d6..33ba89b6fb 100644 --- a/BUILD.public +++ b/public.bzl @@ -1,13 +1,63 @@ -# Description: -# Skia graphics library. -# -# Definitions for Google BUILD file. +################################################################################ +# Skylark macros +################################################################################ -exports_files(["BUILD.public"]) +is_bazel = not hasattr(native, "genmpm") + +def portable_select(select_dict, bazel_condition, default_condition): + """Replaces select() with a Bazel-friendly wrapper. + + Args: + select_dict: Dictionary in the same format as select(). + Returns: + If Blaze platform, returns select() using select_dict. + If Bazel platform, returns dependencies for condition + bazel_condition, or empty list if none specified. + """ + if is_bazel: + return select_dict.get(bazel_condition, select_dict[default_condition]) + else: + return select(select_dict) + +def skia_select(conditions, results): + """Replaces select() for conditions [UNIX, ANDROID, IOS] + + Args: + conditions: [CONDITION_UNIX, CONDITION_ANDROID, CONDITION_IOS] + results: [RESULT_UNIX, RESULT_ANDROID, RESULT_IOS] + Returns: + The result matching the platform condition. + """ + if len(conditions) != 3 or len(results) != 3: + fail("Must provide exactly 3 conditions and 3 results") + + selector = {} + for i in range(3): + selector[conditions[i]] = results[i] + return portable_select(selector, conditions[2], conditions[0]) + +def skia_glob(srcs): + """Replaces glob() with a version that accepts a struct. + + Args: + srcs: struct(include=[], exclude=[]) + Returns: + Equivalent of glob(srcs.include, exclude=srcs.exclude) + """ + if hasattr(srcs, 'include'): + if hasattr(srcs, 'exclude'): + return native.glob(srcs.include, exclude=srcs.exclude) + else: + return native.glob(srcs.include) + return [] + +################################################################################ +## BASE_SRCS +################################################################################ # All platform-independent SRCS. -BASE_SRCS = glob( - [ +BASE_SRCS_ALL = struct( + include = [ "include/private/*.h", "src/**/*.h", "src/**/*.cpp", @@ -66,8 +116,8 @@ BASE_SRCS = glob( ) # Platform-dependent SRCS for google3-default platform. -BASE_SRCS_UNIX = glob( - [ +BASE_SRCS_UNIX = struct( + include = [ "src/codec/*", "src/fonts/SkFontMgr_fontconfig.cpp", "src/images/*", @@ -114,8 +164,8 @@ BASE_SRCS_UNIX = glob( ) # Platform-dependent SRCS for google3-default Android. -BASE_SRCS_ANDROID = glob( - [ +BASE_SRCS_ANDROID = struct( + include = [ "src/codec/*", "src/images/*", # TODO(benjaminwagner): Figure out how to compile with EGL. @@ -159,8 +209,8 @@ BASE_SRCS_ANDROID = glob( ) # Platform-dependent SRCS for google3-default iOS. -BASE_SRCS_IOS = glob( - [ +BASE_SRCS_IOS = struct( + include = [ "src/opts/**/*.cpp", "src/opts/**/*.h", "src/ports/**/*.cpp", @@ -203,40 +253,38 @@ BASE_SRCS_IOS = glob( ], ) -BASE_SRCS_PLATFORM = select({ - CONDITION_ANDROID: BASE_SRCS_ANDROID, - CONDITION_IOS: BASE_SRCS_IOS, - "//conditions:default": BASE_SRCS_UNIX, -}) +################################################################################ +## SSSE3/SSE4/AVX/AVX2 SRCS +################################################################################ -SSSE3_SRCS = glob( - [ +SSSE3_SRCS = struct( + include = [ "src/opts/*SSSE3*.cpp", "src/opts/*ssse3*.cpp", - ], -) + ]) -SSE4_SRCS = glob( - [ +SSE4_SRCS = struct( + include = [ "src/opts/*SSE4*.cpp", "src/opts/*sse4*.cpp", - ], -) + ]) -AVX_SRCS = glob( - [ +AVX_SRCS = struct( + include = [ "src/opts/*_avx.cpp", - ], -) + ]) -AVX2_SRCS = glob( - [ +AVX2_SRCS = struct( + include = [ "src/opts/*_avx2.cpp", - ], -) + ]) -BASE_HDRS = glob( - [ +################################################################################ +## BASE_HDRS +################################################################################ + +BASE_HDRS = struct( + include = [ "include/**/*.h", ], exclude = [ @@ -247,26 +295,28 @@ BASE_HDRS = glob( "include/views/**/*", "include/xml/SkBML_WXMLParser.h", "include/xml/SkBML_XMLParser.h", - ], -) + ]) + +################################################################################ +## BASE_DEPS +################################################################################ + +BASE_DEPS_ALL = [] -# Dependencies. BASE_DEPS_UNIX = [ - ":opts_avx2", - ":opts_avx", - ":opts_sse4", ":opts_ssse3", + ":opts_sse4", + ":opts_avx", + ":opts_avx2", ] BASE_DEPS_ANDROID = [] BASE_DEPS_IOS = [] -BASE_DEPS = select({ - CONDITION_ANDROID: BASE_DEPS_ANDROID + BASE_EXTERNAL_DEPS_ANDROID, - CONDITION_IOS: BASE_DEPS_IOS + BASE_EXTERNAL_DEPS_IOS, - "//conditions:default": BASE_DEPS_UNIX + BASE_EXTERNAL_DEPS_UNIX, -}) + EXTERNAL_DEPS_ALL +################################################################################ +## INCLUDES +################################################################################ # Includes needed by Skia implementation. Not public includes. INCLUDES = [ @@ -299,13 +349,14 @@ INCLUDES = [ "src/utils", "third_party/etc1", "third_party/ktx", -] + EXTERNAL_INCLUDES +] -## :dm +################################################################################ +## DM_SRCS +################################################################################ -# Platform-independent SRCS for DM. -DM_SRCS = glob( - [ +DM_SRCS_ALL = struct( + include = [ "dm/*.cpp", "dm/*.h", "gm/*.c", @@ -348,20 +399,21 @@ DM_SRCS = glob( ], ) -DM_SRCS_UNIX = [] +DM_SRCS_UNIX = struct() -DM_SRCS_ANDROID = glob( - [ +DM_SRCS_ANDROID = struct( + include = [ # Depends on Android HWUI library that is not available in google3. #"dm/DMSrcSinkAndroid.cpp", "tests/FontMgrAndroidParserTest.cpp", ], ) -DM_PLATFORM_SRCS = select({ - CONDITION_ANDROID: DM_SRCS_ANDROID, - "//conditions:default": DM_SRCS_UNIX, -}) +DM_SRCS_IOS = struct() + +################################################################################ +## DM_INCLUDES +################################################################################ DM_INCLUDES = [ "gm", @@ -378,20 +430,44 @@ DM_INCLUDES = [ "tools/timer", ] -COPTS_ANDROID = ["-mfpu=neon"] +################################################################################ +## DM_ARGS +################################################################################ -COPTS_IOS = [] +def DM_ARGS(base_dir): + return [ + "--nogpu", + "--verbose", + # TODO(mtklein): maybe investigate why these fail? + "--match ~FontMgr ~Scalar ~Canvas ~Codec_stripes ~Codec_Dimensions ~Codec ~Stream ~skps ~RecordDraw_TextBounds", + "--resourcePath %s/resources" % base_dir, + "--images %s/resources" % base_dir, + ] + +################################################################################ +## COPTS +################################################################################ COPTS_UNIX = [ "-Wno-implicit-fallthrough", # Some intentional fallthrough. "-Wno-deprecated-declarations", # Internal use of deprecated methods. :( ] -COPTS = select({ - CONDITION_ANDROID: COPTS_ANDROID, - CONDITION_IOS: COPTS_IOS, - "//conditions:default": COPTS_UNIX, -}) +COPTS_ANDROID = ["-mfpu=neon"] + +COPTS_IOS = [] + +COPTS_ALL = [] + +################################################################################ +## DEFINES +################################################################################ + +DEFINES_UNIX = [ + "SK_BUILD_FOR_UNIX", + "SK_SAMPLES_FOR_X", + "SK_SFNTLY_SUBSETTER", +] DEFINES_ANDROID = [ "SK_BUILD_FOR_ANDROID", @@ -404,12 +480,6 @@ DEFINES_IOS = [ "SK_IGNORE_ETC1_SUPPORT", ] -DEFINES_UNIX = [ - "SK_BUILD_FOR_UNIX", - "SK_SAMPLES_FOR_X", - "SK_SFNTLY_SUBSETTER", -] - DEFINES_ALL = [ # Chrome DEFINES. "SK_USE_FLOATBITS", @@ -418,88 +488,19 @@ DEFINES_ALL = [ "GOOGLE3", ] -DEFINES = select({ - CONDITION_ANDROID: DEFINES_ANDROID, - CONDITION_IOS: DEFINES_IOS, - "//conditions:default": DEFINES_UNIX, -}) + DEFINES_ALL +################################################################################ +## LINKOPTS +################################################################################ -LINKOPTS = select({ - CONDITION_ANDROID: [ - "-ldl", - "-lEGL", - ], - "//conditions:default": ["-ldl"], -}) +LINKOPTS_UNIX = [] -cc_library( - name = "opts_ssse3", - srcs = SSSE3_SRCS, - copts = COPTS + ["-mssse3"], - defines = DEFINES, - includes = INCLUDES, - deps = EXTERNAL_DEPS_ALL, -) +LINKOPTS_ANDROID = [ + "-lEGL", +] -cc_library( - name = "opts_sse4", - srcs = SSE4_SRCS, - copts = COPTS + ["-msse4"], - defines = DEFINES, - includes = INCLUDES, - deps = EXTERNAL_DEPS_ALL, -) +LINKOPTS_IOS = [] -cc_library( - name = "opts_avx", - srcs = AVX_SRCS, - copts = COPTS + ["-mavx"], - defines = DEFINES, - includes = INCLUDES, - deps = EXTERNAL_DEPS_ALL, -) +LINKOPTS_ALL = [ + "-ldl", +] -cc_library( - name = "opts_avx2", - srcs = AVX2_SRCS, - copts = COPTS + ["-mavx2"], - defines = DEFINES, - includes = INCLUDES, - deps = EXTERNAL_DEPS_ALL, -) - -# If you need Ganesh (GPU) support in Skia, please contact skia-team@google.com -# for help. -cc_library( - name = "skia", - srcs = BASE_SRCS + BASE_SRCS_PLATFORM, - hdrs = BASE_HDRS, - copts = COPTS, - defines = DEFINES, - includes = INCLUDES, - linkopts = LINKOPTS, - visibility = [":skia_clients"], - deps = BASE_DEPS, - alwayslink = 1, -) - -cc_test( - name = "dm", - size = "large", - srcs = DM_SRCS + DM_PLATFORM_SRCS, - args = [ - "--nogpu", - "--verbose", - # TODO(mtklein): maybe investigate why these fail? - "--match ~FontMgr ~Scalar ~Canvas ~Codec_stripes ~Codec_Dimensions ~Codec ~Stream ~skps ~RecordDraw_TextBounds", - "--resourcePath %s/resources" % BASE_DIR, - "--images %s/resources" % BASE_DIR, - ], - copts = COPTS, - data = glob(["resources/**/*"]), - defines = DEFINES, - includes = DM_INCLUDES, - deps = DM_EXTERNAL_DEPS + [ - ":skia", - ] + EXTERNAL_DEPS_ALL, -)