Opened 12 years ago

Closed 12 years ago

#1676 closed defect (fixed)

Compile fails if --progs-suffix= is set in ./configure

Reported by: TimNich Owned by:
Priority: important Component: build system
Version: git-master Keywords: regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:

Commit 11a1033c9fca introduced separated out code from ffmpeg.o into ffmpeg_opt.o and ffmpeg_filter.o.

With this arrangement if --progs-suffix="something" is used during the ./configure stage, PROGSSUF in config.mak is set to this value.

Under this circumstance ffmpeg_opt.o and ffmpeg_filter.o are not set as targets in the make system (according to make -p -n), so when an attempt is made to link to them the make fails.

How to reproduce:

./configure \
--enable-static --disable-shared \
--prefix=$SYSROOT/usr/local \
--libdir=$SYSROOT/usr/local/lib64 \
--samples="../fate-suite/" \
 \
--extra-cflags="-static -I$SYSROOT/usr/local/include" \
--extra-ldflags="-static -L$SYSROOT/usr/local/lib64" \
--progs-suffix="_bisect"
make
[...]
AR      libavutil/libavutil.a
CC      ffmpeg.o
CC      cmdutils.o
LD      ffmpeg_bisect_g
gcc: error: ffmpeg_opt.o: No such file or directory
gcc: error: ffmpeg_filter.o: No such file or directory
make: *** [ffmpeg_bisect_g] Error 1

compared to a working build with --progs-suffix="" which gives

AR      libavutil/libavutil.a
CC      ffmpeg.o
CC      cmdutils.o
CC      ffmpeg_opt.o
CC      ffmpeg_filter.o
LD      ffmpeg_g

I have looked at the main Makefile around lines 93-102, which seems to be the meat of it but cannot see why this behavior is affected by the setting of PROGSSUF. Perhaps someone with a better understanding of the make system can spot it...

Change History (2)

comment:1 by Carl Eugen Hoyos, 12 years ago

Keywords: regression added
Priority: normalimportant
Reproduced by developer: set
Status: newopen

comment:2 by Carl Eugen Hoyos, 12 years ago

Resolution: fixed
Status: openclosed

Fixed by Jamal.

Note: See TracTickets for help on using tickets.