summaryrefslogtreecommitdiff
path: root/Makefile
blob: dea6661c13bee720053b7162793e125abf93371e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# Makefile
#
# Copyright (C) 2008-2013 Daniel Baumann <mail@daniel-baumann.ch>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# On Debian systems, the complete text of the GNU General Public License
# can be found in /usr/share/common-licenses/GPL-3 file.


DESTDIR =
PREFIX = /usr/local
SBINDIR = $(PREFIX)/sbin
DOCDIR = $(PREFIX)/share/doc
MANDIR = $(PREFIX)/share/man

#OPTFLAGS = -O2 -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
OPTFLAGS = -O2 -fomit-frame-pointer $(shell getconf LFS_CFLAGS)
#WARNFLAGS = -Wall -pedantic -std=c99
WARNFLAGS = -Wall
DEBUGFLAGS = -g
CFLAGS += $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS)

VPATH = src

all: build

build: dosfsck dosfslabel mkdosfs

dosfsck: boot.o check.o common.o fat.o file.o io.o lfn.o charconv.o dosfsck.o

dosfslabel: boot.o check.o common.o fat.o file.o io.o lfn.o charconv.o dosfslabel.o

mkdosfs: mkdosfs.o

rebuild: distclean build

install: install-bin install-doc install-man

install-bin: build
	install -d -m 0755 $(DESTDIR)/$(SBINDIR)
	install -m 0755 dosfsck dosfslabel mkdosfs $(DESTDIR)/$(SBINDIR)

	ln -sf dosfsck $(DESTDIR)/$(SBINDIR)/fsck.msdos
	ln -sf dosfsck $(DESTDIR)/$(SBINDIR)/fsck.vfat
	ln -sf mkdosfs $(DESTDIR)/$(SBINDIR)/mkfs.msdos
	ln -sf mkdosfs $(DESTDIR)/$(SBINDIR)/mkfs.vfat

install-doc:
	install -d -m 0755 $(DESTDIR)/$(DOCDIR)/dosfstools
	install -p -m 0644 ChangeLog doc/* $(DESTDIR)/$(DOCDIR)/dosfstools

install-man:
	install -d -m 0755 $(DESTDIR)/$(MANDIR)/man8
	install -p -m 0644 man/*.8 $(DESTDIR)/$(MANDIR)/man8

	ln -sf dosfsck.8 $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8
	ln -sf dosfsck.8 $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8
	ln -sf mkdosfs.8 $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8
	ln -sf mkdosfs.8 $(DESTDIR)/$(MANDIR)/man8/mkfs.vfat.8

uninstall: uninstall-bin uninstall-doc uninstall-man

uninstall-bin:
	rm -f $(DESTDIR)/$(SBINDIR)/dosfsck
	rm -f $(DESTDIR)/$(SBINDIR)/dosfslabel
	rm -f $(DESTDIR)/$(SBINDIR)/mkdosfs

	rm -f $(DESTDIR)/$(SBINDIR)/fsck.msdos
	rm -f $(DESTDIR)/$(SBINDIR)/fsck.vfat
	rm -f $(DESTDIR)/$(SBINDIR)/mkfs.msdos
	rm -f $(DESTDIR)/$(SBINDIR)/mkfs.vfat

	rmdir --ignore-fail-on-non-empty $(DESTDIR)/$(SBINDIR)

uninstall-doc:
	rm -rf $(DESTDIR)/$(DOCDIR)/dosfstools

	rmdir --ignore-fail-on-non-empty $(DESTDIR)/$(DOCDIR)

uninstall-man:
	rm -f $(DESTDIR)/$(MANDIR)/man8/dosfsck.8
	rm -f $(DESTDIR)/$(MANDIR)/man8/dosfslabel.8
	rm -f $(DESTDIR)/$(MANDIR)/man8/mkdosfs.8

	rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8
	rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8
	rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8
	rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.vfat.8

	rmdir --ignore-fail-on-non-empty $(DESTDIR)/$(MANDIR)/man8
	rmdir --ignore-fail-on-non-empty $(DESTDIR)/$(MANDIR)

reinstall: distclean install

clean:
	rm -f *.o

distclean: clean
	rm -f dosfsck dosfslabel mkdosfs

.PHONY: build rebuild install install-bin install-doc install-man uninstall uninstall-bin uninstall-doc uninstall-man reinstall clean distclean