X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=Makefile;h=6369e8f4209c932bd502831d3e6b9bca0d320de6;hb=faaf70f1cc7ade1d6d5a41a900a3b58cc4bd5f58;hp=7d35245fa37e947dbbb5bfbf6768498a5dadd588;hpb=cd30857cebbb36a9a8c458de419610a46c3f3ca9;p=platform%2Fupstream%2Fbtrfs-progs.git diff --git a/Makefile b/Makefile index 7d35245..6369e8f 100644 --- a/Makefile +++ b/Makefile @@ -55,11 +55,17 @@ DEBUG_CFLAGS_DEFAULT = -O0 -U_FORTIFY_SOURCE -ggdb3 DEBUG_CFLAGS_INTERNAL = DEBUG_CFLAGS := -TOPDIR := $(shell pwd) +DEBUG_LDFLAGS_DEFAULT = +DEBUG_LDFLAGS_INTERNAL = +DEBUG_LDFLAGS := + +ABSTOPDIR = $(shell pwd) +TOPDIR := . # Common build flags +CSTD = -std=gnu90 CFLAGS = $(SUBST_CFLAGS) \ - -std=gnu90 \ + $(CSTD) \ -include config.h \ -DBTRFS_FLAT_INCLUDES \ -D_XOPEN_SOURCE=700 \ @@ -72,7 +78,9 @@ CFLAGS = $(SUBST_CFLAGS) \ $(EXTRA_CFLAGS) LDFLAGS = $(SUBST_LDFLAGS) \ - -rdynamic -L$(TOPDIR) $(EXTRA_LDFLAGS) + -rdynamic -L$(TOPDIR) \ + $(DEBUG_LDFLAGS_INTERNAL) \ + $(EXTRA_LDFLAGS) LIBS = $(LIBS_BASE) LIBBTRFS_LIBS = $(LIBS_BASE) @@ -85,11 +93,12 @@ STATIC_LIBS = $(STATIC_LIBS_BASE) # don't use FORTIFY with sparse because glibc with FORTIFY can # generate so many sparse errors that sparse stops parsing, # which masks real errors that we want to see. +# Note: additional flags might get added per-target later CHECKER := sparse check_defs := .cc-defines.h CHECKER_FLAGS := -include $(check_defs) -D__CHECKER__ \ -D__CHECK_ENDIAN__ -Wbitwise -Wuninitialized -Wshadow -Wundef \ - -U_FORTIFY_SOURCE + -U_FORTIFY_SOURCE -Wdeclaration-after-statement -Wdefault-bitfield-sign objects = ctree.o disk-io.o kernel-lib/radix-tree.o extent-tree.o print-tree.o \ root-tree.o dir-item.o file-item.o inode-item.o inode-map.o \ @@ -97,7 +106,7 @@ objects = ctree.o disk-io.o kernel-lib/radix-tree.o extent-tree.o print-tree.o \ qgroup.o free-space-cache.o kernel-lib/list_sort.o props.o \ kernel-shared/ulist.o qgroup-verify.o backref.o string-table.o task-utils.o \ inode.o file.o find-root.o free-space-tree.o help.o send-dump.o \ - fsfeatures.o kernel-lib/tables.o kernel-lib/raid56.o + fsfeatures.o kernel-lib/tables.o kernel-lib/raid56.o transaction.o cmds_objects = cmds-subvolume.o cmds-filesystem.o cmds-device.o cmds-scrub.o \ cmds-inspect.o cmds-balance.o cmds-send.o cmds-receive.o \ cmds-quota.o cmds-qgroup.o cmds-replace.o cmds-check.o \ @@ -113,8 +122,11 @@ libbtrfs_headers = send-stream.h send-utils.h send.h kernel-lib/rbtree.h btrfs-l kernel-lib/radix-tree.h kernel-lib/sizes.h kernel-lib/raid56.h \ extent-cache.h extent_io.h ioctl.h ctree.h btrfsck.h version.h convert_objects = convert/main.o convert/common.o convert/source-fs.o \ - convert/source-ext2.o + convert/source-ext2.o convert/source-reiserfs.o mkfs_objects = mkfs/main.o mkfs/common.o +image_objects = image/main.o image/sanitize.o +all_objects = $(objects) $(cmds_objects) $(libbtrfs_objects) $(convert_objects) \ + $(mkfs_objects) $(image_objects) TESTS = fsck-tests.sh convert-tests.sh @@ -135,6 +147,7 @@ endif ifeq ("$(origin D)", "command line") DEBUG_CFLAGS_INTERNAL = $(DEBUG_CFLAGS_DEFAULT) $(DEBUG_CFLAGS) + DEBUG_LDFLAGS_INTERNAL = $(DEBUG_LDFLAGS_DEFAULT) $(DEBUG_LDFLAGS) endif ifneq (,$(findstring verbose,$(D))) @@ -157,15 +170,17 @@ endif ifneq (,$(findstring asan,$(D))) DEBUG_CFLAGS_INTERNAL += -fsanitize=address + DEBUG_LDFLAGS_INTERNAL += -fsanitize=address -lasan endif ifneq (,$(findstring tsan,$(D))) - DEBUG_CFLAGS_INTERNAL += -fsanitize=thread -fPIE - LD_FLAGS += -fsanitize=thread -ltsan -pie + DEBUG_CFLAGS_INTERNAL += -fsanitize=thread -fPIC + DEBUG_LDFLAGS_INTERNAL += -fsanitize=thread -ltsan -pie endif ifneq (,$(findstring ubsan,$(D))) DEBUG_CFLAGS_INTERNAL += -fsanitize=undefined + DEBUG_LDFLAGS_INTERNAL += -fsanitize=undefined -lubsan endif ifneq (,$(findstring bcheck,$(D))) @@ -195,10 +210,14 @@ endif # external libs required by various binaries; for btrfs-foo, # specify btrfs_foo_libs = ; see $($(subst...)) rules below btrfs_convert_cflags = -DBTRFSCONVERT_EXT2=$(BTRFSCONVERT_EXT2) +btrfs_convert_cflags += -DBTRFSCONVERT_REISERFS=$(BTRFSCONVERT_REISERFS) btrfs_fragments_libs = -lgd -lpng -ljpeg -lfreetype btrfs_debug_tree_objects = cmds-inspect-dump-tree.o btrfs_show_super_objects = cmds-inspect-dump-super.o btrfs_calc_size_objects = cmds-inspect-tree-stats.o +cmds_restore_cflags = -DBTRFSRESTORE_ZSTD=$(BTRFSRESTORE_ZSTD) + +CHECKER_FLAGS += $(btrfs_convert_cflags) # collect values of the variables above standalone_deps = $(foreach dep,$(patsubst %,%_objects,$(subst -,_,$(filter btrfs-%, $(progs)))),$($(dep))) @@ -227,6 +246,7 @@ static_cmds_objects = $(patsubst %.o, %.static.o, $(cmds_objects)) static_libbtrfs_objects = $(patsubst %.o, %.static.o, $(libbtrfs_objects)) static_convert_objects = $(patsubst %.o, %.static.o, $(convert_objects)) static_mkfs_objects = $(patsubst %.o, %.static.o, $(mkfs_objects)) +static_image_objects = $(patsubst %.o, %.static.o, $(image_objects)) libs_shared = libbtrfs.so.0.1 libs_static = libbtrfs.a @@ -245,13 +265,14 @@ ifdef C grep -v __SIZE_TYPE__ > $(check_defs)) check = $(CHECKER) check_echo = echo + CSTD = -std=gnu89 else check = true check_echo = true endif %.o.d: %.c - $(Q)$(CC) -MD -MM -MG -MF $@ -MT $(@:.o.d=.o) -MT $(@:.o.d=.static.o) -MT $@ $(CFLAGS) $< + $(Q)$(CC) -MM -MG -MF $@ -MT $(@:.o.d=.o) -MT $(@:.o.d=.static.o) -MT $@ $(CFLAGS) $< # # Pick from per-file variables, btrfs_*_cflags @@ -359,25 +380,25 @@ $(lib_links): btrfs-%.static: btrfs-%.static.o $(static_objects) $(patsubst %.o,%.static.o,$(standalone_deps)) $(static_libbtrfs_objects) @echo " [LD] $@" - $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $@.o $(static_objects) \ + $(Q)$(CC) -o $@ $@.o $(static_objects) \ $(patsubst %.o, %.static.o, $($(subst -,_,$(subst .static,,$@)-objects))) \ $(static_libbtrfs_objects) $(STATIC_LDFLAGS) \ $($(subst -,_,$(subst .static,,$@)-libs)) $(STATIC_LIBS) btrfs-%: btrfs-%.o $(objects) $(standalone_deps) $(libs_static) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $(objects) $@.o \ + $(Q)$(CC) -o $@ $(objects) $@.o \ $($(subst -,_,$@-objects)) \ $(libs_static) \ $(LDFLAGS) $(LIBS) $($(subst -,_,$@-libs)) btrfs: btrfs.o $(objects) $(cmds_objects) $(libs_static) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_COMP) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_COMP) btrfs.static: btrfs.static.o $(static_objects) $(static_cmds_objects) $(static_libbtrfs_objects) @echo " [LD] $@" - $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) $(STATIC_LIBS_COMP) + $(Q)$(CC) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) $(STATIC_LIBS_COMP) # For backward compatibility, 'btrfs' changes behaviour to fsck if it's named 'btrfsck' btrfsck: btrfs @@ -390,43 +411,43 @@ btrfsck.static: btrfs.static mkfs.btrfs: $(mkfs_objects) $(objects) $(libs_static) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) mkfs.btrfs.static: $(static_mkfs_objects) $(static_objects) $(static_libbtrfs_objects) @echo " [LD] $@" - $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) + $(Q)$(CC) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) btrfstune: btrfstune.o $(objects) $(libs_static) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) btrfstune.static: btrfstune.static.o $(static_objects) $(static_libbtrfs_objects) @echo " [LD] $@" - $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) + $(Q)$(CC) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) -btrfs-image: image/main.o $(objects) $(libs_static) +btrfs-image: $(image_objects) $(objects) $(libs_static) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_COMP) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_COMP) -btrfs-image.static: image/main.static.o $(static_objects) $(static_libbtrfs_objects) +btrfs-image.static: $(static_image_objects) $(static_objects) $(static_libbtrfs_objects) @echo " [LD] $@" - $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) $(STATIC_LIBS_COMP) + $(Q)$(CC) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) $(STATIC_LIBS_COMP) btrfs-convert: $(convert_objects) $(objects) $(libs_static) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(btrfs_convert_libs) $(LIBS) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(btrfs_convert_libs) $(LIBS) btrfs-convert.static: $(static_convert_objects) $(static_objects) $(static_libbtrfs_objects) @echo " [LD] $@" - $(Q)$(CC) $(STATIC_CFLAGS) -o $@ $^ $(STATIC_LDFLAGS) $(btrfs_convert_libs) $(STATIC_LIBS) + $(Q)$(CC) -o $@ $^ $(STATIC_LDFLAGS) $(btrfs_convert_libs) $(STATIC_LIBS) dir-test: dir-test.o $(objects) $(libs) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) quick-test: quick-test.o $(objects) $(libs) @echo " [LD] $@" - $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) $(LIBS) + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) ioctl-test.o: ioctl-test.c ioctl.h kerncompat.h ctree.h @echo " [CC] $@" @@ -448,13 +469,13 @@ ioctl-test: ioctl-test.o ioctl-test-32: ioctl-test-32.o @echo " [LD32] $@" - $(Q)$(CC) $(CFLAGS) -m32 -o $@ $< $(LDFLAGS) + $(Q)$(CC) -m32 -o $@ $< $(LDFLAGS) @echo " ?[PAHOLE] $@.pahole" -$(Q)pahole $@ > $@.pahole ioctl-test-64: ioctl-test-64.o @echo " [LD64] $@" - $(Q)$(CC) $(CFLAGS) -m64 -o $@ $< $(LDFLAGS) + $(Q)$(CC) -m64 -o $@ $< $(LDFLAGS) @echo " ?[PAHOLE] $@.pahole" -$(Q)pahole $@ > $@.pahole @@ -468,7 +489,7 @@ library-test: library-test.c $(libs_shared) @echo " [TEST PREP] $@"$(eval TMPD=$(shell mktemp -d)) $(Q)mkdir -p $(TMPD)/include/btrfs && \ cp $(libbtrfs_headers) $(TMPD)/include/btrfs && \ - cd $(TMPD) && $(CC) -I$(TMPD)/include -o $@ $(addprefix $(TOPDIR)/,$^) -Wl,-rpath=$(TOPDIR) -lbtrfs + cd $(TMPD) && $(CC) -I$(TMPD)/include -o $@ $(addprefix $(ABSTOPDIR)/,$^) -Wl,-rpath=$(ABSTOPDIR) -lbtrfs @echo " [TEST RUN] $@" $(Q)cd $(TMPD) && ./$@ @echo " [TEST CLEAN] $@" @@ -478,14 +499,14 @@ library-test.static: library-test.c $(libs_static) @echo " [TEST PREP] $@"$(eval TMPD=$(shell mktemp -d)) $(Q)mkdir -p $(TMPD)/include/btrfs && \ cp $(libbtrfs_headers) $(TMPD)/include/btrfs && \ - cd $(TMPD) && $(CC) -I$(TMPD)/include -o $@ $(addprefix $(TOPDIR)/,$^) $(STATIC_LDFLAGS) $(STATIC_LIBS) + cd $(TMPD) && $(CC) -I$(TMPD)/include -o $@ $(addprefix $(ABSTOPDIR)/,$^) $(STATIC_LDFLAGS) $(STATIC_LIBS) @echo " [TEST RUN] $@" $(Q)cd $(TMPD) && ./$@ @echo " [TEST CLEAN] $@" $(Q)$(RM) -rf -- $(TMPD) fssum: tests/fssum.c tests/sha224-256.c - @echo " [LD] $@" + @echo " [LD] $@" $(Q)$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) test-build: test-build-pre test-build-real @@ -581,5 +602,5 @@ uninstall: cd $(DESTDIR)$(bindir); $(RM) -f -- btrfsck fsck.btrfs $(progs_install) ifneq ($(MAKECMDGOALS),clean) --include $(objects:.o=.o.d) $(cmds_objects:.o=.o.d) $(subst .btrfs,, $(filter-out btrfsck.o.d, $(progs:=.o.d))) +-include $(all_objects:.o=.o.d) $(subst .btrfs,, $(filter-out btrfsck.o.d, $(progs:=.o.d))) endif