Build nofib-analyse with cabal v2-build
authorOleg Grenrus <oleg.grenrus@iki.fi>
Mon, 18 Feb 2019 13:03:21 +0000 (15:03 +0200)
committerOleg Grenrus <oleg.grenrus@iki.fi>
Mon, 18 Feb 2019 13:03:21 +0000 (15:03 +0200)
.gitignore
README.md
mk/target.mk
nofib-analyse/Makefile
nofib-analyse/cabal.project [new file with mode: 0644]
nofib-analyse/nofib-analyse.cabal [new file with mode: 0644]

index 80345db..d884c44 100644 (file)
@@ -8,6 +8,8 @@ cachegrind.out.*
 cachegrind.out.summary
 perf.data
 perf.data.*
+dist-newstyle/
+.ghc.environment.*
 
 # Specific generated files
 nofib-analyse/nofib-analyse
index 6e610a6..005db88 100644 (file)
--- a/README.md
+++ b/README.md
@@ -12,13 +12,6 @@ pick `$(which ghc)` or whatever the `HC` environment variable is set to.
 Additional information can also be found on
 [NoFib's wiki page](https://ghc.haskell.org/trac/ghc/wiki/Building/RunningNoFib).
 
-## Package Depedencies
-
-Please make sure you have the following packages installed for your
-system GHC:
- * html
- * regex-compat (will install: mtl, regex-base, regex-posix)
-
 ## Using
 
 <details>
@@ -34,11 +27,7 @@ system GHC:
   `git clone -c core.symlinks=true <URL>`.
 </details>
 
-Install the [package dependencies](#package-dependencies):
-
-```
-$ cabal install html regex-compat
-```
+Install [`cabal-install-2.4`](https://www.haskell.org/cabal/download.html) or later.
 
 Then, to run the tests, execute:
 
@@ -61,7 +50,7 @@ $ make EXTRA_HC_OPTS="-fllvm"
 ```
 
 To compare the results of multiple runs, save the output in a logfile
-and use the program in `../utils/nofib-analyse`, for example:
+and use the program in `./nofib-analyse/nofib-analyse`, for example:
 
 ```
 ...
@@ -115,6 +104,19 @@ This is the default of its `-i` option, which is of course incompatible with
 `mode=fast`. In that case, you should just set `-i` as appropriate, even
 deactivate it with `-i 0`.
 
+## Boot vs. benchmarked GHC
+
+The `nofib-analyse` utility is compiled with `BOOT_HC` compiler,
+which may be different then the GHC under the benchmark.
+
+You can control which GHC you benchmark with `HC` variable
+
+```
+$ make clean
+$ make boot HC=ghc-head
+$ make HC=ghc-head 2>&1 | tee nofib-log-ghc-head
+```
+
 ## Configuration
 
 There are some options you might want to tweak; search for nofib in
index a8c92a2..3239feb 100644 (file)
@@ -37,7 +37,6 @@ STDIN_FILE = $(wildcard $(NOFIB_PROG).stdin)
 endif
 endif
 
-
 # Bogosity needed here to cope with .exe suffix for strip & size files.
 # (shouldn't have to be our problem.)
 ifneq "$(HC_FAIL)" "YES"
index 0e9236b..229f804 100644 (file)
@@ -4,7 +4,8 @@ include $(TOP)/mk/boilerplate.mk
 PROG = nofib-analyse
 
 $(PROG): *.hs
-       $(BOOT_HC) -O -cpp --make Main -o $(PROG)
+       cabal v2-build -w $(BOOT_HC)
+       cp $$(cabal v2-exec -w $(BOOT_HC) -- which $(PROG)) $(PROG)
 
 all :: $(PROG)
 
@@ -16,8 +17,7 @@ boot :: $(PROG)
 .PHONY: mostlyclean clean distclean maintainer-clean
 
 mostlyclean::
-       rm -f CmdLine.hi GenUtils.hi Main.hi Slurp.hi
-       rm -f CmdLine.o  GenUtils.o  Main.o  Slurp.o
+       rm -rf dist-newstyle
 
 clean:: mostlyclean
        rm -f $(PROG)
diff --git a/nofib-analyse/cabal.project b/nofib-analyse/cabal.project
new file mode 100644 (file)
index 0000000..229326e
--- /dev/null
@@ -0,0 +1,2 @@
+-- project file for "boot" utilities
+packages: .
diff --git a/nofib-analyse/nofib-analyse.cabal b/nofib-analyse/nofib-analyse.cabal
new file mode 100644 (file)
index 0000000..371b0a3
--- /dev/null
@@ -0,0 +1,17 @@
+cabal-version: 2.4
+name:          nofib-analyse
+version:       0
+
+executable nofib-analyse
+  default-language: Haskell2010
+  main-is:          Main.hs
+  other-modules:
+    CmdLine
+    GenUtils
+    Slurp
+
+  build-depends:
+    , array
+    , base
+    , containers
+    , regex-compat