Skip to content

Commit bc44cc2

Browse files
authored
Add SONAME, pkgconfig and fix makefile issues (#26)
Add SONAME, pkgconfig and fix makefile issues
1 parent 8d916c4 commit bc44cc2

File tree

5 files changed

+82
-23
lines changed

5 files changed

+82
-23
lines changed

Makefile

+55-19
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,19 @@ INSTALL = /usr/bin/install -c
66
BINDIR=$(DESTDIR)$(PREFIX)/bin
77
LIBDIR=$(DESTDIR)$(PREFIX)/lib
88
INCDIR=$(DESTDIR)$(PREFIX)/include/librdb/
9+
LIBRDB_INSTALL_SHARED:=yes
10+
LIBRDB_INSTALL_STATIC:=yes
911

10-
VERSION = $(shell grep -oP '(?<=LIBRDB_VERSION_STRING ")[0-9]+\.[0-9]+\.[0-9]+' ./src/lib/version.h)
12+
UNAME := $(shell uname)
13+
14+
ifneq (,$(filter $(UNAME),OpenBSD FreeBSD NetBSD))
15+
PKGCONFIGDIR = $(DESTDIR)$(PREFIX)/libdata/pkgconfig
16+
else
17+
PKGCONFIGDIR = $(LIBDIR)/pkgconfig
18+
endif
19+
20+
LIBRDB_VERSION = $(shell grep -oP '(?<=LIBRDB_VERSION_STRING ")[0-9]+\.[0-9]+\.[0-9]+' ./src/lib/version.h)
21+
export LIBRDB_VERSION
1122

1223
# ------------------------- ALL --------------------------------------
1324

@@ -25,6 +36,8 @@ clean:
2536
$(MAKE) -C src/cli -f Makefile clean
2637
$(MAKE) -C examples -f Makefile clean
2738
$(MAKE) -C test -f Makefile clean
39+
rm -f librdb.pc
40+
rm -f librdb-ext.pc
2841

2942
distclean: clean
3043

@@ -48,41 +61,64 @@ valgrind: build_test
4861
./runtests -v
4962

5063
# ------------------------- INSTALL --------------------------------------
51-
install: all
64+
65+
librdb.pc: librdb.pc.in Makefile
66+
sed -e 's|@PREFIX@|$(PREFIX)|' \
67+
-e 's|@VERSION@|$(LIBRDB_VERSION)|' \
68+
$< >$@
69+
70+
librdb-ext.pc: librdb-ext.pc.in Makefile
71+
sed -e 's|@PREFIX@|$(PREFIX)|' \
72+
-e 's|@VERSION@|$(LIBRDB_VERSION)|' \
73+
$< >$@
74+
75+
install: all librdb.pc librdb-ext.pc
5276
$(INSTALL) -d $(BINDIR)
53-
$(INSTALL) -m 755 bin/rdb-cli $(BINDIR)/rdb-cli-$(VERSION)
54-
ln -fsr $(BINDIR)/rdb-cli-$(VERSION) $(BINDIR)/rdb-cli
77+
$(INSTALL) -m 755 bin/rdb-cli $(BINDIR)/rdb-cli-$(LIBRDB_VERSION)
78+
ln -fsr $(BINDIR)/rdb-cli-$(LIBRDB_VERSION) $(BINDIR)/rdb-cli
5579
$(INSTALL) -d $(LIBDIR)
56-
$(INSTALL) -m 755 lib/librdb.so $(LIBDIR)/librdb.so.$(VERSION)
57-
ln -fsr $(LIBDIR)/librdb.so.$(VERSION) $(LIBDIR)/librdb.so
58-
$(INSTALL) -m 755 lib/librdb-ext.so $(LIBDIR)/librdb-ext.so.$(VERSION)
59-
ln -fsr $(LIBDIR)/librdb-ext.so.$(VERSION) $(LIBDIR)/librdb-ext.so
60-
$(INSTALL) -m 755 lib/librdb.a $(LIBDIR)/librdb.a.$(VERSION)
61-
ln -fsr $(LIBDIR)/librdb.a.$(VERSION) $(LIBDIR)/librdb.a
62-
$(INSTALL) -m 755 lib/librdb-ext.a $(LIBDIR)/librdb-ext.a.$(VERSION)
63-
ln -fsr $(LIBDIR)/librdb-ext.a.$(VERSION) $(LIBDIR)/librdb-ext.a
80+
81+
ifeq ($(LIBRDB_INSTALL_SHARED),yes)
82+
$(INSTALL) -m 755 lib/librdb.so.$(LIBRDB_VERSION) $(LIBDIR)/librdb.so.$(LIBRDB_VERSION)
83+
ln -fsr $(LIBDIR)/librdb.so.$(LIBRDB_VERSION) $(LIBDIR)/librdb.so
84+
$(INSTALL) -m 755 lib/librdb-ext.so.$(LIBRDB_VERSION) $(LIBDIR)/librdb-ext.so.$(LIBRDB_VERSION)
85+
ln -fsr $(LIBDIR)/librdb-ext.so.$(LIBRDB_VERSION) $(LIBDIR)/librdb-ext.so
86+
$(INSTALL) -d $(PKGCONFIGDIR)
87+
$(INSTALL) -m 644 librdb.pc $(PKGCONFIGDIR)
88+
$(INSTALL) -m 644 librdb-ext.pc $(PKGCONFIGDIR)
89+
endif
90+
91+
ifeq ($(LIBRDB_INSTALL_STATIC),yes)
92+
$(INSTALL) -m 755 lib/librdb.a $(LIBDIR)/librdb.a.$(LIBRDB_VERSION)
93+
ln -fsr $(LIBDIR)/librdb.a.$(LIBRDB_VERSION) $(LIBDIR)/librdb.a
94+
$(INSTALL) -m 755 lib/librdb-ext.a $(LIBDIR)/librdb-ext.a.$(LIBRDB_VERSION)
95+
ln -fsr $(LIBDIR)/librdb-ext.a.$(LIBRDB_VERSION) $(LIBDIR)/librdb-ext.a
96+
endif
97+
6498
$(INSTALL) -d $(INCDIR)
6599
$(INSTALL) -m 644 api/librdb-api.h $(INCDIR)
66100
$(INSTALL) -m 644 api/librdb-ext-api.h $(INCDIR)
67101

68102
uninstall:
69103
rm -f $(BINDIR)/rdb-cli || true
70-
rm -f $(BINDIR)/rdb-cli-$(VERSION)
104+
rm -f $(BINDIR)/rdb-cli-$(LIBRDB_VERSION)
71105
rm -f $(LIBDIR)/librdb.so
72-
rm -f $(LIBDIR)/librdb.so.$(VERSION)
106+
rm -f $(LIBDIR)/librdb.so.$(LIBRDB_VERSION)
73107
rm -f $(LIBDIR)/librdb-ext.so
74-
rm -f $(LIBDIR)/librdb-ext.so.$(VERSION)
108+
rm -f $(LIBDIR)/librdb-ext.so.$(LIBRDB_VERSION)
75109
rm -f $(LIBDIR)/librdb.a
76-
rm -f $(LIBDIR)/librdb.a.$(VERSION)
110+
rm -f $(LIBDIR)/librdb.a.$(LIBRDB_VERSION)
77111
rm -f $(LIBDIR)/librdb-ext.a
78-
rm -f $(LIBDIR)/librdb-ext.a.$(VERSION)
112+
rm -f $(LIBDIR)/librdb-ext.a.$(LIBRDB_VERSION)
79113
rm -f $(INCDIR)/librdb-api.h
80114
rm -f $(INCDIR)/librdb-ext-api.h
115+
rm -f $(PKGCONFIGDIR)/librdb.pc
116+
rm -f $(PKGCONFIGDIR)/librdb-ext.pc
81117

82118
# ------------------------- HELP --------------------------------------
83119

84120
help:
85-
@echo "librdb (v$(VERSION)) target rules:"
121+
@echo "librdb (v$(LIBRDB_VERSION)) target rules:"
86122
@echo " all - Build parser libraries, tests, and run tests"
87123
@echo " debug - Build without compiler optimization and with assert() enabled"
88124
@echo " test - Run tests with shared lib"
@@ -96,4 +132,4 @@ help:
96132
@echo " help - Prints this message"
97133

98134

99-
.PHONY: all debug test valgrind example clean distclean install uninstall build_test help
135+
.PHONY: all debug test valgrind example clean distclean install uninstall build_test help

librdb-ext.pc.in

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@PREFIX@
2+
exec_prefix=${prefix}
3+
libdir=${exec_prefix}/lib
4+
includedir=${prefix}/include
5+
6+
Name: librdb-ext
7+
Description: Extension library for parsing Redis RDB to JSON and RESP protocols
8+
Version: @VERSION@
9+
Libs: -L${libdir} -lrdb-ext
10+
Requires: librdb
11+
Cflags: -I${includedir}

librdb.pc.in

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
prefix=@PREFIX@
2+
exec_prefix=${prefix}
3+
libdir=${exec_prefix}/lib
4+
includedir=${prefix}/include
5+
6+
Name: librdb
7+
Description: Library for parsing Redis RDB files
8+
Version: @VERSION@
9+
Libs: -L${libdir} -lrdb
10+
Cflags: -I${includedir}

src/ext/Makefile

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ default: all
33
LIB_NAME = rdb
44
LIB_NAME_EXT = $(LIB_NAME)-ext
55
LIB_DIR = ../../lib
6+
LIBRDB_SONAME_EXT = lib$(LIB_NAME_EXT).so.${LIBRDB_VERSION}
67

78
TARGET_LIB_STATIC = $(LIB_DIR)/lib$(LIB_NAME).a
89
# Artifacts:
9-
TARGET_LIB_EXT = $(LIB_DIR)/lib$(LIB_NAME_EXT).so
10+
TARGET_LIB_EXT = $(LIB_DIR)/$(LIBRDB_SONAME_EXT)
1011
TARGET_LIB_STATIC_EXT = $(LIB_DIR)/lib$(LIB_NAME_EXT).a
1112

1213
#########################################################################################
@@ -38,7 +39,7 @@ all: $(TARGET_LIB_EXT) $(TARGET_LIB_STATIC_EXT)
3839
@echo "Done.";
3940

4041
$(TARGET_LIB_EXT): $(OBJECTS) $(REDIS_OBJECTS)
41-
$(CC) -o $@ -shared ${LDFLAGS} $^ $(LIBS)
42+
$(CC) -o $@ -shared -Wl,-soname,${LIBRDB_SONAME_EXT} ${LDFLAGS} $^ $(LIBS)
4243

4344
$(TARGET_LIB_STATIC_EXT): $(OBJECTS) $(REDIS_OBJECTS)
4445
ar rcs $@ $^

src/lib/Makefile

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ default: all
22

33
LIB_NAME = rdb
44
LIB_DIR = ../../lib
5+
LIBRDB_SONAME = lib$(LIB_NAME).so.${LIBRDB_VERSION}
56

67
# Artifacts:
7-
TARGET_LIB = $(LIB_DIR)/lib$(LIB_NAME).so
8+
TARGET_LIB = $(LIB_DIR)/${LIBRDB_SONAME}
89
TARGET_LIB_STATIC = $(LIB_DIR)/lib$(LIB_NAME).a
910

1011
# Source files in the working directory
@@ -38,7 +39,7 @@ all: $(TARGET_LIB) $(TARGET_LIB_STATIC)
3839
@echo "Done.";
3940

4041
$(TARGET_LIB): $(OBJECTS) $(REDIS_OBJECTS)
41-
$(CC) -o $@ -shared ${LDFLAGS} $^
42+
$(CC) -o $@ -shared -Wl,-soname,${LIBRDB_SONAME} ${LDFLAGS} $^
4243

4344
$(TARGET_LIB_STATIC): $(OBJECTS) $(REDIS_OBJECTS)
4445
ar rcs $@ $^

0 commit comments

Comments
 (0)