43 changed files with 46485 additions and 6 deletions
Split View
Diff Options
-
19COPYING
-
4Makefile.am
-
799Makefile.in
-
62NEWS
-
196README
-
976aclocal.m4
-
BINbuild/.ninja_deps
-
4build/.ninja_log
-
139build/build.ninja
-
BINbuild/cityhash@sha/src_city.cc.o
-
7build/compile_commands.json
-
31build/internal/config.h
-
BINbuild/libcityhash.so
-
248build/meson-logs/meson-log.txt
-
BINbuild/meson-private/build.dat
-
BINbuild/meson-private/coredata.dat
-
BINbuild/meson-private/install.dat
-
0build/meson-private/meson.lock
-
BINbuild/meson-private/meson_benchmark_setup.dat
-
BINbuild/meson-private/meson_test_setup.dat
-
1build/meson-private/sanitycheckcpp.cc
-
BINbuild/meson-private/sanitycheckcpp.exe
-
1533config.guess
-
113config.h.in
-
1693config.sub
-
18146configure
-
77configure.ac
-
630depcomp
-
520install-sh
-
9636ltmain.sh
-
7831m4/libtool.m4
-
369m4/ltoptions.m4
-
123m4/ltsugar.m4
-
23m4/ltversion.m4
-
98m4/lt~obsolete.m4
-
376missing
-
14src/Makefile.am
-
681src/Makefile.in
-
1335src/city-test.cc
-
646src/city.cc
-
112src/city.h
-
43src/citycrc.h
-
6upstream.wrap
@ -0,0 +1,19 @@ |
|||
// Copyright (c) 2011 Google, Inc. |
|||
// |
|||
// Permission is hereby granted, free of charge, to any person obtaining a copy |
|||
// of this software and associated documentation files (the "Software"), to deal |
|||
// in the Software without restriction, including without limitation the rights |
|||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
|||
// copies of the Software, and to permit persons to whom the Software is |
|||
// furnished to do so, subject to the following conditions: |
|||
// |
|||
// The above copyright notice and this permission notice shall be included in |
|||
// all copies or substantial portions of the Software. |
|||
// |
|||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
|||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
|||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
|||
// THE SOFTWARE. |
@ -0,0 +1,4 @@ |
|||
ACLOCAL_AMFLAGS = -I m4 |
|||
SUBDIRS = src |
|||
|
|||
dist_doc_DATA = README NEWS COPYING |
@ -0,0 +1,799 @@ |
|||
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
|||
# @configure_input@
|
|||
|
|||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
|||
# Foundation, Inc.
|
|||
# This Makefile.in is free software; the Free Software Foundation
|
|||
# gives unlimited permission to copy and/or distribute it,
|
|||
# with or without modifications, as long as this notice is preserved.
|
|||
|
|||
# This program is distributed in the hope that it will be useful,
|
|||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|||
# PARTICULAR PURPOSE.
|
|||
|
|||
@SET_MAKE@ |
|||
|
|||
VPATH = @srcdir@ |
|||
pkgdatadir = $(datadir)/@PACKAGE@ |
|||
pkgincludedir = $(includedir)/@PACKAGE@ |
|||
pkglibdir = $(libdir)/@PACKAGE@ |
|||
pkglibexecdir = $(libexecdir)/@PACKAGE@ |
|||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
|||
install_sh_DATA = $(install_sh) -c -m 644 |
|||
install_sh_PROGRAM = $(install_sh) -c |
|||
install_sh_SCRIPT = $(install_sh) -c |
|||
INSTALL_HEADER = $(INSTALL_DATA) |
|||
transform = $(program_transform_name) |
|||
NORMAL_INSTALL = : |
|||
PRE_INSTALL = : |
|||
POST_INSTALL = : |
|||
NORMAL_UNINSTALL = : |
|||
PRE_UNINSTALL = : |
|||
POST_UNINSTALL = : |
|||
build_triplet = @build@ |
|||
host_triplet = @host@ |
|||
subdir = . |
|||
DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \
|
|||
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
|||
$(srcdir)/config.h.in $(top_srcdir)/configure COPYING NEWS \
|
|||
config.guess config.sub depcomp install-sh ltmain.sh missing |
|||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
|||
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
|
|||
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
|
|||
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
|
|||
$(top_srcdir)/configure.ac |
|||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||
$(ACLOCAL_M4) |
|||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
|||
configure.lineno config.status.lineno |
|||
mkinstalldirs = $(install_sh) -d |
|||
CONFIG_HEADER = config.h |
|||
CONFIG_CLEAN_FILES = |
|||
CONFIG_CLEAN_VPATH_FILES = |
|||
SOURCES = |
|||
DIST_SOURCES = |
|||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
|||
html-recursive info-recursive install-data-recursive \
|
|||
install-dvi-recursive install-exec-recursive \
|
|||
install-html-recursive install-info-recursive \
|
|||
install-pdf-recursive install-ps-recursive install-recursive \
|
|||
installcheck-recursive installdirs-recursive pdf-recursive \
|
|||
ps-recursive uninstall-recursive |
|||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; |
|||
am__vpath_adj = case $$p in \
|
|||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
|||
*) f=$$p;; \
|
|||
esac; |
|||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; |
|||
am__install_max = 40 |
|||
am__nobase_strip_setup = \
|
|||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` |
|||
am__nobase_strip = \
|
|||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" |
|||
am__nobase_list = $(am__nobase_strip_setup); \
|
|||
for p in $$list; do echo "$$p $$p"; done | \
|
|||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
|||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
|||
if (++n[$$2] == $(am__install_max)) \
|
|||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
|||
END { for (dir in files) print dir, files[dir] }' |
|||
am__base_list = \
|
|||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
|||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' |
|||
am__uninstall_files_from_dir = { \
|
|||
test -z "$$files" \
|
|||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
|||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
|||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
|||
} |
|||
am__installdirs = "$(DESTDIR)$(docdir)" |
|||
DATA = $(dist_doc_DATA) |
|||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
|||
distclean-recursive maintainer-clean-recursive |
|||
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
|||
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
|||
distdir dist dist-all distcheck |
|||
ETAGS = etags |
|||
CTAGS = ctags |
|||
DIST_SUBDIRS = $(SUBDIRS) |
|||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
|||
distdir = $(PACKAGE)-$(VERSION) |
|||
top_distdir = $(distdir) |
|||
am__remove_distdir = \
|
|||
if test -d "$(distdir)"; then \
|
|||
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
|||
&& rm -rf "$(distdir)" \
|
|||
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
|||
else :; fi |
|||
am__relativize = \
|
|||
dir0=`pwd`; \
|
|||
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
|||
sed_rest='s,^[^/]*/*,,'; \
|
|||
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
|||
sed_butlast='s,/*[^/]*$$,,'; \
|
|||
while test -n "$$dir1"; do \
|
|||
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
|||
if test "$$first" != "."; then \
|
|||
if test "$$first" = ".."; then \
|
|||
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
|||
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
|||
else \
|
|||
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
|||
if test "$$first2" = "$$first"; then \
|
|||
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
|||
else \
|
|||
dir2="../$$dir2"; \
|
|||
fi; \
|
|||
dir0="$$dir0"/"$$first"; \
|
|||
fi; \
|
|||
fi; \
|
|||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
|||
done; \
|
|||
reldir="$$dir2" |
|||
DIST_ARCHIVES = $(distdir).tar.gz |
|||
GZIP_ENV = --best |
|||
distuninstallcheck_listfiles = find . -type f -print |
|||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
|||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' |
|||
distcleancheck_listfiles = find . -type f -print |
|||
ACLOCAL = @ACLOCAL@ |
|||
AMTAR = @AMTAR@ |
|||
AR = @AR@ |
|||
AUTOCONF = @AUTOCONF@ |
|||
AUTOHEADER = @AUTOHEADER@ |
|||
AUTOMAKE = @AUTOMAKE@ |
|||
AWK = @AWK@ |
|||
CC = @CC@ |
|||
CCDEPMODE = @CCDEPMODE@ |
|||
CFLAGS = @CFLAGS@ |
|||
CPP = @CPP@ |
|||
CPPFLAGS = @CPPFLAGS@ |
|||
CXX = @CXX@ |
|||
CXXCPP = @CXXCPP@ |
|||
CXXDEPMODE = @CXXDEPMODE@ |
|||
CXXFLAGS = @CXXFLAGS@ |
|||
CYGPATH_W = @CYGPATH_W@ |
|||
DEFS = @DEFS@ |
|||
DEPDIR = @DEPDIR@ |
|||
DLLTOOL = @DLLTOOL@ |
|||
DSYMUTIL = @DSYMUTIL@ |
|||
DUMPBIN = @DUMPBIN@ |
|||
ECHO_C = @ECHO_C@ |
|||
ECHO_N = @ECHO_N@ |
|||
ECHO_T = @ECHO_T@ |
|||
EGREP = @EGREP@ |
|||
EXEEXT = @EXEEXT@ |
|||
FGREP = @FGREP@ |
|||
GREP = @GREP@ |
|||
INSTALL = @INSTALL@ |
|||
INSTALL_DATA = @INSTALL_DATA@ |
|||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
|||
INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
|||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ |
|||
LD = @LD@ |
|||
LDFLAGS = @LDFLAGS@ |
|||
LIBOBJS = @LIBOBJS@ |
|||
LIBS = @LIBS@ |
|||
LIBTOOL = @LIBTOOL@ |
|||
LIPO = @LIPO@ |
|||
LN_S = @LN_S@ |
|||
LTLIBOBJS = @LTLIBOBJS@ |
|||
MAKEINFO = @MAKEINFO@ |
|||
MANIFEST_TOOL = @MANIFEST_TOOL@ |
|||
MKDIR_P = @MKDIR_P@ |
|||
NM = @NM@ |
|||
NMEDIT = @NMEDIT@ |
|||
OBJDUMP = @OBJDUMP@ |
|||
OBJEXT = @OBJEXT@ |
|||
OTOOL = @OTOOL@ |
|||
OTOOL64 = @OTOOL64@ |
|||
PACKAGE = @PACKAGE@ |
|||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ |
|||
PACKAGE_NAME = @PACKAGE_NAME@ |
|||
PACKAGE_STRING = @PACKAGE_STRING@ |
|||
PACKAGE_TARNAME = @PACKAGE_TARNAME@ |
|||
PACKAGE_URL = @PACKAGE_URL@ |
|||
PACKAGE_VERSION = @PACKAGE_VERSION@ |
|||
PATH_SEPARATOR = @PATH_SEPARATOR@ |
|||
RANLIB = @RANLIB@ |
|||
SED = @SED@ |
|||
SET_MAKE = @SET_MAKE@ |
|||
SHELL = @SHELL@ |
|||
STRIP = @STRIP@ |
|||
VERSION = @VERSION@ |
|||
abs_builddir = @abs_builddir@ |
|||
abs_srcdir = @abs_srcdir@ |
|||
abs_top_builddir = @abs_top_builddir@ |
|||
abs_top_srcdir = @abs_top_srcdir@ |
|||
ac_ct_AR = @ac_ct_AR@ |
|||
ac_ct_CC = @ac_ct_CC@ |
|||
ac_ct_CXX = @ac_ct_CXX@ |
|||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ |
|||
am__include = @am__include@ |
|||
am__leading_dot = @am__leading_dot@ |
|||
am__quote = @am__quote@ |
|||
am__tar = @am__tar@ |
|||
am__untar = @am__untar@ |
|||
bindir = @bindir@ |
|||
build = @build@ |
|||
build_alias = @build_alias@ |
|||
build_cpu = @build_cpu@ |
|||
build_os = @build_os@ |
|||
build_vendor = @build_vendor@ |
|||
builddir = @builddir@ |
|||
datadir = @datadir@ |
|||
datarootdir = @datarootdir@ |
|||
docdir = @docdir@ |
|||
dvidir = @dvidir@ |
|||
exec_prefix = @exec_prefix@ |
|||
host = @host@ |
|||
host_alias = @host_alias@ |
|||
host_cpu = @host_cpu@ |
|||
host_os = @host_os@ |
|||
host_vendor = @host_vendor@ |
|||
htmldir = @htmldir@ |
|||
includedir = @includedir@ |
|||
infodir = @infodir@ |
|||
install_sh = @install_sh@ |
|||
libdir = @libdir@ |
|||
libexecdir = @libexecdir@ |
|||
localedir = @localedir@ |
|||
localstatedir = @localstatedir@ |
|||
mandir = @mandir@ |
|||
mkdir_p = @mkdir_p@ |
|||
oldincludedir = @oldincludedir@ |
|||
pdfdir = @pdfdir@ |
|||
prefix = @prefix@ |
|||
program_transform_name = @program_transform_name@ |
|||
psdir = @psdir@ |
|||
sbindir = @sbindir@ |
|||
sharedstatedir = @sharedstatedir@ |
|||
srcdir = @srcdir@ |
|||
sysconfdir = @sysconfdir@ |
|||
target_alias = @target_alias@ |
|||
top_build_prefix = @top_build_prefix@ |
|||
top_builddir = @top_builddir@ |
|||
top_srcdir = @top_srcdir@ |
|||
ACLOCAL_AMFLAGS = -I m4 |
|||
SUBDIRS = src |
|||
dist_doc_DATA = README NEWS COPYING |
|||
all: config.h |
|||
$(MAKE) $(AM_MAKEFLAGS) all-recursive |
|||
|
|||
.SUFFIXES: |
|||
am--refresh: Makefile |
|||
@: |
|||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) |
|||
@for dep in $?; do \
|
|||
case '$(am__configure_deps)' in \
|
|||
*$$dep*) \
|
|||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
|
|||
$(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
|
|||
&& exit 0; \
|
|||
exit 1;; \
|
|||
esac; \
|
|||
done; \
|
|||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
|||
$(am__cd) $(top_srcdir) && \
|
|||
$(AUTOMAKE) --foreign Makefile |
|||
.PRECIOUS: Makefile |
|||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status |
|||
@case '$?' in \
|
|||
*config.status*) \
|
|||
echo ' $(SHELL) ./config.status'; \
|
|||
$(SHELL) ./config.status;; \
|
|||
*) \
|
|||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
|||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
|||
esac; |
|||
|
|||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) |
|||
$(SHELL) ./config.status --recheck |
|||
|
|||
$(top_srcdir)/configure: $(am__configure_deps) |
|||
$(am__cd) $(srcdir) && $(AUTOCONF) |
|||
$(ACLOCAL_M4): $(am__aclocal_m4_deps) |
|||
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) |
|||
$(am__aclocal_m4_deps): |
|||
|
|||
config.h: stamp-h1 |
|||
@if test ! -f $@; then rm -f stamp-h1; else :; fi |
|||
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi |
|||
|
|||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status |
|||
@rm -f stamp-h1 |
|||
cd $(top_builddir) && $(SHELL) ./config.status config.h |
|||
$(srcdir)/config.h.in: $(am__configure_deps) |
|||
($(am__cd) $(top_srcdir) && $(AUTOHEADER)) |
|||
rm -f stamp-h1 |
|||
touch $@ |
|||
|
|||
distclean-hdr: |
|||
-rm -f config.h stamp-h1 |
|||
|
|||
mostlyclean-libtool: |
|||
-rm -f *.lo |
|||
|
|||
clean-libtool: |
|||
-rm -rf .libs _libs |
|||
|
|||
distclean-libtool: |
|||
-rm -f libtool config.lt |
|||
install-dist_docDATA: $(dist_doc_DATA) |
|||
@$(NORMAL_INSTALL) |
|||
test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" |
|||
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
|
|||
for p in $$list; do \
|
|||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
|||
echo "$$d$$p"; \
|
|||
done | $(am__base_list) | \
|
|||
while read files; do \
|
|||
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \
|
|||
$(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \
|
|||
done |
|||
|
|||
uninstall-dist_docDATA: |
|||
@$(NORMAL_UNINSTALL) |
|||
@list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \
|
|||
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
|||
dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) |
|||
|
|||
# This directory's subdirectories are mostly independent; you can cd
|
|||
# into them and run `make' without going through this Makefile.
|
|||
# To change the values of `make' variables: instead of editing Makefiles,
|
|||
# (1) if the variable is set in `config.status', edit `config.status'
|
|||
# (which will cause the Makefiles to be regenerated when you run `make');
|
|||
# (2) otherwise, pass the desired values on the `make' command line.
|
|||
$(RECURSIVE_TARGETS): |
|||
@fail= failcom='exit 1'; \
|
|||
for f in x $$MAKEFLAGS; do \
|
|||
case $$f in \
|
|||
*=* | --[!k]*);; \
|
|||
*k*) failcom='fail=yes';; \
|
|||
esac; \
|
|||
done; \
|
|||
dot_seen=no; \
|
|||
target=`echo $@ | sed s/-recursive//`; \
|
|||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|||
echo "Making $$target in $$subdir"; \
|
|||
if test "$$subdir" = "."; then \
|
|||
dot_seen=yes; \
|
|||
local_target="$$target-am"; \
|
|||
else \
|
|||
local_target="$$target"; \
|
|||
fi; \
|
|||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|||
|| eval $$failcom; \
|
|||
done; \
|
|||
if test "$$dot_seen" = "no"; then \
|
|||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
|||
fi; test -z "$$fail" |
|||
|
|||
$(RECURSIVE_CLEAN_TARGETS): |
|||
@fail= failcom='exit 1'; \
|
|||
for f in x $$MAKEFLAGS; do \
|
|||
case $$f in \
|
|||
*=* | --[!k]*);; \
|
|||
*k*) failcom='fail=yes';; \
|
|||
esac; \
|
|||
done; \
|
|||
dot_seen=no; \
|
|||
case "$@" in \
|
|||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
|||
*) list='$(SUBDIRS)' ;; \
|
|||
esac; \
|
|||
rev=''; for subdir in $$list; do \
|
|||
if test "$$subdir" = "."; then :; else \
|
|||
rev="$$subdir $$rev"; \
|
|||
fi; \
|
|||
done; \
|
|||
rev="$$rev ."; \
|
|||
target=`echo $@ | sed s/-recursive//`; \
|
|||
for subdir in $$rev; do \
|
|||
echo "Making $$target in $$subdir"; \
|
|||
if test "$$subdir" = "."; then \
|
|||
local_target="$$target-am"; \
|
|||
else \
|
|||
local_target="$$target"; \
|
|||
fi; \
|
|||
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
|||
|| eval $$failcom; \
|
|||
done && test -z "$$fail" |
|||
tags-recursive: |
|||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
|||
done |
|||
ctags-recursive: |
|||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|||
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
|||
done |
|||
|
|||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) |
|||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
|||
unique=`for i in $$list; do \
|
|||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|||
done | \
|
|||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|||
mkid -fID $$unique |
|||
tags: TAGS |
|||
|
|||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ |
|||
$(TAGS_FILES) $(LISP) |
|||
set x; \
|
|||
here=`pwd`; \
|
|||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
|||
include_option=--etags-include; \
|
|||
empty_fix=.; \
|
|||
else \
|
|||
include_option=--include; \
|
|||
empty_fix=; \
|
|||
fi; \
|
|||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
|||
if test "$$subdir" = .; then :; else \
|
|||
test ! -f $$subdir/TAGS || \
|
|||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
|||
fi; \
|
|||
done; \
|
|||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
|||
unique=`for i in $$list; do \
|
|||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|||
done | \
|
|||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|||
shift; \
|
|||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
|||
test -n "$$unique" || unique=$$empty_fix; \
|
|||
if test $$# -gt 0; then \ |
|||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|||
"$$@" $$unique; \
|
|||
else \
|
|||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
|||
$$unique; \
|
|||
fi; \
|
|||
fi |
|||
ctags: CTAGS |
|||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ |
|||
$(TAGS_FILES) $(LISP) |
|||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
|||
unique=`for i in $$list; do \
|
|||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
|||
done | \
|
|||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
|||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
|||
test -z "$(CTAGS_ARGS)$$unique" \
|
|||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|||
$$unique |
|||
|
|||
GTAGS: |
|||
here=`$(am__cd) $(top_builddir) && pwd` \
|
|||
&& $(am__cd) $(top_srcdir) \
|
|||
&& gtags -i $(GTAGS_ARGS) "$$here" |
|||
|
|||
distclean-tags: |
|||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags |
|||
|
|||
distdir: $(DISTFILES) |
|||
$(am__remove_distdir) |
|||
test -d "$(distdir)" || mkdir "$(distdir)" |
|||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|||
list='$(DISTFILES)'; \
|
|||
dist_files=`for file in $$list; do echo $$file; done | \
|
|||
sed -e "s|^$$srcdirstrip/||;t" \
|
|||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|||
case $$dist_files in \
|
|||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|||
sort -u` ;; \
|
|||
esac; \
|
|||
for file in $$dist_files; do \
|
|||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|||
if test -d $$d/$$file; then \
|
|||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|||
if test -d "$(distdir)/$$file"; then \
|
|||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|||
fi; \
|
|||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
|||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
|||
fi; \
|
|||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
|||
else \
|
|||
test -f "$(distdir)/$$file" \
|
|||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
|||
|| exit 1; \
|
|||
fi; \
|
|||
done |
|||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
|||
if test "$$subdir" = .; then :; else \
|
|||
test -d "$(distdir)/$$subdir" \
|
|||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
|||
|| exit 1; \
|
|||
fi; \
|
|||
done |
|||
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
|||
if test "$$subdir" = .; then :; else \
|
|||
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
|||
$(am__relativize); \
|
|||
new_distdir=$$reldir; \
|
|||
dir1=$$subdir; dir2="$(top_distdir)"; \
|
|||
$(am__relativize); \
|
|||
new_top_distdir=$$reldir; \
|
|||
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
|||
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
|||
($(am__cd) $$subdir && \
|
|||
$(MAKE) $(AM_MAKEFLAGS) \
|
|||
top_distdir="$$new_top_distdir" \
|
|||
distdir="$$new_distdir" \
|
|||
am__remove_distdir=: \
|
|||
am__skip_length_check=: \
|
|||
am__skip_mode_fix=: \
|
|||
distdir) \
|
|||
|| exit 1; \
|
|||
fi; \
|
|||
done |
|||
-test -n "$(am__skip_mode_fix)" \
|
|||
|| find "$(distdir)" -type d ! -perm -755 \
|
|||
-exec chmod u+rwx,go+rx {} \; -o \
|
|||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
|||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
|||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
|||
|| chmod -R a+r "$(distdir)" |
|||
dist-gzip: distdir |
|||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz |
|||
$(am__remove_distdir) |
|||
|
|||
dist-bzip2: distdir |
|||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 |
|||
$(am__remove_distdir) |
|||
|
|||
dist-lzip: distdir |
|||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz |
|||
$(am__remove_distdir) |
|||
|
|||
dist-lzma: distdir |
|||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma |
|||
$(am__remove_distdir) |
|||
|
|||
dist-xz: distdir |
|||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz |
|||
$(am__remove_distdir) |
|||
|
|||
dist-tarZ: distdir |
|||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z |
|||
$(am__remove_distdir) |
|||
|
|||
dist-shar: distdir |
|||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz |
|||
$(am__remove_distdir) |
|||
|
|||
dist-zip: distdir |
|||
-rm -f $(distdir).zip |
|||
zip -rq $(distdir).zip $(distdir) |
|||
$(am__remove_distdir) |
|||
|
|||
dist dist-all: distdir |
|||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz |
|||
$(am__remove_distdir) |
|||
|
|||
# This target untars the dist file and tries a VPATH configuration. Then
|
|||
# it guarantees that the distribution is self-contained by making another
|
|||
# tarfile.
|
|||
distcheck: dist |
|||
case '$(DIST_ARCHIVES)' in \
|
|||
*.tar.gz*) \
|
|||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
|||
*.tar.bz2*) \
|
|||
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
|||
*.tar.lzma*) \
|
|||
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
|||
*.tar.lz*) \
|
|||
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
|||
*.tar.xz*) \
|
|||
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
|||
*.tar.Z*) \
|
|||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
|||
*.shar.gz*) \
|
|||
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
|||
*.zip*) \
|
|||
unzip $(distdir).zip ;;\
|
|||
esac |
|||
chmod -R a-w $(distdir); chmod a+w $(distdir) |
|||
mkdir $(distdir)/_build |
|||
mkdir $(distdir)/_inst |
|||
chmod a-w $(distdir) |
|||
test -d $(distdir)/_build || exit 0; \
|
|||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
|||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
|||
&& am__cwd=`pwd` \
|
|||
&& $(am__cd) $(distdir)/_build \
|
|||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
|||
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
|||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
|||
distuninstallcheck \
|
|||
&& chmod -R a-w "$$dc_install_base" \
|
|||
&& ({ \
|
|||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
|||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
|||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
|||
&& rm -rf "$$dc_destdir" \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
|||
&& rm -rf $(DIST_ARCHIVES) \
|
|||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
|||
&& cd "$$am__cwd" \
|
|||
|| exit 1 |
|||
$(am__remove_distdir) |
|||
@(echo "$(distdir) archives ready for distribution: "; \
|
|||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
|||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' |
|||
distuninstallcheck: |
|||
@test -n '$(distuninstallcheck_dir)' || { \
|
|||
echo 'ERROR: trying to run $@ with an empty' \
|
|||
'$$(distuninstallcheck_dir)' >&2; \
|
|||
exit 1; \
|
|||
}; \
|
|||
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
|||
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
|||
exit 1; \
|
|||
}; \
|
|||
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
|||
|| { echo "ERROR: files left after uninstall:" ; \
|
|||
if test -n "$(DESTDIR)"; then \
|
|||
echo " (check DESTDIR support)"; \
|
|||
fi ; \
|
|||
$(distuninstallcheck_listfiles) ; \
|
|||
exit 1; } >&2 |
|||
distcleancheck: distclean |
|||
@if test '$(srcdir)' = . ; then \
|
|||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
|||
exit 1 ; \
|
|||
fi |
|||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
|||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
|||
$(distcleancheck_listfiles) ; \
|
|||
exit 1; } >&2 |
|||
check-am: all-am |
|||
check: check-recursive |
|||
all-am: Makefile $(DATA) config.h |
|||
installdirs: installdirs-recursive |
|||
installdirs-am: |
|||
for dir in "$(DESTDIR)$(docdir)"; do \
|
|||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
|||
done |
|||
install: install-recursive |
|||
install-exec: install-exec-recursive |
|||
install-data: install-data-recursive |
|||
uninstall: uninstall-recursive |
|||
|
|||
install-am: all-am |
|||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am |
|||
|
|||
installcheck: installcheck-recursive |
|||
install-strip: |
|||
if test -z '$(STRIP)'; then \
|
|||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|||
install; \
|
|||
else \
|
|||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
|||
fi |
|||
mostlyclean-generic: |
|||
|
|||
clean-generic: |
|||
|
|||
distclean-generic: |
|||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) |
|||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) |
|||
|
|||
maintainer-clean-generic: |
|||
@echo "This command is intended for maintainers to use" |
|||
@echo "it deletes files that may require special tools to rebuild." |
|||
clean: clean-recursive |
|||
|
|||
clean-am: clean-generic clean-libtool mostlyclean-am |
|||
|
|||
distclean: distclean-recursive |
|||
-rm -f $(am__CONFIG_DISTCLEAN_FILES) |
|||
-rm -f Makefile |
|||
distclean-am: clean-am distclean-generic distclean-hdr \ |
|||
distclean-libtool distclean-tags |
|||
|
|||
dvi: dvi-recursive |
|||
|
|||
dvi-am: |
|||
|
|||
html: html-recursive |
|||
|
|||
html-am: |
|||
|
|||
info: info-recursive |
|||
|
|||
info-am: |
|||
|
|||
install-data-am: install-dist_docDATA |
|||
|
|||
install-dvi: install-dvi-recursive |
|||
|
|||
install-dvi-am: |
|||
|
|||
install-exec-am: |
|||
|
|||
install-html: install-html-recursive |
|||
|
|||
install-html-am: |
|||
|
|||
install-info: install-info-recursive |
|||
|
|||
install-info-am: |
|||
|
|||
install-man: |
|||
|
|||
install-pdf: install-pdf-recursive |
|||
|
|||
install-pdf-am: |
|||
|
|||
install-ps: install-ps-recursive |
|||
|
|||
install-ps-am: |
|||
|
|||
installcheck-am: |
|||
|
|||
maintainer-clean: maintainer-clean-recursive |
|||
-rm -f $(am__CONFIG_DISTCLEAN_FILES) |
|||
-rm -rf $(top_srcdir)/autom4te.cache |
|||
-rm -f Makefile |
|||
maintainer-clean-am: distclean-am maintainer-clean-generic |
|||
|
|||
mostlyclean: mostlyclean-recursive |
|||
|
|||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool |
|||
|
|||
pdf: pdf-recursive |
|||
|
|||
pdf-am: |
|||
|
|||
ps: ps-recursive |
|||
|
|||
ps-am: |
|||
|
|||
uninstall-am: uninstall-dist_docDATA |
|||
|
|||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ |
|||
ctags-recursive install-am install-strip tags-recursive |
|||
|
|||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ |
|||
all all-am am--refresh check check-am clean clean-generic \
|
|||
clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
|
|||
dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \
|
|||
dist-zip distcheck distclean distclean-generic distclean-hdr \
|
|||
distclean-libtool distclean-tags distcleancheck distdir \
|
|||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
|||
install install-am install-data install-data-am \
|
|||
install-dist_docDATA install-dvi install-dvi-am install-exec \
|
|||
install-exec-am install-html install-html-am install-info \
|
|||
install-info-am install-man install-pdf install-pdf-am \
|
|||
install-ps install-ps-am install-strip installcheck \
|
|||
installcheck-am installdirs installdirs-am maintainer-clean \
|
|||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
|||
mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \
|
|||
uninstall uninstall-am uninstall-dist_docDATA |
|||
|
|||
|
|||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|||
.NOEXPORT: |
@ -0,0 +1,62 @@ |
|||
CityHash v1.1.1, June 17, 2013 |
|||
|
|||
* Fix CityHash32() so platforms that disagree about whether 'char' is signed |
|||
use the same mathematical function. For most people this changes nothing |
|||
as most popular platforms agree with x86 about whether 'char' is signed. |
|||
* No changes to any of the functions, unless you had been using CityHash32() |
|||
despite "make check" reporting a failure on your platform. |
|||
* Slightly modernize and improve configuration and portability. |
|||
|
|||
CityHash v1.1, October 22, 2012 |
|||
|
|||
* Add CityHash32(), intended for 32-bit platforms. |
|||
* Change existing functions to improve their hash quality and/or speed. Most |
|||
of the changes were minor, but CityHashCrc* was substantially reworked |
|||
(and made perhaps 10% slower, unfortunately). |
|||
* Improve README. |
|||
|
|||
CityHash v1.0.3, October 6, 2011 |
|||
|
|||
* Change all the functions to improve their hash quality. Most of the |
|||
changes were minor. Special thanks to Bob Jenkins for reporting some |
|||
issues that he'd found. The speed of the functions after these changes is |
|||
roughly unchanged, except that CityHash128() and CityHash128WithSeed() are |
|||
slower. |
|||
* To improve portability, replace the one use of ssize_t with signed long. |
|||
* Improve README. |
|||
|
|||
CityHash v1.0.2, May 8, 2011 |
|||
|
|||
* Correct a problem in CityHashCrc256(); for inputs under 240 bytes the |
|||
scheme of padding to 240 bytes was causing the empty string and an input |
|||
of exactly 240 NULs to have the same hash code. That is now fixed. |
|||
Most strings less than 240 bytes long will have a different hash than |
|||
they did in v1.0.1. |
|||
* Other hash functions are unchanged. |
|||
* Minor corrections and improvements to README. |
|||
|
|||
CityHash v1.0.1, April 28, 2011 |
|||
|
|||
* Added README, NEWS, and COPYING. The README contains installation and |
|||
usage instructions, information on "hash quality," and other goodies. |
|||
* Improved how CityHash128() and CityHash128WithSeed() handle very short |
|||
input strings. |
|||
* Added new functions that are faster on long strings on 64-bit CPUs with |
|||
a CRC32 instruction: CityHashCrc128(), CityHashCrc128WithSeed(), and |
|||
CityHashCrc256(). |
|||
* Removed our assumption that "*(const uint64*)p" and such is safe. Now we |
|||
memcpy() instead. It has no speed penalty and makes our intent explicit |
|||
to the compiler. |
|||
* Changed #include "city.h" to #include <city.h>, suggested by Robert Escriva. |
|||
* Added build system, a modified version of one contributed by Robert Escriva. |
|||
* We now use __builtin_expect if the configure script can make it work, rather |
|||
than just on gcc. |
|||
* Added a test: use "make check" to run it. If you compile CityHash in a way |
|||
that causes it to return unexpected results, the test should fail. |
|||
* Added untested big-endian support. Please let us know if you try it! |
|||
* Other than CityHash128() and CityHash128WithSeed(), the hash functions in |
|||
the previous release are unchanged. |
|||
|
|||
CityHash v1, April 11, 2011 |
|||
|
|||
* Initial release |
@ -0,0 +1,196 @@ |
|||
CityHash, a family of hash functions for strings. |
|||
|
|||
|
|||
Introduction |
|||
============ |
|||
|
|||
CityHash provides hash functions for strings. The functions mix the |
|||
input bits thoroughly but are not suitable for cryptography. See |
|||
"Hash Quality," below, for details on how CityHash was tested and so on. |
|||
|
|||
We provide reference implementations in C++, with a friendly MIT license. |
|||
|
|||
CityHash32() returns a 32-bit hash. |
|||
|
|||
CityHash64() and similar return a 64-bit hash. |
|||
|
|||
CityHash128() and similar return a 128-bit hash and are tuned for |
|||
strings of at least a few hundred bytes. Depending on your compiler |
|||
and hardware, it's likely faster than CityHash64() on sufficiently long |
|||
strings. It's slower than necessary on shorter strings, but we expect |
|||
that case to be relatively unimportant. |
|||
|
|||
CityHashCrc128() and similar are variants of CityHash128() that depend |
|||
on _mm_crc32_u64(), an intrinsic that compiles to a CRC32 instruction |
|||
on some CPUs. However, none of the functions we provide are CRCs. |
|||
|
|||
CityHashCrc256() is a variant of CityHashCrc128() that also depends |
|||
on _mm_crc32_u64(). It returns a 256-bit hash. |
|||
|
|||
All members of the CityHash family were designed with heavy reliance |
|||
on previous work by Austin Appleby, Bob Jenkins, and others. |
|||
For example, CityHash32 has many similarities with Murmur3a. |
|||
|
|||
Performance on long strings: 64-bit CPUs |
|||
======================================== |
|||
|
|||
We are most excited by the performance of CityHash64() and its variants on |
|||
short strings, but long strings are interesting as well. |
|||
|
|||
CityHash is intended to be fast, under the constraint that it hash very |
|||
well. For CPUs with the CRC32 instruction, CRC is speedy, but CRC wasn't |
|||
designed as a hash function and shouldn't be used as one. CityHashCrc128() |
|||
is not a CRC, but it uses the CRC32 machinery. |
|||
|
|||
On a single core of a 2.67GHz Intel Xeon X5550, CityHashCrc256 peaks at about |
|||
5 to 5.5 bytes/cycle. The other CityHashCrc functions are wrappers around |
|||
CityHashCrc256 and should have similar performance on long strings. |
|||
(CityHashCrc256 in v1.0.3 was even faster, but we decided it wasn't as thorough |
|||
as it should be.) CityHash128 peaks at about 4.3 bytes/cycle. The fastest |
|||
Murmur variant on that hardware, Murmur3F, peaks at about 2.4 bytes/cycle. |
|||
We expect the peak speed of CityHash128 to dominate CityHash64, which is |
|||
aimed more toward short strings or use in hash tables. |
|||
|
|||
For long strings, a new function by Bob Jenkins, SpookyHash, is just |
|||
slightly slower than CityHash128 on Intel x86-64 CPUs, but noticeably |
|||
faster on AMD x86-64 CPUs. For hashing long strings on AMD CPUs |
|||
and/or CPUs without the CRC instruction, SpookyHash may be just as |
|||
good or better than any of the CityHash variants. |
|||
|
|||
Performance on short strings: 64-bit CPUs |
|||
========================================= |
|||
|
|||
For short strings, e.g., most hash table keys, CityHash64 is faster than |
|||
CityHash128, and probably faster than all the aforementioned functions, |
|||
depending on the mix of string lengths. Here are a few results from that |
|||
same hardware, where we (unrealistically) tested a single string length over |
|||
and over again: |
|||
|
|||
Hash Results |
|||
------------------------------------------------------------------------------ |
|||
CityHash64 v1.0.3 7ns for 1 byte, or 6ns for 8 bytes, or 9ns for 64 bytes |
|||
Murmur2 (64-bit) 6ns for 1 byte, or 6ns for 8 bytes, or 15ns for 64 bytes |
|||
Murmur3F 14ns for 1 byte, or 15ns for 8 bytes, or 23ns for 64 bytes |
|||
|
|||
We don't have CityHash64 benchmarks results for v1.1, but we expect the |
|||
numbers to be similar. |
|||
|
|||
Performance: 32-bit CPUs |
|||
======================== |
|||
|
|||
CityHash32 is the newest variant of CityHash. It is intended for |
|||
32-bit hardware in general but has been mostly tested on x86. Our benchmarks |
|||
suggest that Murmur3 is the nearest competitor to CityHash32 on x86. |
|||
We don't know of anything faster that has comparable quality. The speed rankings |
|||
in our testing: CityHash32 > Murmur3f > Murmur3a (for long strings), and |
|||
CityHash32 > Murmur3a > Murmur3f (for short strings). |
|||
|
|||
Installation |
|||
============ |
|||
|
|||
We provide reference implementations of several CityHash functions, written |
|||
in C++. The build system is based on autoconf. It defaults the C++ |
|||
compiler flags to "-g -O2", which is probably slower than -O3 if you are |
|||
using gcc. YMMV. |
|||
|
|||
On systems with gcc, we generally recommend: |
|||
|
|||
./configure |
|||
make all check CXXFLAGS="-g -O3" |
|||
sudo make install |
|||
|
|||
Or, if your system has the CRC32 instruction, and you want to build everything: |
|||
|
|||
./configure --enable-sse4.2 |
|||
make all check CXXFLAGS="-g -O3 -msse4.2" |
|||
sudo make install |
|||
|
|||
Note that our build system doesn't try to determine the appropriate compiler |
|||
flag for enabling SSE4.2. For gcc it is "-msse4.2". The --enable-sse4.2 |
|||
flag to the configure script controls whether citycrc.h is installed when |
|||
you "make install." In general, picking the right compiler flags can be |
|||
tricky, and may depend on your compiler, your hardware, and even how you |
|||
plan to use the library. |
|||
|
|||
For generic information about how to configure this software, please try: |
|||
|
|||
./configure --help |
|||
|
|||
Failing that, please work from city.cc and city*.h, as they contain all the |
|||
necessary code. |
|||
|
|||
|
|||
Usage |
|||
===== |
|||
|
|||
The above installation instructions will produce a single library. It will |
|||
contain CityHash32(), CityHash64(), and CityHash128(), and their variants, |
|||
and possibly CityHashCrc128(), CityHashCrc128WithSeed(), and |
|||
CityHashCrc256(). The functions with Crc in the name are declared in |
|||
citycrc.h; the rest are declared in city.h. |
|||
|
|||
|
|||
Limitations |
|||
=========== |
|||
|
|||
1) CityHash32 is intended for little-endian 32-bit code, and everything else in |
|||
the current version of CityHash is intended for little-endian 64-bit CPUs. |
|||
|
|||
All functions that don't use the CRC32 instruction should work in |
|||
little-endian 32-bit or 64-bit code. CityHash should work on big-endian CPUs |
|||
as well, but we haven't tested that very thoroughly yet. |
|||
|
|||
2) CityHash is fairly complex. As a result of its complexity, it may not |
|||
perform as expected on some compilers. For example, preliminary reports |
|||
suggest that some Microsoft compilers compile CityHash to assembly that's |
|||
10-20% slower than it could be. |
|||
|
|||
|
|||
Hash Quality |
|||
============ |
|||
|
|||
We like to test hash functions with SMHasher, among other things. |
|||
SMHasher isn't perfect, but it seems to find almost any significant flaw. |
|||
SMHasher is available at http://code.google.com/p/smhasher/ |
|||
|
|||
SMHasher is designed to pass a 32-bit seed to the hash functions it tests. |
|||
No CityHash function is designed to work that way, so we adapt as follows: |
|||
For our functions that accept a seed, we use the given seed directly (padded |
|||
with zeroes); for our functions that don't accept a seed, we hash the |
|||
concatenation of the given seed and the input string. |
|||
|
|||
The CityHash functions have the following flaws according to SMHasher: |
|||
|
|||
(1) CityHash64: none |
|||
|
|||
(2) CityHash64WithSeed: none |
|||
|
|||
(3) CityHash64WithSeeds: did not test |
|||
|
|||
(4) CityHash128: none |
|||
|
|||
(5) CityHash128WithSeed: none |
|||
|
|||
(6) CityHashCrc128: none |
|||
|
|||
(7) CityHashCrc128WithSeed: none |
|||
|
|||
(8) CityHashCrc256: none |
|||
|
|||
(9) CityHash32: none |
|||
|
|||
Some minor flaws in 32-bit and 64-bit functions are harmless, as we |
|||
expect the primary use of these functions will be in hash tables. We |
|||
may have gone slightly overboard in trying to please SMHasher and other |
|||
similar tests, but we don't want anyone to choose a different hash function |
|||
because of some minor issue reported by a quality test. |
|||
|
|||
|
|||
For more information |
|||
==================== |
|||
|
|||
http://code.google.com/p/cityhash/ |
|||
|
|||
cityhash-discuss@googlegroups.com |
|||
|
|||
Please feel free to send us comments, questions, bug reports, or patches. |
@ -0,0 +1,976 @@ |
|||
# generated automatically by aclocal 1.11.3 -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
|||
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, |
|||
# Inc. |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# This program is distributed in the hope that it will be useful, |
|||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
|||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
|||
# PARTICULAR PURPOSE. |
|||
|
|||
m4_ifndef([AC_AUTOCONF_VERSION], |
|||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl |
|||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, |
|||
[m4_warning([this file was generated for autoconf 2.69. |
|||
You have another version of autoconf. It may work, but is not guaranteed to. |
|||
If you have problems, you may need to regenerate the build system entirely. |
|||
To do so, use the procedure documented by the package, typically `autoreconf'.])]) |
|||
|
|||
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software |
|||
# Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 1 |
|||
|
|||
# AM_AUTOMAKE_VERSION(VERSION) |
|||
# ---------------------------- |
|||
# Automake X.Y traces this macro to ensure aclocal.m4 has been |
|||
# generated from the m4 files accompanying Automake X.Y. |
|||
# (This private macro should not be called outside this file.) |
|||
AC_DEFUN([AM_AUTOMAKE_VERSION], |
|||
[am__api_version='1.11' |
|||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to |
|||
dnl require some minimum version. Point them to the right macro. |
|||
m4_if([$1], [1.11.3], [], |
|||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl |
|||
]) |
|||
|
|||
# _AM_AUTOCONF_VERSION(VERSION) |
|||
# ----------------------------- |
|||
# aclocal traces this macro to find the Autoconf version. |
|||
# This is a private macro too. Using m4_define simplifies |
|||
# the logic in aclocal, which can simply ignore this definition. |
|||
m4_define([_AM_AUTOCONF_VERSION], []) |
|||
|
|||
# AM_SET_CURRENT_AUTOMAKE_VERSION |
|||
# ------------------------------- |
|||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. |
|||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. |
|||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], |
|||
[AM_AUTOMAKE_VERSION([1.11.3])dnl |
|||
m4_ifndef([AC_AUTOCONF_VERSION], |
|||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl |
|||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) |
|||
|
|||
# AM_AUX_DIR_EXPAND -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 1 |
|||
|
|||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets |
|||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to |
|||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'. |
|||
# |
|||
# Of course, Automake must honor this variable whenever it calls a |
|||
# tool from the auxiliary directory. The problem is that $srcdir (and |
|||
# therefore $ac_aux_dir as well) can be either absolute or relative, |
|||
# depending on how configure is run. This is pretty annoying, since |
|||
# it makes $ac_aux_dir quite unusable in subdirectories: in the top |
|||
# source directory, any form will work fine, but in subdirectories a |
|||
# relative path needs to be adjusted first. |
|||
# |
|||
# $ac_aux_dir/missing |
|||
# fails when called from a subdirectory if $ac_aux_dir is relative |
|||
# $top_srcdir/$ac_aux_dir/missing |
|||
# fails if $ac_aux_dir is absolute, |
|||
# fails when called from a subdirectory in a VPATH build with |
|||
# a relative $ac_aux_dir |
|||
# |
|||
# The reason of the latter failure is that $top_srcdir and $ac_aux_dir |
|||
# are both prefixed by $srcdir. In an in-source build this is usually |
|||
# harmless because $srcdir is `.', but things will broke when you |
|||
# start a VPATH build or use an absolute $srcdir. |
|||
# |
|||
# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, |
|||
# iff we strip the leading $srcdir from $ac_aux_dir. That would be: |
|||
# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` |
|||
# and then we would define $MISSING as |
|||
# MISSING="\${SHELL} $am_aux_dir/missing" |
|||
# This will work as long as MISSING is not called from configure, because |
|||
# unfortunately $(top_srcdir) has no meaning in configure. |
|||
# However there are other variables, like CC, which are often used in |
|||
# configure, and could therefore not use this "fixed" $ac_aux_dir. |
|||
# |
|||
# Another solution, used here, is to always expand $ac_aux_dir to an |
|||
# absolute PATH. The drawback is that using absolute paths prevent a |
|||
# configured tree to be moved without reconfiguration. |
|||
|
|||
AC_DEFUN([AM_AUX_DIR_EXPAND], |
|||
[dnl Rely on autoconf to set up CDPATH properly. |
|||
AC_PREREQ([2.50])dnl |
|||
# expand $ac_aux_dir to an absolute path |
|||
am_aux_dir=`cd $ac_aux_dir && pwd` |
|||
]) |
|||
|
|||
# AM_CONDITIONAL -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 |
|||
# Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 9 |
|||
|
|||
# AM_CONDITIONAL(NAME, SHELL-CONDITION) |
|||
# ------------------------------------- |
|||
# Define a conditional. |
|||
AC_DEFUN([AM_CONDITIONAL], |
|||
[AC_PREREQ(2.52)dnl |
|||
ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], |
|||
[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl |
|||
AC_SUBST([$1_TRUE])dnl |
|||
AC_SUBST([$1_FALSE])dnl |
|||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl |
|||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl |
|||
m4_define([_AM_COND_VALUE_$1], [$2])dnl |
|||
if $2; then |
|||
$1_TRUE= |
|||
$1_FALSE='#' |
|||
else |
|||
$1_TRUE='#' |
|||
$1_FALSE= |
|||
fi |
|||
AC_CONFIG_COMMANDS_PRE( |
|||
[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then |
|||
AC_MSG_ERROR([[conditional "$1" was never defined. |
|||
Usually this means the macro was only invoked conditionally.]]) |
|||
fi])]) |
|||
|
|||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, |
|||
# 2010, 2011 Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 12 |
|||
|
|||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be |
|||
# written in clear, in which case automake, when reading aclocal.m4, |
|||
# will think it sees a *use*, and therefore will trigger all it's |
|||
# C support machinery. Also note that it means that autoscan, seeing |
|||
# CC etc. in the Makefile, will ask for an AC_PROG_CC use... |
|||
|
|||
|
|||
# _AM_DEPENDENCIES(NAME) |
|||
# ---------------------- |
|||
# See how the compiler implements dependency checking. |
|||
# NAME is "CC", "CXX", "GCJ", or "OBJC". |
|||
# We try a few techniques and use that to set a single cache variable. |
|||
# |
|||
# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was |
|||
# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular |
|||
# dependency, and given that the user is not expected to run this macro, |
|||
# just rely on AC_PROG_CC. |
|||
AC_DEFUN([_AM_DEPENDENCIES], |
|||
[AC_REQUIRE([AM_SET_DEPDIR])dnl |
|||
AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl |
|||
AC_REQUIRE([AM_MAKE_INCLUDE])dnl |
|||
AC_REQUIRE([AM_DEP_TRACK])dnl |
|||
|
|||
ifelse([$1], CC, [depcc="$CC" am_compiler_list=], |
|||
[$1], CXX, [depcc="$CXX" am_compiler_list=], |
|||
[$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], |
|||
[$1], UPC, [depcc="$UPC" am_compiler_list=], |
|||
[$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], |
|||
[depcc="$$1" am_compiler_list=]) |
|||
|
|||
AC_CACHE_CHECK([dependency style of $depcc], |
|||
[am_cv_$1_dependencies_compiler_type], |
|||
[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then |
|||
# We make a subdir and do the tests there. Otherwise we can end up |
|||
# making bogus files that we don't know about and never remove. For |
|||
# instance it was reported that on HP-UX the gcc test will end up |
|||
# making a dummy file named `D' -- because `-MD' means `put the output |
|||
# in D'. |
|||
rm -rf conftest.dir |
|||
mkdir conftest.dir |
|||
# Copy depcomp to subdir because otherwise we won't find it if we're |
|||
# using a relative directory. |
|||
cp "$am_depcomp" conftest.dir |
|||
cd conftest.dir |
|||
# We will build objects and dependencies in a subdirectory because |
|||
# it helps to detect inapplicable dependency modes. For instance |
|||
# both Tru64's cc and ICC support -MD to output dependencies as a |
|||
# side effect of compilation, but ICC will put the dependencies in |
|||
# the current directory while Tru64 will put them in the object |
|||
# directory. |
|||
mkdir sub |
|||
|
|||
am_cv_$1_dependencies_compiler_type=none |
|||
if test "$am_compiler_list" = ""; then |
|||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` |
|||
fi |
|||
am__universal=false |
|||
m4_case([$1], [CC], |
|||
[case " $depcc " in #( |
|||
*\ -arch\ *\ -arch\ *) am__universal=true ;; |
|||
esac], |
|||
[CXX], |
|||
[case " $depcc " in #( |
|||
*\ -arch\ *\ -arch\ *) am__universal=true ;; |
|||
esac]) |
|||
|
|||
for depmode in $am_compiler_list; do |
|||
# Setup a source with many dependencies, because some compilers |
|||
# like to wrap large dependency lists on column 80 (with \), and |
|||
# we should not choose a depcomp mode which is confused by this. |
|||
# |
|||
# We need to recreate these files for each test, as the compiler may |
|||
# overwrite some of them when testing with obscure command lines. |
|||
# This happens at least with the AIX C compiler. |
|||
: > sub/conftest.c |
|||
for i in 1 2 3 4 5 6; do |
|||
echo '#include "conftst'$i'.h"' >> sub/conftest.c |
|||
# Using `: > sub/conftst$i.h' creates only sub/conftst1.h with |
|||
# Solaris 8's {/usr,}/bin/sh. |
|||
touch sub/conftst$i.h |
|||
done |
|||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf |
|||
|
|||
# We check with `-c' and `-o' for the sake of the "dashmstdout" |
|||
# mode. It turns out that the SunPro C++ compiler does not properly |
|||
# handle `-M -o', and we need to detect this. Also, some Intel |
|||
# versions had trouble with output in subdirs |
|||
am__obj=sub/conftest.${OBJEXT-o} |
|||
am__minus_obj="-o $am__obj" |
|||
case $depmode in |
|||
gcc) |
|||
# This depmode causes a compiler race in universal mode. |
|||
test "$am__universal" = false || continue |
|||
;; |
|||
nosideeffect) |
|||
# after this tag, mechanisms are not by side-effect, so they'll |
|||
# only be used when explicitly requested |
|||
if test "x$enable_dependency_tracking" = xyes; then |
|||
continue |
|||
else |
|||
break |
|||
fi |
|||
;; |
|||
msvc7 | msvc7msys | msvisualcpp | msvcmsys) |
|||
# This compiler won't grok `-c -o', but also, the minuso test has |
|||
# not run yet. These depmodes are late enough in the game, and |
|||
# so weak that their functioning should not be impacted. |
|||
am__obj=conftest.${OBJEXT-o} |
|||
am__minus_obj= |
|||
;; |
|||
none) break ;; |
|||
esac |
|||
if depmode=$depmode \ |
|||
source=sub/conftest.c object=$am__obj \ |
|||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ |
|||
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ |
|||
>/dev/null 2>conftest.err && |
|||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && |
|||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && |
|||
grep $am__obj sub/conftest.Po > /dev/null 2>&1 && |
|||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then |
|||
# icc doesn't choke on unknown options, it will just issue warnings |
|||
# or remarks (even with -Werror). So we grep stderr for any message |
|||
# that says an option was ignored or not supported. |
|||
# When given -MP, icc 7.0 and 7.1 complain thusly: |
|||
# icc: Command line warning: ignoring option '-M'; no argument required |
|||
# The diagnosis changed in icc 8.0: |
|||
# icc: Command line remark: option '-MP' not supported |
|||
if (grep 'ignoring option' conftest.err || |
|||
grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else |
|||
am_cv_$1_dependencies_compiler_type=$depmode |
|||
break |
|||
fi |
|||
fi |
|||
done |
|||
|
|||
cd .. |
|||
rm -rf conftest.dir |
|||
else |
|||
am_cv_$1_dependencies_compiler_type=none |
|||
fi |
|||
]) |
|||
AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) |
|||
AM_CONDITIONAL([am__fastdep$1], [ |
|||
test "x$enable_dependency_tracking" != xno \ |
|||
&& test "$am_cv_$1_dependencies_compiler_type" = gcc3]) |
|||
]) |
|||
|
|||
|
|||
# AM_SET_DEPDIR |
|||
# ------------- |
|||
# Choose a directory name for dependency files. |
|||
# This macro is AC_REQUIREd in _AM_DEPENDENCIES |
|||
AC_DEFUN([AM_SET_DEPDIR], |
|||
[AC_REQUIRE([AM_SET_LEADING_DOT])dnl |
|||
AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl |
|||
]) |
|||
|
|||
|
|||
# AM_DEP_TRACK |
|||
# ------------ |
|||
AC_DEFUN([AM_DEP_TRACK], |
|||
[AC_ARG_ENABLE(dependency-tracking, |
|||
[ --disable-dependency-tracking speeds up one-time build |
|||
--enable-dependency-tracking do not reject slow dependency extractors]) |
|||
if test "x$enable_dependency_tracking" != xno; then |
|||
am_depcomp="$ac_aux_dir/depcomp" |
|||
AMDEPBACKSLASH='\' |
|||
am__nodep='_no' |
|||
fi |
|||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) |
|||
AC_SUBST([AMDEPBACKSLASH])dnl |
|||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl |
|||
AC_SUBST([am__nodep])dnl |
|||
_AM_SUBST_NOTMAKE([am__nodep])dnl |
|||
]) |
|||
|
|||
# Generate code to set up dependency tracking. -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 |
|||
# Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
#serial 5 |
|||
|
|||
# _AM_OUTPUT_DEPENDENCY_COMMANDS |
|||
# ------------------------------ |
|||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], |
|||
[{ |
|||
# Autoconf 2.62 quotes --file arguments for eval, but not when files |
|||
# are listed without --file. Let's play safe and only enable the eval |
|||
# if we detect the quoting. |
|||
case $CONFIG_FILES in |
|||
*\'*) eval set x "$CONFIG_FILES" ;; |
|||
*) set x $CONFIG_FILES ;; |
|||
esac |
|||
shift |
|||
for mf |
|||
do |
|||
# Strip MF so we end up with the name of the file. |
|||
mf=`echo "$mf" | sed -e 's/:.*$//'` |
|||
# Check whether this is an Automake generated Makefile or not. |
|||
# We used to match only the files named `Makefile.in', but |
|||
# some people rename them; so instead we look at the file content. |
|||
# Grep'ing the first line is not enough: some people post-process |
|||
# each Makefile.in and add a new line on top of each file to say so. |
|||
# Grep'ing the whole file is not good either: AIX grep has a line |
|||
# limit of 2048, but all sed's we know have understand at least 4000. |
|||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then |
|||
dirpart=`AS_DIRNAME("$mf")` |
|||
else |
|||
continue |
|||
fi |
|||
# Extract the definition of DEPDIR, am__include, and am__quote |
|||
# from the Makefile without running `make'. |
|||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` |
|||
test -z "$DEPDIR" && continue |
|||
am__include=`sed -n 's/^am__include = //p' < "$mf"` |
|||
test -z "am__include" && continue |
|||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"` |
|||
# When using ansi2knr, U may be empty or an underscore; expand it |
|||
U=`sed -n 's/^U = //p' < "$mf"` |
|||
# Find all dependency output files, they are included files with |
|||
# $(DEPDIR) in their names. We invoke sed twice because it is the |
|||
# simplest approach to changing $(DEPDIR) to its actual value in the |
|||
# expansion. |
|||
for file in `sed -n " |
|||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ |
|||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do |
|||
# Make sure the directory exists. |
|||
test -f "$dirpart/$file" && continue |
|||
fdir=`AS_DIRNAME(["$file"])` |
|||
AS_MKDIR_P([$dirpart/$fdir]) |
|||
# echo "creating $dirpart/$file" |
|||
echo '# dummy' > "$dirpart/$file" |
|||
done |
|||
done |
|||
} |
|||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS |
|||
|
|||
|
|||
# AM_OUTPUT_DEPENDENCY_COMMANDS |
|||
# ----------------------------- |
|||
# This macro should only be invoked once -- use via AC_REQUIRE. |
|||
# |
|||
# This code is only required when automatic dependency tracking |
|||
# is enabled. FIXME. This creates each `.P' file that we will |
|||
# need in order to bootstrap the dependency handling code. |
|||
AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], |
|||
[AC_CONFIG_COMMANDS([depfiles], |
|||
[test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], |
|||
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) |
|||
]) |
|||
|
|||
# Do all the work for Automake. -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, |
|||
# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 16 |
|||
|
|||
# This macro actually does too much. Some checks are only needed if |
|||
# your package does certain things. But this isn't really a big deal. |
|||
|
|||
# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) |
|||
# AM_INIT_AUTOMAKE([OPTIONS]) |
|||
# ----------------------------------------------- |
|||
# The call with PACKAGE and VERSION arguments is the old style |
|||
# call (pre autoconf-2.50), which is being phased out. PACKAGE |
|||
# and VERSION should now be passed to AC_INIT and removed from |
|||
# the call to AM_INIT_AUTOMAKE. |
|||
# We support both call styles for the transition. After |
|||
# the next Automake release, Autoconf can make the AC_INIT |
|||
# arguments mandatory, and then we can depend on a new Autoconf |
|||
# release and drop the old call support. |
|||
AC_DEFUN([AM_INIT_AUTOMAKE], |
|||
[AC_PREREQ([2.62])dnl |
|||
dnl Autoconf wants to disallow AM_ names. We explicitly allow |
|||
dnl the ones we care about. |
|||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl |
|||
AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl |
|||
AC_REQUIRE([AC_PROG_INSTALL])dnl |
|||
if test "`cd $srcdir && pwd`" != "`pwd`"; then |
|||
# Use -I$(srcdir) only when $(srcdir) != ., so that make's output |
|||
# is not polluted with repeated "-I." |
|||
AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl |
|||
# test to see if srcdir already configured |
|||
if test -f $srcdir/config.status; then |
|||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) |
|||
fi |
|||
fi |
|||
|
|||
# test whether we have cygpath |
|||
if test -z "$CYGPATH_W"; then |
|||
if (cygpath --version) >/dev/null 2>/dev/null; then |
|||
CYGPATH_W='cygpath -w' |
|||
else |
|||
CYGPATH_W=echo |
|||
fi |
|||
fi |
|||
AC_SUBST([CYGPATH_W]) |
|||
|
|||
# Define the identity of the package. |
|||
dnl Distinguish between old-style and new-style calls. |
|||
m4_ifval([$2], |
|||
[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl |
|||
AC_SUBST([PACKAGE], [$1])dnl |
|||
AC_SUBST([VERSION], [$2])], |
|||
[_AM_SET_OPTIONS([$1])dnl |
|||
dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. |
|||
m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, |
|||
[m4_fatal([AC_INIT should be called with package and version arguments])])dnl |
|||
AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl |
|||
AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl |
|||
|
|||
_AM_IF_OPTION([no-define],, |
|||
[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) |
|||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl |
|||
|
|||
# Some tools Automake needs. |
|||
AC_REQUIRE([AM_SANITY_CHECK])dnl |
|||
AC_REQUIRE([AC_ARG_PROGRAM])dnl |
|||
AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) |
|||
AM_MISSING_PROG(AUTOCONF, autoconf) |
|||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) |
|||
AM_MISSING_PROG(AUTOHEADER, autoheader) |
|||
AM_MISSING_PROG(MAKEINFO, makeinfo) |
|||
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl |
|||
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl |
|||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl |
|||
# We need awk for the "check" target. The system "awk" is bad on |
|||
# some platforms. |
|||
AC_REQUIRE([AC_PROG_AWK])dnl |
|||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl |
|||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl |
|||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], |
|||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], |
|||
[_AM_PROG_TAR([v7])])]) |
|||
_AM_IF_OPTION([no-dependencies],, |
|||
[AC_PROVIDE_IFELSE([AC_PROG_CC], |
|||
[_AM_DEPENDENCIES(CC)], |
|||
[define([AC_PROG_CC], |
|||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl |
|||
AC_PROVIDE_IFELSE([AC_PROG_CXX], |
|||
[_AM_DEPENDENCIES(CXX)], |
|||
[define([AC_PROG_CXX], |
|||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl |
|||
AC_PROVIDE_IFELSE([AC_PROG_OBJC], |
|||
[_AM_DEPENDENCIES(OBJC)], |
|||
[define([AC_PROG_OBJC], |
|||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl |
|||
]) |
|||
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl |
|||
dnl The `parallel-tests' driver may need to know about EXEEXT, so add the |
|||
dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro |
|||
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. |
|||
AC_CONFIG_COMMANDS_PRE(dnl |
|||
[m4_provide_if([_AM_COMPILER_EXEEXT], |
|||
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl |
|||
]) |
|||
|
|||
dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not |
|||
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further |
|||
dnl mangled by Autoconf and run in a shell conditional statement. |
|||
m4_define([_AC_COMPILER_EXEEXT], |
|||
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) |
|||
|
|||
|
|||
# When config.status generates a header, we must update the stamp-h file. |
|||
# This file resides in the same directory as the config header |
|||
# that is generated. The stamp files are numbered to have different names. |
|||
|
|||
# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the |
|||
# loop where config.status creates the headers, so we can generate |
|||
# our stamp files there. |
|||
AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], |
|||
[# Compute $1's index in $config_headers. |
|||
_am_arg=$1 |
|||
_am_stamp_count=1 |
|||
for _am_header in $config_headers :; do |
|||
case $_am_header in |
|||
$_am_arg | $_am_arg:* ) |
|||
break ;; |
|||
* ) |
|||
_am_stamp_count=`expr $_am_stamp_count + 1` ;; |
|||
esac |
|||
done |
|||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) |
|||
|
|||
# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, |
|||
# Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 1 |
|||
|
|||
# AM_PROG_INSTALL_SH |
|||
# ------------------ |
|||
# Define $install_sh. |
|||
AC_DEFUN([AM_PROG_INSTALL_SH], |
|||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl |
|||
if test x"${install_sh}" != xset; then |
|||
case $am_aux_dir in |
|||
*\ * | *\ *) |
|||
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; |
|||
*) |
|||
install_sh="\${SHELL} $am_aux_dir/install-sh" |
|||
esac |
|||
fi |
|||
AC_SUBST(install_sh)]) |
|||
|
|||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 2 |
|||
|
|||
# Check whether the underlying file-system supports filenames |
|||
# with a leading dot. For instance MS-DOS doesn't. |
|||
AC_DEFUN([AM_SET_LEADING_DOT], |
|||
[rm -rf .tst 2>/dev/null |
|||
mkdir .tst 2>/dev/null |
|||
if test -d .tst; then |
|||
am__leading_dot=. |
|||
else |
|||
am__leading_dot=_ |
|||
fi |
|||
rmdir .tst 2>/dev/null |
|||
AC_SUBST([am__leading_dot])]) |
|||
|
|||
# Check to see how 'make' treats includes. -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 4 |
|||
|
|||
# AM_MAKE_INCLUDE() |
|||
# ----------------- |
|||
# Check to see how make treats includes. |
|||
AC_DEFUN([AM_MAKE_INCLUDE], |
|||
[am_make=${MAKE-make} |
|||
cat > confinc << 'END' |
|||
am__doit: |
|||
@echo this is the am__doit target |
|||
.PHONY: am__doit |
|||
END |
|||
# If we don't find an include directive, just comment out the code. |
|||
AC_MSG_CHECKING([for style of include used by $am_make]) |
|||
am__include="#" |
|||
am__quote= |
|||
_am_result=none |
|||
# First try GNU make style include. |
|||
echo "include confinc" > confmf |
|||
# Ignore all kinds of additional output from `make'. |
|||
case `$am_make -s -f confmf 2> /dev/null` in #( |
|||
*the\ am__doit\ target*) |
|||
am__include=include |
|||
am__quote= |
|||
_am_result=GNU |
|||
;; |
|||
esac |
|||
# Now try BSD make style include. |
|||
if test "$am__include" = "#"; then |
|||
echo '.include "confinc"' > confmf |
|||
case `$am_make -s -f confmf 2> /dev/null` in #( |
|||
*the\ am__doit\ target*) |
|||
am__include=.include |
|||
am__quote="\"" |
|||
_am_result=BSD |
|||
;; |
|||
esac |
|||
fi |
|||
AC_SUBST([am__include]) |
|||
AC_SUBST([am__quote]) |
|||
AC_MSG_RESULT([$_am_result]) |
|||
rm -f confinc confmf |
|||
]) |
|||
|
|||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- |
|||
|
|||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 |
|||
# Free Software Foundation, Inc. |
|||
# |
|||
# This file is free software; the Free Software Foundation |
|||
# gives unlimited permission to copy and/or distribute it, |
|||
# with or without modifications, as long as this notice is preserved. |
|||
|
|||
# serial 6 |
|||
|
|||
# AM_MISSING_PROG(NAME, PROGRAM) |
|||
# ------------------------------ |
|||
AC_DEFUN([AM_MISSING_PROG], |
|||
[AC_REQUIRE([AM_MISSING_HAS_RUN]) |
|||
$1=${$1-"${am_missing_run}$2"} |
|||
AC_SUBST($1)]) |
|||
|
|||
|
|||
# AM_MISSING_HAS_RUN |
|||
# ------------------ |
|||
# Define MISSING if not defined so far and test if it supports --run. |
|||
# If it does, set am_missing_run to use it, otherwise, to nothing. |