1# 2# Makefile for the tests directory 3# 4 5srcdir = . 6top_srcdir = .. 7 8top_builddir = .. 9my_dir = tests 10INSTALL = /usr/bin/install -c 11 12# Beginning of file MCONFIG 13 14all:: 15 16check:: 17 18SHELL = /bin/sh 19 20COMPRESS_EXT = gz bz2 bz Z 21 22prefix = /usr 23root_prefix = 24exec_prefix = ${prefix} 25root_bindir = ${root_prefix}/bin 26root_sbindir = ${root_prefix}/sbin 27root_libdir = ${root_prefix}/lib 28datarootdir = ${prefix}/share 29bindir = ${exec_prefix}/bin 30sbindir = ${exec_prefix}/sbin 31libdir = ${exec_prefix}/lib 32datadir= ${datarootdir} 33localedir = $(datadir)/locale 34root_sysconfdir= ${root_prefix}/etc 35includedir = ${prefix}/include 36mandir = ${datarootdir}/man 37man1dir = $(mandir)/man1 38man3dir = $(mandir)/man3 39man5dir = $(mandir)/man5 40man8dir = $(mandir)/man8 41infodir = ${datarootdir}/info 42datadir = ${datarootdir} 43 44 45 46CROSS_COMPILER = mipsel-linux- 47CC = $(CROSS_COMPILER)gcc 48BUILD_CC = $(CC) 49DEFS = -DLOCALEDIR=\"$(localedir)\" -DROOT_SYSCONFDIR=\"$(root_sysconfdir)\" -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DENABLE_HTREE=1 -DENABLE_SWAPFS=1 -DTLS= -DUSE_UUIDD=1 -DPACKAGE=\"e2fsprogs\" -DVERSION=\"0.14.1\" -DHAVE_LONG_LONG=1 -DHAVE_LONG_DOUBLE=1 -DHAVE_WCHAR_T=1 -DHAVE_WINT_T=1 -DHAVE_INTTYPES_H_WITH_UINTMAX=1 -DHAVE_STDINT_H_WITH_UINTMAX=1 -DHAVE_INTMAX_T=1 -DHAVE_POSIX_PRINTF=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_STDLIB_H=1 -DHAVE_UNISTD_H=1 -DHAVE_GETPAGESIZE=1 -DHAVE_MMAP=1 -DINTDIV0_RAISES_SIGFPE=1 -DHAVE_UNSIGNED_LONG_LONG=1 -DHAVE_UINTMAX_T=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDINT_H=1 -DHAVE_ARGZ_H=1 -DHAVE_LIMITS_H=1 -DHAVE_LOCALE_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_STDDEF_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_UNISTD_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_ASPRINTF=1 -DHAVE_FWPRINTF=1 -DHAVE_GETCWD=1 -DHAVE_GETEGID=1 -DHAVE_GETEUID=1 -DHAVE_GETGID=1 -DHAVE_GETUID=1 -DHAVE_MEMPCPY=1 -DHAVE_MUNMAP=1 -DHAVE_PUTENV=1 -DHAVE_SETENV=1 -DHAVE_SETLOCALE=1 -DHAVE_SNPRINTF=1 -DHAVE_STPCPY=1 -DHAVE_STRCASECMP=1 -DHAVE_STRDUP=1 -DHAVE_STRTOUL=1 -DHAVE_TSEARCH=1 -DHAVE_WCSLEN=1 -DHAVE___ARGZ_COUNT=1 -DHAVE___ARGZ_STRINGIFY=1 -DHAVE___ARGZ_NEXT=1 -DHAVE___FSETLOCKING=1 -DHAVE_DECL__SNPRINTF=0 -DHAVE_DECL__SNWPRINTF=0 -DHAVE_DECL_FEOF_UNLOCKED=1 -DHAVE_DECL_FGETS_UNLOCKED=0 -DHAVE_DECL_GETC_UNLOCKED=1 -DHAVE_ICONV=1 -DICONV_CONST= -DHAVE_LANGINFO_CODESET=1 -DHAVE_LC_MESSAGES=1 -DENABLE_NLS=1 -DHAVE_GETTEXT=1 -DHAVE_DCGETTEXT=1 -DHAVE_DIRENT_H=1 -DHAVE_ERRNO_H=1 -DHAVE_GETOPT_H=1 -DHAVE_MALLOC_H=1 -DHAVE_MNTENT_H=1 -DHAVE_PATHS_H=1 -DHAVE_SETJMP_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_STDARG_H=1 -DHAVE_STDINT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_TERMIOS_H=1 -DHAVE_UNISTD_H=1 -DHAVE_UTIME_H=1 -DHAVE_LINUX_FD_H=1 -DHAVE_LINUX_MAJOR_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_MMAN_H=1 -DHAVE_SYS_PRCTL_H=1 -DHAVE_SYS_QUEUE_H=1 -DHAVE_SYS_RESOURCE_H=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_SYSCALL_H=1 -DHAVE_SYS_SYSMACROS_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_UN_H=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_SYS_MOUNT_H=1 -DHAVE_NET_IF_H=1 -DHAVE_VPRINTF=1 -DHAVE_RECLEN_DIRENT=1 -DHAVE_TYPE_SSIZE_T=1 -DHAVE_LSEEK64_PROTOTYPE=1 -DSIZEOF_SHORT=2 -DSIZEOF_INT=4 -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8 -DHAVE_INTTYPES_H=1 -DHAVE_INTPTR_T=1 -DHAVE_GETRUSAGE=1 -DHAVE_LLSEEK=1 -DHAVE_LSEEK64=1 -DHAVE_OPEN64=1 -DHAVE_FSTAT64=1 -DHAVE_FTRUNCATE64=1 -DHAVE_STRTOULL=1 -DHAVE_STRCASECMP=1 -DHAVE_SRANDOM=1 -DHAVE_JRAND48=1 -DHAVE_FCHOWN=1 -DHAVE_MALLINFO=1 -DHAVE_FDATASYNC=1 -DHAVE_STRNLEN=1 -DHAVE_STRPTIME=1 -DHAVE_STRDUP=1 -DHAVE_SYSCONF=1 -DHAVE_PATHCONF=1 -DHAVE_POSIX_MEMALIGN=1 -DHAVE_MEMALIGN=1 -DHAVE_VALLOC=1 -DHAVE___SECURE_GETENV=1 -DHAVE_PRCTL=1 -DHAVE_MMAP=1 -DHAVE_UTIME=1 -DHAVE_SETRESUID=1 -DHAVE_SETRESGID=1 -DHAVE_DLOPEN=1 -DHAVE_EXT2_IOCTLS=1 50CFLAGS = -g -O2 51CPPFLAGS = -I$(top_builddir)/lib -I$(top_srcdir)/lib 52INTL_FLAGS = 53ALL_CFLAGS = $(CPPFLAGS) $(DEFS) $(USE_WFLAGS) $(CFLAGS) $(XTRA_CFLAGS) \ 54 $(INTL_FLAGS) $(LINUX_INCLUDE) 55LDFLAGS = 56ALL_LDFLAGS = $(LDFLAGS) 57BUILD_CFLAGS = -g -O2 58BUILD_LDFLAGS = 59RM = /bin/rm 60LN = /bin/ln 61LN_S = ln -s 62MV = /bin/mv 63CP = /bin/cp 64CHMOD = /bin/chmod 65AR = $(CROSS_COMPILER)ar 66AWK = gawk 67SED = /bin/sed 68PERL = /usr/bin/perl 69RANLIB = $(CROSS_COMPILER)ranlib 70STRIP = $(CROSS_COMPILER)strip 71LD = $(PURE) $(CC) 72ARUPD = $(AR) r 73ARGEN = $(AR) rc 74LDCONFIG = /sbin/ldconfig 75INSTALL_PROGRAM = ${INSTALL} 76INSTALL_DATA = ${INSTALL} -m 644 77INSTALL_SCRIPT = ${INSTALL} 78MKINSTALLDIRS = $(top_builddir)/config/mkinstalldirs 79 80# 81# Library definitions 82# 83DEVMAPPER_LIBS = 84STATIC_DEVMAPPER_LIBS = 85 86LIB = $(top_builddir)/lib 87LIBSS = $(LIB)/libss.a 88LIBCOM_ERR = $(LIB)/libcom_err.a 89LIBE2P = $(LIB)/libe2p.a 90LIBEXT2FS = $(LIB)/libext2fs.a 91LIBUUID = $(LIB)/libuuid.a 92LIBBLKID = $(LIB)/libblkid.a 93LIBINTL = 94DEPLIBUUID = $(LIB)/libuuid.a 95DEPLIBBLKID = $(LIB)/libblkid.a 96 97STATIC_LIBSS = $(LIB)/libss.a 98STATIC_LIBCOM_ERR = $(LIB)/libcom_err.a 99STATIC_LIBE2P = $(LIB)/libe2p.a 100STATIC_LIBEXT2FS = $(LIB)/libext2fs.a 101STATIC_LIBUUID = $(LIB)/libuuid.a 102STATIC_LIBBLKID = $(LIB)/libblkid.a $(STATIC_DEVMAPPER_LIBS) 103DEPSTATIC_LIBUUID = $(LIB)/libuuid.a 104DEPSTATIC_LIBBLKID = $(LIB)/libblkid.a 105 106PROFILED_LIBSS = $(LIB)/libss 107PROFILED_LIBCOM_ERR = $(LIB)/libcom_err 108PROFILED_LIBE2P = $(LIB)/libe2p 109PROFILED_LIBEXT2FS = $(LIB)/libext2fs 110PROFILED_LIBUUID = $(LIB)/libuuid 111PROFILED_LIBBLKID = $(LIB)/libblkid 112DEPPROFILED_LIBUUID = $(LIB)/libuuid 113DEPPROFILED_LIBBLKID = $(LIB)/libblkid 114 115# An include directive pointing to a directory holding enough linux-like 116# include files to satisfy some programs here 117LINUX_INCLUDE= 118 119# 120# A fast substitution command for fixing up man pages, shell scripts, etc. 121# 122SUBST_CONF=$(top_builddir)/util/subst.conf 123SUBSTITUTE= $(top_builddir)/util/subst -f $(SUBST_CONF) 124SUBSTITUTE_UPTIME= $(top_builddir)/util/subst -t -f $(SUBST_CONF) 125DEP_SUBSTITUTE= $(top_builddir)/util/subst $(SUBST_CONF) 126 127$(top_builddir)/util/subst: 128 cd $(top_builddir)/util ; $(MAKE) subst 129 130# 131# Warning flags 132# 133# Run make gcc-wall to do a build with warning messages. 134# 135# 136WFLAGS= -std=c99 -D_XOPEN_SOURCE=600 -D_GNU_SOURCE \ 137 -pedantic $(WFLAGS_EXTRA) \ 138 -Wall -W -Wwrite-strings -Wpointer-arith \ 139 -Wcast-qual -Wcast-align -Wno-variadic-macros \ 140 -Wstrict-prototypes -Wmissing-prototypes \ 141 -Wformat-security -Wformat-nonliteral \ 142 -Wmissing-format-attribute -O2 -Wstrict-aliasing \ 143 -Wnested-externs -Winline -DNO_INLINE_FUNCS -Wshadow \ 144 -UENABLE_NLS 145 146gcc-wall-new: 147 (make USE_WFLAGS="$(WFLAGS)" > /dev/null) 2>&1 | sed -f $(top_srcdir)/util/gcc-wall-cleanup 148 149gcc-wall: 150 make clean > /dev/null 151 make gcc-wall-new 152 153# 154# Installation user and groups 155# 156BINGRP= bin 157BINOWN= bin 158BINMODE= 555 159INCGRP= bin 160INCOWN= bin 161INCMODE= 444 162LIBOWN= bin 163LIBGRP= bin 164LIBMODE= 444 165MANGRP= bin 166MANOWN= bin 167MANMODE= 444 168 169# 170# Autoconf magic... 171# 172 173DEP_LIB_MAKEFILES = $(top_srcdir)/lib/Makefile.elf-lib \ 174 $(top_srcdir)/lib/Makefile.bsd-lib $(top_srcdir)/lib/Makefile.darwin-lib \ 175 $(top_srcdir)/lib/Makefile.solaris-lib $(top_srcdir)/lib/Makefile.checker \ 176 $(top_srcdir)/lib/Makefile.profile 177 178$(top_builddir)/config.status: $(top_srcdir)/configure 179 cd $(top_builddir); ./config.status --recheck 180 181$(top_builddir)/MCONFIG: $(top_srcdir)/MCONFIG.in $(top_builddir)/config.status 182 cd $(top_builddir); CONFIG_FILES=MCONFIG ./config.status 183 184$(top_builddir)/lib/substitute_sh: $(top_srcdir)/lib/substitute_sh.in \ 185 $(top_builddir)/config.status 186 cd $(top_builddir); CONFIG_FILES=lib/substitute_sh ./config.status 187 188$(top_builddir)/util/subst.conf: $(top_srcdir)/util/subst.conf.in \ 189 $(top_builddir)/config.status 190 cd $(top_builddir); CONFIG_FILES=util/subst.conf ./config.status 191 192Makefile: $(srcdir)/Makefile.in $(top_builddir)/MCONFIG \ 193 $(DEP_MAKEFILE) $(top_builddir)/config.status 194 cd $(top_builddir); CONFIG_FILES=$(my_dir)/Makefile ./config.status 195 196#$(top_srcdir)/configure: $(top_srcdir)/configure.in 197# cd $(top_srcdir) && autoconf 198 199# 200# Make depend magic... 201# 202 203.depend: Makefile $(SRCS) $(top_srcdir)/depfix.sed $(top_srcdir)/wordwrap.pl 204 if test -n "$(SRCS)" ; then \ 205 $(CC) -M $(ALL_CFLAGS) $(SRCS) | \ 206 $(SED) -f $(top_srcdir)/depfix.sed \ 207 -e 's; $(srcdir)/; $$(srcdir)/;g' \ 208 -e 's; $(top_srcdir)/; $$(top_srcdir)/;g' \ 209 -e 's; $(top_builddir)/; $$(top_builddir)/;g' \ 210 -e 's; \./; ;g' \ 211 -e '/^#/d' \ 212 -e '/^ *\\$$/d' | \ 213 $(PERL) $(top_srcdir)/wordwrap.pl > .depend; \ 214 else :; fi 215 216depend:: .depend 217 if test -n "$(SRCS)" ; then \ 218 sed -e '/^# +++ Dependency line eater +++/,$$d' \ 219 < $(srcdir)/Makefile.in | cat - .depend \ 220 > $(srcdir)/Makefile.in.new; \ 221 if cmp -s $(srcdir)/Makefile.in $(srcdir)/Makefile.in.new ; then \ 222 $(RM) $(srcdir)/Makefile.in.new ; \ 223 else \ 224 $(MV) $(srcdir)/Makefile.in $(srcdir)/Makefile.in.old; \ 225 $(MV) $(srcdir)/Makefile.in.new $(srcdir)/Makefile.in; \ 226 fi ; else :; fi 227 228# End of file MCONFIG 229 230all:: check 231 232test_script: test_script.in Makefile 233 @echo "Creating test_script..." 234 @echo "#!/bin/sh" > test_script 235 @echo "HTREE=y" >> test_script 236 @echo 'EGREP="/bin/grep -E"' >> test_script 237 @echo "SRCDIR=." >> test_script 238 @echo "DIFF_OPTS=-u" >> test_script 239 @cat $(srcdir)/test_script.in >> test_script 240 @chmod +x test_script 241 242check:: test_script 243 @echo "Running e2fsprogs test suite..." 244 @echo " " 245 @./test_script 246 247check-failed: 248 @a=`/bin/ls *.failed 2> /dev/null | sed -e 's/.failed//'`; \ 249 if test "$$a"x == x ; then \ 250 echo "No failed tests" ; \ 251 else \ 252 ./test_script $$a ; \ 253 fi 254 255 256TDIR=f_testnew 257# Target which creates a new testcase to simplify adding new regression tests. 258testnew: 259 @echo "Creating a new e2fsck testcase in ${TDIR}" 260 @mkdir -p ${TDIR} 261 dd if=/dev/zero of=${TDIR}/image bs=1k count=8k 262 mke2fs -j -F -N 256 ${TDIR}/image 263 @echo "new test description" > ${TDIR}/name 264 @echo; echo; echo "New test filesystem at ${TDIR}/image." 265 @echo "Now, break the filesystem as appropriate, and run 'make testend'" 266 267EXPECT1=${TDIR}/expect.1 268EXPECT2=${TDIR}/expect.2 269# Target which generates the expect files for the new testcase. 270testend: test_script ${TDIR}/image 271 gzip -9 ${TDIR}/image 272 @OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_script ${TDIR} 273 @echo; echo; echo "*** output from first e2fsck run (${EXPECT1}) ***" 274 @cat ${EXPECT1} 275 @echo "*** output from second e2fsck run (${EXPECT2}) ***" 276 @cat ${EXPECT2} 277 @echo "*** end of e2fsck output ***" 278 @echo; echo "Hopefully e2fsck now fixes this problem properly." 279 @echo "If all is well, edit ${TDIR}/name and rename ${TDIR}." 280 281clean:: 282 $(RM) -f *~ *.log *.new *.failed *.ok test.img test_script 283 284distclean:: clean 285 $(RM) -f Makefile 286 $(RM) -rf ${TDIR} 287