diff options
Diffstat (limited to 'third_party/bazel/rules_haskell/haskell/platforms')
-rw-r--r-- | third_party/bazel/rules_haskell/haskell/platforms/BUILD.bazel | 39 | ||||
-rw-r--r-- | third_party/bazel/rules_haskell/haskell/platforms/list.bzl | 44 |
2 files changed, 83 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/haskell/platforms/BUILD.bazel b/third_party/bazel/rules_haskell/haskell/platforms/BUILD.bazel new file mode 100644 index 000000000000..6edf86824e27 --- /dev/null +++ b/third_party/bazel/rules_haskell/haskell/platforms/BUILD.bazel @@ -0,0 +1,39 @@ +# This file declares constraint values for each platform supported by +# GHC. These rules follow the GHC naming convention, for example, +# //haskell/platform:linux and //haskell/platform:x86_64. See the +# config.guess in any GHC source distribution for possible platforms. +# +# These can be used in select expressions to choose platform-specifc +# sources and dependencies. + +load(":list.bzl", "declare_config_settings") + +declare_config_settings() + +constraint_value( + name = "nixpkgs", + constraint_setting = "@bazel_tools//tools/cpp:cc_compiler", + visibility = ["//visibility:public"], +) + +platform( + name = "linux_x86_64_nixpkgs", + constraint_values = [ + # XXX using the platform names defined here results in a graph + # cycle for some reason. + "@bazel_tools//platforms:x86_64", + "@bazel_tools//platforms:linux", + ":nixpkgs", + ], + visibility = ["//visibility:public"], +) + +platform( + name = "darwin_x86_64_nixpkgs", + constraint_values = [ + "@bazel_tools//platforms:x86_64", + "@bazel_tools//platforms:osx", + ":nixpkgs", + ], + visibility = ["//visibility:public"], +) diff --git a/third_party/bazel/rules_haskell/haskell/platforms/list.bzl b/third_party/bazel/rules_haskell/haskell/platforms/list.bzl new file mode 100644 index 000000000000..d71be41690cc --- /dev/null +++ b/third_party/bazel/rules_haskell/haskell/platforms/list.bzl @@ -0,0 +1,44 @@ +OS = { + "aix": None, + "darwin": "@bazel_tools//platforms:osx", + "dragonfly": None, + "freebsd": "@bazel_tools//platforms:freebsd", + "haiku": None, + "hpux": None, + "ios": "@bazel_tools//platforms:ios", + "linux_android": "@bazel_tools//platforms:android", + "linux": "@bazel_tools//platforms:linux", + "mingw32": "@bazel_tools//platforms:windows", + "netbsd": None, + "openbsd": None, + "solaris2": None, +} + +ARCH = { + "aarch64": None, + "alpha": None, + "arm64": "@bazel_tools//platforms:aarch64", + "arm": "@bazel_tools//platforms:arm", + "i386": "@bazel_tools//platforms:x86_32", + "ia64": None, + "powerpc64": None, + "powerpc64le": None, + "powerpc": "@bazel_tools//platforms:ppc", + "rs6000": None, + "sparc": None, + "x86_64": "@bazel_tools//platforms:x86_64", +} + +def declare_config_settings(): + for os, constraint_value in OS.items(): + if constraint_value: + native.config_setting( + name = os, + constraint_values = [constraint_value], + ) + for arch, constraint_value in ARCH.items(): + if constraint_value: + native.config_setting( + name = arch, + constraint_values = [constraint_value], + ) |