diff options
Diffstat (limited to '')
-rw-r--r-- | dosfstools/Makefile | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/dosfstools/Makefile b/dosfstools/Makefile new file mode 100644 index 000000000..fa993559c --- /dev/null +++ b/dosfstools/Makefile @@ -0,0 +1,170 @@ +# Makefile +# +# Copyright (C) 2008-2014 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/>. +# +# The complete text of the GNU General Public License +# can be found in /usr/share/common-licenses/GPL-3 file. + +SHELL := sh -e +LANGUAGES = $(shell cd manpages/po && ls) + +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 -D_GNU_SOURCE $(shell getconf LFS_CFLAGS) +#WARNFLAGS = -Wall -pedantic -std=c99 +WARNFLAGS = -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings +DEBUGFLAGS = -g +CFLAGS += $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS) + +VPATH = src + +all: build + +build: fatlabel fsck.fat mkfs.fat + +fatlabel: boot.o check.o common.o fat.o file.o io.o lfn.o fatlabel.o + +fsck.fat: boot.o check.o common.o fat.o file.o io.o lfn.o fsck.fat.o + +mkfs.fat: mkfs.fat.o + +rebuild: distclean build + +install: install-bin install-doc install-man install-symlinks + +install-bin: build + install -d -m 0755 $(DESTDIR)/$(SBINDIR) + install -m 0755 fatlabel fsck.fat mkfs.fat $(DESTDIR)/$(SBINDIR) + +install-doc: + install -d -m 0755 $(DESTDIR)/$(DOCDIR)/dosfstools + install -p -m 0644 ChangeLog doc/* $(DESTDIR)/$(DOCDIR)/dosfstools + +install-man: + for MANPAGE in manpages/en/*; \ + do \ + SECTION="8"; \ + mkdir -p $(DESTDIR)/$(MANDIR)/man$${SECTION}/; \ + install -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE}); \ + done + + for LANGUAGE in $(LANGUAGES); \ + do \ + for MANPAGE in manpages/$${LANGUAGE}/*; \ + do \ + SECTION="8"; \ + mkdir -p $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/; \ + install -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \ + done; \ + done +install-symlinks: install-bin install-man + if [ -e $(DESTDIR)/$(SBINDIR)/fatlabel ]; \ + then \ + ln -sf fatlabel $(DESTDIR)/$(SBINDIR)/dosfslabel; \ + if [ -e $(DESTDIR)/$(MANDIR)/man8/fatlabel.8 ]; \ + then \ + ln -sf fatlabel.8 $(DESTDIR)/$(MANDIR)/man8/dosfslabel.8; \ + fi; \ + fi + + if [ -e $(DESTDIR)/$(SBINDIR)/fsck.fat ]; \ + then \ + ln -sf fsck.fat $(DESTDIR)/$(SBINDIR)/dosfsck; \ + ln -sf fsck.fat $(DESTDIR)/$(SBINDIR)/fsck.msdos; \ + ln -sf fsck.fat $(DESTDIR)/$(SBINDIR)/fsck.vfat; \ + if [ -e $(DESTDIR)/$(MANDIR)/man8/fsck.fat.8 ]; \ + then \ + ln -sf fsck.fat.8 $(DESTDIR)/$(MANDIR)/man8/dosfsck.8; \ + ln -sf fsck.fat.8 $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8; \ + ln -sf fsck.fat.8 $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8; \ + fi; \ + fi + + if [ -e $(DESTDIR)/$(SBINDIR)/mkfs.fat ]; \ + then \ + ln -sf mkfs.fat $(DESTDIR)/$(SBINDIR)/mkdosfs; \ + ln -sf mkfs.fat $(DESTDIR)/$(SBINDIR)/mkfs.msdos; \ + ln -sf mkfs.fat $(DESTDIR)/$(SBINDIR)/mkfs.vfat; \ + if [ -e $(DESTDIR)/$(MANDIR)/man8/mkfs.fat.8 ]; \ + then \ + ln -sf mkfs.fat.8 $(DESTDIR)/$(MANDIR)/man8/mkdosfs.8; \ + ln -sf mkfs.fat.8 $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8; \ + ln -sf mkfs.fat.8 $(DESTDIR)/$(MANDIR)/man8/mkfs.vfat.8; \ + fi; \ + fi + +uninstall: uninstall-symlinks uninstall-man uninstall-doc uninstall-bin + +uninstall-bin: + rm -f $(DESTDIR)/$(SBINDIR)/fatlabel + rm -f $(DESTDIR)/$(SBINDIR)/fsck.fat + rm -f $(DESTDIR)/$(SBINDIR)/mkfs.fat + + 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: + for MANPAGE in manpages/en/*; \ + do \ + SECTION="8"; \ + rm -f $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE} .en.$${SECTION}).$${SECTION}; \ + done + + for LANGUAGE in $(LANGUAGES); \ + do \ + for MANPAGE in manpages/$${LANGUAGE}/*; \ + do \ + SECTION="8"; \ + rm -f $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \ + done; \ + done + +uninstall-symlinks: + rm -f $(DESTDIR)/$(SBINDIR)/dosfslabel + rm -f $(DESTDIR)/$(MANDIR)/man8/dosfslabel.8 + + rm -f $(DESTDIR)/$(SBINDIR)/dosfsck + rm -f $(DESTDIR)/$(MANDIR)/man8/dosfsck.8 + rm -f $(DESTDIR)/$(SBINDIR)/fsck.msdos + rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8 + rm -f $(DESTDIR)/$(SBINDIR)/fsck.vfat + rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8 + + rm -f $(DESTDIR)/$(SBINDIR)/mkdosfs + rm -f $(DESTDIR)/$(MANDIR)/man8/mkdosfs.8 + rm -f $(DESTDIR)/$(SBINDIR)/mkfs.msdos + rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8 + rm -f $(DESTDIR)/$(SBINDIR)/mkfs.vfat + rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.vfat.8 + +reinstall: distclean install + +clean: + rm -f *.o + +distclean: clean + rm -f fatlabel fsck.fat mkfs.fat + +.PHONY: build rebuild install install-bin install-doc install-man install-symlinks uninstall uninstall-bin uninstall-doc uninstall-man uninstall-symlinks reinstall clean distclean |