build: Reduce redundancy in configure.ac, convert osl detection.
authorAndre Noll <maan@systemlinux.org>
Sun, 20 Apr 2014 04:33:11 +0000 (04:33 +0000)
committerAndre Noll <maan@tuebingen.mpg.de>
Mon, 30 Mar 2015 16:45:41 +0000 (16:45 +0000)
We've had a fair number of bugs in configure.ac due to the fact that
most parts of it were created by copy+paste from an existing part.
This commit is an attempt to reduce this redundancy by factoring out
the reappearing parts to common macros. This will also reduce the
number of lines of configure.ac considerably, although this first
patch naturally adds more lines than it removes.

This commit introduces four new macros in configure.ac:

* AC_ARG_WITH: handles --with-xxx-headers and --with-xxx-libs
options for configure. The generated options are identical
to the old ones, so there are no compatibility issues.

* LIB_SUBST_FLAGS: creates preprocessor defines and make
variables

* STASH_FLAGS: saves copies of the CPPFLAGS, LDFLAGS and
LIBS variables

* UNSTASH_FLAGS restores stashed values

Only libosl detection is converted to use the new macros.  Subsequent
patches will convert other libraries.

INSTALL
configure.ac

diff --git a/INSTALL b/INSTALL
index 4a814dc..4cc4b1f 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,15 +1,21 @@
 Any knowledge of how to work with mouse and icons is not required.
 
 Any knowledge of how to work with mouse and icons is not required.
 
-From tarball:
-
+Installing osl
+~~~~~~~~~~~~~~
+       git clone git://git.tuebingen.mpg.de/osl
+       cd osl && make && sudo make install
+       (see http://people.tuebingen.mpg.de/maan/osl/)
+
+Installing paraslash from tarball
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        ./configure && make && sudo make install
 
        ./configure && make && sudo make install
 
-From git:
-
-       ./autogen.sh && sudo make install
-
-Example for cross-compiling:
+Installing paraslash from git
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+       autoconf && autoheader && make && sudo make install
 
 
+Example for cross-compiling
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
        export CROSS_COMPILE='armv6j-hardfloat-linux-gnueabi-'
        export PATH="/usr/cross/arm/bin:$PATH"
        export CC=${CROSS_COMPILE}gcc
        export CROSS_COMPILE='armv6j-hardfloat-linux-gnueabi-'
        export PATH="/usr/cross/arm/bin:$PATH"
        export CC=${CROSS_COMPILE}gcc
index 79b41a3..3768da5 100644 (file)
@@ -24,6 +24,46 @@ AC_DEFUN([objlist_to_errlist],[ \
        make_errlist_defines($@) \
        [const char **para_errlist[[]]] = {make_para_errlists($@)} \
 ])
        make_errlist_defines($@) \
        [const char **para_errlist[[]]] = {make_para_errlists($@)} \
 ])
+AC_DEFUN([LIB_ARG_WITH], [
+       AC_ARG_WITH($1-headers, [AS_HELP_STRING(--with-$1-headers=dir,
+               [look for $1 headers in dir])])
+       AC_ARG_WITH($1-libs, [AS_HELP_STRING(--with-$1-libs=dir,
+               [look for $1 libraries in dir])])
+       if test -n "$with_$1_headers"; then
+               $1_cppflags="-I$with_$1_headers"
+               CPPFLAGS="$CPPFLAGS $$1_cppflags"
+       fi
+       if test -n "$with_$1_libs"; then
+               $1_ldflags="-L$with_$1_libs $2"
+       else
+               $1_ldflags="$2"
+       fi
+       LDFLAGS="$LDFLAGS $$1_ldflags"
+])
+
+AC_DEFUN([STASH_FLAGS], [
+       OLD_CPPFLAGS="$CPPFLAGS"
+       OLD_LDFLAGS="$LDFLAGS"
+       OLD_LIBS="$LIBS"
+])
+
+AC_DEFUN([UNSTASH_FLAGS], [
+       CPPFLAGS="$OLD_CPPFLAGS"
+       LDFLAGS="$OLD_LDFLAGS"
+       LIBS="$OLD_LIBS"
+])
+AC_DEFUN([LIB_SUBST_FLAGS], [
+       if test "$HAVE_[]m4_toupper([$1])" == 'yes'; then
+               AC_DEFINE(HAVE_[]m4_toupper([$1]), 1,
+                       define to 1 to turn on $1 support)
+       else
+               $1_cppflags=
+               $1_ldflags=
+       fi
+       AC_SUBST(HAVE_[]m4_toupper([$1]))
+       AC_SUBST($1_cppflags)
+       AC_SUBST($1_ldflags)
+])
 
 AC_PATH_PROG(UNAMEPATH, uname, no)
 if test "$UNAMEPATH" = "no"; then
 
 AC_PATH_PROG(UNAMEPATH, uname, no)
 if test "$UNAMEPATH" = "no"; then
@@ -69,41 +109,15 @@ fi
 if test "$clock_gettime_lib" = "rt"; then
        AC_SUBST(clock_gettime_ldflags, -lrt)
 fi
 if test "$clock_gettime_lib" = "rt"; then
        AC_SUBST(clock_gettime_ldflags, -lrt)
 fi
+
 ########################################################################### osl
 ########################################################################### osl
-have_osl=yes
-OLD_CPPFLAGS="$CPPFLAGS"
-OLD_LDFLAGS="$LDFLAGS"
-OLD_LIBS="$LIBS"
-AC_ARG_WITH(osl_headers, [AS_HELP_STRING(--with-osl-headers=dir,
-       [look for osl.h also in dir])])
-if test -n "$with_osl_headers"; then
-       osl_cppflags="-I$with_osl_headers"
-       CPPFLAGS="$CPPFLAGS $osl_cppflags"
-fi
-AC_ARG_WITH(osl_libs, [AS_HELP_STRING(--with-osl-libs=dir,
-       [look for libosl also in dir])])
-if test -n "$with_osl_libs"; then
-       osl_libs="-L$with_osl_libs"
-       LDFLAGS="$LDFLAGS $osl_libs"
-fi
-
-AC_CHECK_HEADER(osl.h, [], have_osl=no)
-AC_CHECK_LIB([osl], [osl_open_table], [], have_osl=no)
-if test "$have_osl" = "yes"; then
-       AC_SUBST(osl_cppflags)
-       osl_ldflags="$osl_libs -losl"
-       AC_SUBST(osl_ldflags)
-else
-       AC_MSG_WARN([libosl not found, can not build para_server.
-Download libosl at
-       http://people.tuebingen.mpg.de/maan/osl/
-or execute
-       git clone git://git.tuebingen.mpg.de/osl
-       ])
-fi
-CPPFLAGS="$OLD_CPPFLAGS"
-LDFLAGS="$OLD_LDFLAGS"
-LIBS="$OLD_LIBS"
+STASH_FLAGS
+LIB_ARG_WITH([osl], [-losl])
+HAVE_OSL=yes
+AC_CHECK_HEADER(osl.h, [], [HAVE_OSL=no])
+AC_CHECK_LIB([osl], [osl_open_table], [], [HAVE_OSL=no])
+LIB_SUBST_FLAGS(osl)
+UNSTASH_FLAGS
 ########################################################################### crypto
 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
        Force using crypto library "lib". This package requires either
 ########################################################################### crypto
 AC_ARG_ENABLE(cryptolib, [AS_HELP_STRING(--enable-cryptolib=lib, [
        Force using crypto library "lib". This package requires either
@@ -781,7 +795,7 @@ LDFLAGS="$OLD_LDFLAGS"
 LIBS="$OLD_LIBS"
 ######################################################################### server
 if test \( "$have_openssl" = "yes" -o "$have_gcrypt" = "yes" \) \
 LIBS="$OLD_LIBS"
 ######################################################################### server
 if test \( "$have_openssl" = "yes" -o "$have_gcrypt" = "yes" \) \
-       -a "$have_osl" = "yes" ; then
+       -a "$HAVE_OSL" = "yes" ; then
 
        build_server="yes"
        executables="$executables server"
 
        build_server="yes"
        executables="$executables server"