about summary refs log tree commit diff stats
path: root/test_apps_emulated
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-03-03 22:09:50 -0800
committerKartik K. Agaram <vc@akkartik.com>2021-03-03 22:21:03 -0800
commit71e4f3812982dba2efb471283d310224e8db363e (patch)
treeea111a1acb8b8845dbda39c0e1b4bac1d198143b /test_apps_emulated
parentc6b928be29ac8cdb4e4d6e1eaa20420ff03e5a4c (diff)
downloadmu-71e4f3812982dba2efb471283d310224e8db363e.tar.gz
7842 - new directory organization
Baremetal is now the default build target and therefore has its sources
at the top-level. Baremetal programs build using the phase-2 Mu toolchain
that requires a Linux kernel. This phase-2 codebase which used to be at
the top-level is now under the linux/ directory. Finally, the phase-2 toolchain,
while self-hosting, has a way to bootstrap from a C implementation, which
is now stored in linux/bootstrap. The bootstrap C implementation uses some
literate programming tools that are now in linux/bootstrap/tools.

So the whole thing has gotten inverted. Each directory should build one
artifact and include the main sources (along with standard library). Tools
used for building it are relegated to sub-directories, even though those
tools are often useful in their own right, and have had lots of interesting
programs written using them.

A couple of things have gotten dropped in this process:
  - I had old ways to run on just a Linux kernel, or with a Soso kernel.
    No more.
  - I had some old tooling for running a single test at the cursor. I haven't
    used that lately. Maybe I'll bring it back one day.

The reorg isn't done yet. Still to do:
  - redo documentation everywhere. All the README files, all other markdown,
    particularly vocabulary.md.
  - clean up how-to-run comments at the start of programs everywhere
  - rethink what to do with the html/ directory. Do we even want to keep
    supporting it?

In spite of these shortcomings, all the scripts at the top-level, linux/
and linux/bootstrap are working. The names of the scripts also feel reasonable.
This is a good milestone to take stock at.
Diffstat (limited to 'test_apps_emulated')
-rwxr-xr-xtest_apps_emulated313
1 files changed, 0 insertions, 313 deletions
diff --git a/test_apps_emulated b/test_apps_emulated
deleted file mode 100755
index 23c91997..00000000
--- a/test_apps_emulated
+++ /dev/null
@@ -1,313 +0,0 @@
-#!/bin/sh
-# Build and test all included SubX programs on non-Linux platforms:
-#   translate them into ELF binaries
-#   compare the generated binaries with what's already in git
-#   run/test the ELF binaries in emulated mode
-#
-# Example usage:
-#   test_apps_emulated
-#   test_apps_emulated record  # don't compare with what's in git
-#
-# This script is slow. 20+ times slower than running natively on Linux.
-
-set -e
-cd `dirname $0`
-
-./build
-
-echo "== translating using the bootstrap C++ translator"
-
-# example programs
-
-echo ex1
-./bootstrap_bin translate init.linux apps/ex1.subx  -o apps/ex1
-test "$1" = 'record'  ||  git diff --exit-code apps/ex1
-{
-  ./bootstrap_bin run apps/ex1  ||  ret=$?
-  test $ret -eq 42  # life, the universe and everything
-}
-
-echo ex2
-./bootstrap_bin translate init.linux apps/ex2.subx  -o apps/ex2
-test "$1" = 'record'  ||  git diff --exit-code apps/ex2
-{
-  ./bootstrap_bin run apps/ex2  ||  ret=$?
-  test $ret -eq 7  # 3 + 4
-}
-
-echo ex3
-./bootstrap_bin translate init.linux apps/ex3.subx  -o apps/ex3
-test "$1" = 'record'  ||  git diff --exit-code apps/ex3
-{
-  ./bootstrap_bin run apps/ex3  ||  ret=$?
-  test $ret -eq 55  # 1 + 2 + ... + 10
-}
-
-echo ex4
-./bootstrap_bin translate init.linux apps/ex4.subx  -o apps/ex4
-test "$1" = 'record'  ||  git diff --exit-code apps/ex4
-{
-  echo a | ./bootstrap_bin run apps/ex4 >ex4.out  ||  true
-  test `cat ex4.out` = 'a'
-}
-
-echo ex5
-./bootstrap_bin translate init.linux apps/ex5.subx  -o apps/ex5
-test "$1" = 'record'  ||  git diff --exit-code apps/ex5
-{
-  echo a | ./bootstrap_bin run apps/ex5 >ex5.out  ||  true
-  test `cat ex5.out` = 'a'
-}
-
-echo ex6
-./bootstrap_bin translate init.linux apps/ex6.subx  -o apps/ex6
-test "$1" = 'record'  ||  git diff --exit-code apps/ex6
-{
-  ./bootstrap_bin run apps/ex6 >ex6.out  ||  true
-  test "`cat ex6.out`" = 'Hello, world!'
-}
-
-echo ex7
-./bootstrap_bin translate init.linux apps/ex7.subx  -o apps/ex7
-test "$1" = 'record'  ||  git diff --exit-code apps/ex7
-{
-  ./bootstrap_bin run apps/ex7  ||  ret=$?
-  test $ret -eq 97  # 'a'
-}
-
-echo ex8
-./bootstrap_bin translate init.linux apps/ex8.subx  -o apps/ex8
-test "$1" = 'record'  || git diff --exit-code apps/ex8
-{
-  ./bootstrap_bin run apps/ex8 abcd  ||  ret=$?
-  test $ret -eq 4  # length('abcd')
-}
-
-echo ex9
-./bootstrap_bin translate init.linux apps/ex9.subx  -o apps/ex9
-test "$1" = 'record'  || git diff --exit-code apps/ex9
-{
-  ./bootstrap_bin run apps/ex9 z x  ||  ret=$?
-  test $ret -eq 2  # 'z' - 'x'
-}
-
-echo ex10
-./bootstrap_bin translate init.linux apps/ex10.subx  -o apps/ex10
-test "$1" = 'record'  || git diff --exit-code apps/ex10
-{
-  ./bootstrap_bin run apps/ex10 abc abc  ||  ret=$?
-  test $ret -eq 1  # equal
-  ./bootstrap_bin run apps/ex10 abc abcd  # 0; not equal
-}
-
-echo ex11
-./bootstrap_bin translate init.linux apps/ex11.subx  -o apps/ex11
-test "$1" = 'record'  || git diff --exit-code apps/ex11
-{
-  ./bootstrap_bin run apps/ex11
-  echo
-}
-
-echo ex12
-./bootstrap_bin translate init.linux apps/ex12.subx  -o apps/ex12
-test "$1" = 'record'  || git diff --exit-code apps/ex12
-test $EMULATED  &&  ./bootstrap_bin run apps/ex12  # final byte of mmap'd address is well-nigh guaranteed to be 0
-test $NATIVE  &&  apps/ex12
-
-echo ex13
-./bootstrap_bin translate init.linux apps/ex13.subx  -o apps/ex13
-test "$1" = 'record'  ||  git diff --exit-code apps/ex13
-{
-  ./bootstrap_bin run apps/ex13  ||  ret=$?
-  test $ret -eq 1  # 3 == 3
-}
-
-# Larger apps that use the standard library.
-
-echo factorial
-./bootstrap_bin translate init.linux [01]*.subx apps/factorial.subx  -o apps/factorial
-test "$1" = 'record'  ||  git diff --exit-code apps/factorial
-{
-  ./bootstrap_bin run apps/factorial  ||  ret=$?
-  test $ret -eq 120  # factorial(5)
-  ./bootstrap_bin run apps/factorial test
-  echo
-}
-
-echo crenshaw2-1
-./bootstrap_bin translate init.linux [01]*.subx apps/crenshaw2-1.subx  -o apps/crenshaw2-1
-test "$1" = 'record'  ||  git diff --exit-code apps/crenshaw2-1
-{
-  ./bootstrap_bin run apps/crenshaw2-1 test
-  echo
-}
-
-echo crenshaw2-1b
-./bootstrap_bin translate init.linux [01]*.subx apps/crenshaw2-1b.subx  -o apps/crenshaw2-1b
-test "$1" = 'record'  ||  git diff --exit-code apps/crenshaw2-1b
-{
-  ./bootstrap_bin run apps/crenshaw2-1b test
-  echo
-}
-
-echo random
-./bootstrap_bin translate init.linux [01]*.subx apps/random.subx  -o apps/random
-test "$1" = 'record'  ||  git diff --exit-code apps/random
-# don't run
-
-# Phases of the self-hosted SubX translator.
-
-for phase in hex survey_elf pack assort dquotes tests
-do
-  echo $phase
-  ./bootstrap_bin translate init.linux [01]*.subx apps/subx-params.subx apps/$phase.subx -o apps/$phase
-  test "$1" = 'record'  ||  git diff --exit-code apps/$phase
-  {
-    ./bootstrap_bin run apps/$phase test
-    echo
-  }
-done
-
-# One phase variant for translating SubX to baremetal. (Other phases are reused.)
-
-for phase in survey_baremetal
-do
-  echo $phase
-  ./bootstrap_bin translate init.linux [01]*.subx apps/subx-params.subx apps/$phase.subx -o apps/$phase
-  test "$1" = 'record'  ||  git diff --exit-code apps/$phase
-  {
-    ./bootstrap_bin run apps/$phase test
-    echo
-  }
-done
-
-# Higher-level syntax.
-
-# Certain phases of translation run native beyond this point. We're starting
-# to go beyond functionality of the C++ bootstrap_bin.
-
-echo sigils
-./bootstrap_bin translate init.linux [012]*.subx apps/subx-params.subx apps/sigils.subx  -o apps/sigils
-test "$1" = 'record'  ||  git diff --exit-code apps/sigils
-{
-  ./bootstrap_bin run apps/sigils test
-  echo
-}
-
-echo calls
-cat init.linux [012]*.subx apps/subx-params.subx apps/calls.subx  |  ./bootstrap_bin run apps/sigils  > a.sigils
-./bootstrap_bin translate a.sigils -o apps/calls
-test "$1" = 'record'  ||  git diff --exit-code apps/calls
-{
-  ./bootstrap_bin run apps/calls test
-  echo
-}
-
-echo braces
-cat init.linux [012]*.subx apps/subx-params.subx apps/braces.subx  |  ./bootstrap_bin run apps/calls  |  ./bootstrap_bin run apps/sigils  > a.sigils
-./bootstrap_bin translate a.sigils -o apps/braces
-test "$1" = 'record'  ||  git diff --exit-code apps/braces
-{
-  ./bootstrap_bin run apps/braces test
-  echo
-}
-
-echo mu
-cat init.linux [0-2]*.subx apps/mu.subx  |  ./bootstrap_bin run apps/braces  |  ./bootstrap_bin run apps/calls  |  ./bootstrap_bin run apps/sigils  > a.sigils
-./bootstrap_bin translate a.sigils -o apps/mu
-test "$1" = 'record'  ||  git diff --exit-code apps/mu
-{
-  ./bootstrap_bin run apps/mu test
-  echo
-}
-
-echo "== translating using the self-hosted translator"
-
-# example programs
-
-for n in `seq 1 12`
-do
-  echo ex$n
-  ./translate_subx_emulated init.linux apps/ex$n.subx
-  diff apps/ex$n a.elf
-done
-
-# Larger apps that use the standard library.
-
-for app in factorial crenshaw2-1 crenshaw2-1b
-do
-  echo $app
-  ./translate_subx_emulated init.linux [01]*.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# Phases of the self-hosted SubX translator.
-
-for app in hex survey_elf pack assort dquotes tests
-do
-  echo $app
-  ./translate_subx_emulated init.linux [01]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# One phase variant for translating SubX to baremetal. (Other phases are reused.)
-
-for app in survey_baremetal
-do
-  echo $app
-  ./translate_subx_emulated init.linux [01]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-for app in sigils calls braces
-do
-  echo $app
-  ./translate_subx_emulated init.linux [012]*.subx apps/subx-params.subx apps/$app.subx
-  diff apps/$app a.elf
-done
-
-# Mu translator
-echo mu
-./translate_subx_emulated init.linux [0-2]*.subx apps/mu.subx
-diff apps/mu a.elf
-
-# Mu programs
-
-echo ex1.mu
-./translate_mu_emulated apps/ex1.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 42  # life, the universe and everything
-}
-
-echo ex2.mu
-./translate_mu_emulated apps/ex2.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 7
-}
-
-echo ex3.mu
-./translate_mu_emulated apps/ex3.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 55
-}
-
-echo ex3.2.mu
-./translate_mu_emulated apps/ex3.2.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 55
-}
-
-echo factorial.mu
-./translate_mu_emulated apps/factorial.mu
-{
-  ./bootstrap_bin run a.elf  ||  ret=$?
-  test $ret -eq 120
-  ./bootstrap_bin run a.elf test
-  echo
-}
-
-exit 0