MINOR: show Built with PCRE version

Inspired by PCRE's pcre_version.c and improved with Willy's
suggestions. Reusable parts have been added to
include/common/standard.h.
(cherry picked from commit dcbc5c5ecf6506b5ad55b98bbec910b29f011f14)
(cherry picked from commit dcdd2ae7d6809f45c5f6bbe2ba6fe9c70802bb42)
diff --git a/include/common/standard.h b/include/common/standard.h
index e56cd9d..0d8e0e7 100644
--- a/include/common/standard.h
+++ b/include/common/standard.h
@@ -919,4 +919,13 @@
 	return caddr & ~(unsigned long)(data & 3);
 }
 
+/* HAP_STRING() makes a string from a literal while HAP_XSTRING() first
+ * evaluates the argument and is suited to pass macros.
+ *
+ * They allow macros like PCRE_MAJOR to be defined without quotes, which
+ * is convenient for applications that want to test its value.
+ */
+#define HAP_STRING(...) #__VA_ARGS__
+#define HAP_XSTRING(...) HAP_STRING(__VA_ARGS__)
+
 #endif /* _COMMON_STANDARD_H */
diff --git a/src/haproxy.c b/src/haproxy.c
index 6ee3c59..04e3799 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -304,6 +304,9 @@
 #endif
 
 #ifdef USE_PCRE
+	printf("Built with PCRE version : %s\n", (HAP_XSTRING(Z PCRE_PRERELEASE)[1] == 0)?
+		HAP_XSTRING(PCRE_MAJOR.PCRE_MINOR PCRE_DATE) :
+		HAP_XSTRING(PCRE_MAJOR.PCRE_MINOR) HAP_XSTRING(PCRE_PRERELEASE PCRE_DATE));
 	printf("Running on PCRE version : %s", pcre_version());
 	printf("\nPCRE library supports JIT : ");
 #ifdef USE_PCRE_JIT