[llvm-commits] [support] r40045 - in /support/trunk/autoconf: configure.ac m4/module_support.m4
Reid Spencer
rspencer at reidspencer.com
Thu Jul 19 01:31:54 PDT 2007
Author: reid
Date: Thu Jul 19 03:31:53 2007
New Revision: 40045
URL: http://llvm.org/viewvc/llvm-project?rev=40045&view=rev
Log:
Move stuff out of configure.ac that ought to be in module_support.m4 so that
other modules can have the benefit too.
Modified:
support/trunk/autoconf/configure.ac
support/trunk/autoconf/m4/module_support.m4
Modified: support/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/support/trunk/autoconf/configure.ac?rev=40045&r1=40044&r2=40045&view=diff
==============================================================================
--- support/trunk/autoconf/configure.ac (original)
+++ support/trunk/autoconf/configure.ac Thu Jul 19 03:31:53 2007
@@ -33,26 +33,13 @@
dnl===-----------------------------------------------------------------------===
dnl Initialize autoconf and define the package name, version number and
dnl email address for reporting bugs.
-AC_INIT([[Support Module]],[[2.1svn]],[http://llvm.org/bugs],[llvm-support])
+AC_INIT([[Support Module]],[[2.1svn]],[http://llvm.org/bugs],[support])
THIS_IS_LLVM_MODULE([support])
-dnl Provide a copyright substitution and ensure the copyright notice is included
-dnl in the output of --version option of the generated configure script.
-AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign."])
-AC_COPYRIGHT([Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign.])
-
-dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we
-dnl use some autoconf macros only available in 2.59.
-AC_PREREQ(2.60)
-
dnl Verify that the source directory is valid. This makes sure that we are
dnl configuring LLVM and not some other package (it validates --srcdir argument)
AC_CONFIG_SRCDIR([lib/System/Path.cpp])
-dnl Place all of the extra autoconf files into the config subdirectory. Tell
-dnl various tools where the m4 autoconf macros are.
-AC_CONFIG_AUX_DIR([autoconf])
-
dnl Quit if the source directory has already been configured.
dnl NOTE: This relies upon undocumented autoconf behavior.
if test ${srcdir} != "." ; then
@@ -729,7 +716,6 @@
eval LLVM_INCLUDEDIR="${prefix}/include";
eval LLVM_INFODIR="${prefix}/info";
eval LLVM_MANDIR="${prefix}/man";
-LLVM_CONFIGTIME=`date`
AC_SUBST(LLVM_PREFIX)
AC_SUBST(LLVM_BINDIR)
AC_SUBST(LLVM_LIBDIR)
@@ -739,7 +725,6 @@
AC_SUBST(LLVM_INCLUDEDIR)
AC_SUBST(LLVM_INFODIR)
AC_SUBST(LLVM_MANDIR)
-AC_SUBST(LLVM_CONFIGTIME)
# Place the various directores into the config.h file as #defines so that we
# can know about the installation paths within LLVM.
Modified: support/trunk/autoconf/m4/module_support.m4
URL: http://llvm.org/viewvc/llvm-project/support/trunk/autoconf/m4/module_support.m4?rev=40045&r1=40044&r2=40045&view=diff
==============================================================================
--- support/trunk/autoconf/m4/module_support.m4 (original)
+++ support/trunk/autoconf/m4/module_support.m4 Thu Jul 19 03:31:53 2007
@@ -1,41 +1,112 @@
-dnl
-dnl Provide the arguments and other processing needed for an LLVM module
-dnl
-dnl This script must be used after AC_INIT. It sets up various LLVM_MODULE
-dnl variables, extracts the module's dependencies, validates the directory
-dnl is correct, etc.
+#
+# Provide the arguments and other processing needed for an LLVM module
+#
+# This script must be used after AC_INIT. It checks various axioms, sets up
+# various LLVM_MODULE variables, extracts the module's dependencies, validates
+# the directory is correct, etc.
AC_DEFUN([THIS_IS_LLVM_MODULE],[
+
+dnl Get the llvm-top directory which is just any directory that contains all
+dnl the modules and doesn't have to be an llvm-top checked out thing. This is
+dnl important because its how we find all the modules. To support building a
+dnl module in an obtuse place (other than llvm-top) we provide the
+dnl with-llvm-top=/path/to/llvm/top option to allow the configure script to
+dnl be told where it is. However, the default ".." usually just works.
+ LLVM_TOP=`cd .. ; pwd`
+ AC_ARG_WITH(llvm-top,
+ AS_HELP_STRING([--with-llvm-top],
+ [Specify where the llvm-top directory is]),,withval=default)
+ case "$withval" in
+ default) ;; dnl nothing to do, LLVM_TOP already defaulted
+ *) LLVM_TOP=$withval ;;
+ esac
+ if test ! -d "$LLVM_TOP" ; then
+ AC_MSG_ERROR("The LLVM_TOP directory ($LLVM_TOP) is not a directory!")
+ fi
+ AC_SUBST(LLVM_TOP,[$LLVM_TOP])
+
+dnl Make sure we can find the support/autoconf dir .. everything depends on it!
+ if test ! -d "$LLVM_TOP/support/autoconf" ; then
+ AC_MSG_ERROR("Your llvm-top directory needs to have the support module checked out")
+ fi
+
+dnl We have a standardized auxilliary directory in LLVM so that we only need
+dnl one copy of the various tools found there instead of copying them to all
+dnl the modules as well. The support/autoconf directory is specified here as
+dnl the auxilliary directory which must contain install-sh at least.
+ AC_CONFIG_AUX_DIR($LLVM_TOP/support/autoconf)
+
+dnl This stuff is based on autoconf 2.60, enforce it.
+ AC_PREREQ(2.60)
+
+dnl Get the copyright in a substitution variable
+ AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign."])
+
+dnl Declare the copyright to autoconf
+ AC_COPYRIGHT([Copyright (c) 2003-2007 University of Illinois at Urbana-Champaign.])
+
+dnl Set up the LLVM_MODULE_NAME variables. The NAME comes from the argument to
+dnl this macro and should be the name of the module's directory. We verify that.
+dnl This is necessary because we expect modules to be in a directory that is
+dnl the official name of the modules. If they are not the construction of paths
+dnl can go wrong.
LLVM_MODULE_NAME="$1"
+ cwd=`pwd`
+ if test `basename $cwd` != "$1" ; then
+ AC_MSG_ERROR([Module $1 is checked out to $cwd which is not allowed])
+ fi
+ AC_SUBST(LLVM_MODULE_NAME,"$1")
+
+dnl Set up other LLVM_MODULE_* variables that are copies of the values provided
+dnl to the AC_INIT macro.
LLVM_MODULE_FULLNAME="AC_PACKAGE_NAME"
LLVM_MODULE_TARNAME="AC_PACKAGE_TARNAME"
LLVM_MODULE_VERSION="AC_PACKAGE_VERSION"
LLVM_MODULE_BUGREPORT="AC_PACKAGE_BUGREPORT"
- LLVM_TOP=`cd .. ; pwd`
+ AC_SUBST(LLVM_MODULE_FULLNAME,"AC_PACKAGE_NAME")
+ AC_SUBST(LLVM_MODULE_TARNAME,"AC_PACKAGE_TARNAME")
+ AC_SUBST(LLVM_MODULE_VERSION,"AC_PACKAGE_VERSION")
+ AC_SUBST(LLVM_MODULE_BUGREPORT,"AC_PACKAGE_BUGREPORT")
+
+dnl We need to know which modules depend on this one. Fortunately, every module
+dnl is required to document that in the ModuleInfo.txt file so we just extract
+dnl it.
LLVM_MODULE_DEPENDS_ON=`grep DepModules: ModuleInfo.txt | \
sed 's/DepModules: *//'`
+ for x in $LLVM_MODULE_DEPENDS_ON ; do
+ AC_MSG_NOTICE([$1 depends on $x])
+ dnl we should probably validate the module names, but that would require
+ dnl several round trips via subversion .. slowness.
+ done
+ AC_SUBST(LLVM_MODULE_DEPENDS_ON,"$LLVM_MODULE_DEPENDS_ON")
AC_CONFIG_SRCDIR([$2])
+
+dnl The module can have a Makefile.config.in or a Makefile.common.in. In fact,
+dnl it must have one of the two. Set these up to be configured and check thatw
+dnl we have at least one.
+ has_configured_makefile=0
if test -r Makefile.config.in ; then
AC_CONFIG_FILES([Makefile.config])
+ has_configured_makefile=1
fi
if test -r Makefile.common.in ; then
AC_CONFIG_FILES([Makefile.common])
+ has_configured_makefile=1
fi
- AC_SUBST(LLVM_TOP,[$LLVM_TOP])
- AC_SUBST(LLVM_MODULE_NAME,"$1")
- AC_SUBST(LLVM_MODULE_FULLNAME,"AC_PACKAGE_NAME")
- AC_SUBST(LLVM_MODULE_TARNAME,"AC_PACKAGE_TARNAME")
- AC_SUBST(LLVM_MODULE_VERSION,"AC_PACKAGE_VERSION")
- AC_SUBST(LLVM_MODULE_BUGREPORT,"AC_PACKAGE_BUGREPORT")
- AC_SUBST(LLVM_MODULE_DEPENDS_ON,"$LLVM_MODULE_DEPENDS_ON")
- AC_ARG_WITH([llvmsrc],
- AS_HELP_STRING([--with-llvmsrc],[Location of LLVM Source Code]),
- [llvm_src="$withval"],[llvm_src="]$1["])
- AC_SUBST(LLVM_SRC,$llvm_src)
- AC_ARG_WITH([llvmobj],
- AS_HELP_STRING([--with-llvmobj],[Location of LLVM Object Code]),
- [llvm_obj="$withval"],[llvm_obj="]$2["])
- AC_SUBST(LLVM_OBJ,$llvm_obj)
+ if test "$has_configured_makefile" -eq 0 ; then
+ AC_MSG_ERROR("Your module is lacking a Makefile.common.in or Makefile.config.in file to hold configured variables")
+ fi
+
+dnl This is a quirky thing. This is basically getting the LLVM_TOP variable
+dnl into the start of the config.status script which otherwise contains nothing
+dnl from the configure script except things like srcdir and prefix. We need
+dnl this for the CONFIG_LLVM_MAKEFILE which has to find the mkinstalldirs
+dnl program in the support module's autoconf directory.
AC_CONFIG_COMMANDS([setup],,[LLVM_TOP="${LLVM_TOP}"])
+
+dnl Get the approximate time of configuration so it can be substituted
+ LLVM_CONFIGTIME=`date`
+ AC_SUBST(LLVM_CONFIGTIME)
])
dnl
More information about the llvm-commits
mailing list