xref: /aosp_15_r20/external/sg3_utils/testing/Makefile (revision 44704f698541f6367e81f991ef8bb54ccbf3fc18)
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 AsscheEXECS = sg_sense_test sg_queue_tst bsg_queue_tst sg_chk_asc sg_tst_nvme \
8*44704f69SBart Van Assche	sg_tst_ioctl sg_tst_bidi tst_sg_lib sgs_dd sg_tst_excl \
9*44704f69SBart Van Assche	sg_tst_excl2 sg_tst_excl3 sg_tst_context sg_tst_async sgh_dd \
10*44704f69SBart Van Assche	sg_mrq_dd sg_iovec_tst sg_take_snap sg_tst_json_builder
11*44704f69SBart Van Assche
12*44704f69SBart Van AsscheEXTRAS =
13*44704f69SBart Van Assche
14*44704f69SBart Van AsscheBSG_EXTRAS =
15*44704f69SBart Van Assche
16*44704f69SBart Van Assche
17*44704f69SBart Van AsscheMAN_PGS =
18*44704f69SBart Van AsscheMAN_PREF = man8
19*44704f69SBart Van Assche
20*44704f69SBart Van AsscheLARGE_FILE_FLAGS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
21*44704f69SBart Van Assche
22*44704f69SBart Van Assche# For C++/clang testing
23*44704f69SBart Van Assche## CC = gcc
24*44704f69SBart Van Assche## CXX = g++
25*44704f69SBart Van Assche## CC = clang
26*44704f69SBart Van Assche## CXX = clang++
27*44704f69SBart Van Assche
28*44704f69SBart Van AsscheLD = $(CXX)
29*44704f69SBart Van AsscheCXXLD = $(CXX)
30*44704f69SBart Van Assche
31*44704f69SBart Van AsscheCPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME
32*44704f69SBart Van AsscheCXXFLAGS = -std=c++11 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
33*44704f69SBart Van Assche## CXXFLAGS = -std=c++14 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
34*44704f69SBart Van Assche## CXXFLAGS = -std=c++17 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
35*44704f69SBart Van Assche## CXXFLAGS = -std=c++20 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
36*44704f69SBart Van Assche## CXXFLAGS = -std=c++2a -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
37*44704f69SBart Van Assche# CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME -DDEBUG
38*44704f69SBart Van AsscheCFLAGS = -g -O2 -W -Wall
39*44704f69SBart Van Assche# CFLAGS = -ggdb -O2 -W -Wall -DDEBUG
40*44704f69SBart Van Assche# CFLAGS = -g -O2 -Wall -DSG_KERNEL_INCLUDES
41*44704f69SBart Van Assche# CFLAGS = -g -O2 -Wall -pedantic
42*44704f69SBart Van Assche# CFLAGS = -Wall -W -pedantic -std=c11 --analyze
43*44704f69SBart Van Assche# CFLAGS = -Wall -W -pedantic -std=c++14 -fPIC
44*44704f69SBart Van Assche# CFLAGS = -Wall -W -pedantic -std=c++20
45*44704f69SBart Van Assche
46*44704f69SBart Van AsscheLDFLAGS =
47*44704f69SBart Van Assche
48*44704f69SBart Van AsscheLIBFILESOLD = ../lib/sg_lib.o ../lib/sg_lib_data.o ../lib/sg_io_linux.o \
49*44704f69SBart Van Assche		../lib/sg_json_builder.o ../lib/sg_pr2serr.o
50*44704f69SBart Van Assche
51*44704f69SBart Van AsscheLIBFILESNEW = ../lib/sg_pt_linux_nvme.o ../lib/sg_lib.o ../lib/sg_lib_data.o \
52*44704f69SBart Van Assche		../lib/sg_pt_linux.o ../lib/sg_io_linux.o \
53*44704f69SBart Van Assche		../lib/sg_pt_common.o  ../lib/sg_cmds_basic.o \
54*44704f69SBart Van Assche		../lib/sg_cmds_basic2.o ../lib/sg_lib_names.o \
55*44704f69SBart Van Assche		../lib/sg_json_builder.o ../lib/sg_pr2serr.o
56*44704f69SBart Van Assche
57*44704f69SBart Van Asscheall: $(EXECS)
58*44704f69SBart Van Assche
59*44704f69SBart Van Asscheextras: $(EXTRAS)
60*44704f69SBart Van Assche
61*44704f69SBart Van Asschebsg: $(BSG_EXTRAS)
62*44704f69SBart Van Assche
63*44704f69SBart Van Assche
64*44704f69SBart Van Asschedepend dep:
65*44704f69SBart Van Assche	for i in *.c; do $(CC) $(CPPFLAGS) $(INCLUDES) $(CFLAGS) -M $$i; \
66*44704f69SBart Van Assche	done > .depend
67*44704f69SBart Van Assche
68*44704f69SBart Van Asscheclean:
69*44704f69SBart Van Assche	/bin/rm -f *.o $(EXECS) $(EXTRAS) $(BSG_EXTRAS) json_writer core .depend
70*44704f69SBart Van Assche
71*44704f69SBart Van Asschesg_sense_test: sg_sense_test.o $(LIBFILESOLD)
72*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
73*44704f69SBart Van Assche
74*44704f69SBart Van Asschesg_queue_tst: sg_queue_tst.o $(LIBFILESOLD)
75*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
76*44704f69SBart Van Assche
77*44704f69SBart Van Asschebsg_queue_tst: bsg_queue_tst.o $(LIBFILESOLD)
78*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
79*44704f69SBart Van Assche
80*44704f69SBart Van Asschesg_tst_ioctl: sg_tst_ioctl.o $(LIBFILESOLD)
81*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
82*44704f69SBart Van Assche
83*44704f69SBart Van Assche# building sg_chk_asc depends on a prior successful make in ../lib
84*44704f69SBart Van Asschesg_chk_asc: sg_chk_asc.o ../lib/sg_lib.o ../lib/sg_lib_data.o
85*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
86*44704f69SBart Van Assche
87*44704f69SBart Van Asschesg_tst_nvme: sg_tst_nvme.o $(LIBFILESNEW)
88*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
89*44704f69SBart Van Assche
90*44704f69SBart Van Asschetst_sg_lib: tst_sg_lib.o $(LIBFILESNEW)
91*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
92*44704f69SBart Van Assche
93*44704f69SBart Van Asschesgs_dd: sgs_dd.o $(LIBFILESOLD)
94*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
95*44704f69SBart Van Assche
96*44704f69SBart Van Asschesg_tst_bidi: sg_tst_bidi.o $(LIBFILESNEW)
97*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
98*44704f69SBart Van Assche
99*44704f69SBart Van Asschesg_tst_excl: sg_tst_excl.o $(LIBFILESNEW)
100*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
101*44704f69SBart Van Assche
102*44704f69SBart Van Asschesg_tst_excl2: sg_tst_excl2.o $(LIBFILESNEW)
103*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
104*44704f69SBart Van Assche
105*44704f69SBart Van Asschesg_tst_excl3: sg_tst_excl3.o $(LIBFILESNEW)
106*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
107*44704f69SBart Van Assche
108*44704f69SBart Van Asschesg_tst_context: sg_tst_context.o $(LIBFILESNEW)
109*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
110*44704f69SBart Van Assche
111*44704f69SBart Van Asschesg_tst_async: sg_tst_async.o $(LIBFILESNEW)
112*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
113*44704f69SBart Van Assche
114*44704f69SBart Van Assche# Next three used to require '-latomic', may not anymore
115*44704f69SBart Van Asschesgh_dd: sgh_dd.o $(LIBFILESNEW)
116*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
117*44704f69SBart Van Assche
118*44704f69SBart Van Asschesg_mrq_dd: sg_mrq_dd.o sg_scat_gath.o $(LIBFILESNEW)
119*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
120*44704f69SBart Van Assche
121*44704f69SBart Van Asschesg_iovec_tst: sg_iovec_tst.o sg_scat_gath.o $(LIBFILESNEW)
122*44704f69SBart Van Assche	$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
123*44704f69SBart Van Assche
124*44704f69SBart Van Asschesg_take_snap: sg_take_snap.o $(LIBFILESNEW)
125*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
126*44704f69SBart Van Assche
127*44704f69SBart Van Asschesg_tst_json_builder: sg_tst_json_builder.o $(LIBFILESNEW)
128*44704f69SBart Van Assche	$(LD) -o $@ $(LDFLAGS) $^
129*44704f69SBart Van Assche
130*44704f69SBart Van Assche
131*44704f69SBart Van Asscheinstall: $(EXECS)
132*44704f69SBart Van Assche	install -d $(INSTDIR)
133*44704f69SBart Van Assche	for name in $^; \
134*44704f69SBart Van Assche	 do install -s -o root -g root -m 755 $$name $(INSTDIR); \
135*44704f69SBart Van Assche	done
136*44704f69SBart Van Assche	install -d $(MANDIR)/$(MAN_PREF)
137*44704f69SBart Van Assche	for mp in $(MAN_PGS); \
138*44704f69SBart Van Assche	 do install -o root -g root -m 644 $$mp $(MANDIR)/$(MAN_PREF); \
139*44704f69SBart Van Assche	 gzip -9f $(MANDIR)/$(MAN_PREF)/$$mp; \
140*44704f69SBart Van Assche	done
141*44704f69SBart Van Assche
142*44704f69SBart Van Asscheuninstall:
143*44704f69SBart Van Assche	dists="$(EXECS)"; \
144*44704f69SBart Van Assche	for name in $$dists; do \
145*44704f69SBart Van Assche	 rm -f $(INSTDIR)/$$name; \
146*44704f69SBart Van Assche	done
147*44704f69SBart Van Assche	for mp in $(MAN_PGS); do \
148*44704f69SBart Van Assche	 rm -f $(MANDIR)/$(MAN_PREF)/$$mp.gz; \
149*44704f69SBart Van Assche	done
150*44704f69SBart Van Assche
151*44704f69SBart Van Assche# Linux uses GNU make and FreeBSD uses Berkely make. The following lines
152*44704f69SBart Van Assche# only work in Linux. Possible solutions in FreeBSD:
153*44704f69SBart Van Assche#    a) use 'gmake'; b) comment out the next 3 lines, starting with 'ifeq'
154*44704f69SBart Van Assche#        c) build with 'make -f Makefile.freebsd'
155*44704f69SBart Van Assche# In Linux one can install bmake (but that won't help here).
156*44704f69SBart Van Asscheifeq (.depend,$(wildcard .depend))
157*44704f69SBart Van Asscheinclude .depend
158*44704f69SBart Van Asscheendif
159