[ovs-dev] [PATCH 2/2] Makefile: Compile Linux-specific files based on __linux__ macro.

Ben Pfaff blp at nicira.com
Thu Jan 23 23:39:11 UTC 2014


We want to conditionally compile several files based on whether we're
building for a Linux host, so we need some Automake conditional for that.
Previously this was based on whether Netlink is available and we're not
on ESX (since ESX has Netlink but isn't Linux), but it's more
straightforward to just test for Linux directly.

CC: Luigi Rizzo <rizzo at iet.unipi.it>
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
 acinclude.m4          |   17 ++++++++++++++++-
 configure.ac          |    6 +-----
 lib/automake.mk       |    2 +-
 utilities/automake.mk |    2 +-
 4 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/acinclude.m4 b/acinclude.m4
index 8ff5828..830fd3f 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1,6 +1,6 @@
 # -*- autoconf -*-
 
-# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+# Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -579,3 +579,18 @@ AC_DEFUN([OVS_CHECK_PTHREAD_SET_NAME],
 	  ;;
      esac
    fi])
+
+dnl OVS_CHECK_LINUX_HOST.
+dnl
+dnl Checks whether we're building for a Linux host, based on the presence of
+dnl the __linux__ preprocessor symbol, and sets up an Automake conditional
+dnl LINUX based on the result.
+AC_DEFUN([OVS_CHECK_LINUX_HOST],
+  [AC_CACHE_CHECK(
+     [whether __linux__ is defined],
+     [ovs_cv_linux],
+     [AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([enum { LINUX = __linux__};], [])],
+        [ovs_cv_linux=true],
+        [ovs_cv_linux=false])])
+   AM_CONDITIONAL([LINUX], [$ovs_cv_linux])])
diff --git a/configure.ac b/configure.ac
index 19c095e..8ea68f8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -90,6 +90,7 @@ OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(4)
 OVS_CHECK_ATOMIC_ALWAYS_LOCK_FREE(8)
 OVS_CHECK_POSIX_AIO
 OVS_CHECK_PTHREAD_SET_NAME
+OVS_CHECK_LINUX_HOST
 
 OVS_CHECK_INCLUDE_NEXT([stdio.h string.h])
 AC_CONFIG_FILES([lib/stdio.h lib/string.h])
@@ -132,11 +133,6 @@ AC_CONFIG_COMMANDS([include/openflow/openflow.h.stamp])
 
 AC_CONFIG_COMMANDS([utilities/bugtool/dummy], [:])
 
-AM_CONDITIONAL([LINUX_DATAPATH], [test "$HAVE_NETLINK" = yes && test "$ESX" = no])
-if test "$HAVE_NETLINK" = yes && test "$ESX" = no; then
-    AC_DEFINE([LINUX_DATAPATH], [1], [System uses the linux datapath module.])
-fi
-
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES])
 
 AC_OUTPUT
diff --git a/lib/automake.mk b/lib/automake.mk
index 94ba060..27d57ae 100644
--- a/lib/automake.mk
+++ b/lib/automake.mk
@@ -268,7 +268,7 @@ if HAVE_WNO_UNUSED_PARAMETER
 lib_libsflow_la_CFLAGS += -Wno-unused-parameter
 endif
 
-if LINUX_DATAPATH
+if LINUX
 lib_libopenvswitch_la_SOURCES += \
 	lib/dpif-linux.c \
 	lib/dpif-linux.h \
diff --git a/utilities/automake.mk b/utilities/automake.mk
index ffc48b1..e33c232 100644
--- a/utilities/automake.mk
+++ b/utilities/automake.mk
@@ -111,7 +111,7 @@ utilities_ovs_ofctl_LDADD = \
 utilities_ovs_vsctl_SOURCES = utilities/ovs-vsctl.c
 utilities_ovs_vsctl_LDADD = lib/libopenvswitch.la $(SSL_LIBS)
 
-if LINUX_DATAPATH
+if LINUX
 sbin_PROGRAMS += utilities/ovs-vlan-bug-workaround
 utilities_ovs_vlan_bug_workaround_SOURCES = utilities/ovs-vlan-bug-workaround.c
 utilities_ovs_vlan_bug_workaround_LDADD = lib/libopenvswitch.la $(SSL_LIBS)
-- 
1.7.10.4




More information about the dev mailing list