Opened 8 months ago

Closed 3 days ago

#15052 closed defect (wontfix)

BUILD: MACOS: can not compile scummvm source gcc version: 14.0.1 20240326 (experimental)

Reported by: rubyFeedback Owned by: sev-
Priority: low Component: Port: Mac OS X
Version: Keywords:
Cc: Game:

Description

RANLIB engines/glk/libglk.a
AR engines/gnap/libgnap.a
RANLIB engines/gnap/libgnap.a
AR engines/gob/libgob.a
RANLIB engines/gob/libgob.a
AR engines/griffon/libgriffon.a
RANLIB engines/griffon/libgriffon.a
AR engines/grim/libgrim.a
RANLIB engines/grim/libgrim.a
AR engines/groovie/libgroovie.a
RANLIB engines/groovie/libgroovie.a
AR engines/hadesch/libhadesch.a
RANLIB engines/hadesch/libhadesch.a
AR engines/hdb/libhdb.a
RANLIB engines/hdb/libhdb.a
AR engines/hopkins/libhopkins.a
RANLIB engines/hopkins/libhopkins.a
AR engines/hpl1/libhpl1.a
RANLIB engines/hpl1/libhpl1.a
AR engines/hugo/libhugo.a
RANLIB engines/hugo/libhugo.a
AR engines/hypno/libhypno.a
RANLIB engines/hypno/libhypno.a
C++ engines/icb/actor.o

In file included from ../graphics/opengl/context.h:25,

from ../common/system.h:34,
from ../engines/icb/debug_pc.h:30,
from ../engines/icb/p4_generic_pc.h:31,
from ../engines/icb/p4_generic.h:31,
from ../engines/icb/debug.h:30,
from ../engines/icb/string_vest.h:31,
from ../engines/icb/p4.h:32,
from ../engines/icb/global_objects.h:30,
from ../engines/icb/actor.cpp:27:

../common/singleton.h:44:21: warning: template-id not allowed for constructor in C++20 [-Wtemplate-id-cdtor]

44 | Singleton<T>(const Singleton<T> &);
|

../common/singleton.h:44:21: note: remove the '< >'
../common/singleton.h:91:21: warning: template-id not allowed for constructor in C++20 [-Wtemplate-id-cdtor]

91 | Singleton<T>() { }
|

../common/singleton.h:91:21: note: remove the '< >'
../common/singleton.h:92:17: warning: template-id not allowed for destructor in C++20 [-Wtemplate-id-cdtor]

92 | virtual ~Singleton<T>() { }
|

../common/singleton.h:92:17: note: remove the '< >'
In file included from ../engines/icb/debug.h:32:
../engines/icb/common/px_array.h: In member function 'const Type& ICB::rcActArray<Type>::operator[](uint32) const':
../engines/icb/common/px_array.h:105:66: error: assignment of member 'm_userPosition' in read-only object

105 | ((const rcActArray<Type> *)this)->m_userPosition = n + 1;
| ~

../engines/icb/common/px_array.h: In member function 'const Type ICB::rcIntArray<Type>::operator[](uint32) const':
../engines/icb/common/px_array.h:308:66: error: assignment of member 'm_userPosition' in read-only object

308 | ((const rcIntArray<Type> *)this)->m_userPosition = index + 1;
| ~

make: * engines/icb/actor.o Error 1

So I am using gcc git clone checkout from some days ago, and evidently scummvm may not have been tested with this - so I am just reporting it. Either way perhaps someone can have a look here, if this is solely related to C++ 20, as eventually that may have to be supported (with upcoming stable gcc releases perhaps).

I then tried to compile via gcc 10.5.0, as I noticed that I can compile more programs that way, using an older GCC. However had this led to another error:

e.fragment ../engines/playground3d/shaders/playground3d_cube.vertex ../engines/playground3d/shaders/playground3d_fade.fragment ../engines/playground3d/shaders/playground3d_fade.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Ambient_Color.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Bump2D_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Bump2D_Light.vertex ../engines/hpl1/engine/impl/shaders/hpl1_BumpColorSpec_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_BumpColorSpec_Light_Spot.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Bump_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Bump_Light_Spot.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Bump_Light_Spot_pass2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_BumpSpec2D_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_BumpSpec2D_Light.vertex ../engines/hpl1/engine/impl/shaders/hpl1_BumpSpec_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_BumpSpec_Light_Spot.fragment ../engines/hpl1/engine/impl/shaders/hpl1_BumpSpec_Light_Spot_pass2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Color.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_ColorMul.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Color.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_EnvMap_Reflect.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_EnvMap_Reflect.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Light_Spot.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Light_Spot_pass1.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Light_Spot_pass2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Light_Spot.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Diffuse_Light.vertex ../engines/hpl1/engine/impl/shaders/hpl1_DiffuseSpec_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_DiffuseSpec_Light_Spot.fragment ../engines/hpl1/engine/impl/shaders/hpl1_DiffuseSpec_Light_Spot_pass2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_DiffuseSpec_Light_Spot.vertex ../engines/hpl1/engine/impl/shaders/hpl1_DiffuseSpec_Light.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Bump_Light.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Diffuse_Light_p1.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Diffuse_Light_p1.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Diffuse_Light_p2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Diffuse_Light_p2.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Diffuse_Light_Spot.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback01_Diffuse_Light_Spot_p2.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_Diffuse_Light_p1.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_Diffuse_Light_p1.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_Diffuse_Light_p2.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_DIffuse_Light_Spot_p2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_Diffuse_Light_Spot_p2.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_DIffuse_Light_Spot_p3.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fallback02_Diffuse_Light_Spot_p3.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fog_Solid.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fog_Solid.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Fog_Trans_Alpha.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fog_Trans_Mod.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fog_Trans_ModX2.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Fog_Trans.vertex ../engines/hpl1/engine/impl/shaders/hpl1_gamma_correction.fragment ../engines/hpl1/engine/impl/shaders/hpl1_gamma_correction.vertex ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Bloom.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Bloom.vertex ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Blur_2D.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Blur_Rect.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Blur.vertex ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_DoF.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_DoF.vertex ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Fallback01_Blur_2D.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Fallback01_Blur_Rect.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Motion.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Motion_staticloop.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Motion.vertex ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Offset.fragment ../engines/hpl1/engine/impl/shaders/hpl1_PostEffect_Offset.vertex ../engines/hpl1/engine/impl/shaders/hpl1_refract.fragment ../engines/hpl1/engine/impl/shaders/hpl1_refract_special.fragment ../engines/hpl1/engine/impl/shaders/hpl1_refract.vertex ../engines/hpl1/engine/impl/shaders/hpl1_refract_water.fragment ../engines/hpl1/engine/impl/shaders/hpl1_refract_water.vertex ../engines/hpl1/engine/impl/shaders/hpl1_ShadowExtrude.fragment ../engines/hpl1/engine/impl/shaders/hpl1_ShadowExtrude.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Water_Diffuse.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Water_Diffuse.vertex ../engines/hpl1/engine/impl/shaders/hpl1_Water_Fog.fragment ../engines/hpl1/engine/impl/shaders/hpl1_Water_Fog.vertex ../engines/freescape/shaders/freescape_bitmap.fragment ../engines/freescape/shaders/freescape_bitmap.vertex ../engines/freescape/shaders/freescape_triangle.fragment ../engines/freescape/shaders/freescape_triangle.vertex "/home/Programs/Scummvm/2.8.1share/scummvm/shaders"
install -d "/home/Programs/Scummvm/2.8.1
bin"
install -c -m 755 "./scummvm" "/home/Programs/Scummvm/2.8.1bin/scummvm"
install -d "/home/Programs/Scummvm/2.8.1
lib/scummvm/"
install -c -m 644 "/home/Programs/Scummvm/2.8.1lib/scummvm/"
install: missing destination file operand after '/home/Programs/Scummvm/2.8.1
lib/scummvm/'
Try 'install --help' for more information.
make: * install Error 1

I had the error:

install: missing destination file operand after '/home/Programs/Scummvm/2.8.1lib/scummvm/'

Before but did not report it. I think there is something
wrong with the build system scummvm uses, since I can
compile other GNU configure based programs just fine.

(And perhaps it would be time to switch to cmake or
meson/ninja; GNU configure is such a huge mess really.)

Change History (5)

comment:1 by sev-, 7 months ago

Thank you for reporting. We will try to look into the first one eventually.

In regards of the second bug, we do not use GNU configure, our configure is completely custom.

We never run make install, so no wonder it is broken, we'll look into that.

If you can rewrite our configure in cmake or meson/ninja so that it works on all 30+ supported platforms, you will be my hero.

comment:2 by digitall, 7 months ago

@rubyFeedback: You are not clear, but given some of the paths, you are trying to compile on MacOS. Can you please provide full details of how you are compiling i.e. XCode, MacPorts or Homebrew and on what architecture i.e. PPC, x86 or ARM?

Our compilation instructions are here: https://wiki.scummvm.org/index.php?title=Compiling_ScummVM/macOS and https://wiki.scummvm.org/index.php?title=Compiling_ScummVM/Docker for reference ...

It should be noted that the normal Unix-y invocation would be "./configure && make clean && make" to build, but the instructions give further notes on required library dependencies etc. so you should check the ./configure output for any issues / missing library warnings before you go to make

comment:3 by digitall, 7 months ago

Component: --Unset--Port: Mac OS X

comment:4 by sev-, 6 days ago

Summary: can not compile scummvm source gcc version: 14.0.1 20240326 (experimental)BUILD: MACOS: can not compile scummvm source gcc version: 14.0.1 20240326 (experimental)

comment:5 by sev-, 3 days ago

Owner: set to sev-
Resolution: wontfix
Status: newclosed

I tried with gcc 14.2.0 and ran into multiple issues with compiling files from macOS frameworks.

In general, your logs clearly show that you are running your compiler in C++20 mode, while we require C++11.

It is not possible at this moment to look forward to adding support for a fresher compiler because one of the main goals of ScummVM as a project is portability.

Me and several other devs build ScummVM on macOS daily with clang, coming with Xcode Command Line utilities, so this option is always recommended and is covered in our build instructions:

https://wiki.scummvm.org/index.php?title=Compiling_ScummVM/macOS

Closing this as 'wontfix' for the time being.

Note: See TracTickets for help on using tickets.