(command.CommandList children: [ (C {<set>} {<-e>}) (command.ShFunction name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<echo>} {(DQ <'Usage: -o file'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) (C {<usage>}) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>}) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'flag='> name:flag) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} spids: [73] ) ] redirects: [] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName flag))} arms: [ (case_arm pat_list: [{<-o>}] action: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) (C {<usage>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} spids: [107] ) ] redirects: [] ) (C {<mkdir>} {<-p>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_Number 2)}) right: <Id.Eof_RParen _> ) ) } ) (C {<shift>}) ] spids: [88 89 129 -1] ) (case_arm pat_list: [{<-l> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBS='> name:LIBS) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName LIBS) <' '> ($ Id.VSub_Number 1))} spids: [137] ) ] redirects: [] ) (C {<shift>}) ] spids: [132 134 148 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (C {<echo>} {(DQ <'Unknown option '> ($ Id.VSub_Number 1))}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [151 152 -1 168] ) ] redirects: [] ) (C {<shift>}) ] ) redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName out))} {<Id.Lit_RBracket ']'>}) (C {<usage>}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'package='> name:package) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<basename>} {(DQ ($ Id.VSub_DollarName out))}) right: <Id.Eof_RParen _> ) } spids: [191] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {(DQ <'/src/'> ($ Id.VSub_DollarName package))} spids: [201] ) ] redirects: [] ) (C {<mkdir>} {<-p>} {($ Id.VSub_DollarName dir)}) (C {<tar>} {<xf>} {<->} {<-C>} {($ Id.VSub_DollarName dir)}) (command.Subshell child: (command.CommandList children: [ (C {<cd>} {($ Id.VSub_DollarName dir)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CFILES='> name:CFILES) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<find>} {<.>} {<-name>} {(SQ <'*.c'>)}) right: <Id.Eof_RParen _> ) } spids: [237] ) ] redirects: [] ) (C {<cc>} {<-static>} {<-O2>} {<-Wall>} {<-Werror>} {<-o>} {<'../../'> ($ Id.VSub_DollarName out)} {($ Id.VSub_DollarName CFILES)} {($ Id.VSub_DollarName LIBS)} ) ] ) redirects: [] ) (C {<tar>} {<cf>} {<->} {($ Id.VSub_DollarName out)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )