| dnl === configure.ac --------------------------------------------------------=== |
| dnl LLVM Sample Module Configuration |
| dnl |
| dnl This file was developed by Reid Spencer and is distributed under the |
| dnl University of Illinois Open Source License. See LICENSE.TXT for details. |
| dnl |
| dnl===-----------------------------------------------------------------------=== |
| dnl This is the sample module configuration script. It is processed by the |
| dnl autoconf program to produce a script named configure. This script contains |
| dnl the configuration checks that the sample module needs in order to support |
| dnl multiple platforms. |
| dnl |
| dnl This file is composed of 10 sections per the recommended organization of |
| dnl autoconf input defined in the autoconf documentation. As this file evolves, |
| dnl please keep the various types of checks within their sections. The sections |
| dnl are as follows: |
| dnl |
| dnl SECTION 1: Initialization & Setup |
| dnl SECTION 2: Architecture, target, and host checks |
| dnl SECTION 3: Command line arguments for the configure script. |
| dnl SECTION 4: Check for programs we need and that they are the right version |
| dnl SECTION 5: Check for libraries |
| dnl SECTION 6: Check for header files |
| dnl SECTION 7: Check for types and structures |
| dnl SECTION 8: Check for specific functions needed |
| dnl SECTION 9: Additional checks, variables, etc. |
| dnl SECTION 10: Specify the output files and generate it |
| dnl |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 1: Initialization & Setup |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| dnl Initialize autoconf and define the package name, version number and |
| dnl email address for reporting bugs. |
| AC_INIT([[LLVM Sample Module]],[[1.0]],[bugs@yourdomain.tld],[sample]) |
| THIS_IS_LLVM_MODULE([sample]) |
| |
| 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/sample/sample.c]) |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 2: Architecture, target, and host checks |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. You don't need AC_CANONICAL_TARGET here, its already been done. |
| dnl 2. Most everything you'll need is already in the support/Makefile.config |
| dnl which should be included into your module's Makefile.config |
| dnl 3. I.e. probably this section is empty for your module. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 3: Command line arguments for the configure script. |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. This is where you can put LLVM_WITH_FEATURE, LLVM_WITH_LEVEL, |
| dnl AC_ARG_WITH AC_ARG_ENABLE macros to define the --with-* and --enable-* |
| dnl options. |
| dnl For example: |
| dnl LLVM_WITH_FEATURE(feature-name,"Help text for feature-name",0) |
| dnl AC_ARG_WITH(my_thing, AS_HELP_STRING([--with-my-thing, |
| dnl [Specify where my-thing is]),,withval=default) |
| dnl case "$withval" in |
| dnl default) MY_THING=/default/path/to/my/thing ;; |
| dnl *) MY_THING=$withval ;; |
| dnl esac |
| dnl AC_SUBST(MY_THING,$MY_THING) |
| dnl 2. Also put anything else here that is general or needed below. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 4: Check for programs we need and that they are the right version |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. Most of the typical programs are already checked for by support and |
| dnl made available through the makefile. Its more efficient to use those |
| dnl than re-check them in the module, but this isn't a hard and fast rule. |
| dnl 2. This is where you use AC_PROG_* and AC_PATH_PROG macros |
| dnl 3. You should also check sanity and version for these programs in this |
| dnl section. |
| dnl 4. Its useful to default the programs to "echo ProgName" so that if they |
| dnl get used in a makefile rule, they simply print out the command line |
| dnl that was supposed to be run. |
| dnl 5. If tools have dependencies then check their compatibility here too. |
| dnl 6. If you can use a set of alternate tools, pick one here and configure |
| dnl for it. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 5: Check for libraries |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. This section is for AC_CHECK_LIB and AC_SEARCH_LIBS macros. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 6: Check for header files |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. This section is for AC_HEADER_* and AC_CHECK_HEADERS macros. |
| dnl 2. Note that support/autoconf checks for many of the standard operating |
| dnl system headers and provides a lib/System to provide a consistent |
| dnl interface to the operating system. Chances are you don't need any |
| dnl but could instead include support/include/llvm/Config/config.h |
| dnl 3. Also, use the C++ variant (e.g. <cstdio>) as this has some platform |
| dnl neutrality benefits as well. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 7: Check for types and structures |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. Most checks for integer type sizes are done by support module. |
| dnl 2. See the support/include/llvm/Support/DataTypes.h file |
| dnl |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 8: Check for specific functions needed |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. This section is for AC_CHECK_FUNCS macros and similar ones that |
| dnl check for the availability of specific functions. |
| dnl 2. Again, many of the operating system specific functions are already |
| dnl handled by the lib/System library in the support module. Use its |
| dnl interface (support/include/llvm/System/*.h) instead of relying on |
| dnl system-specific behavior. If it lacks something, add an abstraction. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 9: Additional checks, variables, etc. |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES_FOR_MODULES: |
| dnl 1. This is for anything else that doesn't fit any of the other sections. |
| dnl 2. If you need to compute substitution variables, this is the place to |
| dnl do it. |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 10: Specify the output files and generate it |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl NOTES FOR MODULES: |
| dnl 1. This is *only* for AC_CONFIG_FILES, AC_CONFIG_HEADER, AC_CONFIG_LINKS, |
| dnl AC_CONFIG_COMMANDS, CONFIG_LLVM_MAKEFILE, and AC_OUTPUT macros. |
| dnl 2. Many of the configured header files you'll need are already in the |
| dnl support/include/llvm/Config/config.h and other support headers. No |
| dnl need to do them again in your module. |
| dnl 3. You don't need to do CONFIG_LLVM_MAKEFILE on your Makefile.config or |
| dnl Makefile.common, it was done by THIS_IS_LLVM_MODULE |
| dnl 4. The only makefiles that need to be specified are the ones that are in |
| dnl the first level directories below the module's directory (e.g. lib, |
| dnl tools, etc.) The makefile system knows how to propagate makefiles to |
| dnl your build directory at lower levels. |
| dnl 5. The AC_OUTPUT macro *must* be last. Its the one that does everything |
| |
| dnl Do special configuration of Makefiles |
| CONFIG_LLVM_MAKEFILE(Makefile) |
| CONFIG_LLVM_MAKEFILE(lib/Makefile) |
| CONFIG_LLVM_MAKEFILE(lib/sample/Makefile) |
| CONFIG_LLVM_MAKEFILE(tools/Makefile) |
| CONFIG_LLVM_MAKEFILE(tools/sample/Makefile) |
| |
| dnl Finally, crank out the output |
| AC_OUTPUT |