# @configure_input@
#
# Common configuration rules for all of octave's Makefiles.
#
# John W. Eaton
# jwe@che.utexas.edu
# Department of Chemical Engineering
# The University of Texas at Austin

SHELL = /bin/sh

#### Start of system configuration section. ####

LEX = @LEX@
LFLAGS = @LFLAGS@
LEXLIB = @LEXLIB@

YACC = @YACC@
YFLAGS = -dv

RANLIB = @RANLIB@

RUNTEST = @RUNTEST@

DEFAULT_PAGER = @DEFAULT_PAGER@

WITH_DLD = @use_dld@

OCTAVE_LITE = @lite_kernel@

# Fortran to C translator and associated flags.

F2C = @F2C@
F2CFLAGS = @F2CFLAGS@

# Fortran compiler flags.

F77 = @F77@
FFLAGS = @FFLAGS@

# cc and associated flags.

# Clean up INCFLAGS a bit if we are not compiling in a separate
# directory.
ifeq ($(srcdir),.)
  TMP_IF_1 = -I. -I../src
else
  TMP_IF_1 = -I. -I$(srcdir) -I../src
endif
ifeq ($(TOPDIR),$(top_srcdir))
  TMP_IF_2 = -I$(TOPDIR) -I$(TOPDIR)/liboctave -I$(TOPDIR)/src
else
  TMP_IF_2 = -I$(TOPDIR) -I$(TOPDIR)/liboctave -I$(TOPDIR)/src \
	-I$(top_srcdir) -I$(top_srcdir)/liboctave -I$(top_srcdir)/src
endif
INCFLAGS = $(TMP_IF_1) $(TMP_IF_2)

LIBFLAGS = -L$(TOPDIR)

DEFS = @DEFS@
UGLY_DEFS = @UGLY_DEFS@

CC = @CC@
CFLAGS = @CFLAGS@
GCC_IEEE_FP_FLAG = @GCC_IEEE_FP_FLAG@
ALL_CFLAGS = $(INCFLAGS) $(DEFS) $(GCC_IEEE_FP_FLAG) $(CFLAGS)
UGLY_ALL_CFLAGS = $(INCFLAGS) $(UGLY_DEFS) $(GCC_IEEE_FP_FLAG) $(CFLAGS)
BUG_CFLAGS = $(DEFS) $(GCC_IEEE_FP_FLAG) $(CFLAGS)


CXX = @CXX@
CXXCPP = @CXXCPP@
CXXFLAGS = @CXXFLAGS@ -fno-for-scope
NO_IMPLICIT_TEMPLATES = @NO_IMPLICIT_TEMPLATES@
HOST_CXXFLAGS = @HOST_CXXFLAGS@
ALL_CXXFLAGS = $(INCFLAGS) $(DEFS) $(HOST_CXXFLAGS) \
	$(NO_IMPLICIT_TEMPLATES) $(GCC_IEEE_FP_FLAG) $(CXXFLAGS)
UGLY_ALL_CXXFLAGS = $(INCFLAGS) $(UGLY_DEFS) $(HOST_CXXFLAGS) \
	$(NO_IMPLICIT_TEMPLATES) $(GCC_IEEE_FP_FLAG) $(CXXFLAGS)
BUG_CXXFLAGS = $(DEFS) $(HOST_CXXFLAGS) $(NO_IMPLICIT_TEMPLATES) \
	$(GCC_IEEE_FP_FLAG) $(CXXFLAGS)

CPPFLAGS = @CPPFLAGS@

LDFLAGS = @LDFLAGS@
LD_STATIC_FLAG = @LD_STATIC_FLAG@
ALL_LDFLAGS = $(LIBFLAGS) $(GCC_IEEE_FP_FLAG) $(LD_STATIC_FLAG) $(LDFLAGS)

FLIBS = @FLIBS@
FLIB_LIST = @FLIB_LIST@
FLIB_PATH = @FLIB_PATH@

CXXLIBS = @CXXLIBS@
CXXLIB_LIST = @CXXLIB_LIST@
CXXLIB_PATH = @CXXLIB_PATH@


# A shell command to extract the version number from version.h.
getversion = sed -e '/VERSION/!d' -e 's/.*"\(.*\)".*$$/\1/' -e q

# The version number.  TOPDIR is something like `.' or `..' or `../..'
# and gets us back up to the top level of the source tree.
version := $(shell $(getversion) $(srcdir)/$(TOPDIR)/src/version.h)

# ==================== Where To Install Things ====================

# The default location for installation.  Everything is placed in
# subdirectories of this directory.  The default values for many of
# the variables below are expressed in terms of this one, so you may
# not need to change them.  This defaults to /usr/local.
prefix = @prefix@

# Like `prefix', but used for architecture-specific files.
exec_prefix = @exec_prefix@

# Where to install Octave and other binaries that people will want to
# run directly.
bindir = @bindir@

# Where to install architecture-independent data files.  ${fcnfiledir}
# and ${localfcnfiledir} are subdirectories of this.
datadir = @datadir@

# Where to install and expect libraries like libcruft.a, liboctave.a,
# and libreadline.a, executable files to be run by Octave rather than
# directly by users, and other architecture-dependent data.
# ${archlibdir} is a subdirectory of this. 
libdir = @libdir@

# Where to install Octave's include files.  The default is
# ${prefix}/include/octave
includedir = @includedir@

# Where to install Octave's man pages, and what extension they should
# have.  The default is ${prefix}/man/man1
mandir = @mandir@
manext = 1

# Where to install and expect the info files describing Octave..
infodir = @infodir@

# ==================== Octave-specific directories ====================

# These variables hold the values Octave will actually use.  They are
# based on the values of the standard Make variables above.

# Where to install the function file distributed with
# Octave.  This includes the Octave version, so that the
# function files for different versions of Octave will install
# themselves in separate directories.
fcnfiledir = @fcnfiledir@

# Directories Octave should search for function files specific
# to this site (i.e. customizations), before consulting
# ${fcnfiledir}.  This should be a colon-separated list of
# directories.
localfcnfiledir = @localfcnfiledir@
localfcnfilepath = @localfcnfilepath@

# Where to put executables to be run by Octave rather than
# the user.  This path usually includes the Octave version
# and configuration name, so that multiple configurations
# for multiple versions of Octave may be installed at once.
archlibdir = @archlibdir@

# Where to put object files that will by dynamically loaded.
# This path usually includes the Octave version and configuration
# name, so that multiple configurations for multiple versions of
# Octave may be installed at once. 
octfiledir = @octfiledir@

# Directories Octave should search for object files that will be
# dynamically loaded and that are specific to this site
# (i.e. customizations), before consulting ${octfiledir}.  This should
# be a colon-separated list of directories.
localoctfiledir = @localoctfiledir@
localoctfilepath = @localoctfilepath@

# Where Octave will search to find its function files.  Before
# changing this, check to see if your purpose wouldn't
# better be served by changing localfcnfilepath.  This
# should be a colon-separated list of directories.
fcnfilepath = @fcnfilepath@

# Where Octave will search to find image files.es.
imagedir = @imagedir@
imagepath = @imagepath@

# The type of computer we are running on.
target_host_type = @target_host_type@

# The following pattern rules and the substitution functions require
# GNU make.  If you don't have it, get it!

# Rules for making C source from Fortran source (if necessary).
#
# If we are using f2c there will be a command for the `%.c : %.f'
# pattern and no command for the `%.o : %.f' pattern, so that make
# will not invoke the fortran compiler by mistake.
#
# If we are not using f2c, it should be ok to have an empty rule for
# the pattern `%.c : %.f', but we don't want to replace make's default
# rule for making object from Fortran source files, so there should be
# no pattern or command for that.

%.c : %.f
@DOT_C_FROM_DOT_F_CMD@

@DOT_O_FROM_DOT_F_PAT@

# How to make .o files from .c files:

.c.o:
	$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<

.cc.o:
	$(CXX) -c $(CPPFLAGS) $(ALL_CXXFLAGS) $<

# Here is a rule for generating dependencies for .cc files:

%.d: %.cc
	@echo making $@ from $<
	@rm -f $@
	@-if test "$(srcdir)" = "." ; then \
	  $(CXX) -MM $(CPPFLAGS) $(ALL_CXXFLAGS) $< | \
	    sed -e 's/$*\.o/& $@/g' > $@.tmp ; \
	else \
	  $(CXX) -MM $(CPPFLAGS) $(ALL_CXXFLAGS) $< | \
	    sed -e 's/$*\.o/& $@/g' -e 's,$(srcdir)/,,g' > $@.tmp ; \
	fi
	@mv $@.tmp $@

# And one for .c files.too:

%.d: %.c
	@echo making $@ from $<
	@rm -f $@
	@-if test "$(srcdir)" = "." ; then \
	  $(CC) -MM $(CPPFLAGS) $(ALL_CFLAGS) $< | \
	    sed -e 's/$*\.o/& $@/g' > $@.tmp ; \
	else \
	  $(CC) -MM $(CPPFLAGS) $(ALL_CFLAGS) $< | \
	    sed -e 's/$*\.o/& $@/g' -e 's,$(srcdir)/,,g' > $@.tmp ; \
	fi
	@mv $@.tmp $@
