#===-- Makefile.config - Local configuration for LLVM ------*- Makefile -*--===#
#
#                     The LLVM Compiler Infrastructure
#
# This file was developed by the LLVM research group and is distributed under
# the University of Illinois Open Source License. See LICENSE.TXT for details.
# 
#===------------------------------------------------------------------------===#
#
# This file is included by Makefile.common.  It defines paths and other
# values specific to a particular installation of LLVM.
#
#===------------------------------------------------------------------------===#

# Define LLVM specific info and directories based on the autoconf variables
LLVMPackageName   := @PACKAGE_NAME@
LLVMVersion       := @PACKAGE_VERSION@
LLVM_CONFIGTIME   := @LLVM_CONFIGTIME@

###########################################################################
# Directory Configuration
#	This section of the Makefile determines what is where.  To be
#	specific, there are several locations that need to be defined:
#
#	o LLVM_SRC_ROOT  : The root directory of the LLVM source code.
#	o LLVM_OBJ_ROOT  : The root directory containing the built LLVM code.
#
#	o PROJ_SRC_DIR  : The directory containing the code to build.
#	o PROJ_SRC_ROOT : The root directory of the code to build.
#
#	o PROJ_OBJ_DIR  : The directory in which compiled code will be placed.
#	o PROJ_OBJ_ROOT : The root directory in which compiled code is placed.
#
###########################################################################

# Set the project name to LLVM if its not defined
ifndef PROJECT_NAME
PROJECT_NAME := LLVM
endif

PROJ_OBJ_DIR  := $(shell pwd)
PROJ_OBJ_ROOT := $(subst //,/,$(shell cd $(PROJ_OBJ_DIR)/$(LEVEL); pwd))

ifeq ($(PROJECT_NAME),LLVM)
LLVM_SRC_ROOT   := @abs_top_srcdir@
LLVM_OBJ_ROOT   := @abs_top_builddir@
PROJ_SRC_ROOT   := $(LLVM_SRC_ROOT)
PROJ_SRC_DIR    := $(subst //,/,$(LLVM_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)))
PROJ_prefix     := @prefix@
PROJ_bindir     := @prefix@/bin
PROJ_libdir     := @prefix@/lib
PROJ_datadir    := @prefix@/share
PROJ_docsdir    := @prefix@/docs/llvm
PROJ_etcdir     := @prefix@/etc/llvm
PROJ_includedir := @prefix@/include
PROJ_infodir    := @prefix@/info
PROJ_mandir     := @prefix@/man
PROJ_VERSION    := $(LLVMVersion)
else
ifndef PROJ_SRC_ROOT
$(error Projects must define PROJ_SRC_ROOT)
endif
ifndef PROJ_OBJ_ROOT
$(error Projects must define PROJ_OBJ_ROOT)
endif
ifndef PROJ_INSTALL_ROOT
$(error Projects must define PROJ_INSTALL_ROOT)
endif
ifndef LLVM_SRC_ROOT
$(error Projects must define LLVM_SRC_ROOT)
endif
ifndef LLVM_OBJ_ROOT
$(error Projects must define LLVM_OBJ_ROOT)
endif
PROJ_SRC_DIR := $(subst //,/,$(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)))
PROJ_prefix     := $(PROJ_INSTALL_ROOT)
PROJ_bindir     := $(PROJ_INSTALL_ROOT)/bin
PROJ_libdir     := $(PROJ_INSTALL_ROOT)/lib
PROJ_datadir    := $(PROJ_INSTALL_ROOT)/share
PROJ_docsdir    := $(PROJ_INSTALL_ROOT)/docs/llvm
PROJ_etcdir     := $(PROJ_INSTALL_ROOT)/etc/llvm
PROJ_includedir := $(PROJ_INSTALL_ROOT)/include
PROJ_infodir    := $(PROJ_INSTALL_ROOT)/info
PROJ_mandir     := $(PROJ_INSTALL_ROOT)/man
ifndef PROJ_VERSION
PROJ_VERSION := 1.0
endif
endif

# Determine if we're on a unix type operating system
LLVM_ON_UNIX:=@LLVM_ON_UNIX@
LLVM_ON_WIN32:=@LLVM_ON_WIN32@

# Target operating system for which LLVM will be compiled.
OS=@OS@

# Target hardware architecture
ARCH=@ARCH@

# Target triple (cpu-vendor-os) for which we should generate code
TARGET_TRIPLE=@target@

# Targets that we should build
TARGETS_TO_BUILD=@TARGETS_TO_BUILD@

# Endian-ness of the target
ENDIAN=@ENDIAN@

# Path to the C++ compiler to use.  This is an optional setting, which defaults
# to whatever your gmake defaults to.
CXX = @CXX@

# Path to the CC binary, which use used by testcases for native builds.
CC := @CC@

# Linker flags.
LDFLAGS+=@LDFLAGS@

# Path to the library archiver program.
AR_PATH = @AR@

# The pathnames of the programs we require to build
BISON      := @BISON@
CMP        := @CMP@
CP         := @CP@
DATE       := @DATE@
FIND       := @FIND@
FLEX       := @LEX@
GREP       := @GREP@
INSTALL    := @INSTALL@
MKDIR      := $(LLVM_SRC_ROOT)/autoconf/mkinstalldirs
MV         := @MV@
RANLIB     := @RANLIB@
RM         := @RM@
SED        := @SED@
TAR        := @TAR@
YACC       := @YACC@

# Paths to miscellaneous programs we hope are present but might not be
PERL       := @PERL@ 
BZIP2      := @BZIP2@
DOT        := @DOT@
DOXYGEN    := @DOXYGEN@
ETAGS      := @ETAGS@
ETAGSFLAGS := @ETAGSFLAGS@
GROFF      := @GROFF@
GZIP       := @GZIP@
POD2HTML   := @POD2HTML@
POD2MAN    := @POD2MAN@
RUNTEST    := @RUNTEST@
TCLSH      := @TCLSH@
ZIP        := @ZIP@

HAVE_PERL  := @HAVE_PERL@

LIBS       := @LIBS@

# Path to location for LLVM C/C++ front-end. You can modify this if you
# want to override the value set by configure.
LLVMGCCDIR := @LLVMGCCDIR@

# Determine the target for which LLVM should generate code.
LLVMGCCARCH := @target@/3.4-llvm

# Full pathnames of LLVM C/C++ front-end 'cc1' and 'cc1plus' binaries:
LLVMGCC  := @LLVMGCC@
LLVMGXX  := @LLVMGXX@
LLVMCC1  := @LLVMCC1@
LLVMCC1PLUS := @LLVMCC1PLUS@

# Path to directory where object files should be stored during a build.
# Set OBJ_ROOT to "." if you do not want to use a separate place for
# object files.
OBJ_ROOT := .

# These are options that can either be enabled here, or can be enabled on the
# make command line (ie, make ENABLE_PROFILING=1):

# When ENABLE_OPTIMIZED is enabled, Release builds of all of the LLVM code are
# turned on, and Debug builds are turned off.
#ENABLE_OPTIMIZED = 1
@ENABLE_OPTIMIZED@

# When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug
# symbols.
#DEBUG_RUNTIME = 1
@DEBUG_RUNTIME@

# When ENABLE_PROFILING is enabled, the llvm source base is built with profile
# information to allow gprof to be used to get execution frequencies.
#ENABLE_PROFILING = 1

# When ENABLE_DOXYGEN is enabled, the doxygen documentation will be built
ENABLE_DOXYGEN = @ENABLE_DOXYGEN@

# This option tells the Makefiles to produce verbose output.
# It essentially prints the commands that make is executing
#VERBOSE = 1

# Enable JIT for this platform
TARGET_HAS_JIT = @TARGET_HAS_JIT@

# Shared library extension for this platform.
SHLIBEXT = @SHLIBEXT@

# Executable file extension for this platform.
EXEEXT = @EXEEXT@

# Things we just assume are "there"
ECHO := echo
