diff --git a/astlpc.c b/astlpc.c
index 6de3e37..d322b7c 100644
--- a/astlpc.c
+++ b/astlpc.c
@@ -1401,7 +1401,8 @@
 		astlpc_prwarn(astlpc, "LPC mmap failed");
 		rc = -1;
 	} else {
-		astlpc->lpc_map = lpc_map_base + map.size - LPC_WIN_SIZE;
+		astlpc->lpc_map =
+			(uint8_t *)lpc_map_base + map.size - LPC_WIN_SIZE;
 	}
 
 	close(fd);
diff --git a/core.c b/core.c
index cc39dcf..33f5093 100644
--- a/core.c
+++ b/core.c
@@ -72,13 +72,6 @@
 	size_t max_message_size;
 };
 
-#ifndef BUILD_ASSERT
-#define BUILD_ASSERT(x)                                                        \
-	do {                                                                   \
-		(void)sizeof(char[0 - (!(x))]);                                \
-	} while (0)
-#endif
-
 #ifndef ARRAY_SIZE
 #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
 #endif
@@ -317,7 +310,7 @@
 	size_t i;
 
 	/* Cleanup message assembly contexts */
-	BUILD_ASSERT(ARRAY_SIZE(mctp->msg_ctxs) < SIZE_MAX);
+	static_assert(ARRAY_SIZE(mctp->msg_ctxs) < SIZE_MAX, "size");
 	for (i = 0; i < ARRAY_SIZE(mctp->msg_ctxs); i++) {
 		struct mctp_msg_ctx *tmp = &mctp->msg_ctxs[i];
 		if (tmp->buf)
@@ -439,8 +432,11 @@
 
 static inline bool mctp_ctrl_cmd_is_transport(struct mctp_ctrl_msg_hdr *hdr)
 {
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wtype-limits"
 	return ((hdr->command_code >= MCTP_CTRL_CMD_FIRST_TRANSPORT) &&
 		(hdr->command_code <= MCTP_CTRL_CMD_LAST_TRANSPORT));
+#pragma GCC diagnostic pop
 }
 
 static bool mctp_ctrl_handle_msg(struct mctp_bus *bus, mctp_eid_t src,
diff --git a/serial.c b/serial.c
index 47d250e..e2a2df2 100644
--- a/serial.c
+++ b/serial.c
@@ -317,7 +317,7 @@
 	size_t i;
 
 	for (i = 0; i < len; i++)
-		mctp_rx_consume_one(serial, *(uint8_t *)(buf + i));
+		mctp_rx_consume_one(serial, ((const uint8_t *)buf)[i]);
 }
 
 #ifdef MCTP_HAVE_FILEIO
@@ -330,7 +330,8 @@
 		return -1;
 
 	if (len < 0) {
-		mctp_prerr("can't read from serial device: %m");
+		mctp_prerr("can't read from serial device: %s",
+			   strerror(errno));
 		return -1;
 	}
 
@@ -353,7 +354,7 @@
 {
 	serial->fd = open(device, O_RDWR);
 	if (serial->fd < 0)
-		mctp_prerr("can't open device %s: %m", device);
+		mctp_prerr("can't open device %s: %s", device, strerror(errno));
 
 	return 0;
 }
diff --git a/tests/test_astlpc.c b/tests/test_astlpc.c
index e8f2bce..48beb4e 100644
--- a/tests/test_astlpc.c
+++ b/tests/test_astlpc.c
@@ -1515,20 +1515,13 @@
 };
 /* clang-format on */
 
-#ifndef BUILD_ASSERT
-#define BUILD_ASSERT(x)                                                        \
-	do {                                                                   \
-		(void)sizeof(char[0 - (!(x))]);                                \
-	} while (0)
-#endif
-
 int main(void)
 {
 	size_t i;
 
 	mctp_set_log_stdio(MCTP_LOG_DEBUG);
 
-	BUILD_ASSERT(ARRAY_SIZE(astlpc_tests) < SIZE_MAX);
+	static_assert(ARRAY_SIZE(astlpc_tests) < SIZE_MAX, "size");
 	for (i = 0; i < ARRAY_SIZE(astlpc_tests); i++) {
 		mctp_prlog(MCTP_LOG_DEBUG, "begin: %s", astlpc_tests[i].name);
 		astlpc_tests[i].test();
diff --git a/tests/test_core.c b/tests/test_core.c
index 435e5e4..ead3990 100644
--- a/tests/test_core.c
+++ b/tests/test_core.c
@@ -623,20 +623,13 @@
 };
 /* clang-format on */
 
-#ifndef BUILD_ASSERT
-#define BUILD_ASSERT(x)                                                        \
-	do {                                                                   \
-		(void)sizeof(char[0 - (!(x))]);                                \
-	} while (0)
-#endif
-
 int main(void)
 {
 	uint8_t i;
 
 	mctp_set_log_stdio(MCTP_LOG_DEBUG);
 
-	BUILD_ASSERT(ARRAY_SIZE(mctp_core_tests) < SIZE_MAX);
+	static_assert(ARRAY_SIZE(mctp_core_tests) < SIZE_MAX, "size");
 	for (i = 0; i < ARRAY_SIZE(mctp_core_tests); i++) {
 		mctp_prlog(MCTP_LOG_DEBUG, "begin: %s",
 			   mctp_core_tests[i].name);
diff --git a/utils/mctp-capture.c b/utils/mctp-capture.c
index b38e92d..ea83146 100644
--- a/utils/mctp-capture.c
+++ b/utils/mctp-capture.c
@@ -30,8 +30,6 @@
 
 int capture_prepare(struct capture *cap)
 {
-	int rc;
-
 	if (!(cap->pcap = pcap_open_dead(CAPTURE_LINKTYPE_LINUX_SLL2,
 					 UINT16_MAX))) {
 		fprintf(stderr, "pcap_open_dead: failed\n");
@@ -135,7 +133,7 @@
 
 	/* Ignore the eid at start of buf */
 	memcpy(pktbuf + sizeof(struct sll2_header) + sizeof(struct mctp_hdr),
-	       buf + 1, len - 1);
+	       (const uint8_t *)buf + 1, len - 1);
 
 	hdr.caplen = size;
 	hdr.len = size;
diff --git a/utils/mctp-capture.h b/utils/mctp-capture.h
index e432df9..261caba 100644
--- a/utils/mctp-capture.h
+++ b/utils/mctp-capture.h
@@ -3,7 +3,9 @@
 #ifndef _UTILS_MCTP_CAPTURE_H
 #define _UTILS_MCTP_CAPTURE_H
 
+#ifdef HAVE_CONFIG_H
 #include "config.h"
+#endif
 
 #include "compiler.h"
 #include "libmctp.h"
diff --git a/utils/mctp-demux-daemon.c b/utils/mctp-demux-daemon.c
index fae4f35..7357d43 100644
--- a/utils/mctp-demux-daemon.c
+++ b/utils/mctp-demux-daemon.c
@@ -2,7 +2,9 @@
 
 #define _GNU_SOURCE
 
+#ifdef HAVE_CONFIG_H
 #include "config.h"
+#endif
 
 #define SD_LISTEN_FDS_START 3
 
@@ -64,7 +66,7 @@
 	struct binding *binding;
 	bool verbose;
 	int local_eid;
-	void *buf;
+	uint8_t *buf;
 	size_t buf_size;
 
 	int sock;
