From 5f42100411888488beb3e17637dea57994f58153 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Mon, 2 Jun 2008 16:15:59 +0200 Subject: [PATCH] Base FreeBSD Makefile on Linux, but insist on gmake usage Signed-off-by: Jens Axboe --- Makefile.FreeBSD | 63 +++++++++++++++++++++++------------------------- README | 7 +++--- 2 files changed, 34 insertions(+), 36 deletions(-) diff --git a/Makefile.FreeBSD b/Makefile.FreeBSD index 10594313..6b41db15 100644 --- a/Makefile.FreeBSD +++ b/Makefile.FreeBSD @@ -1,10 +1,12 @@ CC = gcc -CFLAGS = -Wall -O2 -g -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DFIO_INC_DEBUG +DEBUGFLAGS = -D_FORTIFY_SOURCE=2 -DFIO_INC_DEBUG +OPTFLAGS= -O2 -g $(EXTFLAGS) +CFLAGS = -Wwrite-strings -Wall -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(OPTFLAGS) $(DEBUGFLAGS) -rdynamic PROGS = fio SCRIPTS = fio_generate_plots OBJS = gettime.o fio.o ioengines.o init.o stat.o log.o time.o filesetup.o \ eta.o verify.o memory.o io_u.o parse.o mutex.o options.o \ - rbtree.o fifo.o smalloc.o filehash.o + rbtree.o smalloc.o filehash.o OBJS += crc/crc7.o OBJS += crc/crc16.o @@ -21,53 +23,48 @@ OBJS += engines/sync.o OBJS += engines/null.o OBJS += engines/net.o +SOURCE = eta.c filehash.c filesetup.c fio.c gettime.c init.c ioengines.c \ + io_u.c log.c memory.c mutex.c options.c parse.c rbtree.c smalloc.c \ + stat.c parse.c crc/*.c engines/cpu.c engines/mmap.c \ + engines/posixaio.c engines/sync.c engines/null.c engines/net.c \ + *.h */*.h + +ifneq ($(findstring $(MAKEFLAGS),s),s) +ifndef V + QUIET_CC = @echo ' ' CC $@; + QUIET_DEP = @echo ' ' DEP $@; +endif +endif + INSTALL = install prefix = /usr/local bindir = $(prefix)/bin mandir = $(prefix)/man +%.o: %.c + $(QUIET_CC)$(CC) -o $*.o -c $(CFLAGS) $< fio: $(OBJS) - $(CC) $(CFLAGS) -o $@ $(OBJS) -lpthread -lm + $(QUIET_CC)$(CC) $(CFLAGS) -o $@ $(filter %.o,$^) $(EXTLIBS) -lpthread -lm -all: depend $(PROGS) $(SCRIPTS) +depend: + $(QUIET_DEP)$(CC) -MM $(ALL_CFLAGS) $(SOURCE) 1> .depend -crc/crc7.o: crc/crc7.c - $(CC) -o $*.o -c $(CFLAGS) $< -crc/crc16.o: crc/crc16.c - $(CC) -o $*.o -c $(CFLAGS) $< -crc/crc32.o: crc/crc32.c - $(CC) -o $*.o -c $(CFLAGS) $< -crc/crc64.o: crc/crc64.c - $(CC) -o $*.o -c $(CFLAGS) $< -crc/sha256.o: crc/sha256.c - $(CC) -o $*.o -c $(CFLAGS) $< -crc/sha512.o: crc/sha512.c - $(CC) -o $*.o -c $(CFLAGS) $< -crc/md5.o: crc/md5.c - $(CC) -o $*.o -c $(CFLAGS) $< +$(PROGS): depend -engines/cpu.o: engines/cpu.c - $(CC) -o $*.o -c $(CFLAGS) $< -engines/mmap.o: engines/mmap.c - $(CC) -o $*.o -c $(CFLAGS) $< -engines/posixaio.o: engines/posixaio.c - $(CC) -o $*.o -c $(CFLAGS) $< -engines/sync.o: engines/sync.c - $(CC) -o $*.o -c $(CFLAGS) $< -engines/net.o: engines/net.c - $(CC) -o $*.o -c $(CFLAGS) $< -engines/null.o: engines/null.c - $(CC) -o $*.o -c $(CFLAGS) $< +all: depend $(PROGS) $(SCRIPTS) clean: -rm -f .depend cscope.out $(OBJS) $(PROGS) core.* core -depend: - @$(CC) -MM $(ALL_CFLAGS) *.c engines/*.c crc/*.c 1> .depend - cscope: @cscope -b install: $(PROGS) $(SCRIPTS) $(INSTALL) -m755 -d $(DESTDIR)$(bindir) $(INSTALL) $(PROGS) $(SCRIPTS) $(DESTDIR)$(bindir) + $(INSTALL) -m 755 -d $(DESTDIR)$(mandir)/man1 + $(INSTALL) -m 644 fio.1 $(DESTDIR)$(mandir)/man1 + +ifneq ($(wildcard .depend),) +include .depend +endif diff --git a/README b/README index 37287dd4..89e32c8c 100644 --- a/README +++ b/README @@ -50,12 +50,13 @@ Building -------- Just type 'make' and 'make install'. If on FreeBSD, for now you have to -specify the FreeBSD Makefile with -f, eg: +specify the FreeBSD Makefile with -f and use gmake (not make), eg: -$ make -f Makefile.Freebsd && make -f Makefile.FreeBSD install +$ gmake -f Makefile.Freebsd && gmake -f Makefile.FreeBSD install Likewise with OpenSolaris, use the Makefile.solaris to compile there. -This might change in the future if I opt for an autoconf type setup. +The OpenSolaris make should work fine. This might change in the +future if I opt for an autoconf type setup. If your compile fails with an error like this: -- 2.25.1