1
+ SET (LEVELDB_IDE_FOLDER "leveldb" )
2
+
3
+ include_directories (${Boost_INCLUDE_DIRS}
4
+ ${CMAKE_CURRENT_SOURCE_DIR}
5
+ ${CMAKE_CURRENT_SOURCE_DIR} /include
6
+ ${SNAPPY_INCLUDE_DIRS} )
7
+
8
+ # /wd4722: constructor never returns, potential memory leak because of a sigleton pattern
9
+ # /wd4702: unreachable code because of singleton pattern
10
+ # /wd4800: bool cast performance warning
11
+ IF (MSVC )
12
+ SET (LEVELDB_COMPILE_FLAGS "/D_CRT_SECURE_NO_WARNINGS /wd4800 /wd4722 /wd4702" )
13
+ ELSE (MSVC )
14
+ SET (LEVELDB_COMPILE_FLAGS "-Wno-sign-compare" )
15
+ ENDIF (MSVC )
16
+
17
+ SET (LEVEL_DB_FILES
18
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/c.h
19
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/cache .h
20
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/comparator.h
21
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/db.h
22
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/env.h
23
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/iterator.h
24
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/filter_policy.h
25
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/iterator.h
26
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/options .h
27
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/slice.h
28
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/status .h
29
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/table.h
30
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/table_builder.h
31
+ ${CMAKE_CURRENT_SOURCE_DIR} /include /leveldb/write_batch.h
32
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/builder.cc
33
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/builder.h
34
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/db_impl.cc
35
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/db_impl.h
36
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/db_iter.cc
37
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/db_iter.h
38
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/dbformat.cc
39
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/dbformat.h
40
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/filename.cc
41
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/filename.h
42
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/log_format.h
43
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/log_reader.cc
44
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/log_reader.h
45
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/log_writer.cc
46
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/log_writer.h
47
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/skiplist.h
48
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/snapshot.h
49
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/memtable.cc
50
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/memtable.h
51
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/repair.cc
52
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/table_cache.cc
53
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/table_cache.h
54
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/version_edit.cc
55
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/version_edit.h
56
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/version_set.cc
57
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/version_set.h
58
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/write_batch.cc
59
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/block.cc
60
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/block.h
61
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/block_builder.cc
62
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/block_builder.h
63
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/filter_block.cc
64
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/filter_block.h
65
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/format.cc
66
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/format.h
67
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/iterator.cc
68
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/iterator_wrapper.h
69
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/merger.cc
70
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/merger.h
71
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/table.cc
72
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/table_builder.cc
73
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/two_level_iterator.cc
74
+ ${CMAKE_CURRENT_SOURCE_DIR} /table/two_level_iterator.h
75
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/arena.cc
76
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/arena.h
77
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/bloom.cc
78
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/cache .cc
79
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/coding.cc
80
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/coding.h
81
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/comparator.cc
82
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/crc32c.cc
83
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/crc32c.h
84
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/env.cc
85
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/filter_policy.cc
86
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/hash.cc
87
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/hash.h
88
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/histogram.cc
89
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/histogram.h
90
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/logging.cc
91
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/logging.h
92
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/mutexlock.h
93
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/options .cc
94
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/random.h
95
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/status .cc
96
+ ${CMAKE_CURRENT_SOURCE_DIR} /port/port.h)
97
+
98
+ IF (WIN32 )
99
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /port/port_win.h)
100
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /port/port_win.cc)
101
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /util/win_logger.h)
102
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /util/win_logger.cc)
103
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /util/env_boost.cc)
104
+ ELSE (WIN32 )
105
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /port/port_posix.h)
106
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /port/port_posix.cc)
107
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /util/posix_logger.h)
108
+ SET (LEVEL_DB_FILES ${LEVEL_DB_FILES} ${CMAKE_CURRENT_SOURCE_DIR} /util/env_posix.cc)
109
+ ENDIF (WIN32 )
110
+
111
+ # forward files list and include dirs to parent scope
112
+ SET (LEVEL_DB_SOURCE_FILES ${LEVEL_DB_FILES} PARENT_SCOPE)
113
+ SET (LEVEL_DB_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR} /include PARENT_SCOPE)
114
+
115
+ add_library (leveldb ${LEVEL_DB_FILES} )
116
+
117
+ set_target_properties (leveldb PROPERTIES
118
+ FOLDER ${LEVELDB_IDE_FOLDER}
119
+ COMPILE_FLAGS ${LEVELDB_COMPILE_FLAGS} )
120
+
121
+ add_executable (leveldbutil
122
+ ${CMAKE_CURRENT_SOURCE_DIR} /db/leveldb_main.cc)
123
+
124
+ target_link_libraries (leveldbutil
125
+ leveldb
126
+ snappy
127
+ ${Boost_LIBRARIES}
128
+ ${Pthread_LIBRARY}
129
+ ${Additional_LIBRARIES} )
130
+
131
+ set_target_properties (leveldbutil PROPERTIES
132
+ FOLDER ${LEVELDB_IDE_FOLDER}
133
+ DEBUG_POSTFIX ${QDB_DEBUG_POSTFIX}
134
+ COMPILE_FLAGS ${LEVELDB_COMPILE_FLAGS} )
135
+
136
+ # we distribute the leveldbutil as it might be useful
137
+ install (TARGETS leveldbutil
138
+ RUNTIME DESTINATION bin
139
+ LIBRARY DESTINATION lib
140
+ ARCHIVE DESTINATION lib)
141
+
142
+ ##################################### TESTS #######################################
143
+ # Every leveldb test file has to be compiled as an independant binary
144
+ # because of the test framework used by leveldb.
145
+ SET (LEVELDB_TEST_RUNTIME
146
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/testutil.h
147
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/testutil.cc
148
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/testharness.h
149
+ ${CMAKE_CURRENT_SOURCE_DIR} /util/testharness.cc)
150
+
151
+ add_library (leveldb_test_rt ${LEVELDB_TEST_RUNTIME} )
152
+
153
+ set_target_properties (leveldb_test_rt PROPERTIES
154
+ FOLDER ${LEVELDB_IDE_FOLDER}
155
+ COMPILE_FLAGS ${LEVELDB_COMPILE_FLAGS} )
156
+
157
+ FUNCTION (LEVELDB_ADD_TEST TESTNAME TESTFILE)
158
+ IF (NOT TESTNAME)
159
+ MESSAGE (SEND_ERROR "Error: LEVELDB_ADD_TEST called without test name" )
160
+ RETURN ()
161
+ ENDIF (NOT TESTNAME)
162
+
163
+ IF (NOT TESTFILE)
164
+ MESSAGE (SEND_ERROR "Error: LEVELDB_ADD_TEST called without test file" )
165
+ RETURN ()
166
+ ENDIF (NOT TESTFILE)
167
+
168
+ add_executable (leveldb_${TESTNAME} _test
169
+ ${TESTFILE} )
170
+
171
+ target_link_libraries (leveldb_${TESTNAME} _test
172
+ leveldb_test_rt
173
+
174
+ leveldb
175
+ snappy
176
+ ${Boost_LIBRARIES}
177
+ ${Pthread_LIBRARY}
178
+ ${Additional_LIBRARIES} )
179
+
180
+ set_target_properties (leveldb_${TESTNAME} _test PROPERTIES
181
+ FOLDER ${LEVELDB_IDE_FOLDER}
182
+ DEBUG_POSTFIX ${QDB_DEBUG_POSTFIX}
183
+ COMPILE_FLAGS ${LEVELDB_COMPILE_FLAGS} )
184
+
185
+ ENDFUNCTION (LEVELDB_ADD_TEST)
186
+
187
+ LEVELDB_ADD_TEST(env ${CMAKE_CURRENT_SOURCE_DIR} /util/env_test.cc)
188
+ LEVELDB_ADD_TEST(crc32 ${CMAKE_CURRENT_SOURCE_DIR} /util/crc32c_test.cc)
189
+ LEVELDB_ADD_TEST(coding ${CMAKE_CURRENT_SOURCE_DIR} /util/coding_test.cc)
190
+ LEVELDB_ADD_TEST(arena ${CMAKE_CURRENT_SOURCE_DIR} /util/arena_test.cc)
191
+ LEVELDB_ADD_TEST(cache ${CMAKE_CURRENT_SOURCE_DIR} /util/cache_test.cc)
192
+ LEVELDB_ADD_TEST(table ${CMAKE_CURRENT_SOURCE_DIR} /table/table_test.cc)
193
+ LEVELDB_ADD_TEST(autocompact ${CMAKE_CURRENT_SOURCE_DIR} /db/autocompact_test.cc)
194
+ LEVELDB_ADD_TEST(corruption ${CMAKE_CURRENT_SOURCE_DIR} /db/corruption_test.cc)
195
+ LEVELDB_ADD_TEST(dbformat ${CMAKE_CURRENT_SOURCE_DIR} /db/dbformat_test.cc)
196
+ LEVELDB_ADD_TEST(db ${CMAKE_CURRENT_SOURCE_DIR} /db/db_test.cc)
197
+ LEVELDB_ADD_TEST(filename ${CMAKE_CURRENT_SOURCE_DIR} /db/filename_test.cc)
198
+ LEVELDB_ADD_TEST(log ${CMAKE_CURRENT_SOURCE_DIR} /db/log_test.cc)
199
+ LEVELDB_ADD_TEST(skiplist ${CMAKE_CURRENT_SOURCE_DIR} /db/skiplist_test.cc)
200
+ LEVELDB_ADD_TEST(version_edit ${CMAKE_CURRENT_SOURCE_DIR} /db/version_edit_test.cc)
201
+ LEVELDB_ADD_TEST(write_batch ${CMAKE_CURRENT_SOURCE_DIR} /db/write_batch_test.cc)
202
+ LEVELDB_ADD_TEST(db_bench ${CMAKE_CURRENT_SOURCE_DIR} /db/db_bench.cc)
203
+ LEVELDB_ADD_TEST(version_set ${CMAKE_CURRENT_SOURCE_DIR} /db/version_set_test.cc)
204
+ LEVELDB_ADD_TEST(filter_block ${CMAKE_CURRENT_SOURCE_DIR} /table/filter_block_test.cc)
205
+ LEVELDB_ADD_TEST(bloom ${CMAKE_CURRENT_SOURCE_DIR} /util/bloom_test.cc)
0 commit comments