diff --git a/Makefile b/Makefile
index 8aac967..9a5abd9 100644
--- a/Makefile
+++ b/Makefile
@@ -721,7 +721,12 @@
 endif
 
 ifneq ($(NEED_SERIAL), )
-LIB_OBJS += serial.o custom_baud.o
+LIB_OBJS += serial.o
+ifeq ($(TARGET_OS), Linux)
+LIB_OBJS += custom_baud_linux.o
+else
+LIB_OBJS += custom_baud.o
+endif
 endif
 
 ifneq ($(NEED_POSIX_SOCKETS), )
diff --git a/custom_baud.c b/custom_baud.c
index caf2b78..28f182c 100644
--- a/custom_baud.c
+++ b/custom_baud.c
@@ -14,52 +14,10 @@
  * GNU General Public License for more details.
  */
 
-#include "platform.h"
-#include "custom_baud.h"
-
-#if IS_LINUX
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <asm-generic/termbits.h>
-#include <asm-generic/ioctls.h>
-
-/*
- * This include hell above is why this is in a separate source file. See eg.
- * https://www.downtowndougbrown.com/2013/11/linux-custom-serial-baud-rates/
- * https://stackoverflow.com/questions/12646324/how-to-set-a-custom-baud-rate-on-linux
- * https://github.com/jbkim/Linux-custom-baud-rate
- * for more info.
- */
-
-int set_custom_baudrate(int fd, unsigned int baud)
-{
-	struct termios2 tio;
-	if (ioctl(fd, TCGETS2, &tio)) {
-		return -1;
-	}
-	tio.c_cflag &= ~CBAUD;
-	tio.c_cflag |= BOTHER;
-	tio.c_ispeed = baud;
-	tio.c_ospeed = baud;
-	return ioctl(fd, TCSETS2, &tio);
-}
-
-int use_custom_baud(unsigned int baud, const struct baudentry *baudtable)
-{
-	int i;
-	for (i = 0; baudtable[i].baud; i++) {
-		if (baudtable[i].baud == baud)
-			return 0;
-
-		if (baudtable[i].baud > baud)
-			return 1;
-	}
-	return 1;
-}
-
-#else
 #include <errno.h>
 
+#include "custom_baud.h"
+
 /* Stub, should not get called. */
 int set_custom_baudrate(int fd, unsigned int baud)
 {
@@ -71,4 +29,3 @@
 {
 	return 0;
 }
-#endif
diff --git a/custom_baud_linux.c b/custom_baud_linux.c
new file mode 100644
index 0000000..2d5f261
--- /dev/null
+++ b/custom_baud_linux.c
@@ -0,0 +1,56 @@
+/*
+ * This file is part of the flashrom project.
+ *
+ * Copyright (C) 2017 Urja Rannikko <urjaman@gmail.com>
+ *
+ * This program 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 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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.
+ */
+
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include <asm-generic/termbits.h>
+#include <asm-generic/ioctls.h>
+
+#include "custom_baud.h"
+
+/*
+ * This include hell above is why this is in a separate source file. See eg.
+ * https://www.downtowndougbrown.com/2013/11/linux-custom-serial-baud-rates/
+ * https://stackoverflow.com/questions/12646324/how-to-set-a-custom-baud-rate-on-linux
+ * https://github.com/jbkim/Linux-custom-baud-rate
+ * for more info.
+ */
+
+int set_custom_baudrate(int fd, unsigned int baud)
+{
+	struct termios2 tio;
+	if (ioctl(fd, TCGETS2, &tio)) {
+		return -1;
+	}
+	tio.c_cflag &= ~CBAUD;
+	tio.c_cflag |= BOTHER;
+	tio.c_ispeed = baud;
+	tio.c_ospeed = baud;
+	return ioctl(fd, TCSETS2, &tio);
+}
+
+int use_custom_baud(unsigned int baud, const struct baudentry *baudtable)
+{
+	int i;
+	for (i = 0; baudtable[i].baud; i++) {
+		if (baudtable[i].baud == baud)
+			return 0;
+
+		if (baudtable[i].baud > baud)
+			return 1;
+	}
+	return 1;
+}
diff --git a/meson.build b/meson.build
index 9d35cc4..4620860 100644
--- a/meson.build
+++ b/meson.build
@@ -294,8 +294,12 @@
 
 # raw serial IO
 if need_serial
-  srcs += 'custom_baud.c'
   srcs += 'serial.c'
+  if host_machine.system() == 'linux'
+    srcs += 'custom_baud_linux.c'
+  else
+    srcs += 'custom_baud.c'
+  endif
 endif
 
 prefix = get_option('prefix')
