Giter Site home page Giter Site logo

Comments (21)

LukasBanana avatar LukasBanana commented on June 15, 2024 1

macOS 10.6.8 is indeed a very old system, but LLGL was intended to support older systems as well, so let's see if we can fix at least some of these errors.
First off: Can you please tell me what the values of these macros are on your environment:

MAC_OS_X_VERSION_MIN_ALLOWED
MAC_OS_X_VERSION_MAX_ALLOWED
MAC_OS_X_VERSION_10_12

A simple #error MAC_OS_X_VERSION_MIN_ALLOWED should reveal that. It seems as if the wrong constants are picked such as NSWindowStyleMaskBorderless instead of NSBorderlessWindowMask for older version of macOS or Xcode rather.

Speaking of which: Can you please also share your Xcode version?

Then there are a bunch of invalid conversations from NSRect to CGRect and NSSize to CGSize. Those should be easily fixable.

With things like CVDisplayLinkCreateWithCGDisplay: They are available since macOS 10.4, so there might just be a missing #import directive.

from llgl.

LukasBanana avatar LukasBanana commented on June 15, 2024 1

I force pushed an appendix with 8c55fbc. I think the only thing remaining is the issue with the NSApplication... constants, but they are only available since Mac OS X 10.7 and I can't immediately see what they replaced:
https://developer.apple.com/documentation/appkit/nsapplicationpresentationoptions/nsapplicationpresentationfullscreen

from llgl.

LukasBanana avatar LukasBanana commented on June 15, 2024 1

Could you please open a PR for this change? This iteration on the compile errors is quite inconvenient since I don't have access to a Mac with Mac OS X 10.6 and I don't think I can easily install the Xcode deployment SDK for this system on my MacBook.

from llgl.

LukasBanana avatar LukasBanana commented on June 15, 2024 1

If it's not there on macOS before 10.7, how would you run OpenGL applications then? If it's just for the headers, they are already included in this repository:
https://github.com/LukasBanana/LLGL/tree/master/external/OpenGL/include/GL

Perhaps some more have to be added, but I don't think another library dependency is necessary to support legacy systems.

Update
LLGL also supports GL 2.X, though. If it's just a problem of <OpenGL/gl3.h>, but <OpenGL/gl2.h> or the like would be okay, you can enable CMake option LLGL_GL_ENABLE_OPENGL2X to use legacy OpenGL.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024 1

I will check what headers are there. It certainly has some support for OpenGL, it was there since Tiger if not earlier, but perhaps not what LLGL expects.

Looking at how Macports handled some related issues, they opted for Mesa and X11 for systems where native implementation is lacking or insufficient. Like: macports/macports-ports@1b5491f
(I did not mean of course that LLGL has to declare an external dependency, rather that we can make a patch in Macports for <10.7, if that is the only way to support those OSs.)

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana Thank you for responding!

Xcode 3.2.6 is used on 10.6.8 (Xcode 4.2 also exists for it, but without PPC support in Rosetta), Xcode 3.2 on 10.6 PPC and Xcode 3.1.4 on 10.5.8. (Support for 10.4.11 is not my concern.)
I will test LLGL on 10.6 PPC and 10.5.8 to generate error logs tonight.

MAC_OS_X_VERSION_10_12 will not be defined on any OS prior to 10.12, I believe. 10.5.x = 1050, 10.6.x = 1060.
So normally we use smth like #if defined(__APPLE__) && __MAC_OS_X_VERSION_MIN_REQUIRED > 1060 to avoid using unsupported function on < 10.7.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

Build log on 10.6.8 in Rosetta with Xcode 3.2.6 and gcc 12.2.0:

LLGL_10.6.8_rosetta.txt

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana @autoreleasepool is not supported on <10.7 for sure:

:info:build /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/sources/Platform/MacOS/MacOSWindow.mm:493:5: error: stray '@' in program
:info:build   493 |     @autoreleasepool
:info:build       |     ^

I had a patch for libsdl2 which dealt with these, but no guarantee it is correct – this is not something I understand well, and solution was borrowed from elsewhere online. But possibly this approach gonna work:

 int
 Cocoa_CreateWindowFrom(_THIS, SDL_Window * window, const void *data)
-{ @autoreleasepool
 {
+    NSAutoreleasePool *pool;
     NSWindow *nswindow = (NSWindow *) data;
     NSString *title;
-
+    pool = [[NSAutoreleasePool alloc] init];
     /* Query the title from the existing window */
     title = [nswindow title];
     if (title) {
         window->title = SDL_strdup([title UTF8String]);
     }
-
+    [pool release];
     return SetupWindowData(_this, window, nswindow, SDL_FALSE);
-}}
+}

 void
 Cocoa_SetWindowTitle(_THIS, SDL_Window * window)
-{ @autoreleasepool
 {
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     const char *title = window->title ? window->title : "";
     NSWindow *nswindow = ((SDL_WindowData *) window->driverdata)->nswindow;
     NSString *string = [[NSString alloc] initWithUTF8String:title];
     [nswindow setTitle:string];
     [string release];
-}}
+    [pool release];
+}

 void
 Cocoa_SetWindowIcon(_THIS, SDL_Window * window, SDL_Surface * icon)
-{ @autoreleasepool
 {
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
     NSImage *nsimage = Cocoa_CreateImage(icon);
-
     if (nsimage) {
         [NSApp setApplicationIconImage:nsimage];
     }
-}}
+    [pool release];
+}

(This is not the whole patch, just an extract from it.)

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_12
should be instead:

#include <AvailabilityMacros.h>
#if MAC_OS_X_VERSION_MAX_ALLOWED >= 101200

Otherwise earlier OS have no way to know what is MAC_OS_X_VERSION_10_12 :)

This fixes part of errors.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

Then there are errors in MacOSDisplay.mm (no OS-based macros there):

/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/sources/Platform/MacOS/MacOSDisplay.mm: In function 'uint32_t LLGL::GetDisplayModeRefreshRate(CGDisplayModeRef, CGDirectDisplayID)':
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/sources/Platform/MacOS/MacOSDisplay.mm:33:9: error: 'CVDisplayLinkRef' was not declared in this scope; did you mean 'CGDisplayModeRef'?
   33 |         CVDisplayLinkRef displayLink = nullptr;
      |         ^~~~~~~~~~~~~~~~
      |         CGDisplayModeRef
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/sources/Platform/MacOS/MacOSDisplay.mm:34:54: error: 'displayLink' was not declared in this scope; did you mean 'displayID'?
   34 |         CVDisplayLinkCreateWithCGDisplay(displayID, &displayLink);
      |                                                      ^~~~~~~~~~~
      |                                                      displayID
[  7%] Building CXX object CMakeFiles/LLGL.dir/sources/Renderer/Shader.cpp.o
/opt/local/bin/g++-mp-12 -DGL_SILENCE_DEPRECATION -DLLGL_BUILD_RENDERER_NULL -DLLGL_BUILD_RENDERER_OPENGL -DLLGL_ENABLE_DEBUG_LAYER -DLLGL_ENABLE_UTILITY -DLLGL_EXPORTS -DLLGL_GL_ENABLE_DSA_EXT -DLLGL_GL_ENABLE_EXT_PLACEHOLDERS -DLLGL_GL_ENABLE_VENDOR_EXT -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/include -I/opt/local/include/Gauss -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/examples/Cpp/ExampleBase -F//System/Library/Frameworks -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/external/OpenGL/include -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -fPIC -std=gnu++11 -MD -MT CMakeFiles/LLGL.dir/sources/Renderer/Shader.cpp.o -MF CMakeFiles/LLGL.dir/sources/Renderer/Shader.cpp.o.d -o CMakeFiles/LLGL.dir/sources/Renderer/Shader.cpp.o -c /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/sources/Renderer/Shader.cpp
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-d98bcc8ee65d68e757ccae6770aed92f14b22617/sources/Platform/MacOS/MacOSDisplay.mm:34:9: error: 'CVDisplayLinkCreateWithCGDisplay' was not declared in this scope
   34 |         CVDisplayLinkCreateWithCGDisplay(displayID, &displayLink);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana Once MAC_OS_X_VERSION_MAX_ALLOWED is fixed, here is the new log:
LLGL_after_MAC_OS_X_VERSION_MAX_ALLOWED_fixed.txt

from llgl.

LukasBanana avatar LukasBanana commented on June 15, 2024

With 1e9d62c I addressed most of these issues. There's a new CMake option for Apple platforms that you have to disable (it's enabled by default): LLGL_MACOS_ENABLE_COREVIDEO. This enables/disables the import of CoreVideo framework, which is actually supported since Mac OS X 10.4, but I suspect either some unsupported feature within that framework or invalid conversion between types. All this framework is used for in LLGL is to query the correct refresh rate for built-in displays (i.e. everything MacBook).
Let me know if there are any remaining build issues.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana Thank you for such a fast response!

It still fails with some undefined stuff in MacOSWindow.mm. New log attached:
LLGL_build_log_v3.txt

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana With Core Video turned on, there are few extra errors:

/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSDisplay.mm: In function 'uint32_t LLGL::GetDisplayModeRefreshRate(CGDisplayModeRef, CGDirectDisplayID)':
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSDisplay.mm:36:9: error: 'CVDisplayLinkRef' was not declared in this scope; did you mean 'CGDisplayModeRef'?
   36 |         CVDisplayLinkRef displayLink = nullptr;
      |         ^~~~~~~~~~~~~~~~
      |         CGDisplayModeRef
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSDisplay.mm:37:54: error: 'displayLink' was not declared in this scope; did you mean 'displayID'?
   37 |         CVDisplayLinkCreateWithCGDisplay(displayID, &displayLink);
      |                                                      ^~~~~~~~~~~
      |                                                      displayID
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSDisplay.mm:37:9: error: 'CVDisplayLinkCreateWithCGDisplay' was not declared in this scope
   37 |         CVDisplayLinkCreateWithCGDisplay(displayID, &displayLink);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 22%] Building CXX object CMakeFiles/LLGL.dir/sources/Renderer/DescriptorHelper.cpp.o
/opt/local/bin/g++-mp-12 -DGL_SILENCE_DEPRECATION -DLLGL_BUILD_RENDERER_NULL -DLLGL_BUILD_RENDERER_OPENGL -DLLGL_ENABLE_DEBUG_LAYER -DLLGL_ENABLE_UTILITY -DLLGL_EXPORTS -DLLGL_GL_ENABLE_DSA_EXT -DLLGL_GL_ENABLE_EXT_PLACEHOLDERS -DLLGL_GL_ENABLE_VENDOR_EXT -DLLGL_MACOS_ENABLE_COREVIDEO -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/include -I/opt/local/include/Gauss -F//System/Library/Frameworks -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/external/OpenGL/include -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -fPIC -std=gnu++11 -MD -MT CMakeFiles/LLGL.dir/sources/Renderer/DescriptorHelper.cpp.o -MF CMakeFiles/LLGL.dir/sources/Renderer/DescriptorHelper.cpp.o.d -o CMakeFiles/LLGL.dir/sources/Renderer/DescriptorHelper.cpp.o -c /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Renderer/DescriptorHelper.cpp
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSDisplay.mm:39:27: error: 'CVDisplayLinkGetNominalOutputVideoRefreshPeriod' was not declared in this scope
   39 |             CVTime time = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(displayLink);
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[ 22%] Building CXX object CMakeFiles/LLGL.dir/sources/Renderer/Format.cpp.o
/opt/local/bin/g++-mp-12 -DGL_SILENCE_DEPRECATION -DLLGL_BUILD_RENDERER_NULL -DLLGL_BUILD_RENDERER_OPENGL -DLLGL_ENABLE_DEBUG_LAYER -DLLGL_ENABLE_UTILITY -DLLGL_EXPORTS -DLLGL_GL_ENABLE_DSA_EXT -DLLGL_GL_ENABLE_EXT_PLACEHOLDERS -DLLGL_GL_ENABLE_VENDOR_EXT -DLLGL_MACOS_ENABLE_COREVIDEO -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/include -I/opt/local/include/Gauss -F//System/Library/Frameworks -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/external/OpenGL/include -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -fPIC -std=gnu++11 -MD -MT CMakeFiles/LLGL.dir/sources/Renderer/Format.cpp.o -MF CMakeFiles/LLGL.dir/sources/Renderer/Format.cpp.o.d -o CMakeFiles/LLGL.dir/sources/Renderer/Format.cpp.o -c /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Renderer/Format.cpp
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSDisplay.mm:43:9: error: 'CVDisplayLinkRelease' was not declared in this scope; did you mean 'CGDisplayRelease'?
   43 |         CVDisplayLinkRelease(displayLink);
      |         ^~~~~~~~~~~~~~~~~~~~
      |         CGDisplayRelease
make[2]: *** [CMakeFiles/LLGL.dir/sources/Platform/MacOS/MacOSDisplay.mm.o] Error 1

With Core video off, apparently just NSApplication* ones:

/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSWindow.mm: In function '-[MacOSWindowDelegate window:willUseFullScreenPresentationOptions:]':
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSWindow.mm:141:9: error: 'NSApplicationPresentationFullScreen' was not declared in this scope; did you mean 'NSApplicationPresentationOptions'?
  141 |         NSApplicationPresentationFullScreen |
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |         NSApplicationPresentationOptions
[ 24%] Building CXX object CMakeFiles/LLGL.dir/sources/Renderer/QueryHeap.cpp.o
/opt/local/bin/g++-mp-12 -DGL_SILENCE_DEPRECATION -DLLGL_BUILD_RENDERER_NULL -DLLGL_BUILD_RENDERER_OPENGL -DLLGL_ENABLE_DEBUG_LAYER -DLLGL_ENABLE_UTILITY -DLLGL_EXPORTS -DLLGL_GL_ENABLE_DSA_EXT -DLLGL_GL_ENABLE_EXT_PLACEHOLDERS -DLLGL_GL_ENABLE_VENDOR_EXT -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/include -I/opt/local/include/Gauss -F//System/Library/Frameworks -I/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/external/OpenGL/include -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -fPIC -std=gnu++11 -MD -MT CMakeFiles/LLGL.dir/sources/Renderer/QueryHeap.cpp.o -MF CMakeFiles/LLGL.dir/sources/Renderer/QueryHeap.cpp.o.d -o CMakeFiles/LLGL.dir/sources/Renderer/QueryHeap.cpp.o -c /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Renderer/QueryHeap.cpp
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-8c55fbc5b9baae5dbb1202bb15acadeaa2eff440/sources/Platform/MacOS/MacOSWindow.mm:143:9: error: 'NSApplicationPresentationAutoHideToolbar' was not declared in this scope; did you mean 'NSApplicationPresentationAutoHideMenuBar'?
  143 |         NSApplicationPresentationAutoHideToolbar |
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |         NSApplicationPresentationAutoHideMenuBar

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana Perhaps solution is just to guard those NSApplication* with macros, like here: https://gist.github.com/miniupnp/a8f474c504eaa3ad9135

from llgl.

LukasBanana avatar LukasBanana commented on June 15, 2024

Can you try 0d43ba7 and see if that fixes the remaining errors?
I don't know what your setup is, but for any remaining errors of this kind, are you able to add those preprocessor guards on your end? This way we could iterate on that faster.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana Thank you for an update! Looks promising, but we need to link to libatomic on 32-bit platforms with GCC:

[ 58%] Linking CXX shared library build/libLLGL_Null.dylib
/opt/local/bin/cmake -E cmake_link_script CMakeFiles/LLGL_Null.dir/link.txt --verbose=ON
/opt/local/bin/g++-mp-12 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -arch ppc -mmacosx-version-min=10.6 -dynamiclib -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names -o build/libLLGL_Null.dylib -install_name /opt/local/lib/libLLGL_Null.dylib CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/NullModuleInterface.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/NullRenderSystem.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/NullSwapChain.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Buffer/NullBuffer.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Buffer/NullBufferArray.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Command/NullCommandBuffer.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Command/NullCommandExecutor.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Command/NullCommandQueue.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/RenderState/NullFence.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/RenderState/NullPipelineLayout.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/RenderState/NullPipelineState.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/RenderState/NullQueryHeap.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/RenderState/NullRenderPass.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/RenderState/NullResourceHeap.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Shader/NullShader.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Texture/NullRenderTarget.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Texture/NullSampler.cpp.o CMakeFiles/LLGL_Null.dir/sources/Renderer/Null/Texture/NullTexture.cpp.o  -Wl,-rpath,/opt/local/lib build/libLLGL.dylib -Wl,-framework,Cocoa 
Undefined symbols:
  "___atomic_load_8", referenced from:
      __ZN4LLGL9NullFence13WaitForSignalEy in NullFence.cpp.o
  "___atomic_store_8", referenced from:
      __ZN4LLGL9NullFence6SignalEy in NullFence.cpp.o
ld: symbol(s) not found

(That is, in CMakeLists either check if example compiles without libatomic and link to the latter if not, or check for size of pointer, or just link to it whenever GCC is the compiler being used.)

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

UPD. One more thing, there is a header problem here:

In file included from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-0d43ba72ffbaf08928123b7c17fcbe259b5a407e/sources/Renderer/OpenGL/OpenGL.h:13,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-0d43ba72ffbaf08928123b7c17fcbe259b5a407e/sources/Renderer/OpenGL/GLCore.h:12,
                 from /opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-0d43ba72ffbaf08928123b7c17fcbe259b5a407e/sources/Renderer/OpenGL/GLCore.cpp:8:
/opt/local/var/macports/build/_opt_PPCRosettaPorts_devel_LLGL/LLGL/work/LLGL-0d43ba72ffbaf08928123b7c17fcbe259b5a407e/sources/Renderer/OpenGL/GLCoreProfile/OpenGLCore.h:25:13: fatal error: OpenGL/gl3.h: No such file or directory
   25 | #   include <OpenGL/gl3.h>
      |             ^~~~~~~~~~~~~~
compilation terminated.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana Let me try. Linking to libatomic is certainly doable, for the header I will check what options we have (assuming it is needed and cannot be just included conditionally).

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

@LukasBanana I need to ask you one thing: is it possible to use Mesa includes for OpenGL? https://github.com/Mesa3D/mesa/tree/main/include
If not, then the only option would be to disable OpenGL on macOS < 10.7, since it is not there in the OS itself.

from llgl.

barracuda156 avatar barracuda156 commented on June 15, 2024

Headers Mesa installs:

/opt/local/include/GL/gl.h
/opt/local/include/GL/glcorearb.h
/opt/local/include/GL/glext.h
/opt/local/include/GL/glx.h
/opt/local/include/GL/glxext.h
/opt/local/include/GL/internal/dri_interface.h
/opt/local/include/GL/osmesa.h
/opt/local/include/GLES/egl.h
/opt/local/include/GLES/gl.h
/opt/local/include/GLES/glext.h
/opt/local/include/GLES/glplatform.h
/opt/local/include/GLES2/gl2.h
/opt/local/include/GLES2/gl2ext.h
/opt/local/include/GLES2/gl2platform.h
/opt/local/include/GLES3/gl3.h
/opt/local/include/GLES3/gl31.h
/opt/local/include/GLES3/gl32.h
/opt/local/include/GLES3/gl3ext.h
/opt/local/include/GLES3/gl3platform.h

from llgl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.