Opened 4 months ago

Closed 3 months ago

#15310 closed defect (fixed)

STARK: Build failure in --disable-bink builds

Reported by: dwatteau Owned by: dwatteau
Priority: normal Component: Engine: Stark
Version: Keywords: bink, build, binkdecoder
Cc: Game:

Description

In current Git HEAD, the STARK engine appears to have a hard requirement on BinkDecoder:

Reproducer:

nbproc=$(getconf _NPROCESSORS_ONLN 2>/dev/null || getconf NPROCESSORS_ONLN 2>/dev/null || echo 1)
./configure --disable-all-engines --disable-detection-full --enable-engine=stark --disable-bink
make -j$nbproc engines/stark/libstark.a

Result:

    C++      engines/stark/visual/smacker.o
In file included from engines/stark/ui/world/fmvscreen.cpp:24:
./engines/stark/ui/world/fmvscreen.h:50:33: error: 'Path' in namespace 'Common' does not name a type
   50 |         void play(const Common::Path &name);
      |                                 ^~~~
engines/stark/ui/world/fmvscreen.cpp: In constructor 'Stark::FMVScreen::FMVScreen(Stark::Gfx::Driver*, Stark::Cursor*)':
engines/stark/ui/world/fmvscreen.cpp:43:43: error: invalid use of incomplete type 'class Video::BinkDecoder'
   43 |         _decoder = new Video::BinkDecoder();
      |                                           ^
./engines/stark/ui/world/fmvscreen.h:31:7: note: forward declaration of 'class Video::BinkDecoder'
   31 | class BinkDecoder;
      |       ^~~~~~~~~~~
engines/stark/ui/world/fmvscreen.cpp:44:17: error: invalid use of incomplete type 'class Video::BinkDecoder'
   44 |         _decoder->setSoundType(Audio::Mixer::kSFXSoundType);
      |                 ^~
./engines/stark/ui/world/fmvscreen.h:31:7: note: forward declaration of 'class Video::BinkDecoder'
   31 | class BinkDecoder;
      |       ^~~~~~~~~~~
engines/stark/ui/world/fmvscreen.cpp:44:46: error: incomplete type 'Audio::Mixer' used in nested name specifier
   44 |         _decoder->setSoundType(Audio::Mixer::kSFXSoundType);
      |                                              ^~~~~~~~~~~~~
engines/stark/ui/world/fmvscreen.cpp: In destructor 'virtual Stark::FMVScreen::~FMVScreen()':
engines/stark/ui/world/fmvscreen.cpp:50:9: warning: possible problem detected in invocation of 'operator delete' [-Wdelete-incomplete]
   50 |         delete _decoder;
      |         ^~~~~~~~~~~~~~~
engines/stark/ui/world/fmvscreen.cpp:50:16: warning: invalid use of incomplete type 'class Video::BinkDecoder'
   50 |         delete _decoder;
      |                ^~~~~~~~
./engines/stark/ui/world/fmvscreen.h:31:7: note: forward declaration of 'class Video::BinkDecoder'
   31 | class BinkDecoder;
      |       ^~~~~~~~~~~

[...] 
[truncated]

I can't say whether the game really requires it (and thus bink should just be added to engines/stark/configure.engine) or if some #ifdef USE_BINK could be used to disable the videos without too much gameplay impact.

Hence why I'm not just fixing configure.engine, I'd rather ask :)

Change History (2)

comment:1 by dwatteau, 3 months ago

In 4b9890ca:

STARK: BUILD: This engine requires Bink support (Trac#15310)

Fixes --disable-bink builds.

comment:2 by dwatteau, 3 months ago

Owner: set to dwatteau
Resolution: fixed
Status: newclosed

I've just added "bink" to configure.engine. I don't think this engine is meant to run without a Bink decoder; it probably affects gameplay too much (but I haven't really checked that).

If someone wants to add an #ifdef USE_BINK fallback, that's probably a separate subject.

Note: See TracTickets for help on using tickets.