(command.CommandList children: [ (C {(Id.Lit_Other ':')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:Myname) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:167) command_list: (command.CommandList children: [(C {(basename)} {($ Id.VSub_Number '$0')} {(.sh)})] ) ) } spids: [166] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:Mydir) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:178) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_Number '$0')})] ) ) } spids: [177] ) ] ) (command.Case to_match: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:189) command_list: (command.CommandList children:[(C {(echo)} {(-n)} {(.)})]) ) } arms: [ (case_arm pat_list: [{(-n) (Id.Lit_Star '*')}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:N) op: assign_op.Equal rhs: (word.Empty) spids: [205] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:206) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C) op: assign_op.Equal rhs: {(DQ (Id.Lit_Other '\\') (c))} spids: [208] ) ] ) ] spids: [201 203 213 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:N) op: assign_op.Equal rhs: {(-n)} spids: [218] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:220) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:C) op: assign_op.Equal rhs: (word.Empty) spids: [222] ) ] ) ] spids: [215 216 223 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cc_include) op: assign_op.Equal rhs: {(-I/usr/include)} spids: [228] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TF) op: assign_op.Equal rhs: {(/tmp/dep.) ($ Id.VSub_Dollar '$$')} spids: [232] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:EF) op: assign_op.Equal rhs: {(/tmp/deperr.) ($ Id.VSub_Dollar '$$')} spids: [236] ) ] ) (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:240) fd: -1 arg_word: {($ Id.VSub_DollarName '$EF')} ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_Star '$*'))} arms: [ (case_arm pat_list: [{(Id.Lit_Star '*') (-n) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {(/dev/null)} spids: [262] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:norc) op: assign_op.Equal rhs: {(yes)} spids: [266] ) ] ) ] spids: [253 256 268 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rc) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$Mydir') (/.) (${ Id.VSub_Name Myname) (rc)} spids: [274] ) ] ) ] spids: [270 271 283 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:update) op: assign_op.Equal rhs: (word.Empty) spids: [288] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:Include) op: assign_op.Equal rhs: {(include)} spids: [290] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(x) (DQ ($ Id.VSub_DollarName '$norc'))} {(Id.Lit_Equals '=')} {(x)} {(-a)} {(-f)} {($ Id.VSub_DollarName '$rc')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:314) ) ] action: [(C {(.)} {($ Id.VSub_DollarName '$rc')})] spids: [294 316] ) ] else_action: [ (command.Simple words: [{(echo)} {(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:342) fd: -1 arg_word: {($ Id.VSub_DollarName '$rc')} ) ] ) (command.Simple words: [{(echo)} {(DQ ('# pre-processor for .c files'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:353) fd: -1 arg_word: {($ Id.VSub_DollarName '$rc')} ) ] ) (command.ForEach iter_name: d iter_words: [{(/usr/libexec)} {(/usr/lib)} {(/usr/bin)} {(/lib)} {(/usr/ccs/bin)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp_c) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$d') (/cpp)} spids: [382] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-x)} {($ Id.VSub_DollarName '$cpp_c')} {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:397) ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-x)} {($ Id.VSub_DollarName '$cpp_c')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:414) ) ] action: [ (command.Simple words: [{(echo)} {(Id.Lit_VarLike 'cpp_c=') ($ Id.VSub_DollarName '$cpp_c')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:424) fd: -1 arg_word: {($ Id.VSub_DollarName '$rc')} ) ] ) ] spids: [405 416] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp_c) op: assign_op.Equal rhs: (word.Empty) spids: [432] ) ] ) (command.Simple words: [{(echo)} {(DQ ('#include <stdio.h>'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:445) fd: -1 arg_word: {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)} ) ] ) (command.Simple words: [{(echo)} {(DQ ('main() { return 0; }'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:458) fd: -1 arg_word: {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)} ) ] ) (command.ForEach iter_name: arg iter_words: [{(-E)} {(-P)} {(-M)}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ok) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:486) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ { (braced_var_sub token: (Token id: Id.VSub_Name val: REALCC span_id: 490 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: { (braced_var_sub token: (Token id: Id.VSub_Name val: CC span_id: 493 ) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(cc)} ) ) } ) ) } {($ Id.VSub_DollarName '$arg')} {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'2>' span_id:505) fd: 2 arg_word: {(/dev/null)} ) ] ) (C {(grep)} { (SQ (Token id: Id.Lit_Chars val: '^#.*stdio.h' span_id: 513 ) ) } ) (C {(tail)} {(-1)}) ] negated: F ) ] ) ) } spids: [485] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$ok'))} arms: [ (case_arm pat_list:[{(DQ )}] spids:[533 535 537 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp_c) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: (Token id:Id.VSub_Name val:REALCC span_id:547) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: { (braced_var_sub token: (Token id:Id.VSub_Name val:CC span_id:550) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(cc)} ) ) } ) ) (' ') ($ Id.VSub_DollarName '$arg') ) } spids: [544] ) ] ) (command.Simple words: [ {(echo)} {(Id.Lit_VarLike 'cpp_c=') (DQ ("'") ($ Id.VSub_DollarName '$cpp_c') ("'")) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:569) fd: -1 arg_word: {($ Id.VSub_DollarName '$rc')} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:574) ) ] spids: [540 541 575 -1] ) ] ) ] ) ) (C {(rm)} {(-f)} {(/tmp/f) ($ Id.VSub_Dollar '$$') (.c)}) ] ) ] ) (command.ShFunction name: clean_up body: (command.BraceGroup children: [ (C {(trap)} {(DQ )} {(2)} {(3)}) (C {(trap)} {(0)}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-s)} {($ Id.VSub_DollarName '$EF')} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:629) ) ] action: [ (command.Simple words: [ {(egrep)} {(-vi)} {(DQ ('included from|warning'))} {($ Id.VSub_DollarName '$EF')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:644) fd: -1 arg_word: {(${ Id.VSub_Name EF) (2)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-s)} {(${ Id.VSub_Name EF) (2)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:664) ) ] action: [ (command.Simple words: [{(cat)} {($ Id.VSub_DollarName '$EF')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:673) fd: -1 arg_word: {(2)} ) ] ) (C {(rm)} {(-f)} {(.depend)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ests) op: assign_op.Equal rhs: {(1)} spids: [684] ) ] ) ] spids: [652 666] ) ] ) ] spids: [620 631] ) ] ) (C {(rm)} {(-f)} {($ Id.VSub_DollarName '$TF')} {($ Id.VSub_DollarName '$EF') (Id.Lit_Star '*')} ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:704) arg_word: { (braced_var_sub token: (Token id:Id.VSub_Name val:ests span_id:707) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(0)}) ) } ) ] ) ) (C {(trap)} {(clean_up)} {(0)}) (C {(trap)} {(Id.ControlFlow_Exit exit)} {(2)} {(3)}) (command.ShFunction name: get_incs body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cpp'))} arms: [ (case_arm pat_list: [{(grep)}] action: [ (command.Pipeline children: [ (C {(egrep)} {(SQ (Token id:Id.Lit_Chars val:'^#[ \t]*include' span_id:760))} {($ Id.VSub_Star '$*')} ) (C {(egrep)} {(-v)} {(DQ ($ Id.VSub_DollarName '$IGNORE'))}) (C {(sed)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/^.*include[^"<]*["<]//' span_id:784))} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'s/[">].*//g' span_id:790))} ) ] negated: F ) ] spids: [749 750 792 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$cpp')} {($ Id.VSub_DollarName '$cpp_opts')} {($ Id.VSub_DollarName '$cc_include')} {($ Id.VSub_Star '$*')} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'2>>' span_id:819) fd: 2 arg_word: {($ Id.VSub_DollarName '$EF')} ) ] ) (C {(egrep)} {(SQ (Token id:Id.Lit_Chars val:'^#.*\\.h"' span_id:828))}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s,^#.*"\\(.*\\)".*,\\1,' span_id:836))} ) (C {(egrep)} {(-v)} {(DQ ($ Id.VSub_DollarName '$IGNORE'))}) (C {(sort)} {(-u)}) ] negated: F ) ] spids: [795 796 855 -1] ) ] ) ] ) ) (command.ShFunction name: gen_deps body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:llen) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [870] ) ] ) (C {(shift)}) (command.ForEach iter_name: ifile iter_words: [{($ Id.VSub_Star '$*')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cpp'))} arms: [ (case_arm pat_list: [{(grep)}] action: [ (command.ForEach iter_name: dir iter_words: [ {($ Id.VSub_DollarName '$srcdir')} {($ Id.VSub_DollarName '$dirlist')} {(/usr/include)} ] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-f)} { (DQ ($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$ifile') ) } {(Id.Lit_RBracket ']')} ) (command.ControlFlow token: (Token id: Id.ControlFlow_Break val: break span_id: 937 ) ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} { (DQ ($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$ifile') ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:959) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:iline) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 969 ) command_list: (command.CommandList children: [ (command.Pipeline children: [ (command.Simple words: [ {(grep)} {(-n)} {(DQ ('.*include.*['))} {($ Id.VSub_DollarName '$file')} ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Less val: '<' span_id: 983 ) fd: -1 arg_word: {(Id.Lit_RBracket ']') ($ Id.VSub_DollarName '$ifile') (Id.Lit_LBracket '[') (DQ ('>]')) } ) ] ) (C {(cut)} {(-d) (Id.Lit_Other ':')} {(-f1)}) ] negated: F ) ] ) ) } spids: [968] ) ] ) (command.Simple words: [ {(echo)} { (DQ (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 1007 ) ) ($ Id.VSub_DollarName '$file') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 1009 ) ) (', line ') ($ Id.VSub_DollarName '$iline') (': cannot find include file ') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 1013 ) ) ($ Id.VSub_DollarName '$ifile') (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\"' span_id: 1015 ) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1018) fd: -1 arg_word: {($ Id.VSub_DollarName '$EF')} ) ] ) (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 1031 ) ) ] spids: [944 961] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ifile) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$dir') (/) ($ Id.VSub_DollarName '$ifile')} spids: [1037] ) ] ) (command.Case to_match: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1051) command_list: (command.CommandList children: [ (C {(grep)} {(DQ ($ Id.VSub_DollarName '$ifile'))} {($ Id.VSub_DollarName '$TF')} ) ] ) ) } arms: [ (case_arm pat_list: [{(DQ )}] action: [ (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$ifile'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1076) fd: -1 arg_word: {($ Id.VSub_DollarName '$TF')} ) ] ) ] spids: [1066 1068 1079 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 1085 ) ) ] spids: [1082 1083 1086 -1] ) ] ) ] spids: [899 900 1095 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:len) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1104) command_list: (command.CommandList children: [ (C {(expr)} {(DQ ($ Id.VSub_DollarName '$ifile') (' '))} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'.*' span_id:1117))} ) ] ) ) } spids: [1103] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} { (DQ (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1127) command_list: (command.CommandList children: [ (C {(expr)} {($ Id.VSub_DollarName '$llen')} {(Id.Lit_Other '+')} {($ Id.VSub_DollarName '$len')} ) ] ) ) ) } {(-gt)} { (braced_var_sub token: (Token id:Id.VSub_Name val:width span_id:1143) suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {(76)} ) ) } {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1149) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1157) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1160) fd: -1 arg_word: {(.depend)} ) ] ) (command.Simple words: [ {(echo)} {($ Id.VSub_DollarName '$N')} {(DQ ('\t') ($ Id.VSub_DollarName '$C'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1174) fd: -1 arg_word: {(.depend)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:llen) op: assign_op.Equal rhs: {(8)} spids: [1179] ) ] ) ] spids: [1122 1151] ) ] ) (command.Simple words: [ {(echo)} {($ Id.VSub_DollarName '$N')} {(DQ ($ Id.VSub_DollarName '$ifile') (' ') ($ Id.VSub_DollarName '$C'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1196) fd: -1 arg_word: {(.depend)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:llen) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1202) command_list: (command.CommandList children: [ (C {(expr)} {($ Id.VSub_DollarName '$llen')} {(Id.Lit_Other '+')} {($ Id.VSub_DollarName '$len')} ) ] ) ) } spids: [1201] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$cpp'))} arms: [ (case_arm pat_list: [{(grep)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ilist) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1235) command_list: (command.CommandList children: [ (C {(get_incs)} {($ Id.VSub_DollarName '$ifile')}) ] ) ) } spids: [1234] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ilist'))} {(Id.Lit_RBracket ']')} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:llen) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_Backtick val: '`' span_id: 1258 ) command_list: (command.CommandList children: [ (C {(gen_deps)} {($ Id.VSub_DollarName '$llen')} {($ Id.VSub_DollarName '$ilist')} ) ] ) ) } spids: [1257] ) ] ) ] ) ] spids: [1226 1227 1269 -1] ) ] ) ] ) ) (C {(echo)} {($ Id.VSub_DollarName '$llen')}) ] ) ) (command.ForEach iter_name: f iter_words: [{(makefile)} {(Makefile)}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test)} {(-s)} {($ Id.VSub_DollarName '$f')}) (command.BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAKEFILE) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$f')} spids: [1308] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1310) ) (command.Sentence child: (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:1312) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1313) ) ] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAKEFILE) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:MAKEFILE span_id:1322) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(makefile)}) ) } spids: [1320] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IGNORE) op: assign_op.Equal rhs: { (braced_var_sub token: (Token id:Id.VSub_Name val:IGNORE span_id:1329) suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{(DQ ('^-'))}) ) } spids: [1327] ) ] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:obj) op:assign_op.Equal rhs:{(o)} spids:[1339])] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp_opts) op: assign_op.Equal rhs: (word.Empty) spids: [1342] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:vpath) op: assign_op.Equal rhs: (word.Empty) spids: [1347] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:append) op: assign_op.Equal rhs: (word.Empty) spids: [1349] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:progDep) op: assign_op.Equal rhs: (word.Empty) spids: [1351] ) ] ) (C {(Id.KW_Set set)} {(--)} { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1358) command_list: (command.CommandList children: [(C {(getopt)} {(DQ ('AanNV:s:w:o:I:D:b:f:i:p'))} {(DQ ($ Id.VSub_At '$@'))})] ) ) } ) (command.ForEach iter_name: key iter_words: [{(DQ ($ Id.VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$key')} arms: [ (case_arm pat_list: [{(--)}] action: [ (command.Sentence child: (C {(shift)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1396) ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:1398) ) ] spids: [1392 1393 1399 -1] ) (case_arm pat_list: [{(-A)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:Include) op: assign_op.Equal rhs: (word.Empty) spids: [1405] ) ] ) ] spids: [1402 1403 1406 -1] ) (case_arm pat_list: [{(-a)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:append) op: assign_op.Equal rhs: {(yes)} spids: [1415] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1417) ) (C {(shift)}) ] spids: [1412 1413 1420 -1] ) (case_arm pat_list: [{(-n)}] action: [(C {(shift)})] spids: [1423 1424 1427 -1] ) (case_arm pat_list: [{(-N)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:update) op: assign_op.Equal rhs: {(no)} spids: [1436] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1438) ) (C {(shift)}) ] spids: [1433 1434 1441 -1] ) (case_arm pat_list: [{(-I)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp_opts) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$cpp_opts') ($ Id.VSub_Number '$1') ($ Id.VSub_Number '$2') (' ') ) } spids: [1450] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1457) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dirlist) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$dirlist') (' ') ($ Id.VSub_Number '$2'))} spids: [1459] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1465) ) (C {(shift)} {(2)}) ] spids: [1447 1448 1470 -1] ) (case_arm pat_list: [{(-o)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:obj) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1476] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1478) ) (C {(shift)} {(2)}) ] spids: [1473 1474 1483 -1] ) (case_arm pat_list: [{(-s)}] action: [(C {(shift)} {(2)})] spids: [1486 1487 1492 -1] ) (case_arm pat_list: [{(-w)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:width) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1501] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1503) ) (C {(shift)} {(2)}) ] spids: [1498 1499 1508 -1] ) (case_arm pat_list: [{(-f)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MAKEFILE) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1514] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1516) ) (C {(shift)} {(2)}) ] spids: [1511 1512 1521 -1] ) (case_arm pat_list: [{(-b)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BASEDIR) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [1527] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1529) ) (C {(shift)} {(2)}) ] spids: [1524 1525 1534 -1] ) (case_arm pat_list: [{(-i)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IGNORE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [1540] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1544) ) (C {(shift)} {(2)}) ] spids: [1537 1538 1549 -1] ) (case_arm pat_list: [{(-D)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp_opts) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$cpp_opts') ($ Id.VSub_Number '$1') ($ Id.VSub_Number '$2') (' ') ) } spids: [1558] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1565) ) (C {(shift)} {(2)}) ] spids: [1555 1556 1570 -1] ) (case_arm pat_list: [{(-V)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VPATH) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [1576] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1580) ) (C {(shift)} {(2)}) ] spids: [1573 1574 1585 -1] ) (case_arm pat_list: [{(-p)}] action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:progDep) op: assign_op.Equal rhs: {(yes)} spids: [1594] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1596) ) (C {(shift)}) ] spids: [1591 1592 1599 -1] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$VPATH'))} {(Id.Lit_RBracket ']')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:vpath) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1618) command_list: (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(Id.Lit_Other ':')} spids: [1621] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1623) ) (command.Sentence child: (C {(Id.KW_Set set)} {(--)} {($ Id.VSub_DollarName '$VPATH')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1630) ) (C {(echo)} {($ Id.VSub_Star '$*')}) ] ) ) } spids: [1617] ) ] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$append'))} {(Id.Lit_RBracket ']')}) (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1648) fd: -1 arg_word: {(.depend)} ) ] ) ] ) (command.ForEach iter_name: file iter_words: [{($ Id.VSub_Star '$*')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cpp) op: assign_op.Equal rhs: (word.Empty) spids: [1664] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:suffix) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1668) command_list: (command.CommandList children: [ (C {(expr)} {($ Id.VSub_DollarName '$file')} {(Id.Lit_Other ':')} {(SQ (Token id:Id.Lit_Chars val:'.*\\.\\([^.]*\\)' span_id:1684))} ) ] ) ) } spids: [1667] ) ] ) (C {(eval)} {(Id.Lit_VarLike 'cpp=') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1693) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\$' span_id:1694)) (Id.Lit_LBrace '{') (cpp_) (${ Id.VSub_Name suffix) (Id.Lit_Other ':') (-grep) (Id.Lit_RBrace '}') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\"' span_id:1703) ) } ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(Id.KW_Bang '!')} {(-f)} {($ Id.VSub_DollarName '$file')} {(-a)} {(DQ ($ Id.VSub_DollarName '$vpath'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1725) ) ] action: [ (command.ForEach iter_name: d iter_words: [{(.)} {($ Id.VSub_DollarName '$vpath')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} {(-f)} {($ Id.VSub_DollarName '$d') (/) ($ Id.VSub_DollarName '$file')} {(Id.Lit_RBracket ']')} ) (command.BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:file) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$d') (/) ($ Id.VSub_DollarName '$file') } spids: [1758] ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:1762) ) (command.Sentence child: (command.ControlFlow token: (Token id: Id.ControlFlow_Break val: break span_id: 1764 ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:1765) ) ] ) ] ) ] ) ) ] spids: [1708 1727] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:srcdir) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1777) command_list: (command.CommandList children: [(C {(dirname)} {($ Id.VSub_DollarName '$file')})] ) ) } spids: [1776] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:base) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1787) command_list: (command.CommandList children: [ (C {(basename)} {($ Id.VSub_DollarName '$file')} {(.) ($ Id.VSub_DollarName '$suffix')} ) ] ) ) } spids: [1786] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ilist) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1802) command_list: (command.CommandList children: [(C {(get_incs)} {($ Id.VSub_DollarName '$file')})] ) ) } spids: [1801] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$ilist'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1821) ) ] action: [ (command.Simple redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1826) fd: -1 arg_word: {($ Id.VSub_DollarName '$TF')} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$progDep'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1840) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ($ Id.VSub_DollarName '$base') (':\t') ($ Id.VSub_DollarName '$file') (' ') (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1852)) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1855) fd: -1 arg_word: {(.depend)} ) ] ) ] spids: [1831 1842] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ($ Id.VSub_DollarName '$base') (.) ($ Id.VSub_DollarName '$obj') (':\t') ($ Id.VSub_DollarName '$file') (' ') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\\\' span_id:1872) ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1875) fd: -1 arg_word: {(.depend)} ) ] ) ] ) (command.Simple words: [ {(echo)} {($ Id.VSub_DollarName '$N')} {(DQ ('\t') ($ Id.VSub_DollarName '$C'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1892) fd: -1 arg_word: {(.depend)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:llen) op: assign_op.Equal rhs: {(8)} spids: [1897] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:llen) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:1902) command_list: (command.CommandList children: [ (C {(gen_deps)} {($ Id.VSub_DollarName '$llen')} {($ Id.VSub_DollarName '$ilist')} ) ] ) ) } spids: [1901] ) ] ) (command.Simple words: [{(echo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1915) fd: -1 arg_word: {(.depend)} ) ] ) (command.Simple words: [{(echo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1922) fd: -1 arg_word: {(.depend)} ) ] ) ] spids: [1812 1823] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(DQ ($ Id.VSub_DollarName '$progDep'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:1936) ) ] action: [ (command.Simple words: [ {(echo)} {(DQ ($ Id.VSub_DollarName '$base') (':\t') ($ Id.VSub_DollarName '$file'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1949) fd: -1 arg_word: {(.depend)} ) ] ) (command.Simple words: [{(echo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:1956) fd: -1 arg_word: {(.depend)} ) ] ) ] spids: [1927 1938] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-s)} {(.depend)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:1975) ) ] action: [ (C {(mv)} {(.depend)} {($ Id.VSub_DollarName '$TF')}) (command.Pipeline children: [ (command.BraceGroup children: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DPipe] children: [ (C {(test)} {(DQ ($ Id.VSub_DollarName '$BASEDIR'))}) (C {(sed)} {(-e)} { (DQ ('s;') ($ Id.VSub_DollarName '$BASEDIR') (';') (word_part.EscapedLiteral token: (Token id:Id.Lit_EscapedChar val:'\\$' span_id:2009) ) ('(BASEDIR);g') ) } {($ Id.VSub_DollarName '$TF')} ) (C {(cat)} {($ Id.VSub_DollarName '$TF')}) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:2020) ) ] ) (command.Simple words: [ {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s;\\([^.]\\)\\./;\\1;g' span_id:2030))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2033) fd: -1 arg_word: {(.depend)} ) ] ) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(x) ($ Id.VSub_DollarName '$update')} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(xno)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:2065) ) ] action: [ (C {(trap)} {(DQ )} {(2)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:depended) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_Backtick val:'`' span_id:2087) command_list: (command.CommandList children: [ (C {(grep)} { (SQ (Token id: Id.Lit_Chars val: 'include.*\\.depend' span_id: 2095 ) ) } {($ Id.VSub_DollarName '$MAKEFILE')} ) ] ) ) } spids: [2086] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {(test)} {(DQ ($ Id.VSub_DollarName '$depended'))}) (C {(clean_up)})] ) (command.Simple words: [ {(sed)} { (SQ (Token id: Id.Lit_Chars val: '/^# DO NOT DELETE.*depend.*$/,$d' span_id: 2118 ) ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:2121) fd: -1 arg_word: {($ Id.VSub_DollarName '$MAKEFILE')} ) (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:2125) fd: -1 arg_word: {($ Id.VSub_DollarName '$TF')} ) ] ) (C {(mv)} {($ Id.VSub_DollarName '$TF')} {($ Id.VSub_DollarName '$MAKEFILE')}) (command.Simple words: [{(cat)}] redirects: [ (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:2139) fd: -1 here_begin: {(Id.KW_Bang '!')} here_end_span_id: 2152 stdin_parts: [ ('# DO NOT DELETE THIS LINE -- make depend depends on it\n') ('# Do not edit anything below, it was added automagically by ') ($ Id.VSub_DollarName '$Myname') ('.\n') ('\n') ] ) (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2142) fd: -1 arg_word: {($ Id.VSub_DollarName '$MAKEFILE')} ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$Include'))} arms: [ (case_arm pat_list: [{(DQ )}] action: [ (command.Simple words: [{(cat)} {(.depend)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2173) fd: -1 arg_word: {($ Id.VSub_DollarName '$MAKEFILE')} ) ] ) ] spids: [2165 2167 2176 -1] ) (case_arm pat_list: [{(.include)}] action: [ (command.Simple words: [ {(echo)} {(SQ (Token id:Id.Lit_Chars val:'.include ".depend"' span_id:2185))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2188) fd: -1 arg_word: {($ Id.VSub_DollarName '$MAKEFILE')} ) ] ) ] spids: [2179 2180 2191 -1] ) (case_arm pat_list: [{(include)}] action: [ (command.Simple words: [{(echo)} {(include)} {(.depend)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_DGreat val:'>>' span_id:2203) fd: -1 arg_word: {($ Id.VSub_DollarName '$MAKEFILE')} ) ] ) ] spids: [2194 2195 2206 -1] ) ] ) ] spids: [2052 2067] ) ] ) ] spids: [1966 1977] ) ] ) (C {(clean_up)}) ] )