111 lines
2.7 KiB
Makefile
111 lines
2.7 KiB
Makefile
SHELL = /bin/sh
|
|
|
|
PREFIX=/usr/local
|
|
INSTDIR=$(DESTDIR)/$(PREFIX)/bin
|
|
MANDIR=$(DESTDIR)/$(PREFIX)/man
|
|
|
|
# In Linux the default C compiler is GCC while in FreeBSD (since release 10 ?)
|
|
# the default C compiler is clang. Swap the comment marks (lines starting
|
|
# with '#') on the next 4 (non-blank) lines.
|
|
CC = gcc
|
|
# CC = clang
|
|
|
|
LD = gcc
|
|
# LD = clang
|
|
|
|
EXECS = sg_sense_test sg_chk_asc sg_tst_nvme tst_sg_lib
|
|
|
|
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++
|
|
|
|
CPPFLAGS = -iquote ../include -iquote .. -D_REENTRANT $(LARGE_FILE_FLAGS) -DHAVE_CONFIG_H -DHAVE_NVME
|
|
CFLAGS = -g -O2 -W -Wall
|
|
# 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
|
|
LIBFILESNEW = ../lib/sg_lib.o ../lib/sg_lib_data.o \
|
|
../lib/sg_pt_win32.o ../lib/sg_pt_common.o ../lib/sg_cmds_basic.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) $^
|
|
|
|
# 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) $^
|
|
|
|
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
|