./config.status %@
}
-goal clean = {
- for d in %subdirs; do
- pushd $d
- rm -f *~
- rm -f *.cmi *.cmo *.cmx *.o
- popd
- done
+goal clean = : wrap ("clean-subdir", subdirs), clean-subdir ("."), clean-other
+
+goal clean-subdir (dir) = {
+ cd %dir
+ rm -f *~
+ rm -f *.cmi *.cmo *.cmx *.o
+}
+
+goal clean-other = {
rm -f src/parser.ml src/parser.mli src/lexer.ml src/parser.conflicts
- rm -f docs/*.1
+ rm -f man/*.1 man/*.5
+ rm -f tests/*.log
# We don't delete src/goals because it is required to do builds.
# If you want to really delete it, use the maintainer-clean rule.
#----------------------------------------------------------------------
# Build the goals tool itself.
+let CC = "@CC@"
+let OCAMLLIB = "@OCAMLLIB@"
let MENHIR = "@MENHIR@"
let OCAMLDEP = "@OCAMLDEP@"
let OCAMLFIND = "@OCAMLFIND@"
let OCAMLLEX = "@OCAMLLEX@"
-# XXX
-let OCAMLFLAGS = [ "-g", "-safe-string", "-warn-error", "CDEFLMPSUVYZX+52-3" ]
-let OCAMLPACKAGES = [ "-package", "str,unix", "-I", "src" ]
-#let OCAMLFLAGS = "@OCAMLFLAGS@"
-#let OCAMLPACKAGES = "@OCAMLPACKAGES@"
+let CFLAGS = join (split ("@CFLAGS@"), ["-I%OCAMLLIB", "-I."])
+let OCAMLFLAGS = split ("@OCAMLFLAGS@")
+let OCAMLPACKAGES = join (split ("@OCAMLPACKAGES@"), ["-I", "src"])
let objects = [
# These must be in dependency order.
"src/config.cmx",
+ "src/utils-c.o",
"src/utils.cmx",
"src/cmdline.cmx",
+ "src/jobs.cmx",
"src/ast.cmx",
"src/parser.cmx",
"src/lexer.cmx",
"src/parse.cmx",
"src/eval.cmx",
+ "src/deps.cmx",
"src/run.cmx",
"src/main.cmx"
]
goal tool = : ocaml_link ("src/goals", objects) ;
+# C code.
+"src/utils-c.o" : "src/utils-c.c" {
+ %CC %CFLAGS -c %< -o %@
+}
+
# Parser.
"src/parser.mli", "src/parser.ml" : "src/parser.mly" {
%MENHIR --explain %<
let POD2MAN = "@POD2MAN@"
-goal documentation = : pod2man ("goals", "1")
+goal documentation = : pod2man ("goals", "1"),
+ pod2man ("Goalfile", "5")
goal pod2man (page, section) =
"man/%page.%section" : "docs/%page.pod" {
rm -f %@ %@-t
+ mkdir -p man
%POD2MAN \
-u \
-c "goals" \
--release "@PACKAGE_NAME@-@PACKAGE_VERSION@" \
--section %section %< > %@-t
mv %@-t %@
-}
\ No newline at end of file
+}
+
+#----------------------------------------------------------------------
+# Tests.
+
+let tests = wrap ("test", wildcard ("tests/*.sh"))
+
+goal check () = : tests
+
+goal test (name) = @{
+ t=`basename %name`
+ cd tests
+ if ../run ./$t > $t.log 2>&1; then
+ print_green "PASS:" $t
+ else
+ print_red "FAIL:" $t
+ exit 1
+ fi
+}
+
+#----------------------------------------------------------------------
+# Install.
+
+# DESTDIR can be overridden on the command line to install into
+# a subdirectory.
+let DESTDIR = ""
+
+let stdlibfiles = [wildcard ("stdlib/*.gl"), wildcard ("stdlib/*.sh")]
+
+goal install = {
+ # exec_prefix die die die
+ bindir="@prefix@/bin"
+ datadir="@prefix@/share"
+ mkdir -p %DESTDIR/"$bindir"
+ mkdir -p %DESTDIR/"$datadir/goals"
+ install src/goals %DESTDIR/"$bindir" -m 0755
+ install %stdlibfiles %DESTDIR/"$datadir"/goals -m 644
+}