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 4a814dc15833de9ff5fc014d1dae22edc1deb866..4cc4b1feb5c882f069f09f9151df8a693336b15f 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 79b41a3addcf36f0066838c68edfea2b8de0b7c9..3768da57ddf2d8362ea64f8a1d9b4a41b03c2584 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"