(List (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS nounset]}) (Com {[LIT_CHARS set]} {[LIT_CHARS -o]} {[LIT_CHARS errexit]}) (= scope= flags=2 words=[] bindings=[('INSTALL_ROOT', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /toolchain/llvm-cs]})]) (= scope= flags=2 words=[] bindings=[('CROSS_TARGET', {[LIT_CHARS arm-none-linux-gnueabi]})]) (= scope= flags=2 words=[] bindings=[('LLVM_INSTALL_DIR', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS /][VarSub CROSS_TARGET][LIT_CHARS /llvm]]})]) (= scope= flags=2 words=[] bindings=[('LLVMGCC_INSTALL_DIR', {[DQ [VarSub INSTALL_ROOT][LIT_CHARS /][VarSub CROSS_TARGET][LIT_CHARS /llvm-gcc-4.2]]})]) (= scope= flags=2 words=[] bindings=[('LLVMGCC_TARBALL', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /../third_party/llvm/llvm-gcc-4.2-88663.tar.bz2]})]) (= scope= flags=2 words=[] bindings=[('LLVM_TARBALL', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /../third_party/llvm/llvm-88663.tar.bz2]})]) (= scope= flags=2 words=[] bindings=[('MAKE_OPTS', {[DQ [LIT_CHARS "-j8 VERBOSE=1"]]})]) (= scope= flags=2 words=[] bindings=[('TMP', {[LIT_CHARS /tmp/llvm-cs]})]) (= scope= flags=2 words=[] bindings=[('CC32', {[ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -f]} {[LIT_CHARS tools/llvm/mygcc32]})]})]) (= scope= flags=2 words=[] bindings=[('CXX32', {[ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -f]} {[LIT_CHARS tools/llvm/myg] [LIT_OTHER "+"] [LIT_OTHER "+"] [LIT_CHARS 32]})]})]) (= scope= flags=2 words=[] bindings=[('CODE_SOURCERY_ROOT', {[VarSub INSTALL_ROOT] [LIT_CHARS /codesourcery]})]) (= scope= flags=2 words=[] bindings=[('CROSS_TARGET_AS', {[DQ [VarSub CODE_SOURCERY_ROOT][LIT_CHARS /arm-2007q3/bin/][VarSub CROSS_TARGET][LIT_CHARS -as]]})]) (= scope= flags=2 words=[] bindings=[('CROSS_TARGET_LD', {[DQ [VarSub CODE_SOURCERY_ROOT][LIT_CHARS /arm-2007q3/bin/][VarSub CROSS_TARGET][LIT_CHARS -ld]]})]) (= scope= flags=2 words=[] bindings=[('SYSROOT', {[DQ [VarSub CODE_SOURCERY_ROOT][LIT_CHARS /arm-2007q3/][VarSub CROSS_TARGET][LIT_CHARS /libc]]})]) (= scope= flags=2 words=[] bindings=[('CS_URL', {[LIT_CHARS http] [LIT_OTHER ":"] [LIT_CHARS //www.codesourcery.com/sgpp/lite/arm/portal/package1787/public/arm-none-linux-gnueabi/arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2]})]) (FunctionDef Banner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "######################################################################"]]}) ) ) (FunctionDef SubBanner [] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ......................................................................]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS ......................................................................]]}) ) ) (FunctionDef Usage [] (Pipeline (Com {[LIT_CHARS egrep]} {[DQ [LIT_CHARS "^#@"]]} {[VarSub 0]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS --bytes] [LIT_OTHER "="] [LIT_CHARS 3-]}) ) ) (FunctionDef DownloadOrCopy [] (If (DBracket {B1 UNARY_FILE_f {[DQ [VarSub 2]]}}) (Com {[LIT_CHARS echo]} {[DQ [VarSub 2][LIT_CHARS " already in place"]]}) (DBracket {B2 BINARY_STRING_TILDE_EQUAL {[VarSub 1]} {[SQ ]}}) (List (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "downloading from "][VarSub 1]]}) (Com {[LIT_CHARS wget]} {[VarSub 1]} {[LIT_CHARS -O]} {[VarSub 2]}) ) (ElseTrue) (List (Com {[LIT_CHARS SubBanner]} {[DQ [LIT_CHARS "copying from "][VarSub 1]]}) (Com {[LIT_CHARS cp]} {[VarSub 1]} {[VarSub 2]}) ) ) ) (FunctionDef Run [] (List (= scope= flags=0 words=[] bindings=[('message', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS SubBanner]} {[DQ [VarSub message]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "COMMMAND: "][VarSub @]]}) (AndOr OP_OR_IF (Com {[DQ [VarSub @]]}) (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "ERROR: "][VarSub @]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef RunWithLog [] (List (= scope= flags=0 words=[] bindings=[('message', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('log', {[VarSub 2]})]) (Com {[LIT_CHARS shift]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS SubBanner]} {[DQ [VarSub message]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "LOGFILE: "][VarSub log]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PWD: "][ComSub (Com {[LIT_CHARS pwd]})]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "COMMMAND: "][VarSub @]]}) (AndOr OP_OR_IF (Com {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[VarSub log]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (List (Com {[LIT_CHARS tail]} {[LIT_CHARS -1000]} {[VarSub log]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS ERROR]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "LOGFILE: "][VarSub log]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "PWD: "][ComSub (Com {[LIT_CHARS pwd]})]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "COMMMAND: "][VarSub @]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef PathSanityCheck [] (List (If (DBracket {B2 BINARY_STRING_NOT_EQUAL {[ComSub (Com {[LIT_CHARS basename]} {[ComSub (Com {[LIT_CHARS pwd]})]})]} {[DQ [LIT_CHARS native_client]]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: run this script from the native_client/ dir"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (If (Pipeline! (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub INSTALL_ROOT]]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: "][VarSub INSTALL_ROOT][LIT_CHARS " can't be created."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) (FunctionDef ClearInstallDir [] (List (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "clearing dirs in "][VarSub INSTALL_ROOT]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub INSTALL_ROOT] [LIT_CHARS /] [LIT_OTHER "*"]}) ) ) (FunctionDef DownloadOrCopyAndInstallSourcery [] (List (= scope= flags=0 words=[] bindings=[('tarball', {[DQ [VarSub TMP][LIT_CHARS /][VarSub CS_URL transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]]})]) (Com {[LIT_CHARS DownloadOrCopy]} {[VarSub CS_URL]} {[VarSub tarball]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub CODE_SOURCERY_ROOT]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub CODE_SOURCERY_ROOT]}) (Com {[LIT_CHARS tar]} {[LIT_CHARS jxf]} {[VarSub tarball]} {[LIT_CHARS -C]} {[VarSub CODE_SOURCERY_ROOT]}) (If (DBracket {B! {B1 UNARY_FILE_d {[DQ [VarSub SYSROOT]]}}}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS "Error: CodeSourcery does not contain libc for "][VarSub CROSS_TARGET][LIT_CHARS ": "]]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub SYSROOT][LIT_CHARS " not found."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (For tool [{[VarSub CROSS_TARGET_AS]}, {[VarSub CROSS_TARGET_LD]}]) (If (DBracket {B! {B1 UNARY_FILE_e {[VarSub tool]}}}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub tool][LIT_CHARS " not found; exiting."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) ) ) ) (FunctionDef ConfigureAndBuildLlvm [] (List (= scope= flags=0 words=[] bindings=[('saved_dir', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (= scope= flags=0 words=[] bindings=[('tmpdir', {[VarSub TMP] [LIT_CHARS /llvm]})]) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Building llvm in "][VarSub tmpdir]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub tmpdir]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub tmpdir]}) (Com {[LIT_CHARS cd]} {[VarSub tmpdir]}) (Com {[LIT_CHARS Run]} {[DQ [LIT_CHARS Untaring]]} {[LIT_CHARS tar]} {[LIT_CHARS jxf]} {[VarSub LLVM_TARBALL]}) (Com {[LIT_CHARS cd]} {[LIT_CHARS llvm]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS Configure]]} {[VarSub TMP] [LIT_CHARS /llvm.configure.log]} {[LIT_CHARS env]} {[LIT_CHARS -i]} {[LIT_VAR_LIKE "PATH="] [LIT_CHARS /usr/bin/] [LIT_OTHER ":"] [LIT_CHARS /bin] =} {[LIT_VAR_LIKE "CC="] [VarSub CC32] =} {[LIT_VAR_LIKE "CXX="] [VarSub CXX32] =} {[LIT_CHARS ./configure]} {[LIT_CHARS --disable-jit]} {[LIT_CHARS --enable-optimized]} {[LIT_CHARS --enable-targets] [LIT_OTHER "="] [LIT_CHARS arm]} {[LIT_CHARS --target] [LIT_OTHER "="] [LIT_CHARS arm-none-linux-gnueabi]} {[LIT_CHARS --prefix] [LIT_OTHER "="] [VarSub LLVM_INSTALL_DIR]} {[LIT_CHARS --with-llvmgccdir] [LIT_OTHER "="] [VarSub LLVMGCC_INSTALL_DIR]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS Make]]} {[VarSub TMP] [LIT_CHARS /llvm.make.log]} {[LIT_CHARS env]} {[LIT_CHARS -i]} {[LIT_VAR_LIKE "PATH="] [LIT_CHARS /usr/bin/] [LIT_OTHER ":"] [LIT_CHARS /bin] =} {[LIT_VAR_LIKE "CC="] [VarSub CC32] =} {[LIT_VAR_LIKE "CXX="] [VarSub CXX32] =} {[LIT_CHARS make]} {[VarSub MAKE_OPTS]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS "Installing LLVM"]]} {[VarSub TMP] [LIT_CHARS /llvm-install.log]} {[LIT_CHARS make]} {[VarSub MAKE_OPTS]} {[LIT_CHARS install]}) (Com {[LIT_CHARS cd]} {[VarSub saved_dir]}) ) ) (FunctionDef ConfigureAndBuildGcc [] (List (= scope= flags=0 words=[] bindings=[('tmpdir', {[VarSub TMP] [LIT_CHARS /llvm-gcc]})]) (= scope= flags=0 words=[] bindings=[('saved_dir', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (Com {[LIT_CHARS Banner]} {[DQ [LIT_CHARS "Building llvmgcc in "][VarSub tmpdir]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[VarSub tmpdir]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub tmpdir]}) (Com {[LIT_CHARS cd]} {[VarSub tmpdir]}) (Com {[LIT_CHARS Run]} {[DQ [LIT_CHARS "Untaring llvm-gcc"]]} {[LIT_CHARS tar]} {[LIT_CHARS jxf]} {[VarSub LLVMGCC_TARBALL]}) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS build]}) (Com {[LIT_CHARS cd]} {[LIT_CHARS build]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS Configure]]} {[VarSub TMP] [LIT_CHARS /llvm-gcc.configure.log]} {[LIT_CHARS env]} {[LIT_CHARS -i]} {[LIT_VAR_LIKE "PATH="] [LIT_CHARS /usr/bin/] [LIT_OTHER ":"] [LIT_CHARS /bin] =} {[LIT_VAR_LIKE "CC="] [VarSub CC32] =} {[LIT_VAR_LIKE "CXX="] [VarSub CXX32] =} {[LIT_VAR_LIKE "CFLAGS="] [DQ [LIT_CHARS -Dinhibit_libc]] =} {[LIT_VAR_LIKE "CXXFLAGS="] [DQ [LIT_CHARS -Dinhibit_libc]] =} {[LIT_CHARS ../llvm-gcc-4.2/configure]} {[LIT_CHARS --prefix] [LIT_OTHER "="] [VarSub LLVMGCC_INSTALL_DIR]} {[LIT_CHARS --enable-llvm] [LIT_OTHER "="] [VarSub LLVM_INSTALL_DIR]} {[LIT_CHARS --program-prefix] [LIT_OTHER "="] [LIT_CHARS llvm-]} {[LIT_CHARS --disable-libmudflap]} {[LIT_CHARS --disable-decimal-float]} {[LIT_CHARS --disable-libssp]} {[LIT_CHARS --disable-libgomp]} {[LIT_CHARS --enable-languages] [LIT_OTHER "="] [LIT_CHARS c] [LIT_COMMA ","] [LIT_CHARS c] [LIT_OTHER "+"] [LIT_OTHER "+"]} {[LIT_CHARS --disable-threads]} {[LIT_CHARS --disable-libstdcxx-pch]} {[LIT_CHARS --disable-shared]} {[LIT_CHARS --target] [LIT_OTHER "="] [VarSub CROSS_TARGET]} {[LIT_CHARS --with-arch] [LIT_OTHER "="] [LIT_CHARS armv6]} {[LIT_CHARS --with-fpu] [LIT_OTHER "="] [LIT_CHARS vfp]} {[LIT_CHARS --with-as] [LIT_OTHER "="] [VarSub CROSS_TARGET_AS]} {[LIT_CHARS --with-ld] [LIT_OTHER "="] [VarSub CROSS_TARGET_LD]} {[LIT_CHARS --with-sysroot] [LIT_OTHER "="] [VarSub SYSROOT]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS Make]]} {[VarSub TMP] [LIT_CHARS /llvm-gcc.make.log]} {[LIT_CHARS env]} {[LIT_CHARS -i]} {[LIT_VAR_LIKE "PATH="] [LIT_CHARS /usr/bin/] [LIT_OTHER ":"] [LIT_CHARS /bin] [LIT_OTHER ":"] [VarSub CODE_SOURCERY_ROOT] [LIT_CHARS /arm-2007q3/bin] =} {[LIT_VAR_LIKE "CC="] [VarSub CC32] =} {[LIT_VAR_LIKE "CXX="] [VarSub CXX32] =} {[LIT_CHARS make]} {[VarSub MAKE_OPTS]}) (Com {[LIT_CHARS RunWithLog]} {[DQ [LIT_CHARS Install]]} {[VarSub TMP] [LIT_CHARS /llvm-gcc.install.log]} {[LIT_CHARS env]} {[LIT_CHARS -i]} {[LIT_VAR_LIKE "PATH="] [LIT_CHARS /usr/bin/] [LIT_OTHER ":"] [LIT_CHARS /bin] [LIT_OTHER ":"] [VarSub CODE_SOURCERY_ROOT] [LIT_CHARS /arm-2007q3/bin] =} {[LIT_CHARS make]} {[LIT_CHARS install]}) (Com {[LIT_CHARS cd]} {[VarSub saved_dir]}) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub #]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: you must specify a mode on the commandline:"]]}) (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS Usage]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) ) ) (= scope= flags=0 words=[] bindings=[('MODE', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) (If (Com {[LIT_OTHER "["]} {[VarSub MODE] [LIT_RBRACE "}"]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS Usage]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub MODE]} {[LIT_OTHER "="]} {[SQ ]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[VarSub TMP]}) (Com {[LIT_CHARS PathSanityCheck]}) (Com {[LIT_CHARS ClearInstallDir]}) (Com {[LIT_CHARS DownloadOrCopyAndInstallSourcery]}) (Com {[LIT_CHARS ConfigureAndBuildLlvm]}) (Com {[LIT_CHARS ConfigureAndBuildGcc]}) ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "ERROR: unknown mode "][VarSub MODE]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS -1]}) )