# @configure_input@ # # Common configuration rules for all of octave's Makefiles. # # John W. Eaton # jwe@bevo.che.wisc.edu # University of Wisconsin-Madison # Department of Chemical Engineering SHELL = /bin/sh # A shell command to extract the version number from version.h. getversion = sed -e '/VERSION/!d' -e 's/.*"\(.*\)".*$$/\1/' -e q # Look for version.h to get version information. xfiles := $(TOPDIR)/src/version.h $(srcdir)/$(TOPDIR)/src/version.h version_file := $(firstword $(foreach file, $(xfiles), $(wildcard $(file)))) version := $(shell $(getversion) $(version_file)) #### Start of system configuration section. #### EXE = @EXE@ LEX = @LEX@ LFLAGS = @LFLAGS@ LEXLIB = @LEXLIB@ YACC = @YACC@ YFLAGS = -dv AR = @AR@ ARFLAGS = @ARFLAGS@ RANLIB = @RANLIB@ LN_S = @LN_S@ RUNTEST = @RUNTEST@ TEXI2DVI = $(top_srcdir)/texi2dvi DEFAULT_PAGER = @DEFAULT_PAGER@ WITH_DL = @WITH_DL@ WITH_SHL = @WITH_SHL@ WITH_DYNAMIC_LINKING = @WITH_DYNAMIC_LINKING@ OCTAVE_LITE = @OCTAVE_LITE@ STATIC_LIBS = @STATIC_LIBS@ SHARED_LIBS = @SHARED_LIBS@ SHLEXT = @SHLEXT@ SHLEXT_VER = $(SHLEXT).$(version) LIBEXT = a # Fortran to C translator and associated flags. F2C = @F2C@ F2CFLAGS = @F2CFLAGS@ # Fortran compiler flags. FC = @FC@ F77 = @F77@ FFLAGS = @FFLAGS@ FPICFLAG = @FPICFLAG@ FORTRAN_MAIN_FLAG = @FORTRAN_MAIN_FLAG@ ALL_FFLAGS = $(FFLAGS) # cc and associated flags. DLFCN_INCFLAGS = @DLFCN_INCFLAGS@ GLOB_INCFLAGS = @GLOB_INCFLAGS@ # Clean up INCFLAGS a bit if we are not compiling in a separate # directory. ifeq ($(srcdir),.) TMP_IF_1 = -I. else TMP_IF_1 = -I. -I$(srcdir) endif ifeq ($(TOPDIR),$(top_srcdir)) TMP_IF_2 = -I$(TOPDIR) -I$(TOPDIR)/liboctave -I$(TOPDIR)/src \ -I$(TOPDIR)/libcruft/misc else TMP_IF_2 = -I$(TOPDIR) -I$(TOPDIR)/liboctave -I$(TOPDIR)/src \ -I$(TOPDIR)/libcruft/misc -I$(top_srcdir) \ -I$(top_srcdir)/liboctave -I$(top_srcdir)/src \ -I$(top_srcdir)/libcruft/misc endif INCFLAGS = $(TMP_IF_1) $(TMP_IF_2) $(DLFCN_INCFLAGS) $(GLOB_INCFLAGS) LIBFLAGS = -L$(TOPDIR) DEFS = @DEFS@ UGLY_DEFS = @UGLY_DEFS@ CC = @CC@ CC_VERSION = @CC_VERSION@ CFLAGS = @CFLAGS@ CPICFLAG = @CPICFLAG@ XTRA_CFLAGS = @XTRA_CFLAGS@ ALL_CFLAGS = $(INCFLAGS) $(DEFS) $(XTRA_CFLAGS) $(CFLAGS) BUG_CFLAGS = $(DEFS) $(XTRA_CFLAGS) $(CFLAGS) CXX = @CXX@ CXX_VERSION = @CXX_VERSION@ CXXCPP = @CXXCPP@ CXXFLAGS = @CXXFLAGS@ CXXPICFLAG = @CXXPICFLAG@ XTRA_CXXFLAGS = @XTRA_CXXFLAGS@ ALL_CXXFLAGS = $(INCFLAGS) $(DEFS) $(XTRA_CXXFLAGS) $(CXXFLAGS) UGLY_ALL_CXXFLAGS = $(INCFLAGS) $(UGLY_DEFS) $(XTRA_CXXFLAGS) $(CXXFLAGS) BUG_CXXFLAGS = $(DEFS) $(XTRA_CXXFLAGS) $(CXXFLAGS) CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LD_STATIC_FLAG = @LD_STATIC_FLAG@ ALL_LDFLAGS = $(LIBFLAGS) $(FORTRAN_MAIN_FLAG) \ $(LD_STATIC_FLAG) $(CPICFLAG) $(LDFLAGS) SH_LD = @SH_LD@ SH_LDFLAGS = @SH_LDFLAGS@ SONAME_FLAGS = @SONAME_FLAGS@ RDYNAMIC_FLAG = @RDYNAMIC_FLAG@ RLD_FLAG = @RLD_FLAG@ FLIBS = @FLIBS@ TERMLIBS = @TERMLIBS@ LIBDLFCN = @LIBDLFCN@ LIBGLOB = @LIBGLOB@ LIBPLPLOT = @LIBPLPLOT@ LIBREADLINE = @LIBREADLINE@ LIBKPATHSEA = @LIBKPATHSEA@ LIBOCTINTERP = @LIBOCTINTERP@ LIBOCTAVE = @LIBOCTAVE@ LIBCRUFT = @LIBCRUFT@ SPECIAL_MATH_LIB = @SPECIAL_MATH_LIB@ # The arguments passed to configure. config_opts = @config_opts@ # ==================== 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@ libdir = @libdir@ # Where to install and expect libraries like libcruft.a, liboctave.a, # and other architecture-dependent data. octlibdir = @octlibdir@ # Where to install and expect executable programs to be run by Octave # rather than directly by users. libexecdir = @libexecdir@ # The prefix for Octave's include file directory. The default is # ${prefix}/include includedir = @includedir@ # Where to install Octave's man pages, and what extension they should # have. The default is ${prefix}/man/man1 mandir = @mandir@ man1dir = @man1dir@ man1ext = @man1ext@ # Where to install and expect the info files describing Octave.. infodir = @infodir@ # The fill path to the default info file. infofile = @infofile@ # ==================== Octave-specific directories ==================== # These variables hold the values specific to Octave. They are # based on the values of the standard Make variables above. # Where to install Octave's include files. The default is # ${includedir}/octave-${version} octincludedir = @octincludedir@ # 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 executables to be run by Octave rather than by the # user that are specific to this site. localarchlibdir = @localarchlibdir@ # 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. canonical_host_type = @canonical_host_type@ # The following pattern rules and the substitution functions require # GNU make. If you don't have it, get it! # Rules for making object files from Fortran source. # # 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. @f77_rules_frag@ # How to make .o files: %.o : %.c $(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $< %.o : %.cc $(CXX) -c $(CPPFLAGS) $(ALL_CXXFLAGS) $< pic/%.o : %.c $(CC) -c $(CPPFLAGS) $(CPICFLAG) $(ALL_CFLAGS) $< -o $@ pic/%.o : %.cc $(CXX) -c $(CPPFLAGS) $(CXXPICFLAG) $(ALL_CXXFLAGS) $< -o $@ # Here is a rule for generating dependencies for .cc files: %.d : %.cc @echo making $@ from $< @rm -f $@ @$(CXX) -M $(CPPFLAGS) $(ALL_CXXFLAGS) $< | \ sed -e 's,$*\.o,pic/& & $@,g' > $@.tmp @mv $@.tmp $@ # And one for .c files.too: %.d : %.c @echo making $@ from $< @rm -f $@ @$(CC) -M $(CPPFLAGS) $(ALL_CFLAGS) $< | \ sed -e 's,$*\.o,pic/& & $@,g' > $@.tmp @mv $@.tmp $@ define do-subdir-for-command echo making $@ in $d; cd $d; $(MAKE) $@; cd ..; endef define subdir-for-command $(foreach d, $(SUBDIRS), $(do-subdir-for-command)) endef # Yes, the second sed command near the end is needed, to avoid limits # in command lengths for some versions of sed. UGLY_DEFS is often # quite large, so it makes sense to split this command there. define do-subst-config-vals echo "making $@ from $<" sed < $< \ -e "s;%BUG_CXXFLAGS%;\"${BUG_CXXFLAGS}\";" \ -e "s;%CC%;\"${CC}\";" \ -e "s;%CC_VERSION%;\"${CC_VERSION}\";" \ -e "s;%CFLAGS%;\"${BUG_CFLAGS}\";" \ -e "s;%CPICFLAG%;\"${CPICFLAG}\";" \ -e "s;%CPPFLAGS%;\"${CPPFLAGS}\";" \ -e "s;%CXX%;\"${CXX}\";" \ -e "s;%CXXFLAGS%;\"${CXXFLAGS}\";" \ -e "s;%CXXPICFLAG%;\"${CXXPICFLAG}\";" \ -e "s;%CXX_VERSION%;\"${CXX_VERSION}\";" \ -e "s;%F2C%;\"${F2C}\";" \ -e "s;%F2CFLAGS%;\"${F2CFLAGS}\";" \ -e "s;%F77%;\"${F77}\";" \ -e "s;%FFLAGS%;\"${FFLAGS}\";" \ -e "s;%FLIBS%;\"${FLIBS}\";" \ -e "s;%FPICFLAG%;\"${FPICFLAG}\";" \ -e "s;%INCFLAGS%;\"-I${octincludedir} -I${includedir}\";" \ -e "s;%LDFLAGS%;\"${LDFLAGS}\";" \ -e "s;%LEXLIB%;\"${LEXLIB}\";" \ -e "s;%LIBDLFCN%;\"${LIBDLFCN}\";" \ -e "s;%LIBGLOB%;\"${LIBGLOB}\";" \ -e "s;%LIBFLAGS%;\"-L${octlibdir}\";" \ -e "s;%LIBPLPLOT%;\"${LIBPLPLOT}\";" \ -e "s;%LIBS%;\"${LIBS}\";" \ -e "s;%RLD_FLAG%;\"${RLD_FLAG}\";" \ -e "s;%SH_LD%;\"${SH_LD}\";" \ -e "s;%SH_LDFLAGS%;\"${SH_LDFLAGS}\";" \ -e "s;%CANONICAL_HOST_TYPE%;\"${canonical_host_type}\";" \ -e "s;%TERMLIBS%;\"${TERMLIBS}\";" \ -e "s;%VERSION%;\"${version}\";" \ -e "s;%XTRA_CFLAGS%;\"${XTRA_CFLAGS}\";" \ -e "s;%XTRA_CXXFLAGS%;\"${XTRA_CXXFLAGS}\";" \ -e "s;%config_opts%;\"${config_opts}\";" | \ sed -e "s;%DEFS%;\"${UGLY_DEFS}\";" > $@.tmp $(top_srcdir)/move-if-change $@.tmp $@ endef define do-subst-default-vals echo "making $@ from $<" sed < $< > $@.tmp \ -e "s;%DEFAULT_PAGER%;\"${DEFAULT_PAGER}\";" \ -e "s;%OCTAVE_ARCHLIBDIR%;\"${archlibdir}\";" \ -e "s;%OCTAVE_BINDIR%;\"${bindir}\";" \ -e "s;%OCTAVE_DATADIR%;\"${datadir}\";" \ -e "s;%OCTAVE_LIBEXECDIR%;\"${libexecdir}\";" \ -e "s;%OCTAVE_EXEC_PREFIX%;\"${exec_prefix}\";" \ -e "s;%OCTAVE_FCNFILEDIR%;\"${fcnfiledir}\";" \ -e "s;%OCTAVE_FCNFILEPATH%;\"${fcnfilepath}\";" \ -e "s;%OCTAVE_IMAGEPATH%;\"${imagepath}\";" \ -e "s;%OCTAVE_INFODIR%;\"${infodir}\";" \ -e "s;%OCTAVE_INFOFILE%;\"${infofile}\";" \ -e "s;%OCTAVE_LIBDIR%;\"${libdir}\";" \ -e "s;%OCTAVE_OCTLIBDIR%;\"${octlibdir}\";" \ -e "s;%OCTAVE_LOCALARCHLIBDIR%;\"${localarchlibdir}\";" \ -e "s;%OCTAVE_LOCALFCNFILEDIR%;\"${localfcnfiledir}\";" \ -e "s;%OCTAVE_LOCALFCNFILEPATH%;\"${localfcnfilepath}\";" \ -e "s;%OCTAVE_LOCALOCTFILEPATH%;\"${localoctfilepath}\";" \ -e "s;%OCTAVE_OCTFILEDIR%;\"${octfiledir}\";" \ -e "s;%OCTAVE_PREFIX%;\"${prefix}\";" \ -e "s;%CANONICAL_HOST_TYPE%;\"${canonical_host_type}\";" $(top_srcdir)/move-if-change $@.tmp $@ endef # Make a relative symbolic link from $includedir/octave to $octincludedir. # XXX FIXME XXX -- this assumes that $octincludedir is a subdirectory # of $includedir. define mk-includedir-link src=`echo $(octincludedir) | sed 's|^$(includedir)/*||'`; \ echo $$src; \ if [ "$$src" = "octave" ]; then \ true; \ else \ cd $(includedir); \ rm -f octave; \ $(LN_S) $$src octave; \ fi endef # Make a relative symbolic link from $libdir/octave to $octlibdir. # XXX FIXME XXX -- this assumes that $octlibdir is a subdirectory # of $libdir. define mk-libdir-link src=`echo $(octlibdir) | sed 's|^$(libdir)/*||'` ; \ echo $$src ; \ if [ "$$src" = "octave" ] ; then \ true ; \ else \ if [ -d "$(libdir)/octave" ] ; then \ true ; \ else \ cd $(libdir) ; \ rm -f octave ; \ $(LN_S) $$src octave ; \ fi ; \ fi endef