diff --git a/llvm-ffi.cabal b/llvm-ffi.cabal
--- a/llvm-ffi.cabal
+++ b/llvm-ffi.cabal
@@ -1,19 +1,33 @@
+Cabal-Version: 2.2
 Name:          llvm-ffi
-Version:       3.8.1
-License:       BSD3
+Version:       3.8.1.1
+License:       BSD-3-Clause
 License-File:  LICENSE
 Synopsis:      FFI bindings to the LLVM compiler toolkit.
 Description:
   FFI bindings to the LLVM compiler toolkit.
   .
-  Installation is based on @pkg-config@
-  since this is best supported by Cabal.
-  This requires an @llvm.pc@ file
-  which unfortunately is not generated by the LLVM source package.
-  You may be lucky that your distribution package includes that file.
-  If not, you can generate it yourself
-  using the @llvm-pkg-config@ package.
+  Installation cannot be done fully automatically.
+  It would require Cabal code that is bound to certain Cabal versions
+  and is prone to fail.
+  We give several non-automatic ways
+  that also allow you to choose a particular LLVM version.
   .
+  First possibility is to point Cabal
+  to the LLVM installation directories manually.
+  On Ubuntu this would look like this:
+  .
+  > cabal install --extra-include-dirs=/usr/lib/llvm-3.8/include --extra-lib-dirs=/usr/lib/llvm-3.8/lib llvm-ffi
+  .
+  You can store such paths permanently in a @pkg-config@ file like @llvm.pc@.
+  The optimal way would be if LLVM installations or GNU/Linux distributions
+  would contain such a file, but they don't.
+  Instead, you may generate it using the @llvm-pkg-config@ package
+  or write one manually.
+  Then you run
+  .
+  > cabal install -fpkgConfig
+  .
   We try to stay up to date with LLVM releases.
   The current version of this package is compatible with LLVM 3.4-3.8.
   Please understand that the package may or may not work
@@ -30,8 +44,7 @@
 Homepage:      http://haskell.org/haskellwiki/LLVM
 Stability:     experimental
 Category:      Compilers/Interpreters, Code Generation
-Tested-With:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==8.0.1
-Cabal-Version: >= 1.8
+Tested-With:   GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==8.0.2, GHC==8.2.2
 Build-Type:    Simple
 
 Extra-Source-Files:
@@ -49,6 +62,10 @@
   Manual: True
   Default: False
 
+Flag pkgConfig
+  Description: use pkgconfig (llvm.pc) instead of extra-libraries
+  Default: False
+
 Flag specificPkgConfig
   Description: use llvm-3.x.pc instead of llvm.pc
   Default: True
@@ -74,7 +91,7 @@
   Location: http://hub.darcs.net/thielema/llvm-ffi/
 
 Source-Repository this
-  Tag:      3.8.1
+  Tag:      3.8.1.1
   Type:     darcs
   Location: http://hub.darcs.net/thielema/llvm-ffi/
 
@@ -85,6 +102,7 @@
 
   Hs-Source-Dirs: src
   GHC-Options: -Wall -fwarn-missing-import-lists
+  Default-Language: Haskell2010
 
   If flag(developer)
     GHC-Options: -Werror
@@ -116,49 +134,71 @@
       LLVM.Target.XCore
 
   If flag(llvm304)
-    If flag(specificPkgConfig)
-      PkgConfig-Depends: llvm-3.4
+    If flag(pkgConfig)
+      If flag(specificPkgConfig)
+        PkgConfig-Depends: llvm-3.4
+      Else
+        PkgConfig-Depends: llvm == 3.4
     Else
-      PkgConfig-Depends: llvm == 3.4
+      Extra-Libraries: LLVM-3.4
     CC-Options: -DHS_LLVM_VERSION=304
+    Cxx-Options: -DHS_LLVM_VERSION=304
     CPP-Options: -DHS_LLVM_VERSION=304
   Else
     If flag(llvm305)
-      If flag(specificPkgConfig)
-        PkgConfig-Depends: llvm-3.5
+      If flag(pkgConfig)
+        If flag(specificPkgConfig)
+          PkgConfig-Depends: llvm-3.5
+        Else
+          PkgConfig-Depends: llvm == 3.5
       Else
-        PkgConfig-Depends: llvm == 3.5
+        Extra-Libraries: LLVM-3.5
       CC-Options: -DHS_LLVM_VERSION=305
+      Cxx-Options: -DHS_LLVM_VERSION=305
       CPP-Options: -DHS_LLVM_VERSION=305
     Else
       If flag(llvm306)
-        If flag(specificPkgConfig)
-          PkgConfig-Depends: llvm-3.6
+        If flag(pkgConfig)
+          If flag(specificPkgConfig)
+            PkgConfig-Depends: llvm-3.6
+          Else
+            PkgConfig-Depends: llvm == 3.6
         Else
-          PkgConfig-Depends: llvm == 3.6
+          Extra-Libraries: LLVM-3.6
         CC-Options: -DHS_LLVM_VERSION=306
+        Cxx-Options: -DHS_LLVM_VERSION=306
         CPP-Options: -DHS_LLVM_VERSION=306
       Else
         If flag(llvm307)
-          If flag(specificPkgConfig)
-            PkgConfig-Depends: llvm-3.7
+          If flag(pkgConfig)
+            If flag(specificPkgConfig)
+              PkgConfig-Depends: llvm-3.7
+            Else
+              PkgConfig-Depends: llvm == 3.7
           Else
-            PkgConfig-Depends: llvm == 3.7
+            Extra-Libraries: LLVM-3.7
           CC-Options: -DHS_LLVM_VERSION=307
+          Cxx-Options: -DHS_LLVM_VERSION=307
           CPP-Options: -DHS_LLVM_VERSION=307
         Else
-          If flag(specificPkgConfig)
-            PkgConfig-Depends: llvm-3.8
+          If flag(pkgConfig)
+            If flag(specificPkgConfig)
+              PkgConfig-Depends: llvm-3.8
+            Else
+              PkgConfig-Depends: llvm == 3.8
           Else
-            PkgConfig-Depends: llvm == 3.8
+            Extra-Libraries: LLVM-3.8
           CC-Options: -DHS_LLVM_VERSION=308
+          Cxx-Options: -DHS_LLVM_VERSION=308
           CPP-Options: -DHS_LLVM_VERSION=308
 
   CC-Options: -DHAVE_LLVM_SUPPORT_DYNAMICLIBRARY_H=1
   CPP-Options: -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
   CPP-Options: -D__STDC_LIMIT_MACROS
   Include-Dirs: include
-  C-Sources:
+  Extra-Libraries: stdc++
+  Cxx-Options: -std=c++0x -std=c++11
+  Cxx-Sources:
     cbits/support.cpp
 
 Executable llvm-ffi-example
@@ -175,4 +215,5 @@
 
   Hs-Source-Dirs: example
   GHC-Options: -Wall
+  Default-Language: Haskell2010
   Main-Is: JIT.hs
