(CommandList
  children: [
    (C {(set)} {(-eu)})
    (AndOr
      ops: [Op_DAmp Op_DPipe]
      children: [
        (C {(Lit_Other '[')} {(-n)} {(DQ (${ VSub_Name CPP))} {(Lit_Other ']')})
        (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$PROJROOT'))} {(Lit_Other ']')})
        (BraceGroup
          children: [
            (Sentence
              child: 
                (SimpleCommand
                  words: [{(echo)} {(DQ ('Require variables PROJROOT, CPP, CFLAGS, CPPFLAGS'))}]
                  redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
                )
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)})
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [36]
        )
      ]
    )
    (Pipeline
      children: [
        (BraceGroup
          children: [
            (Sentence
              child: (C {(echo)} {(DQ ('#define INCLUDE_SDL'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: (C {(echo)} {(DQ ('#define INCLUDE_GL'))})
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: 
                (C {(echo)} 
                  {
                    (DQ ('#include ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (config.h) 
                      (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>)
                    )
                  }
                )
              terminator: <Op_Semi ';'>
            )
            (Sentence
              child: 
                (WhileUntil
                  keyword: <KW_While while>
                  cond: [(Sentence child:(C {(read)} {(ConstName)}) terminator:<Op_Semi ';'>)]
                  body: 
                    (DoGroup
                      children: [
                        (Sentence
                          child: (C {(echo)} {(DQ ('#ifdef ') ($ VSub_Name '$ConstName'))})
                          terminator: <Op_Semi ';'>
                        )
                        (Sentence
                          child: (C {(echo)} {(DQ (validconst_) ($ VSub_Name '$ConstName'))})
                          terminator: <Op_Semi ';'>
                        )
                        (Sentence
                          child: (C {(echo)} {(DQ ('#endif'))})
                          terminator: <Op_Semi ';'>
                        )
                      ]
                      spids: [93 122]
                    )
                )
              terminator: <Op_Semi ';'>
            )
          ]
          spids: [56]
        )
        (C {(${ VSub_Name CPP)} {(${ VSub_Name CFLAGS)} {(${ VSub_Name CPPFLAGS)} {(-)})
        (C {(grep)} {(validconst_)})
        (C {(sed)} {(-e)} {(SQ <'s/validconst_\\(.*\\)$/\\1/'>)})
      ]
      negated: F
    )
    (Subshell
      child: 
        (CommandList
          children: [
            (C {(echo)})
            (C {(echo)} 
              {(DQ ("  ConstList.txt has been generated by taking my own machine's valid list of"))}
            )
            (C {(echo)} 
              {(DQ ('  constants and running it through your preprocessor.  Hopefully it works'))}
            )
            (C {(echo)} 
              {(DQ ('  for you.  If not, try grepping your GL header files for #define GL*, and'))}
            )
            (C {(echo)} 
              {(DQ ("  put the name of every constant you'd like to have at runtime into the"))}
            )
            (C {(echo)} {(DQ ('  ConstList.txt file.'))})
            (C {(echo)} 
              {(DQ ('  Note that CmdlineGL can only use integer constants, and not all GL_* are.'))}
            )
            (C {(echo)} {(DQ ("  Also beware: 'make clean' will remove it!"))})
            (C {(echo)})
          ]
        )
      redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})]
      spids: [162 210]
    )
  ]
)