blob: 16de2c3910d0d4a0146044f6f0ec6a651d92c459 [file] [log] [blame]
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 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
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++17 -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
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) $(CPPFLAGS) $(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) $^
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 $^
sgh_dd: sgh_dd.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread -latomic $^
sg_mrq_dd: sg_mrq_dd.o sg_scat_gath.o $(LIBFILESNEW)
$(CXXLD) -o $@ $(LDFLAGS) -pthread -latomic $^
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