diff --git a/var/spack/repos/builtin/packages/casacore/package.py b/var/spack/repos/builtin/packages/casacore/package.py
index 24bb8defb46d720c1a705b5de46b61e744541041..7fbb913de2bfaf3f5eeba58f2edbc218442541e6 100644
--- a/var/spack/repos/builtin/packages/casacore/package.py
+++ b/var/spack/repos/builtin/packages/casacore/package.py
@@ -14,6 +14,7 @@ class Casacore(CMakePackage):
 
     maintainers = ['mpokorny']
 
+    version('3.3.0', sha256='3a714644b908ef6e81489b792cc9b80f6d8267a275e15d38a42a6a5137d39d3d')
     version('3.2.0', sha256='ae5d3786cb6dfdd7ebc5eecc0c724ff02bbf6929720bc23be43a027978e79a5f')
     version('3.1.2', sha256='ac94f4246412eb45d503f1019cabe2bb04e3861e1f3254b832d9b1164ea5f281')
     version('3.1.1', sha256='85d2b17d856592fb206b17e0a344a29330650a4269c80b87f8abb3eaf3dadad4')
@@ -23,30 +24,31 @@ class Casacore(CMakePackage):
 
     variant('openmp', default=False, description='Build OpenMP support')
     variant('shared', default=True, description='Build shared libraries')
+    variant('readline', default=True, description='Build readline support')
     # see note below about the reason for disabling the "sofa" variant
     # variant('sofa', default=False, description='Build SOFA support')
     variant('fftw', default=False, description='Build FFTW3 support')
     variant('hdf5', default=False, description='Build HDF5 support')
     variant('python', default=False, description='Build python support')
 
+    # Force dependency on readline in v3.2 and earlier. Although the
+    # presence of readline is tested in CMakeLists.txt, and casacore
+    # can be built without it, there's no way to control that
+    # dependency at build time; since many systems come with readline,
+    # it's better to explicitly depend on it here always.
+    depends_on('readline', when='@:3.2.0')
+    depends_on('readline', when='+readline')
     depends_on('flex', type='build')
     depends_on('bison', type='build')
     depends_on('blas')
     depends_on('lapack')
     depends_on('cfitsio@3.181:')
     depends_on('wcslib@4.20:+cfitsio')
-    depends_on('fftw~mpi@3.0.0:', when='+fftw')
+    depends_on('fftw@3.0.0:~mpi precision=float,double', when='+fftw')
     # SOFA dependency suffers the same problem in CMakeLists.txt as readline;
-    # however, as SOFA is far less likely to be present on most systems, and as
-    # it's an unneeded dependency except for testing, for now we leave out the
-    # option for a dependency on SOFA.
-    # depends_on('sofa-c', when='+sofa')
+    # force a dependency when building unit tests
+    depends_on('sofa-c', type='test')
     depends_on('hdf5', when='+hdf5')
-    # Force dependency on readline. Although the presence of readline is tested
-    # in CMakeLists.txt, and casacore can be built without it, there's no way
-    # to control that dependency at build time; since many systems come with
-    # readline, it's better to explicitly depend on it here always.
-    depends_on('readline')
     depends_on('python@2.6:', when='+python')
     depends_on('boost+python', when='+python')
     depends_on('py-numpy', when='+python')
@@ -55,32 +57,19 @@ def cmake_args(self):
         args = []
         spec = self.spec
 
-        if '+shared' in spec:
-            args.append('-DENABLE_SHARED=YES')
-        else:
-            args.append('-DENABLE_SHARED=NO')
-
-        if '+openmp' in spec:
-            args.append('-DUSE_OPENMP=YES')
-        else:
-            args.append('-DUSE_OPENMP=NO')
-
-        if '+hdf5' in spec:
-            args.append('-DUSE_HDF5=YES')
-        else:
-            args.append('-DUSE_HDF5=NO')
-
-        if '+fftw' in spec:
-            args.append('-DUSE_FFTW3=YES')
-        else:
-            args.append('-DUSE_FFTW3=NO')
+        args.append(self.define_from_variant('ENABLE_SHARED', 'shared'))
+        args.append(self.define_from_variant('USE_OPENMP', 'openmp'))
+        args.append(self.define_from_variant('USE_READLINE', 'readline'))
+        args.append(self.define_from_variant('USE_HDF5', 'hdf5'))
+        args.append(self.define_from_variant('USE_FFTW3', 'fftw'))
 
         # Python2 and Python3 binding
-        if('+python' not in spec):
+        if '+python' not in spec:
             args.extend(['-DBUILD_PYTHON=NO', '-DBUILD_PYTHON3=NO'])
-        elif(spec['python'].version >= Version('3.0.0')):
+        elif spec['python'].version >= Version('3.0.0'):
             args.extend(['-DBUILD_PYTHON=NO', '-DBUILD_PYTHON3=YES'])
         else:
             args.extend(['-DBUILD_PYTHON=YES', '-DBUILD_PYTHON3=NO'])
 
+        args.append('-DBUILD_TESTING=OFF')
         return args