From a3e8ce275c9de6e01bce1c0d4a44e0a4b9a8b867 Mon Sep 17 00:00:00 2001
From: Sergei Golubchik <sergii@pisem.net>
Date: Mon, 12 Dec 2011 16:28:16 +0100
Subject: [PATCH] new "./configure --disable-distribution" option

---
 config/ac-macros/readline.m4 | 39 +++++++++++++++++++++++++++---------
 configure.in                 | 29 ++++++++++++++++++++++++---
 2 files changed, 56 insertions(+), 12 deletions(-)

diff --git a/config/ac-macros/readline.m4 b/config/ac-macros/readline.m4
index e1ed8420bfb..9e62d9add3e 100644
--- a/config/ac-macros/readline.m4
+++ b/config/ac-macros/readline.m4
@@ -40,23 +40,44 @@ AC_DEFUN([MYSQL_CHECK_LIBEDIT_INTERFACE], [
 ])
 
 AC_DEFUN([MYSQL_CHECK_NEW_RL_INTERFACE], [
-    AC_CACHE_CHECK([defined rl_compentry_func_t and rl_completion_func_t], mysql_cv_new_rl_interface,
-	AC_TRY_COMPILE(
-	    [
+    AC_CACHE_CHECK([for system libreadline], mysql_cv_new_rl_interface,
+	AC_COMPILE_IFELSE(
+	    [AC_LANG_SOURCE([
 		#include "stdio.h"
 		#include "readline/readline.h"
-	    ],
-	    [ 
 		rl_completion_func_t *func1= (rl_completion_func_t*)0;
 		rl_compentry_func_t *func2= (rl_compentry_func_t*)0;
-	    ],
+	    ])],
 	    [
-		mysql_cv_new_rl_interface=yes
-                AC_DEFINE_UNQUOTED([USE_NEW_READLINE_INTERFACE], [1],
-                                   [used new readline interface (are rl_completion_func_t and rl_compentry_func_t defined)])
+                AC_PREPROC_IFELSE(
+                    [AC_LANG_SOURCE([
+                        #include "stdio.h"
+                        #include "readline/readline.h"
+                        #if RL_VERSION_MAJOR > 5
+                        #error
+                        #endif
+                    ])], [ rl_v5=yes ], [ rl_v5=no ],
+                )
+                if [test "$rl_v5" = "yes"]
+                then
+                  mysql_cv_new_rl_interface=yes
+                else
+                  if [test "$enable_distribution" = "yes"]
+                  then
+                    mysql_cv_new_rl_interface=no
+                  else
+                    mysql_cv_new_rl_interface=yes
+                    enable_distribution=warn
+                  fi
+                fi
 	    ],
 	    [mysql_cv_new_rl_interface=no]
         )
+        if [test "$mysql_cv_new_rl_interface" = yes]
+        then
+          AC_DEFINE_UNQUOTED([USE_NEW_READLINE_INTERFACE], [1],
+                             [used new readline interface (are rl_completion_func_t and rl_compentry_func_t defined)])
+        fi
     )
 ])
 
diff --git a/configure.in b/configure.in
index 34ca4e171b2..179f4bfcce2 100644
--- a/configure.in
+++ b/configure.in
@@ -632,6 +632,14 @@ AC_ARG_WITH(other-libc,
 )
 AC_SUBST(NOINST_LDFLAGS)
 
+AC_ARG_ENABLE(distribution,
+    AC_HELP_STRING(
+        [--disable-distribution], 
+        [Allow linking with system GPLv3 libraries. It may result in a binary that can not be legally distributed.]),
+    [ enable_distribution=$enableval ],
+    [ enable_distribution=yes ]
+    )
+
 #
 # Check if we are using Linux and a glibc compiled with static nss
 # (this is true on the MySQL build machines to avoid NSS problems)
@@ -1573,7 +1581,7 @@ fi
 AC_MSG_CHECKING([for OpenSolaris Bug 6611808])
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Werror"
-AC_COMPILE_IFELSE([
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
   #include <pthread.h>
   void dummy() {}
   int main()
@@ -1582,7 +1590,7 @@ AC_COMPILE_IFELSE([
     pthread_once(&once_control, dummy);
     return 0;
   }
-], [
+])], [
   AC_DEFINE([PTHREAD_ONCE_INITIALIZER], [{PTHREAD_ONCE_INIT}],
             [See OpenSolaris Bug 6611808])
   AC_MSG_RESULT([yes])
@@ -2712,6 +2720,8 @@ case $SYSTEM_TYPE in
 	compile_libedit=yes
 	AC_DEFINE_UNQUOTED(HAVE_HIST_ENTRY, 1)
 	AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE, 1)
+        AC_MSG_CHECKING([for libedit/readline])
+        AC_MSG_RESULT([libedit bundled])
     elif test "$with_readline" = "yes"
     then
 	readline_topdir="cmd-line-utils"
@@ -2722,6 +2732,8 @@ case $SYSTEM_TYPE in
 	compile_readline=yes
 	want_to_use_readline="yes"
 	AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1)
+        AC_MSG_CHECKING([for libedit/readline])
+        AC_MSG_RESULT([readline bundled])
     else
 	# Use system readline library
 	AC_LANG_SAVE
@@ -2736,12 +2748,16 @@ case $SYSTEM_TYPE in
 	    # this way we avoid linking commercial source with GPL readline
 	    readline_link="-lreadline"
 	    want_to_use_readline="yes"
+            AC_MSG_CHECKING([for libedit/readline])
+            AC_MSG_RESULT([readline system])
 	elif [test "$mysql_cv_libedit_interface" = "yes"]
 	then
 	    # Use libedit
 	    readline_link="-ledit"
+            AC_MSG_CHECKING([for libedit/readline])
+            AC_MSG_RESULT([libedit system])
 	else
-	   AC_MSG_ERROR([Could not find system readline or libedit libraries
+	   AC_MSG_ERROR([Could not find usable system readline or libedit libraries
 	      Use --with-readline or --with-libedit to use the bundled
 	      versions of libedit or readline])
 	fi
@@ -2987,6 +3003,13 @@ if test X"$with_plugin_ndbcluster" = Xyes ; then
   echo for more details.
 fi
 
+if test "$enable_distribution" = "warn"
+then
+  echo "You have linked MariaDB with GPLv3 libraries!"
+  echo "You may not distribute the resulting binary. If you do, you will "
+  echo "put yourself into a legal problem with Free Software Foundation."
+fi
+
 # The first line "Thank you ..." is checked in ./Do-compile to verify that configure
 # ended sucessfully - don't remove it.
 echo
-- 
2.30.9