1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-02 05:00:38 +00:00
Commit graph

63 commits

Author SHA1 Message Date
Samuel Gomes a3891cc611 Filter-out GLEW_OBJS for DEP_CONSOLE_ONLY apps 2024-01-30 06:32:53 +05:30
a740g 68413c0fc3 Avoid unusual long compile time for glew.c using -O3 on macOS 2024-01-22 11:10:23 +05:30
Samuel Gomes 5f91458ef9 Use FreeType flat-directory compilation 2024-01-08 09:56:41 +05:30
Samuel Gomes 91129c60ed Replace FreeTypeAmalgam with FreeType v2.13.2 2024-01-07 06:02:16 +05:30
Roland Heyder acfcd4f50a Fixing Makefile
as suggested by Matt...
2023-12-13 22:56:56 +01:00
Roland Heyder 38eed18fc4 Implement file embedding
$EMBED:'filename','handle' and _EMBEDDED$("handle")
2023-12-13 20:49:53 +01:00
Matthew Kilgore 9c0b4d599c Build the bootstrap QB64-PE with DEP_CONSOLE=y
The bootstrap build settings in the Makefile were missing DEP_CONSOLE,
which meant that the console output from the bootstrap qb64pe did not
work.
2023-12-08 21:48:07 -05:00
a740g d0b89a3d1a Add required miniaudio libs 2023-10-09 14:03:30 +05:30
Samuel Gomes 79c531f2bb Reorg. game controller and update libstem_gamepad 2023-09-26 02:01:35 +05:30
Samuel Gomes efbd16b19c Remove legacy openal headers from libqb.cpp 2023-09-22 08:41:45 +05:30
Samuel Gomes 8b60585420 Remove legacy openal stuff from makefile 2023-09-22 07:56:30 +05:30
Samuel Gomes 4f004c117b
Merge branch 'main' into audio-enhancements 2023-09-21 01:13:54 +05:30
Samuel Gomes c8367869e8 Add QOA license info 2023-09-20 23:21:39 +05:30
Samuel Gomes 37c17c78f6 Remove GPL xbr.hpp and update all license info 2023-09-19 02:07:57 +05:30
Samuel Gomes fef7065c5f Bump minimum C++ version to 14 2023-07-04 03:38:24 +05:30
Samuel Gomes 1c505561d6 Implement pending changes in #330 2023-04-09 03:37:44 +05:30
Samuel Gomes d974c0b9a8 Tidy up font code 2023-04-04 17:51:17 +05:30
Samuel Gomes 889408acb9 Remove DEPENDENCY_ZLIB related stuff from Makefile 2023-03-19 08:55:02 +05:30
Samuel Gomes 5c3fe449e6 Update miniz license 2023-03-19 03:05:29 +05:30
Samuel Gomes 6dd651f7cd Replace MinGW intrinsic zlib with miniz 2023-03-19 02:28:05 +05:30
Samuel Gomes 097395959c Update Makefile to correctly set BITS when on WoA64 2023-03-04 11:24:44 +05:30
Samuel Gomes 66ad42e573 Add HivelyTracker license. This is going to fail some tests. 2023-01-06 17:39:47 +05:30
Matthew Kilgore 6c288ecb6f Don't compile libqb.cpp as Objective-C on Mac OS
With the recent changes to libqb.cpp to pull out some of the GLUT logic,
the only actual Objective-C in libqb.cpp was pulled out. That being the
case, it's no longer necessary to have libqb.mm for compiling libqb.cpp,
so we're removing it to simplify the compliation logic a bit.
2022-11-29 20:04:54 -05:00
Matthew Kilgore d678be717c Move GLUT initialization logic into separate .cpp file 2022-11-29 20:04:53 -05:00
Matthew Kilgore ac999d8f4b Add DEP_HTTP to the dependency list for QB64-PE
Fairly straight forward, QB64-PE's dependency list has to be built into
the Makefile for when we're building straight from ./internal/source.
Recently it gained a HTTP dependency, so that now needs to be included.

Fixes: #255
2022-11-26 21:25:33 -05:00
Matthew Kilgore 45d52271da Add libqb_http API for HTTP connections
This adds the libqb_http API, which is designed to support HTTP and
HTTPS usage from QB64-PE source.

The design consists of a single thread which services all the HTTP(s)
connections. There are then various libqb_http APIs exposed that allow
interacting with this thread to create a new connection, query
connection status, read data, or close the connection.

Internally the thread makes use of the curl_multi interface to allow a
single thread to service multiple HTTP(s) connections in parallel. This
means you can _OPENCLIENT() multiple HTTP connection in a row and all of
them will be serviced at the same time in whatever order data is
available.

HTTP is optional and selected via a Makefile setting. A stub is swapped
in if HTTP support is not used, which avoids need to add another build
flag to libqb.cpp.
2022-11-19 15:13:26 -05:00
Samuel Gomes 6b4ad03d1f Remove -lcomdlg32 -lole32 from line Makefile:363 2022-10-25 08:36:06 +05:30
Samuel Gomes 8fa58443b4 Add -lcomdlg32 -lole32 to CXXLIBS always for Windows 2022-10-25 08:12:07 +05:30
Samuel Gomes 56c7936fb4 Address issues mentioned in #216 2022-10-25 04:24:01 +05:30
Samuel Gomes 98e40c173d Fix common dialogs build.mk bug 2022-10-23 22:44:39 +05:30
Samuel Gomes 93e58baa1d Common dialogs support 2022-10-23 12:57:02 +05:30
Matthew Kilgore 908585aa2e Generate .license.txt file with license information
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
2022-10-01 14:46:00 -04:00
Samuel Gomes fa0ba3e5d8
Merge branch 'main' into main 2022-09-18 14:49:58 +05:30
Matthew Kilgore a4d910207e Link winmm when using _DEVICES on Windows
The _DEVICES command pulls in some stuff that depends on `winmm`.
Normally this isn't a problem, but if `$CONSOLE:ONLY` is used then this
dependency can actually get removed from the `CXXLIBS` and cause linking
to fail.

It's easy enough to fix this by always adding `-lwinmm` if `_DEVICES` is
in use.

Fixes: #178
2022-09-17 03:06:24 -04:00
Samuel Gomes a100a434e4 Fix #175 2022-09-17 08:53:32 +05:30
Matthew Kilgore cebcb11646 Fix compiling source files with single quotes in name
Using single quotes in a file name wasn't working because the Makefile
was using single quotes itself to quote the filename when providing it
to the compiler. The Makefile was switched to use double quotes instead,
which work just as well but are allowed to contain single quotes inside
of them.

Since double quotes are a legal character to have in a file name on
Linux and Mac OS, I added extra logic to start escaping double quote
characters.

I added a test to verify that we can compile source files with single
quotes in the name. I could not add a test for double quotes since such
files cannot exist on Windows and thsu cannot easily be added to the
repository.
2022-09-09 09:59:43 -04:00
Matthew Kilgore 2b3403745c Add initial MIDI language support
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
2022-09-04 23:35:14 -04:00
Matthew Kilgore 41cc1e6569 Integrate the miniaudio backend into the build
This integrates the miniaudio backend, using a new `DEP_AUDIO_MINIAUDIO`
flag to enable it. This will allow consumers to choose which backend to
use.
2022-08-27 14:27:55 -04:00
Matthew Kilgore 20c9d41271 Use -no-pie on Linux
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
2022-08-27 00:17:09 -04:00
Roland Heyder 2ec897b75d Step 10: Update remaining stuff
- checks all remaining occurrences of the term 'qb64', some remain untouched, some are renamed according to context
- also added new logo for README.md
- this step does finalize the 'Phoenix Edition' re-branding
2022-08-12 02:54:12 +02:00
Roland Heyder e68582b6f2 Step 7: Rename qb64.exe to qb64pe.exe
- Includes related LNX/OSX files
- Excludes mentions in the help (*.txt) files
2022-08-11 18:07:57 +02:00
Matthew Kilgore 93f47326a7 Add basic C++ testing build logic
This is a fairly flexable build framework for building C++ test
executables. The executables are defined in a list and each can be given
its own set of source files, compiler flags, linker flags, etc. The
test source files are compiled together at the same time to allow any
necessary files to get applied at compile time.

Later a script will run through the test executables.
2022-06-11 22:47:05 -04:00
Matthew Kilgore eb815c4220 Prepare for separate libqb, define C++ standard
This sets up a few different flags we'll need for the conditional
compiling, and also sets the C++ standard to gnu++11, which effectively
just matches what we were implicitly using before.
2022-06-11 22:47:05 -04:00
Matthew Kilgore 6cfd785708 Change libqb.o compile location 2022-06-11 20:43:28 -04:00
Matthew Kilgore d36edad30c Fix compilation of files with $ in the name
This is a bit of an odd one, but files with $ in the name don't compile
correctly due to expansion being done on the $.

The culprit here is `make`, as the syntax '$x' is interpreted to mean to
insert the expansion of the variable 'x'. To avoid this behavior we have
to replace every single $ with $$. Make will interpret the $$ to mean it
should insert a single $ and not do any expansion, which is what we
want.

Fixes: #96
2022-06-10 10:42:49 -04:00
Matthew Kilgore 2d919768ac Add C++ compiler settings dialog
The new dialogs includes 5 settings:

1. Flag to turn on Optimization (off by default)
2. Flag to strip symbols (On by default)
3. String for extra compiler flags
4. String for extra linker flags
5. Setting for max compiler processes (default of 3)

Fixes: #65
Fixes: #40
2022-05-30 23:15:04 -04:00
Matthew Kilgore 142f1d3615 Makefile should respect CXXFLAGS_EXTRA
The Makefile has an issue where it doesn't respect CXXFLAGS_EXTRA due to
directly setting CXXFLAGS to a new value after adding the extra flags.
2022-05-30 23:15:04 -04:00
Matthew Kilgore 9e2177deff Allow EXE name to have spaces in it
Makefile's generally hate spaces in filenames, and it's largely
impossible to make them work. Due to that, with the change to use a
`Makefile` the `EXE=` parameter did not work with spaces, and programs
such as "foo bar.bas" would not compile because it produces "foo
bar.exe" which has a space in the name.

There were options here, but in this very specific case it is actually
possible to allow the Makefile to work with spaces. `EXE` is only a
single filename, so as long as we always quote it correctly and the
provided `EXE=` parameter escapes the spaces with `\` then it will work.

Thus, we modified the Makefile to always do the quoting, and modified
QB64 to automatically escape the spaces in the executable name provided
to the Makefile.

I also modified the `compile_tests` to test that spaces in filenames and
paths of the executable correctly compile.

Fixes: #80
2022-05-22 23:59:06 -04:00
Matthew Kilgore c05ba9cedc Don't include the directory in symbol file name
The symbol file was intended to just make the executable name with
".sym" and be located in ./internal/temp. Unfortunately I forgot to
remove the directory from the EXE name, so it ended up producing an
incorrect filename for the ".sym" file.

Make already provide a `notdir` function, so we can use that to get just
the executable name.
2022-05-22 23:59:06 -04:00
Matthew Kilgore 493eccf370 Fix the dependency list of qbx.o to use TEMP_ID
The contents of the qbx.o being compiled is dependent on the contents of
./internal/temp* related to that qbx.o. The paticular ./internal/temp*
to use is controled by TEMP_ID.

Unfortunately TEMP_ID is omitted from the path used to generate the
dependency list, which means the `qbx.o` may not get recompiled when
code changes are made and multiple IDE instances are being used.

Fixes: #81
2022-05-22 23:58:54 -04:00