This adds compiler settings for each of the settings in the
'Compiler Settings' IDE dialog. This makes it easy to supply the
settings per compile without needing to use the IDE to change them (or
edit the `config.ini`).
Fixes: #162
This adds a fake sound card to the GitHub build agents. The existance of
a fake sound card allows us to run tests using the audio backend on the
build agents without getting errors.
This adds MIDI support to the language as a new unstable feature. There
are two new metacommands that come with this:
$Unstable: Midi
$MidiSoundFont: [Default|"filename"]
The $Unstable command is required to be able to use any of the other
commands, and just signifies that this is not a full part of the
language yet and may change in breaking ways before the API is
finalized.
The $MidiSoundFont command enables MIDI support in the compiled program,
and also specifies what sound font to use to play MIDI files. "Default"
will make use of the soundfont placed at
'./internal/support/default_soundfont.sf2', and otherwise a filename can
be specified to use any soundfont wanted.
In either case, the selected sound font is compiled into the executable
and then loaded at runtime.
Fixes: #115
This adds support for tests of the error output of QB64-PE. The tests
are in the form of a `.bas` file that does not compile, and a `.err`
file containing the expected output of QB64-PE when producing an error
for that file.
Additionally the `compile_tests` now support multiple tests in a single
folder, via using multiple `.bas` files with different names.
DPI Awareness allows a program to tell Windows that it will handle
properly scaling itself for the screen's DPI. Thus when a program is DPI
Aware, it will always see the actual screen size. When a program is not
DPI Aware, then Windows will scale the program according to the
selection by the user, and the reported screen size will match the
scaled size rather than the actual screen size.
Commit 189cdb8e added logic to enable DPI Awareness on Windows, but it
was hidden behind a `WINVER` check. This meant it was not actually in
use because at the time QB64 did not set a `WINVER` high enough to
actually enable that code. As such all Windows versions of QB64
including v2.0.2 were not DPI Aware.
Much later-on, Commit 869e361e declared a `_WIN32_WINNT` of `0x0600`,
which seems to have also declared `WINVER` as the same and thus enabled
the DPI Awareness logic. As a consequence, QB64-PE programs no longer
get scaled even though they don't have a way to acquire the current DPI
to do proper scaling themselves.
Since the behavior change was unintentional and proper language support
is not there, we're considering the addition of DPI Awareness a bug. It
will be added back some time later with more language support to allow
it to be properly used.
Removed the DEL command which was taking 5-7 minutes to execute and appeared to lock up and freeze the process.
Added option for users on 64-bit OSes to be able to choose if they want to download the 64-bit or the 32-bit compiler.
Splitting up the build process into separate workflows makes it easier
to differentiate the builds for each, since each Workflow will get a
different name and history of builds. The actual build process remains
the same.
We started defining `_WIN32_WINNT` a little while ago to express that we
require Windows Vista or above for support. This enables us to access
some Windows Vista-only APIs. The fact that `WINVER` also needs to be
defined was missed, and it seems that defining one means the other no
longer gets defined automatically as it did before. Thus we're simplying
now also defining `WINVER` the same as `_WIN32_WINNT`.
This fixes High-DPI awareness and a few other things that were gated
behind WINVER checks.
This formats the licensing information as a markdown file, and
reorganizes it to be a bit easier to use. It additionally adds all the
licenses for the new audio backend, and adds a couple missing ones as
well.
This change allows selecting the audio backend to use in your compiler
programs. The selection can be made via the 'Compiler Settings' dialog
in the IDE (renamed from the 'C++ Compiler Settings' dialog).
The new miniaudio backend is the default, a checkbox for "Use old audio
backend" exists in the IDE for switching back to the old backend (in the
event someone runs into compatibility issues or etc.). Eventually we'll
drop the old one.
The -no-pie flag tells the compiler not to make a Position Independent
Executable. We don't really care which it chooses to make, but some file
explorers consider PIE executables to be shared objects and won't allow
you to run them directly. To avoid this, we're compiling with -no-pie.
Fixes: #142