//===-- HLVM Configuration Template -----------------------------*- C++ -*-===//
//
//                      High Level Virtual Machine (HLVM)
//
// Copyright (C) 2006 Reid Spencer. All Rights Reserved.
//
// This software is free software; you can redistribute it and/or modify it 
// under the terms of the GNU Lesser General Public License as published by 
// the Free Software Foundation; either version 2.1 of the License, or (at 
// your option) any later version.
//
// This software is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for 
// more details.
//
// You should have received a copy of the GNU Lesser General Public License 
// along with this library in the file named LICENSE.txt; if not, write to the 
// Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
// MA 02110-1301 USA
//
//===----------------------------------------------------------------------===//
/// @file hlvm/Base/Configuration.h.in
/// @author Reid Spencer <rspencer@reidspencer.com> (original author)
/// @date 2006/05/04
/// @since 0.1.0
/// @brief Template header for capturing configuration data
//===----------------------------------------------------------------------===//

/// Expands to the time at which HLVM was configured in Universal Time
#define HLVM_ConfigTime    "@HLVM_ConfigTime@ UTC"
/// Expands to the copyright notice for HLVM.
#define HLVM_Copyright     "@HLVM_Copyright@"

/// Expands to the email address of the maintainer for HLVM.
#define HLVM_Maintainer    "@HLVM_Maintainer@"

/// Expands to the version number of HLVM.
#define HLVM_Version       "@HLVM_Version@"

/// Expands to a 0 or 1 value indicating if the "debug" option was used.
#define HLVM_debug         (@debug@)
/// Expands to a 0 or 1 value indicating if the "assertions" option was used.
#define HLVM_assertions    (@assertions@)
/// Expands to a 0 or 1 value indicating if the "optimize" option was used.
#define HLVM_optimize      (@optimize@)
/// Expands to a 0 or 1 value indicating if the "small" option was used.
#define HLVM_small         (@small@)
/// Expands to a 0 or 1 value indicating if the "profile" option was used.
#define HLVM_profile       (@profile@)
/// Expands to a 0 or 1 value indicating if the "inline" option was used.
#define HLVM_inline        (@inline@)
/// Expands to the directory path in which HLVM will be installed.
#define HLVM_prefix        "@prefix@"
/// Expands to the paths used for finding configured programs and libraries.
#define HLVM_confpath      "@confpath@"
/// Expands to the path of where the LLVM package was found
#define HLVM_with_llvm     "@with_llvm@"
/// Expands to the path of where APR package was found
#define HLVM_with_apr      "@with_apr@"
/// Expands to the path of where the APR Utils package was found
#define HLVM_with_apru     "@with_apru@"
/// Expands to the path of where the libXML2 package was found
#define HLVM_with_xml2     "@with_xml2@"
/// Expands to the path of where gperf program was found
#define HLVM_with_gperf    "@with_gperf@"
/// Expands to the path of where LLVM's llc tool was found
#define HLVM_with_llc      "@with_llc@"
/// Expands to the path of where LLVM's llvm-dis tool was found
#define HLVM_with_llvmdis  "@with_llvmdis@"
/// Expands to the path of where LLVM's llvm-as tool was found
#define HLVM_with_llvmas   "@with_llvmas@"
/// Expands to the path of where LLVM's llvm-gcc tool was found
#define HLVM_with_llvmgcc  "@with_llvmgcc@"
/// Expands to the path of where LLVM's llvm-gxx tool was found
#define HLVM_with_llvmgxx  "@with_llvmgxx@"
/// Expands to the path of where LLVM's llvm-ar tool was found
#define HLVM_with_llvmar   "@with_llvmar@"
/// Expands to the path of where LLVM's llvm2cpp tool was found
#define HLVM_with_llvm2cpp "@with_llvm2cpp@"
/// Expands to the path of where the DejaGnu runtest tool was found
#define HLVM_with_runtest  "@with_runtest@"
/// Expands to the path of where the Doxygen document generation tool was found
#define HLVM_with_doxygen  "@with_doxygen@"
/// Expands to the path of where the XSLT processor was found.
#define HLVM_with_xsltproc "@with_xsltproc@"
/// Expands to the shared object "current" number
#define HLVM_SO_CURRENT    "@HLVM_SO_CURRENT@"
/// Expands to the shared object "revision" number
#define HLVM_SO_REVISION   "@HLVM_SO_REVISION@"
/// Expands to the shared object "age" number
#define HLVM_SO_AGE        "@HLVM_SO_AGE@"
/// Expands to the shared object version triple
#define HLVM_SO_VERSION    "@HLVM_SO_VERSION@"
/// Expands to the build variant used to build this copy of HLVM.
#define HLVM_Variant       "@Variant@"
/// The absolute root of where this build's object files are located.
#define HLVM_AbsObjRoot    "@AbsObjRoot@"
/// The absolute root of where this build's source files are located.
#define HLVM_AbsSrcRoot    "@AbsSrcRoot@"
