about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2012-03-20 00:38:56 +0000
committerEric Wong <normalperson@yhbt.net>2012-03-20 00:38:56 +0000
commit31f53913059adc8adfe5477811b347e85f2e1d48 (patch)
treed8ed70a8bd591c9da8562663d73cdd8096646ee0
parentef2eec33717bd2b21b130c65f524702875eb0535 (diff)
downloadcmogstored-31f53913059adc8adfe5477811b347e85f2e1d48.tar.gz
The results are currently _completely_ unbenchmarked, so I have
no idea if I'm using PGO correctly, yet...
-rw-r--r--Makefile.am1
-rw-r--r--build-aux/coverage.mk12
-rw-r--r--build-aux/pgo.mk27
3 files changed, 34 insertions, 6 deletions
diff --git a/Makefile.am b/Makefile.am
index cd49495..3228c08 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -196,6 +196,7 @@ MAINTAINERCLEANFILES = $(dist_man_MANS)
 include $(top_srcdir)/build-aux/coverage.mk
 include $(top_srcdir)/build-aux/release.mk
 include $(top_srcdir)/build-aux/sparse.mk
+include $(top_srcdir)/build-aux/pgo.mk
 
 $(top_srcdir)/.version:
         echo $(VERSION) > $@-t && mv $@-t $@
diff --git a/build-aux/coverage.mk b/build-aux/coverage.mk
index cf87d24..1b464af 100644
--- a/build-aux/coverage.mk
+++ b/build-aux/coverage.mk
@@ -9,12 +9,12 @@ cov_src = cmogstored.c $(mog_src) $(RL_MAIN)
 # this doesn't work in out-of-tree builds, yet...
 cover_db = $(top_srcdir)/cover_db
 
-coverage_junk = *.gcov *.gcda *.gcno
-CLEANFILES += $(coverage_junk)
-CLEANFILES += $(addprefix bsd/, $(coverage_junk))
-CLEANFILES += $(addprefix lib/, $(coverage_junk))
-CLEANFILES += $(addprefix nostd/, $(coverage_junk))
-CLEANFILES += $(addprefix test/, $(coverage_junk))
+COVERAGE_JUNK = *.gcov *.gcda *.gcno
+CLEANFILES += $(COVERAGE_JUNK)
+CLEANFILES += $(addprefix bsd/, $(COVERAGE_JUNK))
+CLEANFILES += $(addprefix lib/, $(COVERAGE_JUNK))
+CLEANFILES += $(addprefix nostd/, $(COVERAGE_JUNK))
+CLEANFILES += $(addprefix test/, $(COVERAGE_JUNK))
 
 coverage-clean:
         $(MAKE) clean
diff --git a/build-aux/pgo.mk b/build-aux/pgo.mk
new file mode 100644
index 0000000..26a0a9d
--- /dev/null
+++ b/build-aux/pgo.mk
@@ -0,0 +1,27 @@
+# profile-guided optimization snippets
+# This isn't tested or verified for correctness at all, yet.
+# Help is greatly appreciated.
+
+PGO_DIR = $(top_builddir)
+pgo_gen_cflags = $(CFLAGS) -O0 -fprofile-arcs -fprofile-generate=$(PGO_DIR)
+pgo_gen_ldflags = $(LDFLAGS) -O0 -lgcov
+
+pgo_build_cflags = $(CFLAGS) -fprofile-use=$(PGO_DIR) -fprofile-correction
+
+PGO_CHECK = check
+pgo-gen: export CCACHE_DISABLE=t
+pgo-gen:
+        $(MAKE) clean
+        $(MAKE) CFLAGS="$(pgo_gen_cflags)" LDFLAGS="$(pgo_gen_ldflags)"
+        $(MAKE) CFLAGS="$(pgo_gen_cflags)" LDFLAGS="$(pgo_gen_ldflags)" \
+          -j1 $(PGO_CHECK)
+
+pgo-build: export CCACHE_DISABLE=t
+pgo-build: pgo-gen
+        $(MAKE) clean COVERAGE_JUNK=
+        git ls-files -o
+        $(MAKE) CFLAGS="$(pgo_build_cflags)"
+
+pgo-install: export CCACHE_DISABLE=t
+pgo-install: pgo-build
+        $(MAKE) CFLAGS="$(pgo_build_cflags)" install