Mercurial > octave-antonio
view libinterp/Makefile.am @ 20166:196871335aa8
Allow call with empty argument list in strcat related functions (bug #44981)
* libinterp/corefcn/strfns.cc (strvcat): return an empty string for an empty
argument list. Simply dropping the input checking, will return an empty
string. This makes it more consistent with cat(), vertcat, and horzcat()
functions, which return [] for this cases. It makes it easier to support
"strcat (cell{:})" when cell is empty.
* scripts/strings/cstrcat.m, scripts/strings/strcat.m: same as above. But
because [cellstr{:}] when cellstr is empty returns double ([]), we
specifically return "".
author | Carnë Draug <carandraug@octave.org> |
---|---|
date | Fri, 01 May 2015 16:21:39 +0100 |
parents | 57b6e06ed811 |
children |
line wrap: on
line source
# Makefile for Octave's libinterp directory # # Copyright (C) 1993-2015 John W. Eaton # # This file is part of Octave. # # Octave is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at # your option) any later version. # # Octave 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 General Public License # for more details. # # You should have received a copy of the GNU General Public License # along with Octave; see the file COPYING. If not, see # <http://www.gnu.org/licenses/>. include $(top_srcdir)/build-aux/common.mk ## Search local directories before those specified by the user. AM_CPPFLAGS = \ -I$(top_srcdir)/liboctave/cruft/misc \ -I$(top_srcdir)/liboctave/array \ -I$(top_builddir)/liboctave/numeric -I$(top_srcdir)/liboctave/numeric \ -I$(top_builddir)/liboctave/operators -I$(top_srcdir)/liboctave/operators \ -I$(top_srcdir)/liboctave/system \ -I$(top_srcdir)/liboctave/util \ -I$(srcdir)/octave-value \ -I$(srcdir)/operators \ -Iparse-tree -I$(srcdir)/parse-tree \ -Icorefcn -I$(srcdir)/corefcn \ -I$(top_builddir)/libgnu -I$(top_srcdir)/libgnu \ $(HDF5_CPPFLAGS) AM_CFLAGS += $(WARN_CFLAGS) AM_CXXFLAGS += $(WARN_CXXFLAGS) octlib_LTLIBRARIES = liboctinterp.la ## This is the subset of $(BUILT_SOURCES) that may be included by source ## files that are preprocessed to make $(DEF_FILES). This ensures that ## files in $(BUILT_SOURCES) are built in the right dependency order. GENERATED_MAKE_BUILTINS_INCS = \ corefcn/defaults.h \ corefcn/graphics-props.cc \ corefcn/graphics.h \ corefcn/mxarray.h \ oct-conf-features.h \ oct-conf.h \ parse-tree/oct-gperf.h \ parse-tree/oct-parse.h \ version.h BUILT_SOURCES = \ $(GENERATED_MAKE_BUILTINS_INCS) \ builtin-defun-decls.h \ builtins.cc \ corefcn/oct-errno.cc \ corefcn/oct-tex-lexer.cc \ corefcn/oct-tex-parser.cc \ corefcn/oct-tex-symbols.cc \ operators/ops.cc \ parse-tree/lex.cc \ parse-tree/oct-parse.cc ULT_PARSER_SRC := \ corefcn/oct-tex-lexer.in.ll \ corefcn/oct-tex-parser.in.yy \ parse-tree/oct-parse.in.yy GENERATED_PARSER_FILES := \ corefcn/oct-tex-lexer.ll \ corefcn/oct-tex-parser.yy \ parse-tree/oct-parse.yy BUILT_DISTFILES = \ $(GENERATED_PARSER_FILES) \ corefcn/oct-tex-parser.h \ corefcn/oct-tex-symbols.cc \ parse-tree/oct-gperf.h \ parse-tree/oct-parse.h ## Files that are created during build process and installed, ## BUT not distributed in tarball. BUILT_NODISTFILES = \ corefcn/mxarray.h \ corefcn/oct-errno.cc \ corefcn/defaults.h \ corefcn/graphics.h \ builtin-defun-decls.h \ operators/ops.cc \ oct-conf.h \ oct-conf-features.h \ version.h \ $(OPT_HANDLERS) \ $(OPT_INC) \ $(ALL_DEF_FILES) \ builtins.cc EXTRA_DIST = \ Makefile.in \ DOCSTRINGS \ config-features.sh \ find-defun-files.sh \ gendoc.pl \ genprops.awk \ mk-errno-list \ mk-pkg-add \ mkbuiltins \ mkdefs \ mkops \ oct-conf.in.h \ version.in.h \ $(BUILT_DISTFILES) octinclude_HEADERS = \ corefcn/graphics-props.cc \ parse-tree/oct-gperf.h \ builtins.h \ builtin-defun-decls.h \ octave.h \ options-usage.h \ $(OCTAVE_VALUE_INC) \ $(PARSE_TREE_INC) \ $(PARSER_INC) \ $(OPERATORS_INC) \ $(COREFCN_INC) nodist_octinclude_HEADERS = \ corefcn/mxarray.h \ corefcn/defaults.h \ corefcn/graphics.h \ oct-conf.h \ version.h DIST_SRC = \ octave.cc \ version.cc \ $(OCTAVE_VALUE_SRC) \ $(PARSE_TREE_SRC) \ $(PARSER_SRC) \ $(COREFCN_SRC) \ $(TEX_PARSER_SRC) noinst_LTLIBRARIES = include parse-tree/module.mk include octave-value/module.mk include operators/module.mk include template-inst/module.mk include corefcn/module.mk include dldfcn/module.mk $(srcdir)/dldfcn/module.mk: $(srcdir)/dldfcn/config-module.sh $(srcdir)/dldfcn/config-module.awk $(srcdir)/dldfcn/module-files $(srcdir)/dldfcn/config-module.sh $(top_srcdir) if AMCOND_ENABLE_DYNAMIC_LINKING OCT_FILES = $(DLDFCN_LIBS:.la=.oct) DLD_LIBOCTINTERP_LIBADD = liboctinterp.la else OCT_FILES = DLD_LIBOCTINTERP_LIBADD = endif liboctinterp_la_SOURCES = \ octave.cc \ version.cc \ $(OPERATORS_SRC) \ $(TEMPLATE_INST_SRC) nodist_liboctinterp_la_SOURCES = \ corefcn/mxarray.h \ corefcn/oct-errno.cc \ corefcn/defaults.h \ corefcn/graphics.h \ operators/ops.cc \ builtin-defun-decls.h \ builtins.cc \ oct-conf.h \ oct-conf-features.h \ version.h \ $(OPT_INC) liboctinterp_la_CPPFLAGS = @OCTINTERP_DLL_DEFS@ $(AM_CPPFLAGS) include link-deps.mk liboctinterp_la_LIBADD = \ octave-value/liboctave-value.la \ parse-tree/libparse-tree.la \ parse-tree/libparser.la \ corefcn/libcorefcn.la \ corefcn/libtex_parser.la \ $(top_builddir)/liboctave/liboctave.la \ $(LIBOCTINTERP_LINK_DEPS) # Increment these as needed and according to the rules in the libtool manual: liboctinterp_current = 3 liboctinterp_revision = 0 liboctinterp_age = 0 liboctinterp_version_info = $(liboctinterp_current):$(liboctinterp_revision):$(liboctinterp_age) liboctinterp_la_LDFLAGS = \ -version-info $(liboctinterp_version_info) \ $(NO_UNDEFINED_LDFLAG) \ -bindir $(bindir) \ $(LIBOCTINTERP_LINK_OPTS) ## Section for defining and creating DEF_FILES ULT_DIST_SRC := \ $(filter-out $(GENERATED_PARSER_FILES), $(DIST_SRC)) $(ULT_PARSER_SRC) SRC_DEF_FILES := $(shell $(srcdir)/find-defun-files.sh "$(srcdir)" $(ULT_DIST_SRC)) DLDFCN_DEF_FILES = $(DLDFCN_SRC:.cc=.df) ## builtins.cc depends on $(DEF_FILES), so DEF_FILES should only include ## .df files that correspond to sources included in liboctave. if AMCOND_ENABLE_DYNAMIC_LINKING DEF_FILES = $(SRC_DEF_FILES) else DEF_FILES = $(SRC_DEF_FILES) $(DLDFCN_DEF_FILES) endif ALL_DEF_FILES = $(SRC_DEF_FILES) $(DLDFCN_DEF_FILES) $(SRC_DEF_FILES): mkdefs Makefile $(DEF_FILES): $(OPT_HANDLERS) $(OPT_INC) ## FIXME: The following two variables are deprecated and should be removed ## in Octave version 3.12. DLL_CDEFS = @OCTINTERP_DLL_DEFS@ DLL_CXXDEFS = @OCTINTERP_DLL_DEFS@ ## Rule to build a DEF file from a .cc file ## See also module.mk files for overrides when speciall CPPFLAGS are needed. ## FIXME: Shouldn't the build stop if CPP fails here? Yes (10/31/2013) %.df: %.cc $(GENERATED_MAKE_BUILTINS_INCS) $(AM_V_GEN)rm -f $@-t $@-t1 $@ && \ $(CXXCPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(LLVM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) \ -DMAKE_BUILTINS $< > $@-t1 && \ $(srcdir)/mkdefs $(srcdir) $< < $@-t1 > $@-t && \ mv $@-t $@ && \ rm -f $@-t1 ## Rules to build test files TST_FILES_SRC := $(shell $(top_srcdir)/build-aux/find-files-with-tests.sh "$(srcdir)" $(ULT_DIST_SRC) $(DLDFCN_SRC)) TST_FILES := $(addsuffix -tst,$(TST_FILES_SRC)) libinterptestsdir := $(octtestsdir)/libinterp nobase_libinterptests_DATA = $(TST_FILES) ## Override Automake's rule that forces a .hh extension on us even ## though we don't want it. It would be super awesome if automake ## would allow users to choose the header file extension. .yy.cc: $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) ## Special rules: ## Mostly for sources which must be built before rest of compilation. ## oct-conf.h must depend on Makefile. ## Calling configure may change default/config values. ## However, calling configure will also regenerate the Makefiles from ## Makefile.am and trigger the rules below. oct-conf.h: oct-conf.in.h Makefile $(AM_V_GEN)$(do_subst_config_vals) oct-conf-features.h: $(top_builddir)/config.h config-features.sh $(AM_V_GEN)rm -f $@-t $@ && \ $(srcdir)/config-features.sh $< > $@-t && \ mv $@-t $@ version.h: version.in.h Makefile $(AM_V_GEN)rm -f $@-t $@ && \ $(SED) < $< \ -e "s|%NO_EDIT_WARNING%|DO NOT EDIT! Generated automatically from $(<F) by Make.|" \ -e "s|%OCTAVE_API_VERSION%|\"${OCTAVE_API_VERSION}\"|" \ -e "s|%OCTAVE_COPYRIGHT%|\"${OCTAVE_COPYRIGHT}\"|" \ -e "s|%OCTAVE_MAJOR_VERSION%|${OCTAVE_MAJOR_VERSION}|" \ -e "s|%OCTAVE_MINOR_VERSION%|${OCTAVE_MINOR_VERSION}|" \ -e "s|%OCTAVE_PATCH_VERSION%|${OCTAVE_PATCH_VERSION}|" \ -e "s|%OCTAVE_RELEASE_DATE%|\"${OCTAVE_RELEASE_DATE}\"|" \ -e "s|%OCTAVE_VERSION%|\"${OCTAVE_VERSION}\"|" > $@-t && \ mv $@-t $@ builtins.cc: $(DEF_FILES) mkbuiltins $(AM_V_GEN)rm -f $@-t $@ && \ $(srcdir)/mkbuiltins --source $(DEF_FILES) > $@-t && \ mv $@-t $@ builtin-defun-decls.h: $(SRC_DEF_FILES) mkbuiltins $(AM_V_GEN)rm -f $@-t $@ && \ $(srcdir)/mkbuiltins --header $(SRC_DEF_FILES) > $@-t && \ mv $@-t $@ if AMCOND_ENABLE_DYNAMIC_LINKING DLDFCN_PKG_ADD_FILE = dldfcn/PKG_ADD dldfcn/PKG_ADD: $(DLDFCN_DEF_FILES) mk-pkg-add $(AM_V_GEN)rm -f $@-t $@ && \ $(srcdir)/mk-pkg-add $(DLDFCN_DEF_FILES) > $@-t && \ mv $@-t $@ endif if AMCOND_BUILD_DOCS .DOCSTRINGS: $(ALL_DEF_FILES) gendoc.pl $(AM_V_GEN)rm -f $@-t $@ && \ if [ "x$(srcdir)" != "x." ] && [ -f $(srcdir)/DOCSTRINGS ] && [ ! -f DOCSTRINGS ]; then \ cp $(srcdir)/DOCSTRINGS DOCSTRINGS; \ touch -r $(srcdir)/DOCSTRINGS DOCSTRINGS; \ fi && \ $(PERL) $(srcdir)/gendoc.pl $(ALL_DEF_FILES) > $@-t && \ mv $@-t $@ && \ $(top_srcdir)/build-aux/move-if-change $@ DOCSTRINGS && \ touch $@ all-local: $(OCT_FILES) $(DLDFCN_PKG_ADD_FILE) .DOCSTRINGS else all-local: $(OCT_FILES) $(DLDFCN_PKG_ADD_FILE) endif if AMCOND_BUILD_DOCS install-data-hook: install-oct install-built-in-docstrings else install-data-hook: install-oct uninstall-built-in-docstrings endif uninstall-local: uninstall-oct uninstall-built-in-docstrings if AMCOND_ENABLE_DYNAMIC_LINKING install-oct: $(MKDIR_P) $(DESTDIR)$(octfiledir) if [ -n "`cat $(DLDFCN_PKG_ADD_FILE)`" ]; then \ $(INSTALL_DATA) $(DLDFCN_PKG_ADD_FILE) $(DESTDIR)$(octfiledir)/PKG_ADD; \ fi cd $(DESTDIR)$(octlibdir) && \ for ltlib in $(DLDFCN_LIBS); do \ f=`echo $$ltlib | $(SED) 's,.*/,,'`; \ dl=`$(SED) -n -e "s/dlname='\([^']*\)'/\1/p" < $$f`; \ if [ -n "$$dl" ]; then \ $(INSTALL_PROGRAM) $$dl $(DESTDIR)$(octfiledir)/`echo $$f | $(SED) 's,^lib,,; s,\.la$$,.oct,'`; \ else \ echo "error: dlname is empty in $$ltlib!"; \ exit 1; \ fi; \ lnames=`$(SED) -n -e "s/library_names='\([^']*\)'/\1/p" < $$f`; \ if [ -n "$$lnames" ]; then \ rm -f $$f $$lnames $$dl; \ fi \ done uninstall-oct: for f in $(notdir $(OCT_FILES)); do \ rm -f $(DESTDIR)$(octfiledir)/$$f; \ done rm -f $(DESTDIR)$(octfiledir)/PKG_ADD endif .PHONY: install-oct uninstall-oct if AMCOND_BUILD_DOCS install-built-in-docstrings: $(MKDIR_P) $(DESTDIR)$(octetcdir) $(INSTALL_DATA) DOCSTRINGS $(DESTDIR)$(octetcdir)/built-in-docstrings uninstall-built-in-docstrings: rm -f $(DESTDIR)$(octetcdir)/built-in-docstrings endif .PHONY: install-built-in-docstrings uninstall-built-in-docstrings CLEANFILES = \ $(DLDFCN_PKG_ADD_FILE) \ corefcn/graphics-props.cc \ corefcn/oct-tex-parser.output \ parse-tree/oct-parse.output DISTCLEANFILES = \ .DOCSTRINGS \ DOCSTRINGS \ $(BUILT_NODISTFILES) \ $(OCT_FILES) \ $(TST_FILES) MAINTAINERCLEANFILES = \ $(BUILT_DISTFILES)