diff options
Diffstat (limited to 'Makefile.am')
-rw-r--r-- | Makefile.am | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 000000000000..e792332a02ca --- /dev/null +++ b/Makefile.am @@ -0,0 +1,259 @@ +## Process this file with automake to produce Makefile.in + +AUTOMAKE_OPTIONS = subdir-objects foreign + +# Make sure that when we re-make ./configure, we get the macros we need +ACLOCAL_AMFLAGS = -I m4 + +# This is so we can #include <glog/foo> +AM_CPPFLAGS = -I$(top_srcdir)/src + +# This is mostly based on configure options +AM_CXXFLAGS = + +# These are good warnings to turn on by default +if GCC + AM_CXXFLAGS += -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare +endif + +# These are x86-specific, having to do with frame-pointers +if X86_64 +if ENABLE_FRAME_POINTERS + AM_CXXFLAGS += -fno-omit-frame-pointer +else + # TODO(csilvers): check if -fomit-frame-pointer might be in $(CXXFLAGS), + # before setting this. + AM_CXXFLAGS += -DNO_FRAME_POINTER +endif +endif + +if DISABLE_RTTI + AM_CXXFLAGS += -fno-rtti +endif + +glogincludedir = $(includedir)/glog +## The .h files you want to install (that is, .h files that people +## who install this package can include in their own applications.) +## We have to include both the .h and .h.in forms. The latter we +## put in noinst_HEADERS. +gloginclude_HEADERS = src/glog/log_severity.h +nodist_gloginclude_HEADERS = src/glog/logging.h src/glog/raw_logging.h src/glog/vlog_is_on.h src/glog/stl_logging.h +noinst_HEADERS = src/glog/logging.h.in src/glog/raw_logging.h.in src/glog/vlog_is_on.h.in src/glog/stl_logging.h.in + +## This is for HTML and other documentation you want to install. +## Add your documentation files (in doc/) in addition to these +## top-level boilerplate files. Also add a TODO file if you have one. +dist_doc_DATA = AUTHORS COPYING ChangeLog INSTALL README.md README.windows \ + doc/designstyle.css doc/glog.html + +## The libraries (.so's) you want to install +lib_LTLIBRARIES = + +# The libraries libglog depends on. +COMMON_LIBS = $(PTHREAD_LIBS) $(GFLAGS_LIBS) $(UNWIND_LIBS) +# Compile switches for our unittest. +TEST_CFLAGS = $(GTEST_CFLAGS) $(GMOCK_CFLAGS) $(GFLAGS_CFLAGS) \ + $(MINGW_CFLAGS) $(AM_CXXFLAGS) +# Libraries for our unittest. +TEST_LIBS = $(GTEST_LIBS) $(GMOCK_LIBS) $(GFLAGS_LIBS) + +## 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 = +# Set a small stack size so that (at least on Linux) PIEs are mapped at a lower +# address than DSOs. This is used by symbolize_pie_unittest to check that we can +# successfully symbolize PIEs loaded at low addresses. +TESTS_ENVIRONMENT = ulimit -s 8192; +check_SCRIPTS = +# Every time you add a unittest to check_SCRIPTS, add it here too +noinst_SCRIPTS = +# Binaries used for script-based unittests. +TEST_BINARIES = + +TESTS += logging_unittest +logging_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/logging_unittest.cc \ + src/config_for_unittests.h \ + src/mock-log.h +nodist_logging_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +logging_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +logging_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +logging_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +check_SCRIPTS += logging_striplog_test_sh +noinst_SCRIPTS += src/logging_striplog_test.sh +logging_striplog_test_sh: logging_striptest0 logging_striptest2 logging_striptest10 + $(top_srcdir)/src/logging_striplog_test.sh + +check_SCRIPTS += demangle_unittest_sh +noinst_SCRIPTS += src/demangle_unittest.sh +demangle_unittest_sh: demangle_unittest + $(builddir)/demangle_unittest # force to create lt-demangle_unittest + $(top_srcdir)/src/demangle_unittest.sh + +check_SCRIPTS += signalhandler_unittest_sh +noinst_SCRIPTS += src/signalhandler_unittest.sh +signalhandler_unittest_sh: signalhandler_unittest + $(builddir)/signalhandler_unittest # force to create lt-signalhandler_unittest + $(top_srcdir)/src/signalhandler_unittest.sh + +TEST_BINARIES += logging_striptest0 +logging_striptest0_SOURCES = $(gloginclude_HEADERS) \ + src/logging_striptest_main.cc +nodist_logging_striptest0_SOURCES = $(nodist_gloginclude_HEADERS) +logging_striptest0_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +logging_striptest0_LDFLAGS = $(PTHREAD_CFLAGS) +logging_striptest0_LDADD = libglog.la $(COMMON_LIBS) + +TEST_BINARIES += logging_striptest2 +logging_striptest2_SOURCES = $(gloginclude_HEADERS) \ + src/logging_striptest2.cc +nodist_logging_striptest2_SOURCES = $(nodist_gloginclude_HEADERS) +logging_striptest2_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +logging_striptest2_LDFLAGS = $(PTHREAD_CFLAGS) +logging_striptest2_LDADD = libglog.la $(COMMON_LIBS) + +TEST_BINARIES += logging_striptest10 +logging_striptest10_SOURCES = $(gloginclude_HEADERS) \ + src/logging_striptest10.cc +nodist_logging_striptest10_SOURCES = $(nodist_gloginclude_HEADERS) +logging_striptest10_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +logging_striptest10_LDFLAGS = $(PTHREAD_CFLAGS) +logging_striptest10_LDADD = libglog.la $(COMMON_LIBS) + +TESTS += demangle_unittest +demangle_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/demangle_unittest.cc +nodist_demangle_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +demangle_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +demangle_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +demangle_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +TESTS += stacktrace_unittest +stacktrace_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/stacktrace_unittest.cc +nodist_stacktrace_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +stacktrace_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +stacktrace_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +stacktrace_unittest_LDADD = libglog.la $(COMMON_LIBS) + +TESTS += symbolize_unittest +symbolize_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/symbolize_unittest.cc +nodist_symbolize_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +symbolize_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +symbolize_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +symbolize_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +TESTS += symbolize_pie_unittest +symbolize_pie_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/symbolize_unittest.cc +nodist_symbolize_pie_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +symbolize_pie_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) -fPIE +symbolize_pie_unittest_LDFLAGS = $(PTHREAD_CFLAGS) -pie +symbolize_pie_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +TESTS += stl_logging_unittest +stl_logging_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/stl_logging_unittest.cc +nodist_stl_logging_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +stl_logging_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +stl_logging_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +stl_logging_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +TEST_BINARIES += signalhandler_unittest +signalhandler_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/signalhandler_unittest.cc +nodist_signalhandler_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +signalhandler_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +signalhandler_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +signalhandler_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +TESTS += utilities_unittest +utilities_unittest_SOURCES = $(gloginclude_HEADERS) \ + src/utilities_unittest.cc +nodist_utilities_unittest_SOURCES = $(nodist_gloginclude_HEADERS) +utilities_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +utilities_unittest_LDFLAGS = $(PTHREAD_CFLAGS) +utilities_unittest_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) + +if HAVE_GMOCK +TESTS += mock_log_test +mock_log_test_SOURCES = $(gloginclude_HEADERS) \ + src/mock-log_test.cc +nodist_mock_log_test_SOURCES = $(nodist_gloginclude_HEADERS) +mock_log_test_CXXFLAGS = $(PTHREAD_CFLAGS) $(TEST_CFLAGS) +mock_log_test_LDFLAGS = $(PTHREAD_CFLAGS) +mock_log_test_LDADD = libglog.la $(COMMON_LIBS) $(TEST_LIBS) +endif + +## vvvv RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS + +lib_LTLIBRARIES += libglog.la +libglog_la_SOURCES = $(gloginclude_HEADERS) \ + src/logging.cc src/raw_logging.cc src/vlog_is_on.cc \ + src/utilities.cc src/utilities.h \ + src/demangle.cc src/demangle.h \ + src/stacktrace.h \ + src/stacktrace_generic-inl.h \ + src/stacktrace_libunwind-inl.h \ + src/stacktrace_powerpc-inl.h \ + src/stacktrace_x86-inl.h \ + src/stacktrace_x86_64-inl.h \ + src/symbolize.cc src/symbolize.h \ + src/signalhandler.cc \ + src/base/mutex.h src/base/googleinit.h \ + src/base/commandlineflags.h src/googletest.h +nodist_libglog_la_SOURCES = $(nodist_gloginclude_HEADERS) + +libglog_la_CXXFLAGS = $(PTHREAD_CFLAGS) $(GFLAGS_CFLAGS) $(MINGW_CFLAGS) \ + $(AM_CXXFLAGS) -DNDEBUG +libglog_la_LDFLAGS = $(PTHREAD_CFLAGS) $(GFLAGS_LDFLAGS) +libglog_la_LIBADD = $(COMMON_LIBS) + +## The location of the windows project file for each binary we make +WINDOWS_PROJECTS = google-glog.sln +WINDOWS_PROJECTS += vsprojects/libglog/libglog.vcproj +WINDOWS_PROJECTS += vsprojects/logging_unittest/logging_unittest.vcproj +WINDOWS_PROJECTS += vsprojects/libglog_static/libglog_static.vcproj +WINDOWS_PROJECTS += vsprojects/logging_unittest_static/logging_unittest_static.vcproj + +## ^^^^ END OF RULES TO MAKE THE LIBRARIES, BINARIES, AND UNITTESTS + + +## This should always include $(TESTS), but may also include other +## binaries that you compile but don't want automatically installed. +noinst_PROGRAMS = $(TESTS) $(TEST_BINARIES) + +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} + +# 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/ + +libtool: $(LIBTOOL_DEPS) + $(SHELL) ./config.status --recheck + +EXTRA_DIST = packages/rpm.sh packages/rpm/rpm.spec \ + packages/deb.sh packages/deb/* \ + $(SCRIPTS) src/logging_unittest.err src/demangle_unittest.txt \ + src/windows/config.h src/windows/port.h src/windows/port.cc \ + src/windows/preprocess.sh \ + src/windows/glog/log_severity.h src/windows/glog/logging.h \ + src/windows/glog/raw_logging.h src/windows/glog/stl_logging.h \ + src/windows/glog/vlog_is_on.h \ + $(WINDOWS_PROJECTS) + +CLEANFILES = core demangle.dm demangle.nm signalhandler.out* \ + signalhandler_unittest.*.log.INFO.* + +# Add pkgconfig file +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libglog.pc |