[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)
- Sun C++ template closure patch,
Mumit Khan <=