Opened 3 months ago

Last modified 2 months ago

#10660 new defect

BUILD: Build failure on Manjaro Linux

Reported by: lotharsm Owned by:
Priority: low Component: Ports
Keywords: Cc:
Game:

Description

I checked out the current master code and tried to compile it with my current Manjaro installation (based on Arch Linux).

Installed packages:

base-devel git curl faad2 freetype2 flac fluidsynth libjpeg-turbo libogg libvorbis libmad libmpeg2 libtheora libpng nasm readline sdl2 sdl2_net zlib

(worked as I tested it a few months ago for the last time)

Error message:

    C++      backends/platform/sdl/sdl.o
In file included from ./backends/platform/sdl/sdl.h:26,
                 from backends/platform/sdl/sdl.cpp:25:
./backends/platform/sdl/sdl-sys.h:144:10: schwerwiegender Fehler: SDL.h: Datei oder Verzeichnis nicht gefunden
 #include <SDL.h>
          ^~~~~~~
Kompilierung beendet.
make: *** [Makefile.common:104: backends/platform/sdl/sdl.o] Fehler 1

Any ideas?

[user@machine scummvm]$ whereis SDL.h
SDL: /usr/include/SDL

Change History (12)

comment:1 Changed 3 months ago by digitall

lotharsm: Try doing ./configure --enable-verbose-build && make clean && make

That should output the exact compile command being sent to C++ / gcc and thus make it clearer what is going on here.

comment:2 Changed 3 months ago by lotharsm

defioram: This is the output:

g++ -MMD -MF "backends/platform/sdl/.deps/sdl.d" -MQ "backends/platform/sdl/sdl.o" -MP -Wall -g -ansi -W -Wno-unused-parameter -Wno-empty-body -pedantic -Wno-long-long  -Wno-long-long -Wno-multichar -Wno-unknown-pragmas -Wno-reorder -Wpointer-arith -Wcast-qual -Wshadow -Wnon-virtual-dtor -Wwrite-strings -fno-exceptions -fcheck-new -DHAVE_CONFIG_H -DSDL_BACKEND -DPOSIX -DHAS_POSIX_SPAWN -DDATA_PATH=\"/usr/local/share/scummvm\" -DPLUGIN_DIRECTORY=\"/usr/local/lib/scummvm\" -DENABLE_SCUMM=STATIC_PLUGIN -DENABLE_SCUMM_7_8 -DENABLE_HE -DENABLE_ACCESS=STATIC_PLUGIN -DENABLE_ADL=STATIC_PLUGIN -DENABLE_AGI=STATIC_PLUGIN -DENABLE_AGOS=STATIC_PLUGIN -DENABLE_AGOS2 -DENABLE_BBVS=STATIC_PLUGIN -DENABLE_CGE=STATIC_PLUGIN -DENABLE_CGE2=STATIC_PLUGIN -DENABLE_CINE=STATIC_PLUGIN -DENABLE_COMPOSER=STATIC_PLUGIN -DENABLE_CRUISE=STATIC_PLUGIN -DENABLE_DRACI=STATIC_PLUGIN -DENABLE_DRASCULA=STATIC_PLUGIN -DENABLE_DREAMWEB=STATIC_PLUGIN -DENABLE_FULLPIPE=STATIC_PLUGIN -DENABLE_GNAP=STATIC_PLUGIN -DENABLE_GOB=STATIC_PLUGIN -DENABLE_GROOVIE=STATIC_PLUGIN -DENABLE_HOPKINS=STATIC_PLUGIN -DENABLE_HUGO=STATIC_PLUGIN -DENABLE_ILLUSIONS=STATIC_PLUGIN -DENABLE_KYRA=STATIC_PLUGIN -DENABLE_LOL -DENABLE_EOB -DENABLE_LAB=STATIC_PLUGIN -DENABLE_LURE=STATIC_PLUGIN -DENABLE_MADE=STATIC_PLUGIN -DENABLE_MADS=STATIC_PLUGIN -DENABLE_MOHAWK=STATIC_PLUGIN -DENABLE_MYST -DENABLE_RIVEN -DENABLE_MORTEVIELLE=STATIC_PLUGIN -DENABLE_NEVERHOOD=STATIC_PLUGIN -DENABLE_PARALLACTION=STATIC_PLUGIN -DENABLE_PEGASUS=STATIC_PLUGIN -DENABLE_PLUMBERS=STATIC_PLUGIN -DENABLE_QUEEN=STATIC_PLUGIN -DENABLE_SAGA=STATIC_PLUGIN -DENABLE_IHNM -DENABLE_SCI=STATIC_PLUGIN -DENABLE_SCI32 -DENABLE_SHERLOCK=STATIC_PLUGIN -DENABLE_SKY=STATIC_PLUGIN -DENABLE_SWORD1=STATIC_PLUGIN -DENABLE_SWORD2=STATIC_PLUGIN -DENABLE_SWORD25=STATIC_PLUGIN -DENABLE_TEENAGENT=STATIC_PLUGIN -DENABLE_TINSEL=STATIC_PLUGIN -DENABLE_TITANIC=STATIC_PLUGIN -DENABLE_TOLTECS=STATIC_PLUGIN -DENABLE_TONY=STATIC_PLUGIN -DENABLE_TOON=STATIC_PLUGIN -DENABLE_TOUCHE=STATIC_PLUGIN -DENABLE_TSAGE=STATIC_PLUGIN -DENABLE_TUCKER=STATIC_PLUGIN -DENABLE_VOYEUR=STATIC_PLUGIN -DENABLE_WINTERMUTE=STATIC_PLUGIN -DENABLE_XEEN=STATIC_PLUGIN -DENABLE_ZVISION=STATIC_PLUGIN -I. -I. -I./engines -I//include/SDL2 -I/usr/include -D_REENTRANT              -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -c backends/platform/sdl/sdl.cpp -o backends/platform/sdl/sdl.o
In file included from ./backends/platform/sdl/sdl.h:26,
                 from backends/platform/sdl/sdl.cpp:25:
./backends/platform/sdl/sdl-sys.h:144:10: schwerwiegender Fehler: SDL.h: Datei oder Verzeichnis nicht gefunden
 #include <SDL.h>
          ^~~~~~~
Kompilierung beendet.
make: *** [Makefile.common:104: backends/platform/sdl/sdl.o] Fehler 1

comment:3 Changed 3 months ago by criezy

The issue is likely with the -I//include/SDL2. I suspect this is not the correct path to your SDL2 header files.

When you run configure, what result do you get for the Looking for sdl-config... line?

You may also want to check what sdl2-config --cflags gives you.

As far as I can see none of the sdl-related stuff in configure has changed in the past two years, so this is more likely related to some changes on your side (for example in your environment).

comment:4 Changed 3 months ago by lotharsm

Yep, it is indeed the -I//include/SDL2 line, setting it manually to the right path in config.mk fixes the problem.

sdl2-config seems to be detected without issues: Looking for sdl-config... /bin/sdl2-config
sdl2-config --cflags: -I/usr/include/SDL2 -I/usr/include -D_REENTRANT, wghich is the correct path.

Since this is a completely new installed Workstation, I cannot compare to what change since the last time I tried this on my own installation...

comment:5 Changed 3 months ago by criezy

Why is sdl2-config installed in /bin and not /usr/bin? Is that a standard thing on that system?

This results in configure setting _sdlpath to /, and then it actually calls sdl2-config --prefix=/ --cflags which is likely the reason why the include path gets wrong.

comment:6 Changed 3 months ago by lotharsm

Yep, this is a default Manjaro installation with all packages installed via pacman, not even from AUR...

comment:7 Changed 3 months ago by criezy

Removing the --prefix="$_sdlpath" from the sdl2-config call would likely solve this issue, but I wonder if this is a good idea.

This was added more that ten years ago in commit 0657ef6 with the message "Use sdl-config --prefix to enable better detection of include paths.". This does not explicitly indicate if this was to fix an issue with a specific port though, so maybe this was not really needed...

comment:8 Changed 3 months ago by lotharsm

Should we revert this commit then and see if there are any issues with some of the ports?

comment:9 Changed 3 months ago by criezy

I suspect passing the prefix is important when sdl has been relocated compared to the prefix used when it was compiled, which might be the case for most toolchains on buildbot for example. So I don't think we can just remove it. But I am not quite sure what would be the best solution here. Maybe we could limit the use of --prefix when calling sdl-config or sdl2-config to the case where a prefix is explicitly passed to configure with --with-sdl-prefix=.

comment:10 Changed 3 months ago by lotharsm

I think that would be a good idea only to call --prefix if --with-sdl-prefix= is used.

comment:11 Changed 2 months ago by lotharsm

I suspect that something was wrong with my Manjaro installation, it broke completely today. I'll leave this bug report open with low priority for further reference.

comment:12 Changed 2 months ago by lotharsm

Priority: normallow
Note: See TracTickets for help on using tickets.