diff --git a/lib/constants.cc.in b/lib/constants.cc.in
new file mode 100644
index 0000000..d56f45e
--- /dev/null
+++ b/lib/constants.cc.in
@@ -0,0 +1,63 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2006,2009,2013 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdlib.h>
+#include <grgsm/constants.h>
+
+namespace gr {
+ namespace gsm{
+  const std::string
+  build_date()
+  {
+    return "@BUILD_DATE@";
+  }
+
+  const std::string
+  version()
+  {
+    return "@VERSION@";
+  }
+
+  // Return individual parts of the version
+  const std::string
+  major_version()
+  {
+    return "@MAJOR_VERSION@";
+  }
+
+  const std::string
+  api_version()
+  {
+    return "@API_COMPAT@";
+  }
+
+  const std::string
+  minor_version()
+  {
+    return "@MINOR_VERSION@";
+  }
+ } /* namespace gsm */
+} /* namespace gr */
