The `option` commands have been moved to the top of the file, so that
the relevant options are registered in the CMake cache even if one of
the required libraries is not found. This solves an ergonomic problem
when using bundled libraries where you have to first download GLFW
before being able to select the option to also download Qt.
Using this variable is problematic is the user has several versions of
Qt installed on their system. There is no way to know ahead of time if
the Qt version pointed to by QTDIR matches the toolchain that is being
targeted.
The Qt installation path can still be easily specified if it's not found
by CMake by setting the Qt5_DIR cache variable after the initial
configuration run, so this shouldn't present an usability issue.
The main advantage of switching to glad from glLoadGen is that, apart
from being actively maintained, it supports a customizable entrypoint
loader function, which makes it possible to also support OpenGL ES.
Apparently /DEBUG implicitly disables linker optimizations. This
explicitly re-enables them, giving a 40% reduction in binary sizes and
a very slight runtime speed improvement.
Debug was missing compiler flags, causing MSVC to default it to building
with optimizations enabled (making for a not very useful binary for
actual debugging...). Additionally, the variables were re-organized to
remove some redundancy, the old Release build type was removed, and
RelWithDebInfo was renamed to take its place instead.
Remove unneeded stuff from pre-commit script
The check against an empty commit was not needed (it is only a security for the 1st commit after git init).
It could also possibly pose problems because of the redirection to /dev/null on some windows systems.
newline at EOF & fixed indent
Passing -pthread to GCC as a flag makes it both link to libpthread, and make C standard library routines reentrant. This makes the additional explicit links unnecessary.
Additionally, on OSX, this is the default behavior, and clang will print a message about it being unused if it's present there.
These are implicitly linked by Xcode, but with this, you can also build it with any other generator, which does not have this behavior.
CoreFoundation is included as a part of Cocoa (which is an umbrella framework), and Cocoa is generally recommended to link against, rather than its individual components (CoreFoundation, Foundation, libobjc, ...).
This both reduces redundancy in add_executable definitions, and makes it easier to link additional libraries. In particular, extra libraries are needed on OSX - see next commit.
This enables the /MP compiler flag, which parallelizes builds of by
distributing compilation of individual object files across workes
processes, instead of being limited to per-project parallelism.
Reduces the time for a full compile from 72 s to 45 s on my machine.