From 7d9f57983c6d14ac14f26987eddc555ea5c75d61 Mon Sep 17 00:00:00 2001
From: Denys Dmytriyenko <denys@ti.com>
Date: Mon, 27 Jul 2015 11:51:52 -0400
Subject: [PATCH] Add kernel build dir

We build kernel outside of the source directory and the generated version.h
file ends up being in a separate directory from the rest of kernel headers.
Use another variable to point to the kernel build artifacts.

Signed-off-by: Denys Dmytriyenko <denys@ti.com>

---
 configure.ac               | 6 ++++++
 ipc-linux.mak              | 3 +++
 linux/src/mm/Makefile.am   | 2 +-
 packages/ti/ipc/mm/MmRpc.c | 4 ++++
 4 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index f0b4b61..9b5d07c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -71,6 +71,7 @@ AC_SUBST([AM_LDFLAGS])
 AC_ARG_VAR(PLATFORM, Platform to build. Options are: 'OMAPL138' 'OMAP54XX' '66AK2E' 'TCI6630' 'TCI6636' 'TCI6638' '66AK2G' and 'DRA7XX'. If not defined all platforms will be built.)
 AC_ARG_VAR(CMEM_INSTALL_DIR, Installation path directory to the CMEM libraries)
 AC_ARG_VAR(KERNEL_INSTALL_DIR, Installation path to the Linux kernel.)
+AC_ARG_VAR(KERNEL_BUILD_DIR, Path to the Linux kernel build artifacts.)
 AC_ARG_VAR(AF_RPMSG, Address Family used by the RPMSG driver)
 AC_ARG_VAR(DRM_PREFIX, Installation location to the DRM library.)
 
@@ -111,6 +112,7 @@ AS_IF([test "x$PLATFORM" = "x"], [CMEM_INSTALL_DIR=])
 AC_SUBST([PLATFORM])
 AC_SUBST([CMEM_INSTALL_DIR])
 AC_SUBST([KERNEL_INSTALL_DIR])
+AC_SUBST([KERNEL_BUILD_DIR])
 AC_SUBST([AF_RPMSG])
 AC_SUBST([DRM_PREFIX])
 
@@ -127,6 +129,7 @@ AM_CONDITIONAL([DRA7XX], [test "x$PLATFORM" = "xDRA7XX"])
 AM_CONDITIONAL([CMEM], [test "x$CMEM_INSTALL_DIR" != "x"])
 AM_CONDITIONAL([KDIR], [test "x$KERNEL_INSTALL_DIR" != "x"])
 AM_CONDITIONAL([KERNEL_INSTALL_DIR], [test -n "$KERNEL_INSTALL_DIR"])
+AM_CONDITIONAL([KERNEL_BUILD_DIR], [test -n "$KERNEL_BUILD_DIR"])
 AM_CONDITIONAL([DRM], [test "x$DRM_PREFIX" != "x"])
 AM_CONDITIONAL([AF_RPMSG], [test -n "$AF_RPMSG"])
 
@@ -157,6 +160,9 @@ You have configured to build for the '${PLATFORM}' platform
 Your KERNEL installation directory is set to:
     '${KERNEL_INSTALL_DIR}'
 
+Your KERNEL build artifacts directory is set to:
+    '${KERNEL_BUILD_DIR}'
+
 Your DRM installation directory is set to:
     '${DRM_PREFIX}'
 
diff --git a/ipc-linux.mak b/ipc-linux.mak
index 58a9cea..4e543ff 100644
--- a/ipc-linux.mak
+++ b/ipc-linux.mak
@@ -60,6 +60,7 @@ config:
             PLATFORM=$(PLATFORM) \
             CMEM_INSTALL_DIR=$(CMEM_INSTALL_DIR) \
             KERNEL_INSTALL_DIR=$(KERNEL_INSTALL_DIR) \
+            KERNEL_BUILD_DIR=$(KERNEL_BUILD_DIR) \
             DRM_PREFIX=$(DRM_PREFIX) \
             AF_RPMSG=$(AF_RPMSG)
 
@@ -72,6 +73,7 @@ config-static:
             PLATFORM=$(PLATFORM) \
             CMEM_INSTALL_DIR=$(CMEM_INSTALL_DIR) \
             KERNEL_INSTALL_DIR=$(KERNEL_INSTALL_DIR) \
+            KERNEL_BUILD_DIR=$(KERNEL_BUILD_DIR) \
             DRM_PREFIX=$(DRM_PREFIX) \
             AF_RPMSG=$(AF_RPMSG)
 
@@ -84,5 +86,6 @@ config-shared:
             PLATFORM=$(PLATFORM) \
             CMEM_INSTALL_DIR=$(CMEM_INSTALL_DIR) \
             KERNEL_INSTALL_DIR=$(KERNEL_INSTALL_DIR) \
+            KERNEL_BUILD_DIR=$(KERNEL_BUILD_DIR) \
             DRM_PREFIX=$(DRM_PREFIX) \
             AF_RPMSG=$(AF_RPMSG)
diff --git a/linux/src/mm/Makefile.am b/linux/src/mm/Makefile.am
index 59aa312..8fb51a3 100644
--- a/linux/src/mm/Makefile.am
+++ b/linux/src/mm/Makefile.am
@@ -32,7 +32,7 @@
 ##
 
 # additional include paths necessary to compile the library
-AM_CFLAGS = -Wall @AM_CFLAGS@ -DKERNEL_INSTALL_DIR="$(KERNEL_INSTALL_DIR)"
+AM_CFLAGS = -Wall @AM_CFLAGS@ -DKERNEL_INSTALL_DIR="$(KERNEL_INSTALL_DIR)" -DKERNEL_BUILD_DIR="$(KERNEL_BUILD_DIR)"
 
 ###############################################################################
 # THE LIBRARIES TO BUILD
diff --git a/packages/ti/ipc/mm/MmRpc.c b/packages/ti/ipc/mm/MmRpc.c
index 2df7420..797e100 100644
--- a/packages/ti/ipc/mm/MmRpc.c
+++ b/packages/ti/ipc/mm/MmRpc.c
@@ -56,7 +56,11 @@
 #endif
 
 #define linux_version_include(kd) <kd/include/generated/uapi/linux/version.h>
+#if defined(KERNEL_BUILD_DIR)
+#include linux_version_include(KERNEL_BUILD_DIR)
+#else
 #include linux_version_include(KERNEL_INSTALL_DIR)
+#endif
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)
 #define linux_include(kd,m) <kd/include/linux/m.h>
