Unfortunately InForm code calls this function directly via
`DECLARE LIBRARY`. For the moment we're adding it back in to keep those
programs functioning, in the future it may be removed.
I broke this by accident in 5031de2, likely by misreading the $0. What
the line was intended to do was change to the directory the script is
located in when the script starts, this allows the script to be started
from any location.
Typically this isn't necessary functionality, but for Mac OS it's
important because if you double-click the script (the typical way to run
it) it is started from the user's home directory. Due to this I also
updated the Mac OS distribution test to run the script in this way so
that it's closer to how a user will run it.
Fixes: #218
This file was checked-in with Windows line endings, but it should have
Unix/Linux ones. Windows will automatically convert it into Windows line
endings when checking the file out, so it's not a problem in that case.
This adds logic for testing the new license generation functionality.
This is done by having the expected license for a variety of
tests that use different dependencies, and then comparing that against
the license QB64-PE actually produces when compiling these test files.
Note that because the actual used dependencies changes depending upon
the OS, we have separate expected licenses for each of Linux, Windows,
and Mac OS. This required some build changes to accomidate, in addition
to the testing logic changes themselves.
This gives QB64-PE the ability to automatically generate a text file
comprising all of the licenses that apply to your QB64 program. This
file can then be distributed with your program to meet the requirements
of those licenses, and also examined to understand what licenses apply
to your program.
The generation is controlled via a configuration flag, settable either
via the `Run` dialog, or via a new `-f` setting on the comamnd line.
Fixes: #145
There's some logic for handling `Bit * n` types that doesn't properly
handle NoPrefix. There's both a faulty error check which only works for
the `_` version (It was using `OR` so it always failed), and then also
the code that pulls out the number only works if the `_` is present.
Both of those are fixed in this commit.
The original issue comes from b87dde8. Fellippe was fixing using
NoPrefix types with Declare Library, which uses some of the same logic
as Static arrays. Unfortunately, his change broke the `String *n` syntax
and `Bit * n` syntax because he stopped using LEFT$() to check only the
prefix of the type. Cory fixed the issue over in QB64Official/qb64#35
by reverting the code to use LEFT$() again and I pulled some of that
logic in here.
Note that I've modified his solution a bit. During testing of that fix I
noticed that `_Unsigned Integer64` no longer worked, because is because
it aliases with `_Unsigned Integer` and the shorter type gets checked
first. This may have been what Fellippe was trying to fix (since
removing the LEFT$() avoids this issue) but it's hard to say.
I addressed that issue by only applying $LEFT() to the two types that
are allowed to have text after them (`Bit` and `String`). The rest of
the types continue to use the direct string comparison that requires an
exact match. Additionally I reorganized the checks a bit to make them
easier to read and also easier to confirm all combinations are checked.