(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_pkgname)
          op: assign_op.Equal
          rhs: {<llvm>}
          spids: [12]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgver)
          op: assign_op.Equal
          rhs: {<3.7.1>}
          spids: [15]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_majorver)
          op: assign_op.Equal
          rhs: 
            {
              (braced_var_sub
                token: <Id.VSub_Name pkgver>
                suffix_op: 
                  (suffix_op.Unary
                    tok: <Id.VOp1_Percent '%'>
                    arg_word: {<.> <Id.Lit_Other '*'>}
                  )
              )
            }
          spids: [18]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgname)
          op: assign_op.Equal
          rhs: {($ Id.VSub_DollarName '$_pkgname') ($ Id.VSub_DollarName '$_majorver')}
          spids: [26]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgrel)
          op: assign_op.Equal
          rhs: {<6>}
          spids: [30]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:pkgdesc)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'Low Level Virtual Machine compiler system (version '> 
                ($ Id.VSub_DollarName '$_majorver') <')'>
              )
            }
          spids: [33]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:arch)
          op: assign_op.Equal
          rhs: {(DQ <all>)}
          spids: [40]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:url)
          op: assign_op.Equal
          rhs: {(DQ <'http://llvm.org/'>)}
          spids: [45]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:license)
          op: assign_op.Equal
          rhs: {(DQ <UOI-NCSA>)}
          spids: [50]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:depends_dev)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <'='> ($ Id.VSub_DollarName '$pkgver') <-r> 
                ($ Id.VSub_DollarName '$pkgrel')
              )
            }
          spids: [55]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:makedepends)
          op: assign_op.Equal
          rhs: {(DQ <'binutils-dev chrpath cmake file libffi-dev paxmark python2 zlib-dev'>)}
          spids: [64]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:subpackages)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$pkgname') <'-static '> ($ Id.VSub_DollarName '$pkgname') 
                <'-libs '> ($ Id.VSub_DollarName '$pkgname') <-dev>
              )
            }
          spids: [69]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:source)
          op: assign_op.Equal
          rhs: 
            {
              (DQ <'http://llvm.org/releases/'> ($ Id.VSub_DollarName '$pkgver') <'/llvm-'> 
                ($ Id.VSub_DollarName '$pkgver') <'.src.tar.xz\n'> <'\tllvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch\n'> 
                <'\tllvm-0002-Fix-build-with-musl-libc.patch\n'> <'\tllvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch\n'> 
                <'\tllvm-d18644-systemz-atomic-fence.patch\n'> <'\tllvm-nm-workaround.patch\n'> <'\tconfig.guess.patch\n'> <'\tcmake-fix-libLLVM-name.patch\n'> <'\t'>
              )
            }
          spids: [79]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:builddir)
          op: assign_op.Equal
          rhs: 
            {
              (DQ ($ Id.VSub_DollarName '$srcdir') <'/'> ($ Id.VSub_DollarName '$_pkgname') <-> 
                ($ Id.VSub_DollarName '$pkgver') <.src>
              )
            }
          spids: [96]
        )
      ]
    )
    (command.Case
      to_match: {(DQ ($ Id.VSub_DollarName '$CARCH'))}
      arms: [
        (case_arm
          pat_list: [{<arm> <Id.Lit_Star '*'>}]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:options)
                  op: assign_op.Equal
                  rhs: {(DQ <'!check'>)}
                  spids: [126]
                )
              ]
            )
          ]
          spids: [122 124 130 -1]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:_prefix)
          op: assign_op.Equal
          rhs: {(DQ <'usr/lib/llvm'> ($ Id.VSub_DollarName '$_majorver'))}
          spids: [189]
        )
      ]
    )
    (command.ShFunction
      name: prepare
      body: 
        (BraceGroup
          children: [
            (C {<default_prepare>})
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir'))})
            (C {<update_config_sub>})
            (C {<rm>} {<'test/tools/llvm-objdump/macho-compact-unwind-x86_64.test'>} 
              {<'test/tools/llvm-objdump/macho-compact-unwind-i386.test'>} {<'test/Transforms/GlobalOpt/alias-used.ll'>}
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/build'>})
          ]
        )
    )
    (command.ShFunction
      name: build
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/build'>})
            (C {<local>} 
              {<Id.Lit_VarLike 'ffi_include_dir='> 
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<pkg-config>} {<--cflags-only-I>} {<libffi>})
                          (C {<sed>} {(SQ <'s|^-I||g'>)})
                        ]
                        negated: F
                      )
                  )
                )
              }
            )
            (C {<cmake>} {<-G>} {(DQ <'Unix Makefiles'>)} {<-Wno-dev>} 
              {<-DCMAKE_BUILD_TYPE> <Id.Lit_Equals '='> <Release>} {<-DCMAKE_INSTALL_PREFIX> <Id.Lit_Equals '='> <'/'> ($ Id.VSub_DollarName '$_prefix')} 
              {<-DCMAKE_VERBOSE_MAKEFILE> <Id.Lit_Equals '='> <NO>} {<-DFFI_INCLUDE_DIR> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$ffi_include_dir'))} 
              {<-DLLVM_BINUTILS_INCDIR> <Id.Lit_Equals '='> <'/usr/include'>} {<-DLLVM_BUILD_DOCS> <Id.Lit_Equals '='> <OFF>} {<-DLLVM_BUILD_EXAMPLES> <Id.Lit_Equals '='> <OFF>} 
              {<-DLLVM_BUILD_EXTERNAL_COMPILER_RT> <Id.Lit_Equals '='> <ON>} {<-DLLVM_BUILD_LLVM_DYLIB> <Id.Lit_Equals '='> <ON>} {<-DLLVM_BUILD_TESTS> <Id.Lit_Equals '='> <ON>} 
              {<-DLLVM_DEFAULT_TARGET_TRIPLE> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$CBUILD'))} {<-DLLVM_DYLIB_EXPORT_ALL> <Id.Lit_Equals '='> <ON>} 
              {<-DLLVM_ENABLE_ASSERTIONS> <Id.Lit_Equals '='> <OFF>} {<-DLLVM_ENABLE_CXX1Y> <Id.Lit_Equals '='> <ON>} {<-DLLVM_ENABLE_FFI> <Id.Lit_Equals '='> <ON>} 
              {<-DLLVM_ENABLE_LIBCXX> <Id.Lit_Equals '='> <OFF>} {<-DLLVM_ENABLE_PIC> <Id.Lit_Equals '='> <ON>} {<-DLLVM_ENABLE_RTTI> <Id.Lit_Equals '='> <ON>} 
              {<-DLLVM_ENABLE_SPHINX> <Id.Lit_Equals '='> <OFF>} {<-DLLVM_ENABLE_TERMINFO> <Id.Lit_Equals '='> <ON>} {<-DLLVM_ENABLE_ZLIB> <Id.Lit_Equals '='> <ON>} 
              {<-DLLVM_HOST_TRIPLE> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName '$CHOST'))} {<-DLLVM_INCLUDE_EXAMPLES> <Id.Lit_Equals '='> <OFF>} 
              {<-DLLVM_TARGETS_TO_BUILD> <Id.Lit_Equals '='> 
                (SQ <'X86;ARM;AArch64;PowerPC;SystemZ;AMDGPU;NVPTX;Mips;BPF'>)
              } {(DQ ($ Id.VSub_DollarName '$builddir'))}
            )
            (C {<make>} {<llvm-tblgen>})
            (C {<make>})
            (C {<paxmark>} {<m>} {<'bin/llvm-rtdyld'>} {<'bin/lli'>} {<'bin/lli-child-target'>} 
              {<'unittests/ExecutionEngine/MCJIT/MCJITTests'>} {<'unittests/Support/SupportTests'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: check
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/build'>})
            (C {<make>} {<check-llvm>})
          ]
        )
    )
    (command.ShFunction
      name: package
      body: 
        (BraceGroup
          children: [
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$builddir')) <'/build'>})
            (C {<make>} {<Id.Lit_VarLike 'DESTDIR='> (DQ ($ Id.VSub_DollarName '$pkgdir'))} {<install>})
            (C {<install>} {<-D>} {<-m>} {<755>} {<'bin/FileCheck'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') 
                <'/bin/FileCheck'>
              }
            )
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix')})
            (command.Pipeline
              children: [
                (C {<file>} {<'lib/'> <Id.Lit_Star '*'> <.so>} {<'bin/'> <Id.Lit_Star '*'>})
                (C {<awk>} {<-F> <Id.Lit_Colon ':'>} {(SQ <'$2~/ELF/{print $1}'>)})
                (C {<xargs>} {<-r>} {<chrpath>} {<-d>})
              ]
              negated: F
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin'>})
            (C {<local>} {<name>} {<path>})
            (command.ForEach
              iter_name: path
              iter_words: [{<'bin/'> <Id.Lit_Star '*'>}]
              do_arg_iter: F
              body: 
                (command.DoGroup
                  children: [
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:name)
                          op: assign_op.Equal
                          rhs: 
                            {
                              (braced_var_sub
                                token: <Id.VSub_Name path>
                                suffix_op: 
                                  (suffix_op.Unary
                                    tok: <Id.VOp1_DPound '##'>
                                    arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>}
                                  )
                              )
                            }
                          spids: [655]
                        )
                      ]
                    )
                    (command.Case
                      to_match: {(DQ ($ Id.VSub_DollarName '$name'))}
                      arms: [
                        (case_arm
                          pat_list: [{<FileCheck>} {<obj2yaml>} {<yaml2obj>}]
                          action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)]
                          spids: [673 682 685 -1]
                        )
                      ]
                    )
                    (C {<ln>} {<-s>} 
                      {<'../lib/llvm'> ($ Id.VSub_DollarName '$_majorver') <'/bin/'> 
                        ($ Id.VSub_DollarName '$name')
                      } 
                      {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin/'> 
                        ($ Id.VSub_DollarName '$name') <-> ($ Id.VSub_DollarName '$_majorver')
                      }
                    )
                  ]
                )
            )
            (C {<_mv>} {<'include/'> <Id.Lit_Star '*'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/include/'> 
                ($ Id.VSub_DollarName '$pkgname') <'/'>
              }
            )
            (C {<rmdir>} {<include>})
            (C {<ln>} {<-s>} {<'../../include/'> ($ Id.VSub_DollarName '$pkgname')} {<include>})
            (C {<_mv>} {<'share/llvm/cmake/'> <Id.Lit_Star '*'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/lib/cmake/'> 
                ($ Id.VSub_DollarName '$pkgname') <'/'>
              }
            )
            (C {<rmdir>} {<'share/llvm/cmake'>})
            (C {<ln>} {<-s>} {<'../../../cmake/'> ($ Id.VSub_DollarName '$pkgname')} 
              {<'share/llvm/cmake'>}
            )
            (C {<ln>} {<-s>} {<libLTO-> ($ Id.VSub_DollarName '$_majorver') <.so>} {<'lib/libLTO.so'>})
          ]
        )
    )
    (command.ShFunction
      name: static
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'LLVM '> ($ Id.VSub_DollarName '$_majorver') <' static libraries'>)}
                  spids: [807]
                )
              ]
            )
            (C {<_mv>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') <'/lib/'> 
                <Id.Lit_Star '*'> <.a>
              } {(DQ ($ Id.VSub_DollarName '$subpkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') <'/lib/'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: libs
      body: 
        (BraceGroup
          children: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:pkgdesc)
                  op: assign_op.Equal
                  rhs: {(DQ <'LLVM '> ($ Id.VSub_DollarName '$_majorver') <' runtime library'>)}
                  spids: [844]
                )
              ]
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'soname='> (DQ <libLLVM-> ($ Id.VSub_DollarName '$_majorver') <.so>)}
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'soname2='> (DQ <libLLVM-> ($ Id.VSub_DollarName '$pkgver') <.so>)}
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$subpkgdir'))})
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$subpkgdir'))})
            (C {<_mv>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') <'/lib/'> 
                ($ Id.VSub_DollarName '$soname')
              } {<'usr/lib/'>}
            )
            (C {<ln>} {<-s>} {($ Id.VSub_DollarName '$soname')} 
              {<'usr/lib/'> ($ Id.VSub_DollarName '$soname2')}
            )
            (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName '$_prefix') <'/lib'>})
            (C {<ln>} {<-s>} {<'../../'> ($ Id.VSub_DollarName '$soname')} 
              {($ Id.VSub_DollarName '$_prefix') <'/lib/'> ($ Id.VSub_DollarName '$soname')}
            )
            (C {<ln>} {<-s>} {<'../../'> ($ Id.VSub_DollarName '$soname')} 
              {($ Id.VSub_DollarName '$_prefix') <'/lib/'> ($ Id.VSub_DollarName '$soname2')}
            )
          ]
        )
    )
    (command.ShFunction
      name: dev
      body: 
        (BraceGroup
          children: [
            (C {<default_dev>})
            (C {<cd>} {(DQ ($ Id.VSub_DollarName '$subpkgdir'))})
            (C {<_mv>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') <'/lib'>} {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') <'/share'>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') 
                <'/include'>
              } {($ Id.VSub_DollarName '$_prefix') <'/'>}
            )
            (C {<_mv>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') 
                <'/bin/FileCheck'>
              } {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/'> ($ Id.VSub_DollarName '$_prefix') <'/bin/llvm-config'>} 
              {($ Id.VSub_DollarName '$_prefix') <'/bin/'>}
            )
            (C {<_mv>} 
              {(DQ ($ Id.VSub_DollarName '$pkgdir')) <'/usr/bin/llvm-config-'> <Id.Lit_Star '*'>} {<'usr/bin/'>}
            )
          ]
        )
    )
    (command.ShFunction
      name: _mv
      body: 
        (BraceGroup
          children: [
            (command.Sentence child:(C {<local>} {<dest>}) terminator:<Id.Op_Semi _>)
            (command.ForEach
              iter_name: dest
              do_arg_iter: T
              body: 
                (command.DoGroup
                  children: [(command.Sentence child:(C {<true>}) terminator:<Id.Op_Semi _>)]
                )
            )
            (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName '$dest'))})
            (C {<mv>} {($ Id.VSub_At '$@')})
          ]
        )
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:sha512sums)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                <
'ac521debc02f6deba96ef975d6a546b0c5c77299c1dbf5e1b87a7974ff5e7fd715bd7e384b92d9adf572ce47130bdbf6d3c648eb0d7f72f16f976292e4909e90  llvm-3.7.1.src.tar.xz\n'
                > 
                <
'7a74abc15d8abb4ef4884469544168bfefb6859166f041c7d766157d77b20ea5b6bb06ffc0dd4f6965eab95294102f060d7a969e778ec933d2859c4900ec7380  llvm-0001-Add-Musl-MuslEABI-and-Musl-EABIHF-triples.patch\n'
                > 
                <
'f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71  llvm-0002-Fix-build-with-musl-libc.patch\n'
                > 
                <
'19bfb9282455d39d07dbb2b1293b03a45c57d522fbb9c5e58dac034200669628b97e7a90cd4ff5d52d9bb79acfccbef653d8a1140a7f0589ecd6f9b7c4ba0eb6  llvm-0003-Fix-DynamicLibrary-to-build-with-musl-libc.patch\n'
                > 
                <
'303ef099e8e21f9bc5f88ba1b30870e8127bea4948fc66b1858cc014cbde7bd917dc0bee1a511ef2adb6a9f40a3e3c3ae3fcada6ad3ee339807ac893c882d7ae  llvm-d18644-systemz-atomic-fence.patch\n'
                > 
                <
'11db6f3c5d697bc536c7d053530f7a5572756185e16399c32c31306861b58046ca9bc14b8d8097758c00a8c1a7026cbfb75636c0e697e59c53dda5848f93b006  llvm-nm-workaround.patch\n'
                > 
                <
'caf1c9466e8163f8844bd40095d1c3ce26c9e96dcb639f64833baca65a81708d39496e8c8ea65c7f11476d752265080998f1873b79cbc92b23349258e4dfa3ab  config.guess.patch\n'
                > 
                <
'52287dd37f62e0b51c487abe62a22440d3e9df2cb6144af45ba9ddc42848495fad533bf6b13f08e1b454ee653be9b8a14e02cf81f430a7d2c9be030889ef7f72  cmake-fix-libLLVM-name.patch'
                >
              )
            }
          spids: [1094]
        )
      ]
    )
  ]
)