octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Sun C++ template closure patch


From: Mumit Khan
Subject: Sun C++ template closure patch
Date: Sun, 4 Feb 2001 14:41:55 -0600 (CST)

Sun C++ uses a template repository mechanism, and that usually implies
that you need template closure when building the archive libraries with
template instantiations. Not unlike using -frepo with GNU C++, which
similarly needs closure, albeit using a slightly different manner. 

When compilers start implementing the `export' keyword, we're certainly
going to need mechanisms such as this.

Regards,
Mumit

This patch adds Sun compiler support for template closures in archive
libraries.

Patch against Octave CVS 2001-02-02.

./ChangeLog:

2001-02-03  Mumit Khan  <address@hidden>
        
        * configure.in (TEMPLATE_AR, TEMPLATE_ARFLAGS): New variables.
        * Makeconf.in (TEMPLATE_AR, TEMPLATE_ARFLAGS): Likewise.
        
{liboctave,src}/ChangeLog:

2001-02-03  Mumit Khan  <address@hidden>

        * Makefile.in (TEMPLATE_AR, TEMPLATE_ARFLAGS): Use to create
        archive libraries containing templates.


Index: configure.in
===================================================================
RCS file: /home/khan/src/math/CVSROOT/octave-dev/configure.in,v
retrieving revision 1.2
diff -u -3 -p -r1.2 configure.in
--- configure.in        2001/02/04 00:40:46     1.2
+++ configure.in        2001/02/04 18:24:33
@@ -716,6 +716,8 @@ SH_LD="$CXX"
 SH_LDFLAGS=-shared
 SONAME_FLAGS=
 RLD_FLAG=
+TEMPLATE_AR="$AR"
+TEMPLATE_ARFLAGS="$ARFLAGS"
 case "$canonical_host_type" in
   *-*-386bsd* | *-*-openbsd* | *-*-netbsd* | *-*-freebsd*)
     SH_LD=ld
@@ -791,6 +793,13 @@ changequote([,])dnl
       SH_LDFLAGS=-G
     fi
     RLD_FLAG='-R $(octlibdir)'
+    # Template closures in archive libraries need a different mechanism.
+    if test "$GXX" = "yes"; then
+      true
+    else
+      TEMPLATE_AR="$CXX"
+      TEMPLATE_ARFLAGS="-xar -o"
+    fi
   ;;
 esac
 
@@ -809,6 +818,8 @@ AC_MSG_RESULT([defining SH_LD to be $SH_
 AC_MSG_RESULT([defining SH_LDFLAGS to be $SH_LDFLAGS])
 AC_MSG_RESULT([defining SONAME_FLAGS to be $SONAME_FLAGS])
 AC_MSG_RESULT([defining RLD_FLAG to be $RLD_FLAG])
+AC_MSG_RESULT([defining TEMPLATE_AR to be $TEMPLATE_AR])
+AC_MSG_RESULT([defining TEMPLATE_ARFLAGS to be $TEMPLATE_ARFLAGS])
 AC_SUBST(FPICFLAG)
 AC_SUBST(CPICFLAG)
 AC_SUBST(CXXPICFLAG)
@@ -818,6 +829,8 @@ AC_SUBST(SH_LD)
 AC_SUBST(SH_LDFLAGS)
 AC_SUBST(SONAME_FLAGS)
 AC_SUBST(RLD_FLAG)
+AC_SUBST(TEMPLATE_AR)
+AC_SUBST(TEMPLATE_ARFLAGS)
 
 ### Allow compilation of smaller kernel.  This only works if some form
 ### of dynamic linking is also supported and used.
Index: Makeconf.in
===================================================================
RCS file: /home/khan/src/math/CVSROOT/octave-dev/Makeconf.in,v
retrieving revision 1.2
diff -u -3 -p -r1.2 Makeconf.in
--- Makeconf.in 2001/02/04 00:40:46     1.2
+++ Makeconf.in 2001/02/04 18:24:33
@@ -33,6 +33,9 @@ GPERF = @GPERF@
 AR = @AR@
 ARFLAGS = @ARFLAGS@ 
 
+TEMPLATE_AR = @TEMPLATE_AR@
+TEMPLATE_ARFLAGS = @TEMPLATE_ARFLAGS@
+
 RANLIB = @RANLIB@
 
 LN_S = @LN_S@
Index: liboctave/Makefile.in
===================================================================
RCS file: /home/khan/src/math/CVSROOT/octave-dev/liboctave/Makefile.in,v
retrieving revision 1.1.1.1
diff -u -3 -p -r1.1.1.1 Makefile.in
--- liboctave/Makefile.in       2001/02/03 04:30:18     1.1.1.1
+++ liboctave/Makefile.in       2001/02/04 18:24:33
@@ -163,7 +163,7 @@ endif
 
 liboctave.$(LIBEXT): $(OBJECTS)
        rm -f $@
-       $(AR) $(ARFLAGS) $@ $^
+       $(TEMPLATE_AR) $(TEMPLATE_ARFLAGS) $@ $^
        $(RANLIB) $@
 
 liboctave.$(SHLEXT): liboctave.$(SHLEXT_VER)
Index: src/Makefile.in
===================================================================
RCS file: /home/khan/src/math/CVSROOT/octave-dev/src/Makefile.in,v
retrieving revision 1.2
diff -u -3 -p -r1.2 Makefile.in
--- src/Makefile.in     2001/02/04 00:43:44     1.2
+++ src/Makefile.in     2001/02/04 18:24:33
@@ -232,7 +232,7 @@ libraries: $(LIBRARIES)
 
 liboctinterp.$(LIBEXT): $(OBJECTS)
        rm -f $@
-       $(AR) $(ARFLAGS) $@ $^
+       $(TEMPLATE_AR) $(TEMPLATE_ARFLAGS) $@ $^
        $(RANLIB) $@
 
 liboctinterp.$(SHLEXT): liboctinterp.$(SHLEXT_VER)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]