diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py
index 6a8f4d78de4c1dd6df3b02f85ca1c5a565c2c7ac..0b3414ad859d77b7f5bd883a3e1973a9d829a671 100644
--- a/var/spack/repos/builtin/packages/nalu-wind/package.py
+++ b/var/spack/repos/builtin/packages/nalu-wind/package.py
@@ -27,6 +27,8 @@ class NaluWind(CMakePackage):
             description='Compile with Hypre support')
     variant('shared', default=(sys.platform != 'darwin'),
             description='Build Trilinos as shared library')
+    variant('pic', default=True,
+            description='Position independent code')
 
     depends_on('mpi')
     depends_on('yaml-cpp@0.5.3:')
@@ -50,7 +52,9 @@ def cmake_args(self):
             '-DCMAKE_Fortran_COMPILER=%s' % spec['mpi'].mpifc,
             '-DMPI_C_COMPILER=%s' % spec['mpi'].mpicc,
             '-DMPI_CXX_COMPILER=%s' % spec['mpi'].mpicxx,
-            '-DMPI_Fortran_COMPILER=%s' % spec['mpi'].mpifc
+            '-DMPI_Fortran_COMPILER=%s' % spec['mpi'].mpifc,
+            '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % (
+                'ON' if '+pic' in spec else 'OFF'),
         ])
 
         if '+openfast' in spec:
diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py
index 225ed2ee66b1e9d5f7597a51ea6ed331ceafbf0d..5e009d7e01dcb5f23e7551bd94b0a6926caaca3f 100644
--- a/var/spack/repos/builtin/packages/nalu/package.py
+++ b/var/spack/repos/builtin/packages/nalu/package.py
@@ -26,6 +26,8 @@ class Nalu(CMakePackage):
             description='Compile with Hypre support')
     variant('shared', default=(sys.platform != 'darwin'),
             description='Build Trilinos as shared library')
+    variant('pic', default=True,
+            description='Position independent code')
 
     depends_on('mpi')
     depends_on('yaml-cpp@0.5.3:')
@@ -43,7 +45,9 @@ def cmake_args(self):
 
         options.extend([
             '-DTrilinos_DIR:PATH=%s' % spec['trilinos'].prefix,
-            '-DYAML_DIR:PATH=%s' % spec['yaml-cpp'].prefix
+            '-DYAML_DIR:PATH=%s' % spec['yaml-cpp'].prefix,
+            '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % (
+                'ON' if '+pic' in spec else 'OFF'),
         ])
 
         if '+openfast' in spec:
diff --git a/var/spack/repos/builtin/packages/openfast/package.py b/var/spack/repos/builtin/packages/openfast/package.py
index 710b4f3bfc2acee35017cbe0fe0f7117e67292fb..14824588db5f14cb5e5a93dfd32589fbc0f9192f 100644
--- a/var/spack/repos/builtin/packages/openfast/package.py
+++ b/var/spack/repos/builtin/packages/openfast/package.py
@@ -17,7 +17,7 @@ class Openfast(CMakePackage):
     version('develop', branch='dev')
     version('master', branch='master')
 
-    variant('shared', default=False,
+    variant('shared', default=True,
             description="Build shared libraries")
     variant('double-precision', default=True,
             description="Treat REAL as double precision")
@@ -25,6 +25,8 @@ class Openfast(CMakePackage):
             description="Enable dynamic library loading interface")
     variant('cxx', default=False,
             description="Enable C++ bindings")
+    variant('pic', default=True,
+            description="Position independent code")
 
     # Dependencies for OpenFAST Fortran
     depends_on('blas')
@@ -54,6 +56,8 @@ def cmake_args(self):
                 'ON' if '+dll-interface' in spec else 'OFF'),
             '-DBUILD_FAST_CPP_API:BOOL=%s' % (
                 'ON' if '+cxx' in spec else 'OFF'),
+            '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % (
+                'ON' if '+pic' in spec else 'OFF'),
         ])
 
         # Make sure we use Spack's blas/lapack:
diff --git a/var/spack/repos/builtin/packages/tioga/package.py b/var/spack/repos/builtin/packages/tioga/package.py
index 8828c6b86ef3b3907d8bea707c2fc3d56d9df005..89ea1923e642a8adf57c67bdc8ac86a72860b8ce 100644
--- a/var/spack/repos/builtin/packages/tioga/package.py
+++ b/var/spack/repos/builtin/packages/tioga/package.py
@@ -15,8 +15,10 @@ class Tioga(CMakePackage):
     # The master branch doesn't support CMake
     version('develop', branch='nalu-api')
 
-    variant('shared', default=False,
+    variant('shared', default=True,
             description="Enable building shared libraries")
+    variant('pic', default=True,
+            description="Position independent code")
 
     depends_on('mpi')
 
@@ -29,6 +31,8 @@ def cmake_args(self):
         options = [
             '-DBUILD_SHARED_LIBS:BOOL=%s' % (
                 'ON' if '+shared' in spec else 'OFF'),
+            '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % (
+                'ON' if '+pic' in spec else 'OFF'),
             '-DMPI_CXX_COMPILER:PATH=%s' % spec['mpi'].mpicxx,
             '-DMPI_C_COMPILER:PATH=%s' % spec['mpi'].mpicc,
             '-DMPI_Fortran_COMPILER:PATH=%s' % spec['mpi'].mpifc