1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-08-05 15:50:25 +00:00
Commit graph

2811 commits

Author SHA1 Message Date
Matt Kilgore
8185234792
Merge branch 'main' into fix-glut-init-logic 2022-11-26 22:42:46 -05:00
github-actions[bot]
715bfd3682 Automatic update of ./internal/source 2022-11-27 03:36:50 +00:00
Matt Kilgore
a9b5c635ee
Merge pull request #258 from mkilgore/fix-output-flag-startdir
Fix QB64-PE dependency list, _StartDir$ relative compile with no -o, and command line output.
2022-11-26 22:17:47 -05:00
Matthew Kilgore
77c5e6c39c -x should create executable relative to _StartDir$ when -o is not provided
Starting with #201, source files relative to `_StartDir$` are allowed to
be passed to `-x` and compile as expected. Additionally as part of that
change, when the `-x` parameter is relative to `_StartDir$`, the `-o`
argument is _also_ treated relative to `_StartDir$`. This is simply the
behavior everyone using the compiler would expect - that the source file
and `-o` are relative to the same location.

An overlooked behavior was the executable location when `-o` is not
provided. It still writes to compiler directory, but it really should be
writing to `_Startdir$` since the output executable is intended to be
relative to the same location the source file is relative too. Overall
this is fairly straight forward to fix as the logic is the same, we just
need to make use of it when the `-o` flag is not provided.

Fixes: #257
2022-11-26 21:25:33 -05:00
Matthew Kilgore
ae6602ecaf Prevent commands like NoPrefix duplicating commandline output
Some commands like NoPrefix trigger a complete "recompile" due to how
they work. This has the accidental effect of duplicating the command
line output, which should still only be printed once. Moving the
printing logic up a bit is a simple solution.

Fixes: #256
2022-11-26 21:25:33 -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
github-actions[bot]
a8cc180307 Automatic update of ./internal/source 2022-11-27 02:24:41 +00:00
Steve McNeill
d4cd4f6af8
Merge pull request #262 from SteveMcNeill/main
Fix to Issue #233 with $IF and VERSION
2022-11-26 21:06:32 -05:00
Steve McNeill
8bb2aefcb6
Merge branch 'main' into main 2022-11-26 20:33:48 -05:00
github-actions[bot]
3cba0d4265 Automatic update of ./internal/source 2022-11-27 00:30:08 +00:00
Roland Heyder
b8936de288
Merge pull request #263 from QB64-Phoenix-Edition/refactoring
Simplify #include
2022-11-27 01:12:06 +01:00
Roland Heyder
ec6e648007 Simplify #include
Solving #119
2022-11-27 00:11:04 +01:00
SteveMcNeill
62cafd7a14 Redo and expand Version Compare Logic 2022-11-26 15:59:49 -05:00
Steve McNeill
660fa711c9
Merge branch 'main' into main 2022-11-26 13:05:51 -05:00
SteveMcNeill
7576dc46fe Fix to Issue #233 with $IF and VERSION
https://github.com/QB64-Phoenix-Edition/QB64pe/issues/233

This should fix the comparisons with $IF and VERSION.   A few things of note here, which might affect future version labeling:

This expects to find version numbers which follow our current style -- ##.##.##   -- 3 numbers, separated by periods.

Adding in alphabetic characters will basically get ignored, and versions with less than 3 values will generate FALSE results in all comparisons.
2022-11-26 05:18:29 -05:00
github-actions[bot]
28dc80b551 Automatic update of ./internal/source 2022-11-26 09:13:26 +00:00
Steve McNeill
f9b7da4777
Merge pull request #261 from SteveMcNeill/main
Change to Open File Dialog
2022-11-26 03:53:11 -05:00
SteveMcNeill
6cc0432a99 Merge branch 'main' of https://github.com/SteveMcNeill/QB64pe-fork 2022-11-26 03:07:09 -05:00
SteveMcNeill
b32059f155 Change to Open File Dialog
Change to open file dialog so that it initially opens in the user's StartDir$, and then from whatever folder they navigate to after that.
2022-11-26 03:06:36 -05:00
Matthew Kilgore
d2aa572a94 Fix GLUT initialization logic
The current GLUT initialization logic is flawed because it allows the
QB64 code portion of the program to start on a separate thread at the
same time that the GLUT code is starting. This results in a race where
some commands won't work for a brief period at the beginning of the
program (with "won't work" being very inconsistent, some return invalid
values, some have a chance at seg faulting).

The same issue also leads to us adding many `while (!window_exists)`
checks in an attempt to solve this race for some of the commands.
Unfortunately this solution is very inconsistently applied leading to
some deadlock situations, and really it's a silly solution when this
race is entirely our creation anyway.

To fix this, the logic was changed such that we perform all of the GLUT
initialization besides calling `glutMainLoop()` before we ever start the
thread that runs the actual QB64 code. By doing it this way we ensure
that the GLUT initialization has already taken place before the code
runs and thus the race is gone.

Things get a bit more interesting with $SCREENHIDE, because that simply
delays the execution of the GLUT initialization indefinitely until
_ScreenShow is done. This was previously very buggy since some commands
rely on FreeGLUT being up and will simply hang the entire program if
run. Other commands have logic to catch this and simply return zero.

The above issue is solved with the `NEEDS_GLUT()` and `OPTIONAL_GLUT()`
macros. Both of them simply check if the GLUT initialization has taken
place and exit the current function if it has not. The difference
between the two is that `NEEDS_GLUT()` throws an 'illegal function call'
error while `OPTIONAL_GLUT()` simply exits with no error. The choice of
behavior of each function was based upon its previous behavior - if it
checked `screen_hide` and exited with no error previously, then
`OPTIONAL_GLUT()` was used. If it deadlocked or similar then
`NEEDS_GLUT()` was used (so instead of deadlocking, it now produces an
error). In this way, programs can now never get stuck due to the use of
`$SCREENHIDE` and all the commands have consistent behavior that can be
relied upon.

Fixes: #234
2022-11-26 01:33:32 -05:00
Steve McNeill
15f0f86534
Merge pull request #254 from SteveMcNeill/main
Bugfix to _FONT
2022-11-25 05:03:33 -05:00
SteveMcNeill
ca7d6ee289 fix comment
Whoops!  Not enough coffee, I guess.  ;)
2022-11-25 00:52:29 -05:00
SteveMcNeill
0d76a7bbed Simplify multi-line logic to single line. 2022-11-24 15:00:54 -05:00
SteveMcNeill
6d055e5df1 Bugfix to _FONT
Fonts 9, 15, and 17 can *only* be used in SCREEN 0.  Attempting to use them in graphic screens results in a seg fault and an instant program crash on Windows.  This is definitely the most undesirable of behaviors for a program, and can easily be caught and dealt with just by tossing a simple "Illegal Function Call" error for the issue.
2022-11-24 08:34:31 -05:00
github-actions[bot]
9d3ca747d0 Automatic update of ./internal/source 2022-11-24 12:38:54 +00:00
Roland Heyder
d40fb02731
Merge pull request #252 from QB64-Phoenix-Edition/wiki-dev
Wiki dev
2022-11-24 13:19:54 +01:00
Roland Heyder
65371dad0f Wiki download finalized
- restore default back to https:
- ask user for fallback, if required
- final adjustments for new behavior
2022-11-23 22:54:04 +01:00
Roland Heyder
b153a86d7e
Merge branch 'main' into wiki-dev 2022-11-23 11:02:28 +01:00
Matthew Kilgore
c84220055f Add FreeGLUT warning function
Registering a warning function keeps FreeGLUT from writing warnings to
the console (which is not desirable since it conflicts with our own
console output).
2022-11-22 23:53:04 -05:00
github-actions[bot]
cff575e722 Automatic update of ./internal/source 2022-11-22 23:53:31 +00:00
Matt Kilgore
ebd95d24b8
Merge pull request #250 from mkilgore/refactor-curl
Add HTTP and HTTPS support to `_OPENCLIENT()`
2022-11-22 18:31:13 -05:00
Roland Heyder
81d4983219 Wiki update refactoring
Some changes/fixes in the update flow.
2022-11-22 18:22:10 +01:00
Roland Heyder
87a234b45b Wiki download changes
Using built-in TCP/IP and HTTP protocol via manual request headers.
2022-11-22 18:20:48 +01:00
Matthew Kilgore
11a5b8be8e _OpenClient() should return zero on connection failure, not error 2022-11-20 18:44:24 -05:00
Matthew Kilgore
445408d95b _StatusCode() should give the correct error on invalid handle type
Passing a handle of the invalid type (Ex. TCP) to _StatusCode should
give error 52, but it gies error 9.
2022-11-20 04:38:03 -05:00
Matthew Kilgore
12c9c35db5 Add _StatusCode command for HTTP handles
The _StatusCode command returns the status code on the HTTP response
when given a HTTP handle from _OpenClient().
2022-11-20 04:04:02 -05:00
Matthew Kilgore
610c914d36 compile_tests.sh does not display compilelog.txt
Due to a typo, compile_tests.sh was not displaying the compilelog.txt
contents on a test failure.
2022-11-19 15:13:26 -05:00
Matthew Kilgore
1438c882d2 Update webfactory/ssh-agent 2022-11-19 15:13:26 -05:00
Matthew Kilgore
e8ebf56a2f Add basic http tests
These tests cover basic HTTP functionality via _OPENCLIENT(), and also
that it fails to work without `$Unstable:Http` in place.
2022-11-19 15:13:26 -05:00
Matthew Kilgore
77e0a369af Add $Unstable entry for Http
This effectively adds Http support to QB64-PE via adding $Unstable:Http
which will trigger building with DEP_HTTP, which enables Http support in
libqb.
2022-11-19 15:13:26 -05:00
Matthew Kilgore
ffdf9db390 Add libqb.cpp stream support for HTTP
Modifies libqb.cpp to add support for opening HTTP connections via
_OPENCLIENT(). This makes use of the libqb_http API in ./libqb, which is
backed by libcurl.

This also includes a bit of refactoring for some of the code that
required additions. I replaced a few of the integer values with enums,
and added a new entry for Http and then implemented it in all the
necessary locations. In addition to `_OPENCLIENT()`, there is also
support for using HTTP connections with `EOF()`, `LOF()`, `GET #`
(variable and fixed length), and `CLOSE`.

I additionally fixed an issue of parsing the colon parts of the
`_OPENCLIENT()` parameter, where having too many colons would cause the
program to crash. Since we only allow so many parts to begin with it I
simply limited the max number of parts it will split to 10.

Fixes: #98
Fixes: #46
2022-11-19 15:13:26 -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
Matthew Kilgore
848aa6b5d2 Pin versions of build agents
This ensures that our build will continue to use the same versions of
our OSs even if GitHub updates them.
2022-11-19 01:55:20 -05:00
Matthew Kilgore
1994ca3f73 Install libcurl on Linux build agent 2022-11-19 01:55:20 -05:00
Matthew Kilgore
d8a3ec75fd Run tests with -O2
Since we do allow users to use optimization, it's worth running our
tests with it to verify at least those work.
2022-11-19 01:55:20 -05:00
Matthew Kilgore
b066c641f4 Add the libcurl license 2022-11-19 01:55:20 -05:00
Matthew Kilgore
1eec789114 Specify the XCode SDK version 2022-11-18 01:50:28 -05:00
Matt Kilgore
ba6e5f6438
Merge pull request #246 from mkilgore/add-libcurl-to-repo
Add libcurl to the repository
2022-11-17 22:31:44 -05:00
Matthew Kilgore
34a7df535e Add libcurl to the repository
This copy is used for building on Windows. For Linux and OS X we used
the system-provided copy.
2022-11-17 22:03:41 -05:00
github-actions[bot]
5e3fa2d6c2 Automatic update of ./internal/source 2022-11-16 06:19:29 +00:00