This is used in a bunch of places, but nowhere is it ever set, and
nowhere can I find any documentation, nor can I find any other project
using it. So delete the flags to simplify.
This was only ever used for i?86-pc-linux-gnu targets, but that's been
broken for years, and has since been dropped. So clean this up too.
This also deletes the funky objectlist logic since it only existed for
the libtool libraries. Since it was the only thing left in the small
Makefile.shared file, we can punt that too.
This allows building the libc & libm pages in parallel, and drops
the duplication in the subdirs with the chew/chapter settings.
The unused rules in Makefile.shared are left in place to minimize
noise in the change.
This doesn't migrate all the docs, just the libc's manual (pdf/info).
This is to show the basic form of migrating the chew files.
For subdirs that didn't have any docs, I've stripped their settings
for clarity. If someone wanted to suddenly add docs, they can add
the corresponding Makefile.inc files easily.
Generating these files is very cheap, so let's just do it all the time.
This makes the build logic simpler, and keeps errors for slipping in in
codepaths that are not well tested. Creating these files doesn't mean
they'll be included in the manual implicitly.
For example, some of the nano stdio files break documentation because
they don't have any chew directives in them. But no one noticed since
that code path is rarely enabled. So drop the _i and _float def files.
Since automake deprecated the INCLUDES name in favor of AM_CPPFLAGS,
change all existing users over. The generated code is the same since
the two variables have been used in the same exact places by design.
There are other cleanups to be done, but lets focus on just renaming
here so we can upgrade to a newer automake version w/out triggering
new warnings.
The 'cygnus' option was removed from automake 1.13 in 2012, so the
presence of this option prevents that or a later version of automake
being used.
A check-list of the effects of '--cygnus' from the automake 1.12
documentation, and steps taken (where possible) to preserve those
effects (See also this thread [1] for discussion on that):
[1] https://lists.gnu.org/archive/html/bug-automake/2012-03/msg00048.html
1. The foreign strictness is implied.
Already present in AM_INIT_AUTOMAKE in newlib/acinclude.m4
2. The options no-installinfo, no-dependencies and no-dist are implied.
Already present in AM_INIT_AUTOMAKE in newlib/acinclude.m4
Future work: Remove no-dependencies and any explicit header dependencies,
and use automatic dependency tracking instead. Are there explicit rules
which are now redundant to removing no-installinfo and no-dist?
3. The macro AM_MAINTAINER_MODE is required.
Already present in newlib/acinclude.m4
Note that maintainer-mode is still disabled by default.
4. Info files are always created in the build directory, and not in the
source directory.
This appears to be an error in the automake documentation describing
'--cygnus' [2]. newlib's info files are generated in the source
directory, and no special steps are needed to keep doing that.
[2] https://lists.gnu.org/archive/html/bug-automake/2012-04/msg00028.html
5. texinfo.tex is not required if a Texinfo source file is specified.
(The assumption is that the file will be supplied, but in a place that
automake cannot find.)
This effect is overriden by an explicit setting of the TEXINFO_TEX
variable (the directory part of which is fed into texi2X via the
TEXINPUTS environment variable).
6. Certain tools will be searched for in the build tree as well as in the
user's PATH. These tools are runtest, expect, makeinfo and texi2dvi.
For obscure automake reasons, this effect of '--cygnus' is not active
for makeinfo in newlib's configury.
However, there appears to be top-level configury which selects in-tree
runtest, expect and makeinfo, if present. So, if that works as it
appears, this effect is preserved. If not, this may cause problem if
anyone is building those tools in-tree.
This effect is not preserved for texi2dvi. This may cause problems if
anyone is building texinfo in-tree.
If needed, explicit checks for those tools looking in places relative to
$(top_srcdir)/../ as well as in PATH could be added.
7. The check target doesn't depend on all.
This effect is not preseved. The check target now depends on the all
target.
This concern seems somewhat academic given the current state of the
testsuite.
Also note that this doesn't touch libgloss.
Some architectures like ARM encode the short enum option state in the
object file and the linker checks that this option is consistent for all
objects of an executable. In case applications use -fno-short-enums,
then this leads to linker warnings. Use the enum __packed attribute for
the relevent enums to avoid the -fshort-enums compiler option. This
attribute is at least available on GCC, LLVM/clang and the Intel
compiler.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Don't chew files which contain no documentation markup.
Neither of the alternatives for MALLOCR (mallocr.c or nano-mallocr.c) contain
any documentation markup.
2015-06-23 Jon Turney <jon.turney@dronecode.org.uk>
* libc/stdlib/Makefile.am (CHEWOUT_FILES): Remove $(MALLOCR).def.
* libc/stdio/Makefile.am (CHEWOUT_FILES): Remove getwc.def and
putwc.def.
Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>
[!__GNUC__]: Declare real functions for the macros, and make
the macros conditional on !__cplusplus.
* libc/stdio/Makefile.am (ELIX_4_SOURCES): Add stdio_ext.c.
(CHEWOUT_FILES): Add stdio_ext.def.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/stdio.tex: Include stdio_ext.def.
* libc/stdio/stdio_ext.c: New file.
* newlib.hin (_WCHAR_ORIENT): Undef
* configure.in (--enable-newlib-wchar-orient): New option.
* configure: Regenerated.
* libc/configure.in (--enable-newlib-wchar-orient): New option.
* libc/configure: Regenerated.
* libc/stdio/Makefile.am (NEWLIB_WIDE_ORIENT): Use.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/local.h (ORIENT): Use _WCHAR_ORIENT to control
the definition. Add alternative definition.
* libc/stdio/vfprintf.c (__sfputs_r, __sprint_r): Use _WCHAR_ORIENT
to control the wide char output.
* libc/include/wchar.h: Include stdarg.h.
(__VALIST): Define conditionally.
(fwprintf, swprintf, vfwprintf, vswprintf, vwprintf, wprintf: Declare.
(_fwprintf_r, _swprintf_r, _vfwprintf_r, _vswprintf_r, _vwprintf_r,
_wprintf_r): Declare.
* libc/stdio/Makefile.am: Add new files.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fwprintf.c: New file.
* libc/stdio/local.h (_svfwprintf_r, _svfiwprintf_r): Declare.
(__CH_CLASS, __STATE, __ACTION): Move definition from vfprintf.c here
and move to the __ namespace.
(__chclass, __state_table, __action_table): Declare.
* libc/stdio/stdio.tex: Add new documentation references.
* libc/stdio/swprintf.c: New file.
* libc/stdio/vfprintf.c (__SPRINT): New macro to call the right
__sprint_r function according to compilation unit. Use throughout.
(__ssprint_r): Rename STRING_ONLY variant from __sprint_r.
Make externaly available. Only define if INTEGER_ONLY is defined.
(__sprint_r): Make externaly available. Only define if INTEGER_ONLY
is defined. Handle stream orientation.
(__sbprintf): Copy FILE's _flags2 member as well.
(__chclass, __state_table, __action_table): Prepend __ to name and
make externally available.
* libc/stdio/vfwprintf.c: New file.
* libc/stdio/vswprintf.c: New file.
* libc/stdio/vwprintf.c: New file.
* libc/stdio/wprintf.c: New file.
* libc/stdio/Makefile.am: Build vfprintf.c and vfscanf.c with
-DSTRING_ONLY defined with and without -DINTEGER_ONLY defined
to build special versions for sprintf/sscanf family functions.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/vfprintf.c[STRING_ONLY][INTEGER_ONLY](_VFPRINTF_R):
Redefine to be _svfiprintf_r which is optimized to work with siprintf
family of functions (i.e. no I/O) and does not support floating-point.
[STRING_ONLY][!INTEGER_ONLY](_VFPRINTF_R): Redefine to be
_svfprintf_r which is optimized to work with sprintf family of
functions and not use I/O.
[STRING_ONLY](__sprint_r): New string only version of static function.
designed to work with sprintf family of functions.
* libc/stdio/vfscanf.c[STRING_ONLY][INTEGER_ONLY](_SVFSCANF_R):
Redefine to be _ssvfiscanf_r which is optimized to work with siscanf
family of functions (i.e. no I/O) and no float-point support.
[STRING_ONLY][!INTEGER_ONLY](_SVFSCANF_R): Redefine to be
__ssvfscanf_r which is optimized to work with sscanf family of
functions and does not require I/O functions.
* libc/stdio/asprintf.c: Call _svfprintf_r instead of _vfprintf_r.
* libc/stdio/snprintf.c: Ditto.
* libc/stdio/sprintf.c: Ditto.
* libc/stdio/vasnprintf.c: Ditto.
* libc/stdio/vasprintf.c: Ditto.
* libc/stdio/siprintf.c: Call _svfiprintf_r instead of _vfiprintf_r.
* libc/stdio/sniprintf.c: Ditto.
* libc/stdio/vasiprintf.c: Ditto.
* libc/stdio/vsiprintf.c: Ditto.
* libc/stdio/vsniprintf.c: Ditto.
* libc/stdio/vsprintf.c: Ditto.
* libc/stdio/local.h: Add prototypes for _svfprintf_r, _svfiprintf_r,
_ssvfscanf_r, and _ssvfiscanf_r.
* libc/stdio/sscanf.c: Call _ssvfscanf_r instead of _svfscanf_r.
* libc/stdio/vsscanf.c: Ditto.
* libc/stdio/siscanf.c: Call _ssvfiscanf_r instead of _svfiscanf_r.
* libc/stdio/vsiscanf.c: Ditto.
* libc/stdio/ungetc.c: Document ungetc.
* libc/stdio/Makefile.am (CHEWOUT_FILES): Sort, match current list
of files with documentation.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/stdio.tex: Sort and update stdio documentation index.
* libc/include/stdio.h: Add new iprintf and iscanf variants. Also
do some reordering.
* libc/machine/powerpc/vfscanf.c: Remove __sccl function.
* libc/stdio/Makefile.am: Add support for new iprintf and iscanf
family functions.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/fiprintf.c: Remove doc to siprintf.c.
* libc/stdio/iprintf.c: Ditto.
* libc/stdio/local.h (__svfiscanf_r): New prototype.
* libc/stdio/siprintf.c: Add docs for various iprintf family functions.
* libc/stdio/sniprintf.c: Move docs to siprintf.c.
* libc/stdio/stdio.tex: Add new functions.
* libc/stdio/vfscanf.c: Split out __sccl function to separate
file and add special name defines so this file can be used
to build vfiscanf.o.
* libc/stdio/asiprintf.c: New file.
* libc/stdio/fiscanf.c: Ditto.
* libc/stdio/iscanf.c: Ditto.
* libc/stdio/sccl.c: Ditto.
* libc/stdio/siscanf.c: Ditto.
* libc/stdio/vasiprintf.c: Ditto.
* libc/stdio/viprintf.c: Ditto.
* libc/stdio/viscanf.c: Ditto.
* libc/stdio/vsiprintf.c: Ditto.
* libc/stdio/vsiscanf.c: Ditto.
* libc/stdio/vsniprintf.c: Ditto.
* configure.host: Add check for --enable-newlib-io-pos-args
and define WANT_IO_POS_ARGS flag if enabled. Define
the flag by default for x86-linux configurations.
* configure.in: Add support for --enable-newlib-io-pos-args.
* libc/configure.in: Ditto.
* configure: Regenerated.
* libc/configure: Ditto.
* libc/stdio/Makefile.am: Specify -fshort-enums for compiling
vfprintf.c and vfiprintf.c.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/vfprintf.c: Add positional argument support that
is enabled by compiling with -DWANT_IO_POS_ARGS.
* libc/include/stdio.h (__getline, __getdelim): New prototypes.
* libc/include/time.h [HAVE_GETDATE](getdate, getdate_r): Ditto.
[HAVE_GETDATE](getdate_err): New error code.
* libc/stdio/Makefile.am: Add support for getline.c and getdelim.c.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/getdelim.c: New file.
* libc/stdio/getline.c: Ditto.
* libc/sys/linux/Makefile.am: Add support for getdate.c, getdate_err.c
and ntp_gettime.c. Also add AM_CFLAGS to point to libc/stdio.
* libc/sys/linux/Makefile.in: Regenerated.
* libc/sys/linux/getdate.c: New file.
* libc/sys/linux/getdate_err.c: Ditto.
* libc/sys/linux/ntp_gettime.c: Ditto.
* libc/sys/linux/time.c (adjtimex, ntp_adjtime): New functions.
* libc/sys/linux/sys/stdio.h (getline, getdelim): New macros.
* libc/stdio/Makefile.am: Modify to add setbuffer.c and setlinebuf.c.
* libc/stdio/Makefile.in: Regenerated.
* libc/stdio/setbuffer.c: New file.
* libc/stdio/setlinebuf.c: New file.
* libc/stdio/getchar_u.c: New file.
* libc/stdio/putc_u.c: New file.
* libc/stdio/putchar_u.c: New file.
* libc/include/stdio.h: Add declarations for getc_unlocked,
getchar_unlocked, putc_unlocked and putchar_unlocked.
* libc/stdio/Makefile.am (LIB_SOURCES): Add new files.
(CHEWOUT_FILES): Add new files' .def's.
* libc/stdio/putchar.c (_putchar_r): Replace __sputc with putc.
$(COMPILE) rather than $(CC).
* libc/stdio/Makefile.am (LIB_COMPILE): Likewise.
(vfprintf.$(oext)): Remove $(INCLUDES), made redundant by
$(LIB_COMPILE) change.
(vfiprintf.$(oext)): Likewise.
* libc/include/stdio.h[!_REENT_ONLY]: Moved various functions together
into one list.
[!__STRICT_ANSI__]: Moved non-ANSI I/O functions in this list.
(vfscanf, vscanf, vsscanf, _vfscanf_r, _vscanf_r, _vsscanf_r): New
function prototypes.
(_fscanf_r, _sscanf_r): Ditto.
* libc/include/stdlib.h: Added _strtod_r prototype.
* libc/stdio/Makefile.am: Add new v*scanf functions.
* libc/stdio/Makefile.in: Regenerate.
* libc/stdio/fscanf.c: Reorganized so HAVE_STDC only affects prototype
and code is shared. Added reentrant _fscanf_r which calls __svfscanf_r. * libc/stdio/scanf.c: Changed to call __svfscanf_r.
* libc/stdio/sscanf.c: Changed documentation to add reentrant routines.
(sscanf): Changed to call __svfscanf_r with _REENT argument.
(_sscanf_r): New routine.
* libc/stdio/local.h: Removed __svfscanf prototype and replaced it
with __svfscanf_r prototype.
* libc/stdio/vfscanf.c (vfscanf, _vfscanf_r: New
routines.
(__svfscanf_r): Reentrant version of __svfscanf which takes reetrancy
structure as argument as calls reentrant versions of helper functions
(e.g. _strtol_r, _strtoul_r). Also replaced calls to atol and atof
to _strtol_r and _strtod_r respectively.
* libc/stdio/vfscanf.c: Also changed __svfscanf to call __svfscanf_r.
* libc/stdlib/strtod.c (strtod): Changed to call _strtod_r with
_REENT argument.
* libc/stdio/vscanf.c: New file.
* libc/stdio/vsscanf.c: Ditto.
(CHEWOUT_FILES): Added getw.def and putw.def.
* libc/stdio/Makefile.in: Rebuilt.
* libc/stdio/stdio.tex: Include getw.def and putw.def.
* libc/stdio/getw.c: New file.
* libc/stdio/putw.c: New file.