# HG changeset patch # User jwe # Date 1034129587 0 # Node ID 3e631060ab8f3042cf516034d8da9c08b36129c3 # Parent 5a82e874999bfc79bed8744356df18c8da044d9e [project @ 2002-10-09 02:12:30 by jwe] diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2002-10-08 John W. Eaton + * aclocal.m4 (OCTAVE_CXX_PRAGMA_INTERFACE_IMPLEMENTATION): New macro. + * configure.in: Use it. + + * configure.in (BUILD_CC, BUILD_CFLAGS, BUILD_CXX, BUILD_CXXFLAGS): + Set default values if cross compiling. + * aclocal.m4 (OCTAVE_PROG_NM): Do the right thing for cross compiling. (OCTAVE_CXX_PREPENDS_UNDERSCORE): Require OCTAVE_PROG_NM. (OCTAVE_CXX_ABI): Likewise. diff --git a/Makeconf.in b/Makeconf.in --- a/Makeconf.in +++ b/Makeconf.in @@ -113,8 +113,8 @@ ALL_CFLAGS = $(INCFLAGS) $(DEFS) $(XTRA_CFLAGS) $(CFLAGS) BUG_CFLAGS = $(DEFS) $(XTRA_CFLAGS) $(CFLAGS) -BUILD_CC = $(CC) -BUILD_CFLAGS = $(CFLAGS) +BUILD_CC = @BUILD_CC@ +BUILD_CFLAGS = @BUILD_CFLAGS@ DEPEND_FLAGS = @DEPEND_FLAGS@ DEPEND_EXTRA_SED_PATTERN = @DEPEND_EXTRA_SED_PATTERN@ @@ -129,8 +129,8 @@ UGLY_ALL_CXXFLAGS = $(INCFLAGS) $(UGLY_DEFS) $(XTRA_CXXFLAGS) $(CXXFLAGS) BUG_CXXFLAGS = $(DEFS) $(XTRA_CXXFLAGS) $(CXXFLAGS) -BUILD_CXX = $(CXX) -BUILD_CXXFLAGS = $(CXXFLAGS) +BUILD_CXX = @BUILD_CXX@ +BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ CPPFLAGS = @CPPFLAGS@ diff --git a/aclocal.m4 b/aclocal.m4 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -353,6 +353,48 @@ fi ]) dnl +dnl Check to see if GNU C++ barfs on #pragma interface/#pragma implementation. +dnl +dnl OCTAVE_CXX_PRAGMA_INTERFACE_IMPLEMENTATION +AC_DEFUN(OCTAVE_CXX_PRAGMA_INTERFACE_IMPLEMENTATION, [ + AC_REQUIRE([AC_PROG_CXX]) + AC_MSG_CHECKING([for C++ support for pragma interface/implementation]) + AC_CACHE_VAL(octave_cv_cxx_pragma_interface_implementation, [ + AC_LANG_PUSH(C++) + rm -f conftest.h + cat > conftest.h < +#if defined (__GNUG__) +#pragma interface +#endif +template class A +{ +public: + A (void) {} + ~A (void); +}; + +class B : public A +{ +public: + + B (void) : A () { } +}; +EOB + AC_TRY_LINK([#include "conftest.h"], [ + ], + octave_cv_cxx_pragma_interface_implementation=yes, + octave_cv_cxx_pragma_interface_implementation=no + ) + AC_LANG_POP(C++) + ]) + AC_MSG_RESULT($octave_cv_cxx_pragma_interface_implementation) + if test $octave_cv_cxx_pragma_interface_implementation = no; then + XTRA_CXXFLAGS="$XTRA_CXXFLAGS -DNO_PRAGMA_INTERFACE_IMPLEMENTATION=1" + AC_SUBST(XTRA_CXXFLAGS) + fi +]) +dnl dnl Check for flex dnl AC_DEFUN(OCTAVE_PROG_FLEX, [ diff --git a/configure.in b/configure.in --- a/configure.in +++ b/configure.in @@ -22,7 +22,7 @@ ### 02111-1307, USA. AC_INIT -AC_REVISION($Revision: 1.372 $) +AC_REVISION($Revision: 1.373 $) AC_PREREQ(2.52) AC_CONFIG_SRCDIR([src/octave.cc]) AC_CONFIG_HEADER(config.h) @@ -318,6 +318,27 @@ AC_SUBST(LD_STATIC_FLAG) OCTAVE_CXX_PREPENDS_UNDERSCORE +OCTAVE_CXX_PRAGMA_INTERFACE_IMPLEMENTATION + +### Defaults for cross compiling. BUILD_CC and BUILD_CXX are +### the compilers that we use for building tools on the build system. + +if test "$cross_compiling" = yes; then + BUILD_CC="gcc" + BUILD_CFLAGS="-O2 -g" + BUILD_CXX="g++" + BUILD_CXXFLAGS="-O2 -g" +else + BUILD_CC=$CC + BUILD_CFLAGS="-O2 -g" + BUILD_CXX="g++" + BUILD_CXXFLAGS="-O2 -g" +fi + +AC_ARG_VAR(BUILD_CC, [build system C compiler (used if cross compiling)]) +AC_ARG_VAR(BUILD_CFLAGS, [build system C compiler flags (used if cross compiling)]) +AC_ARG_VAR(BUILD_CXX, [build system C++ compiler (used if cross compiling)]) +AC_ARG_VAR(BUILD_CXXFLAGS, [build system C++ compiler flags (used if cross compiling)]) dnl This is bogus. We shouldn't have to explicitly add libc too!