1
Description: fix build with --as-needed linker option
2
Put library flags in LIBS variable rather that LDFLAGS. Add LIBS to makefile
4
Author: Ilya Barygin <randomaction@ubuntu.com>
5
Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=647105
6
Bug: http://code.google.com/p/leveldb/issues/detail?id=57
7
Reviewed-by: Alessio Treglia <alessio@debian.org>
8
Last-Update: 2011-11-30
10
Makefile | 50 +++++++++++++++++++++++++-------------------------
11
build_detect_platform | 10 +++++-----
12
2 files changed, 30 insertions(+), 30 deletions(-)
14
--- leveldb.orig/Makefile
16
@@ -22,23 +22,23 @@ include build_config.mk
17
# (see http://code.google.com/p/snappy/)
19
SNAPPY_CFLAGS=-DSNAPPY
20
-SNAPPY_LDFLAGS=-lsnappy
28
# If Google Perf Tools are installed, add compilation and linker flags
29
# (see http://code.google.com/p/google-perftools/)
30
ifeq ($(GOOGLE_PERFTOOLS), 1)
31
-GOOGLE_PERFTOOLS_LDFLAGS=-ltcmalloc
32
+GOOGLE_PERFTOOLS_LIBS=-ltcmalloc
34
-GOOGLE_PERFTOOLS_LDFLAGS=
35
+GOOGLE_PERFTOOLS_LIBS=
38
CFLAGS += -c -I. -I./include $(PORT_CFLAGS) $(PLATFORM_CFLAGS) $(OPT) $(SNAPPY_CFLAGS) -fPIC
40
-LDFLAGS += $(PLATFORM_LDFLAGS) $(SNAPPY_LDFLAGS) $(GOOGLE_PERFTOOLS_LDFLAGS)
41
+LIBS += $(PLATFORM_LIBS) $(SNAPPY_LIBS) $(GOOGLE_PERFTOOLS_LIBS)
45
@@ -120,68 +120,68 @@ $(LIBRARY): $(LIBOBJECTS)
46
$(AR) -rs $@ $(LIBOBJECTS)
48
db_bench: db/db_bench.o $(LIBOBJECTS) $(TESTUTIL)
49
- $(CC) $(LDFLAGS) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@
50
+ $(CC) $(LDFLAGS) db/db_bench.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS)
52
db_bench_sqlite3: doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL)
53
- $(CC) $(LDFLAGS) -lsqlite3 doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL) -o $@
54
+ $(CC) $(LDFLAGS) doc/bench/db_bench_sqlite3.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS) -lsqlite3
56
db_bench_tree_db: doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL)
57
- $(CC) $(LDFLAGS) -lkyotocabinet doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL) -o $@
58
+ $(CC) $(LDFLAGS) doc/bench/db_bench_tree_db.o $(LIBOBJECTS) $(TESTUTIL) -o $@ $(LIBS) -lkyotocabinet
60
arena_test: util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS)
61
- $(CC) $(LDFLAGS) util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
62
+ $(CC) $(LDFLAGS) util/arena_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
64
c_test: db/c_test.o $(LIBOBJECTS) $(TESTHARNESS)
65
- $(CC) $(LDFLAGS) db/c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
66
+ $(CC) $(LDFLAGS) db/c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
68
cache_test: util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS)
69
- $(CC) $(LDFLAGS) util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
70
+ $(CC) $(LDFLAGS) util/cache_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
72
coding_test: util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS)
73
- $(CC) $(LDFLAGS) util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
74
+ $(CC) $(LDFLAGS) util/coding_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
76
corruption_test: db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS)
77
- $(CC) $(LDFLAGS) db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
78
+ $(CC) $(LDFLAGS) db/corruption_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
80
crc32c_test: util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS)
81
- $(CC) $(LDFLAGS) util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
82
+ $(CC) $(LDFLAGS) util/crc32c_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
84
db_test: db/db_test.o $(LIBOBJECTS) $(TESTHARNESS)
85
- $(CC) $(LDFLAGS) db/db_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
86
+ $(CC) $(LDFLAGS) db/db_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
88
dbformat_test: db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS)
89
- $(CC) $(LDFLAGS) db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
90
+ $(CC) $(LDFLAGS) db/dbformat_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
92
env_test: util/env_test.o $(LIBOBJECTS) $(TESTHARNESS)
93
- $(CC) $(LDFLAGS) util/env_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
94
+ $(CC) $(LDFLAGS) util/env_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
96
filename_test: db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS)
97
- $(CC) $(LDFLAGS) db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
98
+ $(CC) $(LDFLAGS) db/filename_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
100
log_test: db/log_test.o $(LIBOBJECTS) $(TESTHARNESS)
101
- $(CC) $(LDFLAGS) db/log_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
102
+ $(CC) $(LDFLAGS) db/log_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
104
table_test: table/table_test.o $(LIBOBJECTS) $(TESTHARNESS)
105
- $(CC) $(LDFLAGS) table/table_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
106
+ $(CC) $(LDFLAGS) table/table_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
108
skiplist_test: db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS)
109
- $(CC) $(LDFLAGS) db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
110
+ $(CC) $(LDFLAGS) db/skiplist_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
112
version_edit_test: db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS)
113
- $(CC) $(LDFLAGS) db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
114
+ $(CC) $(LDFLAGS) db/version_edit_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
116
version_set_test: db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS)
117
- $(CC) $(LDFLAGS) db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
118
+ $(CC) $(LDFLAGS) db/version_set_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
120
write_batch_test: db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS)
121
- $(CC) $(LDFLAGS) db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@
122
+ $(CC) $(LDFLAGS) db/write_batch_test.o $(LIBOBJECTS) $(TESTHARNESS) -o $@ $(LIBS)
124
$(MEMENVLIBRARY) : helpers/memenv/memenv.o
126
$(AR) -rs $@ helpers/memenv/memenv.o
128
memenv_test : helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS)
129
- $(CC) $(LDFLAGS) helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS) -o $@
130
+ $(CC) $(LDFLAGS) helpers/memenv/memenv_test.o $(MEMENVLIBRARY) $(LIBRARY) $(TESTHARNESS) -o $@ $(LIBS)
132
ifeq ($(PLATFORM), IOS)
133
# For iOS, create universal object files to be used on both the simulator and
134
--- leveldb.orig/build_detect_platform
135
+++ leveldb/build_detect_platform
137
# -DLEVELDB_PLATFORM_POSIX if cstatomic is present
138
# -DLEVELDB_PLATFORM_NOATOMIC if it is not
139
# - PLATFORM_CFLAGS with compiler flags for the platform
140
-# - PLATFORM_LDFLAGS with linker flags for the platform
141
+# - PLATFORM_LIBS with linker flags for the platform
143
# Delete existing build_config.mk
144
rm -f build_config.mk
145
@@ -18,22 +18,22 @@ case `uname -s` in
148
echo "PLATFORM_CFLAGS=-DOS_MACOSX" >> build_config.mk
149
- echo "PLATFORM_LDFLAGS=" >> build_config.mk
150
+ echo "PLATFORM_LIBS=" >> build_config.mk
154
echo "PLATFORM_CFLAGS=-pthread -DOS_LINUX" >> build_config.mk
155
- echo "PLATFORM_LDFLAGS=-lpthread" >> build_config.mk
156
+ echo "PLATFORM_LIBS=-lpthread" >> build_config.mk
160
echo "PLATFORM_CFLAGS=-D_REENTRANT -DOS_SOLARIS" >> build_config.mk
161
- echo "PLATFORM_LDFLAGS=-lpthread -lrt" >> build_config.mk
162
+ echo "PLATFORM_LIBS=-lpthread -lrt" >> build_config.mk
166
echo "PLATFORM_CFLAGS=-D_REENTRANT -DOS_FREEBSD" >> build_config.mk
167
- echo "PLATFORM_LDFLAGS=-lpthread" >> build_config.mk
168
+ echo "PLATFORM_LIBS=-lpthread" >> build_config.mk
171
echo "Unknown platform!"