From: Tudor Bosman Date: Tue, 20 May 2014 21:32:43 +0000 (-0700) Subject: More opensource build fixes X-Git-Tag: v0.22.0~530 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=edf578d8d804624f209f1de3fe8fabd8ebaf6a99;p=folly.git More opensource build fixes Summary: - libtool version - get rid of tiny libraries - add folly/gen and a bunch of stuff from experimental Test Plan: built, built a program against it in a ubuntu vm Reviewed By: davejwatson@fb.com Subscribers: folly@lists, fugalh FB internal diff: D1339920 --- diff --git a/folly/FBString.h b/folly/FBString.h index 09407bda..359c1ae6 100644 --- a/folly/FBString.h +++ b/folly/FBString.h @@ -100,10 +100,12 @@ #include "folly/Malloc.h" #include "folly/Hash.h" +#if FOLLY_HAVE_DEPRECATED_ASSOC #ifdef _GLIBCXX_SYMVER #include #include #endif +#endif #endif @@ -2488,6 +2490,7 @@ struct hash< ::folly::fbstring> { } +#if FOLLY_HAVE_DEPRECATED_ASSOC #if defined(_GLIBCXX_SYMVER) && !defined(__BIONIC__) namespace __gnu_cxx { @@ -2507,6 +2510,8 @@ struct hash< ::folly::fbstring> { } #endif // _GLIBCXX_SYMVER && !__BIONIC__ +#endif // FOLLY_HAVE_DEPRECATED_ASSOC + #endif // _LIBSTDCXX_FBSTRING #pragma GCC diagnostic pop diff --git a/folly/Makefile.am b/folly/Makefile.am index 07fcb0d2..f004d8c9 100644 --- a/folly/Makefile.am +++ b/folly/Makefile.am @@ -6,13 +6,14 @@ CLEANFILES = noinst_PROGRAMS = generate_fingerprint_tables generate_fingerprint_tables_SOURCES = build/GenerateFingerprintTables.cpp -generate_fingerprint_tables_LDADD = libfolly.la +generate_fingerprint_tables_LDADD = libfollybase.la + +noinst_LTLIBRARIES = \ + libfollybase.la lib_LTLIBRARIES = \ libfolly.la \ - libfollybenchmark.la \ - libfollytimeout_queue.la \ - libfollyfingerprint.la + libfollybenchmark.la follyincludedir = $(includedir)/folly @@ -62,18 +63,35 @@ nobase_follyinclude_HEADERS = \ dynamic.h \ dynamic-inl.h \ Exception.h \ + ExceptionWrapper.h \ + experimental/Bits.h \ + experimental/EliasFanoCoding.h \ + experimental/EventCount.h \ + experimental/io/FsUtil.h \ FBString.h \ FBVector.h \ File.h \ FileUtil.h \ Fingerprint.h \ folly-config.h \ - Exception.h \ - ExceptionWrapper.h \ Foreach.h \ FormatArg.h \ Format.h \ Format-inl.h \ + gen/Base.h \ + gen/Base-inl.h \ + gen/Combine.h \ + gen/Combine-inl.h \ + gen/Core.h \ + gen/Core-inl.h \ + gen/File.h \ + gen/File-inl.h \ + gen/Parallel.h \ + gen/Parallel-inl.h \ + gen/ParallelMap.h \ + gen/ParallelMap-inl.h \ + gen/String.h \ + gen/String-inl.h \ GroupVarint.h \ Hash.h \ IPAddress.h \ @@ -177,17 +195,24 @@ GroupVarintTables.cpp: build/generate_varint_tables.py build/generate_varint_tables.py CLEANFILES += GroupVarintTables.cpp -libfolly_la_SOURCES = \ - Bits.cpp \ +libfollybase_la_SOURCES = \ Conv.cpp \ Demangle.cpp \ + EscapeTables.cpp \ + Format.cpp \ + FormatTables.cpp \ + Malloc.cpp \ + Range.cpp \ + String.cpp \ + Unicode.cpp + +libfolly_la_SOURCES = \ + Bits.cpp \ detail/CacheLocality.cpp \ dynamic.cpp \ - EscapeTables.cpp \ File.cpp \ FileUtil.cpp \ - Format.cpp \ - FormatTables.cpp \ + FingerprintTables.cpp \ detail/Futex.cpp \ GroupVarint.cpp \ GroupVarintTables.cpp \ @@ -202,58 +227,53 @@ libfolly_la_SOURCES = \ io/async/EventBase.cpp \ io/async/EventHandler.cpp \ io/async/Request.cpp \ - experimental/io/HugePages.cpp \ json.cpp \ - detail/MallocImpl.cpp \ detail/MemoryIdler.cpp \ MacAddress.cpp \ - Malloc.cpp \ MemoryMapping.cpp \ Random.cpp \ - Range.cpp \ SafeAssert.cpp \ SpookyHashV1.cpp \ SpookyHashV2.cpp \ stats/Instantiations.cpp \ - String.cpp \ Subprocess.cpp \ ThreadCachedArena.cpp \ TimeoutQueue.cpp \ - Unicode.cpp \ Uri.cpp \ wangle/InlineExecutor.cpp \ wangle/ManualExecutor.cpp \ - wangle/ThreadGate.cpp + wangle/ThreadGate.cpp \ + experimental/io/FsUtil.cpp + +if HAVE_LINUX +nobase_follyinclude_HEADERS += \ + experimental/io/HugePages.h +libfolly_la_SOURCES += \ + experimental/io/HugePages.cpp +endif if !HAVE_LINUX nobase_follyinclude_HEADERS += detail/Clock.h -libfolly_la_SOURCES += detail/Clock.cpp +libfollybase_la_SOURCES += detail/Clock.cpp endif if !HAVE_WEAK_SYMBOLS -libfolly_la_SOURCES += detail/MallocImpl.cpp +libfollybase_la_SOURCES += detail/MallocImpl.cpp endif if !HAVE_BITS_FUNCTEXCEPT -libfolly_la_SOURCES += detail/FunctionalExcept.cpp +libfollybase_la_SOURCES += detail/FunctionalExcept.cpp endif +libfollybase_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION) + +libfolly_la_LIBADD = libfollybase.la libfolly_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION) FingerprintTables.cpp: generate_fingerprint_tables ./generate_fingerprint_tables CLEANFILES += FingerprintTables.cpp -libfollyfingerprint_la_SOURCES = \ - FingerprintTables.cpp -libfollyfingerprint_la_LIBADD = libfolly.la -libfollyfingerprint_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION) - libfollybenchmark_la_SOURCES = Benchmark.cpp libfollybenchmark_la_LIBADD = libfolly.la libfollybenchmark_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION) - -libfollytimeout_queue_la_SOURCES = TimeoutQueue.cpp -libfollytimeout_queue_la_LIBADD = libfolly.la -libfollytimeout_queue_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LT_VERSION) - diff --git a/folly/String.h b/folly/String.h index b8ee9f39..d59477f0 100644 --- a/folly/String.h +++ b/folly/String.h @@ -21,10 +21,12 @@ #include #include +#ifdef FOLLY_HAVE_DEPRECATED_ASSOC #ifdef _GLIBCXX_SYMVER #include #include #endif +#endif #include #include @@ -518,6 +520,7 @@ struct hash > : private hash { } +#if FOLLY_HAVE_DEPRECATED_ASSOC #if defined(_GLIBCXX_SYMVER) && !defined(__BIONIC__) namespace __gnu_cxx { @@ -530,6 +533,7 @@ struct hash > : private hash { } #endif +#endif // Hook into boost's type traits namespace boost { diff --git a/folly/configure.ac b/folly/configure.ac index b87ac670..6bb5c165 100644 --- a/folly/configure.ac +++ b/folly/configure.ac @@ -20,6 +20,13 @@ AM_INIT_AUTOMAKE([foreign dist-bzip2 nostdinc subdir-objects]) AC_CONFIG_MACRO_DIR([m4]) +AX_CONFIG_FEATURE_DEFAULT_DISABLED +AX_CONFIG_FEATURE( + [deprecated-assoc], + [supports deprecated associative containers (hash_map/hash_set)], + [HAVE_DEPRECATED_ASSOC], + [Define if you want to support deprecated associative containers]) + AC_PROG_INSTALL AM_PROG_LIBTOOL diff --git a/folly/m4/ax_config_feature.m4 b/folly/m4/ax_config_feature.m4 new file mode 100644 index 00000000..e205723e --- /dev/null +++ b/folly/m4/ax_config_feature.m4 @@ -0,0 +1,156 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_config_feature.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CONFIG_FEATURE(FEATURE-NAME, FEATURE-DESCRIPTION, DEFINE, DEFINE-DESCRIPTION, [ACTION-IF-ENABLED [, ACTION-IF-NOT-ENABLED]]) +# +# DESCRIPTION +# +# AX_CONFIG_FEATURE is a simple wrapper for AC_ARG_ENABLE, it enables the +# feature FEATURE-NAME and AC_DEFINEs the passed DEFINE, depending on the +# user choice. DESCRIPTION will be used for AC_DEFINEs. ACTION-IF-ENABLED +# and ACTION-IF-NOT-ENABLED are the actions that will be run. A feature is +# enabled by default, in order to change this behaviour use the +# AX_CONFIG_FEATURE_DEFAULT_ENABLED and AX_CONFIG_FEATURE_DEFAULT_DISABLED +# macros. +# +# A simple example: +# +# AX_CONFIG_FEATURE_DEFAULT_ENABLED +# AX_CONFIG_FEATURE(feature_xxxxx, [turns on/off XXXXX support], +# HAVE_XXXXX, [Define if you want XXXXX support]) +# +# ... +# +# AX_CONFIG_FEATURE_DEFAULT_DISABLED +# AX_CONFIG_FEATURE(feature_yyyyy, [turns on/off YYYYY support], +# HAVE_YYYYY, [Define if you want YYYYY support], +# [enable_yyyyy="yes"], [enable_yyyyy="no"]) +# AM_CONDITIONAL(YYYYY, [test "$enable_yyyyy" = "yes"]) +# +# AX_CONFIG_FEATURE_DEFAULT_ENABLED +# AX_CONFIG_FEATURE(...) +# +# ... +# +# If you have lot of features and you want a verbose dumping of each user +# selection use AX_CONFIG_FEATURE_VERBOSE. Use AX_CONFIG_FEATURE_SILENT in +# order to remove a previously AX_CONFIG_FEATURE_VERBOSE. By default +# features are silent. +# +# Use AX_CONFIG_FEATURE_ENABLE or AX_CONFIG_FEATURE_DISABLE in order to +# enable or disable a specific feature. +# +# Another simple example: +# +# AS_IF([some_test_here],[AX_CONFIG_FEATURE_ENABLE(feature_xxxxx)],[]) +# +# AX_CONFIG_FEATURE(feature_xxxxx, [turns on/off XXXXX support], +# HAVE_XXXXX, [Define if you want XXXXX support]) +# AX_CONFIG_FEATURE(feature_yyyyy, [turns on/off YYYYY support], +# HAVE_YYYYY, [Define if you want YYYYY support], +# [enable_yyyyy="yes"], [enable_yyyyy="no"]) +# +# ... +# +# NOTE: AX_CONFIG_FEATURE_ENABLE() must be placed first of the relative +# AX_CONFIG_FEATURE() macro ... +# +# LICENSE +# +# Copyright (c) 2008 Francesco Salvestrini +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General +# Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 10 + +AC_DEFUN([AX_CONFIG_FEATURE],[ dnl +m4_pushdef([FEATURE], patsubst([$1], -, _))dnl + +AC_ARG_ENABLE([$1],AS_HELP_STRING([--enable-$1],[$2]),[ +case "${enableval}" in + yes) + ax_config_feature_[]FEATURE[]="yes" + ;; + no) + ax_config_feature_[]FEATURE[]="no" + ;; + *) + AC_MSG_ERROR([bad value ${enableval} for feature --$1]) + ;; +esac +]) + +AS_IF([test "$ax_config_feature_[]FEATURE[]" = yes],[ dnl + AC_DEFINE([$3]) + $5 + AS_IF([test "$ax_config_feature_verbose" = yes],[ dnl + AC_MSG_NOTICE([Feature $1 is enabled]) + ]) +],[ dnl + $6 + AS_IF([test "$ax_config_feature_verbose" = yes],[ dnl + AC_MSG_NOTICE([Feature $1 is disabled]) + ]) +]) + +AH_TEMPLATE([$3],[$4]) + +m4_popdef([FEATURE])dnl +]) + +dnl Feature global +AC_DEFUN([AX_CONFIG_FEATURE_VERBOSE],[ dnl + ax_config_feature_verbose=yes +]) + +dnl Feature global +AC_DEFUN([AX_CONFIG_FEATURE_SILENT],[ dnl + ax_config_feature_verbose=no +]) + +dnl Feature specific +AC_DEFUN([AX_CONFIG_FEATURE_DEFAULT_ENABLED], [ + ax_config_feature_[]FEATURE[]_default=yes +]) + +dnl Feature specific +AC_DEFUN([AX_CONFIG_FEATURE_DEFAULT_DISABLED], [ + ax_config_feature_[]FEATURE[]_default=no +]) + +dnl Feature specific +AC_DEFUN([AX_CONFIG_FEATURE_ENABLE],[ dnl + ax_config_feature_[]patsubst([$1], -, _)[]=yes +]) + +dnl Feature specific +AC_DEFUN([AX_CONFIG_FEATURE_DISABLE],[ dnl + ax_config_feature_[]patsubst([$1], -, _)[]=no +]) diff --git a/folly/test/Makefile.am b/folly/test/Makefile.am index 4d9d083f..6a923835 100644 --- a/folly/test/Makefile.am +++ b/folly/test/Makefile.am @@ -14,7 +14,7 @@ TESTS= \ bits_test \ bit_iterator_test -lib_LTLIBRARIES = libgtestmain.la libgtest.la +noinst_LTLIBRARIES = libgtestmain.la libgtest.la libgtestmain_la_CPPFLAGS = -Igtest-1.6.0 -Igtest-1.6.0/src libgtestmain_la_SOURCES = gtest-1.6.0/src/gtest-all.cc gtest-1.6.0/src/gtest_main.cc @@ -92,7 +92,7 @@ scope_guard_test_LDADD = libgtestmain.la $(top_builddir)/libfolly.la TESTS += scope_guard_test timeout_queue_test_SOURCES = TimeoutQueueTest.cpp -timeout_queue_test_LDADD = libgtestmain.la $(top_builddir)/libfollytimeout_queue.la +timeout_queue_test_LDADD = libgtestmain.la $(top_builddir)/libfolly.la conv_test_SOURCES = ConvTest.cpp conv_test_LDADD = libgtestmain.la $(top_builddir)/libfollybenchmark.la $(top_builddir)/libfolly.la @@ -159,7 +159,7 @@ format_test_LDADD = libgtest.la $(top_builddir)/libfolly.la $(top_builddir)/libf TESTS += format_test fingerprint_test_SOURCES = FingerprintTest.cpp -fingerprint_test_LDADD = libgtest.la $(top_builddir)/libfolly.la $(top_builddir)/libfollyfingerprint.la $(top_builddir)/libfollybenchmark.la +fingerprint_test_LDADD = libgtest.la $(top_builddir)/libfolly.la $(top_builddir)/libfollybenchmark.la TESTS += fingerprint_test portability_test_SOURCES = PortabilityTest.cpp