1*44704f69SBart Van AsscheSHELL = /bin/sh 2*44704f69SBart Van Assche 3*44704f69SBart Van AsschePREFIX=/usr/local 4*44704f69SBart Van AsscheINSTDIR=$(DESTDIR)/$(PREFIX)/bin 5*44704f69SBart Van AsscheMANDIR=$(DESTDIR)/$(PREFIX)/man 6*44704f69SBart Van Assche 7*44704f69SBart Van Assche# In Linux the default C compiler is GCC while in FreeBSD (since release 10 ?) 8*44704f69SBart Van Assche# the default C compiler is clang. Swap the comment marks (lines starting 9*44704f69SBart Van Assche# with '#') on the next 4 (non-blank) lines. 10*44704f69SBart Van Assche# CC = gcc 11*44704f69SBart Van Assche# CC = clang 12*44704f69SBart Van Assche 13*44704f69SBart Van Assche# LD = gcc 14*44704f69SBart Van Assche# LD = clang 15*44704f69SBart Van Assche 16*44704f69SBart Van AsscheEXECS = sg_sense_test sg_chk_asc sg_tst_nvme tst_sg_lib 17*44704f69SBart Van Assche 18*44704f69SBart Van AsscheEXTRAS = 19*44704f69SBart Van Assche 20*44704f69SBart Van AsscheMAN_PGS = 21*44704f69SBart Van AsscheMAN_PREF = man8 22*44704f69SBart Van Assche 23*44704f69SBart Van AsscheOS_FLAGS = -DSG_LIB_FREEBSD -DHAVE_NVME 24*44704f69SBart Van AsscheEXTRA_FLAGS = $(OS_FLAGS) 25*44704f69SBart Van Assche 26*44704f69SBart Van Assche# For C++/clang testing 27*44704f69SBart Van Assche## CC = gcc 28*44704f69SBart Van Assche## CC = g++ 29*44704f69SBart Van Assche## CC = clang 30*44704f69SBart Van Assche## CC = clang++ 31*44704f69SBart Van Assche 32*44704f69SBart Van Assche# CFLAGS = -O2 -Wall -W $(EXTRA_FLAGS) -I ../include 33*44704f69SBart Van AsscheCFLAGS = -g -O2 -Wall -W $(EXTRA_FLAGS) -I ../include 34*44704f69SBart Van Assche# CFLAGS = -g -O2 -Wall -W -pedantic -std=c99 $(EXTRA_FLAGS) -I ../include 35*44704f69SBart Van Assche 36*44704f69SBart Van AsscheCFLAGS_PTHREADS = -D_REENTRANT 37*44704f69SBart Van Assche 38*44704f69SBart Van Assche# there is no rule to make the following in the parent directory, 39*44704f69SBart Van Assche# it is assumed they are already built. 40*44704f69SBart Van AsscheD_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 41*44704f69SBart Van Assche 42*44704f69SBart Van AsscheLDFLAGS = -lcam 43*44704f69SBart Van Assche 44*44704f69SBart Van Asscheall: $(EXECS) 45*44704f69SBart Van Assche 46*44704f69SBart Van Asscheextras: $(EXTRAS) 47*44704f69SBart Van Assche 48*44704f69SBart Van Assche 49*44704f69SBart Van Asschedepend dep: 50*44704f69SBart Van Assche for i in *.c; do $(CC) $(INCLUDES) $(CFLAGS) -M $$i; \ 51*44704f69SBart Van Assche done > .depend 52*44704f69SBart Van Assche 53*44704f69SBart Van Asscheclean: 54*44704f69SBart Van Assche /bin/rm -f *.o $(EXECS) $(EXTRAS) core .depend 55*44704f69SBart Van Assche 56*44704f69SBart Van Asschesg_sense_test: sg_sense_test.o $(D_FILES) 57*44704f69SBart Van Assche $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) 58*44704f69SBart Van Assche 59*44704f69SBart Van Assche# building sg_chk_asc depends on a prior successful make in ../lib 60*44704f69SBart Van Asschesg_chk_asc: sg_chk_asc.o $(D_FILES) 61*44704f69SBart Van Assche $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) 62*44704f69SBart Van Assche 63*44704f69SBart Van Asschesg_tst_nvme: sg_tst_nvme.o $(D_FILES) 64*44704f69SBart Van Assche $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) 65*44704f69SBart Van Assche 66*44704f69SBart Van Asschetst_sg_lib: tst_sg_lib.o $(D_FILES) 67*44704f69SBart Van Assche $(CC) -o $@ $(LDFLAGS) $@.o $(D_FILES) 68*44704f69SBart Van Assche 69*44704f69SBart Van Asscheinstall: $(EXECS) 70*44704f69SBart Van Assche install -d $(INSTDIR) 71*44704f69SBart Van Assche for name in $(EXECS) ; \ 72*44704f69SBart Van Assche do install -s -o root -g wheel -m 755 $$name $(INSTDIR); \ 73*44704f69SBart Van Assche done 74*44704f69SBart Van Assche install -d $(MANDIR)/$(MAN_PREF) 75*44704f69SBart Van Assche for mp in $(MAN_PGS); \ 76*44704f69SBart Van Assche do install -o root -g wheel -m 644 $$mp $(MANDIR)/$(MAN_PREF); \ 77*44704f69SBart Van Assche gzip -9f $(MANDIR)/$(MAN_PREF)/$$mp; \ 78*44704f69SBart Van Assche done 79*44704f69SBart Van Assche 80*44704f69SBart Van Asscheuninstall: 81*44704f69SBart Van Assche dists="$(EXECS)"; \ 82*44704f69SBart Van Assche for name in $$dists; do \ 83*44704f69SBart Van Assche rm -f $(INSTDIR)/$$name; \ 84*44704f69SBart Van Assche done 85*44704f69SBart Van Assche for mp in $(MAN_PGS); do \ 86*44704f69SBart Van Assche rm -f $(MANDIR)/$(MAN_PREF)/$$mp.gz; \ 87*44704f69SBart Van Assche done 88*44704f69SBart Van Assche 89*44704f69SBart Van Assche# Linux uses GNU make and FreeBSD uses Berkely make. The following lines 90*44704f69SBart Van Assche# only work in Linux. Possible solutions in FreeBSD: 91*44704f69SBart Van Assche# a) use 'gmake'; b) comment out the next 3 lines, starting with 'ifeq' 92*44704f69SBart Van Assche# c) build with 'make -f Makefile.freebsd' 93*44704f69SBart Van Assche# In Linux one can install bmake (but that won't help here). 94*44704f69SBart Van Assche# ifeq (.depend,$(wildcard .depend)) 95*44704f69SBart Van Assche# include .depend 96*44704f69SBart Van Assche# endif 97