aboutsummaryrefslogtreecommitdiff
path: root/testing/Makefile
blob: e337e66b30ed6d0c33de41fd1364ac51ec2d6b1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
SHELL = /bin/sh

PREFIX=/usr/local
INSTDIR=$(DESTDIR)/$(PREFIX)/bin
MANDIR=$(DESTDIR)/$(PREFIX)/man

EXECS = sg_iovec_tst sg_sense_test sg_queue_tst bsg_queue_tst sg_chk_asc \
	sg_tst_nvme sg_tst_ioctl tst_sg_lib sgh_dd sgs_dd
	
EXTRAS =

BSG_EXTRAS =


MAN_PGS = 
MAN_PREF = man8

LARGE_FILE_FLAGS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

# For C++/clang testing
## CC = gcc
## CC = g++
## CC = clang
## CC = clang++

LD = $(CC)

CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME
# CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME -DDEBUG
# CFLAGS = -g -O2 -W -Wall 
CFLAGS = -g -O2 -W -Wall -DDEBUG
# CFLAGS = -g -O2 -Wall -DSG_KERNEL_INCLUDES
# CFLAGS = -g -O2 -Wall -pedantic 
# CFLAGS = -Wall -W -pedantic -std=c11 --analyze
# CFLAGS = -Wall -W -pedantic -std=c++14 -fPIC

LDFLAGS =

LIBFILESOLD = ../lib/sg_lib.o ../lib/sg_lib_data.o ../lib/sg_io_linux.o
LIBFILESNEW = ../lib/sg_pt_linux_nvme.o ../lib/sg_lib.o ../lib/sg_lib_data.o \
		../lib/sg_pt_linux.o ../lib/sg_io_linux.o \
		../lib/sg_pt_common.o  ../lib/sg_cmds_basic.o \
		../lib/sg_cmds_basic2.o

all: $(EXECS)

extras: $(EXTRAS)

bsg: $(BSG_EXTRAS)


depend dep:
	for i in *.c; do $(CC) $(INCLUDES) $(CFLAGS) -M $$i; \
	done > .depend

clean:
	/bin/rm -f *.o $(EXECS) $(EXTRAS) $(BSG_EXTRAS) core .depend

sg_iovec_tst: sg_iovec_tst.o $(LIBFILESOLD)
	$(LD) -o $@ $(LDFLAGS) $^

sg_sense_test: sg_sense_test.o $(LIBFILESOLD)
	$(LD) -o $@ $(LDFLAGS) $^

sg_queue_tst: sg_queue_tst.o $(LIBFILESOLD)
	$(LD) -o $@ $(LDFLAGS) $^ 

bsg_queue_tst: bsg_queue_tst.o $(LIBFILESOLD)
	$(LD) -o $@ $(LDFLAGS) $^ 

sg_tst_ioctl: sg_tst_ioctl.o $(LIBFILESOLD)
	$(LD) -o $@ $(LDFLAGS) $^ 

# building sg_chk_asc depends on a prior successful make in ../lib
sg_chk_asc: sg_chk_asc.o ../lib/sg_lib.o ../lib/sg_lib_data.o
	$(LD) -o $@ $(LDFLAGS) $^

sg_tst_nvme: sg_tst_nvme.o $(LIBFILESNEW)
	$(LD) -o $@ $(LDFLAGS) $^ 

tst_sg_lib: tst_sg_lib.o ../lib/sg_lib.o ../lib/sg_lib_data.o
	$(LD) -o $@ $(LDFLAGS) $^

sgh_dd: sgh_dd.o $(LIBFILESNEW)
	$(LD) -o $@ $(LDFLAGS) -pthread $^

sgs_dd: sgs_dd.o $(LIBFILESOLD)
	$(LD) -o $@ $(LDFLAGS) $^ 

install: $(EXECS)
	install -d $(INSTDIR)
	for name in $^; \
	 do install -s -o root -g root -m 755 $$name $(INSTDIR); \
	done
	install -d $(MANDIR)/$(MAN_PREF)
	for mp in $(MAN_PGS); \
	 do install -o root -g root -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