1# Copyright 1996-2004,2006-2009 Alain Knaff. 2# This file is part of mtools. 3# 4# Mtools is free software: you can redistribute it and/or modify 5# it under the terms of the GNU General Public License as published by 6# the Free Software Foundation, either version 3 of the License, or 7# (at your option) any later version. 8# 9# Mtools is distributed in the hope that it will be useful, 10# but WITHOUT ANY WARRANTY; without even the implied warranty of 11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12# GNU General Public License for more details. 13# 14# You should have received a copy of the GNU General Public License 15# along with Mtools. If not, see <http://www.gnu.org/licenses/>. 16# 17# Makefile for Mtools 18# 19# check the Configure file for some examples of device-specific setups 20# Berkeley flavors of Unix should include -DBSD in the CFLAGS. Pick 21# a lock method... either -DLOCKF, -DFLOCK, or -DFCNTL and put that 22# string in the CFLAGS line below. 23 24# User specified flags 25USERCFLAGS = 26USERLDFLAGS = 27USERLDLIBS = 28 29MAKEINFO = makeinfo 30TEXI2DVI = texi2dvi 31TEXI2PDF = texi2pdf 32TEXI2HTML = texi2html 33 34 35# do not edit below this line 36# ============================================================================= 37 38SHELL = /bin/sh 39 40top_srcdir=@top_srcdir@ 41srcdir=@srcdir@ 42VPATH=@srcdir@ 43 44prefix = @prefix@ 45exec_prefix = @exec_prefix@ 46bindir = @bindir@ 47infodir = @infodir@ 48mandir = @mandir@ 49sysconfdir = @sysconfdir@ 50datarootdir = @datarootdir@ 51 52CC = @CC@ 53CXX = @CXX@ 54MYCFLAGS = @CFLAGS@ 55MYCXXFLAGS = @CXXFLAGS@ 56CPPFLAGS = @CPPFLAGS@ 57HOST_ID = @HOST_ID@ 58DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)\" $(HOST_ID) 59 60LDFLAGS = @LDFLAGS@ 61LIBS = @LIBS@ 62SHLIB = @SHLIB@ 63MACHDEPLIBS = @MACHDEPLIBS@ 64LN_S = @LN_S@ 65 66INSTALL = @INSTALL@ 67INSTALL_PROGRAM = @INSTALL_PROGRAM@ 68INSTALL_DATA = @INSTALL_DATA@ 69INSTALL_INFO = @INSTALL_INFO@ 70 71.SUFFIXES: 72.SUFFIXES: .o .c 73.SUFFIXES: .o .c 74 75MAN1 = floppyd.1 floppyd_installtest.1 mattrib.1 mbadblocks.1 mcat.1 mcd.1 \ 76mclasserase.1 mcopy.1 mdel.1 mdeltree.1 mdir.1 mdu.1 mformat.1 minfo.1 \ 77mkmanifest.1 mlabel.1 mmd.1 mmount.1 mmove.1 mpartition.1 \ 78mrd.1 mren.1 mshowfat.1 mtoolstest.1 mtools.1 mtype.1 mzip.1 79MAN1EXT = 1 80MAN1DIR = $(DESTDIR)$(mandir)/man${MAN1EXT} 81MAN5 = mtools.5 82MAN5EXT = 5 83MAN5DIR = $(DESTDIR)$(mandir)/man${MAN5EXT} 84 85# all files in this directory included in the distribution 86DIST = \ 87COPYING Changelog INSTALL Makefile Makefile.in README Release.notes \ 88buffer.c buffer.h charsetConv.c codepage.h codepages.c config.c \ 89config.guess config.h.in config.log config.sub configure configure.in \ 90copyfile.c devices.c devices.h dirCache.c dirCache.h directory.c direntry.c \ 91expand.c fat.c \ 92fat_free.c file.c file.h file_name.h file_name.c files filter.c floppyd.1 \ 93floppyd.c floppyd_io.c floppyd_io.h force_io.c fs.h fsP.h \ 94getopt.h hash.c htable.h init.c llong.c mainloop.c match.c mattrib.1 \ 95mattrib.c mbadblocks.1 mbadblocks.c mcat.1 mcat.c mcd.1 mcd.c mclasserase.c \ 96mcopy.1 \ 97mcopy.c mdel.1 mdel.c mdeltree.1 mdir.1 mdir.c mdu.c mdu.1 mformat.1 \ 98mformat.c minfo.c \ 99misc.c tty.c scsi.c missFuncs.c mk_direntry.c mkmanifest.1 mkmanifest.c \ 100mlabel.1 mlabel.c mmd.1 mmd.c mmount.1 mmount.c mmove.1 mmove.c \ 101mpartition.1 mpartition.c mrd.1 \ 102mren.1 msdos.h mshowfat.1 mtoolstest.1 mtools.1 mtools.5 mtools.c \ 103mtools.conf mtools.h mtype.1 nameclash.h patchlevel.c \ 104plain_io.c plain_io.h precmd.c privileges.c scripts signal.c stream.c stream.h \ 105streamcache.c streamcache.h subdir.c sysincludes.h unixdir.c todo \ 106vfat.c vfat.h xdf_io.c xdf_io.h 107 108OBJS1 = buffer.o charsetConv.o codepages.o config.o copyfile.o \ 109devices.o dirCache.o directory.o direntry.o expand.o fat.o fat_free.o file.o \ 110file_name.o filter.o floppyd_io.o force_io.o hash.o init.o llong.o match.o \ 111mainloop.o mattrib.o mbadblocks.o mcat.o mcd.o mclasserase.o mcopy.o mdel.o \ 112mdir.o mdoctorfat.o mdu.o \ 113mformat.o minfo.o misc.o missFuncs.o mk_direntry.o mlabel.o mmd.o mmount.o \ 114mmove.o mpartition.o mshowfat.o mzip.o mtools.o patchlevel.o plain_io.o \ 115precmd.o privileges.o scsi.o signal.o stream.o streamcache.o subdir.o \ 116unixdir.o tty.o vfat.o xdf_io.o 117 118OBJS2 = missFuncs.o mkmanifest.o misc.o patchlevel.o 119 120SRCS3 = floppyd.c 121 122OBJS4 = floppyd_installtest.o misc.o expand.o privileges.o 123 124SRCS = buffer.c codepages.c config.c copyfile.c devices.c \ 125dirCache.c directory.c direntry.c expand.c fat.c fat_free.c file.c file_name.c \ 126file_read.c filter.c floppyd_io.c force_io.c hash.c init.c match.c mainloop.c \ 127mattrib.c mbadblocks.c mcat.c mcd.c mclasserase.c mcopy.c mdel.c mdir.c \ 128mdu.c mdoctorfat.c mformat.c minfo.c misc.c \ 129missFuncs.c mk_direntry.c mlabel.c mmd.c mmount.c mmove.c mpartition.c \ 130mshowfat.c mzip.c mtools.c plain_io.c precmd.c privileges.c scsi.o \ 131signal.c stream.c streamcache.c subdir.c unixdir.c tty.o vfat.c \ 132xdf_io.c mkmanifest.c 133 134 135SCRIPTS = mcheck mxtar uz tgz mcomp amuFormat.sh 136 137LINKS=mattrib mcat mcd mclasserase mcopy mdel mdeltree mdir mdu mformat minfo \ 138mlabel mmd mmount mmove mpartition mrd mren mtype mtoolstest mshowfat \ 139mbadblocks mzip 140 141X_CFLAGS = @X_CFLAGS@ 142X_LIBS = @X_LIBS@ 143X_EXTRA_LIBS = @X_EXTRA_LIBS@ 144X_PRE_LIBS = @X_PRE_LIBS@ 145CFLAGS = $(CPPFLAGS) $(DEFS) $(MYCFLAGS) -fno-strict-aliasing -I. @extraincludedir@ -I@srcdir@ $(USERCFLAGS) 146CXXFLAGS = $(CPPFLAGS) $(DEFS) $(MYCXXFLAGS) -I. @extraincludedir@ -I@srcdir@ $(USERCFLAGS) 147LINK = $(CC) $(LDFLAGS) $(USERLDFLAGS) @extralibdir@ 148ALLLIBS = $(USERLDLIBS) $(MACHDEPLIBS) $(SHLIB) $(LIBS) 149X_LDFLAGS = $(X_EXTRA_LIBS) $(X_LIBS) $(X_PRE_LIBS) -lXau -lX11 $(LIBS) 150X_CCFLAGS = $(X_CFLAGS) $(CFLAGS) 151 152all: mtools $(LINKS) mkmanifest @FLOPPYD@ 153 154%.o: %.c 155 $(CC) $(CFLAGS) -c $< 156 157#%.o: %.cpp 158# $(CXX) $(CXXFLAGS) -c $< 159 160mtools: $(OBJS1) 161 $(LINK) $(OBJS1) -o $@ $(ALLLIBS) 162 163mkmanifest: $(OBJS2) 164 $(LINK) $(OBJS2) -o $@ $(ALLLIBS) 165 166floppyd.o: floppyd.c 167 $(CC) $(X_CCFLAGS) -c $? 168 169floppyd: floppyd.o 170 $(LINK) $? -o $@ $(X_LDFLAGS) 171floppyd_installtest: $(OBJS4) 172 $(LINK) $(OBJS4) -o $@ $(ALLLIBS) 173 174 175$(LINKS): mtools 176 rm -f $@ && $(LN_S) mtools $@ 177 178mostlyclean: 179 -rm -f *~ *.orig *.o a.out core 2>/dev/null 180 181clean: mostlyclean 182 -rm -f mtools $(LINKS) floppyd floppyd_installtest mkmanifest *.info* *.dvi *.html 2>/dev/null 183 184 185texclean: 186 -rm -f mtools.aux mtools.toc mtools.log 187 -rm -f mtools.cps mtools.pgs mtools.vrs 188 -rm -f mtools.cp mtools.fn mtools.ky 189 -rm -f mtools.pg mtools.tp mtools.vr 190 191info: mtools.info 192%.info: %.texi 193 $(MAKEINFO) -I$(srcdir) $< --no-split --output=$@ 194 195dvi: mtools.dvi 196%.dvi: %.texi 197 $(TEXI2DVI) $< 198 199ps: mtools.ps 200%.ps: %.dvi 201 dvips -f < $< > $@ 202 203pdf: mtools.pdf 204%.pdf: %.texi 205 $(TEXI2PDF) $< 206 207 208html: mtools.html mtools_toc.html 209%.html %_toc.html: %.texi 210 $(TEXI2HTML) $< 211 212# Don't cd, to avoid breaking install-sh references. 213install-info: info 214 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(infodir) 215 if test -f mtools.info; then \ 216 for i in mtools.info*; do \ 217 $(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/$$i; \ 218 done; \ 219 else \ 220 for i in $(srcdir)/mtools.info*; do \ 221 $(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \ 222 done; \ 223 fi; \ 224 if [ -n "$(INSTALL_INFO)" ] ; then \ 225 $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/mtools.info; \ 226 fi 227 228uninstall-info: 229 cd $(DESTDIR)$(infodir) && rm -f mtools.info* 230 231install: $(DESTDIR)$(bindir)/mtools @BINFLOPPYD@ install-man install-links \ 232 $(DESTDIR)$(bindir)/mkmanifest install-scripts install-info 233 234uninstall: uninstall-bin uninstall-man uninstall-links \ 235 uninstall-scripts 236 237distclean: clean texclean 238 rm -f config.cache config.h config.status config.log Makefile 239maintainer-clean: distclean 240 241 242$(DESTDIR)$(bindir)/floppyd: floppyd 243 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) 244 $(INSTALL_PROGRAM) floppyd $(DESTDIR)$(bindir)/floppyd 245 246$(DESTDIR)$(bindir)/floppyd_installtest: floppyd_installtest 247 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) 248 $(INSTALL_PROGRAM) floppyd_installtest $(DESTDIR)$(bindir)/floppyd_installtest 249 250$(DESTDIR)$(bindir)/mtools: mtools 251 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) 252 $(INSTALL_PROGRAM) mtools $(DESTDIR)$(bindir)/mtools 253 254$(DESTDIR)$(bindir)/mkmanifest: mkmanifest 255 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) 256 $(INSTALL_PROGRAM) mkmanifest $(DESTDIR)$(bindir)/mkmanifest 257 258#$(ETCDIR)/mtools: mtools.etc 259# cp mtools.etc $(ETCDIR)/mtools 260 261install-links: $(DESTDIR)$(bindir)/mtools 262 @for j in $(LINKS); do \ 263 rm -f $(DESTDIR)$(bindir)/$$j ; \ 264 $(LN_S) mtools $(DESTDIR)$(bindir)/$$j ; \ 265 echo $(DESTDIR)$(bindir)/$$j ; \ 266 done 267 268## "z" is the older version of "gz"; the name is just *too* short 269install-scripts: $(DESTDIR)$(bindir)/mtools 270 @$(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir) 271 @for j in $(SCRIPTS) ; do \ 272 $(INSTALL_PROGRAM) $(srcdir)/scripts/$$j $(DESTDIR)$(bindir)/$$j ; \ 273 echo $(DESTDIR)$(bindir)/$$j ; \ 274 done 275 rm -f $(DESTDIR)$(bindir)/lz 276 $(LN_S) uz $(DESTDIR)$(bindir)/lz 277 278install-man: 279 @$(top_srcdir)/mkinstalldirs $(MAN1DIR) 280 @for j in $(MAN1); do \ 281 $(INSTALL_DATA) $(srcdir)/$$j $(MAN1DIR)/$$j ; \ 282 echo $(MAN1DIR)/$$j ; \ 283 done 284 @$(top_srcdir)/mkinstalldirs $(MAN5DIR) 285 @for j in $(MAN5); do \ 286 $(INSTALL_DATA) $(srcdir)/$$j $(MAN5DIR)/$$j ; \ 287 echo $(MAN5DIR)/$$j ; \ 288 done 289 290uninstall-bin: 291 @for j in mtools mkmanifest; do \ 292 rm -f $(DESTDIR)$(bindir)/$$j ; \ 293 echo $(DESTDIR)$(bindir)/$$j ; \ 294 done 295 296uninstall-scripts: 297 @for j in $(SCRIPTS); do \ 298 rm -f $(DESTDIR)$(bindir)/$$j ; \ 299 echo $(DESTDIR)$(bindir)/$$j ; \ 300 done 301 302uninstall-man: 303 @for j in $(MAN1); do \ 304 rm -f $(MAN1DIR)/$$j ; \ 305 echo $(MAN1DIR)/$$j ; \ 306 done 307 @for j in $(MAN5); do \ 308 rm -f $(MAN5DIR)/$$j ; \ 309 echo $(MAN5DIR)/$$j ; \ 310 done 311 312uninstall-links: 313 @for j in $(LINKS); \ 314 do rm -f $(DESTDIR)$(bindir)/$$j ; \ 315 echo $(DESTDIR)$(bindir)/$$j ; \ 316 done 317 318depend: $(SRCS) 319 makedepend -- $(CFLAGS) -- $^ 320 321check: 322 echo No self tests included 323# check target needed even if empty, in order to make life easyer for 324# automatic tools to install GNU soft 325 326 327# DO NOT DELETE THIS LINE -- make depend depends on it. 328