diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,7 +1,14 @@
 # Changelog for openal-ffi
 
+## [0.0.2]
+
+- Added a `system-openal` flag (default: on). Disable it to skip the Apple
+  OpenAL framework and link `-lopenal` directly against a source distribution
+  (e.g. openal-soft) via `--extra-include-dirs` and `--extra-lib-dirs`.
+
 ## [0.0.1]
 
 - Initial import.
 
+[0.0.2]: https://gitlab.com/dpwiz/openal-ffi/-/tree/v0.0.2
 [0.0.1]: https://gitlab.com/dpwiz/openal-ffi/-/tree/v0.0.1
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import Distribution.Simple
-main = defaultMain
diff --git a/openal-ffi.cabal b/openal-ffi.cabal
--- a/openal-ffi.cabal
+++ b/openal-ffi.cabal
@@ -1,16 +1,16 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           openal-ffi
-version:        0.0.1
+version:        0.0.2
 synopsis:       Low-level bindings to OpenAL.
 category:       Sound
 author:         IC Rainbow
 maintainer:     aenor.realm@gmail.com
-copyright:      2021 IC Rainbow
+copyright:      2026 IC Rainbow
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
@@ -22,6 +22,11 @@
   type: git
   location: https://gitlab.com/dpwiz/openal-ffi
 
+flag system-openal
+  description: Use the OpenAL provided by the system: the OpenAL framework on Apple platforms, the openal system library elsewhere. Disable to skip the framework and link -lopenal directly against a source distribution (e.g. openal-soft), pointing at it with --extra-include-dirs and --extra-lib-dirs.
+  manual: True
+  default: True
+
 library
   exposed-modules:
       Sound.OpenAL.FFI.AL
@@ -31,15 +36,16 @@
       Paths_openal_ffi
   hs-source-dirs:
       src
-  ghc-options: -Wall
-  extra-libraries:
-      openal
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints
   build-depends:
       base >=4.7 && <5
-  if os(darwin) || os(ios)
+  default-language: Haskell2010
+  if flag(system-openal) && (os(darwin) || os(ios))
     frameworks:
         OpenAL
-  default-language: Haskell2010
+  else
+    extra-libraries:
+        openal
 
 test-suite openal-ffi-test
   type: exitcode-stdio-1.0
@@ -48,7 +54,7 @@
       Paths_openal_ffi
   hs-source-dirs:
       test
-  ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N
+  ghc-options: -Wall -Wcompat -Widentities -Wincomplete-record-updates -Wincomplete-uni-patterns -Wpartial-fields -Wredundant-constraints -threaded -rtsopts -with-rtsopts=-N
   build-depends:
       base >=4.7 && <5
     , openal-ffi
