mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
synced 2024-11-15 08:14:21 +08:00
bd4a386ec5
Build several standalone tools into one binary and switch the function by name (symlink or hardlink). * btrfs * mkfs.btrfs * btrfs-image * btrfs-convert * btrfstune The static target is also supported. The name of resulting boxed binaries is btrfs.box and btrfs.box.static . All the binaries can be built at the same time without prior configuration. text data bss dec hex filename 822454 27000 19724 869178 d433a btrfs 927314 28816 20812 976942 ee82e btrfs.box 2067745 58004 44736 2170485 211e75 btrfs.static 2627198 61724 83800 2772722 2a4ef2 btrfs.box.static File sizes: 857496 btrfs 968536 btrfs.box 2141400 btrfs.static 2704472 btrfs.box.static Standalone utilities: 512504 btrfs-convert 495960 btrfs-image 471224 btrfstune 491864 mkfs.btrfs 1747720 btrfs-convert.static 1411416 btrfs-image.static 1304256 btrfstune.static 1361696 mkfs.btrfs.static So the shared 900K binary saves ~2M, or ~5.7M for static build. Signed-off-by: David Sterba <dsterba@suse.cz>
42 lines
1.2 KiB
C
42 lines
1.2 KiB
C
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public
|
|
* License v2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* License along with this program; if not, write to the
|
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
|
* Boston, MA 021110-1307, USA.
|
|
*/
|
|
|
|
#ifndef __BTRFS_BOX_H__
|
|
#define __BTRFS_BOX_H__
|
|
|
|
/*
|
|
* For tools that can co-exist in a single binary and their main() gets
|
|
* switched by the file name.
|
|
*/
|
|
#ifdef ENABLE_BOX
|
|
#define BOX_MAIN(name) name##_main
|
|
#define DECLARE_BOX_MAIN(name) int name##_main(int argc, char **argv)
|
|
|
|
/*
|
|
* Declarations of the built-in tools, pairing with actual definitions of the
|
|
* respective main function
|
|
*/
|
|
DECLARE_BOX_MAIN(mkfs);
|
|
DECLARE_BOX_MAIN(image);
|
|
DECLARE_BOX_MAIN(convert);
|
|
DECLARE_BOX_MAIN(btrfstune);
|
|
|
|
#else
|
|
#define BOX_MAIN(standalone) main
|
|
#endif
|
|
|
|
#endif
|