[FFmpeg-devel] [PATCH] Extra build options for ALS (and others)
Fri Nov 27 15:42:18 CET 2009
Thilo Borgmann <thilo.borgmann at googlemail.com> writes:
> M?ns Rullg?rd schrieb:
>> Thilo Borgmann <thilo.borgmann at googlemail.com> writes:
>>> recently the need for an extra build option for the ALS decoder arose.
>> Is it impossible to achieve the desired outcome with some combination
>> of always_inline, noinline, and flatten attributes?
> No. See [PATCH] Split reading and decoding of blocks in ALS.
> Although I've managed to have the functions from the alsdec.c inlined
> manually according to the grep'ed output of the assembler code, it seems
> like it is not enough to manually inline functions from within that .c
> file only using these technique.
I'm confused. Can it be done in the C code only or not? This kind of
issue should really not be solved in the makefile.
>>> It seems like we are lacking a possibility for this or I have not found
>>> it... hints, discussion or better approaches welcome.
>>> The applied patch extends the implicit build rule for the object file,
>>> allowing to define extra compiler/linker/etc. options per file.
>> We've never had a need for this before, so there is no clean way of
>> doing it. I'll have to think about how to do it properly, but first
>> answer the question above.
> In some way there is something like that already. In libavcodec/Makefile
> there is a block which is also extending the implicit rule that way:
> ifdef CONFIG_MPEGAUDIO_HP
> $(SUBDIR)mpegaudio_tablegen$(HOSTEXESUF): HOSTCFLAGS += -DFRAC_BITS=23
> $(SUBDIR)mpegaudio_tablegen.ho: CPPFLAGS += -DFRAC_BITS=23
> $(SUBDIR)mpegaudio_tablegen$(HOSTEXESUF): HOSTCFLAGS += -DFRAC_BITS=15
> $(SUBDIR)mpegaudio_tablegen.ho: CPPFLAGS += -DFRAC_BITS=15
I'd like to get rid of that somehow.
> That way is also suggested by the GNU make documentation:
> "... You would want to write a rule for foo.o with no command lines if
> you need to specify additional prerequisites, such as header files, that
> the implicit rule cannot supply."
I know it's legal make syntax. That's not the issue here.
>>> Index: libavcodec/Makefile
>>> --- libavcodec/Makefile (Revision 20627)
>>> +++ libavcodec/Makefile (Arbeitskopie)
>>> @@ -%ld,%ld +%ld,%ld @@
>>> SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h
>>> SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h
>>> +# extra build options
>>> +$(SUBDIR)alsdec.o: CFLAGS += -finline-limit=4096
>> This will break with many non-gcc compilers.
> I think it might be feasible to adopt this to the compiler in use, not?
> How many compilers do we care for in such a sense?
> We might even check for "-finline-limit" in the configure script to use
> it at least with gcc or accept 10% slowdown on "unsupported" compilers...
I think using -finline-limit is the wrong solution here. It's a
brute-force approach that happens to work for now. If the code
changes, it may no longer have the right effect.
mans at mansr.com
More information about the ffmpeg-devel