diff options
Diffstat (limited to 'third_party/bazel/rules_haskell/haskell/ghc.BUILD')
-rw-r--r-- | third_party/bazel/rules_haskell/haskell/ghc.BUILD | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/third_party/bazel/rules_haskell/haskell/ghc.BUILD b/third_party/bazel/rules_haskell/haskell/ghc.BUILD new file mode 100644 index 000000000000..67a42b0817ed --- /dev/null +++ b/third_party/bazel/rules_haskell/haskell/ghc.BUILD @@ -0,0 +1,83 @@ +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "bin", + srcs = glob(["bin/*"]), +) + +cc_library( + name = "threaded-rts", + srcs = glob( + ["lib/ghc-*/rts/libHSrts_thr-ghc*." + ext for ext in [ + "so", + "dylib", + ]] + + # dependency of `libHSrts_thr_ghc*` + # globbing on the `so` version to stay working when they update + [ + "lib/ghc-*/rts/libffi.so.*", + ], + ), + hdrs = glob(["lib/ghc-*/include/**/*.h"]), + strip_include_prefix = glob( + ["lib/ghc-*/include"], + exclude_directories = 0, + )[0], +) + +# TODO: detect this more automatically. +cc_library( + name = "unix-includes", + hdrs = glob(["lib/ghc-*/unix-*/include/*.h"]), + includes = glob( + ["lib/ghc-*/unix-*/include"], + exclude_directories = 0, + ), +) + +# This is needed for Hazel targets. +cc_library( + name = "rts-headers", + hdrs = glob([ + "lib/ghc-*/include/**/*.h", + "lib/include/**/*.h", + ]), + includes = glob( + [ + "lib/ghc-*/include", + "lib/include", + ], + exclude_directories = 0, + ), +) + +# Expose embedded MinGW toolchain when on Windows. + +filegroup( + name = "empty", + srcs = [], +) + +cc_toolchain_suite( + name = "toolchain", + toolchains = { + "x64_windows": ":cc-compiler-mingw64", + "x64_windows|ghc-mingw-gcc": ":cc-compiler-mingw64", + }, +) + +# Keep in sync with @bazel_tools//cpp:cc-compiler-x64_windows definition. +cc_toolchain( + name = "cc-compiler-mingw64", + all_files = ":empty", + ar_files = ":empty", + as_files = ":empty", + compiler_files = ":empty", + cpu = "x64_windows", + dwp_files = ":empty", + linker_files = ":empty", + objcopy_files = ":empty", + strip_files = ":empty", + supports_param_files = 0, + toolchain_identifier = "ghc_windows_mingw64", +) |