Haskell Makefile parser
MIT License
Parse and generate Makefile
s. The project is available on hackage
(latest).
# Define compiler
CC:=gcc
# Define lazy compiler
LC=ghc
all: hello
hello: foo bar
$(CC) baz.o
Running parseMakefile :: IO (Either String Makefile)
(pretty-printed for
convenience):
Right
( Makefile
{ entries =
[ Assignment SimpleAssign "CC" "gcc"
, Assignment RecursiveAssign "LC" "ghc"
, Rule
(Target "all")
[Dependency "hello"]
[]
, Rule
(Target "hello")
[ Dependency "foo"
, Dependency "bar"
]
[Command "$(CC) baz.o"]
]
}
)
myMakefile :: Makefile
myMakefile =
Makefile
{ entries =
[ Assignment SimpleAssign "foo" "bar"
, Rule (Target "baz") [Dependency "qux"] [Command "rm -rf /"]
]
}
Running encodeMakefile :: Makefile -> Text
:
foo:=bar
baz: qux
rm -rf /
Make sure you're on (latest) master.
Bump the version in makefile.cabal
: 0.MAJOR.MINOR.PATCH
.
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.
makefile.cabal
file with commit name Release v1.MAJOR.MINOR.PATCH
, as well as the updated documentation.git tag v1.MAJOR.MINOR.PATCH
.stack upload --pvp-bounds both .
to upload makefile
to hackage
.git push --follow-tags
.