Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve README.md for installation and issue #100

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,16 @@ Raspberry Pi 2/3/4 with GNU/Linux.
is necessary to have Arm/Linux installed in your build environment.
* Install [GNU Toolchain for the A-profile Architecture](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads)
- Select `arm-linux-none-gnueabihf` (AArch32 target with hard float)
```shell
$ sudo apt-get install gcc-arm-linux-gnueabihf

# set QEMU_LD_PREFIX path
$ export QEMU_LD_PREFIX=/usr/arm-linux-gnueabihf
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't rely on manual environment setting. Instead, improve the build system to validate Arm toolchain installation. If the GNU toolchain was downloaded and extracted from Arm website, the environment variable must point to different directories.

Copy link
Author

@marconi1964 marconi1964 Aug 16, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not considering manual environment setting, and cannot set shell environment variable from make (Linux shell limitation, I understand), can only think of make qemu ./amacc tests/hello.c such kind of implementation. Not sure if that is the right approach?

Would consider manual environment setting if build system can search the ARM link library and prompt path info for user to set it manually?

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Someone (at least for me) might install a bunch of GNU toolchains and/or QEMU packages, and directory /usr/arm-linux-gnueabihf would not be always correct per installation. At present, mk/arm.mk manages to check the corresponding files once $PATH is set properly. You can extend the existing checks.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, and mk/arm.mk also checks $QEMU_LD_PREFIX as well. It works and gets the LD path on my system (but not passing to qemu), can look into that in more details. With this PR, trying to fix is different. It is to fix the $QEMU_LD_PREFIX path issue on shell when executing qemu-arm.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, let the build system detect the runtime libraries, and you can send pull requests to consolidate it if you found its shortcomings.

```

* Install QEMU for Arm user emulation
```shell
sudo apt-get install qemu-user
$ sudo apt-get install qemu-user
```

## Running AMaCC
Expand All @@ -80,6 +86,7 @@ OK

Check the messages generated by `make help` to learn more.


Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't change this line. Minimize the necessary changes.

## Benchmark
AMaCC is able to generate machine code really fast and provides 70% of the performance of `gcc -O0`.

Expand All @@ -105,4 +112,4 @@ AMaCC is based on the infrastructure of [c4](https://github.com/rswier/c4).
## Related Materials
* [Curated list of awesome resources on Compilers, Interpreters and Runtimes](http://aalhour.com/awesome-compilers/)
* [Hacker News discussions](https://news.ycombinator.com/item?id=11411124)
* [A Compiler Writing Journey](https://github.com/DoctorWkt/acwj) by Warren Toomey.
* [A Compiler Writing Journey](https://github.com/DoctorWkt/acwj) by Warren Toomey.