Commit Graph

4535 Commits

Author SHA1 Message Date
Camilla Löwy
71829a0f0d Wayland: Remove unused pkg-config dependency
Related to #1934.
2021-08-15 23:34:13 +02:00
Camilla Löwy
244948e174 Export pkg-config dependencies via the CMake cache
This will be useful when building GLFW as a CMake object library and
linking it into a larger library that exports pkg-config information.

Partly based on #1307 by @a3f.

Closes #1307.
2021-08-15 23:03:21 +02:00
Camilla Löwy
d83849792b Add override variable for CMake library type
This adds the GLFW_LIBRARY_TYPE CMake cache variable, which allows users
and higher-level projects to set what type of library GLFW is built as.

When not empty, this value overrides the standard BUILD_SHARED_LIBS
option for GLFW while still allowing it to control the type of other
libraries in a larger project.

This also allows building GLFW as an object library without adding dummy
source files (as required by Xcode) or producing unused library
binaries.

Projects using CMake 3.12 or later can link the resulting GLFW object
library normally using target_link_libraries.

Fixes #279.
Related to #1307.
Closes #1497.
Closes #1574.
Closes #1928.
2021-08-15 22:44:43 +02:00
Camilla Löwy
dffe203c17 Wayland: Make libwayland-client dynamically loaded
The insight to use wayland.xml to resolve the difficult-to-redirect
interface symbols was gleaned from SDL.

Instead of compiling the code output of wayland-scanner separately it is
made part of the wl_init compilation unit.  This lets us do things like
transparently rename our copies of Wayland globals.

The OS version of wayland-client-protocol.h is no longer used by GLFW,
but it is presumably ABI compatible with the output of wayland-scanner.

Closes #1174.
Closes #1338.
Related to #1655.
Closes #1943.
2021-08-15 21:58:19 +02:00
Camilla Löwy
87d5646f5d Remove unneccessary quotes in CMake conditions 2021-08-13 17:27:38 +02:00
Camilla Löwy
9a0e88a016 Update comment for msvcrt CMake option 2021-08-13 17:27:38 +02:00
Camilla Löwy
aff00d0dd8 POSIX: Use frequency member for clarity 2021-08-13 17:27:38 +02:00
Camilla Löwy
111c02d74e POSIX: Remove use of deprecated gettimeofday
POSIX.1-2008 deprecated gettimeofday, which we used as a fallback if the
monotonic clock was unavailable.

This replaces that fallback with the non-monotonic real-time clock.

Because of the Gordian knot of feature test macros across Unices, this
also includes the shift from some platform source files defining
_POSIX_C_SOURCE to various values to _DEFAULT_SOURCE being defined for
all source files on Linux.  This is because -std=c99 on Linux disables
_DEFAULT_SOURCE (POSIX 2008 and extensions).

Once runtime platform selection comes in, this kind of platform-specific
preprocessor logic can be moved into the platform glue files and won't
need to be replicated by third-party build setups, but for now, sorry.
2021-08-13 17:18:56 +02:00
Camilla Löwy
58b48a3a00 Win32: Remove changing the foreground lock timeout
It's rude to ignore the foreground lock timeout, especially by default.

Discussion of this code and its removal:
https://discourse.glfw.org/t/why-is-spi-setforegroundlocktimeout-set-to-zero-on-glfwinit-win32
2021-08-12 20:50:30 +02:00
Camilla Löwy
201400b974 Simplify parsing of default gamepad mappings
The outer glfwUpdateGamepadMappings function is now bypassed when
parsing the default gamepad mappings.  The data in mappings.h does not
contain any comments or line breaks.  Also this is done before joystick
support has been initialized, so there is no need to look for matching
devices.

Finally, the array of default mappings is pre-allocated.  This has no
measurable performance impact but does generate a lot of calls, which
won't be nice for a user provided custom allocator to deal with.
2021-08-01 20:57:28 +02:00
Camilla Löwy
afa78b4270 Update gamepad mappings from upstream 2021-08-01 20:17:21 +02:00
Camilla Löwy
0c90e1a33f Add gamepad mapping filtering by backend
This fixes gamepad mappings being included in GLFW binaries that would
then never use them because they were for a different platform.
2021-08-01 20:17:21 +02:00
Camilla Löwy
01778329ec Add custom target for updating gamepad mappings 2021-08-01 20:16:17 +02:00
Camilla Löwy
56092814f3 Improve error description for invalid scancodes 2021-07-29 21:50:24 +02:00
Camilla Löwy
3dc7349c35 Expand list of distro derivatives slightly 2021-07-29 21:50:24 +02:00
Camilla Löwy
9e1ee3f263 Add Fedora package names to compilation guide 2021-07-29 21:50:24 +02:00
Camilla Löwy
ab34cc51c6 Update changelog
Related to #1840.
2021-07-29 21:27:02 +02:00
Stephen Gowen
1d88a2e3d6 Cocoa: Fix macro redefinition warning
This avoids generating a macro redefinition warning when the
GL_SILENCE_DEPRECATION macro has been defined for the whole of a larger
project.

Closes #1840.
2021-07-29 21:21:45 +02:00
Camilla Löwy
076bfd55be Cocoa: Fix MoltenVK layer scale out of sync
The contents scale of the hosted CAMetalLayer created for MoltenVK was
updated only after the GLFW content scale and framebuffer size events
were emitted, causing the layer to get out of sync with the monitor the
window was on.
2021-07-16 20:10:19 +02:00
Camilla Löwy
836e709503 Cocoa: Remove calls to -update on nil
These calls have no effect unless the context was created with NSGL.
2021-07-16 19:54:21 +02:00
Camilla Löwy
3b95970482 Improve library compilation guide somewhat
Related to #1931.
2021-07-16 19:36:10 +02:00
Camilla Löwy
b6f7ead3c5 Add credit
Related to #1931.
2021-07-14 17:57:08 +02:00
David V. McKay
1a5e07fd4b
realizing "as you would" is platform dependent
specified "for linux or unix" and added a bit about using Visual Studio on Windows.
2021-07-07 23:44:22 -04:00
David V. McKay
f010d8b77d
Clarify "as you would" for beginners.
fixes #1088
2021-07-07 23:25:35 -04:00
Camilla Löwy
6876cf8d7e Remove errors for gamepad element mismatch
Because there are controllers in the wild using the same hardware ID
despite having different numbers of buttons and axes, an error message
was triggered that was only expected for a corrupted mapping database.

This removes the error for now, in preparation for better error handling
for gamepad mappings overall.

Fixes #1763.
2021-06-25 20:19:40 +02:00
A. Tombs
52d8347d34 Consistent subsections in compile guide
In the compile guide, the "Dependencies for Linux and OSMesa" section
looks to be one level too high in the hierarchy. I've moved it to be in
line with the similarly-named sub-sub-sections.

Closes #1923.
2021-06-23 21:30:07 +02:00
Camilla Löwy
a89fcd20d8 Wayland: Fix missing constant on FreeBSD
On FreeBSD O_CLOEXEC is only available when _POSIX_C_SOURCE >= 200809.
O_CLOEXEC is in turn required by the epollshim header.

Issue reported on IRC.
2021-06-22 00:30:39 +02:00
Camilla Löwy
5b73fc8b80 Wayland: Fix case of epollshim find module name
This fixes a warning during the configuration step of CMake.
2021-06-22 00:06:51 +02:00
Camilla Löwy
6f7c61c6b3 Add missing changelog entry
Related to #1843.
2021-06-15 18:15:13 +02:00
Camilla Löwy
15e05adf67 Add notes on getting the HDC of a window on Win32
Related to #1913.
2021-06-14 21:21:17 +02:00
Camilla Löwy
787295b3af Fix some documentation URLs still using http:
Some URLs in the documentation were overlooked during the switch to
https: for the GLFW website.  This updates those and a few third-party
URLs.
2021-06-14 19:50:32 +02:00
Camilla Löwy
78380c7761 Update IRC network to Libera.Chat
The `#glfw` IRC channel is moving to the Libera.Chat network due to the
recent takeover of the Freenode network.
2021-06-14 19:50:32 +02:00
Camilla Löwy
3b13228650 Add 'latest' branch to all CI builds
With 3.4, the tip of the 'latest' branch will be a merge commit for
3.3-stable and the main branch, and not simply a fast-foward to an
already tested commit.

This sets up a tiny additional safety net before that merge.
2021-06-14 19:45:47 +02:00
Camilla Löwy
4e788fc6dc Move VS 2019 builds from AppVeyor to GH Actions
GitHub runners unfortunately do not come with MinGW or VS 2010
pre-installed, so moving those builds will be more involved.  MinGW-w64
is not a good replacement for MinGW as it is far more complete.

This gives at least some feedback for all supported platforms via the
GitHub Actions system.
2021-06-14 19:45:47 +02:00
Camilla Löwy
5a6001a83b Migrate from Travis CI to GitHub Actions
The old Travis CI .org service has been throttled for a while now and is
said to be shutting down completely next week.

This migrates the Travis CI build jobs to GitHub Actions, with minor
changes.

- The trailing whitespace detection has been removed for now.
- The libegl1-mesa-dev dependency for Wayland has been removed as it
  appears to no longer be necessary for building.
2021-06-14 19:45:47 +02:00
Camilla Löwy
df15a33e10 Fix numeric conversion warnings in example 2021-06-14 19:45:47 +02:00
Camilla Löwy
114776a246 EGL: Fix creation of single-buffered windows
The EGL backend ignored the state of GLFW_DOUBLEBUFFER and always
created a double-buffered EGL window.

This sets the EGL_RENDER_BUFFER attribute at EGL window creation
appropriately.

Fixes #1843.
2021-05-14 19:02:25 +02:00
Camilla Löwy
fd79b02840 Move single/double-buffer filtering to backends
There is no need to enumerate framebuffer configs that will just be
filtered out later by the GLFW_DOUBLEBUFFER hard constraint.
2021-05-14 19:02:25 +02:00
Camilla Löwy
184377b493 Skip initial buffer swap when single-buffered
This skips the buffer swap after the initial glClear performed during
window creation, if the window is single-buffered.  This call confused
apitrace into thinking the window was double-buffered.

Fixes #1873.
2021-05-14 19:02:25 +02:00
Camilla Löwy
04f21abb52 Make GLFW_DOUBLEBUFFER a window attribute 2021-05-14 19:02:25 +02:00
Camilla Löwy
da236ba807 Make monitor and joystick names static strings
Related to #478.
2021-05-14 19:02:08 +02:00
Camilla Löwy
a39115a27b Remove claim that EGL is not supported on macOS 2021-05-13 15:03:49 +02:00
Camilla Löwy
bbbbd3e870 Clarify documentation for hints 2021-05-13 15:03:19 +02:00
Camilla Löwy
e17ffcd0db Fix header version macro descriptions in docs 2021-05-12 19:09:59 +02:00
Camilla Löwy
9a3a8bc267 Win32: Always define UNICODE and _UNICODE 2021-04-23 14:46:47 +02:00
Camilla Löwy
a646f51bca Win32: Fix macros being enabled for other backends
_UNICODE should not be defined for other backends even when built on
Windows.
2021-04-23 14:46:47 +02:00
Camilla Löwy
0e9ec7788b Fix description of video mode ordering in docs
The two final sorting criteria were not included in the documentation.

Fixes #1889.
2021-04-22 23:09:44 +02:00
Konstantin Podsvirov
e3f916808d Fix hardcoded runtime destination in CMake install
Closes #1883.
Closes #1884.
2021-04-22 22:47:16 +02:00
Camilla Löwy
061a0263a9 Win32: Fix compilation with standalone LLVM
The /clang: suffix passed to Clang-CL was accidentally also passed to
the regular standalone Clang, which caused compilation to fail.  We now
pass /W3 to Clang-CL, which it interprets as -Wall.

The _CRT_SECURE_NO_WARNINGS macro is now defined for both Clang and
Clang-CL.

The /entry: flag passed to link.exe is now also passed to lld-link,
letting the windows subsystem tests and examples link.

Fixes #1807.
Closes #1824.
Closes #1874.
2021-04-22 22:37:37 +02:00
Camilla Löwy
85bce8a8ea Replace GL_ARB_debug_output in comments 2021-04-22 22:37:37 +02:00