summaryrefslogtreecommitdiff
path: root/hadrian/build-cabal.bat
diff options
context:
space:
mode:
Diffstat (limited to 'hadrian/build-cabal.bat')
-rw-r--r--hadrian/build-cabal.bat41
1 files changed, 41 insertions, 0 deletions
diff --git a/hadrian/build-cabal.bat b/hadrian/build-cabal.bat
new file mode 100644
index 0000000000..aa0acab4e4
--- /dev/null
+++ b/hadrian/build-cabal.bat
@@ -0,0 +1,41 @@
+@echo off
+set CABAL=cabal
+set CABFLAGS=--disable-documentation --disable-profiling --disable-library-profiling
+
+rem It is currently more robust to pass Cabal an absolute path to the project file.
+set PROJ="%CD%/hadrian/cabal.project"
+
+if not exist %PROJ% (
+ echo Current working directory must be GHC's top-level folder
+ exit /B 2
+)
+
+"%CABAL%" 2> NUL
+if not %ERRORLEVEL% equ 1 (
+ echo Please make sure 'cabal' is in your PATH
+ exit /B 2
+)
+
+for /F "tokens=*" %%a in ('%CABAL% --numeric-version') do set CABVERSTR=%%a
+for /F "delims=. tokens=1,2,3,4" %%a in ("%CABVERSTR%") do (
+ set CABMAJOR=%%a
+ set CABMINOR=%%b
+ set CABREV=%%c
+ set CABPATCH=%%d
+)
+
+set "_cabal_ok=0"
+if %CABMAJOR% gtr 2 set _cabal_ok=1
+if %CABMAJOR% equ 2 (
+ if %CABMINOR% geq 2 set _cabal_ok=1
+)
+if %_cabal_ok% equ 1 (
+ "%CABAL%" --project-file=%PROJ% new-build %CABFLAGS% -j exe:hadrian
+ rem use new-exec instead of new-run to make sure that the build-tools (alex & happy) are in PATH
+ "%CABAL%" --project-file=%PROJ% new-exec %CABFLAGS% hadrian -- ^
+ --directory "%CD%" ^
+ %*
+) else (
+ echo Cabal version is too old; you need at least cabal-install 2.2
+ exit /B 2
+)