# NeoGraph source-delivery packaging modification, 2026-10-05:
# Library build/install only; unrelated tools, tests and RPM/Git targets omitted.
CPPFLAGS	:= -I.
CFLAGS		:= -g -Wall -Werror
CXXFLAGS	:= -g -Wall -Werror
INSTALL		:= install
DESTDIR		:=
SPECFILE	:= keyutils.spec
NO_GLIBC_KEYERR	:= 0
NO_ARLIB	:= 0
NO_SOLIB	:= 0
ETCDIR		:= /etc
BINDIR		:= /bin
SBINDIR		:= /sbin
SHAREDIR	:= /usr/share/keyutils
MANDIR		:= /usr/share/man
MAN1		:= $(MANDIR)/man1
MAN3		:= $(MANDIR)/man3
MAN5		:= $(MANDIR)/man5
MAN7		:= $(MANDIR)/man7
MAN8		:= $(MANDIR)/man8
INCLUDEDIR	:= /usr/include
LN		:= ln
LNS		:= $(LN) -sf
PREFIX 		:= /usr

###############################################################################
#
# Determine the current package version from the specfile
#
###############################################################################
vermajor	:= $(shell grep "%define vermajor" $(SPECFILE))
verminor	:= $(shell grep "%define verminor" $(SPECFILE))
MAJOR		:= $(word 3,$(vermajor))
MINOR		:= $(word 3,$(verminor))
VERSION		:= $(MAJOR).$(MINOR)

TARBALL		:= keyutils-$(VERSION).tar
ZTARBALL	:= $(TARBALL).bz2

###############################################################################
#
# Determine the current library version from the version script
#
###############################################################################
libversion	:= $(filter KEYUTILS_%,$(shell grep ^KEYUTILS_ version.lds))
libversion	:= $(lastword $(libversion))
libversion	:= $(lastword $(libversion))
APIVERSION	:= $(subst KEYUTILS_,,$(libversion))
vernumbers	:= $(subst ., ,$(APIVERSION))
APIMAJOR	:= $(firstword $(vernumbers))

ARLIB		:= libkeyutils.a
DEVELLIB	:= libkeyutils.so
SONAME		:= libkeyutils.so.$(APIMAJOR)
LIBNAME		:= libkeyutils.so.$(APIVERSION)

###############################################################################
#
# Guess at the appropriate lib directory and word size
#
###############################################################################
ifeq ($(origin LIBDIR),undefined)
LIBDIR		:= $(shell ldd /usr/bin/make | grep '\(/libc[.]\)' | sed -e 's!.*\(/.*\)/libc[.].*!\1!')
endif
ifeq ($(origin USRLIBDIR),undefined)
USRLIBDIR	:= $(patsubst /lib/%,/usr/lib/%,$(LIBDIR))
endif
BUILDFOR	:= $(shell file /usr/bin/make | sed -e 's!.*ELF \(32\|64\)-bit.*!\1!')-bit

ifeq ($(origin CFLAGS),undefined)
ifeq ($(BUILDFOR),32-bit)
CFLAGS		+= -m32
LIBDIR		:= /lib
USRLIBDIR	:= /usr/lib
else
ifeq ($(BUILDFOR),64-bit)
CFLAGS		+= -m64
LIBDIR		:= /lib64
USRLIBDIR	:= /usr/lib64
endif
endif
endif

PKGCONFIG 	:= libkeyutils.pc
PKGCONFIG_DIR 	:= pkgconfig

###############################################################################
#
# This is necessary if glibc doesn't know about the key management error codes
#
###############################################################################
ifeq ($(NO_GLIBC_KEYERR),1)
CFLAGS	+= -DNO_GLIBC_KEYERR
LIBLIBS	:= -ldl -lc
else
LIBLIBS	:=
endif

###############################################################################
#
# Normal build rule
#
###############################################################################
all:

###############################################################################
#
# Build the libraries
#
###############################################################################
#RPATH = -Wl,-rpath,$(LIBDIR)

VCPPFLAGS	:= -DPKGBUILD="\"$(shell date -u +%F)\""
VCPPFLAGS	+= -DPKGVERSION="\"keyutils-$(VERSION)\""
VCPPFLAGS	+= -DAPIVERSION="\"libkeyutils-$(APIVERSION)\""

ifeq ($(NO_ARLIB),0)
all: $(ARLIB)
$(ARLIB): keyutils.o
	$(AR) rcs $@ $<

keyutils.o: keyutils.c keyutils.h Makefile
	$(CC) $(CPPFLAGS) $(VCPPFLAGS) $(CFLAGS) -UNO_GLIBC_KEYERR -o $@ -c $<
LIB_DEPENDENCY	:= libkeyutils.a
endif


ifeq ($(NO_SOLIB),0)
all: $(DEVELLIB)
$(DEVELLIB): $(SONAME)
	$(LNS) $< $@

$(SONAME): $(LIBNAME)
	$(LNS) $< $@

LIBVERS := -shared -Wl,-soname,$(SONAME) -Wl,--version-script,version.lds

$(LIBNAME): keyutils.os version.lds Makefile
	$(CC) $(CFLAGS) -fPIC $(LDFLAGS) $(LIBVERS) -o $@ keyutils.os $(LIBLIBS)

keyutils.os: keyutils.c keyutils.h Makefile
	$(CC) $(CPPFLAGS) $(VCPPFLAGS) $(CFLAGS) -fPIC -o $@ -c $<
LIB_DEPENDENCY	:= $(DEVELLIB)
endif

pkgconfig:
	sed \
	-e 's,@VERSION\@,$(VERSION),g' \
	-e 's,@prefix\@,$(PREFIX),g' \
	-e 's,@exec_prefix\@,$(PREFIX),g' \
	-e 's,@libdir\@,$(USRLIBDIR),g' \
	-e 's,@includedir\@,$(INCLUDEDIR),g' \
	< $(PKGCONFIG).in > $(PKGCONFIG) || rm $(PKGCONFIG)

install: all
ifeq ($(NO_ARLIB),0)
	$(INSTALL) -D -m 0644 $(ARLIB) $(DESTDIR)$(USRLIBDIR)/$(ARLIB)
endif
ifeq ($(NO_SOLIB),0)
	$(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME)
	$(LNS) $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME)
	mkdir -p $(DESTDIR)$(USRLIBDIR)
	$(LNS) $(LIBDIR)/$(SONAME) $(DESTDIR)$(USRLIBDIR)/$(DEVELLIB)
	sed \
	-e 's,@VERSION\@,$(VERSION),g' \
	-e 's,@prefix\@,$(PREFIX),g' \
	-e 's,@exec_prefix\@,$(PREFIX),g' \
	-e 's,@libdir\@,$(USRLIBDIR),g' \
	-e 's,@includedir\@,$(INCLUDEDIR),g' \
	< $(PKGCONFIG).in > $(PKGCONFIG) || rm $(PKGCONFIG)
	$(INSTALL) -D $(PKGCONFIG) $(DESTDIR)$(LIBDIR)/$(PKGCONFIG_DIR)/$(PKGCONFIG)
	rm $(PKGCONFIG)
endif
	$(INSTALL) -D -m 0644 keyutils.h $(DESTDIR)$(INCLUDEDIR)/keyutils.h

