]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/blob - scrub/Makefile
xfs: preserve rmapbt swapext block reservation from freed blocks
[thirdparty/xfsprogs-dev.git] / scrub / Makefile
1 # SPDX-License-Identifier: GPL-2.0
2 # Copyright (C) 2018 Oracle. All Rights Reserved.
3 #
4
5 TOPDIR = ..
6 builddefs=$(TOPDIR)/include/builddefs
7 include $(builddefs)
8
9 # On linux we get fsmap from the system or define it ourselves
10 # so include this based on platform type. If this reverts to only
11 # the autoconf check w/o local definition, change to testing HAVE_GETFSMAP
12 SCRUB_PREREQS=$(HAVE_OPENAT)$(HAVE_FSTATAT)
13
14 ifeq ($(SCRUB_PREREQS),yesyes)
15 LTCOMMAND = xfs_scrub
16 INSTALL_SCRUB = install-scrub
17 XFS_SCRUB_ALL_PROG = xfs_scrub_all
18 XFS_SCRUB_ARGS = -b -n
19 ifeq ($(HAVE_SYSTEMD),yes)
20 INSTALL_SCRUB += install-systemd
21 SYSTEMD_SERVICES = xfs_scrub@.service xfs_scrub_all.service xfs_scrub_all.timer xfs_scrub_fail@.service
22 OPTIONAL_TARGETS += $(SYSTEMD_SERVICES)
23 endif
24 ifeq ($(HAVE_CROND),yes)
25 INSTALL_SCRUB += install-crond
26 CRONTABS = xfs_scrub_all.cron
27 OPTIONAL_TARGETS += $(CRONTABS)
28 # Don't enable the crontab by default for now
29 CROND_DIR = $(PKG_LIB_DIR)/$(PKG_NAME)
30 endif
31
32 endif # scrub_prereqs
33
34 HFILES = \
35 common.h \
36 counter.h \
37 descr.h \
38 disk.h \
39 filemap.h \
40 fscounters.h \
41 inodes.h \
42 progress.h \
43 read_verify.h \
44 repair.h \
45 scrub.h \
46 spacemap.h \
47 unicrash.h \
48 vfs.h \
49 xfs_scrub.h
50
51 CFILES = \
52 common.c \
53 counter.c \
54 descr.c \
55 disk.c \
56 filemap.c \
57 fscounters.c \
58 inodes.c \
59 phase1.c \
60 phase2.c \
61 phase3.c \
62 phase4.c \
63 phase5.c \
64 phase6.c \
65 phase7.c \
66 progress.c \
67 read_verify.c \
68 repair.c \
69 scrub.c \
70 spacemap.c \
71 vfs.c \
72 xfs_scrub.c
73
74 LLDLIBS += $(LIBHANDLE) $(LIBFROG) $(LIBPTHREAD) $(LIBICU_LIBS) $(LIBRT)
75 LTDEPENDENCIES += $(LIBHANDLE) $(LIBFROG)
76 LLDFLAGS = -static
77
78 ifeq ($(HAVE_MALLINFO),yes)
79 LCFLAGS += -DHAVE_MALLINFO
80 endif
81
82 ifeq ($(HAVE_SYNCFS),yes)
83 LCFLAGS += -DHAVE_SYNCFS
84 endif
85
86 ifeq ($(HAVE_LIBATTR),yes)
87 LCFLAGS += -DHAVE_LIBATTR
88 endif
89
90 ifeq ($(HAVE_LIBICU),yes)
91 CFILES += unicrash.c
92 LCFLAGS += -DHAVE_LIBICU $(LIBICU_CFLAGS)
93 endif
94
95 ifeq ($(HAVE_SG_IO),yes)
96 LCFLAGS += -DHAVE_SG_IO
97 endif
98
99 ifeq ($(HAVE_HDIO_GETGEO),yes)
100 LCFLAGS += -DHAVE_HDIO_GETGEO
101 endif
102
103 LDIRT = $(XFS_SCRUB_ALL_PROG) *.service *.cron
104
105 default: depend $(LTCOMMAND) $(XFS_SCRUB_ALL_PROG) $(OPTIONAL_TARGETS)
106
107 xfs_scrub_all: xfs_scrub_all.in $(builddefs)
108 @echo " [SED] $@"
109 $(Q)$(SED) -e "s|@sbindir@|$(PKG_SBIN_DIR)|g" \
110 -e "s|@pkg_version@|$(PKG_VERSION)|g" \
111 -e "s|@scrub_args@|$(XFS_SCRUB_ARGS)|g" < $< > $@
112 $(Q)chmod a+x $@
113
114 phase5.o unicrash.o xfs.o: $(builddefs)
115
116 include $(BUILDRULES)
117
118 install: $(INSTALL_SCRUB)
119
120 %.service: %.service.in $(builddefs)
121 @echo " [SED] $@"
122 $(Q)$(SED) -e "s|@sbindir@|$(PKG_SBIN_DIR)|g" \
123 -e "s|@scrub_args@|$(XFS_SCRUB_ARGS)|g" \
124 -e "s|@pkg_lib_dir@|$(PKG_LIB_DIR)|g" \
125 -e "s|@pkg_name@|$(PKG_NAME)|g" < $< > $@
126
127 %.cron: %.cron.in $(builddefs)
128 @echo " [SED] $@"
129 $(Q)$(SED) -e "s|@sbindir@|$(PKG_SBIN_DIR)|g" < $< > $@
130
131 install-systemd: default $(SYSTEMD_SERVICES)
132 $(INSTALL) -m 755 -d $(SYSTEMD_SYSTEM_UNIT_DIR)
133 $(INSTALL) -m 644 $(SYSTEMD_SERVICES) $(SYSTEMD_SYSTEM_UNIT_DIR)
134 $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/$(PKG_NAME)
135 $(INSTALL) -m 755 xfs_scrub_fail $(PKG_LIB_DIR)/$(PKG_NAME)
136
137 install-crond: default $(CRONTABS)
138 $(INSTALL) -m 755 -d $(CROND_DIR)
139 $(INSTALL) -m 644 $(CRONTABS) $(CROND_DIR)
140
141 install-scrub: default
142 $(INSTALL) -m 755 -d $(PKG_SBIN_DIR)
143 $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_SBIN_DIR)
144 $(INSTALL) -m 755 $(XFS_SCRUB_ALL_PROG) $(PKG_SBIN_DIR)
145
146 install-dev:
147
148 -include .dep