On 12/18/14 7:31 AM, Karel Zak wrote:
> On Wed, Dec 17, 2014 at 03:07:26PM +0100, David Sterba wrote:
>> On Fri, Dec 12, 2014 at 01:35:14PM +0100, Karel Zak wrote:
>>> This is first step to make btrfs-progs build system more conventional
>>> for userspace users and developers. All is implemented by small incremental
>>> patches to keep things review-able.
>>
>> Thanks. I went through the patches and haven't found major problems. The
>> changes are affecting build system and this will need a longer period
>> before all distros have a chance to adapt to that, so I'm postponing it
>> to 3.19.
> 
> Cool, I'll try to prepare next set of patches with automake.
> 
> BTW, I have good experience with build-system changes -- downstream
> distributions (maintainers) are usually pretty flexible :-)
> 
>>> Note that there is also strange unused btrfs_convert_libs, btrfs_image_libs 
>>> and
>>> btrfs_fragments_libs variables with things like "-lgd -lpng -ljpeg 
>>> -lfreetype".
>>> I guess it's some legacy, right? I didn't touch these variables as I have no
>>> clue about sense of this stuff.
>>
>> No, it's part of the macro magic. There are pattern rules that accept
>> any source in the form btrfs-something.c and also pick the libraries for
>> that from variable btrfs_something_libs:
>>
>> btrfs-%: $(objects) $(libs) btrfs-%.o
>>         @echo "    [LD]     $@"
>>         $(Q)$(CC) $(CFLAGS) -o $@ $(objects) $@.o $(LDFLAGS) $(LIBS) 
>> $($(subst -,_,$@-libs))
>>
>> This is for convenience, if this turns out to be hard to do with in 
>> combination
>> with autotools, I don't insist on keeping it but it has simplified the 
>> Makefile
>> significantly.

Yeah, I did those long ago IIRC. It obfuscates things a bit, but cut down on 
tons of
cut and paste in the Makefile...

> OK, so -ljpeg in the Makefile is just example, right?

It's been specified for the btrfs-framgnets tool since .. forever.

commit 6d37fbfc1f83c34f00df7c9d8e5b60e49d9db48d
Author: Arne Jansen <sensi...@gmx.net>
Date:   Mon Nov 28 17:12:30 2011 +0100

    Btrfs-progs: tool to visualize fragmentation
...
+btrfs-fragments: $(objects) $(libs) fragments.o
+       @echo "    [LD]     $@"
+       $(Q)$(CC) $(CFLAGS) -o btrfs-fragments $(objects) fragments.o 
$(LDFLAGS) $(LIBS) -lgd -lpng -ljpeg -lfreetype

but the code only does:

gdImagePng(im, pngout);

so it's probably not needed...

> 
> Anyway, for these things is better to introduce extra autoconf
> AC_ARG_VAR() variables, keep is empty by default and use it in
> Makefile. The advantage is that the variables are documented and
> visible by ./configure --help.
> 
> For example in util-linux we have many {SUID,DAEMON,SOLIB,...}_CFLAGS
> and LDFLAGS for distributions that require extensions like -fPIE,
> -Wl,-z,relro etc. The same is possible to do with $LIBS.

Once auto$FOO is implemented, I am sure there are better ways to do it
than what I did.  :)

Thanks,
-Eric

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to