module Package where
-import Pretty
-
-data Package = Package {
- name :: String,
- import_dirs :: [String],
- library_dirs :: [String],
- hs_libraries :: [String],
- extra_libraries :: [String],
- include_dirs :: [String],
- c_includes :: [String],
- package_deps :: [String],
- extra_ghc_opts :: [String],
- extra_cc_opts :: [String],
- extra_ld_opts :: [String]
- }
- deriving Read
-
-listPkgs :: [Package] -> String
-listPkgs pkgs = render (fsep (punctuate comma (map (text . name) pkgs)))
-
-dumpPackages :: [Package] -> String
-dumpPackages pkgs =
- render (brackets (vcat (punctuate comma (map dumpPkgGuts pkgs))))
-
-dumpPkgGuts :: Package -> Doc
-dumpPkgGuts pkg =
- text "Package" $$ nest 3 (braces (
- sep (punctuate comma [
- text "name = " <> text (show (name pkg)),
- dumpField "import_dirs" (import_dirs pkg),
- dumpField "library_dirs" (library_dirs pkg),
- dumpField "hs_libraries" (hs_libraries pkg),
- dumpField "extra_libraries" (extra_libraries pkg),
- dumpField "include_dirs" (include_dirs pkg),
- dumpField "c_includes" (c_includes pkg),
- dumpField "package_deps" (package_deps pkg),
- dumpField "extra_ghc_opts" (extra_ghc_opts pkg),
- dumpField "extra_cc_opts" (extra_cc_opts pkg),
- dumpField "extra_ld_opts" (extra_ld_opts pkg)
- ])))
-
-dumpField :: String -> [String] -> Doc
-dumpField name val =
- hang (text name <+> equals) 2
- (brackets (sep (punctuate comma (map (text . show) val))))
+#include "../utils/ghc-pkg/Package.hs"