Use a better fix for C++ static declaration issue (see GH-63). Avoid
using both a (forward) declaration and a definition for static symbols
which is not allowed in C++ and is not clean in C either. The concrete
changes are:
- Add a `#if !defined(DUK_SINGLE_FILE)` wrapper for DUK_INTERNAL symbols.
These symbols turn into static symbols in a single file build in which
case we don't want to declare them. They do need to be declared for a
multiple file build.
- Change `combine_src.py` so that a few files are cherry picked out of the
default alphabetical order, so that all static definitions appear before
their use.
- Add a test `duk-g++` target to the repo Makefile, so that it's easy to
quickly check that C++ compilation still works.
Move a few handpicked files from the alphabetical file list to the top of
the list to ensure that static data definitions appear before their first
use in a single file build.
This is necessary because there are no forward declarations for static data
symbols anymore (which was causing C++ issues). See GH-63.
When doing a single file build, drop DUK_INTERNAL_DECL declarations which
would otherwise be mapped to "static". This avoids the problem with C++
where a static data symbol is both forward declared and defined.
With this change static definitions must appear before their first use in
the single file build. This requires a change in combine_src.py which is
done in a separate commit.
Add first draft of a SPDX 1.2 license into the distributable, with the
filename "license.spdx". This requires python-rdflib so add that to the
project dependencies in README.md.
Add 'set -e' to make_dist.sh to better detect errors that might otherwise
silently creep by and break the build.