Since the top-level CMakelists.txt is appending `-fvisibility=hidden` to
the compile options, no public symbols are exported by default. This
forbids users from linking against the shared library.
Using `gcc/clang` attributes [1], it is possible to override the definition
for `WASM_RUNTIME_API_EXTERN` so that only required symbols are
correctly exported.
[1]: https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#Common-Function-Attributes
The build system assumed sizeof (void *) == 8 as a host system
running on a x86_64 architecture, x86 otherwise. However, this
assumption is invalid for most other architectures out there, such as
aarch64 or armv7l.
This PR refers to the CMAKE_HOST_SYSTEM_PROCESSOR variable
which, according to the documentation, typically refers to the output
from "uname -m" for Unix-like systems.