#
# Makefile for octave's src directory
#
# John W. Eaton
# jwe@bevo.che.wisc.edu
# University of Wisconsin-Madison
# Department of Chemical Engineering

TARGETS = octave-bug mkoctfile libcruft liboctave kpathsea dlfcn \
	readline src scripts doc check octave.info INSTALL.OCTAVE BUGS \
	install uninstall tags TAGS dist conf-dist snapshot snapshot-version

NO_DEP_TARGETS = clean mostlyclean distclean maintainer-clean

all: header-msg config-check
	$(MAKE) -f octMakefile all

$(TARGETS): FORCE
	$(MAKE) -f octMakefile $@

$(NO_DEP_TARGETS): FORCE
	$(MAKE) -f octMakefile omit_deps=true $@

install-strip:
	$(MAKE) -f octMakefile INSTALL_PROGRAM='${INSTALL} -s' install

binary-dist: FORCE
	@if test -f configure && test -f octMakefile.in ; then \
	  ./configure --enable-shared --enable-lite-kernel ; \
	else \
	  echo "" ; \
	  echo "*** You must run make binary-dist in the source directory." ; \
	  echo "" ; \
	  exit 1 ; \
	fi
	$(MAKE) -f octMakefile CFLAGS=-O CXXFLAGS=-O all
	$(MAKE) -f octMakefile binary-dist

# Maybe this message will prevent people from asking why the
# Makefiles don't work for them.  Maybe not.

header-msg: FORCE
	@echo ""
	@echo "***********************************************************"
	@echo "*                                                         *"
	@echo "*  To compile Octave, you will need a recent version of   *"
	@echo "*  GNU Make.                                              *"
	@echo "*                                                         *"
	@echo "*  You will also need g++ 2.7.2 or later.  Version 2.8.0  *"
	@echo "*  or egcs 1.0.x should work.  Later versions may work,   *"
	@echo "*  but C++ is still evolving, so don't be too surprised   *"
	@echo "*  if you run into some trouble.                          *"
	@echo "*                                                         *"
	@echo "*  libg++ is no longer required (if you are using g++     *"
	@echo "*  2.7.2, libstdc++ is distributed along with libg++,     *"
	@echo "*  but for later versions, libstdc++ is distributed       *"
	@echo "*  separately).                                           *"
	@echo "*                                                         *"
	@echo "*  Now would be a good time to read INSTALL.OCTAVE if     *"
	@echo "*  you have not done so already.                          *"
	@echo "*                                                         *"
	@echo "***********************************************************"
	@echo ""

help: header-msg
	@echo ""
	@echo "For more information, please read the files INSTALL,"
	@echo "INSTALL.OCTAVE, and any other system-specific README"
	@echo "files that apply (e.g., README.Linux)."
	@echo ""
	@echo "The following targets are available:"
	@echo ""
	@echo "  all                  build everything"
	@echo "  check                run self tests"
	@echo "  install              install files"
	@echo "  install-strip        same as install but strip binaries"
	@echo "  uninstall            delete installed files"
	@echo ""
	@echo "  dist                 create a source distribution"
	@echo "  conf-dist            create a config files distribution"
	@echo "  binary-dist          create a binary distribution"
	@echo ""
	@echo "  clean                remove files created by make all"
	@echo "  mostlyclean          remove most files created by make all"
	@echo "  distclean            remove all files not in distribution"
	@echo "  maintainer-clean     clean up everything"
	@echo ""
	@echo "  octave-bug           create octave-bug script"
	@echo "  mkoctfile            create mkoctfile script"
	@echo "  INSTALL.OCTAVE       create INSTALL.OCTAVE doc file"
	@echo "  BUGS                 create BUGS doc file"
	@echo "  tags                 create tags files"
	@echo "  TAGS                 create TAGS files"
	@echo ""
	@echo "  dlfcn                make all in subdirectory dlfcn"
	@echo "  doc                  make all in subdirectory doc"
	@echo "  kpathsea             make all in subdirectory kpathsea"
	@echo "  libcruft             make all in subdirectory libcruft"
	@echo "  liboctave            make all in subdirectory liboctave"
	@echo "  readline             make all in subdirectory readline"
	@echo "  scripts              make all in subdirectory scripts"
	@echo "  src                  make all in subdirectory src"
	@echo ""
	@echo "  help                 print this message"
	@echo ""

config-check:
	@if test -f octMakefile ; then \
	  true ; \
	else \
	  echo "" ; \
	  echo "*** You must run configure before running make." ; \
	  echo "***" ; \
	  echo "*** Please read the INSTALL and INSTALL.OCTAVE files" ; \
	  echo "*** for more information about how to configure and" ; \
	  echo "*** compile Octave." ; \
	  echo "" ; \
	  exit 1 ; \
	fi

FORCE:
