diff --git a/Makefile b/Makefile index 75e37e4..7e0b5fd 100644 --- a/Makefile +++ b/Makefile @@ -1,91 +1,94 @@ -# -# Makefile for dosfstools (mkdosfs and dosfsck) -# +# Makefile -CC ?= gcc -CPP = $(CC) -E -OPTFLAGS = -D_FILE_OFFSET_BITS=64 +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 = +DEBUGFLAGS = -g CFLAGS += $(OPTFLAGS) $(WARNFLAGS) $(DEBUGFLAGS) -PREFIX = -SBINDIR = $(PREFIX)/sbin -MANDIR = $(PREFIX)/usr/man/man8 +VPATH = src -.PHONY: clean distclean install depend -.EXPORT_ALL_VARIABLES: +all: build -all dep clean install: - $(MAKE) -C mkdosfs $@ - $(MAKE) -C dosfsck $@ +build: dosfsck dosfslabel mkdosfs -distclean: - $(MAKE) -C mkdosfs $@ - $(MAKE) -C dosfsck $@ - rm -f TAGS .#* .new* \#*# *~ +dosfsck: boot.o check.o common.o fat.o file.o io.o lfn.o dosfsck.o -TAGS: - etags -d -T `find . -name '*.[ch]'` +dosfslabel: boot.o check.o common.o fat.o file.o io.o lfn.o dosfslabel.o -dist: binary tar +mkdosfs: mkdosfs.o -tar: distclean - cd ..; \ - name="$(notdir $(shell pwd))"; \ - namev="$$name-$(shell perl -ne 'print "$$1\n" if /VERSION.*"(\S+)"/;' version.h)"; \ - mv $$name $$namev; \ - tar cf $$namev.src.tar `find $$namev \( -name CVS -o -path $$namev/debian \) -prune -o ! -type d -print`; \ - gzip -9f $$namev.src.tar; \ - mv $$namev $$name +rebuild: distclean build -binary: all - doit=""; [ root = "`whoami`" ] || doit=sudo; $$doit $(MAKE) binary-sub - cd tmp; \ - name="$(notdir $(shell pwd))"; \ - namev="$$name-$(shell perl -ne 'print "$$1\n" if /VERSION.*"(\S+)"/;' version.h)"; \ - arch=`uname -m | sed 's/i.86/i386/'`; \ - nameva=$$namev.$$arch.tar; \ - tar cf ../../$$nameva * ; \ - gzip -9f ../../$$nameva - doit=""; [ root = "`whoami`" ] || doit=sudo; $$doit rm -rf tmp +install: install-bin install-doc install-man -binary-sub: - @[ root = "`whoami`" ] || (echo "Must be root for this!"; exit 1) - mkdir -p tmp/$(SBINDIR) tmp/$(MANDIR) - $(MAKE) install PREFIX=$(shell pwd)/tmp +install-bin: build + install -d -m 0755 $(DESTDIR)/$(SBINDIR) + install -m 0755 dosfsck dosfslabel mkdosfs $(DESTDIR)/$(SBINDIR) -# usage: make diff OLDVER= -diff: - @if [ "x$(OLDVER)" = "x" ]; then \ - echo "Usage: make diff OLDVER="; \ - exit 1; \ - fi; \ - name="$(notdir $(shell pwd))"; \ - namev="$$name-$(shell perl -ne 'print "$$1\n" if /VERSION.*"(\S+)"/;' version.h)"; \ - cvs diff -u -rRELEASE-$(OLDVER) >../$$namev.diff; \ - gzip -9f ../$$namev.diff + 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 -m 0644 doc/* $(DESTDIR)/$(DOCDIR)/dosfstools -# usage: make release VER= -release: - @if [ "x$(VER)" = "x" ]; then \ - echo "Usage: make release VER="; \ - exit 1; \ - fi - if [ -d CVS ]; then \ - modified=`cvs status 2>/dev/null | awk '/Status:/ { if ($$4 != "Up-to-date") print $$2 }'`; \ - if [ "x$$modified" != "x" ]; then \ - echo "There are modified files: $$modified"; \ - echo "Commit first"; \ - exit 1; \ - fi; \ - fi - sed "/VERSION/s/\".*\"/\"$(VER)\"/" version.h.tmp - date="`date +'%d %b %Y'`"; sed "/VERSION_DATE/s/\".*\"/\"$$date\"/" version.h - rm version.h.tmp - if [ -d CVS ]; then \ - cvs commit -m"Raised version to $(VER)" version.h; \ - cvs tag -c -F RELEASE-`echo $(VER) | sed 's/\./-/g'`; \ - fi +install-man: + install -d -m 0755 $(DESTDIR)/$(MANDIR)/man8 + install -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 diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index a4d25fb..0000000 --- a/src/Makefile +++ /dev/null @@ -1,63 +0,0 @@ - -all: dosfsck dosfslabel mkdosfs - -dosfsck: boot.o check.o common.o fat.o file.o io.o lfn.o dosfsck.o - $(CC) -o $@ $(LDFLAGS) $^ - -dosfslabel : boot.o check.o common.o fat.o file.o io.o lfn.o dosfslabel.o - $(CC) -o $@ $(LDFLAGS) $^ - -mkdosfs: mkdosfs.o - $(CC) -o $@ $(LDFLAGS) $^ - -.c.o: - $(CC) -c $(CFLAGS) $*.c - -install: dosfsck - mkdir -p $(SBINDIR) $(MANDIR) - install -m 755 dosfsck $(SBINDIR) - install -m 644 dosfsck.8 $(MANDIR) - install -m 755 dosfslabel $(SBINDIR) - rm -f $(SBINDIR)/fsck.msdos - rm -f $(SBINDIR)/fsck.vfat - ln -s dosfsck $(SBINDIR)/fsck.msdos - ln -s dosfsck $(SBINDIR)/fsck.vfat - rm -f $(MANDIR)/fsck.msdos.8 - ln -s dosfsck.8 $(MANDIR)/fsck.msdos.8 - ln -s dosfsck.8 $(MANDIR)/fsck.vfat.8 - - mkdir -p $(SBINDIR) $(MANDIR) - install -m 755 mkdosfs $(SBINDIR) - install -m 644 mkdosfs.8 $(MANDIR) - rm -f $(SBINDIR)/mkfs.msdos - rm -f $(SBINDIR)/mkfs.vfat - ln -s mkdosfs $(SBINDIR)/mkfs.msdos - ln -s mkdosfs $(SBINDIR)/mkfs.vfat - rm -f $(MANDIR)/mkfs.msdos.8 - ln -s mkdosfs.8 $(MANDIR)/mkfs.msdos.8 - ln -s mkdosfs.8 $(MANDIR)/mkfs.vfat.8 - -clean: - rm -f *.o *.s *.i *~ \#*# tmp_make .#* .new* - -distclean: clean - rm -f *.a dosfsck dosfslabel mkdosfs - -dep: - sed '/\#\#\# Dependencies/q' tmp_make - $(CPP) $(CFLAGS) -MM *.c >>tmp_make - mv tmp_make Makefile - -### Dependencies -boot.o: boot.c common.h dosfsck.h io.h boot.h -check.o: check.c common.h dosfsck.h io.h fat.h file.h lfn.h check.h -common.o: common.c common.h -dosfsck.o: dosfsck.c version.h common.h dosfsck.h io.h boot.h fat.h \ - file.h check.h -dosfslabel.o: dosfslabel.c version.h common.h dosfsck.h io.h boot.h fat.h \ - file.h check.h -fat.o: fat.c common.h dosfsck.h io.h check.h fat.h -file.o: file.c common.h file.h -io.o: io.c dosfsck.h common.h io.h -lfn.o: lfn.c common.h io.h dosfsck.h lfn.h file.h -mkdosfs.o: mkdosfs.c version.h