diff --git a/src/Makefile.am b/src/Makefile.am
index 12609d340a65dfedbe663ee2d611d04fc251be56..cbe656bb81bee16fc171081e463a0399676f97e9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -24,6 +24,8 @@ run-one-body-sample-gdb: one-body-sample
 
 one_body_sample_SOURCES = \
 	one-body-sample.cc
+one_body_sample_CPPFLAGS = \
+	$(AM_CPPFLAGS) -Dsrcdir=\"$(srcdir)\"
 
 test_gradient_method_SOURCES = \
 	test-gradient-method.cc
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 8002b890e22fd5594534ccc5cf976957d430ae5d..b3720edfa8a217c448c3726ad7917c021b11a297 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -2,6 +2,10 @@
 #include "config.h"
 #endif
 
+#ifndef srcdir
+#error srcdir unset
+#endif
+
 #ifdef HAVE_IPOPT
 #undef HAVE_IPOPT
 #endif
@@ -175,7 +179,7 @@ void assemble_nonlinearity(
 int main(int argc, char *argv[]) {
   try {
     Dune::ParameterTree parset;
-    Dune::ParameterTreeParser::readINITree("../../src/one-body-sample.parset",
+    Dune::ParameterTreeParser::readINITree(srcdir "/one-body-sample.parset",
                                            parset); // FIXME
     Dune::ParameterTreeParser::readOptions(argc, argv, parset);