Imported Upstream version 3.0.26
[platform/upstream/dosfstools.git] / Makefile
1 # Makefile
2 #
3 # Copyright (C) 2008-2014 Daniel Baumann <mail@daniel-baumann.ch>
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #
18 # The complete text of the GNU General Public License
19 # can be found in /usr/share/common-licenses/GPL-3 file.
20
21 SHELL := sh -e
22 LANGUAGES = $(shell cd manpages/po && ls)
23
24 DESTDIR =
25 PREFIX = /usr/local
26 SBINDIR = $(PREFIX)/sbin
27 DOCDIR = $(PREFIX)/share/doc
28 MANDIR = $(PREFIX)/share/man
29
30 #OPTFLAGS = -O2 -fomit-frame-pointer -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
31 OPTFLAGS = -O2 -fomit-frame-pointer -D_GNU_SOURCE $(shell getconf LFS_CFLAGS)
32 #WARNFLAGS = -Wall -pedantic -std=c99
33 WARNFLAGS = -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes
34 DEBUGFLAGS = -g
35 CFLAGS += $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS)
36
37 VPATH = src
38
39 all: build
40
41 build: fatlabel fsck.fat mkfs.fat
42
43 fatlabel: boot.o check.o common.o fat.o file.o io.o lfn.o charconv.o fatlabel.o
44
45 fsck.fat: boot.o check.o common.o fat.o file.o io.o lfn.o charconv.o fsck.fat.o
46
47 mkfs.fat: mkfs.fat.o
48
49 rebuild: distclean build
50
51 install: install-bin install-doc install-man install-symlinks
52
53 install-bin: build
54         install -d -m 0755 $(DESTDIR)/$(SBINDIR)
55         install -m 0755 fatlabel fsck.fat mkfs.fat $(DESTDIR)/$(SBINDIR)
56
57 install-doc:
58         install -d -m 0755 $(DESTDIR)/$(DOCDIR)/dosfstools
59         install -p -m 0644 ChangeLog doc/* $(DESTDIR)/$(DOCDIR)/dosfstools
60
61 install-man:
62         for MANPAGE in manpages/en/*; \
63         do \
64                 SECTION="8"; \
65                 install -D -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE}); \
66         done
67
68         for LANGUAGE in $(LANGUAGES); \
69         do \
70                 for MANPAGE in manpages/$${LANGUAGE}/*; \
71                 do \
72                         SECTION="8"; \
73                         install -D -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \
74                 done; \
75         done
76 install-symlinks: install-bin install-man
77         if [ -e $(DESTDIR)/$(SBINDIR)/fatlabel ]; \
78         then \
79                 ln -sf fatlabel $(DESTDIR)/$(SBINDIR)/dosfslabel; \
80                 if [ -e $(DESTDIR)/$(MANDIR)/man8/fatlabel.8 ]; \
81                 then \
82                         ln -sf fatlabel.8 $(DESTDIR)/$(MANDIR)/man8/dosfslabel.8; \
83                 fi; \
84         fi
85
86         if [ -e $(DESTDIR)/$(SBINDIR)/fsck.fat ]; \
87         then \
88                 ln -sf fsck.fat $(DESTDIR)/$(SBINDIR)/dosfsck; \
89                 ln -sf fsck.fat $(DESTDIR)/$(SBINDIR)/fsck.msdos; \
90                 ln -sf fsck.fat $(DESTDIR)/$(SBINDIR)/fsck.vfat; \
91                 if [ -e $(DESTDIR)/$(MANDIR)/man8/fsck.fat.8 ]; \
92                 then \
93                         ln -sf fsck.fat.8 $(DESTDIR)/$(MANDIR)/man8/dosfsck.8; \
94                         ln -sf fsck.fat.8 $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8; \
95                         ln -sf fsck.fat.8 $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8; \
96                 fi; \
97         fi
98
99         if [ -e $(DESTDIR)/$(SBINDIR)/mkfs.fat ]; \
100         then \
101                 ln -sf mkfs.fat $(DESTDIR)/$(SBINDIR)/mkdosfs; \
102                 ln -sf mkfs.fat $(DESTDIR)/$(SBINDIR)/mkfs.msdos; \
103                 ln -sf mkfs.fat $(DESTDIR)/$(SBINDIR)/mkfs.vfat; \
104                 if [ -e $(DESTDIR)/$(MANDIR)/man8/mkfs.fat.8 ]; \
105                 then \
106                         ln -sf mkfs.fat.8 $(DESTDIR)/$(MANDIR)/man8/mkdosfs.8; \
107                         ln -sf mkfs.fat.8 $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8; \
108                         ln -sf mkfs.fat.8 $(DESTDIR)/$(MANDIR)/man8/mkfs.vfat.8; \
109                 fi; \
110         fi
111
112 uninstall: uninstall-symlinks uninstall-man uninstall-doc uninstall-bin
113
114 uninstall-bin:
115         rm -f $(DESTDIR)/$(SBINDIR)/fatlabel
116         rm -f $(DESTDIR)/$(SBINDIR)/fsck.fat
117         rm -f $(DESTDIR)/$(SBINDIR)/mkfs.fat
118
119         rmdir --ignore-fail-on-non-empty $(DESTDIR)/$(SBINDIR)
120
121 uninstall-doc:
122         rm -rf $(DESTDIR)/$(DOCDIR)/dosfstools
123
124         rmdir --ignore-fail-on-non-empty $(DESTDIR)/$(DOCDIR)
125
126 uninstall-man:
127         for MANPAGE in manpages/en/*; \
128         do \
129                 SECTION="8"; \
130                 rm -f $(DESTDIR)/$(MANDIR}/man$${SECTION}/$$(basename $${MANPAGE} .en.$${SECTION}).$${SECTION}; \
131         done
132
133         for LANGUAGE in $(LANGUAGES); \
134         do \
135                 for MANPAGE in manpages/$${LANGUAGE}/*; \
136                 do \
137                         SECTION="8"; \
138                         rm -f $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \
139                 done; \
140         done
141
142 uninstall-symlinks:
143         rm -f $(DESTDIR)/$(SBINDIR)/dosfslabel
144         rm -f $(DESTDIR)/$(MANDIR)/man8/dosfslabel.8
145
146         rm -f $(DESTDIR)/$(SBINDIR)/dosfsck
147         rm -f $(DESTDIR)/$(MANDIR)/man8/dosfsck.8
148         rm -f $(DESTDIR)/$(SBINDIR)/fsck.msdos
149         rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8
150         rm -f $(DESTDIR)/$(SBINDIR)/fsck.vfat
151         rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8
152
153         rm -f $(DESTDIR)/$(SBINDIR)/mkdosfs
154         rm -f $(DESTDIR)/$(MANDIR)/man8/mkdosfs.8
155         rm -f $(DESTDIR)/$(SBINDIR)/mkfs.msdos
156         rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8
157         rm -f $(DESTDIR)/$(SBINDIR)/mkfs.vfat
158         rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.vfat.8
159
160 reinstall: distclean install
161
162 clean:
163         rm -f *.o
164
165 distclean: clean
166         rm -f fatlabel fsck.fat mkfs.fat
167
168 .PHONY: build rebuild install install-bin install-doc install-man install-symlinks uninstall uninstall-bin uninstall-doc uninstall-man uninstall-symlinks reinstall clean distclean