diff --git a/HUnit.cabal b/HUnit.cabal
--- a/HUnit.cabal
+++ b/HUnit.cabal
@@ -1,5 +1,5 @@
 Name:                   HUnit
-Version:                1.2.5.0
+Version:                1.2.5.1
 Cabal-Version:          >= 1.8
 License:                BSD3
 License-File:           LICENSE
@@ -15,8 +15,11 @@
 Tested-With:
     GHC == 7.0.4
     GHC == 7.4.1
-Build-Type:             Custom
+Build-Type:             Simple
 Extra-Source-Files:
+    HUnit.cabal.hugs
+    HUnit.cabal.tests
+    Setup.hs.hugs
     tests/HUnitTests.hs
     tests/HUnitTestBase.lhs
     tests/HUnitTestExtended.hs
diff --git a/HUnit.cabal.hugs b/HUnit.cabal.hugs
new file mode 100644
--- /dev/null
+++ b/HUnit.cabal.hugs
@@ -0,0 +1,20 @@
+Name:                   HUnit
+Version:                1.2.5.0
+License:                BSD3
+License-File:           LICENSE
+Author:                 Dean Herington
+Homepage:               http://hunit.sourceforge.net/
+Category:               Testing
+Build-Depends:          base
+Synopsis:               A unit testing framework for Haskell
+Description:
+    HUnit is a unit testing framework for Haskell, inspired by the
+    JUnit tool for Java, see: <http://www.junit.org>.
+Exposed-Modules:
+    Test.HUnit.Base,
+    Test.HUnit.Lang,
+    Test.HUnit.Terminal,
+    Test.HUnit.Text,
+    Test.HUnit
+Extensions:             CPP
+Hugs-Options:           -98
diff --git a/HUnit.cabal.tests b/HUnit.cabal.tests
new file mode 100644
--- /dev/null
+++ b/HUnit.cabal.tests
@@ -0,0 +1,121 @@
+-- This CABAL file is used to build and run all of the various tests for the 
+-- project.  This separate file is necessary because Hackage does not allow
+-- the optimization level to be specified when building executables and some
+-- tests require different optimization levels to be set.
+--
+-- To use this file, simply copy it to HUnit.cabal, then build as normal.  You
+-- may rename the existing version of HUnit.cabal first, if you like.
+Name:                   HUnit
+Version:                1.2.5.1
+Cabal-Version:          >= 1.8
+License:                BSD3
+License-File:           LICENSE
+Author:                 Dean Herington
+Maintainer:             hunit@richardg.name
+Stability:              stable
+Homepage:               http://hunit.sourceforge.net/
+Category:               Testing
+Synopsis:               A unit testing framework for Haskell
+Description:
+    HUnit is a unit testing framework for Haskell, inspired by the
+    JUnit tool for Java, see: <http://www.junit.org>.
+Tested-With:
+    GHC == 7.0.4
+    GHC == 7.4.1
+Build-Type:             Simple
+Extra-Source-Files:
+    HUnit.cabal.hugs
+    HUnit.cabal.tests
+    Setup.hs.hugs
+    tests/HUnitTests.hs
+    tests/HUnitTestBase.lhs
+    tests/HUnitTestExtended.hs
+    tests/HUnitTestOptimize.hs
+    tests/TerminalTest.hs
+Data-Files:
+    doc/Guide.html
+    examples/Example.hs
+    prologue.txt
+    README
+
+source-repository head
+    type:     darcs
+    location: http://code.haskell.org/HUnit/
+
+flag base4
+
+Library
+    Build-Depends: 
+        base < 5,
+        deepseq
+    if flag(base4)
+        Build-Depends: base >= 4
+        CPP-Options: -DBASE4
+        GHC-Options: -Wall
+    else
+        Build-Depends: base < 4
+    if impl(ghc >= 6.10)
+        Build-Depends: base >= 4
+    Exposed-Modules:
+        Test.HUnit.Base,
+        Test.HUnit.Lang,
+        Test.HUnit.Terminal,
+        Test.HUnit.Text,
+        Test.HUnit
+    Extensions: CPP
+
+Test-Suite hunit-tests-optimize-0
+    Type:               exitcode-stdio-1.0
+    Main-Is:            HUnitTests.hs
+    HS-Source-Dirs:     . tests
+    Build-Depends: 
+        base < 5,
+        deepseq,
+        filepath
+    GHC-Options:        -O0
+    if flag(base4)
+        Build-Depends: base >= 4
+        CPP-Options: -DBASE4 -DO0
+        GHC-Options: -Wall
+    else
+        Build-Depends: base < 4
+    if impl(ghc >= 6.10)
+        Build-Depends: base >= 4
+        Extensions: CPP
+        
+Test-Suite hunit-tests-optimize-1
+    Type:               exitcode-stdio-1.0
+    Main-Is:            HUnitTests.hs
+    HS-Source-Dirs:     . tests
+    Build-Depends: 
+        base < 5,
+        deepseq
+    GHC-Options:        -O1
+    if flag(base4)
+        Build-Depends: base >= 4
+        CPP-Options: -DBASE4 -DO1
+        GHC-Options: -Wall
+    else
+        Build-Depends: base < 4
+    if impl(ghc >= 6.10)
+        Build-Depends: base >= 4
+        Extensions: CPP
+        
+Test-Suite hunit-tests-optimize-2
+    Type:               exitcode-stdio-1.0
+    Main-Is:            HUnitTests.hs
+    HS-Source-Dirs:     . tests
+    Build-Depends: 
+        base < 5,
+        deepseq
+    GHC-Options:        -O2
+    if flag(base4)
+        Build-Depends: base >= 4
+        CPP-Options: -DBASE4 -DO2
+        GHC-Options: -Wall
+    else
+        Build-Depends: base < 4
+    if impl(ghc >= 6.10)
+        Build-Depends: base >= 4
+        Extensions: CPP
+        
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,7 +1,2 @@
-#!/usr/bin/env runhaskell
-module Main (main) where
-
 import Distribution.Simple
-
-main :: IO ()
 main = defaultMain
diff --git a/Setup.hs.hugs b/Setup.hs.hugs
new file mode 100644
--- /dev/null
+++ b/Setup.hs.hugs
@@ -0,0 +1,7 @@
+#!/usr/bin/env runghc
+module Main (main) where
+
+import Distribution.Simple
+
+main :: IO ()
+main = defaultMain
