diff options
author | Ian Kumlien <pomac@demius.net> | 2013-01-26 00:12:28 +0100 |
---|---|---|
committer | David Sterba <dsterba@suse.cz> | 2013-02-12 15:22:55 +0100 |
commit | 6e0ade17670e319e486df4c6d5fb438d22dc98fa (patch) | |
tree | a6508f570717e188e02d5dba3a9342f7661d28d9 /Makefile | |
parent | 50e3ff573c65b563252d390d21b10b16d406f189 (diff) |
Btrfs-progs: add static compile target
Sometimes, when you least expect it, a static binary is what you need to
rescue your data... Or just get a good enough handle on things to make
it work again ;)
"make static" is a gift to you, dear user with filesystem problems!
Anyway, on a more serious note, changed the cflags and ldflags so that
we create a smaller binary, 1.1MB stripped on my 64 bit system
(2.7MB with debug data)
Signed-off-by: Ian Kumlien <pomac@demius.net>
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 27 |
1 files changed, 26 insertions, 1 deletions
@@ -39,6 +39,16 @@ progs = btrfsctl mkfs.btrfs btrfs-debug-tree btrfs-show btrfs-vol btrfsck \ btrfs btrfs-map-logical btrfs-image btrfs-zero-log btrfs-convert \ btrfs-find-root btrfs-restore btrfstune btrfs-show-super +# Create all the static targets +static_objects = $(patsubst %.o, %.static.o, $(objects)) +static_cmds_objects = $(patsubst %.o, %.static.o, $(cmds_objects)) +static_progs = $(patsubst %.o, %.static.o, $(progs)) + +# Define static compilation flags +STATIC_CFLAGS = $(CFLAGS) -ffunction-sections -fdata-sections +STATIC_LDFLAGS = -static -Wl,--gc-sections +STATIC_LIBS = $(LIBS) -lpthread + # make C=1 to enable sparse ifdef C check = sparse $(CHECKFLAGS) @@ -51,9 +61,18 @@ endif @echo " [CC] $@" $(Q)$(CC) $(DEPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c $< +%.static.o: %.c + @echo " [CC] $@" + $(Q)$(CC) $(DEPFLAGS) $(AM_CFLAGS) $(STATIC_CFLAGS) -c $< -o $@ all: version.h $(progs) manpages +# +# NOTE: For static compiles, you need to have all the required libs +# static equivalent available +# +static: version.h btrfs.static + version.h: $(Q)bash version.sh @@ -62,6 +81,11 @@ btrfs: $(objects) btrfs.o help.o $(cmds_objects) $(Q)$(CC) $(CFLAGS) -o btrfs btrfs.o help.o $(cmds_objects) \ $(objects) $(LDFLAGS) $(LIBS) -lpthread +btrfs.static: $(static_objects) btrfs.static.o help.static.o $(static_cmds_objects) + @echo " [LD] $@" + $(Q)$(CC) $(STATIC_CFLAGS) -o btrfs.static btrfs.static.o help.static.o $(static_cmds_objects) \ + $(static_objects) $(STATIC_LDFLAGS) $(STATIC_LIBS) + calc-size: $(objects) calc-size.o @echo " [LD] $@" $(Q)$(CC) $(CFLAGS) -o calc-size calc-size.o $(objects) $(LDFLAGS) $(LIBS) @@ -151,7 +175,8 @@ install-man: clean : @echo "Cleaning" $(Q)rm -f $(progs) cscope.out *.o .*.d btrfs-convert btrfs-image btrfs-select-super \ - btrfs-zero-log btrfstune dir-test ioctl-test quick-test version.h + btrfs-zero-log btrfstune dir-test ioctl-test quick-test btrfs.static \ + version.h $(Q)$(MAKE) $(MAKEOPTS) -C man $@ install: $(progs) install-man |