2 # mdadm - manage Linux "md" devices aka RAID arrays.
4 # Copyright (C) 2001-2002 Neil Brown <neilb@cse.unsw.edu.au>
7 # This program is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 2 of the License, or
10 # (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 # Email: <neilb@cse.unsw.edu.au>
24 # School of Computer Science and Engineering
25 # The University of New South Wales
30 # define "CXFLAGS" to give extra flags to CC.
31 # e.g. make CXFLAGS=-O to optimise
33 UCLIBC_GCC
= $(shell for nm in i386-uclibc-linux-gcc i386-uclibc-gcc
; do which
$$nm > /dev
/null
&& { echo
$$nm ; exit
; } ; done
; echo false No uclibc found
)
35 # sorry, but diet-libc doesn't know about posix_memalign,
36 # so we cannot use it any more.
37 DIET_GCC
= gcc
-DHAVE_STDINT_H
39 KLIBC
=/home
/src
/klibc
/klibc-0.77
41 KLIBC_GCC
= gcc
-nostdinc
-iwithprefix
include -I
$(KLIBC
)/klibc
/include -I
$(KLIBC
)/linux
/include -I
$(KLIBC
)/klibc
/arch
/i386
/include -I
$(KLIBC
)/klibc
/include/bits32
43 CC
= $(CROSS_COMPILE
)gcc
45 CWFLAGS
= -Wall
-Werror
-Wstrict-prototypes
47 CWFLAGS
+= -Wp
,-D_FORTIFY_SOURCE
=2 -O
55 ifdef DEFAULT_OLD_METADATA
56 CPPFLAG
+= -DDEFAULT_OLD_METADATA
63 CONFFILE
= $(SYSCONFDIR
)/mdadm.conf
64 CONFFILE2
= $(SYSCONFDIR
)/mdadm
/mdadm.conf
65 MAILCMD
=/usr
/sbin
/sendmail
-t
66 CONFFILEFLAGS
= -DCONFFILE
=\"$(CONFFILE
)\" -DCONFFILE2
=\"$(CONFFILE2
)\"
67 # ALT_RUN should be somewhere that persists across the pivotroot
68 # from early boot to late boot.
69 # If you don't have /lib/init/rw you might want to use /dev/.something
70 # e.g. make ALT_RUN=/dev/.mdadm
71 ALT_RUN
= /lib
/init
/rw
/mdadm
73 VAR_RUN
= /var
/run
/mdadm
74 ALTFLAGS
= -DALT_RUN
=\"$(ALT_RUN
)\" -DALT_MAPFILE
=\"$(ALT_MAPFILE
)\"
75 VARFLAGS
= -DVAR_RUN
=\"$(VAR_RUN
)\"
76 CFLAGS
= $(CWFLAGS
) $(CXFLAGS
) -DSendmail
=\""$(MAILCMD)"\" $(CONFFILEFLAGS
) $(ALTFLAGS
) $(VARFLAGS
)
78 # If you want a static binary, you might uncomment these
82 INSTALL
= /usr
/bin
/install
85 MANDIR
= /usr
/share
/man
86 MAN4DIR
= $(MANDIR
)/man4
87 MAN5DIR
= $(MANDIR
)/man5
88 MAN8DIR
= $(MANDIR
)/man8
90 OBJS
= mdadm.o config.o mdstat.o ReadMe.o util.o Manage.o Assemble.o Build.o \
91 Create.o Detail.o Examine.o Grow.o Monitor.o dlink.o Kill.o Query.o \
93 mdopen.o super0.o super1.o super-ddf.o super-intel.o bitmap.o \
94 restripe.o sysfs.o sha1.o mapfile.o crc32.o sg_io.o msg.o \
95 platform-intel.o probe_roms.o
97 SRCS
= mdadm.c config.c mdstat.c ReadMe.c util.c Manage.c Assemble.c Build.c \
98 Create.c Detail.c Examine.c Grow.c Monitor.c dlink.c Kill.c Query.c \
100 mdopen.c super0.c super1.c super-ddf.c super-intel.c bitmap.c \
101 restripe.c sysfs.c sha1.c mapfile.c crc32.c sg_io.c msg.c \
102 platform-intel.c probe_roms.c
104 MON_OBJS
= mdmon.o monitor.o managemon.o util.o mdstat.o sysfs.o config.o \
105 Kill.o sg_io.o dlink.o ReadMe.o super0.o super1.o super-intel.o \
106 super-ddf.o sha1.o crc32.o msg.o bitmap.o \
107 platform-intel.o probe_roms.o
109 MON_SRCS
= mdmon.c monitor.c managemon.c util.c mdstat.c sysfs.c config.c \
110 Kill.c sg_io.c dlink.c ReadMe.c super0.c super1.c super-intel.c \
111 super-ddf.c sha1.c crc32.c msg.c bitmap.c \
112 platform-intel.c probe_roms.c
117 ASSEMBLE_SRCS
:= mdassemble.c Assemble.c Manage.c config.c dlink.c util.c \
118 super0.c super1.c super-ddf.c super-intel.c sha1.c crc32.c sg_io.c mdstat.c \
119 platform-intel.c probe_roms.c sysfs.c
120 ASSEMBLE_AUTO_SRCS
:= mdopen.c
121 ASSEMBLE_FLAGS
:= $(CFLAGS
) -DMDASSEMBLE
122 ifdef MDASSEMBLE_AUTO
123 ASSEMBLE_SRCS
+= $(ASSEMBLE_AUTO_SRCS
)
124 ASSEMBLE_FLAGS
+= -DMDASSEMBLE_AUTO
127 all : mdadm mdmon mdadm.man md.man mdadm.conf.man mdmon.man
129 everything
: all mdadm.static swap_super test_stripe \
130 mdassemble mdassemble.auto mdassemble.static mdassemble.man \
132 everything-test
: all mdadm.static swap_super test_stripe \
133 mdassemble.auto mdassemble.static mdassemble.man \
135 # mdadm.uclibc and mdassemble.uclibc don't work on x86-64
136 # mdadm.tcc doesn't work..
139 $(CC
) $(LDFLAGS
) -o mdadm
$(OBJS
) $(LDLIBS
)
141 mdadm.static
: $(OBJS
) $(STATICOBJS
)
142 $(CC
) $(LDFLAGS
) -static
-o mdadm.static
$(OBJS
) $(STATICOBJS
)
144 mdadm.tcc
: $(SRCS
) mdadm.h
145 $(TCC
) -o mdadm.tcc
$(SRCS
)
147 mdadm.klibc
: $(SRCS
) mdadm.h
149 $(CC
) -nostdinc
-iwithprefix
include -I
$(KLIBC
)/klibc
/include -I
$(KLIBC
)/linux
/include -I
$(KLIBC
)/klibc
/arch
/i386
/include -I
$(KLIBC
)/klibc
/include/bits32
$(CFLAGS
) $(SRCS
)
151 mdadm.Os
: $(SRCS
) mdadm.h
152 $(CC
) -o mdadm.Os
$(CFLAGS
) -DHAVE_STDINT_H
-Os
$(SRCS
)
154 mdadm.O2
: $(SRCS
) mdadm.h mdmon.O2
155 $(CC
) -o mdadm.O2
$(CFLAGS
) -DHAVE_STDINT_H
-O2
-D_FORTIFY_SOURCE
=2 $(SRCS
)
157 mdmon.O2
: $(MON_SRCS
) mdadm.h mdmon.h
158 $(CC
) -o mdmon.O2
$(CFLAGS
) -DHAVE_STDINT_H
-O2
-D_FORTIFY_SOURCE
=2 $(MON_SRCS
)
160 # use '-z now' to guarantee no dynamic linker interactions with the monitor thread
162 $(CC
) $(LDFLAGS
) -z now
-o mdmon
$(MON_OBJS
) $(LDLIBS
)
165 test_stripe
: restripe.c mdadm.h
166 $(CC
) $(CXFLAGS
) $(LDFLAGS
) -o test_stripe
-DMAIN restripe.c
168 mdassemble
: $(ASSEMBLE_SRCS
) mdadm.h
170 $(DIET_GCC
) $(ASSEMBLE_FLAGS
) -o mdassemble
$(ASSEMBLE_SRCS
) $(STATICSRC
)
172 mdassemble.static
: $(ASSEMBLE_SRCS
) mdadm.h
174 $(CC
) $(LDFLAGS
) $(ASSEMBLE_FLAGS
) -static
-DHAVE_STDINT_H
-o mdassemble.static
$(ASSEMBLE_SRCS
) $(STATICSRC
)
176 mdassemble.auto
: $(ASSEMBLE_SRCS
) mdadm.h
$(ASSEMBLE_AUTO_SRCS
)
177 rm -f mdassemble.static
178 $(MAKE
) MDASSEMBLE_AUTO
=1 mdassemble.static
179 mv mdassemble.static mdassemble.auto
181 mdassemble.uclibc
: $(ASSEMBLE_SRCS
) mdadm.h
183 $(UCLIBC_GCC
) $(ASSEMBLE_FLAGS
) -DUCLIBC
-DHAVE_STDINT_H
-static
-o mdassemble.uclibc
$(ASSEMBLE_SRCS
) $(STATICSRC
)
186 mdassemble.klibc
: $(ASSEMBLE_SRCS
) mdadm.h
188 $(KLIBC_GCC
) $(ASSEMBLE_FLAGS
) -o mdassemble
$(ASSEMBLE_SRCS
)
191 sed
-e
's/{DEFAULT_METADATA}/$(DEFAULT_METADATA)/g' mdadm
.8.in
> mdadm
.8
194 nroff
-man mdadm
.8 > mdadm.man
197 nroff
-man mdmon
.8 > mdmon.man
200 nroff
-man md
.4 > md.man
202 mdadm.conf.man
: mdadm.conf
.5
203 nroff
-man mdadm.conf
.5 > mdadm.conf.man
205 mdassemble.man
: mdassemble
.8
206 nroff
-man mdassemble
.8 > mdassemble.man
208 $(OBJS
) : mdadm.h mdmon.h bitmap.h
209 $(MON_OBJS
) : mdadm.h mdmon.h bitmap.h
211 sha1.o
: sha1.c sha1.h md5.h
212 $(CC
) $(CFLAGS
) -DHAVE_STDINT_H
-o sha1.o
-c sha1.c
214 install : mdadm mdmon install-man install-udev
215 $(INSTALL
) -D
$(STRIP
) -m
755 mdadm
$(DESTDIR
)$(BINDIR
)/mdadm
216 $(INSTALL
) -D
$(STRIP
) -m
755 mdmon
$(DESTDIR
)$(BINDIR
)/mdmon
218 install-static
: mdadm.static install-man
219 $(INSTALL
) -D
$(STRIP
) -m
755 mdadm.static
$(DESTDIR
)$(BINDIR
)/mdadm
221 install-tcc
: mdadm.tcc install-man
222 $(INSTALL
) -D
$(STRIP
) -m
755 mdadm.tcc
$(DESTDIR
)$(BINDIR
)/mdadm
224 install-uclibc
: mdadm.uclibc install-man
225 $(INSTALL
) -D
$(STRIP
) -m
755 mdadm.uclibc
$(DESTDIR
)$(BINDIR
)/mdadm
227 install-klibc
: mdadm.klibc install-man
228 $(INSTALL
) -D
$(STRIP
) -m
755 mdadm.klibc
$(DESTDIR
)$(BINDIR
)/mdadm
230 install-man
: mdadm
.8 md
.4 mdadm.conf
.5 mdmon
.8
231 $(INSTALL
) -D
-m
644 mdadm
.8 $(DESTDIR
)$(MAN8DIR
)/mdadm
.8
232 $(INSTALL
) -D
-m
644 mdmon
.8 $(DESTDIR
)$(MAN8DIR
)/mdmon
.8
233 $(INSTALL
) -D
-m
644 md
.4 $(DESTDIR
)$(MAN4DIR
)/md
.4
234 $(INSTALL
) -D
-m
644 mdadm.conf
.5 $(DESTDIR
)$(MAN5DIR
)/mdadm.conf
.5
236 install-udev
: udev-md-raid.rules
237 $(INSTALL
) -D
-m
644 udev-md-raid.rules
$(DESTDIR
)/lib
/udev
/rules.d
/64-md-raid.rules
240 rm -f
$(DESTDIR
)$(MAN8DIR
)/mdadm
.8 $(DESTDIR
)$(MAN8DIR
)/mdmon
.8 $(DESTDIR
)$(MAN4DIR
)/md
.4 $(DESTDIR
)$(MAN5DIR
)/mdadm.conf
.5 $(DESTDIR
)$(BINDIR
)/mdadm
242 test: mdadm mdmon test_stripe swap_super
243 @echo
"Please run 'sh ./test' as root"
246 rm -f mdadm mdmon
$(OBJS
) $(MON_OBJS
) $(STATICOBJS
) core
*.man \
247 mdadm.tcc mdadm.uclibc mdadm.static
*.orig
*.porig
*.rej
*.alt .merge_file_
* \
248 mdadm.Os mdadm.O2 mdmon.O2 \
249 mdassemble mdassemble.static mdassemble.auto mdassemble.uclibc \
250 mdassemble.klibc swap_super \
251 init.cpio.gz mdadm.uclibc.static test_stripe mdmon
256 testdist
: everything-test
clean
262 DISTRO_MAKEFILE
:= $(wildcard distropkg
/Makefile
)
263 ifdef DISTRO_MAKEFILE
264 include $(DISTRO_MAKEFILE
)