# Public macros for the TeX Live (TL) tree. # Copyright (C) 1995 - 2009 Karl Berry # Copyright (C) 2009 Peter Breitenlohner # # This file is free software; the copyright holders # give unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 0 # KPSE_LIBS_PREPARE # ----------------- # Enforce inclusion of this file. AC_DEFUN([KPSE_LIBS_PREPARE], []) # _KPSE_INIT() # ------------ # Initialize infrastructure for libraries and programs in the TL tree. # If in the TL tree, define kpse_TL as relative path to the TL root. AC_DEFUN([_KPSE_INIT], [## $0: Initialize TL infrastructure m4_syscmd([test -f ../../texk/kpathsea/doc/kpathsea.texi])[]dnl m4_if(m4_sysval, [0], [m4_define([kpse_TL], [../../])])[]dnl m4_ifdef([kpse_TL], [kpse_BLD=`(cd "./kpse_TL()." && pwd)` kpse_SRC=`(cd "$srcdir/kpse_TL()." && pwd)` ])[]dnl ]) # _KPSE_INIT # KPSE_INIT() # ----------- # Initialize, if not automatically done so via KPSE_*_FLAGS AC_DEFUN([KPSE_INIT], [AC_REQUIRE([_KPSE_INIT])]) # _KPSE_USE_LIBTOOL() # ------------------- AC_DEFUN([_KPSE_USE_LIBTOOL], [## $0: Generate a libtool script for use in configure tests AC_PROVIDE_IFELSE([LT_INIT], , [m4_fatal([$0: requires libtool])])[]dnl LT_OUTPUT m4_append([AC_LANG(C)], [ac_link="./libtool --mode=link --tag=CC $ac_link" ])[]dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [m4_append([AC_LANG(C++)], [ac_link="./libtool --mode=link --tag=CXX $ac_link" ])])[]dnl AC_LANG(_AC_LANG)[]dnl ]) # _KPSE_USE_LIBTOOL # _KPSE_LIB_FLAGS(LIBDIR, LIBNAME, OPTIONS, # TL-INCLUDES, TL-LIBS, TL-EXTRA, # [REBUILD-SRC-DEPENDENCIES], # [REBUILD-BLD-DEPENDENCIES]) # ----------------------------------------------- # Provide the configure options '--with-system-LIBDIR' (if in the TL tree), # '--with-LIBDIR-includes', and '--with-LIBDIR-libdir'. # Options: # lt - this is a Libtool library # tree - only use library from the TL tree # # Set the make variables LIBDIR_INCLUDES and LIBDIR_LIBS to the CPPFLAGS and # LIBS required for the library in the directory libs/LIBDIR/ of the TL tree. # # If an installed (system) version of the library has been selected or is # implied, then execute KPSE_LIBDIR_SYSTEM_FLAGS to set the two variables. # # Otherwise, set LIBDIR_INCLUDES based on the value of TL_INCLUDES and # LIBDIR_LIBS based on the value of TL_LIBS; the optional shell code # TL-EXTRA may modifiy these values. # If OPTIONS specifies a Libtool library, then arrange that future configure # test use Libtool. # Furthermore, set LIBDIR_DEPEND and LIBDIR_RULE to values suitable as # dependency and (multiline) Make rule to rebuild the library (assuming that # '${top_srcdir}/../../' and '${top_builddir}/../../' point to the root of # the TL tree). AC_DEFUN([_KPSE_LIB_FLAGS], [AC_REQUIRE([_KPSE_INIT])[]dnl ## $0: Setup $1 (-l$2) flags m4_ifdef([kpse_TL], [_KPSE_LIB_FLAGS_TL($@)], [_KPSE_LIB_FLAGS_STANDALONE($@)])[]dnl AC_SUBST(AS_TR_CPP($1)[_INCLUDES])[]dnl AC_SUBST(AS_TR_CPP($1)[_LIBS])[]dnl AC_SUBST(AS_TR_CPP($1)[_DEPEND])[]dnl AC_SUBST(AS_TR_CPP($1)[_RULE])[]dnl m4_provide_if([AM_INIT_AUTOMAKE], [_AM_SUBST_NOTMAKE(AS_TR_CPP($1)[_RULE])])[]dnl ]) # _KPSE_LIB_FLAGS # _KPSE_LIB_FLAGS_TL(LIBDIR, LIBNAME, OPTIONS, # TL-INCLUDES, TL-LIBS, TL-EXTRA, # [REBUILD-SRC-DEPENDENCIES], # [REBUILD-BLD-DEPENDENCIES]) # -------------------------------------------------- # Internal subroutine for use of _KPSE_LIB_FLAGS inside the TL tree. m4_define([_KPSE_LIB_FLAGS_TL], [m4_if(m4_index([ $3 ], [ lt ]), [-1], , [AC_REQUIRE([_KPSE_USE_LIBTOOL])])[]dnl m4_if m4_if(m4_index([ $3 ], [ tree ]), [-1], [KPSE_]AS_TR_CPP([$1])[_OPTIONS([with-system])[]dnl if test "x$with_system_[]AS_TR_SH($1)" = xyes; then AS_TR_CPP([kpse-$1-system-flags])[]dnl else ])[]dnl m4_if AS_TR_CPP($1)[_INCLUDES=`echo '$4' | sed \ -e "s,SRC/,$kpse_SRC/,g" \ -e "s,BLD/,$kpse_BLD/,g"`] AS_TR_CPP($1)[_LIBS=`echo '$5' | sed \ -e "s,BLD/,$kpse_BLD/,g"` $6] m4_if([$1], [kpathsea], [AS_TR_CPP($1)[_DEPEND=`echo '$5' | sed \ -e 's,BLD/texk/,${top_builddir}/../,g'`] AS_TR_CPP($1)[_RULE='# Rebuild lib$2 $(]AS_TR_CPP($1)[_DEPEND):]m4_ifval([$7], [[ $7]])m4_ifval([$8], [[ $8 cd ${top_builddir}/../$1 && $(MAKE) $(AM_MAKEFLAGS) $8:]])[ cd ${top_builddir}/../$1 && $(MAKE) $(AM_MAKEFLAGS)']], [AS_TR_CPP($1)[_DEPEND=`echo '$5' | sed \ -e 's,BLD/,${top_builddir}/../../,g'`] AS_TR_CPP($1)[_RULE='# Rebuild lib$2 $(]AS_TR_CPP($1)[_DEPEND):]m4_ifval([$7], [[ $7]])m4_ifval([$8], [[ $8 cd ${top_builddir}/../../libs/$1 && $(MAKE) $(AM_MAKEFLAGS) $8:]])[ cd ${top_builddir}/../../libs/$1 && $(MAKE) $(AM_MAKEFLAGS)']]) m4_if(m4_index([ $3 ], [ tree ]), [-1], [fi ])[]dnl m4_if ]) # _KPSE_LIB_FLAGS_TL # _KPSE_LIB_FLAGS_STANDALONE(LIBDIR, LIBNAME, OPTIONS) # ---------------------------------------------------- # Internal subroutine for standalone use of _KPSE_LIB_FLAGS. m4_define([_KPSE_LIB_FLAGS_STANDALONE], [m4_if(m4_index([ $3 ], [ tree ]), [-1], [KPSE_]AS_TR_CPP([$1])[_OPTIONS([])]dnl [KPSE_]AS_TR_CPP([$1])[_SYSTEM_FLAGS], [m4_fatal([$0: not in TL tree])])[]dnl m4_if ]) # _KPSE_LIB_FLAGS_STANDALONE # _KPSE_LIB_OPTIONS(LIBDIR, [WITH-SYSTEM]) # ---------------------------------------- # Internal subroutine: default configure options for system library, # including '--with-system-LIBDIR' if WITH-SYSTEM is nonempty. m4_define([_KPSE_LIB_OPTIONS], [m4_ifval([$2], [AC_ARG_WITH([system-$1], AS_HELP_STRING([--with-system-$1], [use installed $1 headers and library]))])[]dnl AC_ARG_WITH([$1-includes], AS_HELP_STRING([--with-$1-includes=DIR], [$1 headers installed in DIR]))[]dnl AC_ARG_WITH([$1-libdir], AS_HELP_STRING([--with-$1-libdir=DIR], [$1 library installed in DIR]))[]dnl ]) # _KPSE_LIB_OPTIONS # _KPSE_LIB_FLAGS_SYSTEM(LIBDIR, LIBNAME) # --------------------------------------- # Internal subroutine: default flags for system library. m4_define([_KPSE_LIB_FLAGS_SYSTEM], [if test "x$with_[]AS_TR_SH($1)_includes" != x && test "x$with_[]AS_TR_SH($1)_includes" != xyes; then AS_TR_CPP($1)_INCLUDES="-I$with_[]AS_TR_SH($1)_includes" fi AS_TR_CPP($1)_LIBS="-l$2" if test "x$with_[]AS_TR_SH($1)_libdir" != x && test "x$with_[]AS_TR_SH($1)_libdir" != xyes; then AS_TR_CPP($1)_LIBS="-L$with_[]AS_TR_SH($1)_libdir $AS_TR_CPP($1)_LIBS" fi ]) # _KPSE_LIB_FLAGS_SYSTEM # KPSE_SAVE_FLAGS # --------------- # Save values of CPPFLAGS and LIBS. AC_DEFUN([KPSE_SAVE_FLAGS], [kpse_save_CPPFLAGS=$CPPFLAGS kpse_save_LIBS=$LIBS ]) # KPSE_SAVE_FLAGS # KPSE_RESTORE_FLAGS # ------------------ # Restore values of CPPFLAGS and LIBS. AC_DEFUN([KPSE_RESTORE_FLAGS], [AC_REQUIRE([KPSE_SAVE_FLAGS])[]dnl CPPFLAGS=$kpse_save_CPPFLAGS LIBS=$kpse_save_LIBS ]) # KPSE_RESTORE_FLAGS # KPSE_ADD_FLAGS(LIBDIR) # ---------------------- # Add flags for LIBDIR to values of CPPFLAGS and LIBS. AC_DEFUN([KPSE_ADD_FLAGS], [AC_REQUIRE([KPSE_SAVE_FLAGS])[]dnl CPPFLAGS="$CPPFLAGS $[]AS_TR_CPP($1)_INCLUDES" LIBS="$[]AS_TR_CPP($1)_LIBS $LIBS" ]) # KPSE_ADD_FLAGS # KPSE_COMMON(PACKAGE-NAME, [MORE-AUTOMAKE-OPTIONS]) # -------------------------------------------------- # Common Autoconf code for all programs using libkpathsea. # Originally written by Karl Berry as texk/kpathsea/common.ac. # # Initializtion of Automake and Libtool, some common tests. AC_DEFUN([KPSE_COMMON], [dnl Remember PACKAGE-NAME as Kpse_Package (for future messages) m4_define([Kpse_Package], [$1]) dnl AM_INIT_AUTOMAKE([foreign dist-bzip2]m4_ifval([$2], [ $2])) AM_MAINTAINER_MODE dnl LT_PREREQ([2.2.6]) LT_INIT dnl AC_SYS_LARGEFILE AC_FUNC_FSEEKO dnl AC_HEADER_DIRENT AC_HEADER_STDC AC_FUNC_CLOSEDIR_VOID AC_CHECK_HEADERS([assert.h float.h limits.h memory.h pwd.h stdlib.h \ string.h strings.h sys/param.h unistd.h]) dnl dnl Replacement functions that may be required on ancient broken system. AC_CHECK_FUNCS([putenv strcasecmp strtol strstr]) dnl dnl More common functions AC_CHECK_FUNCS([bcmp bcopy bzero getcwd getwd index memcmp memcpy rindex strchr strrchr]) dnl AC_C_CONST AC_C_INLINE dnl dnl Check whether struct stat provides high-res time. AC_CHECK_MEMBERS([struct stat.st_mtim]) dnl dnl Check whether prototypes work. AC_CACHE_CHECK([whether the compiler accepts prototypes], [kb_cv_c_prototypes], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[extern void foo(int i,...);]])], [kb_cv_c_prototypes=yes], [kb_cv_c_prototypes=no])]) if test "$kb_cv_c_prototypes" = yes; then AC_DEFINE([HAVE_PROTOTYPES], 1, [Define to 1 if your compiler understands prototypes.]) fi dnl dnl This is a GNU libc invention. AC_CACHE_CHECK([whether program_invocation_name is predefined], [kb_cv_var_program_inv_name], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[extern char *program_invocation_name; program_invocation_name = "love";]])], [kb_cv_var_program_inv_name=yes], [kb_cv_var_program_inv_name=no])]) if test "$kb_cv_var_program_inv_name" = yes; then AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], 1, [Define to 1 if you are using GNU libc or otherwise have global variables `program_invocation_name' and `program_invocation_short_name'.]) fi ]) # KPSE_COMMON # KPSE_MSG_ERROR(PACKAGE, ERROR, [EXIT-STATUS = 1]) # ------------------------------------------------- # Same as AC_MSG_ERROR(ERROR, EXIT-STATUS), except when building this # package PACKAGE has been disabled. # # The new (2009) TL build system requires all directories to be configured # for the benefit of 'dist*' Make targets. When building PACKAGE has been # disabled, configuring that package must not fail because building required # libraries from the TL tree has been disabled as a consequence. AC_DEFUN([KPSE_MSG_ERROR], [AS_IF([test "x$enable_build" = xno], [AC_MSG_WARN([building $1 has been disabled and would fail because $2])], [AC_MSG_ERROR([$2], m4_default([$3], 1))]) ]) # KPSE_MSG_ERROR # _KPSE_CHECK_PKG_CONFIG # ---------------------- # Check for pkg-config AC_DEFUN([_KPSE_CHECK_PKG_CONFIG], [AC_REQUIRE([AC_CANONICAL_HOST])[]dnl AC_CHECK_TOOL([PKG_CONFIG], [pkg-config], [false])[]dnl ]) # _KPSE_CHECK_PKG_CONFIG