Blame libopeniscsiusr/Makefile

Packit eace71
# Makefile
Packit eace71
#
Packit eace71
# Copyright (C) 2017 Red Hat, Inc.
Packit eace71
# Gris Ge <fge@redhat.com>
Packit eace71
#
Packit eace71
Packit eace71
ifeq ($(TOPDIR),)
Packit eace71
	TOPDIR = ..
Packit eace71
endif
Packit eace71
Packit eace71
DESTDIR ?=
Packit eace71
prefix ?= /usr
Packit eace71
INSTALL ?= install
Packit eace71
Packit eace71
ifndef LIB_DIR
Packit eace71
	ifeq ($(shell test -d /lib64 && echo 1),1)
Packit eace71
		LIB_DIR=$(prefix)/lib64
Packit eace71
	else
Packit eace71
		LIB_DIR=$(prefix)/lib
Packit eace71
	endif
Packit eace71
endif
Packit eace71
Packit eace71
INCLUDE_DIR ?= $(prefix)/include
Packit eace71
PKGCONF_DIR ?= $(LIB_DIR)/pkgconfig
Packit eace71
Packit eace71
PKG_CONFIG = /usr/bin/pkg-config
Packit eace71
Packit eace71
LIBISCSI_USR_DIR=$(TOPDIR)/libopeniscsiusr
Packit eace71
Packit eace71
LIBISCSI_USR_VERSION_MAJOR=0
Packit eace71
LIBISCSI_USR_VERSION=0.2.0
Packit eace71
SONAME=$(LIBISCSI_USR_VERSION)
Packit eace71
DEVLIB = libopeniscsiusr.so
Packit eace71
LIBS = $(DEVLIB).$(SONAME)
Packit eace71
LIBS_MAJOR = $(DEVLIB).$(LIBISCSI_USR_VERSION_MAJOR)
Packit eace71
PKGFILE = libopeniscsiusr.pc
Packit eace71
HEADERS = libopeniscsiusr/libopeniscsiusr.h \
Packit eace71
	  libopeniscsiusr/libopeniscsiusr_common.h \
Packit eace71
	  libopeniscsiusr/libopeniscsiusr_session.h \
Packit eace71
	  libopeniscsiusr/libopeniscsiusr_iface.h
Packit eace71
TESTS = tests/test_context tests/test_session tests/test_iface tests/test_node
Packit eace71
EXTRA_MAN_FILES = libopeniscsiusr.h.3
Packit eace71
Packit eace71
OBJS = context.o misc.o session.o sysfs.o iface.o idbm.o node.o default.o
Packit eace71
Packit eace71
CFLAGS ?= -O2 -g
Packit eace71
CFLAGS += -Wall -Werror -Wextra -fvisibility=hidden -fPIC
Packit eace71
CFLAGS += $(shell $(PKG_CONFIG) --cflags libkmod)
Packit eace71
Packit eace71
LDFLAGS += $(shell $(PKG_CONFIG) --libs libkmod)
Packit eace71
Packit eace71
LIBADD =
Packit eace71
Packit eace71
all: $(LIBS) $(LIBS_MAJOR) $(TESTS) doc
Packit eace71
Packit eace71
$(LIBS): $(OBJS)
Packit eace71
	@echo CFLAGS= $(CFLAGS)
Packit eace71
	$(CC) $(CFLAGS) -shared -Wl,-soname=$@ -o $@ $(OBJS) $(LDFLAGS) $(LIBADD)
Packit eace71
	ln -sf $@ $(DEVLIB)
Packit eace71
Packit eace71
$(LIBS_MAJOR): $(LIBS)
Packit eace71
	ln -sf $(LIBS) $@
Packit eace71
Packit eace71
clean:
Packit eace71
	$(RM) vgcore* core *.a *.o *.gz *.so *.so.* $(TESTS)
Packit eace71
	$(RM) -r docs/man
Packit eace71
Packit eace71
$(TESTS): $(LIBS)
Packit eace71
$(TESTS): CFLAGS += -I$(TOPDIR)/libopeniscsiusr -g
Packit eace71
$(TESTS): LDFLAGS += $(LIBADD) -L$(TOPDIR)/libopeniscsiusr -lopeniscsiusr
Packit eace71
Packit eace71
check: $(LIBS) $(TESTS)
Packit eace71
	sudo env LD_LIBRARY_PATH=$(LIBISCSI_USR_DIR) TESTS="$(TESTS)" \
Packit eace71
		tests/runtest.sh || exit 1;
Packit eace71
Packit eace71
install: $(LIBS) $(LIBS_MAJOR)
Packit eace71
	$(INSTALL) -d $(DESTDIR)/$(LIB_DIR)/
Packit eace71
	$(INSTALL) -d $(DESTDIR)/$(INCLUDE_DIR)/
Packit eace71
	$(INSTALL) $(LIBS) $(DESTDIR)$(LIB_DIR)/
Packit eace71
	ln -sf $(LIBS) $(DESTDIR)/$(LIB_DIR)/$(DEVLIB)
Packit eace71
	ln -sf $(LIBS) $(DESTDIR)/$(LIB_DIR)/$(LIBS_MAJOR)
Packit eace71
	$(INSTALL) $(HEADERS) $(DESTDIR)$(INCLUDE_DIR)/
Packit eace71
	$(INSTALL) -m 644 -D $(PKGFILE).in $(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
Packit eace71
	perl -i -pe 's|__VERSION__|$(LIBNVME_VERSION)|g' \
Packit eace71
		$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
Packit eace71
	perl -i -pe 's|__LIB_DIR__|$(LIB_DIR)|g' \
Packit eace71
		$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
Packit eace71
	perl -i -pe 's|__INCLUDE_DIR__|$(INCLUDE_DIR)|g' \
Packit eace71
		$(DESTDIR)$(PKGCONF_DIR)/$(PKGFILE)
Packit eace71
Packit eace71
doc: docs/man/$(EXTRA_MAN_FILES).gz
Packit eace71
Packit eace71
TEMPFILE := $(shell mktemp)
Packit eace71
Packit eace71
docs/man/$(EXTRA_MAN_FILES).gz: $(HEADERS)
Packit eace71
	@for file in $(EXTRA_MAN_FILES); do \
Packit eace71
		$(INSTALL) -v -m 644 -D docs/$$file docs/man/$$file; \
Packit eace71
	done
Packit eace71
	cat $(HEADERS) | \
Packit eace71
	    perl docs/doc-preclean.pl > "$(TEMPFILE)"
Packit eace71
	perl docs/kernel-doc -man "$(TEMPFILE)" | \
Packit eace71
	    perl docs/split-man.pl docs/man
Packit eace71
	-rm -f "$(TEMPFILE)"
Packit eace71
	@for file in docs/man/*.3; do \
Packit eace71
		gzip -f $$file; \
Packit eace71
	done
Packit eace71
	find docs/man -type f -name \*[0-9].gz