]> git.sesse.net Git - bcachefs-tools-debian/blob - Makefile
cd338fa06cb78e79aeb29b06216bac85cc074da4
[bcachefs-tools-debian] / Makefile
1
2 PREFIX=/usr
3 INSTALL=install
4 CFLAGS+=-std=gnu89 -O2 -g -MMD -Wall                            \
5         -Wno-pointer-sign                                       \
6         -fno-strict-aliasing                                    \
7         -I. -Iinclude -Ilibbcachefs                             \
8         -D_FILE_OFFSET_BITS=64                                  \
9         -D_GNU_SOURCE                                           \
10         -D_LGPL_SOURCE                                          \
11         -DRCU_MEMBARRIER                                        \
12         -DNO_BCACHE_CHARDEV                                     \
13         -DNO_BCACHE_FS                                          \
14         -DNO_BCACHE_SYSFS                                       \
15         $(EXTRA_CFLAGS)
16 LDFLAGS+=-O2 -g
17
18 CC_VERSION=$(shell $(CC) -v 2>&1|grep -E '(gcc|clang) version')
19
20 ifneq (,$(findstring gcc,$(CC_VERSION)))
21         CFLAGS+=-Wno-unused-but-set-variable
22 ifndef D
23         CFLAGS+=-flto
24         LDFLAGS+=-flto
25 endif
26 endif
27
28 ifneq (,$(findstring clang,$(CC_VERSION)))
29         CFLAGS+=-Wno-missing-braces
30 endif
31
32 ifdef D
33         CFLAGS+=-Werror
34         CFLAGS+=-DCONFIG_BCACHEFS_DEBUG=y
35 endif
36
37 PKGCONFIG_LIBS="blkid uuid liburcu libsodium zlib"
38 CFLAGS+=`pkg-config --cflags    ${PKGCONFIG_LIBS}`
39 LDLIBS+=`pkg-config --libs      ${PKGCONFIG_LIBS}`              \
40         -lm -lpthread -lrt -lscrypt -lkeyutils -laio
41
42 ifeq ($(PREFIX),/usr)
43         ROOT_SBINDIR=/sbin
44 else
45         ROOT_SBINDIR=$(PREFIX)/sbin
46 endif
47
48 .PHONY: all
49 all: bcachefs
50
51 SRCS=bcachefs.c                         \
52      cmd_assemble.c                     \
53      cmd_debug.c                        \
54      cmd_device.c                       \
55      cmd_fs.c                           \
56      cmd_fsck.c                         \
57      cmd_format.c                       \
58      cmd_key.c                          \
59      cmd_migrate.c                      \
60      cmd_run.c                          \
61      crypto.c                           \
62      libbcachefs.c                      \
63      qcow2.c                            \
64      tools-util.c                       \
65      libbcachefs/alloc.c                \
66      libbcachefs/bkey.c                 \
67      libbcachefs/bkey_methods.c         \
68      libbcachefs/bset.c                 \
69      libbcachefs/btree_cache.c          \
70      libbcachefs/btree_gc.c             \
71      libbcachefs/btree_io.c             \
72      libbcachefs/btree_iter.c           \
73      libbcachefs/btree_update_interior.c\
74      libbcachefs/btree_update_leaf.c    \
75      libbcachefs/buckets.c              \
76      libbcachefs/checksum.c             \
77      libbcachefs/clock.c                \
78      libbcachefs/compress.c             \
79      libbcachefs/debug.c                \
80      libbcachefs/dirent.c               \
81      libbcachefs/error.c                \
82      libbcachefs/extents.c              \
83      libbcachefs/fsck.c                 \
84      libbcachefs/inode.c                \
85      libbcachefs/io.c                   \
86      libbcachefs/journal.c              \
87      libbcachefs/keylist.c              \
88      libbcachefs/lz4_compress.c         \
89      libbcachefs/lz4_decompress.c       \
90      libbcachefs/migrate.c              \
91      libbcachefs/move.c                 \
92      libbcachefs/movinggc.c             \
93      libbcachefs/opts.c                 \
94      libbcachefs/siphash.c              \
95      libbcachefs/six.c                  \
96      libbcachefs/super.c                \
97      libbcachefs/super-io.c             \
98      libbcachefs/tier.c                 \
99      libbcachefs/trace.c                \
100      libbcachefs/util.c                 \
101      libbcachefs/xattr.c                \
102      $(wildcard linux/*.c linux/*/*.c)  \
103      $(wildcard ccan/*/*.c)
104
105 DEPS=$(SRCS:.c=.d)
106 -include $(DEPS)
107
108 OBJS=$(SRCS:.c=.o)
109 bcachefs: $(OBJS)
110
111 .PHONY: install
112 install: bcachefs
113         mkdir -p $(DESTDIR)$(ROOT_SBINDIR)
114         mkdir -p $(DESTDIR)$(PREFIX)/share/man/man8/
115         $(INSTALL) -m0755 bcachefs      $(DESTDIR)$(ROOT_SBINDIR)
116         $(INSTALL) -m0755 fsck.bcachefs $(DESTDIR)$(ROOT_SBINDIR)
117         $(INSTALL) -m0755 mkfs.bcachefs $(DESTDIR)$(ROOT_SBINDIR)
118         $(INSTALL) -m0644 bcachefs.8    $(DESTDIR)$(PREFIX)/share/man/man8/
119
120 .PHONY: clean
121 clean:
122         $(RM) bcachefs $(OBJS) $(DEPS)
123
124 .PHONY: deb
125 deb: all
126         debuild --unsigned-source       \
127                 --unsigned-changes      \
128                 --no-pre-clean          \
129                 --build=binary          \
130                 --diff-ignore           \
131                 --tar-ignore
132
133 .PHONE: update-bcachefs-sources
134 update-bcachefs-sources:
135         echo `cd $(LINUX_DIR); git rev-parse HEAD` > .bcachefs_revision
136         cp $(LINUX_DIR)/fs/bcachefs/*.[ch] libbcachefs/
137         cp $(LINUX_DIR)/include/trace/events/bcachefs.h include/trace/events/
138
139 .PHONE: update-commit-bcachefs-sources
140 update-commit-bcachefs-sources: update-bcachefs-sources
141         git commit -m "Update bcachefs sources to `cd $(LINUX_DIR); git show --oneline --no-patch`"\
142                 .bcachefs_revision libbcachefs/