Remove reserved identifiers
You define some identifiers that begin with a double underscore:
https://github.com/vlabella/GLE/blob/97cf2ca024ef9a12abf6fe6024439faf0c82a0e8/src/CMakeLists.txt#L254-L259
https://github.com/vlabella/GLE/blob/97cf2ca024ef9a12abf6fe6024439faf0c82a0e8/src/CMakeLists.txt#L299-L303
https://github.com/vlabella/GLE/blob/97cf2ca024ef9a12abf6fe6024439faf0c82a0e8/src/CMakeLists.txt#L342-L346
Identifiers that begin with a double underscore are reserved for the exclusive use of the compiler. You are not permitted to create them. Please remove them.
Anywhere you're currently checking for __MAC__, __MACOS__, or __OSX__, you can replace it with a check for __APPLE__ which is already defined for you on Apple platforms. I don't know the equivalents for non-Apple systems.
I could opine that it is erroneous to define __LINUX__ on all non-Apple Unix operating systems. I'm sure people on various BSD operating systems would object to that.
There's only one place where __LINUX__ is used:
https://github.com/vlabella/GLE/blob/97cf2ca024ef9a12abf6fe6024439faf0c82a0e8/src/gle/surface/ffitcontour.cpp#L44-L54
Since the if and else code is identical you can remove the condition and with it the need to ever define __LINUX__.
I did not find anywhere in the code that referred to the macro UNIX so that could just be removed immediately.
Until you rename the identifiers to something legal, __UNIX__ needs to be defined on macOS as well, as it used to be in the autotools build system of GLE 4.2.x; see #21.
Since OS detection can be a bit convoluted, and since you're already using boost, you could leverage the BOOST_OS macros. The documentation isn't very detailed though so you'd want to verify that boost's definitions of things like BOOST_OS_MACOS, BOOST_OS_WINDOWS, and BOOST_OS_UNIX sufficiently match how you're currently defining your macros. Or you could just rename your existing identifiers to legal GLE-specific names like GLE_OS_MACOS, GLE_OS_WINDOWS, and GLE_OS_UNIX.
removed MAC OSX MACOS unsure about eliminating UNIX. is this defined on linux platforms??
all have been removed from being defined. __unix__, _WIN32, and __APPLE__ are used throughout the code to identify the target platform, respectively.