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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
SHELL = /bin/sh
PREFIX=/usr/local
INSTDIR=$(DESTDIR)/$(PREFIX)/bin
MANDIR=$(DESTDIR)/$(PREFIX)/man
EXECS = sg_sense_test sg_queue_tst bsg_queue_tst sg_chk_asc sg_tst_nvme \
sg_tst_ioctl sg_tst_bidi tst_sg_lib sgs_dd sg_tst_excl \
sg_tst_excl2 sg_tst_excl3 sg_tst_context sg_tst_async sgh_dd \
sg_mrq_dd sg_iovec_tst sg_take_snap sg_tst_json_builder
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
## CXX = g++
## CC = clang
## CXX = clang++
LD = $(CXX)
CXXLD = $(CXX)
CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME
CXXFLAGS = -std=c++11 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
## CXXFLAGS = -std=c++14 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
## CXXFLAGS = -std=c++17 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
## CXXFLAGS = -std=c++20 -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
## CXXFLAGS = -std=c++2a -pthread -ggdb -O2 -W -Wall -iquote ../include -D_REENTRANT $(LARGE_FILE_FLAGS)
# CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME -DDEBUG
CFLAGS = -g -O2 -W -Wall
# CFLAGS = -ggdb -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
# CFLAGS = -Wall -W -pedantic -std=c++20
LDFLAGS =
LIBFILESOLD = ../lib/sg_lib.o ../lib/sg_lib_data.o ../lib/sg_io_linux.o \
../lib/sg_pr2serr.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 ../lib/sg_lib_names.o \
../lib/sg_json_builder.o ../lib/sg_pr2serr.o \
../lib/sg_json.o ../lib/sg_json_sg_lib.o
all: $(EXECS)
extras: $(EXTRAS)
bsg: $(BSG_EXTRAS)
depend dep:
for i in *.c; do $(CC) $(CPPFLAGS) $(INCLUDES) $(CFLAGS) -M $$i; \
done > .depend
clean:
/bin/rm -f *.o $(EXECS) $(EXTRAS) $(BSG_EXTRAS) json_writer core .depend
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 ../lib/sg_pr2serr.o
$(LD) -o $@ $(LDFLAGS) $^
sg_tst_nvme: sg_tst_nvme.o $(LIBFILESNEW)
$(LD) -o $@ $(LDFLAGS) $^
tst_sg_lib: tst_sg_lib.o $(LIBFILESNEW)
$(LD) -o $@ $(LDFLAGS) $^
sgs_dd: sgs_dd.o $(LIBFILESOLD)
$(LD) -o $@ $(LDFLAGS) $^
sg_tst_bidi: sg_tst_bidi.o $(LIBFILESNEW)
$(LD) -o $@ $(LDFLAGS) $^
sg_tst_excl: sg_tst_excl.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_tst_excl2: sg_tst_excl2.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_tst_excl3: sg_tst_excl3.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_tst_context: sg_tst_context.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_tst_async: sg_tst_async.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
# Next three used to require '-latomic', may not anymore
sgh_dd: sgh_dd.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_mrq_dd: sg_mrq_dd.o sg_scat_gath.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_iovec_tst: sg_iovec_tst.o sg_scat_gath.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread $^
sg_take_snap: sg_take_snap.o $(LIBFILESNEW)
$(LD) -o $@ $(LDFLAGS) $^
sg_tst_json_builder: sg_tst_json_builder.o $(LIBFILESNEW)
$(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
|