diff --git a/lib/spack/spack/build_systems/autotools.py b/lib/spack/spack/build_systems/autotools.py
index 5b4f223d417ba7bf375cfe479de01974799072dc..6591b6495b63c8f1f0c3bfca9281f50ea1fc360e 100644
--- a/lib/spack/spack/build_systems/autotools.py
+++ b/lib/spack/spack/build_systems/autotools.py
@@ -169,7 +169,7 @@ def _do_patch_libtool(self):
                         line = 'wl="-Wl,"\n'
                     if line == 'pic_flag=""\n':
                         line = 'pic_flag="{0}"\n'\
-                               .format(self.compiler.pic_flag)
+                               .format(self.compiler.cc_pic_flag)
                     sys.stdout.write(line)
 
     @property
diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py
index 9fc7aa51a25cfb4a8969c384bb8dc447ae102574..8afbe48c0c64615d8f9fd86afedfe8a173b25ea6 100644
--- a/lib/spack/spack/compiler.py
+++ b/lib/spack/spack/compiler.py
@@ -410,6 +410,30 @@ def c11_flag(self):
                                       "the C11 standard",
                                       "c11_flag")
 
+    @property
+    def cc_pic_flag(self):
+        """Returns the flag used by the C compiler to produce
+        Position Independent Code (PIC)."""
+        return '-fPIC'
+
+    @property
+    def cxx_pic_flag(self):
+        """Returns the flag used by the C++ compiler to produce
+        Position Independent Code (PIC)."""
+        return '-fPIC'
+
+    @property
+    def f77_pic_flag(self):
+        """Returns the flag used by the F77 compiler to produce
+        Position Independent Code (PIC)."""
+        return '-fPIC'
+
+    @property
+    def fc_pic_flag(self):
+        """Returns the flag used by the FC compiler to produce
+        Position Independent Code (PIC)."""
+        return '-fPIC'
+
     #
     # Compiler classes have methods for querying the version of
     # specific compiler executables.  This is used when discovering compilers.
diff --git a/lib/spack/spack/compilers/arm.py b/lib/spack/spack/compilers/arm.py
index ca17ff42e8430b45153cd8020e593351efc59e7f..2f6e19500654f9f4928650eeaaf5bdce6ec8f7c2 100644
--- a/lib/spack/spack/compilers/arm.py
+++ b/lib/spack/spack/compilers/arm.py
@@ -80,7 +80,19 @@ def c11_flag(self):
         return "-std=c11"
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def f77_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-fPIC"
 
     required_libs = ['libclang', 'libflang']
diff --git a/lib/spack/spack/compilers/cce.py b/lib/spack/spack/compilers/cce.py
index 23a1771e9cff8a5d5bc38e988051a134e6fa642b..7aedb55a5d01f131421b335eee3048ae412f61c2 100644
--- a/lib/spack/spack/compilers/cce.py
+++ b/lib/spack/spack/compilers/cce.py
@@ -68,5 +68,17 @@ def c11_flag(self):
                                       '< 8.5')
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-h PIC"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-h PIC"
+
+    @property
+    def f77_pic_flag(self):
+        return "-h PIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-h PIC"
diff --git a/lib/spack/spack/compilers/clang.py b/lib/spack/spack/compilers/clang.py
index c8df63e533f6e7de5c9bd23fe0c1a7f0e0565c4c..b14eaa1278b2a618a0ea2a1b0e31aebca1ce90a7 100644
--- a/lib/spack/spack/compilers/clang.py
+++ b/lib/spack/spack/compilers/clang.py
@@ -174,7 +174,19 @@ def c11_flag(self):
             return "-std=c11"
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def f77_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-fPIC"
 
     required_libs = ['libclang']
diff --git a/lib/spack/spack/compilers/fj.py b/lib/spack/spack/compilers/fj.py
index 1f7d52f0261081d88dad9a3ec5755d9386b1cab8..54d9308c4a0fe67034f0a241f8bd6048d1cd6603 100644
--- a/lib/spack/spack/compilers/fj.py
+++ b/lib/spack/spack/compilers/fj.py
@@ -59,5 +59,17 @@ def c11_flag(self):
         return "-std=c11"
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-KPIC"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-KPIC"
+
+    @property
+    def f77_pic_flag(self):
+        return "-KPIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-KPIC"
diff --git a/lib/spack/spack/compilers/gcc.py b/lib/spack/spack/compilers/gcc.py
index da559d554c2879000ee47273cb9c7cbce15ee478..fc9074a67aa05bc5cb36d42da2d9462b949fcb2f 100644
--- a/lib/spack/spack/compilers/gcc.py
+++ b/lib/spack/spack/compilers/gcc.py
@@ -110,7 +110,19 @@ def c11_flag(self):
         return "-std=c11"
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def f77_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-fPIC"
 
     required_libs = ['libgcc', 'libgfortran']
diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py
index bc0e44b2740358d5da7fa7655b26c8bad9089320..c7d853e3fa96e6d2aecdbdeaed6a90ab1013bd32 100644
--- a/lib/spack/spack/compilers/intel.py
+++ b/lib/spack/spack/compilers/intel.py
@@ -92,7 +92,19 @@ def c11_flag(self):
             return "-std=c1x"
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def f77_pic_flag(self):
+        return "-fPIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-fPIC"
 
     @property
diff --git a/lib/spack/spack/compilers/nag.py b/lib/spack/spack/compilers/nag.py
index b7ef2297b87e5c6c372a89a7583b394a289fdb98..e5dffa4a67b6405de251c757f713b5389b2375a3 100644
--- a/lib/spack/spack/compilers/nag.py
+++ b/lib/spack/spack/compilers/nag.py
@@ -41,7 +41,11 @@ def cxx11_flag(self):
         return "-std=c++11"
 
     @property
-    def pic_flag(self):
+    def f77_pic_flag(self):
+        return "-PIC"
+
+    @property
+    def fc_pic_flag(self):
         return "-PIC"
 
     # Unlike other compilers, the NAG compiler passes options to GCC, which
diff --git a/lib/spack/spack/compilers/pgi.py b/lib/spack/spack/compilers/pgi.py
index 7da991754f10f225bbe372fb7251234ddb6b48eb..13d8f69ec51ab9372003c5c7e1f29c14f4140c4c 100644
--- a/lib/spack/spack/compilers/pgi.py
+++ b/lib/spack/spack/compilers/pgi.py
@@ -46,7 +46,19 @@ def cxx11_flag(self):
         return "-std=c++11"
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-fpic"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-fpic"
+
+    @property
+    def f77_pic_flag(self):
+        return "-fpic"
+
+    @property
+    def fc_pic_flag(self):
         return "-fpic"
 
     required_libs = ['libpgc', 'libpgf90']
diff --git a/lib/spack/spack/compilers/xl.py b/lib/spack/spack/compilers/xl.py
index 36aa4dae7d5200146ef16200caa8960042dfa0b2..46a5002e25d935ae9d80d38a82835ddaf25e0046 100644
--- a/lib/spack/spack/compilers/xl.py
+++ b/lib/spack/spack/compilers/xl.py
@@ -70,7 +70,19 @@ def c11_flag(self):
                                       '< 12.1')
 
     @property
-    def pic_flag(self):
+    def cc_pic_flag(self):
+        return "-qpic"
+
+    @property
+    def cxx_pic_flag(self):
+        return "-qpic"
+
+    @property
+    def f77_pic_flag(self):
+        return "-qpic"
+
+    @property
+    def fc_pic_flag(self):
         return "-qpic"
 
     @property
diff --git a/lib/spack/spack/test/compilers.py b/lib/spack/spack/test/compilers.py
index 13e3d9e69574db714fcf0b3fa8ffbbac04b07e04..24115ba562e6d0b6b979dde870af25daff99c56f 100644
--- a/lib/spack/spack/test/compilers.py
+++ b/lib/spack/spack/test/compilers.py
@@ -17,13 +17,13 @@
 import spack.compilers.arm
 import spack.compilers.cce
 import spack.compilers.clang
+import spack.compilers.fj
 import spack.compilers.gcc
 import spack.compilers.intel
 import spack.compilers.nag
 import spack.compilers.pgi
 import spack.compilers.xl
 import spack.compilers.xl_r
-import spack.compilers.fj
 
 from spack.compiler import Compiler
 
@@ -222,18 +222,53 @@ def supported_flag_test(flag, flag_value_ref, spec=None):
 # Tests for UnsupportedCompilerFlag exceptions from default
 # implementations of flags.
 def test_default_flags():
+    supported_flag_test("cc_rpath_arg",  "-Wl,-rpath,")
+    supported_flag_test("cxx_rpath_arg", "-Wl,-rpath,")
+    supported_flag_test("f77_rpath_arg", "-Wl,-rpath,")
+    supported_flag_test("fc_rpath_arg",  "-Wl,-rpath,")
+    supported_flag_test("linker_arg", "-Wl,")
     unsupported_flag_test("openmp_flag")
     unsupported_flag_test("cxx11_flag")
     unsupported_flag_test("cxx14_flag")
     unsupported_flag_test("cxx17_flag")
     supported_flag_test("cxx98_flag", "")
+    unsupported_flag_test("c99_flag")
+    unsupported_flag_test("c11_flag")
+    supported_flag_test("cc_pic_flag",  "-fPIC")
+    supported_flag_test("cxx_pic_flag", "-fPIC")
+    supported_flag_test("f77_pic_flag", "-fPIC")
+    supported_flag_test("fc_pic_flag",  "-fPIC")
 
 
 # Verify behavior of particular compiler definitions.
-def test_clang_flags():
-    # Common
-    supported_flag_test("pic_flag", "-fPIC", "gcc@4.0")
+def test_arm_flags():
+    supported_flag_test("openmp_flag", "-fopenmp", "arm@1.0")
+    supported_flag_test("cxx11_flag", "-std=c++11", "arm@1.0")
+    supported_flag_test("cxx14_flag", "-std=c++14", "arm@1.0")
+    supported_flag_test("cxx17_flag", "-std=c++1z", "arm@1.0")
+    supported_flag_test("c99_flag", "-std=c99", "arm@1.0")
+    supported_flag_test("c11_flag", "-std=c11", "arm@1.0")
+    supported_flag_test("cc_pic_flag",  "-fPIC", "arm@1.0")
+    supported_flag_test("cxx_pic_flag", "-fPIC", "arm@1.0")
+    supported_flag_test("f77_pic_flag", "-fPIC", "arm@1.0")
+    supported_flag_test("fc_pic_flag",  "-fPIC", "arm@1.0")
+
+
+def test_cce_flags():
+    supported_flag_test("openmp_flag", "-h omp", "cce@1.0")
+    supported_flag_test("cxx11_flag", "-h std=c++11", "cce@1.0")
+    unsupported_flag_test("c99_flag", "cce@8.0")
+    supported_flag_test("c99_flag", "-h c99,noconform,gnu", "cce@8.1")
+    supported_flag_test("c99_flag", "-h stc=c99,noconform,gnu", "cce@8.4")
+    unsupported_flag_test("c11_flag", "cce@8.4")
+    supported_flag_test("c11_flag", "-h std=c11,noconform,gnu", "cce@8.5")
+    supported_flag_test("cc_pic_flag",  "-h PIC", "cce@1.0")
+    supported_flag_test("cxx_pic_flag", "-h PIC", "cce@1.0")
+    supported_flag_test("f77_pic_flag", "-h PIC", "cce@1.0")
+    supported_flag_test("fc_pic_flag",  "-h PIC", "cce@1.0")
 
+
+def test_clang_flags():
     # Apple Clang.
     supported_flag_test(
         "openmp_flag", "-Xpreprocessor -fopenmp", "clang@2.0.0-apple")
@@ -244,6 +279,13 @@ def test_clang_flags():
     supported_flag_test("cxx14_flag", "-std=c++14", "clang@6.1.0-apple")
     unsupported_flag_test("cxx17_flag", "clang@6.0.0-apple")
     supported_flag_test("cxx17_flag", "-std=c++1z", "clang@6.1.0-apple")
+    supported_flag_test("c99_flag", "-std=c99", "clang@6.1.0-apple")
+    unsupported_flag_test("c11_flag", "clang@6.0.0-apple")
+    supported_flag_test("c11_flag", "-std=c11", "clang@6.1.0-apple")
+    supported_flag_test("cc_pic_flag",  "-fPIC", "clang@2.0.0-apple")
+    supported_flag_test("cxx_pic_flag", "-fPIC", "clang@2.0.0-apple")
+    supported_flag_test("f77_pic_flag", "-fPIC", "clang@2.0.0-apple")
+    supported_flag_test("fc_pic_flag",  "-fPIC", "clang@2.0.0-apple")
 
     # non-Apple Clang.
     supported_flag_test("openmp_flag", "-fopenmp", "clang@3.3")
@@ -255,12 +297,26 @@ def test_clang_flags():
     unsupported_flag_test("cxx17_flag", "clang@3.4")
     supported_flag_test("cxx17_flag", "-std=c++1z", "clang@3.5")
     supported_flag_test("cxx17_flag", "-std=c++17", "clang@5.0")
+    supported_flag_test("c99_flag", "-std=c99", "clang@3.3")
+    unsupported_flag_test("c11_flag", "clang@6.0.0")
+    supported_flag_test("c11_flag", "-std=c11", "clang@6.1.0")
+    supported_flag_test("cc_pic_flag",  "-fPIC", "clang@3.3")
+    supported_flag_test("cxx_pic_flag", "-fPIC", "clang@3.3")
+    supported_flag_test("f77_pic_flag", "-fPIC", "clang@3.3")
+    supported_flag_test("fc_pic_flag",  "-fPIC", "clang@3.3")
 
 
-def test_cce_flags():
-    supported_flag_test("openmp_flag", "-h omp", "cce@1.0")
-    supported_flag_test("cxx11_flag", "-h std=c++11", "cce@1.0")
-    supported_flag_test("pic_flag", "-h PIC", "cce@1.0")
+def test_fj_flags():
+    supported_flag_test("openmp_flag", "-Kopenmp", "fj@4.0.0")
+    supported_flag_test("cxx98_flag", "-std=c++98", "fj@4.0.0")
+    supported_flag_test("cxx11_flag", "-std=c++11", "fj@4.0.0")
+    supported_flag_test("cxx14_flag", "-std=c++14", "fj@4.0.0")
+    supported_flag_test("c99_flag", "-std=c99", "fj@4.0.0")
+    supported_flag_test("c11_flag", "-std=c11", "fj@4.0.0")
+    supported_flag_test("cc_pic_flag",  "-KPIC", "fj@4.0.0")
+    supported_flag_test("cxx_pic_flag", "-KPIC", "fj@4.0.0")
+    supported_flag_test("f77_pic_flag", "-KPIC", "fj@4.0.0")
+    supported_flag_test("fc_pic_flag",  "-KPIC", "fj@4.0.0")
 
 
 def test_gcc_flags():
@@ -275,7 +331,17 @@ def test_gcc_flags():
     supported_flag_test("cxx14_flag", "-std=c++14", "gcc@4.9")
     supported_flag_test("cxx14_flag", "", "gcc@6.0")
     unsupported_flag_test("cxx17_flag", "gcc@4.9")
-    supported_flag_test("pic_flag", "-fPIC", "gcc@4.0")
+    supported_flag_test("cxx17_flag", "-std=c++1z", "gcc@5.0")
+    supported_flag_test("cxx17_flag", "-std=c++17", "gcc@6.0")
+    unsupported_flag_test("c99_flag", "gcc@4.4")
+    supported_flag_test("c99_flag", "-std=c99", "gcc@4.5")
+    unsupported_flag_test("c11_flag", "gcc@4.6")
+    supported_flag_test("c11_flag", "-std=c11", "gcc@4.7")
+    supported_flag_test("cc_pic_flag",  "-fPIC", "gcc@4.0")
+    supported_flag_test("cxx_pic_flag", "-fPIC", "gcc@4.0")
+    supported_flag_test("f77_pic_flag", "-fPIC", "gcc@4.0")
+    supported_flag_test("fc_pic_flag",  "-fPIC", "gcc@4.0")
+    supported_flag_test("stdcxx_libs", ("-lstdc++",), "gcc@4.1")
 
 
 def test_intel_flags():
@@ -287,43 +353,105 @@ def test_intel_flags():
     unsupported_flag_test("cxx14_flag", "intel@14.0")
     supported_flag_test("cxx14_flag", "-std=c++1y", "intel@15.0")
     supported_flag_test("cxx14_flag", "-std=c++14", "intel@15.0.2")
-    supported_flag_test("pic_flag", "-fPIC", "intel@1.0")
+    unsupported_flag_test("c99_flag", "intel@11.0")
+    supported_flag_test("c99_flag", "-std=c99", "intel@12.0")
+    unsupported_flag_test("c11_flag", "intel@15.0")
+    supported_flag_test("c11_flag", "-std=c1x", "intel@16.0")
+    supported_flag_test("cc_pic_flag",  "-fPIC", "intel@1.0")
+    supported_flag_test("cxx_pic_flag", "-fPIC", "intel@1.0")
+    supported_flag_test("f77_pic_flag", "-fPIC", "intel@1.0")
+    supported_flag_test("fc_pic_flag",  "-fPIC", "intel@1.0")
+    supported_flag_test("stdcxx_libs", ("-cxxlib",), "intel@1.0")
 
 
 def test_nag_flags():
     supported_flag_test("openmp_flag", "-openmp", "nag@1.0")
     supported_flag_test("cxx11_flag", "-std=c++11", "nag@1.0")
-    supported_flag_test("pic_flag", "-PIC", "nag@1.0")
+    supported_flag_test("cc_pic_flag",  "-fPIC", "nag@1.0")
+    supported_flag_test("cxx_pic_flag", "-fPIC", "nag@1.0")
+    supported_flag_test("f77_pic_flag", "-PIC",  "nag@1.0")
+    supported_flag_test("fc_pic_flag",  "-PIC",  "nag@1.0")
+    supported_flag_test("cc_rpath_arg",  "-Wl,-rpath,", "nag@1.0")
+    supported_flag_test("cxx_rpath_arg", "-Wl,-rpath,", "nag@1.0")
+    supported_flag_test("f77_rpath_arg", "-Wl,-Wl,,-rpath,,", "nag@1.0")
+    supported_flag_test("fc_rpath_arg",  "-Wl,-Wl,,-rpath,,", "nag@1.0")
+    supported_flag_test("linker_arg", "-Wl,-Wl,,", "nag@1.0")
 
 
 def test_pgi_flags():
     supported_flag_test("openmp_flag", "-mp", "pgi@1.0")
     supported_flag_test("cxx11_flag", "-std=c++11", "pgi@1.0")
-    supported_flag_test("pic_flag", "-fpic", "pgi@1.0")
+    unsupported_flag_test("c99_flag", "pgi@12.9")
+    supported_flag_test("c99_flag", "-c99", "pgi@12.10")
+    unsupported_flag_test("c11_flag", "pgi@15.2")
+    supported_flag_test("c11_flag", "-c11", "pgi@15.3")
+    supported_flag_test("cc_pic_flag",  "-fpic", "pgi@1.0")
+    supported_flag_test("cxx_pic_flag", "-fpic", "pgi@1.0")
+    supported_flag_test("f77_pic_flag", "-fpic", "pgi@1.0")
+    supported_flag_test("fc_pic_flag",  "-fpic", "pgi@1.0")
 
 
 def test_xl_flags():
     supported_flag_test("openmp_flag", "-qsmp=omp", "xl@1.0")
     unsupported_flag_test("cxx11_flag", "xl@13.0")
     supported_flag_test("cxx11_flag", "-qlanglvl=extended0x", "xl@13.1")
-    supported_flag_test("pic_flag", "-qpic", "xl@1.0")
+    unsupported_flag_test("c99_flag", "xl@10.0")
+    supported_flag_test("c99_flag", "-qlanglvl=extc99", "xl@10.1")
+    supported_flag_test("c99_flag", "-std=gnu99", "xl@13.1.1")
+    unsupported_flag_test("c11_flag", "xl@12.0")
+    supported_flag_test("c11_flag", "-qlanglvl=extc1x", "xl@12.1")
+    supported_flag_test("c11_flag", "-std=gnu11", "xl@13.1.2")
+    supported_flag_test("cc_pic_flag",  "-qpic", "xl@1.0")
+    supported_flag_test("cxx_pic_flag", "-qpic", "xl@1.0")
+    supported_flag_test("f77_pic_flag", "-qpic", "xl@1.0")
+    supported_flag_test("fc_pic_flag",  "-qpic", "xl@1.0")
+    supported_flag_test("fflags", "-qzerosize", "xl@1.0")
 
 
 def test_xl_r_flags():
     supported_flag_test("openmp_flag", "-qsmp=omp", "xl_r@1.0")
     unsupported_flag_test("cxx11_flag", "xl_r@13.0")
     supported_flag_test("cxx11_flag", "-qlanglvl=extended0x", "xl_r@13.1")
-    supported_flag_test("pic_flag", "-qpic", "xl_r@1.0")
+    unsupported_flag_test("c99_flag", "xl_r@10.0")
+    supported_flag_test("c99_flag", "-qlanglvl=extc99", "xl_r@10.1")
+    supported_flag_test("c99_flag", "-std=gnu99", "xl_r@13.1.1")
+    unsupported_flag_test("c11_flag", "xl_r@12.0")
+    supported_flag_test("c11_flag", "-qlanglvl=extc1x", "xl_r@12.1")
+    supported_flag_test("c11_flag", "-std=gnu11", "xl_r@13.1.2")
+    supported_flag_test("cc_pic_flag",  "-qpic", "xl_r@1.0")
+    supported_flag_test("cxx_pic_flag", "-qpic", "xl_r@1.0")
+    supported_flag_test("f77_pic_flag", "-qpic", "xl_r@1.0")
+    supported_flag_test("fc_pic_flag",  "-qpic", "xl_r@1.0")
+    supported_flag_test("fflags", "-qzerosize", "xl_r@1.0")
 
 
-def test_fj_flags():
-    supported_flag_test("openmp_flag", "-Kopenmp", "fj@4.0.0")
-    supported_flag_test("cxx98_flag", "-std=c++98", "fj@4.0.0")
-    supported_flag_test("cxx11_flag", "-std=c++11", "fj@4.0.0")
-    supported_flag_test("cxx14_flag", "-std=c++14", "fj@4.0.0")
-    supported_flag_test("c99_flag", "-std=c99", "fj@4.0.0")
-    supported_flag_test("c11_flag", "-std=c11", "fj@4.0.0")
-    supported_flag_test("pic_flag", "-KPIC", "fj@4.0.0")
+@pytest.mark.parametrize('version_str,expected_version', [
+    ('Arm C/C++/Fortran Compiler version 19.0 (build number 73) (based on LLVM 7.0.2)\n' # NOQA
+     'Target: aarch64--linux-gnu\n'
+     'Thread model: posix\n'
+     'InstalledDir:\n'
+     '/opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin\n', # NOQA
+     '19.0.0.73'),
+    ('Arm C/C++/Fortran Compiler version 19.3.1 (build number 75) (based on LLVM 7.0.2)\n' # NOQA
+     'Target: aarch64--linux-gnu\n'
+     'Thread model: posix\n'
+     'InstalledDir:\n'
+     '/opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin\n', # NOQA
+     '19.3.1.75')
+])
+def test_arm_version_detection(version_str, expected_version):
+    version = spack.compilers.arm.Arm.extract_version_from_output(version_str)
+    assert version == expected_version
+
+
+@pytest.mark.parametrize('version_str,expected_version', [
+    ('Cray C : Version 8.4.6  Mon Apr 15, 2019  12:13:39\n', '8.4.6'),
+    ('Cray C++ : Version 8.4.6  Mon Apr 15, 2019  12:13:45\n', '8.4.6'),
+    ('Cray Fortran : Version 8.4.6  Mon Apr 15, 2019  12:13:55\n', '8.4.6')
+])
+def test_cce_version_detection(version_str, expected_version):
+    version = spack.compilers.cce.Cce.extract_version_from_output(version_str)
+    assert version == expected_version
 
 
 @pytest.mark.regression('10191')
@@ -364,21 +492,23 @@ def test_clang_version_detection(version_str, expected_version):
 
 
 @pytest.mark.parametrize('version_str,expected_version', [
-    ('Arm C/C++/Fortran Compiler version 19.0 (build number 73) (based on LLVM 7.0.2)\n' # NOQA
-     'Target: aarch64--linux-gnu\n'
-     'Thread model: posix\n'
-     'InstalledDir:\n'
-     '/opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin\n', # NOQA
-     '19.0.0.73'),
-    ('Arm C/C++/Fortran Compiler version 19.3.1 (build number 75) (based on LLVM 7.0.2)\n' # NOQA
-     'Target: aarch64--linux-gnu\n'
-     'Thread model: posix\n'
-     'InstalledDir:\n'
-     '/opt/arm/arm-hpc-compiler-19.0_Generic-AArch64_RHEL-7_aarch64-linux/bin\n', # NOQA
-     '19.3.1.75')
+    # C compiler
+    ('fcc (FCC) 4.0.0 20190314\n'
+     'simulating gcc version 6.1\n'
+     'Copyright FUJITSU LIMITED 2019',
+     '4.0.0'),
+    # C++ compiler
+    ('FCC (FCC) 4.0.0 20190314\n'
+     'simulating gcc version 6.1\n'
+     'Copyright FUJITSU LIMITED 2019',
+     '4.0.0'),
+    # Fortran compiler
+    ('frt (FRT) 4.0.0 20190314\n'
+     'Copyright FUJITSU LIMITED 2019',
+     '4.0.0')
 ])
-def test_arm_version_detection(version_str, expected_version):
-    version = spack.compilers.arm.Arm.extract_version_from_output(version_str)
+def test_fj_version_detection(version_str, expected_version):
+    version = spack.compilers.fj.Fj.extract_version_from_output(version_str)
     assert version == expected_version
 
 
@@ -454,37 +584,6 @@ def test_xl_version_detection(version_str, expected_version):
     assert version == expected_version
 
 
-@pytest.mark.parametrize('version_str,expected_version', [
-    ('Cray C : Version 8.4.6  Mon Apr 15, 2019  12:13:39\n', '8.4.6'),
-    ('Cray C++ : Version 8.4.6  Mon Apr 15, 2019  12:13:45\n', '8.4.6'),
-    ('Cray Fortran : Version 8.4.6  Mon Apr 15, 2019  12:13:55\n', '8.4.6')
-])
-def test_cce_version_detection(version_str, expected_version):
-    version = spack.compilers.cce.Cce.extract_version_from_output(version_str)
-    assert version == expected_version
-
-
-@pytest.mark.parametrize('version_str,expected_version', [
-    # C compiler
-    ('fcc (FCC) 4.0.0 20190314\n'
-     'simulating gcc version 6.1\n'
-     'Copyright FUJITSU LIMITED 2019',
-     '4.0.0'),
-    # C++ compiler
-    ('FCC (FCC) 4.0.0 20190314\n'
-     'simulating gcc version 6.1\n'
-     'Copyright FUJITSU LIMITED 2019',
-     '4.0.0'),
-    # Fortran compiler
-    ('frt (FRT) 4.0.0 20190314\n'
-     'Copyright FUJITSU LIMITED 2019',
-     '4.0.0')
-])
-def test_fj_version_detection(version_str, expected_version):
-    version = spack.compilers.fj.Fj.extract_version_from_output(version_str)
-    assert version == expected_version
-
-
 @pytest.mark.parametrize('compiler_spec,expected_result', [
     ('gcc@4.7.2', False), ('clang@3.3', False), ('clang@8.0.0', True)
 ])
diff --git a/var/spack/repos/builtin/packages/adios/package.py b/var/spack/repos/builtin/packages/adios/package.py
index 69949638982e71a2ddec40e08ddf9a5415ac1239..c850b3058b51d5aebb0c98c187f79c4e1682cd0f 100644
--- a/var/spack/repos/builtin/packages/adios/package.py
+++ b/var/spack/repos/builtin/packages/adios/package.py
@@ -133,7 +133,7 @@ def configure_args(self):
 
         extra_args = [
             # required, otherwise building its python bindings will fail
-            'CFLAGS={0}'.format(self.compiler.pic_flag)
+            'CFLAGS={0}'.format(self.compiler.cc_pic_flag)
         ]
 
         extra_args += self.enable_or_disable('shared')
diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py
index 0f4c8394cf01e0945bd9668bcb318d833c9051d8..cc223d2f7e423541070bcb2e5e6303558e60cb3c 100644
--- a/var/spack/repos/builtin/packages/boost/package.py
+++ b/var/spack/repos/builtin/packages/boost/package.py
@@ -371,7 +371,7 @@ def determine_b2_options(self, spec, options):
                 cxxflags.append(flag)
 
         if '+pic' in self.spec:
-            cxxflags.append(self.compiler.pic_flag)
+            cxxflags.append(self.compiler.cxx_pic_flag)
 
         # clang is not officially supported for pre-compiled headers
         # and at least in clang 3.9 still fails to build
diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py
index 4e2728fad8d480d3aaffcc8c1a698bfaf9828cc3..4b38ccc7b360b4baed8ee1b0628de1735101c5e7 100644
--- a/var/spack/repos/builtin/packages/cantera/package.py
+++ b/var/spack/repos/builtin/packages/cantera/package.py
@@ -59,7 +59,7 @@ def build_args(self, spec, prefix):
             'CC={0}'.format(spack_cc),
             'CXX={0}'.format(spack_cxx),
             'FORTRAN={0}'.format(spack_fc),
-            'cc_flags={0}'.format(self.compiler.pic_flag),
+            'cc_flags={0}'.format(self.compiler.cc_pic_flag),
             # Allow Spack environment variables to propagate through to SCons
             'env_vars=all'
         ]
diff --git a/var/spack/repos/builtin/packages/dataspaces/package.py b/var/spack/repos/builtin/packages/dataspaces/package.py
index 6e2120d39905873556c7ae558f40bf8f958ae172..be5c5c884f7531ebc996a6259d00986fc718bef5 100644
--- a/var/spack/repos/builtin/packages/dataspaces/package.py
+++ b/var/spack/repos/builtin/packages/dataspaces/package.py
@@ -56,7 +56,7 @@ def configure_args(self):
         args = []
         cookie = self.spec.variants['gni-cookie'].value
         ptag = self.spec.variants['ptag'].value
-        args.append('CFLAGS={0}'.format(self.compiler.pic_flag))
+        args.append('CFLAGS={0}'.format(self.compiler.cc_pic_flag))
         if self.spec.satisfies('+dimes'):
             args.append('--enable-dimes')
         if self.spec.satisfies('+cray-drc'):
diff --git a/var/spack/repos/builtin/packages/f77-zmq/package.py b/var/spack/repos/builtin/packages/f77-zmq/package.py
index bab446944265de3272a771ca2a08a267c29ed0a6..955ed2ecd6c8d8f99eefcbb38bb955eafa697f6b 100644
--- a/var/spack/repos/builtin/packages/f77-zmq/package.py
+++ b/var/spack/repos/builtin/packages/f77-zmq/package.py
@@ -31,7 +31,7 @@ def edit(self, spec, prefix):
         makefile = FileFilter('Makefile')
         makefile.filter('CC=.*',
                         'CC={0} {1}'.format(spack_cc,
-                                            self.compiler.pic_flag))
+                                            self.compiler.cc_pic_flag))
         makefile.filter('CFLAGS=.*', 'CFLAGS={0}'.format(cflags))
         makefile.filter('PREFIX=.*', 'PREFIX={0}'.format(self.prefix))
         p = self.spec['libzmq'].prefix
diff --git a/var/spack/repos/builtin/packages/fmt/package.py b/var/spack/repos/builtin/packages/fmt/package.py
index be39f6cc838efc5d9e5d9eaf40227688305bb8cc..e54bea78b4939c8429c82472da4d87f0baef54bf 100644
--- a/var/spack/repos/builtin/packages/fmt/package.py
+++ b/var/spack/repos/builtin/packages/fmt/package.py
@@ -61,8 +61,8 @@ def cmake_args(self):
 
         if '+pic' in spec:
             args.extend([
-                '-DCMAKE_C_FLAGS={0}'.format(self.compiler.pic_flag),
-                '-DCMAKE_CXX_FLAGS={0}'.format(self.compiler.pic_flag)
+                '-DCMAKE_C_FLAGS={0}'.format(self.compiler.cc_pic_flag),
+                '-DCMAKE_CXX_FLAGS={0}'.format(self.compiler.cxx_pic_flag)
             ])
 
         args.append('-DCMAKE_CXX_STANDARD={0}'.format(
diff --git a/var/spack/repos/builtin/packages/gasnet/package.py b/var/spack/repos/builtin/packages/gasnet/package.py
index 4a48df005e74f069d18419ee5fa1daf8713ce438..8ead7c3796d013c30f72f7a8741b4f917875ac41 100644
--- a/var/spack/repos/builtin/packages/gasnet/package.py
+++ b/var/spack/repos/builtin/packages/gasnet/package.py
@@ -60,8 +60,8 @@ def configure_args(self):
             '--with-segment-mmap-max=%s '
             % (self.spec.variants['segment-mmap-max'].value),
             # for consumers with shared libs
-            'CC=%s %s' % (spack_cc, self.compiler.pic_flag),
-            'CXX=%s %s' % (spack_cxx, self.compiler.pic_flag),
+            "CC=%s %s" % (spack_cc, self.compiler.cc_pic_flag),
+            "CXX=%s %s" % (spack_cxx, self.compiler.cxx_pic_flag),
         ]
 
         if '+aligned-segments' in self.spec:
@@ -80,7 +80,7 @@ def configure_args(self):
                          '--disable-ibv',
                          '--disable-seq',
                          'MPI_CC=%s %s'
-                        % (self.spec['mpi'].mpicc, self.compiler.pic_flag)])
+                        % (self.spec['mpi'].mpicc, self.compiler.cc_pic_flag)])
 
         if '+ibv' in self.spec:
             args.extend(['--enable-ibv',
diff --git a/var/spack/repos/builtin/packages/hdf/package.py b/var/spack/repos/builtin/packages/hdf/package.py
index 14f04ea294a737622635976ca4f539c1bd275b35..67c2744470c055a332100fded7d0b7018441e8dd 100644
--- a/var/spack/repos/builtin/packages/hdf/package.py
+++ b/var/spack/repos/builtin/packages/hdf/package.py
@@ -35,7 +35,7 @@ def configure_args(self):
         spec = self.spec
 
         config_args = [
-            'CFLAGS={0}'.format(self.compiler.pic_flag),
+            'CFLAGS={0}'.format(self.compiler.cc_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/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py
index 9d5505b5f78c4c7a120a6207c740918ac3b52804..b4f427ff7b5a0ce9c16532169cbba6784e607143 100644
--- a/var/spack/repos/builtin/packages/hdf5/package.py
+++ b/var/spack/repos/builtin/packages/hdf5/package.py
@@ -259,8 +259,11 @@ def configure_args(self):
             extra_args.append('--enable-static-exec')
 
         if '+pic' in self.spec:
-            extra_args += ['%s=%s' % (f, self.compiler.pic_flag)
-                           for f in ['CFLAGS', 'CXXFLAGS', 'FCFLAGS']]
+            extra_args.extend([
+                'CFLAGS='   + self.compiler.cc_pic_flag,
+                'CXXFLAGS=' + self.compiler.cxx_pic_flag,
+                'FCFLAGS='  + self.compiler.fc_pic_flag,
+            ])
 
         if '+mpi' in self.spec:
             # The HDF5 configure script warns if cxx and mpi are enabled
diff --git a/var/spack/repos/builtin/packages/libceed/package.py b/var/spack/repos/builtin/packages/libceed/package.py
index 3b327a50585de9483fe490a448797813c1888e73..64d04a7b898107e9a7cf53e6219af563754d6fd7 100644
--- a/var/spack/repos/builtin/packages/libceed/package.py
+++ b/var/spack/repos/builtin/packages/libceed/package.py
@@ -81,7 +81,7 @@ def common_make_opts(self):
             if '+cuda' in spec:
                 makeopts += ['CUDA_DIR=%s' % spec['cuda'].prefix]
                 nvccflags = ['-ccbin %s -Xcompiler "%s" -Xcompiler %s' %
-                             (compiler.cxx, opt, compiler.pic_flag)]
+                             (compiler.cxx, opt, compiler.cc_pic_flag)]
                 nvccflags = ' '.join(nvccflags)
                 makeopts += ['NVCCFLAGS=%s' % nvccflags]
             else:
diff --git a/var/spack/repos/builtin/packages/libiberty/package.py b/var/spack/repos/builtin/packages/libiberty/package.py
index fd3c6d6ea9275ff20638857c87c1dbdaf215e651..216822347747e6578afb940444e6a31b2248492c 100644
--- a/var/spack/repos/builtin/packages/libiberty/package.py
+++ b/var/spack/repos/builtin/packages/libiberty/package.py
@@ -48,7 +48,7 @@ def flag_handler(self, name, flags):
             flags.append('-O2')
 
         if '+pic' in self.spec:
-            flags.append(self.compiler.pic_flag)
+            flags.append(self.compiler.cc_pic_flag)
 
         return (None, None, flags)
 
diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py
index 910d8b252f1e8d08c082e1f7732eeaeb22c02a55..1c6b152aa3409ee46b8f88ee6cf35507fae912af 100644
--- a/var/spack/repos/builtin/packages/lua/package.py
+++ b/var/spack/repos/builtin/packages/lua/package.py
@@ -56,7 +56,7 @@ def install(self, spec, prefix):
                  spec['ncurses'].prefix.lib),
              'MYLIBS=-lncursesw',
              'CC=%s -std=gnu99 %s' % (spack_cc,
-                                      self.compiler.pic_flag),
+                                      self.compiler.cc_pic_flag),
              target)
         make('INSTALL_TOP=%s' % prefix,
              'install')
diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py
index 73247217e4b85fe1efec3c953079a087806a280a..bbe2bd0412a8a5a57dc4b801b7cba4450e1009aa 100644
--- a/var/spack/repos/builtin/packages/mbedtls/package.py
+++ b/var/spack/repos/builtin/packages/mbedtls/package.py
@@ -40,6 +40,6 @@ def flag_handler(self, name, flags):
 
         # Compile with PIC, if requested.
         if name == 'cflags' and '+pic' in self.spec:
-            flags.append(self.compiler.pic_flag)
+            flags.append(self.compiler.cc_pic_flag)
 
         return (flags, None, None)
diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py
index f9371c4b2d28ac3e5076f7ebcea788311ce9ab06..ad0f78566b9cc12c3ec56dd4d8f36b0d4bc3ae6a 100644
--- a/var/spack/repos/builtin/packages/metis/package.py
+++ b/var/spack/repos/builtin/packages/metis/package.py
@@ -79,7 +79,7 @@ def install(self, spec, prefix):
         # Process library spec and options
         options = []
         if '+shared' in spec:
-            options.append('COPTIONS={0}'.format(self.compiler.pic_flag))
+            options.append('COPTIONS={0}'.format(self.compiler.cc_pic_flag))
         if spec.variants['build_type'].value == 'Debug':
             options.append('OPTFLAGS=-g -O0')
         make(*options)
@@ -107,7 +107,7 @@ def install(self, spec, prefix):
             install(sharefile, prefix.share)
 
         if '+shared' in spec:
-            shared_flags = [self.compiler.pic_flag, '-shared']
+            shared_flags = [self.compiler.cc_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/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py
index 08a4790f68a873daaf33cba9d5431cb4e320281a..f754cd915ef43c911e69e53a73aa845b617027c9 100644
--- a/var/spack/repos/builtin/packages/mfem/package.py
+++ b/var/spack/repos/builtin/packages/mfem/package.py
@@ -307,7 +307,9 @@ def find_optional_library(name, prefix):
         if '~static' in spec:
             options += ['STATIC=NO']
         if '+shared' in spec:
-            options += ['SHARED=YES', 'PICFLAG=%s' % self.compiler.pic_flag]
+            options += [
+                'SHARED=YES', 'PICFLAG=%s' % self.compiler.cxx_pic_flag
+            ]
 
         if '+mpi' in spec:
             options += ['MPICXX=%s' % spec['mpi'].mpicxx]
diff --git a/var/spack/repos/builtin/packages/mumps/package.py b/var/spack/repos/builtin/packages/mumps/package.py
index de34b6aa190b1c719c3d275e81e8b5b884f308b1..5a5110d1e17c991dd01a2db12e5ecc97bc447848 100644
--- a/var/spack/repos/builtin/packages/mumps/package.py
+++ b/var/spack/repos/builtin/packages/mumps/package.py
@@ -125,7 +125,8 @@ def write_makefile_inc(self):
         # when building shared libs need -fPIC, otherwise
         # /usr/bin/ld: graph.o: relocation R_X86_64_32 against `.rodata.str1.1'
         # can not be used when making a shared object; recompile with -fPIC
-        fpic = self.compiler.pic_flag if '+shared' in self.spec else ''
+        cpic = self.compiler.cc_pic_flag if '+shared' in self.spec else ''
+        fpic = self.compiler.fc_pic_flag if '+shared' in self.spec else ''
         # TODO: test this part, it needs a full blas, scalapack and
         # partitionning environment with 64bit integers
 
@@ -146,8 +147,8 @@ def write_makefile_inc(self):
                 ])
 
             makefile_conf.extend([
-                'OPTL = %s -O%s' % (fpic, opt_level),
-                'OPTC = %s -O%s -DINTSIZE64' % (fpic, opt_level)
+                'OPTL = %s -O%s' % (cpic, opt_level),
+                'OPTC = %s -O%s -DINTSIZE64' % (cpic, opt_level)
             ])
         else:
             if using_xlf:
@@ -157,8 +158,8 @@ def write_makefile_inc(self):
                     fpic, opt_level))
 
             makefile_conf.extend([
-                'OPTL = %s -O%s' % (fpic, opt_level),
-                'OPTC = %s -O%s' % (fpic, opt_level)
+                'OPTL = %s -O%s' % (cpic, opt_level),
+                'OPTC = %s -O%s' % (cpic, opt_level)
             ])
 
         if '+mpi' in self.spec:
diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py
index 1f57c2b95db155901ceca8dd14b2f61d4968f96f..4fa90802a65b7c80f798c825329ec0c7edb6bd81 100644
--- a/var/spack/repos/builtin/packages/mxml/package.py
+++ b/var/spack/repos/builtin/packages/mxml/package.py
@@ -28,7 +28,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={0}'.format(self.compiler.pic_flag),
+            'CFLAGS={0}'.format(self.compiler.cc_pic_flag),
             # Default is non-shared, but avoid any future surprises
             '--disable-shared',
         ]
diff --git a/var/spack/repos/builtin/packages/ncurses/package.py b/var/spack/repos/builtin/packages/ncurses/package.py
index cfb122623daccda7b2df2319bee472f32a009e14..55d1900c4cafa3a22d18b5ae1200bc7c54c17db6 100644
--- a/var/spack/repos/builtin/packages/ncurses/package.py
+++ b/var/spack/repos/builtin/packages/ncurses/package.py
@@ -40,8 +40,10 @@ def setup_build_environment(self, env):
         env.unset('TERMINFO')
 
     def flag_handler(self, name, flags):
-        if name == 'cflags' or name == 'cxxflags':
-            flags.append(self.compiler.pic_flag)
+        if name == 'cflags':
+            flags.append(self.compiler.cc_pic_flag)
+        elif name == 'cxxflags':
+            flags.append(self.compiler.cxx_pic_flag)
 
         return (flags, None, None)
 
diff --git a/var/spack/repos/builtin/packages/netcdf-c/package.py b/var/spack/repos/builtin/packages/netcdf-c/package.py
index ac12ab42b4bdb75634133f371d4ead183612d998..42c28e53215d4e772ba040cf89a979efd013e417 100644
--- a/var/spack/repos/builtin/packages/netcdf-c/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-c/package.py
@@ -158,7 +158,7 @@ def configure_args(self):
         if '~shared' in self.spec or '+pic' in self.spec:
             # We don't have shared libraries but we still want it to be
             # possible to use this library in shared builds
-            cflags.append(self.compiler.pic_flag)
+            cflags.append(self.compiler.cc_pic_flag)
 
         config_args += self.enable_or_disable('dap')
         # config_args += self.enable_or_disable('cdmremote')
diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
index d11bc4ea41429438ec98fe827f32690fc7653d74..3847cc48dd42c30371063fb52f6748a01bf25a30 100644
--- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
@@ -44,7 +44,7 @@ class NetcdfCxx4(AutotoolsPackage):
 
     def flag_handler(self, name, flags):
         if name == 'cflags' and '+pic' in self.spec:
-            flags.append(self.compiler.pic_flag)
+            flags.append(self.compiler.cc_pic_flag)
         elif name == 'cppflags':
             flags.append('-I' + self.spec['netcdf-c'].prefix.include)
 
diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
index 51ff0282764abca62c6b72ff1613b7474cfd9a67..1b55df150784d87f2b28564ebfab08bea1724cb4 100644
--- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py
@@ -64,12 +64,16 @@ class NetcdfFortran(AutotoolsPackage):
     def flag_handler(self, name, flags):
         config_flags = None
 
-        if name in ['cflags', 'fflags'] and '+pic' in self.spec:
+        if '+pic' in self.spec:
             # Unlike NetCDF-C, we add PIC flag only when +pic. Adding the
             # flags also when ~shared would make it impossible to build a
             # static-only version of the library with NAG.
-            config_flags = [self.compiler.pic_flag]
-        elif name == 'cppflags':
+            if name == 'cflags':
+                config_flags = [self.compiler.cc_pic_flag]
+            elif name == 'fflags':
+                config_flags = [self.compiler.f77_pic_flag]
+
+        if name == 'cppflags':
             config_flags = [self.spec['netcdf-c'].headers.cpp_flags]
         elif name == 'ldflags':
             # We need to specify LDFLAGS to get correct dependency_libs
diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
index a135e7b2ffcd3c59a45117a1b125117b7dc79e77..75993c4701055602971f103f0e8b646fe24e9963 100644
--- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
@@ -78,8 +78,8 @@ def cmake_args(self):
 
         if '+pic' in spec:
             options.extend([
-                "-DCMAKE_C_FLAGS=%s" % self.compiler.pic_flag,
-                "-DCMAKE_Fortran_FLAGS=%s" % self.compiler.pic_flag
+                "-DCMAKE_C_FLAGS=%s" % self.compiler.cc_pic_flag,
+                "-DCMAKE_Fortran_FLAGS=%s" % self.compiler.fc_pic_flag
             ])
 
         return options
diff --git a/var/spack/repos/builtin/packages/neuron/package.py b/var/spack/repos/builtin/packages/neuron/package.py
index 15a0f94ea94d2a93db387800ea305549c50eaf34..8f3371a1598e331094e167c737d048bbe4281df9 100644
--- a/var/spack/repos/builtin/packages/neuron/package.py
+++ b/var/spack/repos/builtin/packages/neuron/package.py
@@ -123,7 +123,7 @@ def get_compiler_options(self, spec):
             flags = '-O3 -qtune=qp -qarch=qp -q64 -qstrict -qnohot -g'
 
         if self.spec.satisfies('%pgi'):
-            flags += ' ' + self.compiler.pic_flag
+            flags += ' ' + self.compiler.cc_pic_flag
 
         return ['CFLAGS=%s' % flags,
                 'CXXFLAGS=%s' % flags]
diff --git a/var/spack/repos/builtin/packages/openblas/package.py b/var/spack/repos/builtin/packages/openblas/package.py
index 71d2ec4a6bd4db67da2e462d1242397a19aa5be3..7d71702de0f7dd8bb365c9939ada3dbc036c1f57 100644
--- a/var/spack/repos/builtin/packages/openblas/package.py
+++ b/var/spack/repos/builtin/packages/openblas/package.py
@@ -231,8 +231,8 @@ def make_defs(self):
         if '~shared' in self.spec:
             if '+pic' in self.spec:
                 make_defs.extend([
-                    'CFLAGS={0}'.format(self.compiler.pic_flag),
-                    'FFLAGS={0}'.format(self.compiler.pic_flag)
+                    'CFLAGS={0}'.format(self.compiler.cc_pic_flag),
+                    'FFLAGS={0}'.format(self.compiler.f77_pic_flag)
                 ])
             make_defs += ['NO_SHARED=1']
         # fix missing _dggsvd_ and _sggsvd_
diff --git a/var/spack/repos/builtin/packages/otf2/package.py b/var/spack/repos/builtin/packages/otf2/package.py
index a123f0e887109c92b9d2683fc321a2aa770427f3..a2c197e98bba5b02f7e3b95ba5f33dbaeecd8589 100644
--- a/var/spack/repos/builtin/packages/otf2/package.py
+++ b/var/spack/repos/builtin/packages/otf2/package.py
@@ -31,7 +31,7 @@ def configure_args(self):
             'CXX={0}'.format(spack_cxx),
             'F77={0}'.format(spack_f77),
             'FC={0}'.format(spack_fc),
-            'CFLAGS={0}'.format(self.compiler.pic_flag),
-            'CXXFLAGS={0}'.format(self.compiler.pic_flag),
-            'PYTHON_FOR_GENERATOR=:'
+            'CFLAGS={0}'.format(self.compiler.cc_pic_flag),
+            'CXXFLAGS={0}'.format(self.compiler.cxx_pic_flag),
+            'PYTHON_FOR_GENERATOR=:',
         ]
diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
index 384717d05ef7582c49face1486e395313f944744..dc2f1b4ac37a584ab88075eb92a6dc51e49e4829 100644
--- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py
+++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
@@ -96,8 +96,12 @@ def configure_args(self):
         args += self.enable_or_disable('fortran')
 
         if '+pic' in self.spec:
-            args.extend(['{0}FLAGS={1}'.format(lang, self.compiler.pic_flag)
-                         for lang in ['C', 'CXX', 'F', 'FC']])
+            args.extend([
+                'CFLAGS='   + self.compiler.cc_pic_flag,
+                'CXXFLAGS=' + self.compiler.cxx_pic_flag,
+                'FFLAGS='   + self.compiler.f77_pic_flag,
+                'FCFLAGS='  + self.compiler.fc_pic_flag,
+            ])
 
         if self.version >= Version('1.8'):
             args.append('--enable-relax-coord-bound')
diff --git a/var/spack/repos/builtin/packages/parmgridgen/package.py b/var/spack/repos/builtin/packages/parmgridgen/package.py
index 95ab72060dfe551a074bc6b1024f00e28dd53cb2..eccaec126345a8152f0eadf0a29a7aab77fd8bd2 100644
--- a/var/spack/repos/builtin/packages/parmgridgen/package.py
+++ b/var/spack/repos/builtin/packages/parmgridgen/package.py
@@ -28,8 +28,8 @@ class Parmgridgen(Package):
     def install(self, spec, prefix):
         make_opts = [
             'make=make',
-            'COPTIONS={0}'.format(self.compiler.pic_flag),
-            'LDOPTIONS={0}'.format(self.compiler.pic_flag),
+            'COPTIONS={0}'.format(self.compiler.cc_pic_flag),
+            'LDOPTIONS={0}'.format(self.compiler.cc_pic_flag),
             'CC={0}'.format(self.compiler.cc),
             'LD={0}'.format(self.compiler.cc),
             'LIBDIR=-L../..',
diff --git a/var/spack/repos/builtin/packages/parquet-cpp/package.py b/var/spack/repos/builtin/packages/parquet-cpp/package.py
index 38e43f33d3d6e84ad70b319054dcb7e259b00392..85222f83a271d3b69414231a8cbc30a899052bad 100644
--- a/var/spack/repos/builtin/packages/parquet-cpp/package.py
+++ b/var/spack/repos/builtin/packages/parquet-cpp/package.py
@@ -36,6 +36,9 @@ def cmake_args(self):
 
     def flag_handler(self, name, flags):
         flags = list(flags)
-        if '+pic' in self.spec and name in ('cflags', 'cxxflags'):
-            flags.append(self.compiler.pic_flag)
+        if '+pic' in self.spec:
+            if name == 'cflags':
+                flags.append(self.compiler.cc_pic_flag)
+            elif name == 'cxxflags':
+                flags.append(self.compiler.cxx_pic_flag)
         return (None, None, flags)
diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py
index c2adfb831da563fc8ffed54389981002041e66ce..35164db1c55e738d2ad320b9cbe0e26c86c79e5d 100644
--- a/var/spack/repos/builtin/packages/pdt/package.py
+++ b/var/spack/repos/builtin/packages/pdt/package.py
@@ -53,7 +53,7 @@ def configure(self, spec, prefix):
             raise InstallError('Unknown/unsupported compiler family')
 
         if '+pic' in spec:
-            options.append('-useropt=' + self.compiler.pic_flag)
+            options.append('-useropt=' + self.compiler.cxx_pic_flag)
 
         configure(*options)
 
diff --git a/var/spack/repos/builtin/packages/perl/package.py b/var/spack/repos/builtin/packages/perl/package.py
index 847bf83765a3915b8627c79953639937f434a9a4..2841ab27138f697e7dff119ce5e8c33623f5c5db 100644
--- a/var/spack/repos/builtin/packages/perl/package.py
+++ b/var/spack/repos/builtin/packages/perl/package.py
@@ -131,7 +131,8 @@ def configure_args(self):
         # https://github.com/spack/spack/pull/3081 and
         # https://github.com/spack/spack/pull/4416
         if spec.satisfies('%intel'):
-            config_args.append('-Accflags={0}'.format(self.compiler.pic_flag))
+            config_args.append('-Accflags={0}'.format(
+                self.compiler.cc_pic_flag))
 
         if '+shared' in spec:
             config_args.append('-Duseshrplib')
diff --git a/var/spack/repos/builtin/packages/py-llvmlite/package.py b/var/spack/repos/builtin/packages/py-llvmlite/package.py
index c225e74354c62b2315aba5fad402e7b5604b29d4..e7e0712138cb735c87c3fd2ece97a8c8d4b572b8 100644
--- a/var/spack/repos/builtin/packages/py-llvmlite/package.py
+++ b/var/spack/repos/builtin/packages/py-llvmlite/package.py
@@ -33,4 +33,5 @@ class PyLlvmlite(PythonPackage):
 
     def setup_build_environment(self, env):
         # Need to set PIC flag since this is linking statically with LLVM
-        env.set('CXX_FLTO_FLAGS', '-flto {0}'.format(self.compiler.pic_flag))
+        env.set('CXX_FLTO_FLAGS', '-flto {0}'.format(
+            self.compiler.cxx_pic_flag))
diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py
index 3b675a02b641514ec4782497a90868b968ca65a7..97acde7b59c5b52e26150a6c2627e723b961909d 100644
--- a/var/spack/repos/builtin/packages/python/package.py
+++ b/var/spack/repos/builtin/packages/python/package.py
@@ -280,7 +280,7 @@ def configure_args(self):
             config_args.append('--without-ensurepip')
 
         if '+pic' in spec:
-            config_args.append('CFLAGS={0}'.format(self.compiler.pic_flag))
+            config_args.append('CFLAGS={0}'.format(self.compiler.cc_pic_flag))
 
         if spec.satisfies('@3.7:'):
             if '+ssl' in spec:
diff --git a/var/spack/repos/builtin/packages/r/package.py b/var/spack/repos/builtin/packages/r/package.py
index 1893aca9ac380b5f2034349505cd31b9b5471960..7c6807e3e7106038e55ff764e2c4b66406e5e386 100644
--- a/var/spack/repos/builtin/packages/r/package.py
+++ b/var/spack/repos/builtin/packages/r/package.py
@@ -163,7 +163,8 @@ def configure_args(self):
 
         # Set FPICFLAGS for compilers except 'gcc'.
         if self.compiler.name != 'gcc':
-            config_args.append('FPICFLAGS={0}'.format(self.compiler.pic_flag))
+            config_args.append('FPICFLAGS={0}'.format(
+                self.compiler.cc_pic_flag))
 
         return config_args
 
diff --git a/var/spack/repos/builtin/packages/scorep/package.py b/var/spack/repos/builtin/packages/scorep/package.py
index 96c3eae2e4de42008128a0d5298ba61a4a14ab5e..b26af4287db5aa2f92d06a5dd4359f6ab6cfa2be 100644
--- a/var/spack/repos/builtin/packages/scorep/package.py
+++ b/var/spack/repos/builtin/packages/scorep/package.py
@@ -106,8 +106,8 @@ def configure_args(self):
             config_args.append('--with-mpi=openmpi')
 
         config_args.extend([
-            'CFLAGS={0}'.format(self.compiler.pic_flag),
-            'CXXFLAGS={0}'.format(self.compiler.pic_flag)
+            'CFLAGS={0}'.format(self.compiler.cc_pic_flag),
+            'CXXFLAGS={0}'.format(self.compiler.cxx_pic_flag)
         ])
 
         if "+mpi" in spec:
diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py
index 0a96559763295fffebb04dc900a55759343c5e8e..f2ba07a94b632bc55387e2159675b5c68a84ec94 100644
--- a/var/spack/repos/builtin/packages/scotch/package.py
+++ b/var/spack/repos/builtin/packages/scotch/package.py
@@ -117,7 +117,7 @@ def configure(self):
                 makefile_inc.extend([
                     'LIB       = .dylib',
                     'CLIBFLAGS = -dynamiclib {0}'.format(
-                        self.compiler.pic_flag
+                        self.compiler.cc_pic_flag
                     ),
                     'RANLIB    = echo',
                     'AR        = $(CC)',
@@ -126,12 +126,13 @@ def configure(self):
             else:
                 makefile_inc.extend([
                     'LIB       = .so',
-                    'CLIBFLAGS = -shared {0}'.format(self.compiler.pic_flag),
+                    'CLIBFLAGS = -shared {0}'.format(
+                        self.compiler.cc_pic_flag),
                     'RANLIB    = echo',
                     'AR        = $(CC)',
                     'ARFLAGS   = -shared $(LDFLAGS) -o'
                 ])
-            cflags.append(self.compiler.pic_flag)
+            cflags.append(self.compiler.cc_pic_flag)
         else:
             makefile_inc.extend([
                 'LIB       = .a',
diff --git a/var/spack/repos/builtin/packages/shtools/package.py b/var/spack/repos/builtin/packages/shtools/package.py
index 77871d7a36904f3ff1bf3e44bcb869cc43dbee49..dc0388939fb6b1175a34300ee93e435e90df06df 100644
--- a/var/spack/repos/builtin/packages/shtools/package.py
+++ b/var/spack/repos/builtin/packages/shtools/package.py
@@ -31,7 +31,7 @@ def makeopts(self, spec, prefix):
         return [
             "F95={0}".format(self.compiler.fc),
             ("F95FLAGS={0} -O3 -std=f2003 -ffast-math".
-             format(self.compiler.pic_flag)),
+             format(self.compiler.fc_pic_flag)),
             "OPENMPFLAGS={0}".format(self.compiler.openmp_flag),
             "BLAS={0}".format(spec['blas'].libs),
             "FFTW={0}".format(spec['fftw'].libs),
diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py
index 98e8b4be15599a3434acf0a397903e1149af46ff..9192937393fc4c486a0bba98f9d2a8145c72f389 100644
--- a/var/spack/repos/builtin/packages/silo/package.py
+++ b/var/spack/repos/builtin/packages/silo/package.py
@@ -45,9 +45,14 @@ def flag_handler(self, name, flags):
             if spec['hdf5'].satisfies('~shared'):
                 flags.append('-ldl')
             flags.append(spec['readline'].libs.search_flags)
-        elif name in ('cflags', 'cxxflags', 'fcflags'):
-            if '+pic' in spec:
-                flags.append(self.compiler.pic_flag)
+
+        if '+pic' in spec:
+            if name == 'cflags':
+                flags.append(self.compiler.cc_pic_flag)
+            elif name == 'cxxflags':
+                flags.append(self.compiler.cxx_pic_flag)
+            elif name == 'fcflags':
+                flags.append(self.compiler.fc_pic_flag)
         return (flags, None, None)
 
     @when('%clang@9:')
diff --git a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py
index 75ec47b39bbb7caf854638ce93e778da13b5ea47..7d38e267d7287d09c0add5a0cc42021705f09eb6 100644
--- a/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py
+++ b/var/spack/repos/builtin/packages/simmetrix-simmodsuite/package.py
@@ -236,7 +236,7 @@ def install(self, spec, prefix):
                      "CXX=%s" % spec['mpi'].mpicxx,
                      "PARALLEL=%s" % mpi_id,
                      "PQUAL=-%s" % mpi_id,
-                     "OPTFLAGS=-O2 -DNDEBUG " + self.compiler.pic_flag)
+                     "OPTFLAGS=-O2 -DNDEBUG " + self.compiler.cc_pic_flag)
                 libname = 'libSimPartitionWrapper-' + mpi_id + '.a'
                 wrapperlibpath = join_path(workdir, 'lib', libname)
                 install(wrapperlibpath, join_path(prefix.lib, self.oslib))
diff --git a/var/spack/repos/builtin/packages/snappy/package.py b/var/spack/repos/builtin/packages/snappy/package.py
index 3516c53d1df18f614daddf62633b76796f9559e4..d5ade343f3cb4810e74c185dd8f5212fd6a96eae 100644
--- a/var/spack/repos/builtin/packages/snappy/package.py
+++ b/var/spack/repos/builtin/packages/snappy/package.py
@@ -37,8 +37,11 @@ def cmake_args(self):
 
     def flag_handler(self, name, flags):
         flags = list(flags)
-        if '+pic' in self.spec and name in ('cflags', 'cxxflags'):
-            flags.append(self.compiler.pic_flag)
+        if '+pic' in self.spec:
+            if name == 'cflags':
+                flags.append(self.compiler.cc_pic_flag)
+            elif name == 'cxxflags':
+                flags.append(self.compiler.cxx_pic_flag)
         return (None, None, flags)
 
     @run_after('install')
diff --git a/var/spack/repos/builtin/packages/sqlite/package.py b/var/spack/repos/builtin/packages/sqlite/package.py
index 4e79463f36bc1513dbf4b31d83e70e36d50d1090..531a9bc81de6f3c1892ccd4ddac4d5e2179393bd 100644
--- a/var/spack/repos/builtin/packages/sqlite/package.py
+++ b/var/spack/repos/builtin/packages/sqlite/package.py
@@ -122,6 +122,6 @@ def build_libsqlitefunctions(self):
         if '+functions' in self.spec:
             libraryname = 'libsqlitefunctions.' + dso_suffix
             cc = Executable(spack_cc)
-            cc(self.compiler.pic_flag, '-lm', '-shared',
+            cc(self.compiler.cc_pic_flag, '-lm', '-shared',
                 'extension-functions.c', '-o', libraryname)
             install(libraryname, self.prefix.lib)
diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py
index 88f5aa839ccee96ce7e55f5aec871f45e312851c..39532db8016754fd5447368e6e62983c26cb4b5f 100644
--- a/var/spack/repos/builtin/packages/suite-sparse/package.py
+++ b/var/spack/repos/builtin/packages/suite-sparse/package.py
@@ -63,7 +63,8 @@ def install(self, spec, prefix):
         # logic in it. Any kind of customization will need to go through
         # filtering of that file
 
-        pic_flag  = self.compiler.pic_flag if '+pic' in spec else ''
+        cc_pic_flag  = self.compiler.cc_pic_flag  if '+pic' in spec else ''
+        f77_pic_flag = self.compiler.f77_pic_flag if '+pic' in spec else ''
 
         make_args = [
             # By default, the Makefile uses the Intel compilers if
@@ -78,11 +79,11 @@ def install(self, spec, prefix):
             'CUDA_PATH=%s' % (spec['cuda'].prefix if '+cuda' in spec else ''),
             'CFOPENMP=%s' % (self.compiler.openmp_flag
                              if '+openmp' in spec else ''),
-            'CFLAGS=-O3 %s' % pic_flag,
+            'CFLAGS=-O3 %s' % cc_pic_flag,
             # Both FFLAGS and F77FLAGS are used in SuiteSparse makefiles;
             # FFLAGS is used in CHOLMOD, F77FLAGS is used in AMD and UMFPACK.
-            'FFLAGS=%s' % pic_flag,
-            'F77FLAGS=%s' % pic_flag,
+            'FFLAGS=%s' % f77_pic_flag,
+            'F77FLAGS=%s' % f77_pic_flag,
             # use Spack's metis in CHOLMOD/Partition module,
             # otherwise internal Metis will be compiled
             'MY_METIS_LIB=%s' % spec['metis'].libs.ld_flags,
diff --git a/var/spack/repos/builtin/packages/sundials/package.py b/var/spack/repos/builtin/packages/sundials/package.py
index a76b36eacba5a3c2fd683577091c9cf55e928a2d..104307fa19a6862cdb5ef32bf5d54622e89de570 100644
--- a/var/spack/repos/builtin/packages/sundials/package.py
+++ b/var/spack/repos/builtin/packages/sundials/package.py
@@ -211,7 +211,7 @@ def cmake_args(self):
         def on_off(varstr):
             return 'ON' if varstr in self.spec else 'OFF'
 
-        fortran_flag = self.compiler.pic_flag
+        fortran_flag = self.compiler.f77_pic_flag
         if (spec.satisfies('%clang platform=darwin')) and ('+fcmix' in spec):
             f77 = Executable(self.compiler.f77)
             libgfortran = LibraryList(f77('--print-file-name',
diff --git a/var/spack/repos/builtin/packages/superlu/package.py b/var/spack/repos/builtin/packages/superlu/package.py
index 14f9483945eec0fae1dc13500a720265980bcfd7..bc1b383729dc255e86856f45eb8cbddb9cdcaa29 100644
--- a/var/spack/repos/builtin/packages/superlu/package.py
+++ b/var/spack/repos/builtin/packages/superlu/package.py
@@ -73,10 +73,10 @@ def install(self, spec, prefix):
         if '+pic' in spec:
             config.extend([
                 # Use these lines instead when pic_flag capability arrives
-                'CFLAGS     = -O3 {0}'.format(self.compiler.pic_flag),
-                'NOOPTS     = {0}'.format(self.compiler.pic_flag),
-                'FFLAGS     = -O2 {0}'.format(self.compiler.pic_flag),
-                'LOADOPTS   = {0}'.format(self.compiler.pic_flag)
+                'CFLAGS     = -O3 {0}'.format(self.compiler.cc_pic_flag),
+                'NOOPTS     = {0}'.format(self.compiler.cc_pic_flag),
+                'FFLAGS     = -O2 {0}'.format(self.compiler.f77_pic_flag),
+                'LOADOPTS   = {0}'.format(self.compiler.cc_pic_flag)
             ])
         else:
             config.extend([
diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py
index 92f77e03312d2335cdaf02f300218458557eccc6..7e6186024307b15ca1fe007af0e3e0f3897c48db 100644
--- a/var/spack/repos/builtin/packages/thrift/package.py
+++ b/var/spack/repos/builtin/packages/thrift/package.py
@@ -51,8 +51,8 @@ class Thrift(Package):
 
     def setup_build_environment(self, env):
         if '+pic' in self.spec:
-            env.append_flags('CFLAGS', self.compiler.pic_flag)
-            env.append_flags('CXXFLAGS', self.compiler.pic_flag)
+            env.append_flags('CFLAGS', self.compiler.cc_pic_flag)
+            env.append_flags('CXXFLAGS', self.compiler.cxx_pic_flag)
 
     def install(self, spec, prefix):
         env['PY_PREFIX'] = prefix
diff --git a/var/spack/repos/builtin/packages/unrar/package.py b/var/spack/repos/builtin/packages/unrar/package.py
index 6972aef3c96f115c7d6d87fedd0039aff3c3e434..9f8700c804abce51705401e9cd482674bbb7a7b7 100644
--- a/var/spack/repos/builtin/packages/unrar/package.py
+++ b/var/spack/repos/builtin/packages/unrar/package.py
@@ -26,6 +26,6 @@ class Unrar(MakefilePackage):
     def edit(self, spec, prefix):
         makefile = FileFilter("makefile")
         makefile.filter(
-            "LIBFLAGS=-fPIC", "LIBFLAGS={0}".format(self.compiler.pic_flag)
+            "LIBFLAGS=-fPIC", "LIBFLAGS={0}".format(self.compiler.cc_pic_flag)
         )
         makefile.filter("DESTDIR=/usr", "DESTDIR={0}".format(self.prefix))
diff --git a/var/spack/repos/builtin/packages/visit/package.py b/var/spack/repos/builtin/packages/visit/package.py
index 2616b689e3b12b09c265cf5226e13accff696b14..1ee2994c21c67cb865df703252377a14255ef66b 100644
--- a/var/spack/repos/builtin/packages/visit/package.py
+++ b/var/spack/repos/builtin/packages/visit/package.py
@@ -72,8 +72,8 @@ def cmake_args(self):
             '-DVISIT_VTK_DIR:PATH=' + spec['vtk'].prefix,
             '-DVISIT_ZLIB_DIR:PATH=' + spec['zlib'].prefix,
             '-DVISIT_USE_GLEW=OFF',
-            '-DCMAKE_CXX_FLAGS=' + self.compiler.pic_flag,
-            '-DCMAKE_C_FLAGS=' + self.compiler.pic_flag,
+            '-DCMAKE_CXX_FLAGS=' + self.compiler.cxx_pic_flag,
+            '-DCMAKE_C_FLAGS=' + self.compiler.cc_pic_flag,
         ]
 
         if '+python' in spec:
diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py
index 201c23de249e8e2c9f07b3eebfdd52b559f3faca..5dc7406afc1ed2f0a7021cf9a799bdc1b3dec704 100644
--- a/var/spack/repos/builtin/packages/voropp/package.py
+++ b/var/spack/repos/builtin/packages/voropp/package.py
@@ -30,7 +30,7 @@ def edit(self, spec, prefix):
         # CFLAGS=-Wall -ansi -pedantic -O3
         cflags = ''
         if '+pic' in spec:
-            cflags += self.compiler.pic_flag
+            cflags += self.compiler.cc_pic_flag
         filter_file(r'CFLAGS=.*',
                     'CFLAGS={0}'.format(cflags),
                     'config.mk')
diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py
index 82cdf73f2512727bfc090c1341bcfa30aa3bd56e..4967bc0dbb75f0c2af71691a84c48def80b130bb 100644
--- a/var/spack/repos/builtin/packages/zlib/package.py
+++ b/var/spack/repos/builtin/packages/zlib/package.py
@@ -40,7 +40,7 @@ def libs(self):
 
     def setup_build_environment(self, env):
         if '+pic' in self.spec:
-            env.append_flags('CFLAGS', self.compiler.pic_flag)
+            env.append_flags('CFLAGS', self.compiler.cc_pic_flag)
         if '+optimize' in self.spec:
             env.append_flags('CFLAGS', '-O2')
 
diff --git a/var/spack/repos/builtin/packages/zoltan/package.py b/var/spack/repos/builtin/packages/zoltan/package.py
index b832dbc0f819fedfd51cf9af5ff8145a6b082bb9..615b65502a3be16a95d63e8c601aa6f0f8f4fcd4 100644
--- a/var/spack/repos/builtin/packages/zoltan/package.py
+++ b/var/spack/repos/builtin/packages/zoltan/package.py
@@ -95,7 +95,7 @@ def configure_args(self):
                 'RANLIB=echo',
                 '--with-ar=$(CXX) -shared $(LDFLAGS) -o'
             ])
-            config_cflags.append(self.compiler.pic_flag)
+            config_cflags.append(self.compiler.cc_pic_flag)
             if spec.satisfies('%gcc'):
                 config_args.append('--with-libs=-lgfortran')
             if spec.satisfies('%intel'):
diff --git a/var/spack/repos/builtin/packages/zstd/package.py b/var/spack/repos/builtin/packages/zstd/package.py
index 1557cc8a07454f31aeaca220f6303086d6b75f5c..8cc37ab3d5299e60ade974c814bcb7fb00083369 100644
--- a/var/spack/repos/builtin/packages/zstd/package.py
+++ b/var/spack/repos/builtin/packages/zstd/package.py
@@ -27,7 +27,7 @@ class Zstd(MakefilePackage):
 
     def setup_build_environment(self, env):
         if '+pic' in self.spec:
-            env.append_flags('CFLAGS', self.compiler.pic_flag)
+            env.append_flags('CFLAGS', self.compiler.cc_pic_flag)
 
     def build(self, spec, prefix):
         make('PREFIX={0}'.format(prefix))