aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2021-03-01 19:29:41 -0800
committerJohn MacFarlane <[email protected]>2021-03-01 19:29:41 -0800
commitf6edde944e73ada7eb4965bd2ece381f3e2a47bc (patch)
treec82c99fe374892df1326b9c1b0a52f357731a908
parent26c496d93647dd589af6c07c2273801ff7b49950 (diff)
Add lowmem flag.lowmem
This disables optimizations in select modules that cause problems compiling in lower memory environments. (LaTeX reader, LaTeX and Markdown writers) Performance is 10x slower for reading LaTeX, 20% slower for writing Markdown and LaTeX.
-rw-r--r--INSTALL.md8
-rw-r--r--pandoc.cabal8
-rw-r--r--src/Text/Pandoc/Readers/LaTeX.hs3
-rw-r--r--src/Text/Pandoc/Writers/LaTeX.hs4
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs4
5 files changed, 25 insertions, 2 deletions
diff --git a/INSTALL.md b/INSTALL.md
index d23c349c1..80bf9f4da 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -296,8 +296,12 @@ You will need cabal version 2.0 or higher.
- `embed_data_files`: embed all data files into the binary (default no).
This is helpful if you want to create a relocatable binary.
- - `https`: enable support for downloading resources over https
- (using the `http-client` and `http-client-tls` libraries).
+ - `lowmem`: disable optimization on a few modules that take
+ a lot of memory to compile. Use this flag if compiling
+ pandoc fails with out of memory errors.
+
+ - `trypandoc`: build the `trypandoc` executable (a CGI web
+ app).
3. Build:
diff --git a/pandoc.cabal b/pandoc.cabal
index ad325ee24..b588c5714 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -392,6 +392,12 @@ flag embed_data_files
Description: Embed data files in binary for relocatable executable.
Default: False
+flag lowmem
+ Description: Disable optimization on three modules that need a lot
+ of memory to compile. Set this flag if your pandoc
+ build is failing due to out of memory errors.
+ Default: False
+
flag trypandoc
Description: Build trypandoc cgi executable.
Default: False
@@ -505,6 +511,8 @@ library
if flag(embed_data_files)
cpp-options: -DEMBED_DATA_FILES
other-modules: Text.Pandoc.Data
+ if flag(lowmem)
+ cpp-options: -DLOWMEM
hs-source-dirs: src
exposed-modules: Text.Pandoc,
diff --git a/src/Text/Pandoc/Readers/LaTeX.hs b/src/Text/Pandoc/Readers/LaTeX.hs
index fc85f0545..2d5d57ae2 100644
--- a/src/Text/Pandoc/Readers/LaTeX.hs
+++ b/src/Text/Pandoc/Readers/LaTeX.hs
@@ -1,4 +1,7 @@
{-# LANGUAGE CPP #-}
+#ifdef LOWMEM
+{-# OPTIONS_GHC -O0 #-}
+#endif
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternGuards #-}
{-# LANGUAGE ScopedTypeVariables #-}
diff --git a/src/Text/Pandoc/Writers/LaTeX.hs b/src/Text/Pandoc/Writers/LaTeX.hs
index e31ec9d52..4a359203f 100644
--- a/src/Text/Pandoc/Writers/LaTeX.hs
+++ b/src/Text/Pandoc/Writers/LaTeX.hs
@@ -1,3 +1,7 @@
+{-# LANGUAGE CPP #-}
+#ifdef LOWMEM
+{-# OPTIONS_GHC -O0 #-}
+#endif
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternGuards #-}
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index d33246a63..e3725bcf9 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -1,3 +1,7 @@
+{-# LANGUAGE CPP #-}
+#ifdef LOWMEM
+{-# OPTIONS_GHC -O0 #-}
+#endif
{-# LANGUAGE MultiWayIf #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}