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:

Review URL: https://codereview.chromium.org/1580923002
diff --git a/public.bzl b/BUILD.public
similarity index 69%
rename from public.bzl
rename to BUILD.public
index 33ba89b..5816acd 100644
--- a/public.bzl
+++ b/BUILD.public
@@ -1,63 +1,13 @@
-################################################################################
-# Skylark macros
-################################################################################
+# Description:
+#   Skia graphics library.
+#
+#   Definitions for Google BUILD file.
 
-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
-################################################################################
+exports_files(["BUILD.public"])
 
 # All platform-independent SRCS.
-BASE_SRCS_ALL = struct(
-    include = [
+BASE_SRCS = glob(
+    [
         "include/private/*.h",
         "src/**/*.h",
         "src/**/*.cpp",
@@ -116,8 +66,8 @@
 )
 
 # Platform-dependent SRCS for google3-default platform.
-BASE_SRCS_UNIX = struct(
-    include = [
+BASE_SRCS_UNIX = glob(
+    [
         "src/codec/*",
         "src/fonts/SkFontMgr_fontconfig.cpp",
         "src/images/*",
@@ -164,8 +114,8 @@
 )
 
 # Platform-dependent SRCS for google3-default Android.
-BASE_SRCS_ANDROID = struct(
-    include = [
+BASE_SRCS_ANDROID = glob(
+    [
         "src/codec/*",
         "src/images/*",
         # TODO(benjaminwagner): Figure out how to compile with EGL.
@@ -209,8 +159,8 @@
 )
 
 # Platform-dependent SRCS for google3-default iOS.
-BASE_SRCS_IOS = struct(
-    include = [
+BASE_SRCS_IOS = glob(
+    [
         "src/opts/**/*.cpp",
         "src/opts/**/*.h",
         "src/ports/**/*.cpp",
@@ -253,38 +203,40 @@
     ],
 )
 
-################################################################################
-## SSSE3/SSE4/AVX/AVX2 SRCS
-################################################################################
+BASE_SRCS_PLATFORM = select({
+    CONDITION_ANDROID: BASE_SRCS_ANDROID,
+    CONDITION_IOS: BASE_SRCS_IOS,
+    "//conditions:default": BASE_SRCS_UNIX,
+})
 
-SSSE3_SRCS = struct(
-    include = [
+SSSE3_SRCS = glob(
+    [
         "src/opts/*SSSE3*.cpp",
         "src/opts/*ssse3*.cpp",
-    ])
+    ],
+)
 
-SSE4_SRCS = struct(
-    include = [
+SSE4_SRCS = glob(
+    [
         "src/opts/*SSE4*.cpp",
         "src/opts/*sse4*.cpp",
-    ])
+    ],
+)
 
-AVX_SRCS = struct(
-    include = [
+AVX_SRCS = glob(
+    [
         "src/opts/*_avx.cpp",
-    ])
+    ],
+)
 
-AVX2_SRCS = struct(
-    include = [
+AVX2_SRCS = glob(
+    [
         "src/opts/*_avx2.cpp",
-    ])
+    ],
+)
 
-################################################################################
-## BASE_HDRS
-################################################################################
-
-BASE_HDRS = struct(
-    include = [
+BASE_HDRS = glob(
+    [
         "include/**/*.h",
     ],
     exclude = [
@@ -295,28 +247,26 @@
         "include/views/**/*",
         "include/xml/SkBML_WXMLParser.h",
         "include/xml/SkBML_XMLParser.h",
-    ])
+    ],
+)
 
-################################################################################
-## BASE_DEPS
-################################################################################
-
-BASE_DEPS_ALL = []
-
+# Dependencies.
 BASE_DEPS_UNIX = [
-    ":opts_ssse3",
-    ":opts_sse4",
-    ":opts_avx",
     ":opts_avx2",
+    ":opts_avx",
+    ":opts_sse4",
+    ":opts_ssse3",
 ]
 
 BASE_DEPS_ANDROID = []
 
 BASE_DEPS_IOS = []
 
-################################################################################
-## INCLUDES
-################################################################################
+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 needed by Skia implementation.  Not public includes.
 INCLUDES = [
@@ -349,14 +299,13 @@
     "src/utils",
     "third_party/etc1",
     "third_party/ktx",
-]
+] + EXTERNAL_INCLUDES
 
-################################################################################
-## DM_SRCS
-################################################################################
+## :dm
 
-DM_SRCS_ALL = struct(
-    include = [
+# Platform-independent SRCS for DM.
+DM_SRCS = glob(
+    [
         "dm/*.cpp",
         "dm/*.h",
         "gm/*.c",
@@ -399,21 +348,20 @@
     ],
 )
 
-DM_SRCS_UNIX = struct()
+DM_SRCS_UNIX = []
 
-DM_SRCS_ANDROID = struct(
-    include = [
+DM_SRCS_ANDROID = glob(
+    [
         # Depends on Android HWUI library that is not available in google3.
         #"dm/DMSrcSinkAndroid.cpp",
         "tests/FontMgrAndroidParserTest.cpp",
     ],
 )
 
-DM_SRCS_IOS = struct()
-
-################################################################################
-## DM_INCLUDES
-################################################################################
+DM_PLATFORM_SRCS = select({
+    CONDITION_ANDROID: DM_SRCS_ANDROID,
+    "//conditions:default": DM_SRCS_UNIX,
+})
 
 DM_INCLUDES = [
     "gm",
@@ -430,44 +378,20 @@
     "tools/timer",
 ]
 
-################################################################################
-## DM_ARGS
-################################################################################
+COPTS_ANDROID = ["-mfpu=neon"]
 
-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_IOS = []
 
 COPTS_UNIX = [
     "-Wno-implicit-fallthrough",  # Some intentional fallthrough.
     "-Wno-deprecated-declarations",  # Internal use of deprecated methods. :(
 ]
 
-COPTS_ANDROID = ["-mfpu=neon"]
-
-COPTS_IOS = []
-
-COPTS_ALL = []
-
-################################################################################
-## DEFINES
-################################################################################
-
-DEFINES_UNIX = [
-    "SK_BUILD_FOR_UNIX",
-    "SK_SAMPLES_FOR_X",
-    "SK_SFNTLY_SUBSETTER",
-]
+COPTS = select({
+    CONDITION_ANDROID: COPTS_ANDROID,
+    CONDITION_IOS: COPTS_IOS,
+    "//conditions:default": COPTS_UNIX,
+})
 
 DEFINES_ANDROID = [
     "SK_BUILD_FOR_ANDROID",
@@ -480,6 +404,12 @@
     "SK_IGNORE_ETC1_SUPPORT",
 ]
 
+DEFINES_UNIX = [
+    "SK_BUILD_FOR_UNIX",
+    "SK_SAMPLES_FOR_X",
+    "SK_SFNTLY_SUBSETTER",
+]
+
 DEFINES_ALL = [
     # Chrome DEFINES.
     "SK_USE_FLOATBITS",
@@ -488,19 +418,88 @@
     "GOOGLE3",
 ]
 
-################################################################################
-## LINKOPTS
-################################################################################
+DEFINES = select({
+    CONDITION_ANDROID: DEFINES_ANDROID,
+    CONDITION_IOS: DEFINES_IOS,
+    "//conditions:default": DEFINES_UNIX,
+}) + DEFINES_ALL
 
-LINKOPTS_UNIX = []
+LINKOPTS = select({
+    CONDITION_ANDROID: [
+        "-ldl",
+        "-lEGL",
+    ],
+    "//conditions:default": ["-ldl"],
+})
 
-LINKOPTS_ANDROID = [
-    "-lEGL",
-]
+cc_library(
+    name = "opts_ssse3",
+    srcs = SSSE3_SRCS,
+    copts = COPTS + ["-mssse3"],
+    defines = DEFINES,
+    includes = INCLUDES,
+    deps = EXTERNAL_DEPS_ALL,
+)
 
-LINKOPTS_IOS = []
+cc_library(
+    name = "opts_sse4",
+    srcs = SSE4_SRCS,
+    copts = COPTS + ["-msse4"],
+    defines = DEFINES,
+    includes = INCLUDES,
+    deps = EXTERNAL_DEPS_ALL,
+)
 
-LINKOPTS_ALL = [
-    "-ldl",
-]
+cc_library(
+    name = "opts_avx",
+    srcs = AVX_SRCS,
+    copts = COPTS + ["-mavx"],
+    defines = DEFINES,
+    includes = INCLUDES,
+    deps = EXTERNAL_DEPS_ALL,
+)
 
+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,
+)