From 0d2fea4f142a26b48f6fd93f4fd885ad2720a4c4 Mon Sep 17 00:00:00 2001 From: Peter Lemenkov Date: Sat, 19 May 2012 09:27:13 +0400 Subject: [PATCH 1/6] Initial commit of the autotools stuff Signed-off-by: Peter Lemenkov --- Makefile.am | 134 +++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 93 +++++++++++++++++++++++++++++++ db/Makefile.am | 33 +++++++++++ helpers/memenv/Makefile.am | 6 ++ leveldb.pc.in | 9 +++ port/Makefile.am | 10 ++++ table/Makefile.am | 20 +++++++ util/Makefile.am | 33 +++++++++++ 8 files changed, 338 insertions(+) create mode 100644 Makefile.am create mode 100644 configure.ac create mode 100644 db/Makefile.am create mode 100644 helpers/memenv/Makefile.am create mode 100644 leveldb.pc.in create mode 100644 port/Makefile.am create mode 100644 table/Makefile.am create mode 100644 util/Makefile.am diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..18da42d --- /dev/null +++ b/Makefile.am @@ -0,0 +1,134 @@ +SUBDIRS = db helpers/memenv port table util + +lib_LTLIBRARIES = libleveldb.la + +libleveldbnobase_includedir = $(includedir)/leveldb +libleveldbnobase_include_HEADERS = ./include/leveldb/c.h \ + ./include/leveldb/cache.h \ + ./include/leveldb/comparator.h \ + ./include/leveldb/db.h \ + ./include/leveldb/env.h \ + ./include/leveldb/filter_policy.h \ + ./include/leveldb/iterator.h \ + ./include/leveldb/options.h \ + ./include/leveldb/slice.h \ + ./include/leveldb/status.h \ + ./include/leveldb/table.h \ + ./include/leveldb/table_builder.h \ + ./include/leveldb/write_batch.h + +libleveldb_la_SOURCES = + +libleveldb_la_LIBADD = @SNAPPY_LIBS@ \ + $(top_builddir)/db/libdb.la \ + $(top_builddir)/port/libport.la \ + $(top_builddir)/table/libtable.la \ + $(top_builddir)/util/libutil.la + +libleveldb_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LEVELDB_VERSION_INFO) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = leveldb.pc + +EXTRA_DIST = doc AUTHORS LICENSE NEWS README TODO + +TESTS = c_test \ + corruption_test \ + db_test \ + dbformat_test \ + filename_test \ + log_test \ + skiplist_test \ + version_edit_test \ + version_set_test \ + write_batch_test \ + \ + memenv_test \ + \ + filter_block_test \ + table_test \ + \ + arena_test \ + bloom_test \ + cache_test \ + coding_test \ + crc32c_test \ + env_test + +noinst_PROGRAMS = $(TESTS) + +c_test_SOURCES = ./db/c_test.c +c_test_CFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +c_test_LDADD = libleveldb.la util/libtest.la + +corruption_test_SOURCES = ./db/corruption_test.cc +corruption_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +corruption_test_LDADD = libleveldb.la util/libtest.la + +db_test_SOURCES = ./db/db_test.cc +db_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +db_test_LDADD = libleveldb.la util/libtest.la + +dbformat_test_SOURCES = ./db/dbformat_test.cc +dbformat_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +dbformat_test_LDADD = libleveldb.la util/libtest.la + +filename_test_SOURCES = ./db/filename_test.cc +filename_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +filename_test_LDADD = libleveldb.la util/libtest.la + +log_test_SOURCES = ./db/log_test.cc +log_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +log_test_LDADD = libleveldb.la util/libtest.la + +skiplist_test_SOURCES = ./db/skiplist_test.cc +skiplist_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +skiplist_test_LDADD = libleveldb.la util/libtest.la + +version_edit_test_SOURCES = ./db/version_edit_test.cc +version_edit_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +version_edit_test_LDADD = libleveldb.la util/libtest.la + +version_set_test_SOURCES = ./db/version_set_test.cc +version_set_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +version_set_test_LDADD = libleveldb.la util/libtest.la + +write_batch_test_SOURCES = ./db/write_batch_test.cc +write_batch_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +write_batch_test_LDADD = libleveldb.la util/libtest.la + +memenv_test_SOURCES = ./helpers/memenv/memenv_test.cc +memenv_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +memenv_test_LDADD = libleveldb.la helpers/memenv/libmemenv.la util/libtest.la + +filter_block_test_SOURCES = ./table/filter_block_test.cc +filter_block_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +filter_block_test_LDADD = libleveldb.la util/libtest.la + +table_test_SOURCES = ./table/table_test.cc +table_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +table_test_LDADD = libleveldb.la util/libtest.la + +arena_test_SOURCES = ./util/arena_test.cc +arena_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +arena_test_LDADD = libleveldb.la util/libtest.la + +bloom_test_SOURCES = ./util/bloom_test.cc +bloom_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +bloom_test_LDADD = libleveldb.la util/libtest.la + +cache_test_SOURCES = ./util/cache_test.cc +cache_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +cache_test_LDADD = libleveldb.la util/libtest.la + +coding_test_SOURCES = ./util/coding_test.cc +coding_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +coding_test_LDADD = libleveldb.la util/libtest.la + +crc32c_test_SOURCES = ./util/crc32c_test.cc +crc32c_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +crc32c_test_LDADD = libleveldb.la util/libtest.la + +env_test_SOURCES = ./util/env_test.cc +env_test_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir)/include +env_test_LDADD = libleveldb.la util/libtest.la diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..4a290d7 --- /dev/null +++ b/configure.ac @@ -0,0 +1,93 @@ +AC_INIT([leveldb], [1.12.0], [http://groups.google.com/group/leveldb]) + +AC_CANONICAL_TARGET + +AM_INIT_AUTOMAKE([dist-bzip2 no-dist-gzip tar-ustar foreign]) + +AC_SUBST(LEVELDB_VERSION_INFO, [1:7:0]) + +# Checks for programs. +AC_PROG_CXX +#AC_PROG_CC +AC_PROG_LIBTOOL +AC_PROG_INSTALL + +AC_LANG_CPLUSPLUS + +# Checks for libraries. +# FIXME: Replace `main' with a function in `-lkyotocabinet': +#AC_CHECK_LIB([kyotocabinet], [main]) +# FIXME: Replace `main' with a function in `-lsqlite3': +#AC_CHECK_LIB([sqlite3], [main]) + +AC_CHECK_LIB( + [snappy], + [snappy_compress], + [ + CXXFLAGS="$CXXFLAGS -DSNAPPY" + SNAPPY_LIBS="-lsnappy" + AC_SUBST([SNAPPY_LIBS]) + ], + [AC_MSG_ERROR([snappy library not found])], + [] + ) + +# Checks for header files. +AC_CHECK_HEADERS([fcntl.h stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h]) + +case "$target_os" in + linux*) + CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -pthread -DOS_LINUX -DLEVELDB_PLATFORM_POSIX" + ;; + darwin*) + CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -DOS_MACOSX -DLEVELDB_PLATFORM_POSIX" + ;; + freebsd*) + CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_FREEBSD -DLEVELDB_PLATFORM_POSIX" + ;; + openbsd*) + CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_OPENBSD -DLEVELDB_PLATFORM_POSIX" + ;; + netbsd*) + CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_NETBSD -DLEVELDB_PLATFORM_POSIX" + ;; + *solaris*) + CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp -D_REENTRANT -DOS_SOLARIS -DLEVELDB_PLATFORM_POSIX" + ;; + *) + AC_MSG_ERROR([No support for this OS ($target_os) yet]) + ;; +esac + +# Checks for typedefs, structures, and compiler characteristics. +#AC_CHECK_HEADER_STDBOOL +AC_C_INLINE +AC_TYPE_INT16_T +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_INT8_T +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T + +# Checks for library functions. +AC_FUNC_ERROR_AT_LINE +AC_FUNC_MALLOC +AC_FUNC_MMAP +AC_CHECK_FUNCS([fdatasync ftruncate getpagesize gettimeofday localtime_r memset mkdir munmap rmdir sqrt strchr strdup strerror strrchr strstr strtoull]) + +AC_CONFIG_FILES([ +Makefile +db/Makefile +helpers/memenv/Makefile +port/Makefile +table/Makefile +util/Makefile +leveldb.pc +]) + +AC_OUTPUT diff --git a/db/Makefile.am b/db/Makefile.am new file mode 100644 index 0000000..0efdc03 --- /dev/null +++ b/db/Makefile.am @@ -0,0 +1,33 @@ +noinst_LTLIBRARIES = libdb.la + +libdb_la_SOURCES = builder.cc \ + builder.h \ + c.cc \ + db_impl.cc \ + db_impl.h \ + db_iter.cc \ + db_iter.h \ + dbformat.cc \ + dbformat.h \ + filename.cc \ + filename.h \ + log_format.h \ + log_reader.cc \ + log_reader.h \ + log_writer.cc \ + log_writer.h \ + memtable.cc \ + memtable.h \ + repair.cc \ + skiplist.h \ + snapshot.h \ + table_cache.cc \ + table_cache.h \ + version_edit.cc \ + version_edit.h \ + version_set.cc \ + version_set.h \ + write_batch.cc \ + write_batch_internal.h + +libdb_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include diff --git a/helpers/memenv/Makefile.am b/helpers/memenv/Makefile.am new file mode 100644 index 0000000..cd52bfe --- /dev/null +++ b/helpers/memenv/Makefile.am @@ -0,0 +1,6 @@ +noinst_LTLIBRARIES = libmemenv.la + +libmemenv_la_SOURCES = memenv.cc + + +libmemenv_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include diff --git a/leveldb.pc.in b/leveldb.pc.in new file mode 100644 index 0000000..1511011 --- /dev/null +++ b/leveldb.pc.in @@ -0,0 +1,9 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: leveldb +Description: a fast key-value storage library +Version: @PACKAGE_VERSION@ +Libs: -lleveldb diff --git a/port/Makefile.am b/port/Makefile.am new file mode 100644 index 0000000..e392c46 --- /dev/null +++ b/port/Makefile.am @@ -0,0 +1,10 @@ +noinst_LTLIBRARIES = libport.la + +libport_la_SOURCES = atomic_pointer.h \ + port.h \ + port_example.h \ + port_posix.cc \ + port_posix.h \ + thread_annotations.h + +libport_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include diff --git a/table/Makefile.am b/table/Makefile.am new file mode 100644 index 0000000..239e7ba --- /dev/null +++ b/table/Makefile.am @@ -0,0 +1,20 @@ +noinst_LTLIBRARIES = libtable.la + +libtable_la_SOURCES = block.h \ + block_builder.h \ + filter_block.h \ + format.h \ + iterator_wrapper.h \ + merger.h \ + two_level_iterator.h \ + block.cc \ + block_builder.cc \ + filter_block.cc \ + format.cc \ + iterator.cc \ + merger.cc \ + table.cc \ + table_builder.cc \ + two_level_iterator.cc + +libtable_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include diff --git a/util/Makefile.am b/util/Makefile.am new file mode 100644 index 0000000..eb637ba --- /dev/null +++ b/util/Makefile.am @@ -0,0 +1,33 @@ +noinst_LTLIBRARIES = libutil.la libtest.la + +libutil_la_SOURCES = arena.h \ + coding.h \ + crc32c.h \ + hash.h \ + histogram.h \ + logging.h \ + mutexlock.h \ + posix_logger.h \ + random.h \ + arena.cc \ + bloom.cc \ + cache.cc \ + coding.cc \ + comparator.cc \ + crc32c.cc \ + env.cc \ + env_posix.cc \ + filter_policy.cc \ + hash.cc \ + histogram.cc \ + logging.cc \ + options.cc \ + status.cc + +libtest_la_SOURCES = testharness.cc \ + testharness.h \ + testutil.cc \ + testutil.h + +libutil_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include +libtest_la_CXXFLAGS = $(AM_CXXFLAGS) -I$(top_srcdir) -I$(top_srcdir)/include -- 1.8.3.1