# Makefile # # Copyright (C) 2008-2013 Daniel Baumann # # 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 . # # 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 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 charconv.o fatlabel.o fsck.fat: boot.o check.o common.o fat.o file.o io.o lfn.o charconv.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"; \ install -D -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/man$${SECTION}/$$(basename $${MANPAGE}); \ done for LANGUAGE in $(LANGUAGES); \ do \ for MANPAGE in manpages/$${LANGUAGE}/*; \ do \ SECTION="8"; \ install -D -m 0644 $${MANPAGE} $(DESTDIR)/$(MANDIR)/$${LANGUAGE}/man$${SECTION}/$$(basename $${MANPAGE} .$${LANGUAGE}.$${SECTION}).$${SECTION}; \ done; \ done install-symlinks: install-bin if [ -e $(DESTDIR)/$(SBINDIR)/fatlabel ]; \ then \ ln -sf fatlabel $(DESTDIR)/$(SBINDIR)/dosfslabel; \ if [ -e $(DESTDIR)/$(MANDIR)/man8/dosfslabel.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-bin uninstall-doc uninstall-man uninstall-bin: rm -f $(DESTDIR)/$(SBINDIR)/fatlabel rm -f $(DESTDIR)/$(SBINDIR)/fsck.fat rm -f $(DESTDIR)/$(SBINDIR)/mkfs.fat # legacy symlinks rm -f $(DESTDIR)/$(SBINDIR)/dosfslabel rm -f $(DESTDIR)/$(SBINDIR)/dosfsck rm -f $(DESTDIR)/$(SBINDIR)/fsck.msdos rm -f $(DESTDIR)/$(SBINDIR)/fsck.vfat rm -f $(DESTDIR)/$(SBINDIR)/mkdosfs 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: 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 # legacy symlinks rm -f $(DESTDIR)/$(MANDIR)/man8/dosfslabel.8 rm -f $(DESTDIR)/$(MANDIR)/man8/dosfsck.8 rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.msdos.8 rm -f $(DESTDIR)/$(MANDIR)/man8/fsck.vfat.8 rm -f $(DESTDIR)/$(MANDIR)/man8/mkdosfs.8 rm -f $(DESTDIR)/$(MANDIR)/man8/mkfs.msdos.8 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 uninstall uninstall-bin uninstall-doc uninstall-man reinstall clean distclean