(List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS generated]} ) (Com {[LIT_CHARS source]} {[LIT_CHARS configure]} ) (FunctionDef probecc [] (Com {[VarSub CROSS_COMPILE] [VarSub CC]} {[VarSub CFLAGS]} {[LIT_CHARS -xc]} {[LIT_CHARS -o]} {[LIT_CHARS /dev/null]} {[VarSub 1]} {[LIT_CHARS -]} ) ) (FunctionDef probesymbol [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS probecc]} {[VarSub 2]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('DEFAULT', {[LIT_CHARS y]})]) (= scope= flags=0 words=[] bindings=[('DEFAULT', {[LIT_CHARS n]})]) ) ) (Com {[LIT_CHARS rm]} {[LIT_CHARS a.out]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (AndOr OP_OR_IF (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS "config "][VarSub 1][\ LIT_ESCAPED_CHAR "\\n"][\ LIT_ESCAPED_CHAR "\\t"][LIT_CHARS bool]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [\ LIT_ESCAPED_CHAR "\\t"][LIT_CHARS "default "][VarSub DEFAULT][\ LIT_ESCAPED_CHAR "\\n"]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) (FunctionDef probeconfig [] (List (Com < (FilenameRedirectNode filename={[LIT_CHARS generated/cflags]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [ComSub (Pipeline (Com redirects=[(HereWordRedirectNode here_word={[\ LIT_ESCAPED_CHAR "\\#"] [LIT_CHARS warn]} 0) (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2)]{[LIT_CHARS probecc]} {[LIT_CHARS -Wno-string-plus-int]} {[LIT_CHARS warn]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS string-plus-int]}) )]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -Wno-string-plus-int]} < (FilenameRedirectNode filename={[LIT_CHARS generated/cflags]} >"> 1), > ) ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_CONTAINER]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS " int x=CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWIPC|CLONE_NEWNET;\n"][LIT_CHARS "\n"][LIT_CHARS " int main(int argc, char *argv[]) { return unshare(x); }\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_FIFREEZE]} {[LIT_CHARS -c]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS " #ifndef FIFREEZE\n"][LIT_CHARS " #error nope\n"][LIT_CHARS " #endif\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_ICONV]} {[LIT_CHARS -c]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include "][RIGHT_D_QUOTE "\""][LIT_CHARS iconv.h][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_FALLOCATE]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS "\n"][LIT_CHARS " int main(int argc, char *argv[]) { return posix_fallocate(0,0,0); }\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_UTMPX]} {[LIT_CHARS -c]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS " #ifndef BOOT_TIME\n"][LIT_CHARS " #error nope\n"][LIT_CHARS " #endif\n"][LIT_CHARS " int main(int argc, char *argv[]) {\n"][LIT_CHARS " struct utmpx *a; \n"][LIT_CHARS " if (0 != (a = getutxent())) return 0;\n"][LIT_CHARS " return 1;\n"][LIT_CHARS " }\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_SHADOW]} {[LIT_CHARS -c]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS " int main(int argc, char *argv[]) {\n"][LIT_CHARS " struct spwd *a = getspnam("][RIGHT_D_QUOTE "\""][LIT_CHARS root][RIGHT_D_QUOTE "\""][LIT_CHARS "); return 0;\n"][LIT_CHARS " }\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_ON_ANDROID]} {[LIT_CHARS -c]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #ifndef __ANDROID__\n"][LIT_CHARS " #error nope\n"][LIT_CHARS " #endif\n"]]} 0), > ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_FORK]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS " int main(int argc, char *argv[]) { return fork(); }\n"]]} 0), > ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[SQ ]} ) (Com {[LIT_CHARS probesymbol]} {[LIT_CHARS TOYBOX_PRLIMIT]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS " #include \n"][LIT_CHARS " #include \n"][LIT_CHARS "\n"][LIT_CHARS " int main(int argc, char *argv[]) { prlimit(0, 0, 0, 0); }\n"]]} 0), > ) ) ) (FunctionDef genconfig [] (For j [{[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[LIT_CHARS toys/] [LIT_OTHER "*"] [LIT_CHARS /README]}) (Com {[LIT_CHARS sort]} {[LIT_CHARS -r]}) )]}]) (List (= scope= flags=0 words=[] bindings=[('DIR', {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub j]]})]]})]) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[ComSub (Pipeline (Com {[LIT_CHARS ls]} {[DQ [VarSub DIR]]}) (Com {[LIT_CHARS wc]} {[LIT_CHARS -l]}) )]} {[LIT_CHARS -lt]} {[LIT_CHARS 2]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS continue]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "menu "][\ LIT_ESCAPED_CHAR "\\\""][ComSub (Com {[LIT_CHARS head]} {[LIT_CHARS -n]} {[LIT_CHARS 1]} {[VarSub j]})][\ LIT_ESCAPED_CHAR "\\\""]]} ) (Com {[LIT_CHARS echo]} ) (For i [{[ComSub (Com {[LIT_CHARS ls]} {[LIT_CHARS -1]} {[VarSub DIR] [LIT_CHARS /] [LIT_OTHER "*"] [LIT_CHARS .c]})]}]) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# "][VarSub i]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS sed]} {[LIT_CHARS -n]} {[SQ ]} {[VarSub i]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS echo]} ) ) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS endmenu]} ) ) ) ) (FunctionDef toys [] (Pipeline (Com {[LIT_CHARS grep]} {[SQ ]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[LIT_CHARS TOYFLAG_NOFORK]} ) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "0))"]]} ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -rn]} {[SQ ]} ) ) ) (FunctionDef sort_words [] (Pipeline (Com {[LIT_CHARS tr]} {[SQ ]} {[SQ ]} ) (Com {[LIT_CHARS sort]} ) (Com {[LIT_CHARS xargs]} ) ) ) (FunctionDef print_singlemake [] (List (= scope= flags=0 words=[] bindings=[('working', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('pending', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('phony_targets', {[SQ ]})]) (While (Com {[LIT_CHARS read]} {[LIT_CHARS cmd_src]} {[LIT_CHARS cmd]} more_env=[('IFS', {[DQ [LIT_CHARS ":"]]})] ) (List (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub cmd]]} {[LIT_DBRACKET_LIKE "=="]} {[LIT_CHARS help]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS continue]} ) ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub cmd]]} {[LIT_DBRACKET_LIKE "=="]} {[LIT_CHARS install]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS continue]} ) ) (= scope= flags=0 words=[] bindings=[('test_name', {[LIT_CHARS test_] [VarSub cmd]})]) (= scope= flags=0 words=[] bindings=[('build_name', {[VarSub cmd]})]) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub cmd]]} {[LIT_DBRACKET_LIKE "=="]} {[LIT_CHARS test]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('build_name', {[LIT_CHARS test_bin]})]) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS generated/single/][VarSub cmd][LIT_CHARS ": "][VarSub cmd_src][LIT_CHARS " *.[ch] lib/*.[ch]\n"][LIT_CHARS "\tscripts/single.sh generated/single/"][VarSub cmd][LIT_CHARS "\n"][LIT_CHARS "\n"][VarSub build_name][LIT_CHARS ": generated/single/"][VarSub cmd][LIT_CHARS "\n"][LIT_CHARS "\t@echo "][RIGHT_D_QUOTE "\""][LIT_CHARS "Built generated/single/"][VarSub cmd][RIGHT_D_QUOTE "\""][LIT_CHARS "\n"][LIT_CHARS "\n"][VarSub test_name][LIT_CHARS ":\n"][LIT_CHARS "\t./test.sh single "][VarSub cmd][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0), > ) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub cmd_src transform_ops=[PatSub {[LIT_CHARS pending]} {[LIT_SLASH /]}]]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub cmd_src]]} {[LIT_DBRACKET_LIKE "]"]} ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('pending', {[DQ [VarSub pending][LIT_CHARS " "][VarSub cmd]]})]) (= scope= flags=0 words=[] bindings=[('working', {[DQ [VarSub working][LIT_CHARS " "][VarSub cmd]]})]) ) ) (= scope= flags=0 words=[] bindings=[('phony_targets', {[DQ [VarSub phony_targets][LIT_CHARS " "][VarSub build_name][LIT_CHARS " "][VarSub test_name]]})]) ) ) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "# test_bin builds the 'test' file, not a file named test_bin. And all the rest\n"][LIT_CHARS "# of the test targest are phony too.\n"][LIT_CHARS ".PHONY: "][VarSub phony_targets][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "list:\n"][LIT_CHARS "\t@echo "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub working]} {[VarSub pending]}) (Com {[LIT_CHARS sort_words]}) )][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "list_working:\n"][LIT_CHARS "\t@echo "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub working]]}) (Com {[LIT_CHARS sort_words]}) )][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "list_pending:\n"][LIT_CHARS "\t@echo "][ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub pending]]}) (Com {[LIT_CHARS sort_words]}) )][LIT_CHARS "\n"]]} 0), > ) ) ) (FunctionDef main [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS probeconfig]} < (FilenameRedirectNode filename={[LIT_CHARS generated/Config.probed]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS generated/Config.probed]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS genconfig]} < (FilenameRedirectNode filename={[LIT_CHARS generated/Config.in]} "> 1), > ) (Com {[LIT_CHARS rm]} {[LIT_CHARS generated/Config.in]} ) ) (Pipeline (Com {[LIT_CHARS toys]} {[LIT_CHARS toys/] [LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"] [LIT_CHARS .c]} ) (Com {[LIT_CHARS print_singlemake]} < (FilenameRedirectNode filename={[LIT_CHARS .singlemake]} "> 1), > ) ) ) ) (Com {[LIT_CHARS main]} {[DQ [VarSub @]]} ) )