GCC pragmas are not allowed inside functions.
--- a/include/nm-macros-internal.h	2015-05-05 06:35:17.000000000 -0500
+++ b/include/nm-macros-internal.h	2015-10-27 08:14:44.815754946 -0500
@@ -58,7 +58,7 @@
  * It's not that bad however, because gcc and clang often have the
  * same name for the same warning. */
 
-#if defined (__GNUC__)
+#if defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
 #define NM_PRAGMA_WARNING_DISABLE(warning) \
         _Pragma("GCC diagnostic push"); \
         _Pragma(_NM_PRAGMA_WARNING_DO(warning))
@@ -70,7 +70,7 @@
 #define NM_PRAGMA_WARNING_DISABLE(warning)
 #endif
 
-#if defined (__GNUC__)
+#if defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
 #define NM_PRAGMA_WARNING_REENABLE \
     _Pragma("GCC diagnostic pop")
 #elif defined (__clang__)
--- a/src/dhcp-manager/systemd-dhcp/src/shared/macro.h	2015-05-05 06:35:17.000000000 -0500
+++ b/src/dhcp-manager/systemd-dhcp/src/shared/macro.h	2015-10-27 08:25:26.480745501 -0500
@@ -46,6 +46,7 @@
 #define _alignas_(x) __attribute__((aligned(__alignof(x))))
 #define _cleanup_(x) __attribute__((cleanup(x)))
 
+#if defined (__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
 /* Temporarily disable some warnings */
 #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT                     \
         _Pragma("GCC diagnostic push");                                 \
@@ -69,6 +70,14 @@
 
 #define REENABLE_WARNING                                                \
         _Pragma("GCC diagnostic pop")
+#else
+#define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT
+#define DISABLE_WARNING_FORMAT_NONLITERAL
+#define DISABLE_WARNING_MISSING_PROTOTYPES
+#define DISABLE_WARNING_NONNULL
+#define DISABLE_WARNING_SHADOW
+#define REENABLE_WARNING
+#endif
 
 /* automake test harness */
 #define EXIT_TEST_SKIP 77
