1DOLLY 72TOOLCHAIN system-build3REQUIRES HOST runtime@04REQUIRES HOST http@056# This is the first step. It has no requirements: its exact compiler commands7# and C headers are the externally supplied bootstrap seed. How those headers8# eventually map to the lower-level machine contract is deliberately open.9SOURCE /v0.1.5/include/dolly/toolchain.h 6f9da3258e970e356c31034e1f109a04ac8bd5ab57dc82c19aebf293289fb415 /usr/include/dolly/toolchain.h10SOURCE /v0.1.5/include/dolly/runtime.h   20bd9bfd7cb18340bfd44350b92ff54959ce0e68acb24b95c270308625d0e8cf /usr/include/dolly/runtime.h11SOURCE /v0.1.5/include/dolly/process.h   f6df6b3369b7ebae8d222e28c3d5dfc5697ba85e2db65f98399611740c3fa77a /usr/include/dolly/process.h12SOURCE /v0.1.5/host/http/http.h      818c79d767ebb7ccc0c6afe33d57ef1a57c7b9ccadeaa106511c9c07fedbaee7 /usr/include/dolly/http.h13SOURCE /v0.1.5/host/http/http-abi.h b6c8e68ee13daf0a47a2cdee15282608fb2f1c6c81c46d0815007c683bb7ca7e /usr/include/dolly/http-abi.h14SOURCE /v0.1.5/host/display/display.h   65fca62d15bf911ec8beb11a4f17736c9545dc0b308097eeb8074d741a39d1cc /usr/include/dolly/display.h15SOURCE /v0.1.5/host/display/display-abi.h 9c19f626e9bc9bdb736ea35c87a01889d9b16713841ec8e98791d3bbac7aad6e /usr/include/dolly/display-abi.h16SOURCE /v0.1.5/host/input/input.h   970be8cc5af832bae95cdad982e6aed6ea4c607adf73ba59faf640840f4e624e /usr/include/dolly/input.h17SOURCE /v0.1.5/host/input/input-abi.h 829d846abd9b89918ad8be13b32e2f015f3a750d5344a49e682cc8dbc30cb8f8 /usr/include/dolly/input-abi.h18SOURCE /v0.1.5/host/download/download.h  666bca4fba5da7bf1e998c6486f56dce24cdbc82f1126f9be59067eb03b03bfa /usr/include/dolly/download.h19SOURCE /v0.1.5/host/download/download-abi.h 6252f84477c990f9df2ffc5905c0717a94c9f4e557fccccbbf593ac02198dbc2 /usr/include/dolly/download-abi.h2021SOURCE /v0.1.5/include/dolly/host.h 9737f9b15bd65f5732e16bd942fe593132c7c886c3076dfda89a529a23fee08a /usr/include/dolly/host.h22SOURCE /v0.1.5/include/dolly/host-abi.h 3f2d26426bb088d61a0cc18b6c464697e98c83d8d34ffaf1d063768e619eb766 /usr/include/dolly/host-abi.h23SOURCE /v0.1.5/host/upload/upload.h 8d5b888175631a2f6dba010942f73e53c8514559de13ea336af804aa75f15eff /usr/include/dolly/upload.h24SOURCE /v0.1.5/host/upload/upload-abi.h 6b115efacafcd8406c509c494dac0db8a78949ec201d8d4bf3ed0dd145848a43 /usr/include/dolly/upload-abi.h2526SOURCE /v0.1.5/host/threads/threads.h ec223fbc34ff65f173f4b15e338cb25bf34d8bf01b699418f4598d7fc4626394 /usr/include/dolly/threads.h27SOURCE /v0.1.5/host/threads/threads-abi.h cda45054bc2ec6b021302cc1c840c3d3c18871e735998e9710a743aba4128173 /usr/include/dolly/threads-abi.h28SOURCE /v0.1.5/host/dso/dso.h 57ee5b695140136a4bd62ad4cd302c10ac31d68f6169cf6019405b1234e715f9 /usr/include/dolly/dso.h29SOURCE /v0.1.5/host/dso/dso-abi.h 834574e02efad11017a1e008d5477fbab09a9fb14d0f79aedf0b323a094061ee /usr/include/dolly/dso-abi.h3031EXPORTS HEADER libc      /usr/include32EXPORTS HEADER toolchain /usr/include/dolly/toolchain.h33EXPORTS HEADER runtime   /usr/include/dolly/runtime.h34EXPORTS HEADER process   /usr/include/dolly/process.h35EXPORTS HEADER http      /usr/include/dolly/http.h36EXPORTS HEADER http-abi /usr/include/dolly/http-abi.h37EXPORTS HEADER display   /usr/include/dolly/display.h38EXPORTS HEADER display-abi /usr/include/dolly/display-abi.h39EXPORTS HEADER input     /usr/include/dolly/input.h40EXPORTS HEADER input-abi /usr/include/dolly/input-abi.h41EXPORTS HEADER download  /usr/include/dolly/download.h42EXPORTS HEADER download-abi /usr/include/dolly/download-abi.h4344EXPORTS HEADER host /usr/include/dolly/host.h45EXPORTS HEADER host-abi /usr/include/dolly/host-abi.h46EXPORTS HEADER upload /usr/include/dolly/upload.h47EXPORTS HEADER upload-abi /usr/include/dolly/upload-abi.h48EXPORTS HEADER threads /usr/include/dolly/threads.h49EXPORTS HEADER threads-abi /usr/include/dolly/threads-abi.h50EXPORTS HEADER dso /usr/include/dolly/dso.h51EXPORTS HEADER dso-abi /usr/include/dolly/dso-abi.h5253EXPORTS LIB compiler-rt /usr/lib/libclang_rt.builtins.a5455# These are the complete externally seeded compiler dependencies, not ambient56# additions to every boot. Images retain them by re-exporting these objects.57EXPORTS FOLDER process-sdk       /usr/lib/dolly/process58EXPORTS FOLDER clang-headers     /usr/lib/clang/24/include59EXPORTS FILE   compiler          /usr/libexec/dolly/process-bin/compiler60EXPORTS FILE   kernel-plugin-abi /usr/lib/dolly/dolly-kernel-plugin-0.wasm6162# Every program links the process libc: Emscripten's musl.63SOURCE /v0.1.5/dist/static/default/licenses/musl b870108ec5e7790e9f9919064f1b9421d62d5f9b0e6c230c6adf7ea2da62e97b /usr/share/licenses/musl/COPYRIGHT64SOURCE /v0.1.5/dist/static/default/licenses/emscripten 620a78084fc7ca97c0b5dea9abf891f3ffcadfdbf305276f099c9c4e12fc1d86 /usr/share/licenses/emscripten/LICENSE65FILE /usr/share/licenses/musl/COPYRIGHT66FILE /usr/share/licenses/emscripten/LICENSE6768# cc, c++, ld and ar forward to the seed compiler. Only that compiler exists at69# this point, so RUN starts it for them; every later recipe step uses SLOP.70SOURCE /v0.1.5/dist/static/default/commands/cc.c a282fe564c0387114321839e30a5f66e5ae964d014f206baa7d742f9698d1026 /tmp/process-tools/cc.c71SOURCE /v0.1.5/dist/static/default/commands/cxx.c 0fd83199b0d1063bf5e81b8e762f7105b013e83eb1c2953967e51db34dd94524 /tmp/process-tools/cxx.c72SOURCE /v0.1.5/dist/static/default/commands/ld.c d12309353aeb2a80e3766e87c3e9936ac9fb434114e36287a1acbf3339bf104b /tmp/process-tools/ld.c73SOURCE /v0.1.5/dist/static/default/commands/ar.c f3007ddb171959a587b62d840253144198749acd8dbe0212b2cbd73a55dd83bd /tmp/process-tools/ar.c74RUN /usr/libexec/dolly/process-bin/compiler --dolly-toolchain-mode=c -O1 /tmp/process-tools/cc.c -o /bin/cc75RUN /usr/libexec/dolly/process-bin/compiler --dolly-toolchain-mode=c -O1 /tmp/process-tools/cxx.c -o /bin/c++76RUN /usr/libexec/dolly/process-bin/compiler --dolly-toolchain-mode=c -O1 /tmp/process-tools/ld.c -o /bin/ld77RUN /usr/libexec/dolly/process-bin/compiler --dolly-toolchain-mode=c -O1 /tmp/process-tools/ar.c -o /bin/ar7879EXPORTS ENV CC    cc80EXPORTS ENV AR    ar81EXPORTS ENV PATH  /bin:/usr/bin8283# These programs are linked against the seeded process adapter, so their84# complete input identity is the image build ID rather than this recipe85# alone. They are still validated as dolly-process-0 executables when loaded.86# /bin/dollyfile is the engine running this recipe; the bootstrap compiles it.87EXPORTS TOOL cc88EXPORTS TOOL c++89EXPORTS TOOL ld90EXPORTS TOOL ar91EXPORTS TOOL dollyfile92# Slop runs every SLOP step, so it is built before any shell exists: RUN93# starts the seed compiler alone.94REQUIRES HEADER libc95REQUIRES HEADER runtime9697SOURCE /v0.1.5/dist/static/default/slop.c 307f9ccf561345702323f982764c75776525b13264442c4c960b9003bcb9d309 /tmp/slop/slop.c98# Slop runs the code of the system's test, [, echo and printf itself.99SOURCE /v0.1.5/dist/static/default/commands/test.c 3b21b6855f7495f8e6dca7b46bc8b9ce54f4f589570c30339b1ea5e869471edd /tmp/slop/commands/test.c100SOURCE /v0.1.5/dist/static/default/commands/echo.c b452aa1e2e101d11bc6ac27052d116a8b9e1792cb3ad3406dc23f31f218adb56 /tmp/slop/commands/echo.c101SOURCE /v0.1.5/dist/static/default/commands/printf.c 7188ef27e1c62707313cb627b7d75865a28b1b186bba1180a8913b61c07ed5d7 /tmp/slop/commands/printf.c102RUN /usr/libexec/dolly/process-bin/compiler --dolly-toolchain-mode=c -O1 /tmp/slop/slop.c -o /bin/slop103104EXPORTS TOOL slop105EXPORTS ENV SHELL /bin/slop106REQUIRES TOOL   cc107108# Dolly's own small commands, from src/commands. Each TOOL export names the109# compiled result.110SOURCE /v0.1.5/dist/static/default/commands/mkdir.c 0713179c0b44c92e30d2fd22c87a930ca23f5417b1b3392b3997547648617ad6 /tmp/core-tools/mkdir.c111SOURCE /v0.1.5/dist/static/default/commands/rm.c 2adb95ed560a55f22b91eda217fdbfc4108bd14ebe71b143ef706869d88a1997 /tmp/core-tools/rm.c112SOURCE /v0.1.5/dist/static/default/commands/foreground.c e926c3c87764e44064744fc1d3cba008c46666ed7a06d351824ce67792bcdd76 /tmp/core-tools/foreground.c113SOURCE /v0.1.5/dist/static/default/commands/help.c 2cf1323f34d0130fe518a9da768594c6549a78ce72c53cc04d54d6f2207890f7 /tmp/core-tools/help.c114SOURCE /v0.1.5/dist/static/default/commands/man.c cd13cdece7706188e083a1754187cb19b7627e9cb8d2b294ba21cd2f88ff39d8 /tmp/core-tools/man.c115SOURCE /v0.1.5/dist/static/default/commands/pwd.c 61b2840bfba274f511c3777f5b800bcdfff1947bef13b771c5d9a98eb5d03d3d /tmp/core-tools/pwd.c116SOURCE /v0.1.5/dist/static/default/commands/cat.c 43eabd1e83f6c56cd5b5a7d8e5f9621e214c35e9407dea6bbce34120cb9da723 /tmp/core-tools/cat.c117SOURCE /v0.1.5/dist/static/default/commands/echo.c b452aa1e2e101d11bc6ac27052d116a8b9e1792cb3ad3406dc23f31f218adb56 /tmp/core-tools/echo.c118SOURCE /v0.1.5/dist/static/default/commands/printf.c 7188ef27e1c62707313cb627b7d75865a28b1b186bba1180a8913b61c07ed5d7 /tmp/core-tools/printf.c119SOURCE /v0.1.5/dist/static/default/commands/touch.c 1eb3737abe39d9efe0c66d9e84a7bf6445fa2c07c12b46ad107cd799f2f0747c /tmp/core-tools/touch.c120SOURCE /v0.1.5/dist/static/default/commands/clear.c f2e6915b3fe34393087ec7d04e61d090c0d62e551b86b36e8c3ff6bfff72598d /tmp/core-tools/clear.c121SOURCE /v0.1.5/dist/static/default/commands/ls.c 9a1ad375e4e1688b3ed8a27a3d9e9220be6780a279559e8032e6b15c45611a5e /tmp/core-tools/ls.c122SOURCE /v0.1.5/dist/static/default/commands/stat.c 716e40d4db491a766b738e21c780d4f386641be93daccc4481b4d71b603110c2 /tmp/core-tools/stat.c123SOURCE /v0.1.5/dist/static/default/commands/file.c 3fd871ab9da0233ab738683f3ae45ab8cac3b37df3be92359575448137b4ec37 /tmp/core-tools/file.c124SOURCE /v0.1.5/dist/static/default/commands/test.c 3b21b6855f7495f8e6dca7b46bc8b9ce54f4f589570c30339b1ea5e869471edd /tmp/core-tools/test.c125SOURCE /v0.1.5/dist/static/default/commands/mv.c 326b21d8de8cd70652ec1ae1d42356095ee792c2608dfe362bba7ec05eacc9c3 /tmp/core-tools/mv.c126SOURCE /v0.1.5/dist/static/default/commands/cp.c 0598cc06e13171dc95314d644f7dc0adb0419d78e776745d430225639ca5b123 /tmp/core-tools/cp.c127SOURCE /v0.1.5/dist/static/default/commands/sleep.c 7723af4c2a4feb4a3393482fe3e58beaba36b2b0d83fcc67787b339a87e031e6 /tmp/core-tools/sleep.c128SLOP cc \129  -O2 \130  /tmp/core-tools/foreground.c \131  -o /bin/foreground132SLOP cc \133  -O2 \134  /tmp/core-tools/help.c \135  -o /bin/help136SLOP cc \137  -O2 \138  /tmp/core-tools/man.c \139  -o /bin/man140SLOP cc \141  -O2 \142  /tmp/core-tools/pwd.c \143  -o /bin/pwd144SLOP cc \145  -O2 \146  /tmp/core-tools/cat.c \147  -o /bin/cat148SLOP cc \149  -O2 \150  /tmp/core-tools/echo.c \151  -o /bin/echo152SLOP cc \153  -O2 \154  /tmp/core-tools/printf.c \155  -o /bin/printf156SLOP cc \157  -O2 \158  /tmp/core-tools/touch.c \159  -o /bin/touch160SLOP cc \161  -O2 \162  /tmp/core-tools/clear.c \163  -o /bin/clear164SLOP cc \165  -O2 \166  /tmp/core-tools/ls.c \167  -o /bin/ls168SLOP cc \169  -O2 \170  /tmp/core-tools/stat.c \171  -o /bin/stat172SLOP cc \173  -O2 \174  /tmp/core-tools/file.c \175  -o /bin/file176SLOP cc \177  -O2 \178  /tmp/core-tools/test.c \179  -o /bin/test180SLOP cc \181  -O2 \182  /tmp/core-tools/test.c \183  -o /bin/[184SLOP cc \185  -O2 \186  /tmp/core-tools/mv.c \187  -o /bin/mv188SLOP cc \189  -O2 \190  /tmp/core-tools/cp.c \191  -o /bin/cp192SLOP cc \193  -O2 \194  /tmp/core-tools/mkdir.c \195  -o /bin/mkdir196SLOP cc \197  -O2 \198  /tmp/core-tools/rm.c \199  -o /bin/rm200SLOP cc \201  -O2 \202  /tmp/core-tools/sleep.c \203  -o /bin/sleep204EXPORTS TOOL mkdir205EXPORTS TOOL rm206EXPORTS TOOL foreground207EXPORTS TOOL help208EXPORTS TOOL man209EXPORTS TOOL pwd210EXPORTS TOOL cat211EXPORTS TOOL echo212EXPORTS TOOL printf213EXPORTS TOOL touch214EXPORTS TOOL clear215EXPORTS TOOL ls216EXPORTS TOOL stat217EXPORTS TOOL file218EXPORTS TOOL test219EXPORTS TOOL [220EXPORTS TOOL mv221EXPORTS TOOL cp222EXPORTS TOOL sleep223224# A page is a file under /usr/share/man. One of Dolly's own commands has a225# single text: the page is what NAME --help prints, captured when it is built.226SLOP mkdir \227  -p \228  /usr/share/man/cat1 \229  /usr/share/man/man1230SLOP for name in ar c++ cat cc clear cp dollyfile file foreground help ld ls man mkdir mv pwd rm sleep slop stat touch; do \231  "/bin/$name" --help > "/usr/share/man/cat1/$name.1"; \232  done233SLOP help >> /usr/share/man/cat1/slop.1234# echo prints its operands, --help among them, as POSIX says.235FILE /usr/share/man/cat1/echo.1236    usage: echo [-n] [ARG ...]237    Print the ARGs separated by spaces and a newline; -n as the first ARG omits the newline.238    Backslashes are printed as they are: printf interprets escapes.239# printf takes a FORMAT, so --help is one too.240FILE /usr/share/man/cat1/printf.1241    usage: printf FORMAT [ARG ...]242    Write FORMAT, reused while ARGs remain. FORMAT's escapes are \\ \a \b \f \n \r \t \v,243    \e, \xHH and \NNN in octal; \c ends the output. Each conversion takes the next ARG,244    or an empty one: %s, %c, %b (the ARG's escapes, octal as \0NNN), %d %i %o %u %x %X,245    whose ARG is a C integer constant or a quote and a character, and %e %f %g %a and246    their capitals; flags - + space # 0, a width and a .precision, each may be *. %% is %.247FILE /usr/share/man/cat1/test.1248    usage: test EXPRESSION249           [ EXPRESSION ]250    Exit 0 when EXPRESSION is true, 1 when it is false or missing, 2 when it is malformed.251      -e FILE          FILE exists (-r and -w are the same: there are no permission bits)252      -f FILE          FILE is a regular file253      -d FILE          FILE is a directory254      -x FILE          FILE is a regular file or a directory255      -h FILE, -L FILE FILE is a symbolic link256      -s FILE          FILE is not empty257      -b, -c, -p, -S FILE  FILE is a block or character device, a FIFO, a socket258      -g, -u, -k FILE  the set-group-ID, set-user-ID, sticky bit of the fixed modes stat reports259      -t FD            descriptor FD is a terminal260      -n STRING        STRING is not empty (so is a lone STRING)261      -z STRING        STRING is empty262      A = B, A != B    the strings are equal (== is the same), differ263      A < B, A > B     A sorts before, after B264      M -eq N          the integers are equal; also -ne -lt -le -gt -ge265      F -nt G, F -ot G F was modified after, before G (a missing file is older)266      F -ef G          F and G are the same file267      ! E, E -a E, E -o E, ( E )   not, and, or, grouping; up to four arguments268      count, as POSIX says, so test "$x" = -a compares strings269    example: test -d /tmp && [ "$HOME" != / ]270SLOP cp /usr/share/man/cat1/test.1 '/usr/share/man/cat1/[.1'271272SLOP rm \273  -rf \274  /tmp/core-tools275REQUIRES TOOL   rm276277# Dolly's deliberately small ustar extractor.278SOURCE /v0.1.5/dist/static/default/commands/tar.c 9e01d3df0905b893afe02232c713d5feafbead706392f7fc62967bdffad1779f /tmp/bootstrap/tar.c279SLOP cc \280  /tmp/bootstrap/tar.c \281  -o /bin/tar282283EXPORTS TOOL tar284285SLOP tar --help > /usr/share/man/cat1/tar.1286287SLOP rm \288  -rf \289  /tmp/bootstrap290REQUIRES TOOL   mkdir291REQUIRES TOOL   tar292293SOURCE /v0.1.5/dist/static/default/make-4.4.1.tar                     5dce03b47a90e26891e789b3361481c65765e12bd8dc79ec0cf949336ef94616 /tmp/make-4.4.1.tar294SLOP tar \295  -xf /tmp/make-4.4.1.tar \296  -C /297SLOP mkdir \298  -p \299  /usr/bin300# The sources of upstream's build (dolly-sources.txt) in one cc.301SLOP CWD /usr/src/make cc \302  -O1 \303  -std=gnu11 \304  -DHAVE_CONFIG_H \305  -I /usr/src/make \306  -I /usr/src/make/src \307  -I /usr/src/make/lib \308  '-DLIBDIR="/usr/lib"' \309  '-DLOCALEDIR="/usr/share/locale"' \310  $(cat dolly-sources.txt) \311  -o /usr/bin/make312313EXPORTS TOOL make314315SLOP make \316  --version317SLOP make --help > /usr/share/man/cat1/make.1318# FOLDER keeps the members a directory has at this row: the last page is written.319FOLDER /usr/share/man320321FILE /usr/share/licenses/make/COPYING322323SLOP rm \324  -rf \325  /tmp/make-4.4.1.tar \326  /usr/src/make327# libc++, libc++abi and libunwind are Emscripten's copy, compiled here from its328# pinned source with the flags of its own build (tools/system_libs.py,329# -ww-wasmexcept; its -mt-wasmexcept build is the same bytes) for the headers330# installed beside them. Every C++ link takes them, including explicit331# -lc++/-lc++abi; the links above this point are C and need none.332REQUIRES TOOL   c++333REQUIRES TOOL   cc334REQUIRES TOOL   ar335REQUIRES TOOL   make336337SOURCE /v0.1.5/dist/static/default/libcxx-headers.tar 5e558f6f862d4a3fb22cc3c5b62c5e2652bf699f176fa349eeecb85d1a946735 /tmp/cpp/libcxx-headers.tar338SOURCE /v0.1.5/dist/static/default/libcxx.tar         2dff834a9e5e907476841437518cfdd568563e922e7a22f3261da114e1b1a1e8 /tmp/cpp/libcxx.tar339SOURCE /v0.1.5/dist/static/default/licenses/libcxx    539dd7aed86e8a4f12cbdd0e6c50c189c7d74847e4fecc64ce2c6ee3a01da38b /usr/share/licenses/libcxx/LICENSE340SOURCE /v0.1.5/dist/static/default/licenses/libcxxabi e2b35be49f7284a45b7baca8fc7b3ab7440e7902392b2528a457816b5bb2a15c /usr/share/licenses/libcxxabi/LICENSE341342SLOP tar \343  -xf /tmp/cpp/libcxx-headers.tar \344  -C /345SLOP tar \346  -xf /tmp/cpp/libcxx.tar \347  -C /348349FILE /tmp/cpp/Makefile350    .RECIPEPREFIX := >351    S := /tmp/cpp/system/lib352    L := /usr/lib/dolly/process353    # Static code with hidden symbols, as for a program. The directory is the one354    # Emscripten's build names, so the code and data are its archives' bytes.355    FLAGS := -Oz -g -fno-pic -fvisibility=hidden -ffile-prefix-map=/tmp/cpp=/emsdk/emscripten -DNDEBUG356    COMPILE := c++ $(FLAGS) -std=c++23 -D_LIBCPP_BUILDING_LIBRARY -I$S/libcxx/src -I/tmp/cpp/system/include357    LIBCXX := $(filter-out %/int128_builtins.cpp,$(wildcard $S/libcxx/src/*.cpp $S/libcxx/src/filesystem/*.cpp \358      $S/libcxx/src/ryu/*.cpp)) $(addprefix $S/libcxx/src/experimental/,chrono_exception.cpp keep.cpp log_hardening_failure.cpp)359    LIBCXXABI := $(addprefix $S/libcxxabi/src/,abort_message.cpp cxa_aux_runtime.cpp cxa_default_handlers.cpp \360      cxa_demangle.cpp cxa_guard.cpp cxa_handlers.cpp cxa_virtual.cpp cxa_thread_atexit.cpp fallback_malloc.cpp \361      stdlib_new_delete.cpp stdlib_exception.cpp stdlib_stdexcept.cpp stdlib_typeinfo.cpp private_typeinfo.cpp \362      cxa_exception_js_utils.cpp cxa_exception_storage.cpp cxa_exception.cpp cxa_personality.cpp)363    objects = $(sort $(addprefix /tmp/cpp/$1/,$(addsuffix .o,$(basename $(notdir $2)))))364    all: $L/libc++-ww-wasmexcept.a $L/libc++abi-ww-wasmexcept.a $L/libunwind-ww-wasmexcept.a365    $L/libc++-ww-wasmexcept.a: $(call objects,libc++,$(LIBCXX))366    $L/libc++abi-ww-wasmexcept.a: $(call objects,libc++abi,$(LIBCXXABI))367    $L/libunwind-ww-wasmexcept.a: /tmp/cpp/libunwind/Unwind-wasm.o368    $L/%.a:369    >ar rc $@ $^370    define compile371    /tmp/cpp/$1/$(basename $(notdir $2)).o: $2372    >$3 -c $$< -o $$@373    endef374    $(foreach source,$(LIBCXX),$(eval $(call compile,libc++,$(source),$(COMPILE) -DLIBCXX_BUILDING_LIBCXXABI=1 \375      -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -DLIBC_NAMESPACE=__llvm_libc -I$S/llvm-libc)))376    $(foreach source,$(LIBCXXABI),$(eval $(call compile,libc++abi,$(source),$(COMPILE) -D_LIBCXXABI_USE_FUTEX \377      -D_LIBCXXABI_BUILDING_LIBRARY -DLIBCXXABI_NON_DEMANGLING_TERMINATE -I$S/libunwind/include)))378    $(eval $(call compile,libunwind,$S/libunwind/src/Unwind-wasm.c,cc $(FLAGS) -D_LIBUNWIND_HIDE_SYMBOLS \379      -I$S/libunwind/include))380SLOP mkdir /tmp/cpp/libc++ /tmp/cpp/libc++abi /tmp/cpp/libunwind381SLOP make -C /tmp/cpp -j2382383EXPORTS HEADER cpp    /usr/include/c++/v1384EXPORTS LIB    c++    /usr/lib/dolly/process/libc++-ww-wasmexcept.a385EXPORTS LIB    c++abi /usr/lib/dolly/process/libc++abi-ww-wasmexcept.a386EXPORTS ENV    CXX    c++387388FILE /usr/share/licenses/libcxx/LICENSE389FILE /usr/share/licenses/libcxxabi/LICENSE390391SLOP rm \392  -rf \393  /tmp/cpp394