Patchwork [quadmath] PR 46543: Add first documentation

login
register
mail settings
Submitter Tobias Burnus
Date Dec. 7, 2010, 9:26 p.m.
Message ID <4CFEA66F.8060901@net-b.de>
Download mbox | patch
Permalink /patch/74598/
State New
Headers show

Comments

Tobias Burnus - Dec. 7, 2010, 9:26 p.m.
Tobias Burnus wrote:
> Updated patch attached. Other changes: Support --with-bugurl,  fixed 
> AC_ARG_ENABLE usage and remove LICENSES from this patch (into a 
> separate patch).

Changes relative to http://gcc.gnu.org/ml/gcc/2010-12/msg00162.html
- Use AS_HELP_STRING as suggested by Andreas
- Use gcc-patches@ instead of gcc@

OK for trunk?

Tobias
Ralf Wildenhues - Dec. 8, 2010, 7:03 a.m.
* Tobias Burnus wrote on Tue, Dec 07, 2010 at 10:26:07PM CET:
> Changes relative to http://gcc.gnu.org/ml/gcc/2010-12/msg00162.html
> - Use AS_HELP_STRING as suggested by Andreas
> - Use gcc-patches@ instead of gcc@
> 
> OK for trunk?

Build bits are OK (and I think the rest was approved already).
The copyright year in libquadmath.texi is 2011 which I think is wrong,
but lemme check if I overslept ...

Thanks,
Ralf

> 2010-12-07  Tobias Burnus  <burnus@net-b.de>
> 
> 	PR fortran/46543
> 	* configure.ac: Add texinfo checks.
> 	* Makefile.am: Handle .texi documentation.
> 	* libquadmath.texi: New.
> 	* configure: Regenerated.
> 	* Makefile.in: Regenerated.
Tobias Burnus - Dec. 8, 2010, 8:22 a.m.
On 12/08/2010 08:03 AM, Ralf Wildenhues wrote:
>> OK for trunk?
> Build bits are OK (and I think the rest was approved already).
> The copyright year in libquadmath.texi is 2011 which I think is wrong,
> but lemme check if I overslept ...

Thanks for the review! Committed as Rev. 167583.

Regarding the year, I checked but 2011 looks indeed odd, I only found 
the years 2010, 5771, 99, 1432, Heisei 22,* and some others. I have thus 
decided that 2010 seems to be the best choice.

Tobias

(*Years of the Gregorian calender (and several others), the Hebrew, the 
Taiwanese, the Islamic and the Japanese  nengo/era name calender.)
Eric Botcazou - Jan. 2, 2011, 9 p.m.
> Changes relative to http://gcc.gnu.org/ml/gcc/2010-12/msg00162.html
> - Use AS_HELP_STRING as suggested by Andreas
> - Use gcc-patches@ instead of gcc@

libquadmath now fails to build if makeinfo isn't installed on the system:

make[3]: Entering directory 
`/nfs/nile/nile.build/botcazou/gcc-head/sparc-sun-solaris2.10/sparc-sun-solaris2.10/libquadmath'
restore=: && backupdir=".am$$" && \
        rm -rf $backupdir && mkdir $backupdir && \
        if (/nile.build/botcazou/gcc-head/src/missing 
makeinfo --split-size=5000000 --split-size=5000000 --version) >/dev/null 
2>&1; then \
          for f in libquadmath.info libquadmath.info-[0-9] 
libquadmath.info-[0-9][0-9] libquadmath.i[0-9] libquadmath.i[0-9][0-9]; do \
            if test -f $f; then mv $f $backupdir; restore=mv; else :; fi; \
          done; \
        else :; fi && \
        if /nile.build/botcazou/gcc-head/src/missing 
makeinfo --split-size=5000000 --split-size=5000000  -I /nile.build/botcazou/gcc-head/src/libquadmath/../gcc/doc/include -I /nile.build/botcazou/gcc-head/src/libquadmath 
\
         -o libquadmath.info `test -f 'libquadmath.texi' || 
echo '/nile.build/botcazou/gcc-head/src/libquadmath/'`libquadmath.texi; \
        then \
          rc=0; \
        else \
          rc=$?; \
          $restore $backupdir/* `echo "./libquadmath.info" | sed 's|
[^/]*$||'`; \
        fi; \
        rm -rf $backupdir; exit $rc
WARNING: `makeinfo' is missing on your system.  You should only need it if
         you modified a `.texi' or `.texinfo' file, or any other file
         indirectly affecting the aspect of the manual.  The spurious
         call might also be the consequence of using a buggy `make' (AIX,
         DU, IRIX).  You might want to install the `Texinfo' package or
         the `GNU make' package.  Grab either from any GNU archive site.
make[3]: *** [libquadmath.info] Error 1


There is apparently a dependency on libquadmath.info via INFO_DEPS:

INFO_DEPS = libquadmath.info
Ralf Wildenhues - Jan. 3, 2011, 10:08 p.m.
Hello,

* Eric Botcazou wrote on Sun, Jan 02, 2011 at 10:00:24PM CET:
> > Changes relative to http://gcc.gnu.org/ml/gcc/2010-12/msg00162.html
> > - Use AS_HELP_STRING as suggested by Andreas
> > - Use gcc-patches@ instead of gcc@
> 
> libquadmath now fails to build if makeinfo isn't installed on the system:

>         if /nile.build/botcazou/gcc-head/src/missing 
> makeinfo --split-size=5000000 --split-size=5000000  -I /nile.build/botcazou/gcc-head/src/libquadmath/../gcc/doc/include -I /nile.build/botcazou/gcc-head/src/libquadmath 
> \
>          -o libquadmath.info `test -f 'libquadmath.texi' || 
> echo '/nile.build/botcazou/gcc-head/src/libquadmath/'`libquadmath.texi; \
>         then \
>           rc=0; \
>         else \
>           rc=$?; \
>           $restore $backupdir/* `echo "./libquadmath.info" | sed 's|
> [^/]*$||'`; \
>         fi; \
>         rm -rf $backupdir; exit $rc
> WARNING: `makeinfo' is missing on your system.  You should only need it if
>          you modified a `.texi' or `.texinfo' file, or any other file
[...]
> make[3]: *** [libquadmath.info] Error 1
> 
> 
> There is apparently a dependency on libquadmath.info via INFO_DEPS:
> 
> INFO_DEPS = libquadmath.info

In what way is that different from, say, libgomp?
IIUC makeinfo is required for the development tree.

In a release tarball, .info files should be present in the source tree,
causing 'missing makeinfo' to only warn but not fail.

Thanks,
Ralf
Eric Botcazou - Jan. 3, 2011, 11:39 p.m.
> In what way is that different from, say, libgomp?
> IIUC makeinfo is required for the development tree.

libgomp doesn't fail to build in this configuration.  In fact, all components
used to build in this configuration (except maybe libjava) up to the patch.

Patch

2010-12-07  Tobias Burnus  <burnus@net-b.de>

	PR fortran/46543
	* configure.ac: Add texinfo checks.
	* Makefile.am: Handle .texi documentation.
	* libquadmath.texi: New.
	* configure: Regenerated.
	* Makefile.in: Regenerated.

Index: libquadmath/Makefile.am
===================================================================
--- libquadmath/Makefile.am	(Revision 167556)
+++ libquadmath/Makefile.am	(Arbeitskopie)
@@ -105,4 +105,46 @@ 
 
 MAKEOVERRIDES=
 
+# AM_CONDITIONAL on configure option --generated-files-in-srcdir
+if GENINSRC
+STAMP_GENINSRC = stamp-geninsrc
+else
+STAMP_GENINSRC =
 endif
+
+# AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO])
+if BUILD_INFO
+STAMP_BUILD_INFO = stamp-build-info
+else
+STAMP_BUILD_INFO =
+endif
+
+
+all-local: $(STAMP_GENINSRC)
+
+stamp-geninsrc: libquadmath.info
+	cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info
+	@touch $@
+
+libquadmath.info: $(STAMP_BUILD_INFO)
+
+stamp-build-info: libquadmath.texi
+	$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi
+	@touch $@
+
+CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) libquadmath.info
+MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info
+
+endif
+
+
+# Automake Documentation:
+# If your package has Texinfo files in many directories, you can use the
+# variable TEXINFO_TEX to tell Automake where to find the canonical
+# `texinfo.tex' for your package. The value of this variable should be
+# the relative path from the current `Makefile.am' to `texinfo.tex'.
+TEXINFO_TEX   = ../gcc/doc/include/texinfo.tex
+
+# Defines info, dvi, pdf and html targets
+MAKEINFOFLAGS = -I $(srcdir)/../gcc/doc/include
+info_TEXINFOS = libquadmath.texi
Index: libquadmath/configure.ac
===================================================================
--- libquadmath/configure.ac	(Revision 167556)
+++ libquadmath/configure.ac	(Arbeitskopie)
@@ -30,7 +30,8 @@ 
 
 AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
 AC_ARG_ENABLE(version-specific-runtime-libs,
-[  --enable-version-specific-runtime-libs    Specify that runtime libraries should be installed in a compiler-specific directory ],
+AS_HELP_STRING([--enable-version-specific-runtime-libs],
+ [specify that runtime libraries should be installed in a compiler-specific directory]),
 [case "$enableval" in
  yes) version_specific_libs=yes ;;
  no)  version_specific_libs=no ;;
@@ -41,6 +42,14 @@ 
 
 GCC_NO_EXECUTABLES
 
+# See if makeinfo has been installed and is modern enough
+# that we can use it.
+ACX_CHECK_PROG_VER([MAKEINFO], [makeinfo], [--version],
+                   [GNU texinfo.* \([0-9][0-9.]*\)],
+                   [4.[4-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
+AM_CONDITIONAL(BUILD_INFO, test $gcc_cv_prog_makeinfo_modern = "yes")
+
+
 # Configure libtool
 AM_PROG_LIBTOOL
 ACX_LT_HOST_FLAGS
@@ -187,5 +196,25 @@ 
   multilib_arg=
 fi
 
+
+# We would like our source tree to be readonly. However when releases or
+# pre-releases are generated, the flex/bison generated files as well as the
+# various formats of manuals need to be included along with the rest of the
+# sources.  Therefore we have --enable-generated-files-in-srcdir to do 
+# just that.
+AC_MSG_CHECKING(generated-files-in-srcdir)
+AC_ARG_ENABLE(generated-files-in-srcdir,
+AS_HELP_STRING([--enable-generated-files-in-srcdir],
+ [put copies of generated files in source dir intended for creating source tarballs for users without texinfo bison or flex]),
+[case "$enableval" in
+ yes) enable_generated_files_in_srcdir=yes ;;
+ no)  enable_generated_files_in_srcdir=no ;;
+ *)   AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
+ esac],
+[enable_generated_files_in_srcdir=no])
+AC_MSG_RESULT($enable_generated_files_in_srcdir)
+AM_CONDITIONAL(GENINSRC, test "$enable_generated_files_in_srcdir" = yes)
+
+
 AC_CONFIG_FILES(Makefile)
 AC_OUTPUT
Index: libquadmath/libquadmath.texi
===================================================================
--- libquadmath/libquadmath.texi	(Revision 0)
+++ libquadmath/libquadmath.texi	(Revision 0)
@@ -0,0 +1,291 @@ 
+\input texinfo @c -*-texinfo-*-
+
+@c %**start of header
+@setfilename libquadmath.info
+@settitle GCC libquadmath
+@c %**end of header
+
+@copying
+Copyright @copyright{} 2011 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.2 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to
+copy and modify this GNU manual.
+@end quotation
+@end copying
+
+@ifinfo
+@dircategory GNU Libraries
+@direntry
+* libquadmath: (libquadmath).                  GCC Quad-Precision Math Library
+@end direntry
+
+This manual documents the GCC Quad-Precision Math Library API.
+
+Published by the Free Software Foundation
+51 Franklin Street, Fifth Floor
+Boston, MA 02110-1301 USA
+
+@insertcopying
+@end ifinfo
+
+
+@setchapternewpage odd
+
+@titlepage
+@title The GCC Quad-Precision Math Library
+@page
+@vskip 0pt plus 1filll
+@comment For the @value{version-GCC} Version*
+@sp 1
+Published by the Free Software Foundation @*
+51 Franklin Street, Fifth Floor@*
+Boston, MA 02110-1301, USA@*
+@sp 1
+@insertcopying
+@end titlepage
+
+@summarycontents
+@contents
+@page
+
+
+@node Top
+@top Introduction
+@cindex Introduction
+
+This manual documents the usage of libquadmath, the GCC Quad-Precision
+Math Library Application Programming Interface (API).
+
+
+@comment
+@comment  When you add a new menu item, please keep the right hand
+@comment  aligned to the same column.  Do not use tabs.  This provides
+@comment  better formatting.
+@comment
+@menu
+* Math Library Routines::      The Libquadmath math runtime application
+                               programming interface.
+* I/O Library Routines::       The Libquadmath I/O runtime application
+                               programming interface.
+* GNU Free Documentation License::
+                               How you can copy and share this manual.
+* Reporting Bugs::             How to report bugs in GCC Libquadmath.
+@c * Index::                      Index of this documentation.
+@end menu
+
+
+@c ---------------------------------------------------------------------
+@c Math routines
+@c ---------------------------------------------------------------------
+
+@node Math Library Routines
+@chapter Math Library Routines
+
+The following mathematical functions are available:
+
+@table @asis
+@item @code{acosq}: arc cosine function
+@item @code{acoshq}: inverse hyperbolic cosine function
+@item @code{asinq}: arc sine function
+@item @code{asinhq}: inverse hyperbolic sine function
+@item @code{atanq}: arc tangent function
+@item @code{atanhq}: inverse hyperbolic tangent function
+@item @code{atan2q}: arc tangent function
+@item @code{cbrtq}: cube root function
+@item @code{ceilq}: ceiling value function
+@item @code{copysignq}: copy sign of a number
+@item @code{coshq}: hyperbolic cosine function
+@item @code{cosq}: cosine function
+@item @code{erfq}: error function
+@item @code{erfcq}: complementary error function
+@item @code{expq}: exponential function
+@item @code{expm1q}: exponential minus 1 function
+@need 800
+@item @code{fabsq}: absolute value function
+@item @code{finiteq}: check finiteness of value
+@item @code{floorq}: floor value function
+@item @code{fmodq}: remainder value function
+@item @code{frexpq}: extract mantissa and exponent
+@item @code{hypotq}: Eucledian distance function
+@item @code{isinfq}: check for infinity
+@item @code{isnanq}: check for not a number
+@item @code{j0q}: Bessel function of the first kind, first order
+@item @code{j1q}: Bessel function of the first kind, second order
+@item @code{jnq}: Bessel function of the first kind, @var{n}-th order
+@item @code{ldexpq}: load exponent of the value
+@item @code{lgammaq}: logarithmic gamma function
+@item @code{llroundq}: round to nearest integer value away from zero
+@item @code{logq}: natural logarithm function
+@item @code{log10q}: base 10 logarithm function
+@item @code{log1pq}: compute natural logarithm of the value plus one
+@need 800
+@item @code{lroundq}: round to nearest integer value away from zero
+@item @code{modfq}: decompose the floating-point number
+@item @code{nanq}: return quiet NaN
+@item @code{nextafterq}: next representable floating-point number
+@item @code{powq}: power function
+@item @code{remainderq}: remainder function
+@item @code{rintq}: round-to-nearest integral value
+@item @code{roundq}: round-to-nearest integral value, return @code{__float128}
+@item @code{scalblnq}: compute exponent using @code{FLT_RADIX}
+@item @code{scalbnq}: compute exponent using @code{FLT_RADIX}
+@item @code{signbitq}: return sign bit
+@item @code{sincosq}: calculate sine and cosine simulataneously
+@item @code{sinhq}: hyperbolic sine function
+@item @code{sinq}: sine function
+@item @code{sqrtq}: square root function
+@item @code{tanq}: tangent function
+@item @code{tanhq}: hyperbolic tangent function
+@need 800
+@item @code{tgammaq}: true gamma function
+@item @code{truncq}: round to integer, towards zero
+@item @code{y0q}: Bessel function of the second kind, first order
+@item @code{y1q}: Bessel function of the second kind, second order
+@item @code{ynq}: Bessel function of the second kind, @var{n}-th order
+@item @code{cabsq} complex absolute value function:
+@item @code{cargq}: calculate the argument
+@item @code{ccosq} complex cosine function:
+@item @code{ccoshq}: complex hyperbolic cosine function
+@item @code{cexpq}: complex exponential function
+@item @code{cexpiq}: computes the exponential function of ``i'' times a
+                     real value
+@item @code{clogq}: complex natural logarithm
+@item @code{clog10q}: complex base 10 logarithm
+@item @code{cpowq}: complex power function
+@item @code{csinq}: complex sine function
+@item @code{csinhq}: complex hyperbolic sine function
+@need 800
+@item @code{csqrtq}: complex square root
+@item @code{ctanq}: complex tangent function
+@item @code{ctanhq}: complex hyperbolic tangent function
+@end table
+
+
+@c ---------------------------------------------------------------------
+@c I/O routines
+@c ---------------------------------------------------------------------
+
+@node I/O Library Routines
+@chapter I/O Library Routines
+
+@menu
+* @code{quadmath_strtopQ}:  quadmath_strtopQ,  Convert from string
+* @code{quadmath_dtoaq}:    quadmath_dtoaq,    Convert to string
+@end menu
+
+
+@node quadmath_strtopQ
+@section @code{quadmath_strtopQ} --- Convert from string
+
+The function @code{dmath_strtopQ} converts a string into a
+@code{__float128} number.
+
+@table @asis
+@item Syntax
+@code{int quadmath_strtopQ (const char *s, char **sp, void *V)}
+
+@c The return values are defined in gdtoa/gdtoa.h STRTOG_*
+@c However, the values are currently not exported - thus we
+@c do not define them here, either.
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .70
+@item @var{s}  @tab input string
+@item @var{sp} @tab the address of the next character in the string
+@item @var{V}  @tab @code{__float128} containing the converted number
+@end multitable
+
+The argument @var{sp} contains, if not @code{NULL}, the address of the
+next character following the parts of the string, which have been read.
+
+@item Example
+@smallexample
+#include <quadmath.h>
+
+int main ()
+@{
+  __float128 r;
+  char str[200];
+
+  quadmath_strtopQ ("1.2345678", NULL, &r);
+
+  return 0;
+@}
+@end smallexample
+@end table
+
+
+@node quadmath_dtoaq
+@section @code{quadmath_dtoaq} --- Convert to string
+
+The function @code{quadmath_dtoaq} converts a @code{__float128} floating-point
+number into a string.
+
+@table @asis
+@item Syntax
+@code{void quadmath_dtoaq (char *s, size_t size, size_t n, __float128 x)}
+
+@item @emph{Arguments}:
+@multitable @columnfractions .15 .70
+@item @var{s}    @tab output string
+@item @var{size} @tab byte size of the string, including tailing NUL
+@item @var{n}    @tab number of digits after the decimal point
+@item @var{x}    @tab the number to be converted
+@end multitable
+
+@item Example
+@smallexample
+#include <quadmath.h>
+
+int main ()
+@{
+  __float128 r;
+  char str[200];
+
+  r = 2.0q;
+  r = sqrtq(r);
+  quadmath_dtoaq (str, sizeof (str), 20, r);
+  printf("%s\n", str);
+  /* Prints: +1.41421356237309504880e+00 */
+  return 0;
+@}
+@end smallexample
+@end table
+
+
+@c ---------------------------------------------------------------------
+@c GNU Free Documentation License
+@c ---------------------------------------------------------------------
+
+@include fdl.texi
+
+@c ---------------------------------------------------------------------
+@c Reporting Bugs
+@c ---------------------------------------------------------------------
+
+@node Reporting Bugs
+@chapter Reporting Bugs
+
+Bugs in the GCC Quad-Precision Math Library implementation should be
+reported via @value{BUGURL}.
+
+
+@c ---------------------------------------------------------------------
+@c Index
+@c ---------------------------------------------------------------------
+
+@c @node Index
+@c @unnumbered Index
+@c 
+@c @printindex cp
+
+@bye