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