blob: 0d215fcb259e7a7d93303fe2f7855cca72b79fbc (
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
118
119
120
121
122
123
124
125
|
# Makefile
#
# Copyright (C) 2017 Red Hat, Inc.
# Gris Ge <fge@redhat.com>
#
ifeq ($(TOPDIR),)
TOPDIR = ..
endif
DESTDIR ?=
prefix ?= /usr
INSTALL ?= install
exec_prefix =
etcdir = /etc
SBINDIR ?= $(exec_prefix)/sbin
DBROOT ?= $(etcdir)/iscsi
ifndef LIB_DIR
ifeq ($(shell test -d /lib64 && echo 1),1)
LIB_DIR=$(prefix)/lib64
else
LIB_DIR=$(prefix)/lib
endif
endif
INCLUDE_DIR ?= $(prefix)/include
PKGCONF_DIR ?= $(LIB_DIR)/pkgconfig
MAN_DIR = $(prefix)/share/man
PKG_CONFIG ?= /usr/bin/pkg-config
LIBISCSI_USR_DIR=$(TOPDIR)/libopeniscsiusr
LIBISCSI_USR_VERSION_MAJOR=0
LIBISCSI_USR_VERSION=0.2.0
SONAME=$(LIBISCSI_USR_VERSION)
DEVLIB = libopeniscsiusr.so
LIBS = $(DEVLIB).$(SONAME)
LIBS_MAJOR = $(DEVLIB).$(LIBISCSI_USR_VERSION_MAJOR)
PKGFILE = libopeniscsiusr.pc
HEADERS = libopeniscsiusr/libopeniscsiusr.h \
libopeniscsiusr/libopeniscsiusr_common.h \
libopeniscsiusr/libopeniscsiusr_session.h \
libopeniscsiusr/libopeniscsiusr_iface.h \
libopeniscsiusr/libopeniscsiusr_node.h
TESTS = tests/test_context tests/test_session tests/test_iface tests/test_node
EXTRA_MAN_FILE = libopeniscsiusr.h.3
OBJS = context.o misc.o session.o sysfs.o iface.o idbm.o node.o default.o
CFLAGS ?= -O2 -g
CFLAGS += -Wall -Werror -Wextra -fvisibility=hidden -fPIC
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
CFLAGS += -DSBINDIR=\"$(SBINDIR)\"
CFLAGS += -DISCSI_DB_ROOT=\"$(DBROOT)\"
CFLAGS += -DISCSI_VERSION_STR=\"$(ISCSI_VERSION_STR)\"
LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
LIBADD =
all: $(LIBS) $(LIBS_MAJOR) $(TESTS) doc
$(LIBS): $(OBJS)
$(CC) $(CFLAGS) -shared -Wl,-soname=$@ -o $@ $(OBJS) $(LDFLAGS) $(LIBADD)
ln -sf $@ $(DEVLIB)
$(LIBS_MAJOR): $(LIBS)
ln -sf $(LIBS) $@
clean:
$(RM) vgcore* core *.a *.o *.so *.so.* $(TESTS)
$(RM) -r docs/man
distclean: ;
$(TESTS): $(LIBS)
$(TESTS): CFLAGS += -I$(TOPDIR)/libopeniscsiusr -g
$(TESTS): LDFLAGS += $(LIBADD) -L$(TOPDIR)/libopeniscsiusr -lopeniscsiusr
check: $(LIBS) $(TESTS)
sudo env LD_LIBRARY_PATH=$(LIBISCSI_USR_DIR) TESTS="$(TESTS)" \
tests/runtest.sh || exit 1;
install: install_libs install_docs install_pkg_files
install_libs: $(LIBS) $(LIBS_MAJOR)
$(INSTALL) -d $(DESTDIR)$(LIB_DIR)/
$(INSTALL) -d $(DESTDIR)$(INCLUDE_DIR)/
$(INSTALL) $(LIBS) $(DESTDIR)$(LIB_DIR)/
ln -sf $(LIBS) $(DESTDIR)$(LIB_DIR)/$(DEVLIB)
ln -sf $(LIBS) $(DESTDIR)$(LIB_DIR)/$(LIBS_MAJOR)
$(INSTALL) -m 644 $(HEADERS) $(DESTDIR)$(INCLUDE_DIR)/
install_docs: doc
$(INSTALL) -d $(DESTDIR)$(MAN_DIR)/man3
$(INSTALL) -m 644 docs/man/*.3 $(DESTDIR)$(MAN_DIR)/man3/
install_pkg_files:
$(INSTALL) -m 644 -D $(PKGFILE).in $(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
perl -i -pe 's|__VERSION__|$(LIBISCSI_USR_VERSION)|g' \
$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
perl -i -pe 's|__LIB_DIR__|$(LIB_DIR)|g' \
$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
perl -i -pe 's|__INCLUDE_DIR__|$(INCLUDE_DIR)|g' \
$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
doc: docs/man/$(EXTRA_MAN_FILE)
# install the static man page, and generate lots of lib man pages
# note: the last line just prints out the man page names
docs/man/$(EXTRA_MAN_FILE): $(HEADERS)
$(INSTALL) -v -m 644 -D docs/$(EXTRA_MAN_FILE) $@
@echo generating library man pages ...
@for h in $(HEADERS); do \
for f in `docs/list-man-pages.sh $$h`; do \
docs/kernel-doc -module libopeniscsiusr \
-man -function $$f $$h >docs/man/$$f.3 ; \
done; \
done
find docs/man -type f -name \*[0-9]
.PHONY: all install clean distclean doc install_pkg_files install_docs \
install_libs check
|