1. if ran without choosing a build type (just `make` or
`build_odin.sh`), print out a message about it being a debug build
2. Add `make release-native` alongside `make release_native` to align
with `build_odin.sh release-native`
3. Only run the demo if it is a debug build (just like `build.bat`)
We copy the LLVM shared object when building Odin on Linux. Contrary the comment in `build_odin.sh`,
this is unnecessary, and Odin can be compiled and itself compile things just fine without this step.
This is then packaged up at release and leads to #4019 and #4033. The Linux release builds are built
on Ubuntu and not strictly supported on other Linux distributions. Building from source is preferred.
Got a report on Discord that the current way didn't work for a user,
this change did work and I confirmed with @harold-b (who initially added
this) that it also works for them and is actually a better way.
A few reports of either people not having this clang++ or having it but
it not finding system headers. On top of that, the reason we added this
in the first place was a bug that surfaced on clang-18 which we've since
fixed.
Order will now be clang++ from path, then the llvm bindir clang++, then an
error.
This can all still be overwritten with `CXX=blah make` like before.
This patch makes Odin to compile on Haiku which is a good first step.
Now, all that's needed to do is to figure out how to do futexes, which
I am blaming for the program crashing.
The `build_odin` flags include the option `release-native`.
The current `EXTRAFLAGS` set however don't work for Arm CPUs as they dont support `-march=native`.
Added code to detect CPU and either set the preferred flag for Arm CPUs (ie `-mcpu=native`) or keep the current default.
Information on preferred Arm CPU optimisation flag taken from here: https://community.arm.com/arm-community-blogs/b/tools-software-ides-blog/posts/compiler-flags-across-architectures-march-mtune-and-mcpu
Changes tested on an Apple Silicon M1 CPU (arm64) using HomeBrew installed llvm as follows:
```
Homebrew clang version 14.0.6
Target: arm64-apple-darwin22.5.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm@14/bin
```
Done:
- use ARCH variable properly
- refactor have_which() to use POSIX compliant command - ref
- use command instead of which for the same reason as above.
- run shfmt for consistency.