{"id":13408445,"url":"https://github.com/godunko/adawebpack","last_synced_at":"2025-03-14T13:31:16.470Z","repository":{"id":40445380,"uuid":"232895624","full_name":"godunko/adawebpack","owner":"godunko","description":"Ada WASM Runtime and Bindings for Web API","archived":false,"fork":false,"pushed_at":"2024-06-27T07:00:39.000Z","size":470,"stargazers_count":48,"open_issues_count":2,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-07-31T20:30:43.783Z","etag":null,"topics":["ada","ada-runtime","ada-wasm-runtime","gnat-llvm","wasm"],"latest_commit_sha":null,"homepage":"","language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/godunko.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.BSD3","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-09T20:10:48.000Z","updated_at":"2024-06-27T17:32:20.000Z","dependencies_parsed_at":"2024-05-02T20:58:18.330Z","dependency_job_id":"b1ebb7a3-e3ea-4f2d-84a1-022471f90a0b","html_url":"https://github.com/godunko/adawebpack","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godunko%2Fadawebpack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godunko%2Fadawebpack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godunko%2Fadawebpack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/godunko%2Fadawebpack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/godunko","download_url":"https://codeload.github.com/godunko/adawebpack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243584218,"owners_count":20314717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ada","ada-runtime","ada-wasm-runtime","gnat-llvm","wasm"],"created_at":"2024-07-30T20:00:52.905Z","updated_at":"2025-03-14T13:31:15.976Z","avatar_url":"https://github.com/godunko.png","language":"Ada","funding_links":[],"categories":["Runtimes"],"sub_categories":["Continuous Integration"],"readme":"[![Build binaries](https://github.com/godunko/adawebpack/actions/workflows/build.yml/badge.svg)](https://github.com/godunko/adawebpack/actions/workflows/build.yml)\n\n# AdaWebPack\nAdaWebPack includes GNAT-LLVM compiler for WebAssembly target, GNAT Run Time Library and AdaWebPack bindings for Web API.\n\n## How to install\n\nPrebuild packages are available on [Release page](https://github.com/godunko/adawebpack/releases).\n\nYou will also need `wasm-ld`, the Web asssembly linker. You will find this:\n\n * on Fedora Linux through the `lld` package;\n * on Ubuntu through the `lld-16` package;\n * on other Linux systems look for a similarly-named package.\n\n## How to build\n\n * Setup GNAT using [Alire](https://alire.ada.dev/).\n\n * Clone [GNAT-LLVM](https://github.com/AdaCore/gnat-llvm). Latest known good revision of GNAT-LLVM compatible with GNAT FSF is `66e36d929524972353600db5d604d0189cf0308f`.\n   ```\n   git clone https://github.com/AdaCore/gnat-llvm\n   git -C gnat-llvm checkout 66e36d929524972353600db5d604d0189cf0308f\n   ```\n\n * Clone [bb-runtimes](https://github.com/Fabien-Chouteau/bb-runtimes). Use `gnat-fsf-14` branch.\n   ```\n   git clone -b gnat-fsf-14 https://github.com/Fabien-Chouteau/bb-runtimes gnat-llvm/llvm-interface/bb-runtimes\n   ```\n\n * Clone [GCC](https://github.com/gcc-mirror/gcc) sources. Use, for instance, `releases/gcc-14.1.0` commit.\n   ```\n   git clone --single-branch --branch=releases/gcc-14 --shallow-since=01-04-2024 https://github.com/gcc-mirror/gcc gnat-llvm/llvm-interface/gcc\n   git -C gnat-llvm/llvm-interface/gcc checkout releases/gcc-14.1.0\n   ```\n\n * Setup GNAT-LLVM development environment, see details in\n   [GNAT-LLVM README](https://github.com/AdaCore/gnat-llvm). Note, you need to use\n   externally build LLVM with enabled 'lld' project and 'WebAssembly' target,\n   so, if you build it your-self, `cmake` command line should contain among other switches:\n\n   ```\n   cmake ... -DLLVM_ENABLE_PROJECTS='...;clang;lld' -DLLVM_TARGETS_TO_BUILD=\"...;WebAssembly\"\n   ```\n\n   On Ubuntu it is possible to install prebuild LLVM/CLang packages (use LLVM/CLang 16). However,\n   alternatives need to be updated using the provided script:\n\n   ```\n   sudo utilities/update-alternatives-clang.sh 16 100\n   ```\n\n   Or install a [LLVM 16 binary release](https://github.com/llvm/llvm-project/releases) (`llvm-16`, `lld-16` and `clang-16` are required).\n\n * Checkout AdaWebPack repository into `gnat-llvm/llvm-interface` as\n   `adawebpack_src` and create link for Makefile.target.\n\n   ```\n   cd gnat-llvm/llvm-interface\n   git clone https://github.com/godunko/adawebpack.git adawebpack_src\n   ln -s adawebpack_src/source/rtl/Makefile.target\n   cd -\n   ```\n\n * Create a link to RTS source code\n   ```\n   cd gnat-llvm/llvm-interface\n   ln -s bb-runtimes/gnat_rts_sources/include/rts-sources/\n   cd -\n   ```\n\n * Create a link to GNAT source code (or copy it)\n   ```\n   cd gnat-llvm/llvm-interface\n   ln -s gcc/gcc/ada gnat_src\n   cd -\n   ```\n\n * Apply patch to GNAT-LLVM repository\n   ```\n   cd gnat-llvm/llvm-interface\n   patch -p1 \u003c adawebpack_src/patches/gnat-llvm.patch\n   patch -p1 \u003c adawebpack_src/patches/llvm_wrapper2.patch\n   cd -\n   ```\n\n * Use `make wasm` to build compiler and Run Time Library\n   ```\n   cd gnat-llvm/llvm-interface\n   make wasm\n   cd -\n   ```\n\n * When `make` finishes, you will find toolchain in `gnat-llvm/llvm-interface/bin`.\n   ```\n   cd gnat-llvm/llvm-interface\n   export PATH=$PWD/bin:$PATH\n   cd -\n   ```\n\n * Now you can build examples:\n   ```\n   cd gnat-llvm/llvm-interface/adawebpack_src\n   make build_examples\n   cd -\n   ```\n   You will most likely need to run the examples through an HTTP server;\n   otherwise, the browser will report a security error and/or refuse to load the page.\n   An easy way to obtain an HTTP server is by via Python 3 with `python3 -m http.server`.\n\n## Usage with Docker\n\nIt could be handy to use docker.\n* Find latest build on our [Fedora COPR](https://copr.fedorainfracloud.org/coprs/reznik/adawebpack/) repository.\n* Build a container image (make sure to replace `curl` argument with latest RPM URL)\n  ```\n  docker build --tag wgprbuild - \u003c\u003cEOF\n  FROM registry.fedoraproject.org/fedora-minimal:40\n  RUN microdnf --assumeyes install \\\n    gprbuild \\\n    clang16 \\\n    llvm16 \\\n    lld \\\n    libgnat \\\n    ca-certificates \u0026\u0026 \\\n  curl -O \\\n  https://download.copr.fedorainfracloud.org/results/reznik/adawebpack/fedora-40-x86_64/07674186-adawebpack/adawebpack-24.0.0-git.fc40.x86_64.rpm \u0026\u0026 \\\n  rpm -i adawebpack*.rpm \u0026\u0026 \\\n  rm -f adawebpack*.rpm \u0026\u0026 \\\n  /usr/share/adawebpack/update-alternatives-clang.sh 16 99 \u0026\u0026 \\\n  microdnf clean all\n  EOF\n  ```\n* Write a `bash` wrapper script to replace `gprbuild` like this:\n  ```bash\n  #!/bin/bash\n  exec docker run --rm --tmpfs /tmp/ --user $UID --volume $HOME:$HOME --workdir $PWD wgprbuild gprbuild \"$@\"\n  ```\n\n\n## Unsupported features\n\n - nested subprograms are not supported\n\n - exceptions support is limited to local exceptions propagation and last\n   chance handler\n\n - tasks and protected objects are not supported\n\n## License\n\nWeb API bindings is licensed under BSD3 license.\n\nGNAT Runtime Library is licensed under GPL3 license with GCC Runtime Library Exception.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodunko%2Fadawebpack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgodunko%2Fadawebpack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgodunko%2Fadawebpack/lists"}