From f189411b9986564c2652ef87e54189e5fa0d5d11 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 20 Apr 2014 04:33:11 +0000 Subject: [PATCH] build: Reduce redundancy in configure.ac, convert osl detection. 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 | 20 ++++++++----- configure.ac | 84 ++++++++++++++++++++++++++++++---------------------- 2 files changed, 62 insertions(+), 42 deletions(-) diff --git a/INSTALL b/INSTALL index 4a814dc1..4cc4b1fe 100644 --- a/INSTALL +++ b/INSTALL @@ -1,15 +1,21 @@ 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 -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 diff --git a/configure.ac b/configure.ac index 79b41a3a..3768da57 100644 --- a/configure.ac +++ b/configure.ac @@ -24,6 +24,46 @@ AC_DEFUN([objlist_to_errlist],[ \ 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 @@ -69,41 +109,15 @@ fi if test "$clock_gettime_lib" = "rt"; then AC_SUBST(clock_gettime_ldflags, -lrt) fi + ########################################################################### 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 @@ -781,7 +795,7 @@ LDFLAGS="$OLD_LDFLAGS" 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" -- 2.39.2