SHELL = /bin/sh PREFIX=/usr/local INSTDIR=$(DESTDIR)/$(PREFIX)/bin MANDIR=$(DESTDIR)/$(PREFIX)/man # In Linux the default C compiler is GCC while in FreeBSD (since release 10 ?) # the default C compiler is clang. Swap the comment marks (lines starting # with '#') on the next 4 (non-blank) lines. # CC = gcc # CC = clang # LD = gcc # LD = clang EXECS = sg_sense_test sg_chk_asc sg_tst_nvme tst_sg_lib EXTRAS = MAN_PGS = MAN_PREF = man8 OS_FLAGS = -DSG_LIB_FREEBSD -DHAVE_NVME EXTRA_FLAGS = $(OS_FLAGS) # For C++/clang testing ## CC = gcc ## CC = g++ ## CC = clang ## CC = clang++ # CFLAGS = -O2 -Wall -W $(EXTRA_FLAGS) -I ../include CFLAGS = -g -O2 -Wall -W $(EXTRA_FLAGS) -I ../include # CFLAGS = -g -O2 -Wall -W -pedantic -std=c99 $(EXTRA_FLAGS) -I ../include CFLAGS_PTHREADS = -D_REENTRANT # there is no rule to make the following in the parent directory, # it is assumed they are already built. D_FILES = ../lib/sg_lib.o ../lib/sg_lib_data.o ../lib/sg_cmds_basic.o ../lib/sg_pt_common.o ../lib/sg_pt_freebsd.o LDFLAGS = -lcam all: $(EXECS) extras: $(EXTRAS) depend dep: for i in *.c; do $(CC) $(INCLUDES) $(CFLAGS) -M $$i; \ done > .depend clean: /bin/rm -f *.o $(EXECS) $(EXTRAS) core .depend sg_sense_test: sg_sense_test.o $(D_FILES) $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) # building sg_chk_asc depends on a prior successful make in ../lib sg_chk_asc: sg_chk_asc.o $(D_FILES) $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) sg_tst_nvme: sg_tst_nvme.o $(D_FILES) $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) tst_sg_lib: tst_sg_lib.o $(D_FILES) $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) install: $(EXECS) install -d $(INSTDIR) for name in $(EXECS) ; \ do install -s -o root -g wheel -m 755 $$name $(INSTDIR); \ done install -d $(MANDIR)/$(MAN_PREF) for mp in $(MAN_PGS); \ do install -o root -g wheel -m 644 $$mp $(MANDIR)/$(MAN_PREF); \ gzip -9f $(MANDIR)/$(MAN_PREF)/$$mp; \ done uninstall: dists="$(EXECS)"; \ for name in $$dists; do \ rm -f $(INSTDIR)/$$name; \ done for mp in $(MAN_PGS); do \ rm -f $(MANDIR)/$(MAN_PREF)/$$mp.gz; \ done # Linux uses GNU make and FreeBSD uses Berkely make. The following lines # only work in Linux. Possible solutions in FreeBSD: # a) use 'gmake'; b) comment out the next 3 lines, starting with 'ifeq' # c) build with 'make -f Makefile.freebsd' # In Linux one can install bmake (but that won't help here). # ifeq (.depend,$(wildcard .depend)) # include .depend # endif