diff --git a/.ghci b/.ghci
new file mode 100644
--- /dev/null
+++ b/.ghci
@@ -0,0 +1,7 @@
+:set -Ihsrc:hsrc/defaults
+:set -pgmP hsrc/fudcpp
+:set -XRank2Types -XExistentialQuantification -XMultiParamTypeClasses
+:set -XFunctionalDependencies
+:set -XFlexibleInstances -XFlexibleContexts -XTypeSynonymInstances
+:set -iContrib:hsrc:hsrc/utils:hsrc/sp:hsrc/types:hsrc/xtypes:hsrc/combinators:hsrc/containers:hsrc/drawing:hsrc/filters:hsrc/fudgets:hsrc/defaults:hsrc/internals:hsrc/kernelutils:hsrc/layout:hsrc/infix:hsrc/lowlevel:hsrc/io:hsrc/debug:hsrc/ghc-dialogue:hsrc/ghc:hsrc/hbc_library
+:set -fno-warn-tabs
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Release history for fudgets
 
+## 0.18.3.2 --  2022-08-04
+
+* Simplified the installation on macOS by adding a helper script
+  `hsrc/fudcpp` to workaround problems with the `-optP`  option in
+  `ghc>=8.10.3` and automatically detect which version of `gcc` is installed.
+  
 ## 0.18.3.1 -- 2022-03-14
 
 * Renamed `doRequest.hs` to `doRequestCmd.hs` to avoid a name clash
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -49,23 +49,20 @@
 
 ### On Linux systems
 
-- `sudo apt install libxext-dev` (installs Xlib etc on Debian-based
-  distributions, the command will be different on other Linux distributions.)
+- `sudo apt install libxext-dev`
 - `cabal install fudgets`
 
+(The first command installs Xlib etc on Debian-based distributions,
+the command and package name may be different on other Linux distributions.)
+
 ### On macOS
 
 - Install [XQuartz](https://www.xquartz.org/).
-- `brew install gcc` (need the version of `cpp` included with gcc, since there
-  are some issues with cpp from clang.
-  Note: `fudgets.cabal` refers to `cpp-11`, you might need to change this
-  if you install a different version of gcc.)
-
-- If you are using ghc>=8.10.3: unfortunately it seems that the
-  `-pgmP` option no longer works, so you need to
-  change a line in `$PREFIX/lib/ghc-*/lib/settings` instead:
-
-    ```  ,("Haskell CPP command", "gcc-11")```
-
+- Install [Homebrew](https://brew.sh/).
+- `brew install gcc`
 - `cabal install fudgets`
 
+(The preprocessor in `clang` does not preserve layout, so we use `gcc`
+instead. Also, with ghc>=8.10.3 there seems to be problem with the `-optP`
+option, so we use a helper script `hsrc/fudcpp` to call `cpp` with the
+correct options.)
diff --git a/fudgets.cabal b/fudgets.cabal
--- a/fudgets.cabal
+++ b/fudgets.cabal
@@ -1,6 +1,6 @@
 Name: fudgets
 -- The version number also appears in hsrc/utils/FudVersion.hs
-Version: 0.18.3.1
+Version: 0.18.3.2
 Cabal-Version: >=1.10
 Synopsis: The Fudgets Library
 Homepage: https://www.altocumulus.org/Fudgets/
@@ -16,16 +16,20 @@
              .
              This package includes the Fudgets library and a few small
              examples and demo applications.
+             .
+             For installation instructions, see the last section of the Readme.
 
 Author: Thomas Hallgren and Magnus Carlsson and others
 Maintainer: Thomas Hallgren
 Build-Type: Simple
 License: OtherLicense
 License-File: COPYRIGHT
-Tested-With: GHC==7.4.1, GHC==7.6.3, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.3, GHC==8.8.2, GHC==8.10.2, GHC==8.10.7, GHC==9.0.2, GHC==9.2.2
+Tested-With: GHC==7.4.1, GHC==7.6.3, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.3, GHC==8.8.2, GHC==8.10.2, GHC==8.10.7, GHC==9.0.2, GHC==9.2.4
 
 Extra-Source-Files: README.md
                     ChangeLog.md
+                    .ghci
+                    hsrc/fudcpp
                     hsrc/exists.h
                     hsrc/defaults/defaults.h
                     hsrc/ghc-dialogue/asyncinput.h
@@ -87,16 +91,10 @@
   if os(darwin)
     Extra-lib-dirs: /opt/X11/lib 
     Include-dirs: /opt/X11/include
-    -- Run 'brew install gcc', then you should have gcc-11 and cpp-11, or
-    -- possibly another version, in which case you need to adapt the line below:
-    if impl(ghc<8.10.3)
-      -- Use the -pgmP in ghc<8.10.3
-      ghc-options: -pgmP cpp-11 -optP -traditional
-    --else
-      -- Unfortunately -pgmP doesn't work in ghc>=8.10.3, so you need to
-      -- change a line in $PREFIX/lib/ghc-*/lib/settings insead:
-      -- ,("Haskell CPP command", "gcc-11")
-
+--  ghc-options: -pgmP cpp-11 -optP -traditional     -- this no longer works
+    ghc-options: -pgmP hsrc/fudcpp
+        -- The hsrc/fudcpp is used to work around problems with clang and ghc.
+        -- You need to install gcc, e.g. by running 'brew install gcc',
   Extra-Libraries: X11 Xext
 
   ghc-options: -fno-warn-tabs
diff --git a/hsrc/fudcpp b/hsrc/fudcpp
new file mode 100644
--- /dev/null
+++ b/hsrc/fudcpp
@@ -0,0 +1,27 @@
+#! /bin/bash
+
+# This script is used on macOS to workaround two problems:
+#
+# 1. The preprocessor in clang does not preserve layout, so we use the
+#    preprocessor in gcc instead.
+# 2. There seems to be a problem with the -optP option with ghc>=8.10.3,
+#    so we can no longer use e.g. 'ghc -pgmP cpp-11 -optP -traditional'
+
+# To install gcc, install Homebrew (see https://brew.sh),
+# then run 'brew install gcc'
+
+cpp=cpp
+case `uname` in
+    Darwin)
+	# Since gcc is an alias for clang on macOS, gcc proper is only
+	# available in the path with a version suffix, so we need to
+	# detect which version of gcc is installed.
+	for v in $(seq 6 13) ; do
+	    if which cpp-$v >/dev/null ; then
+		cpp=cpp-$v
+	    fi
+	done
+	;;
+esac
+
+$cpp -traditional "$@"
diff --git a/hsrc/ghc-dialogue/AsyncInput.hs b/hsrc/ghc-dialogue/AsyncInput.hs
--- a/hsrc/ghc-dialogue/AsyncInput.hs
+++ b/hsrc/ghc-dialogue/AsyncInput.hs
@@ -53,8 +53,8 @@
 type MsTime = Int
 
 data XCallState = XCallState
-      Cfd_set -- ^ read fd_set
-      (IOVar Fd) -- ^ highest fd in read fd_set
+      Cfd_set -- read fd_set
+      (IOVar Fd) -- highest fd in read fd_set
       (IOVar AiTable)
       (IOVar (PQueue MsTime (MsTime,Timer)))
       (IOVar Time)
diff --git a/hsrc/utils/FudVersion.hs b/hsrc/utils/FudVersion.hs
--- a/hsrc/utils/FudVersion.hs
+++ b/hsrc/utils/FudVersion.hs
@@ -1,7 +1,7 @@
 module FudVersion where
 
-version = version_0_18_3_1
+version = version_0_18_3_2
 
-version_0_18_3_1 = "version 0.18.3.1" -- only for documentation, use "version" instead
+version_0_18_3_2 = "version 0.18.3.2" -- only for documentation, use "version" instead
 
 -- The version number should be increased immediately after a public release.
