aboutsummaryrefslogtreecommitdiffhomepage
path: root/debian/patches/targets-to-build-shlib.patch
blob: 1f251650c2307f7d6ef21cc07cf6cf7bf81e8a7d (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
From: Sean Whitton <spwhitton@spwhitton.name>
Date: Sat, 24 Sep 2016 09:43:49 -0700
Subject: targets to build shlib

Upstream suggests embedding this library in projects that require it.
This patch adds targets to build a shared library, instead.
---
 makefile | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/makefile b/makefile
index ca5c352..7165ce2 100644
--- a/makefile
+++ b/makefile
@@ -1,9 +1,24 @@
 CFLAGS ?= -O2 -Wall -Wextra -Wdeclaration-after-statement
 CPPFLAGS ?= -O2 -Wall -Wextra
 
+# need zxcvbn.h prior to package installation
+CFLAGS += -I.
+CPPFLAGS += -I.
+
+# library metadata
+TARGET_LIB = libzxcvbn.so.0
+SONAME = libzxcvbn.so.0
+
 WORDS = words-10k-pass.txt words-english.txt words-female.txt words-male.txt words-surname.txt
 
-all: test-file test-inline test-c++inline test-c++file
+all: test-file test-inline test-c++inline test-c++file test-shlib
+
+test-shlib: test.c $(TARGET_LIB)
+	if [ ! -e libzxcvbn.so ]; then ln -s $(TARGET_LIB) libzxcvbn.so; fi
+	gcc $(CFLAGS) -o $@ $< -L. -lzxcvbn -lm
+
+$(TARGET_LIB): zxcvbn-inline.o
+	gcc $(CFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-soname,$(SONAME) -o $@ $^ -lm
 
 test-file: test.c zxcvbn-file.o
 	gcc $(CFLAGS) -DUSE_DICT_FILE -o test-file test.c zxcvbn-file.o -lm
@@ -42,11 +57,13 @@ zxcvbn-c++file.o: zxcvbn.c dict-crc.h zxcvbn.h
 	if [ ! -e zxcvbn.cpp ]; then ln -s zxcvbn.c zxcvbn.cpp; fi
 	g++ $(CPPFLAGS) -DUSE_DICT_FILE -c -o zxcvbn-c++file.o zxcvbn.cpp
 
-test: test-file test-inline test-c++inline test-c++file testcases.txt
+test: test-file test-inline test-c++inline test-c++file test-shlib testcases.txt
 	@echo Testing C build, dictionary from file
 	./test-file -t testcases.txt
 	@echo Testing C build, dictionary in executable
 	./test-inline -t testcases.txt
+	@echo Testing C shlib, dictionary in shlib
+	LD_LIBRARY_PATH=. ./test-shlib -t testcases.txt
 	@echo Testing C++ build, dictionary from file
 	./test-c++file -t testcases.txt
 	@echo Testing C++ build, dictionary in executable
@@ -58,4 +75,4 @@ clean:
 	rm -f test-inline zxcvbn-inline.o test-c++inline zxcvbn-c++inline.o
 	rm -f dict-*.h zxcvbn.dict zxcvbn.cpp test.cpp
 	rm -f dictgen
-	
\ No newline at end of file
+	rm -f ${TARGET_LIB} libzxcvbn.so test-shlib