Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
230 lines (197 sloc) 9.24 KB
## Process this file with automake to produce Makefile.in
# Make sure that when we re-make ./configure, we get the macros we need
ACLOCAL_AMFLAGS = -I m4
# This is so we can #include <sparsehash/foo>
AM_CPPFLAGS = -I$(top_srcdir)/src
# These are good warnings to turn on by default
if GCC
AM_CXXFLAGS = -Wall -W -Wwrite-strings -Woverloaded-virtual -Wshadow
endif
docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION)
## This is for HTML and other documentation you want to install.
## Add your documentation files (in doc/) in addition to these boilerplate
## Also add a TODO file if you have one
dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL NEWS README README_windows.txt \
TODO \
doc/dense_hash_map.html \
doc/dense_hash_set.html \
doc/sparse_hash_map.html \
doc/sparse_hash_set.html \
doc/sparsetable.html \
doc/implementation.html \
doc/performance.html \
doc/index.html \
doc/designstyle.css
## The libraries (.so's) you want to install
lib_LTLIBRARIES =
## The location of the windows project file for each binary we make
WINDOWS_PROJECTS = sparsehash.sln
## unittests you want to run when people type 'make check'.
## TESTS is for binary unittests, check_SCRIPTS for script-based unittests.
## TESTS_ENVIRONMENT sets environment variables for when you run unittest,
## but it only seems to take effect for *binary* unittests (argh!)
TESTS =
check_SCRIPTS =
TESTS_ENVIRONMENT =
## This should always include $(TESTS), but may also include other
## binaries that you compile but don't want automatically installed.
noinst_PROGRAMS = $(TESTS) time_hash_map
WINDOWS_PROJECTS += vsprojects/time_hash_map/time_hash_map.vcproj
## vvvv RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS
# All our .h files need to read the config information in config.h. The
# autoheader config.h has too much info, including PACKAGENAME, that
# might conflict with other config.h's an application might #include.
# Thus, we create a "minimal" config.h, called sparseconfig.h, that
# includes only the #defines we really need, and that are unlikely to
# change from system to system. NOTE: The awk command is equivalent to
# fgrep -B2 -f$(top_builddir)/src/config.h.include $(top_builddir)/src/config.h
# | fgrep -vx -e -- > _sparsehash_config
# For correctness, it depends on the fact config.h.include does not have
# any lines starting with #.
src/sparsehash/internal/sparseconfig.h: $(top_builddir)/src/config.h \
$(top_srcdir)/src/config.h.include
[ -d $(@D) ] || mkdir -p $(@D)
echo "/*" > $(@D)/_sparsehash_config
echo " * NOTE: This file is for internal use only." >> $(@D)/_sparsehash_config
echo " * Do not use these #defines in your own program!" >> $(@D)/_sparsehash_config
echo " */" >> $(@D)/_sparsehash_config
$(AWK) '{prevline=currline; currline=$$0;} \
/^#/ {in_second_file = 1;} \
!in_second_file {if (currline !~ /^ *$$/) {inc[currline]=0}}; \
in_second_file { for (i in inc) { \
if (index(currline, i) != 0) { \
print "\n"prevline"\n"currline; \
delete inc[i]; \
} \
} }' \
$(top_srcdir)/src/config.h.include $(top_builddir)/src/config.h \
>> $(@D)/_sparsehash_config
mv -f $(@D)/_sparsehash_config $@
# This is how we tell automake about auto-generated .h files
BUILT_SOURCES = src/sparsehash/internal/sparseconfig.h
CLEANFILES = src/sparsehash/internal/sparseconfig.h
sparsehashincludedir = $(includedir)/sparsehash
## The .h files you want to install (that is, .h files that people
## who install this package can include in their own applications.)
sparsehashinclude_HEADERS = \
src/sparsehash/dense_hash_map \
src/sparsehash/dense_hash_set \
src/sparsehash/sparse_hash_map \
src/sparsehash/sparse_hash_set \
src/sparsehash/sparsetable \
src/sparsehash/template_util.h \
src/sparsehash/type_traits.h
internalincludedir = $(sparsehashincludedir)/internal
internalinclude_HEADERS = \
src/sparsehash/internal/densehashtable.h \
src/sparsehash/internal/sparsehashtable.h \
src/sparsehash/internal/hashtable-common.h \
src/sparsehash/internal/libc_allocator_with_realloc.h
nodist_internalinclude_HEADERS = src/sparsehash/internal/sparseconfig.h
# This is for backwards compatibility only.
googleincludedir = $(includedir)/google
googleinclude_HEADERS = \
src/google/dense_hash_map \
src/google/dense_hash_set \
src/google/sparse_hash_map \
src/google/sparse_hash_set \
src/google/sparsetable \
src/google/template_util.h \
src/google/type_traits.h
googleinternalincludedir = $(includedir)/google/sparsehash
googleinternalinclude_HEADERS= \
src/google/sparsehash/densehashtable.h \
src/google/sparsehash/sparsehashtable.h \
src/google/sparsehash/hashtable-common.h \
src/google/sparsehash/libc_allocator_with_realloc.h
TESTS += template_util_unittest
# TODO(csilvers): Update windows projects for template_util_unittest.
# WINDOWS_PROJECTS += vsprojects/template_util_unittest/template_util_unittest.vcproj
template_util_unittest_SOURCES = \
src/template_util_unittest.cc \
src/sparsehash/template_util.h
nodist_template_util_unittest_SOURCES = $(nodist_internalinclude_HEADERS)
TESTS += type_traits_unittest
WINDOWS_PROJECTS += vsprojects/type_traits_unittest/type_traits_unittest.vcproj
type_traits_unittest_SOURCES = \
src/type_traits_unittest.cc \
$(internalinclude_HEADERS) \
src/sparsehash/type_traits.h
nodist_type_traits_unittest_SOURCES = $(nodist_internalinclude_HEADERS)
TESTS += libc_allocator_with_realloc_test
WINDOWS_PROJECTS += vsprojects/libc_allocator_with_realloc_test/libc_allocator_with_realloc_test.vcproj
libc_allocator_with_realloc_test_SOURCES = \
src/libc_allocator_with_realloc_test.cc \
$(internalinclude_HEADERS) \
src/sparsehash/internal/libc_allocator_with_realloc.h
TESTS += sparsetable_unittest
WINDOWS_PROJECTS += vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj
sparsetable_unittest_SOURCES = \
src/sparsetable_unittest.cc \
$(internalinclude_HEADERS) \
src/sparsehash/sparsetable
nodist_sparsetable_unittest_SOURCES = $(nodist_internalinclude_HEADERS)
TESTS += hashtable_test
WINDOWS_PROJECTS += vsprojects/hashtable_test/hashtable_test.vcproj
hashtable_test_SOURCES = \
src/hashtable_test.cc \
src/hash_test_interface.h \
src/testutil.h \
$(sparsehashinclude_HEADERS) \
$(internalinclude_HEADERS)
nodist_hashtable_test_SOURCES = $(nodist_internalinclude_HEADERS)
TESTS += simple_test
WINDOWS_PROJECTS += vsprojects/simple_test/simple_test.vcproj
simple_test_SOURCES = \
src/simple_test.cc \
$(internalinclude_HEADERS)
nodist_simple_test_SOURCES = $(nodist_internalinclude_HEADERS)
TESTS += simple_compat_test
simple_compat_test_SOURCES = \
src/simple_compat_test.cc \
$(internalinclude_HEADERS) \
$(googleinclude_HEADERS) \
$(googleinternalinclude_HEADERS)
nodist_simple_compat_test_SOURCES = $(nodist_internalinclude_HEADERS)
time_hash_map_SOURCES = \
src/time_hash_map.cc \
$(internalinclude_HEADERS) \
$(sparsehashinclude_HEADERS)
nodist_time_hash_map_SOURCES = $(nodist_internalinclude_HEADERS)
# If tcmalloc is installed, use it with time_hash_map; it gives us
# heap-usage statistics for the hash_map routines, which is very nice
time_hash_map_CXXFLAGS = @tcmalloc_flags@ $(AM_CXXFLAGS)
time_hash_map_LDFLAGS = @tcmalloc_flags@
time_hash_map_LDADD = @tcmalloc_libs@
## ^^^^ END OF RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS
rpm: dist-gzip packages/rpm.sh packages/rpm/rpm.spec
@cd packages && ./rpm.sh ${PACKAGE} ${VERSION}
deb: dist-gzip packages/deb.sh packages/deb/*
@cd packages && ./deb.sh ${PACKAGE} ${VERSION}
# http://linux.die.net/man/1/pkg-config, http://pkg-config.freedesktop.org/wiki
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = lib${PACKAGE}.pc
CLEANFILES += $(pkgconfig_DATA)
# I get the description and URL lines from the rpm spec. I use sed to
# try to rewrite exec_prefix, libdir, and includedir in terms of
# prefix, if possible.
lib${PACKAGE}.pc: Makefile packages/rpm/rpm.spec
echo 'prefix=$(prefix)' > "$@".tmp
echo 'exec_prefix='`echo '$(exec_prefix)' | sed 's@^$(prefix)@$${prefix}@'` >> "$@".tmp
echo 'libdir='`echo '$(libdir)' | sed 's@^$(exec_prefix)@$${exec_prefix}@'` >> "$@".tmp
echo 'includedir='`echo '$(includedir)' | sed 's@^$(prefix)@$${prefix}@'` >> "$@".tmp
echo '' >> "$@".tmp
echo 'Name: $(PACKAGE)' >> "$@".tmp
echo 'Version: $(VERSION)' >> "$@".tmp
-grep '^Summary:' $(top_srcdir)/packages/rpm/rpm.spec | sed s/^Summary:/Description:/ | head -n1 >> "$@".tmp
-grep '^URL: ' $(top_srcdir)/packages/rpm/rpm.spec >> "$@".tmp
echo 'Requires:' >> "$@".tmp
echo 'Libs:' >> "$@".tmp
echo 'Cflags: -I$${includedir}' >> "$@".tmp
mv -f "$@".tmp "$@"
# Windows wants write permission to .vcproj files and maybe even sln files.
dist-hook:
test -e "$(distdir)/vsprojects" \
&& chmod -R u+w $(distdir)/*.sln $(distdir)/vsprojects/
EXTRA_DIST = packages/rpm.sh packages/rpm/rpm.spec packages/deb.sh packages/deb \
src/config.h.include src/windows $(WINDOWS_PROJECTS) experimental
You can’t perform that action at this time.