diff --git a/0001-Fix-check-whether-GCC-supports-__atomic_-builtins.patch b/0001-Fix-check-whether-GCC-supports-__atomic_-builtins.patch new file mode 100644 index 0000000..2d1043b --- /dev/null +++ b/0001-Fix-check-whether-GCC-supports-__atomic_-builtins.patch @@ -0,0 +1,60 @@ +From ce3897ffd6e7c8b8f36b8e920168bac8c7f836ae Mon Sep 17 00:00:00 2001 +From: Ilias Tsitsimpis +Date: Tue, 18 Sep 2018 17:45:17 +0200 +Subject: [PATCH] Fix check whether GCC supports __atomic_ builtins + +Summary: +C11 atomics are never used because: + +* The program used for checking whether GCC supports +__atomic_ builtins fails with the following error: + +``` + error: size mismatch in argument 2 of `__atomic_load` + int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; } +``` + +* There is a typo when checking if CONF_GCC_SUPPORTS__ATOMICS equals YES, +resulting in PRIM_CFLAGS and PRIM_EXTRA_LIBRARIES never being set. + +Reviewers: bgamari + +Reviewed By: bgamari + +Subscribers: rwbarton, erikd, carter + +Differential Revision: https://phabricator.haskell.org/D5154 +--- + libraries/ghc-prim/aclocal.m4 | 2 +- + libraries/ghc-prim/configure.ac | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libraries/ghc-prim/aclocal.m4 b/libraries/ghc-prim/aclocal.m4 +index e5695385f2..81fc44c500 100644 +--- a/libraries/ghc-prim/aclocal.m4 ++++ b/libraries/ghc-prim/aclocal.m4 +@@ -5,7 +5,7 @@ AC_DEFUN([FP_GCC_SUPPORTS__ATOMICS], + [ + AC_REQUIRE([AC_PROG_CC]) + AC_MSG_CHECKING([whether GCC supports __atomic_ builtins]) +- echo 'int test(int *x) { int y; __atomic_load(&x, &y, __ATOMIC_SEQ_CST); return x; }' > conftest.c ++ echo 'int test(int *x) { int y; __atomic_load(x, &y, __ATOMIC_SEQ_CST); return y; }' > conftest.c + if $CC -c conftest.c > /dev/null 2>&1; then + CONF_GCC_SUPPORTS__ATOMICS=YES + AC_MSG_RESULT([yes]) +diff --git a/libraries/ghc-prim/configure.ac b/libraries/ghc-prim/configure.ac +index bacc89ccc8..8249be31a9 100644 +--- a/libraries/ghc-prim/configure.ac ++++ b/libraries/ghc-prim/configure.ac +@@ -8,7 +8,7 @@ dnl unregisterised, Sparc, and PPC backends. + FP_GCC_SUPPORTS__ATOMICS + AC_DEFINE([HAVE_C11_ATOMICS], [$CONF_GCC_SUPPORTS__ATOMICS], [Does GCC support __atomic primitives?]) + +-if test "x$CONF_GCC_SUPPORTS__ATOMICS" = YES ++if test "$CONF_GCC_SUPPORTS__ATOMICS" = "YES" + then PRIM_CFLAGS=-DHAVE_C11_ATOMICS + PRIM_EXTRA_LIBRARIES=atomic + fi +-- +2.13.7 + diff --git a/D5212.patch b/D5212.patch new file mode 100644 index 0000000..6272b02 --- /dev/null +++ b/D5212.patch @@ -0,0 +1,23 @@ +Index: ghc-8.6.1/libraries/ghc-heap/GHC/Exts/Heap/InfoTable.hsc +=================================================================== +--- ghc-8.6.1.orig/libraries/ghc-heap/GHC/Exts/Heap/InfoTable.hsc ++++ ghc-8.6.1/libraries/ghc-heap/GHC/Exts/Heap/InfoTable.hsc +@@ -58,7 +58,7 @@ pokeItbl a0 itbl = do + #endif + (#poke StgInfoTable, layout.payload.ptrs) a0 (ptrs itbl) + (#poke StgInfoTable, layout.payload.nptrs) a0 (nptrs itbl) +- (#poke StgInfoTable, type) a0 (fromEnum (tipe itbl)) ++ (#poke StgInfoTable, type) a0 (toHalfWord (fromEnum (tipe itbl))) + #if __GLASGOW_HASKELL__ > 804 + (#poke StgInfoTable, srt) a0 (srtlen itbl) + #else +@@ -71,6 +71,9 @@ pokeItbl a0 itbl = do + Just (Left xs) -> pokeArray code_offset xs + Just (Right xs) -> pokeArray code_offset xs + #endif ++ where ++ toHalfWord :: Int -> HalfWord ++ toHalfWord i = fromIntegral i + + -- | Size in bytes of a standard InfoTable + itblSize :: Int diff --git a/Disable-unboxed-arrays.patch b/Disable-unboxed-arrays.patch new file mode 100644 index 0000000..07efc0a --- /dev/null +++ b/Disable-unboxed-arrays.patch @@ -0,0 +1,12 @@ +Index: ghc-8.6.1/libraries/containers/include/containers.h +=================================================================== +--- ghc-8.6.1.orig/libraries/containers/include/containers.h ++++ ghc-8.6.1/libraries/containers/include/containers.h +@@ -35,7 +35,6 @@ + + #ifdef __GLASGOW_HASKELL__ + # define USE_ST_MONAD 1 +-# define USE_UNBOXED_ARRAYS 1 + #endif + + #endif diff --git a/add_armv6l_and_armv7l_target.patch b/add_armv6l_and_armv7l_target.patch deleted file mode 100644 index 1149dd4..0000000 --- a/add_armv6l_and_armv7l_target.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- ghc-8.4.3.orig/llvm-targets 2018-09-02 07:51:17.989930822 +0200 -+++ ghc-8.4.3/llvm-targets 2018-09-03 16:21:30.155981907 +0200 -@@ -4,6 +4,8 @@ - ,("arm-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1176jzf-s", "+strict-align")) - ,("armv6-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1136jf-s", "+strict-align")) -+,("armv6l-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "arm1136jf-s", "+strict-align")) - ,("armv7-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", "")) -+,("armv7l-unknown-linux-gnueabihf", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", "")) - ,("aarch64-unknown-linux-gnu", ("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "generic", "+neon")) - ,("aarch64-unknown-linux", ("e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128", "generic", "+neon")) - ,("armv7a-unknown-linux-gnueabi", ("e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64", "generic", "")) diff --git a/buildpath-abi-stability.patch b/buildpath-abi-stability.patch index ec87ae9..89fe680 100644 --- a/buildpath-abi-stability.patch +++ b/buildpath-abi-stability.patch @@ -1,8 +1,8 @@ -Index: ghc-8.4.0.20171214/compiler/iface/MkIface.hs +Index: ghc-8.6.1/compiler/iface/MkIface.hs =================================================================== ---- ghc-8.4.0.20171214.orig/compiler/iface/MkIface.hs -+++ ghc-8.4.0.20171214/compiler/iface/MkIface.hs -@@ -689,7 +689,7 @@ addFingerprints hsc_env mb_old_fingerpri +--- ghc-8.6.1.orig/compiler/iface/MkIface.hs ++++ ghc-8.6.1/compiler/iface/MkIface.hs +@@ -702,7 +702,7 @@ addFingerprints hsc_env mb_old_fingerpri iface_hash <- computeFingerprint putNameLiterally (mod_hash, ann_fn (mkVarOcc "module"), -- See mkIfaceAnnCache @@ -11,7 +11,7 @@ Index: ghc-8.4.0.20171214/compiler/iface/MkIface.hs sorted_deps, mi_hpc iface0) -@@ -724,6 +724,9 @@ addFingerprints hsc_env mb_old_fingerpri +@@ -737,6 +737,9 @@ addFingerprints hsc_env mb_old_fingerpri (non_orph_fis, orph_fis) = mkOrphMap ifFamInstOrph (mi_fam_insts iface0) fix_fn = mi_fix_fn iface0 ann_fn = mkIfaceAnnCache (mi_anns iface0) diff --git a/fix-build-using-unregisterized-v8.2.patch b/fix-build-using-unregisterized-v8.2.patch deleted file mode 100644 index ec7602e..0000000 --- a/fix-build-using-unregisterized-v8.2.patch +++ /dev/null @@ -1,51 +0,0 @@ -Description: Allow unregisterised ghc-8.2 to build newer GHC - Commit b68697e579d38ca29c2b84377dc2affa04659a28 introduced a regression - stopping existing unregisteristed compilers from being used to compile a newer - version of GHC. The problem is that the bootstrap compiler uses the newer Stg.h - where EB_, IB_, etc, definitions have changed resulting in the following error: -. - error: conflicting types for 'ghc_GhcPrelude_zdtrModule4_bytes' - note: in definition of macro 'EB_' - #define EB_(X) extern const char X[] - note: previous definition of 'ghc_GhcPrelude_zdtrModule4_bytes' was here - char ghc_GhcPrelude_zdtrModule4_bytes[] = "ghc"; -. - For more information about the problem, see https://phabricator.haskell.org/D4114. -. - This patch is a rework of https://phabricator.haskell.org/D3741. - It modifies Stg.h to include the old definitions, if a compiler older than - 8.4 is being used. -. - This patch can be removed, once ghc-8.2 is no longer the bootstrap compiler. -Author: Ilias Tsitsimpis -Bug: https://ghc.haskell.org/trac/ghc/ticket/15201 - -Index: b/includes/Stg.h -=================================================================== ---- a/includes/Stg.h -+++ b/includes/Stg.h -@@ -232,6 +232,16 @@ typedef StgInt I_; - typedef StgWord StgWordArray[]; - typedef StgFunPtr F_; - -+#if __GLASGOW_HASKELL__ < 804 -+#define EB_(X) extern char X[] -+#define IB_(X) static char X[] -+#define EI_(X) extern StgWordArray (X) GNU_ATTRIBUTE(aligned (8)) -+#define II_(X) static StgWordArray (X) GNU_ATTRIBUTE(aligned (8)) -+#define IF_(f) static StgFunPtr GNUC3_ATTRIBUTE(used) f(void) -+#define FN_(f) StgFunPtr f(void) -+#define EF_(f) StgFunPtr f(void) /* External Cmm functions */ -+#define EFF_(f) void f() /* See Note [External function prototypes] */ -+#else - /* byte arrays (and strings): */ - #define EB_(X) extern const char X[] - #define IB_(X) static const char X[] -@@ -250,6 +260,7 @@ typedef StgFunPtr F_; - #define EF_(f) StgFunPtr f(void) /* External Cmm functions */ - /* foreign functions: */ - #define EFF_(f) void f() /* See Note [External function prototypes] */ -+#endif /* __GLASGOW_HASKELL__ < 804 */ - - /* Note [External function prototypes] See Trac #8965, #11395 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/fix-ppc64le-recognition.patch b/fix-ppc64le-recognition.patch deleted file mode 100644 index b2cdf29..0000000 --- a/fix-ppc64le-recognition.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: ghc-8.4.3/libraries/Cabal/Cabal/Distribution/System.hs -=================================================================== ---- ghc-8.4.3.orig/libraries/Cabal/Cabal/Distribution/System.hs -+++ ghc-8.4.3/libraries/Cabal/Cabal/Distribution/System.hs -@@ -157,7 +157,7 @@ buildOS = classifyOS Permissive System.I - -- - -- The following aliases can also be used: - -- * PPC alias: powerpc ---- * PPC64 alias : powerpc64 -+-- * PPC64 alias : powerpc64, powerpc64le - -- * Sparc aliases: sparc64, sun4 - -- * Mips aliases: mipsel, mipseb - -- * Arm aliases: armeb, armel -@@ -187,7 +187,7 @@ archAliases :: ClassificationStrictness - archAliases Strict _ = [] - archAliases Compat _ = [] - archAliases _ PPC = ["powerpc"] --archAliases _ PPC64 = ["powerpc64"] -+archAliases _ PPC64 = ["powerpc64", "powerpc64le"] - archAliases _ Sparc = ["sparc64", "sun4"] - archAliases _ Mips = ["mipsel", "mipseb"] - archAliases _ Arm = ["armeb", "armel"] diff --git a/ghc-8.0.2-Cabal-dynlibdir.patch b/ghc-8.0.2-Cabal-dynlibdir.patch index 02abb97..3b0884c 100644 --- a/ghc-8.0.2-Cabal-dynlibdir.patch +++ b/ghc-8.0.2-Cabal-dynlibdir.patch @@ -1,10 +1,10 @@ -Index: ghc-8.4.0.20180204/libraries/Cabal/Cabal/Distribution/Simple/InstallDirs.hs +Index: ghc-8.6.1/libraries/Cabal/Cabal/Distribution/Simple/InstallDirs.hs =================================================================== ---- ghc-8.4.0.20180204.orig/libraries/Cabal/Cabal/Distribution/Simple/InstallDirs.hs -+++ ghc-8.4.0.20180204/libraries/Cabal/Cabal/Distribution/Simple/InstallDirs.hs -@@ -205,7 +205,7 @@ defaultInstallDirs' False comp userInsta - JHC -> "$compiler" - LHC -> "$compiler" +--- ghc-8.6.1.orig/libraries/Cabal/Cabal/Distribution/Simple/InstallDirs.hs ++++ ghc-8.6.1/libraries/Cabal/Cabal/Distribution/Simple/InstallDirs.hs +@@ -204,7 +204,7 @@ defaultInstallDirs' False comp userInsta + _other -> "$abi" "$libname", + dynlibdir = "$libdir" case comp of UHC -> "$pkgid" - _other -> "$abi", + _other -> "$compiler" "$pkgkey", diff --git a/ghc-8.4.3-src.tar.xz b/ghc-8.4.3-src.tar.xz deleted file mode 100644 index d76c591..0000000 --- a/ghc-8.4.3-src.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ae47afda985830de8811243255aa3744dfb9207cb980af74393298b2b62160d6 -size 11315068 diff --git a/ghc-8.6.1-src.tar.xz b/ghc-8.6.1-src.tar.xz new file mode 100644 index 0000000..c3e8a16 --- /dev/null +++ b/ghc-8.6.1-src.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c25c26d1e5c47c7cbb2a1d8e6456524033e7a71409184dd3125e3fc5a3c7036 +size 19031852 diff --git a/ghc-pie.patch b/ghc-pie.patch index f665f00..dab99f1 100644 --- a/ghc-pie.patch +++ b/ghc-pie.patch @@ -1,8 +1,8 @@ -Index: ghc-8.4.0.20180204/compiler/main/DynFlags.hs +Index: ghc-8.6.1/compiler/main/DynFlags.hs =================================================================== ---- ghc-8.4.0.20180204.orig/compiler/main/DynFlags.hs -+++ ghc-8.4.0.20180204/compiler/main/DynFlags.hs -@@ -4155,6 +4155,7 @@ default_PIC :: Platform -> [GeneralFlag] +--- ghc-8.6.1.orig/compiler/main/DynFlags.hs ++++ ghc-8.6.1/compiler/main/DynFlags.hs +@@ -4317,6 +4317,7 @@ default_PIC :: Platform -> [GeneralFlag] default_PIC platform = case (platformOS platform, platformArch platform) of (OSDarwin, ArchX86_64) -> [Opt_PIC] diff --git a/ghc.changes b/ghc.changes index 490013f..9350b55 100644 --- a/ghc.changes +++ b/ghc.changes @@ -1,3 +1,35 @@ +------------------------------------------------------------------- +Tue Oct 9 15:50:06 UTC 2018 - ptrommler@icloud.com + +- add Disable-unboxed-arrays.patch + * apply on ppc64 only + * fixes ppc64 build +- add D5212.patch + * fix GHCi on big endian platforms + +------------------------------------------------------------------- +Tue Oct 2 11:28:19 UTC 2018 - ptrommler@icloud.com + +- cleanup + * remove unused conditional in configure command + +------------------------------------------------------------------- +Tue Oct 2 10:10:24 UTC 2018 - ptrommler@icloud.com + +- update to 8.6.1 +- add 0001-Fix-check-whether-GCC-supports-__atomic_-builtins.patch + * fix __atomic_builtin detection + * upstream commit ce3897ff +- drop add_armv6l_and_armv7l_target.patch + * fixed upstream +- drop fix-ppc64le-recognition.patch + * fixed upstream +- drop fix-build-using-unregisterized-v8.2.patch + * bootstrap with 8.4.3 works w/o this patch +- refresh ghc-pie.patch +- refresh ghc-8.0.2-Cabal-dyndir.patch +- refresh buildpath-abi-stability.patch + ------------------------------------------------------------------- Sun Sep 30 11:21:59 UTC 2018 - ptrommler@icloud.com diff --git a/ghc.spec b/ghc.spec index c1e5784..9c3a596 100644 --- a/ghc.spec +++ b/ghc.spec @@ -29,7 +29,7 @@ %global unregisterised_archs s390 s390x Name: ghc -Version: 8.4.3 +Version: 8.6.1 Release: 0 Url: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.xz Summary: The Glorious Glasgow Haskell Compiler @@ -74,18 +74,21 @@ BuildRequires: python-sphinx BuildRequires: libnuma-devel %endif +# for patch 1 +BuildRequires: python3 + PreReq: update-alternatives Requires: ghc-compiler = %{version}-%{release} Requires: ghc-ghc-devel = %{version}-%{release} Requires: ghc-libraries = %{version}-%{release} Source: http://haskell.org/ghc/dist/%{version}/%{name}-%{version}-src.tar.xz Source1: ghc-rpmlintrc -# PATCH-FIX-UPSTREAM add_armv6l_and_armv7l_target.patch - add armv6l and armv7l target to llvm targets -Patch0: add_armv6l_and_armv7l_target.patch -# PATCH-FIX-UPSTREAM fix-ppc64le-recognition.patch ptrommler@icloud.com -- Recognize powerpc64le as PPC64 in cabal files. -Patch1: fix-ppc64le-recognition.patch -# PATCH-FIX-OPENSUSE fix-build-using-unregisterized-v8.2.patch ptrommler@icloud.com -- Fix bootstrap with GHC older than 8.4. Can be dropped once we bootstrap with 8.4.3. Debian patch. -Patch2: fix-build-using-unregisterized-v8.2.patch +# PATCH-FIX-UPSTREAM 0001-Fix-check-whether-GCC-supports-__atomic_-builtins.patch ptrommler@icloud.com -- Fix __atomic_builtin detection. Patch taken from upstream commit ce3897ff. +Patch1: 0001-Fix-check-whether-GCC-supports-__atomic_-builtins.patch +# PATCH-FIX-UPSTREAM D5212.patch ptrommler@icloud.com -- Fix GHCi on big endiansystems. Submitted for upstream review. +Patch2: D5212.patch +# PATCH-FIX-UPSTREAM Disable-unboxed-arrays.patch ptrommler@icloud.com -- Do not use unboxed arrays on big-endian platforms. See Haskell Trac #15411. +Patch3: Disable-unboxed-arrays.patch # PATCH-FIX-UPSTREAM ghc-pie.patch - set linux as default PIE platform Patch35: ghc-pie.patch # PATCH-FIX-OPENSUSE ghc-8.0.2-Cabal-dynlibdir.patch -- Fix shared library directory location. @@ -147,30 +150,32 @@ To install all of GHC install package ghc. %endif %if %{defined ghclibdir} -%ghc_lib_subpackage -d Cabal-2.2.0.1 +%ghc_lib_subpackage -d Cabal-2.4.0.1 %ghc_lib_subpackage -d array-0.5.2.0 -%ghc_lib_subpackage -d -c gmp-devel,libffi-devel,libdw-devel,libelf-devel%{libnuma_dep} base-4.11.1.0 -%ghc_lib_subpackage -d binary-0.8.5.1 +%ghc_lib_subpackage -d -c gmp-devel,libffi-devel,libdw-devel,libelf-devel%{libnuma_dep} base-4.12.0.0 +%ghc_lib_subpackage -d binary-0.8.6.0 %ghc_lib_subpackage -d bytestring-0.10.8.2 -%ghc_lib_subpackage -d containers-0.5.11.0 -%ghc_lib_subpackage -d deepseq-1.4.3.0 -%ghc_lib_subpackage -d directory-1.3.1.5 -%ghc_lib_subpackage -d filepath-1.4.2 +%ghc_lib_subpackage -d containers-0.6.0.1 +%ghc_lib_subpackage -d deepseq-1.4.4.0 +%ghc_lib_subpackage -d directory-1.3.3.0 +%ghc_lib_subpackage -d filepath-1.4.2.1 %ghc_lib_subpackage -d -x ghc-%{ghc_version_override} %ghc_lib_subpackage -d ghc-boot-%{ghc_version_override} %ghc_lib_subpackage -d ghc-boot-th-%{ghc_version_override} %ghc_lib_subpackage -d ghc-compact-0.1.0.0 +%ghc_lib_subpackage -d ghc-heap-%{ghc_version_override} %ghc_lib_subpackage -d -x ghci-%{ghc_version_override} -%ghc_lib_subpackage -d haskeline-0.7.4.2 +%ghc_lib_subpackage -d haskeline-0.7.4.3 %ghc_lib_subpackage -d hpc-0.6.0.3 +%ghc_lib_subpackage -d libiserv-%{ghc_version_override} %ghc_lib_subpackage -d mtl-2.2.2 %ghc_lib_subpackage -d parsec-3.1.13.0 %ghc_lib_subpackage -d pretty-1.1.3.6 %ghc_lib_subpackage -d process-1.6.3.0 -%ghc_lib_subpackage -d stm-2.4.5.0 -%ghc_lib_subpackage -d template-haskell-2.13.0.0 -%ghc_lib_subpackage -d -c ncurses-devel terminfo-0.4.1.1 -%ghc_lib_subpackage -d text-1.2.3.0 +%ghc_lib_subpackage -d stm-2.5.0.0 +%ghc_lib_subpackage -d template-haskell-2.14.0.0 +%ghc_lib_subpackage -d -c ncurses-devel terminfo-0.4.1.2 +%ghc_lib_subpackage -d text-1.2.3.1 %ghc_lib_subpackage -d time-1.8.0.2 %ghc_lib_subpackage -d transformers-0.5.5.0 %ghc_lib_subpackage -d unix-2.7.2.2 @@ -195,9 +200,11 @@ except the ghc library, which is installed by the toplevel ghc metapackage. %prep %setup -q -%patch0 -p1 %patch1 -p1 %patch2 -p1 +%ifarch ppc64 +%patch3 -p1 +%endif %patch35 -p1 %patch100 -p1 %patch110 -p1 @@ -205,6 +212,9 @@ except the ghc library, which is installed by the toplevel ghc metapackage. # Probably fixed upstream %build +# patch 1 modifies build system, we need to recreate configure +./boot + cat > mk/build.mk <> ghc-base.files %ghc_gen_filelists ghc %{ghc_version_override} %ghc_gen_filelists ghci %{ghc_version_override} -%ghc_gen_filelists ghc-prim 0.5.2.0 +%ghc_gen_filelists ghc-prim 0.5.3 %ghc_gen_filelists integer-gmp 1.0.2.0 %define merge_filelist()\ @@ -418,6 +427,7 @@ fi %{_bindir}/haddock-ghc-%{version} %{ghclibdir}/html %{ghclibdir}/latex +%{ghclibdir}/llvm-passes %{ghclibdir}/llvm-targets %{ghclibdir}/bin/haddock %if %{undefined without_manual}