diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py
index 2d7b9e2997a5bac4921dcfe9f28b2584e382be9e..5a7f4d91f5214b4cc862f0d5377c1c128722fd58 100644
--- a/var/spack/repos/builtin/packages/adios/package.py
+++ b/var/spack/repos/builtin/packages/adios/package.py
@@ -103,13 +103,12 @@ def configure_args(self):
         spec = self.spec
         self.validate(spec)
 
-        extra_args = []
-
-        # required, otherwise building its python bindings on ADIOS will fail
-        extra_args.append("CFLAGS=-fPIC")
-
-        # always build external MXML, even in ADIOS 1.10.0+
-        extra_args.append('--with-mxml=%s' % spec['mxml'].prefix)
+        extra_args = [
+            # required, otherwise building its python bindings will fail
+            'CFLAGS={0}'.format(self.compiler.pic_flag),
+            # always build external MXML, even in ADIOS 1.10.0+
+            '--with-mxml={0}'.format(spec['mxml'].prefix)
+        ]
 
         if '+shared' in spec:
             extra_args.append('--enable-shared')
diff --git a/var/spack/repos/builtin/packages/arpack/package.py b/var/spack/repos/builtin/packages/arpack/package.py
index 831a379fcee2e9ed637d1db951288cb0348cb619..67ab05023637f7e43865e6a4072f22ee5c5abea3 100644
--- a/var/spack/repos/builtin/packages/arpack/package.py
+++ b/var/spack/repos/builtin/packages/arpack/package.py
@@ -60,7 +60,9 @@ def patch(self):
 
         # Be sure to use the Spack compiler wrapper
         makefile.filter('^FC.*', 'FC = {0}'.format(os.environ['F77']))
-        makefile.filter('^FFLAGS.*', 'FFLAGS = -O2 -g -fPIC')
+        makefile.filter(
+            '^FFLAGS.*', 'FFLAGS = -O2 -g {0}'.format(self.compiler.pic_flag)
+        )
 
         if not which('ranlib'):
             makefile.filter('^RANLIB.*', 'RANLIB = touch')
diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py
index e92c5b5b438e09f327a02f8bb1ec3b5e98c5d736..5987f0865a8c40a5083367d53c17da518f94e54c 100644
--- a/var/spack/repos/builtin/packages/cantera/package.py
+++ b/var/spack/repos/builtin/packages/cantera/package.py
@@ -78,7 +78,7 @@ def install(self, spec, prefix):
             'CXX={0}'.format(os.environ['CXX']),
             'F77={0}'.format(os.environ['F77']),
             'FORTRAN={0}'.format(os.environ['FC']),
-            'cc_flags=-fPIC',
+            'cc_flags={0}'.format(self.compiler.pic_flag),
             # Allow Spack environment variables to propagate through to SCons
             'env_vars=all'
         ]
diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py
index 6c0974994b62f354740a5d698b64800a02a1eb88..87309ed65e2799a75df12151fad637ab4e6636ee 100644
--- a/var/spack/repos/builtin/packages/hdf/package.py
+++ b/var/spack/repos/builtin/packages/hdf/package.py
@@ -51,7 +51,7 @@ def configure_args(self):
         spec = self.spec
 
         config_args = [
-            'CFLAGS=-fPIC',
+            'CFLAGS={0}'.format(self.compiler.pic_flag),
             '--with-jpeg={0}'.format(spec['jpeg'].prefix),
             '--with-zlib={0}'.format(spec['zlib'].prefix),
             '--disable-netcdf',  # must be disabled to build NetCDF with HDF4
diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py
index c1909451d10d7051f0e2a39299c6f7a73fdc68e5..cfe5cfa4bb9139bbc5f7d9c4dcdcf7dffff5e8e9 100644
--- a/var/spack/repos/builtin/packages/lammps/package.py
+++ b/var/spack/repos/builtin/packages/lammps/package.py
@@ -74,7 +74,7 @@ def edit(self, spec, prefix):
             config.append('CCFLAGS = -fopenmp')
             config.append('LINKFLAGS = -fopenmp $(OPTFLAGS)')
 
-        config.append('SHFLAGS = -fPIC')
+        config.append('SHFLAGS = {0}'.format(self.compiler.pic_flag))
         config.append('DEPFLAGS = -M')
         config.append('LINK = c++')
 
diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py
index 2f450951e3a95998f49a9ad002446c2720a0ff34..43feace93127069d109214bac3a952f7e92a0985 100644
--- a/var/spack/repos/builtin/packages/metis/package.py
+++ b/var/spack/repos/builtin/packages/metis/package.py
@@ -91,7 +91,7 @@ def install(self, spec, prefix):
             raise InstallError('METIS@:4 does not support the following '
                                'variants: gdb, int64, real64.')
 
-        options = ['COPTIONS=-fPIC']
+        options = ['COPTIONS={0}'.format(self.compiler.pic_flag)]
         if '+debug' in spec:
             options.append('OPTFLAGS=-g -O0')
         make(*options)
@@ -119,7 +119,7 @@ def install(self, spec, prefix):
             install(sharefile, prefix.share)
 
         if '+shared' in spec:
-            shared_flags = ['-fPIC', '-shared']
+            shared_flags = [self.compiler.pic_flag, '-shared']
             if sys.platform == 'darwin':
                 shared_suffix = 'dylib'
                 shared_flags.extend(['-Wl,-all_load', 'libmetis.a'])
diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py
index e8b87e52c13ff8050c2c47e4594f55c1c1088867..da5ef6437b6fa4210a129cd5d1778c99df5f1ba0 100644
--- a/var/spack/repos/builtin/packages/mxml/package.py
+++ b/var/spack/repos/builtin/packages/mxml/package.py
@@ -50,7 +50,7 @@ def url_for_version(self, version):
     def configure_args(self):
         return [
             # ADIOS build with -fPIC, so we need it too (avoid linkage issue)
-            'CFLAGS=-fPIC',
+            'CFLAGS={0}'.format(self.compiler.pic_flag),
             # Default is non-shared, but avoid any future surprises
             '--disable-shared',
         ]
diff --git a/var/spack/repos/builtin/packages/nalu/package.py b/var/spack/repos/builtin/packages/nalu/package.py
index 040144ff1649dc8453be84fccb3a35bbc92ff3a1..3836c7a17f6e6dbb17e4765af72229bfaec33887 100644
--- a/var/spack/repos/builtin/packages/nalu/package.py
+++ b/var/spack/repos/builtin/packages/nalu/package.py
@@ -39,7 +39,7 @@ class Nalu(CMakePackage):
             git='https://github.com/NaluCFD/Nalu.git', branch='master')
 
     # Currently Nalu only builds static libraries; To be fixed soon
-    depends_on('yaml-cpp+fpic~shared')
+    depends_on('yaml-cpp+pic~shared')
     depends_on('trilinos~shared+exodus+tpetra+muelu+belos+ifpack2+amesos2+zoltan+stk+boost~superlu-dist+superlu+hdf5+zlib+pnetcdf@master')
 
     def cmake_args(self):
diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py
index 262036d77103f2fff99cbd70e8de7af58b7ae9fe..90dd4dd5d73262b32f11bdce76cd86056c14f001 100644
--- a/var/spack/repos/builtin/packages/netcdf/package.py
+++ b/var/spack/repos/builtin/packages/netcdf/package.py
@@ -133,7 +133,7 @@ def configure_args(self):
             config_args.append('--disable-shared')
             # We don't have shared libraries but we still want it to be
             # possible to use this library in shared builds
-            CFLAGS.append('-fPIC')
+            CFLAGS.append(self.compiler.pic_flag)
 
         if '+dap' in spec:
             config_args.append('--enable-dap')
diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
index d6419b744e0061c88d06a4523a364232a422faf1..6c6114f0115360d76ed912573d0459fd17f4f2b3 100644
--- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
@@ -46,9 +46,9 @@ class NetlibScalapack(CMakePackage):
         description='Build the shared library version'
     )
     variant(
-        'fpic',
+        'pic',
         default=False,
-        description='Build with -fpic compiler option'
+        description='Build position independent code'
     )
 
     provides('scalapack')
@@ -87,10 +87,10 @@ def cmake_args(self):
             '-DBLAS_LIBRARIES=%s' % (blas.joined(';'))
         ])
 
-        if '+fpic' in spec:
+        if '+pic' in spec:
             options.extend([
-                "-DCMAKE_C_FLAGS=-fPIC",
-                "-DCMAKE_Fortran_FLAGS=-fPIC"
+                "-DCMAKE_C_FLAGS=%s" % self.compiler.pic_flag,
+                "-DCMAKE_Fortran_FLAGS=%s" % self.compiler.pic_flag
             ])
 
         return options
diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py
index 5b78ae935b71cfd903d2f76b859ebc90bb502039..e89fc971d59a6ac54ab69622910073b74785689d 100644
--- a/var/spack/repos/builtin/packages/otf2/package.py
+++ b/var/spack/repos/builtin/packages/otf2/package.py
@@ -41,4 +41,8 @@ class Otf2(AutotoolsPackage):
     version('1.2.1', '8fb3e11fb7489896596ae2c7c83d7fc8')
 
     def configure_args(self):
-        return ["--enable-shared", "CFLAGS=-fPIC", "CXXFLAGS=-fPIC"]
+        return [
+            '--enable-shared',
+            'CFLAGS={0}'.format(self.compiler.pic_flag),
+            'CXXFLAGS={0}'.format(self.compiler.pic_flag)
+        ]
diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
index 6d222174408a282abf7a03e12579b01e84062a24..757a336dd94cf59f55e8e3bc178424a8eda302f9 100644
--- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py
+++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
@@ -40,7 +40,7 @@ class ParallelNetcdf(AutotoolsPackage):
 
     variant('cxx', default=True, description='Build the C++ Interface')
     variant('fortran', default=True, description='Build the Fortran Interface')
-    variant('fpic', default=True,
+    variant('pic', default=True,
             description='Produce position-independent code (for shared libs)')
 
     depends_on('mpi')
@@ -53,12 +53,18 @@ def configure_args(self):
         spec = self.spec
 
         args = ['--with-mpi={0}'.format(spec['mpi'].prefix)]
-        args.append('SEQ_CC=%s' % spack_cc)
+        args.append('SEQ_CC={0}'.format(spack_cc))
+
+        if '+pic' in spec:
+            args.extend([
+                'CFLAGS={0}'.format(self.compiler.pic_flag),
+                'CXXFLAGS={0}'.format(self.compiler.pic_flag),
+                'FFLAGS={0}'.format(self.compiler.pic_flag)
+            ])
 
-        if '+fpic' in spec:
-            args.extend(['CFLAGS=-fPIC', 'CXXFLAGS=-fPIC', 'FFLAGS=-fPIC'])
         if '~cxx' in spec:
             args.append('--disable-cxx')
+
         if '~fortran' in spec:
             args.append('--disable-fortran')
 
diff --git a/var/spack/repos/builtin/packages/parmgridgen/package.py b/var/spack/repos/builtin/packages/parmgridgen/package.py
index 50eca8105350a4bf9c809a6324722435d2b59838..8630a139ec17de3b72900030d5cdd845ab0e46bf 100644
--- a/var/spack/repos/builtin/packages/parmgridgen/package.py
+++ b/var/spack/repos/builtin/packages/parmgridgen/package.py
@@ -47,8 +47,8 @@ class Parmgridgen(Package):
     def install(self, spec, prefix):
         make_opts = [
             'make=make',
-            'COPTIONS=-fPIC',
-            'LDOPTIONS=-fPIC',
+            'COPTIONS={0}'.format(self.compiler.pic_flag),
+            'LDOPTIONS={0}'.format(self.compiler.pic_flag),
             'CC={0}'.format(self.compiler.cc),
             'LD={0}'.format(self.compiler.cc),
             'LIBDIR=-L../..',
diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py
index d164c38f54a969ad1080c865f97c2642173d17b0..05482bd0c46494ec9bc2669e7d57b75a1e4a12b9 100644
--- a/var/spack/repos/builtin/packages/scorep/package.py
+++ b/var/spack/repos/builtin/packages/scorep/package.py
@@ -88,5 +88,8 @@ def configure_args(self):
         if '~shmem' in spec:
             config_args.append("--without-shmem")
 
-        config_args.extend(["CFLAGS=-fPIC", "CXXFLAGS=-fPIC"])
+        config_args.extend([
+            'CFLAGS={0}'.format(self.compiler.pic_flag),
+            'CXXFLAGS={0}'.format(self.compiler.pic_flag)
+        ])
         return config_args
diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py
index 8071a9765faba20e9046ce6f0eba208b8e7b5ac3..b5903c2789626dceb2421b714047d6d64d7b1fad 100644
--- a/var/spack/repos/builtin/packages/scotch/package.py
+++ b/var/spack/repos/builtin/packages/scotch/package.py
@@ -129,7 +129,9 @@ def configure(self):
             if self.spec.satisfies('platform=darwin'):
                 makefile_inc.extend([
                     'LIB       = .dylib',
-                    'CLIBFLAGS = -dynamiclib -fPIC',
+                    'CLIBFLAGS = -dynamiclib {0}'.format(
+                        self.compiler.pic_flag
+                    ),
                     'RANLIB    = echo',
                     'AR        = $(CC)',
                     'ARFLAGS   = -dynamiclib $(LDFLAGS) -Wl,-install_name -Wl,%s/$(notdir $@) -undefined dynamic_lookup -o ' % prefix.lib  # noqa
@@ -137,12 +139,12 @@ def configure(self):
             else:
                 makefile_inc.extend([
                     'LIB       = .so',
-                    'CLIBFLAGS = -shared -fPIC',
+                    'CLIBFLAGS = -shared {0}'.format(self.compiler.pic_flag),
                     'RANLIB    = echo',
                     'AR        = $(CC)',
                     'ARFLAGS   = -shared $(LDFLAGS) -o'
                 ])
-            cflags.append('-fPIC')
+            cflags.append(self.compiler.pic_flag)
         else:
             makefile_inc.extend([
                 'LIB       = .a',
diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py
index 98e2f8f0099437a4443d576aa229474b3ef892d5..18c3d409f84593f933b90623ea714ff7bcddf9ca 100644
--- a/var/spack/repos/builtin/packages/sundials/package.py
+++ b/var/spack/repos/builtin/packages/sundials/package.py
@@ -58,8 +58,8 @@ def install(self, spec, prefix):
         cmake_args = std_cmake_args[:]
         cmake_args.extend([
             '-DBUILD_SHARED_LIBS=ON',
-            '-DCMAKE_C_FLAGS=-fPIC',
-            '-DCMAKE_Fortran_FLAGS=-fPIC',
+            '-DCMAKE_C_FLAGS={0}'.format(self.compiler.pic_flag),
+            '-DCMAKE_Fortran_FLAGS={0}'.format(self.compiler.pic_flag),
             '-DEXAMPLES_ENABLE=ON',
             '-DEXAMPLES_INSTALL=ON',
             '-DFCMIX_ENABLE=ON'
diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py
index 7cdf4315fc9e392be971d3a49dc16c2a55bf2b42..c7ef1e3baebb12ad5ffecf1716add477c50d94bf 100644
--- a/var/spack/repos/builtin/packages/superlu/package.py
+++ b/var/spack/repos/builtin/packages/superlu/package.py
@@ -38,7 +38,7 @@ class Superlu(Package):
     version('5.2.1', '3a1a9bff20cb06b7d97c46d337504447')
     version('4.3', 'b72c6309f25e9660133007b82621ba7c')
 
-    variant('fpic',    default=True,
+    variant('pic',    default=True,
             description='Build with position independent code')
 
     depends_on('cmake', when='@5.2.1:', type='build')
@@ -51,7 +51,7 @@ def install(self, spec, prefix):
             '-DBLAS_blas_LIBRARY={0}'.format(spec['blas'].libs.joined())
         ]
 
-        if '+fpic' in spec:
+        if '+pic' in spec:
             cmake_args.extend([
                 '-DCMAKE_POSITION_INDEPENDENT_CODE=ON'
             ])
@@ -89,7 +89,7 @@ def install(self, spec, prefix):
             'CDEFS      = -DAdd_'
         ])
 
-        if '+fpic' in spec:
+        if '+pic' in spec:
             config.extend([
                 # Use these lines instead when pic_flag capability arrives
                 'CFLAGS     = -O3 {0}'.format(self.compiler.pic_flag),
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 9d9804cf9f67969254defdcf686885fad95f6282..f8181f77f98d652a01bfa0194fda535fb70d8efc 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -177,7 +177,7 @@ class Trilinos(CMakePackage):
 
     # ###################### Dependencies ##########################
 
-    # Everything should be compiled with -fpic
+    # Everything should be compiled position independent (-fpic)
     depends_on('blas')
     depends_on('lapack')
     depends_on('boost', when='+boost')
@@ -207,7 +207,7 @@ class Trilinos(CMakePackage):
     depends_on('superlu-dist@:4.3', when='@:12.6.1+superlu-dist')
     depends_on('superlu-dist@develop', when='@develop+superlu-dist')
     depends_on('superlu-dist@xsdk-0.2.0', when='@xsdk-0.2.0+superlu-dist')
-    depends_on('superlu+fpic@4.3', when='+superlu')
+    depends_on('superlu+pic@4.3', when='+superlu')
     # Trilinos can not be built against 64bit int hypre
     depends_on('hypre~internal-superlu~int64', when='+hypre')
     depends_on('hypre@xsdk-0.2.0~internal-superlu', when='@xsdk-0.2.0+hypre')
diff --git a/var/spack/repos/builtin/packages/yaml-cpp/package.py b/var/spack/repos/builtin/packages/yaml-cpp/package.py
index e537af6b414ce743ce46521c479fb2e5e39182d7..59228ec4cb4c3be8d58c3c946464535c640d0ec0 100644
--- a/var/spack/repos/builtin/packages/yaml-cpp/package.py
+++ b/var/spack/repos/builtin/packages/yaml-cpp/package.py
@@ -36,7 +36,7 @@ class YamlCpp(CMakePackage):
 
     variant('shared', default=True,
             description='Enable build of shared libraries')
-    variant('fpic',   default=True,
+    variant('pic',   default=True,
             description='Build with position independent code')
 
     depends_on('boost', when='@:0.5.3')
@@ -49,7 +49,7 @@ def cmake_args(self):
             '-DBUILD_SHARED_LIBS:BOOL=%s' % (
                 'ON' if '+shared' in spec else 'OFF'),
             '-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=%s' % (
-                'ON' if '+fpic' in spec else 'OFF'),
+                'ON' if '+pic' in spec else 'OFF'),
         ])
 
         return options
diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py
index 008bea9c276865721e6ec1208f8563feeee38a64..6404cadbe138ee4394528d0a1854e4820b000f8f 100644
--- a/var/spack/repos/builtin/packages/zoltan/package.py
+++ b/var/spack/repos/builtin/packages/zoltan/package.py
@@ -76,7 +76,7 @@ def install(self, spec, prefix):
         if '+shared' in spec:
             config_args.append('RANLIB=echo')
             config_args.append('--with-ar=$(CXX) -shared $(LDFLAGS) -o')
-            config_cflags.append('-fPIC')
+            config_cflags.append(self.compiler.pic_flag)
             if spec.satisfies('%gcc'):
                 config_args.append('--with-libs={0}'.format('-lgfortran'))