Browse Source

Redoing Makefile from scratch.

Signed-off-by: Daniel Baumann <mail@daniel-baumann.ch>
Daniel Baumann 15 years ago
parent
commit
f8d6127d8b
2 changed files with 89 additions and 149 deletions
  1. 89 86
      Makefile
  2. 0 63
      src/Makefile

+ 89 - 86
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
-
-.PHONY: clean distclean install depend
-.EXPORT_ALL_VARIABLES:
-
-all dep clean install:
-	$(MAKE) -C mkdosfs $@
-	$(MAKE) -C dosfsck $@
-
-distclean:
-	$(MAKE) -C mkdosfs $@
-	$(MAKE) -C dosfsck $@
-	rm -f TAGS .#* .new* \#*# *~
-
-TAGS:
-	etags -d -T `find . -name '*.[ch]'`
-
-dist: binary tar
-
-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
-
-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
-
-binary-sub:
-	@[ root = "`whoami`" ] || (echo "Must be root for this!"; exit 1)
-	mkdir -p tmp/$(SBINDIR) tmp/$(MANDIR)
-	$(MAKE) install PREFIX=$(shell pwd)/tmp
-
-# usage: make diff OLDVER=<last-release-number>
-diff:
-	@if [ "x$(OLDVER)" = "x" ]; then \
-		echo "Usage: make diff OLDVER=<last-release-number>"; \
-		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
-
-
-# usage: make release VER=<release-number>
-release:
-	@if [ "x$(VER)" = "x" ]; then \
-		echo "Usage: make release VER=<release-number>"; \
-		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 >version.h.tmp
-	date="`date +'%d %b %Y'`"; sed "/VERSION_DATE/s/\".*\"/\"$$date\"/" <version.h.tmp >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
+VPATH = src
+
+all: build
+
+build: dosfsck dosfslabel mkdosfs
+
+dosfsck: boot.o check.o common.o fat.o file.o io.o lfn.o dosfsck.o
+
+dosfslabel: boot.o check.o common.o fat.o file.o io.o lfn.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 -m 0644 doc/* $(DESTDIR)/$(DOCDIR)/dosfstools
+
+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

+ 0 - 63
src/Makefile

@@ -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' <Makefile >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