On Sun, 23 Feb 2020 at 09:03:33 +0100, Lucas Nussbaum wrote:
> During a rebuild of all packages in sid, your package failed to build
> on amd64.
> 
> > In file included from PEngine/texture.cpp:12:
> > /usr/include/SDL2/SDL_image.h:27:10: fatal error: SDL.h: No such file or 
> > directory
> >    27 | #include "SDL.h"

This bug is similar to #952066 and #952046. They're all caused by the
games assuming that they can find <SDL2/SDL.h>, <SDL2/SDL_image.h>
etc. in the compiler's default header search path, and also assuming
that they can find -lSDL2, -lSDL2_image etc. in the linker's default
library search path.

These assumptions are not really correct: games are meant to query each
library's CFLAGS and LIBS, add them to the compiler and linker command
lines respectively, and use #include <SDL.h> (and *not* <SDL2/SDL.h>,
which does not work on all OSs). In a simple Makefile-based build system
like the one in trigger-rally, that looks like this:

    PKG_CONFIG ?= pkg-config
    SDL2_CFLAGS = $(shell ${PKG_CONFIG} --cflags sdl2)
    SDL2_LIBS = $(shell ${PKG_CONFIG} --libs sdl2)
    SDL2_IMAGE_CFLAGS = $(shell ${PKG_CONFIG} --cflags SDL2_image)
    SDL2_IMAGE_LIBS = $(shell ${PKG_CONFIG} --libs SDL2_image)

    ...

    CPPFLAGS += $(DMACROS) $(INCDIRS) $(SDL2_CFLAGS) $(SDL2_IMAGE_CFLAGS)
    EXTRA_LIBS := $(SDL2_LIBS) $(SDL2_IMAGE_LIBS) -lSDL2main -lGL -lGLU -lGLEW 
-lphysfs -lopenal -lalut -lpthread -ltinyxml2

(trigger-rally could probably benefit from the same technique being applied
to non-SDL dependencies like openal and physfs, but that isn't immediately
necessary to solve this bug.)

Despite not really being correct, these assumptions used to
work before we modified SDL2 to be multiarch co-installable
(<https://bugs.debian.org/909740>). The alternative solution to #909740
proposed at <https://salsa.debian.org/sdl-team/libsdl2/merge_requests/3>
as a solution to <https://bugs.debian.org/951087> also breaks these
assumptions, although I think it would be possible to modify it so that
the assumptions hold again.

    smcv

Reply via email to