blob: 741ec097d01b347fc77c001098eb41a6553b84fc [file] [log] [blame]
Alistair Delvabeaee832021-02-24 11:27:23 -08001# Copyright 1996-2004,2006-2010 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
Yi Kong39bbd962022-01-09 19:41:38 +080075MAN1 = floppyd.1 floppyd_installtest.1 mattrib.1 mbadblocks.1 mcat.1 \
76mcd.1 mcopy.1 mdel.1 mdeltree.1 mdir.1 mdu.1 mformat.1 \
77minfo.1 mkmanifest.1 mlabel.1 mmd.1 mmount.1 mmove.1 mpartition.1 \
78mrd.1 mren.1 mshortname.1 mshowfat.1 mtoolstest.1 mtools.1 mtype.1 \
79mzip.1
80
81MAN1EXT = 1
Alistair Delvabeaee832021-02-24 11:27:23 -080082MAN1DIR = $(DESTDIR)$(mandir)/man${MAN1EXT}
83MAN5 = mtools.5
84MAN5EXT = 5
85MAN5DIR = $(DESTDIR)$(mandir)/man${MAN5EXT}
86
Yi Kong39bbd962022-01-09 19:41:38 +080087# objects for building mtools
88OBJS_MTOOLS = buffer.o charsetConv.o codepages.o config.o copyfile.o \
89device.o devices.o dirCache.o directory.o direntry.o dos2unix.o \
90expand.o fat.o fat_free.o file.o file_name.o force_io.o hash.o init.o \
91lba.o llong.o lockdev.o match.o mainloop.o mattrib.o mbadblocks.o \
92mcat.o mcd.o mcopy.o mdel.o mdir.o mdoctorfat.o mdu.o \
93mformat.o minfo.o misc.o missFuncs.o mk_direntry.o mlabel.o mmd.o \
94mmount.o mmove.o mpartition.o mshortname.o mshowfat.o mzip.o mtools.o \
95offset.o old_dos.o open_image.o patchlevel.o partition.o plain_io.o \
96precmd.o privileges.o remap.o scsi_io.o scsi.o signal.o stream.o \
97streamcache.o swap.o unix2dos.o unixdir.o tty.o vfat.o \
98strtonum.o @FLOPPYD_IO_OBJ@ @XDF_IO_OBJ@
Alistair Delvabeaee832021-02-24 11:27:23 -080099
Yi Kong39bbd962022-01-09 19:41:38 +0800100# objects for building mkmanifest
101OBJS_MKMANIFEST = missFuncs.o mkmanifest.o misc.o patchlevel.o
Alistair Delvabeaee832021-02-24 11:27:23 -0800102
Yi Kong39bbd962022-01-09 19:41:38 +0800103# objects for building floppyd
104OBJS_FLOPPYD = floppyd.o llong.o lockdev.o
Alistair Delvabeaee832021-02-24 11:27:23 -0800105
Yi Kong39bbd962022-01-09 19:41:38 +0800106# objects for building floppyd_installtest
107OBJS_FLOPPYD_INSTALLTEST = floppyd_installtest.o misc.o expand.o \
108privileges.o strtonum.o
Alistair Delvabeaee832021-02-24 11:27:23 -0800109
Yi Kong39bbd962022-01-09 19:41:38 +0800110SRCS = buffer.c codepages.c config.c copyfile.c device.c devices.c \
111dirCache.c directory.c direntry.c dos2unix.c expand.c fat.c \
112fat_free.c file.c file_name.c file_read.c force_io.c hash.c init.c \
113lba.c lockdev.c match.c mainloop.c mattrib.c mbadblocks.c mcat.c \
114mcd.c mcopy.c mdel.c mdir.c mdu.c mdoctorfat.c \
115mformat.c minfo.c misc.c missFuncs.c mk_direntry.c mlabel.c mmd.c \
116mmount.c mmove.c mpartition.c mshortname.c mshowfat.c mzip.c mtools.c \
117offset.c old_dos.c open_image.c partition.c plain_io.c precmd.c \
118privileges.c remap.c scsi_io.c scsi.c signal.c stream.c streamcache.c \
119swap.c unix2dos.s unixdir.c tty.c vfat.c mkmanifest.c \
120@FLOPPYD_IO_SRC@ @XDF_IO_SRC@
Alistair Delvabeaee832021-02-24 11:27:23 -0800121
Yi Kong39bbd962022-01-09 19:41:38 +0800122SRCS-@USE_FLOPPYD@ += floppyd_io.c
123SRCS-@USE_XDF@ += xdf_io.c
Alistair Delvabeaee832021-02-24 11:27:23 -0800124
125SCRIPTS = mcheck mxtar uz tgz mcomp amuFormat.sh
126
Yi Kong39bbd962022-01-09 19:41:38 +0800127LINKS=mattrib mcat mcd mcopy mdel mdeltree mdir mdu \
128mformat minfo mlabel mmd mmount mmove mpartition mrd mren mtype \
129mtoolstest mshortname mshowfat mbadblocks mzip
Alistair Delvabeaee832021-02-24 11:27:23 -0800130
131X_CFLAGS = @X_CFLAGS@
132X_LIBS = @X_LIBS@
133X_EXTRA_LIBS = @X_EXTRA_LIBS@
134X_PRE_LIBS = @X_PRE_LIBS@
135CFLAGS = $(CPPFLAGS) $(DEFS) $(MYCFLAGS) -fno-strict-aliasing -I. @extraincludedir@ -I@srcdir@ $(USERCFLAGS)
136CXXFLAGS = $(CPPFLAGS) $(DEFS) $(MYCXXFLAGS) -I. @extraincludedir@ -I@srcdir@ $(USERCFLAGS)
137LINK = $(CC) $(LDFLAGS) $(USERLDFLAGS) @extralibdir@
138ALLLIBS = $(USERLDLIBS) $(MACHDEPLIBS) $(SHLIB) $(LIBS)
Yi Kong39bbd962022-01-09 19:41:38 +0800139X_LDFLAGS = $(X_EXTRA_LIBS) $(X_LIBS) @FLOPPYD_LIBS@ $(LIBS)
Alistair Delvabeaee832021-02-24 11:27:23 -0800140X_CCFLAGS = $(X_CFLAGS) $(CFLAGS)
141
142all: mtools $(LINKS) mkmanifest @FLOPPYD@ mtools.1 mtools.5
143
144%.o: %.c
145 $(CC) $(CFLAGS) -c $<
146
147#%.o: %.cpp
148# $(CXX) $(CXXFLAGS) -c $<
149
Yi Kong39bbd962022-01-09 19:41:38 +0800150mtools: $(OBJS_MTOOLS)
151 $(LINK) $(OBJS_MTOOLS) -o $@ $(ALLLIBS)
Alistair Delvabeaee832021-02-24 11:27:23 -0800152
Yi Kong39bbd962022-01-09 19:41:38 +0800153mkmanifest: $(OBJS_MKMANIFEST)
154 $(LINK) $(OBJS_MKMANIFEST) -o $@ $(ALLLIBS)
Alistair Delvabeaee832021-02-24 11:27:23 -0800155
156floppyd.o: floppyd.c
157 $(CC) $(X_CCFLAGS) -c $?
158
Yi Kong39bbd962022-01-09 19:41:38 +0800159floppyd: $(OBJS_FLOPPYD)
160 $(LINK) $(OBJS_FLOPPYD) -o $@ $(X_LDFLAGS)
161floppyd_installtest: $(OBJS_FLOPPYD_INSTALLTEST)
162 $(LINK) $(OBJS_FLOPPYD_INSTALLTEST) -o $@ $(ALLLIBS)
Alistair Delvabeaee832021-02-24 11:27:23 -0800163
164
165$(LINKS): mtools
166 rm -f $@ && $(LN_S) mtools $@
167
168mostlyclean:
169 -rm -f *~ *.orig *.o a.out core 2>/dev/null
170
171clean: mostlyclean
172 -rm -f mtools $(LINKS) floppyd floppyd_installtest mkmanifest *.info* *.dvi *.html 2>/dev/null
173
174
175texclean:
176 -rm -f mtools.aux mtools.toc mtools.log
177 -rm -f mtools.cps mtools.pgs mtools.vrs
178 -rm -f mtools.cp mtools.fn mtools.ky
179 -rm -f mtools.pg mtools.tp mtools.vr
180
181info: mtools.info
182%.info: %.texi sysconfdir.texi
183 $(MAKEINFO) -I$(srcdir) $< --no-split --output=$@
184
185dvi: mtools.dvi
186%.dvi: %.texi sysconfdir.texi
187 $(TEXI2DVI) $<
188
189ps: mtools.ps
190%.ps: %.dvi
191 dvips -f < $< > $@
192
193pdf: mtools.pdf
194%.pdf: %.texi sysconfdir.texi
195 $(TEXI2PDF) $<
196
197mtools.1: mtools.tmpl.1 Makefile
198 sed "s%SYSCONFDIR%$(sysconfdir)/%g" $(srcdir)/mtools.tmpl.1 >mtools.1
199
200mtools.5: mtools.tmpl.5 Makefile
201 sed "s%SYSCONFDIR%$(sysconfdir)/%g" $(srcdir)/mtools.tmpl.5 >mtools.5
202
203sysconfdir.texi:
204 echo "@set SYSCONFDIR $(sysconfdir)/" >sysconfdir.texi
205
206html: mtools.html mtools_toc.html
207%.html %_toc.html: %.texi sysconfdir.texi
208 $(TEXI2HTML) $<
209
210# Don't cd, to avoid breaking install-sh references.
211install-info: info
212 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(infodir)
213 if test -f mtools.info; then \
214 for i in mtools.info*; do \
215 $(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/$$i; \
216 done; \
217 else \
218 for i in $(srcdir)/mtools.info*; do \
219 $(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/`echo $$i | sed 's|^$(srcdir)/||'`; \
220 done; \
221 fi; \
222 if [ -n "$(INSTALL_INFO)" ] ; then \
223 $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/mtools.info; \
224 fi
225
226uninstall-info:
227 cd $(DESTDIR)$(infodir) && rm -f mtools.info*
228
229install: $(DESTDIR)$(bindir)/mtools @BINFLOPPYD@ install-man install-links \
230 $(DESTDIR)$(bindir)/mkmanifest install-scripts install-info
231
232uninstall: uninstall-bin uninstall-man uninstall-links \
233 uninstall-scripts
234
235distclean: clean texclean
236 rm -f config.cache config.h config.status config.log Makefile
237maintainer-clean: distclean
238
239
240$(DESTDIR)$(bindir)/floppyd: floppyd
241 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
242 $(INSTALL_PROGRAM) floppyd $(DESTDIR)$(bindir)/floppyd
243
244$(DESTDIR)$(bindir)/floppyd_installtest: floppyd_installtest
245 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
246 $(INSTALL_PROGRAM) floppyd_installtest $(DESTDIR)$(bindir)/floppyd_installtest
247
248$(DESTDIR)$(bindir)/mtools: mtools
249 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
250 $(INSTALL_PROGRAM) mtools $(DESTDIR)$(bindir)/mtools
251
252$(DESTDIR)$(bindir)/mkmanifest: mkmanifest
253 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
254 $(INSTALL_PROGRAM) mkmanifest $(DESTDIR)$(bindir)/mkmanifest
255
256#$(ETCDIR)/mtools: mtools.etc
257# cp mtools.etc $(ETCDIR)/mtools
258
259install-links: $(DESTDIR)$(bindir)/mtools
260 @for j in $(LINKS); do \
261 rm -f $(DESTDIR)$(bindir)/$$j ; \
262 $(LN_S) mtools $(DESTDIR)$(bindir)/$$j ; \
263 echo $(DESTDIR)$(bindir)/$$j ; \
264 done
265
266## "z" is the older version of "gz"; the name is just *too* short
267install-scripts: $(DESTDIR)$(bindir)/mtools
268 @$(top_srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
269 @for j in $(SCRIPTS) ; do \
270 $(INSTALL_PROGRAM) $(srcdir)/scripts/$$j $(DESTDIR)$(bindir)/$$j ; \
271 echo $(DESTDIR)$(bindir)/$$j ; \
272 done
273 rm -f $(DESTDIR)$(bindir)/lz
274 cd $(DESTDIR)$(bindir) && $(LN_S) uz lz
275
276install-man:
277 @$(top_srcdir)/mkinstalldirs $(MAN1DIR)
278 @for j in $(MAN1); do \
279 $(INSTALL_DATA) $(srcdir)/$$j $(MAN1DIR)/$$j ; \
280 echo $(MAN1DIR)/$$j ; \
281 done
282 @$(top_srcdir)/mkinstalldirs $(MAN5DIR)
283 @for j in $(MAN5); do \
284 $(INSTALL_DATA) $(srcdir)/$$j $(MAN5DIR)/$$j ; \
285 echo $(MAN5DIR)/$$j ; \
286 done
287
288uninstall-bin:
289 @for j in mtools mkmanifest; do \
290 rm -f $(DESTDIR)$(bindir)/$$j ; \
291 echo $(DESTDIR)$(bindir)/$$j ; \
292 done
293
294uninstall-scripts:
295 @for j in $(SCRIPTS); do \
296 rm -f $(DESTDIR)$(bindir)/$$j ; \
297 echo $(DESTDIR)$(bindir)/$$j ; \
298 done
299
300uninstall-man:
301 @for j in $(MAN1); do \
302 rm -f $(MAN1DIR)/$$j ; \
303 echo $(MAN1DIR)/$$j ; \
304 done
305 @for j in $(MAN5); do \
306 rm -f $(MAN5DIR)/$$j ; \
307 echo $(MAN5DIR)/$$j ; \
308 done
309
310uninstall-links:
311 @for j in $(LINKS); \
312 do rm -f $(DESTDIR)$(bindir)/$$j ; \
313 echo $(DESTDIR)$(bindir)/$$j ; \
314 done
315
316depend: $(SRCS)
317 makedepend -- $(CFLAGS) -- $^
318
319check:
320 echo No self tests included
321# check target needed even if empty, in order to make life easier for
322# automatic tools to install GNU soft
323
324
325# DO NOT DELETE THIS LINE -- make depend depends on it.