diff --git a/var/spack/repos/builtin/packages/flang/package.py b/var/spack/repos/builtin/packages/flang/package.py
index 786c281686cff3edbb2c7e22f067bf965e6ae135..60d705d17e9abb348f654783f36a1c6b6e68fcee 100644
--- a/var/spack/repos/builtin/packages/flang/package.py
+++ b/var/spack/repos/builtin/packages/flang/package.py
@@ -13,32 +13,47 @@ class Flang(CMakePackage):
 
     homepage = "https://github.com/flang-compiler/flang"
 
-    url      = "https://github.com/flang-compiler/flang/archive/flang_20180612.tar.gz"
+    url      = "https://github.com/flang-compiler/flang/archive/flang_20190329.tar.gz"
     git      = "https://github.com/flang-compiler/flang.git"
 
-    version('develop', branch='master')
+    maintainers = ['naromero77']
+
+    version('master', branch='master')
+    version('20190329', sha256='b8c621da53829f8c53bad73125556fb1839c9056d713433b05741f7e445199f2')
+    version('20181226', sha256='00e716bea258c3bb60d6a5bb0c82bc79f67000062dc89939693e75f501883c36')
     version('20180921', sha256='f33bd1f054e474f1e8a204bb6f78d42f8f6ecf7a894fdddc3999f7c272350784')
     version('20180612', sha256='6af858bea013548e091371a97726ac784edbd4ff876222575eaae48a3c2920ed')
 
-    depends_on('llvm@develop+flang~gold~lldb~lld~compiler-rt~libcxx~polly~internal_unwind', when='@develop')
-    depends_on('llvm@7.0.1+flang~gold~lldb~lld~compiler-rt~libcxx~polly~internal_unwind', when='@20180921')
-    depends_on('llvm@6.0.0+flang~gold~lldb~lld~compiler-rt~libcxx~polly~internal_unwind', when='@20180612')
+    # Build dependency
+    depends_on('cmake@3.8:', type='build')
+    depends_on('python@2.7:', type='build')
+
+    depends_on('llvm-flang@release_70', when='@master')
+    depends_on('llvm-flang@20190329', when='@20190329')
+    depends_on('llvm-flang@20181226_70', when='@20181226')
+    depends_on('llvm-flang@20180921', when='@20180921')
+    depends_on('llvm-flang@20180612', when='@20180612')
 
-    depends_on('pgmath@develop', when='@develop')
+    depends_on('pgmath@master', when='@master')
+    depends_on('pgmath@20190329', when='@20190329')
+    depends_on('pgmath@20181226', when='@20181226')
     depends_on('pgmath@20180921', when='@20180921')
     depends_on('pgmath@20180612', when='@20180612')
 
     def cmake_args(self):
+        spec = self.spec
         options = [
             '-DWITH_WERROR=OFF',
             '-DCMAKE_C_COMPILER=%s' % os.path.join(
-                self.spec['llvm'].prefix.bin, 'clang'),
+                spec['llvm-flang'].prefix.bin, 'clang'),
             '-DCMAKE_CXX_COMPILER=%s' % os.path.join(
-                self.spec['llvm'].prefix.bin, 'clang++'),
+                spec['llvm-flang'].prefix.bin, 'clang++'),
             '-DCMAKE_Fortran_COMPILER=%s' % os.path.join(
-                self.spec['llvm'].prefix.bin, 'flang'),
+                spec['llvm-flang'].prefix.bin, 'flang'),
             '-DFLANG_LIBOMP=%s' % find_libraries(
-                'libomp', root=self.spec['llvm'].prefix.lib)
+                'libomp', root=spec['llvm-flang'].prefix.lib),
+            '-DPYTHON_EXECUTABLE={0}'.format(
+                spec['python'].command.path)
         ]
 
         return options
@@ -55,7 +70,7 @@ def post_install(self):
             out.write('#!/bin/bash\n')
             out.write(
                 '{0} -I{1} -L{2} -L{3} {4}{5} {6}{7} -B{8} "$@"\n'.format(
-                    self.spec['llvm'].prefix.bin.flang,
+                    self.spec['llvm-flang'].prefix.bin.flang,
                     self.prefix.include, self.prefix.lib,
                     self.spec['pgmath'].prefix.lib,
                     self.compiler.fc_rpath_arg, self.prefix.lib,
@@ -67,7 +82,7 @@ def post_install(self):
 
     def setup_build_environment(self, env):
         # to find llvm's libc++.so
-        env.set('LD_LIBRARY_PATH', self.spec['llvm'].prefix.lib)
+        env.set('LD_LIBRARY_PATH', self.spec['llvm-flang'].prefix.lib)
 
     def setup_run_environment(self, env):
         env.set('FC',  self.spec.prefix.bin.flang)
diff --git a/var/spack/repos/builtin/packages/llvm-flang/package.py b/var/spack/repos/builtin/packages/llvm-flang/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..4c19e7b54ba15e4e87a2aa3ba2c43f1493351f08
--- /dev/null
+++ b/var/spack/repos/builtin/packages/llvm-flang/package.py
@@ -0,0 +1,168 @@
+# Copyright 2013-2020 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+
+from spack import *
+
+
+class LlvmFlang(CMakePackage):
+    """LLVM-Flang is the Flang fork of LLVM needed by the Flang package."""
+
+    homepage = "https://github.com/flang-compiler"
+
+    git      = "https://github.com/flang-compiler/llvm.git"
+
+    maintainer = ['naromero77']
+
+    version('master', branch='master')
+    version('release_70', branch='release_70')
+    version('release_60', branch='release_60')
+    version('20190329', tag='flang_20190329')
+    version('20181226_70', tag='20181226_70')
+    version('20181226_60', tag='20181226_60')
+    version('20180921', tag='20180921')
+    version('20180319', tag='20180319')
+    version('20180328', tag='20180308')
+
+    # Variants
+    variant('all_targets', default=False,
+            description='Build all supported targets')
+
+    # Build dependency
+    depends_on('cmake@3.8:', type='build')
+    depends_on('python@2.7:', type='build')
+
+    # LLVM-Flang Componentes: Driver, OpenMP
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             branch='master',
+             destination='tools',
+             placement='clang',
+             when='@master')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             branch='release_70',
+             destination='tools',
+             placement='clang',
+             when='@release_70')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             branch='release_60',
+             destination='tools',
+             placement='clang',
+             when='@release_60')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             tag='flang_20190329',
+             destination='tools',
+             placement='clang',
+             when='@20190329')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             tag='flang_20181226_70',
+             destination='tools',
+             placement='clang',
+             when='@20181226_70')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             tag='flang_20181226_60',
+             destination='tools',
+             placement='clang',
+             when='@20181226_60')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             tag='flang_20180921',
+             destination='tools',
+             placement='clang',
+             when='@20180921')
+
+    resource(name='flang-driver',
+             git='https://github.com/flang-compiler/flang-driver.git',
+             tag='flang_20180921',
+             destination='tools',
+             placement='clang',
+             when='@20180308')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             branch='master',
+             destination='projects',
+             placement='openmp',
+             when='@master')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             branch='release_70',
+             destination='projects',
+             placement='openmp',
+             when='@release_70')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             branch='release_60',
+             destination='projects',
+             placement='openmp',
+             when='@release_60')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             tag='flang_20190329',
+             destination='projects',
+             placement='openmp',
+             when='@20190329')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             tag='flang_20181226_70',
+             destination='projects',
+             placement='openmp',
+             when='@20181226_70')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             tag='flang_20181226_60',
+             destination='projects',
+             placement='openmp',
+             when='@20181226_60')
+
+    resource(name='openmp',
+             git='https://github.com/flang-compiler/openmp.git',
+             tag='flang_20180921',
+             destination='projects',
+             placement='openmp',
+             when='@20180921')
+
+    def cmake_args(self):
+        spec = self.spec
+        args = []
+        args.append('-DPYTHON_EXECUTABLE={0}'.format(
+            spec['python'].command.path))
+
+        if '+all_targets' not in spec:  # all is default in cmake
+            if spec.target.family == 'x86' or spec.target.family == 'x86_64':
+                target = 'X86'
+            elif spec.target.family == 'arm':
+                target = 'ARM'
+            elif spec.target.family == 'aarch64':
+                target = 'AArch64'
+            elif (spec.target.family == 'ppc64' or
+                  spec.target.family == 'ppc64le' or
+                  spec.target.family == 'ppc' or
+                  spec.target.family == 'ppcle'):
+                target = 'PowerPC'
+            else:
+                raise InstallError(
+                    'Unsupported architecture: ' + spec.target.family)
+
+            args.append(
+                '-DLLVM_TARGETS_TO_BUILD:STRING=' + target)
+
+        return args
diff --git a/var/spack/repos/builtin/packages/pgmath/package.py b/var/spack/repos/builtin/packages/pgmath/package.py
index c1a812f2a89e69ad8104ceeffb272404ac17133a..bd08ba8b403a9eda9e5dd77b0023c30a97e23d4b 100644
--- a/var/spack/repos/builtin/packages/pgmath/package.py
+++ b/var/spack/repos/builtin/packages/pgmath/package.py
@@ -18,9 +18,16 @@ class Pgmath(CMakePackage):
 
     version('master', branch='master')
     version('20190329', sha256='b8c621da53829f8c53bad73125556fb1839c9056d713433b05741f7e445199f2')
+    version('20181226', sha256='00e716bea258c3bb60d6a5bb0c82bc79f67000062dc89939693e75f501883c36')
     version('20180921', sha256='f33bd1f054e474f1e8a204bb6f78d42f8f6ecf7a894fdddc3999f7c272350784')
     version('20180612', sha256='6af858bea013548e091371a97726ac784edbd4ff876222575eaae48a3c2920ed')
 
+    # work around for this issue
+    # https://github.com/flang-compiler/flang/issues/602
+    patch('https://github.com/flang-compiler/flang/commit/7fcd6346a9427977afe4534c0f19bbbba04c99a3.diff',
+          sha256='4014df1e5855dd21242b0fc938a4e7835941c20f9a89c3a7a5314e74b6232bcb',
+          when='@20190329')
+
     # workaround for this issue
     # https://github.com/flang-compiler/flang/issues/838
     patch('libpgmath_symbols.patch', when='@20190329,master')