@c Copyright (C) 2001-2023 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.

@c Version number and development mode.
@c version-GCC is @set to the base GCC version number.
@c DEVELOPMENT is @set for an in-development version, @clear for a
@c release version (corresponding to ``experimental''/anything else
@c in gcc/DEV-PHASE).

@include gcc-vers.texi

@c Common macros to support generating man pages:

@macro gcctabopt{body}
@code{\body\}
@end macro
@macro gccoptlist{body}
@smallexample
\body\
@end smallexample
@end macro

@c For FSF printing, define FSFPRINT.  Also update the ISBN and last
@c printing date for the manual being printed.
@c @set FSFPRINT
@ifset FSFPRINT
@smallbook
@finalout
@c Cause even numbered pages to be printed on the left hand side of
@c the page and odd numbered pages to be printed on the right hand
@c side of the page.  Using this, you can print on both sides of a
@c sheet of paper and have the text on the same part of the sheet.

@c The text on right hand pages is pushed towards the right hand
@c margin and the text on left hand pages is pushed toward the left
@c hand margin.
@c (To provide the reverse effect, set bindingoffset to -0.75in.)
@tex
\global\bindingoffset=0.75in
\global\normaloffset =0.75in
@end tex
@end ifset

@c Macro to generate a "For the N.N.N version" subtitle on the title
@c page of TeX documentation.  This macro should be used in the
@c titlepage environment after the title and any other subtitles have
@c been placed, and before any authors are placed.
@macro versionsubtitle
@ifclear DEVELOPMENT
@subtitle For @sc{gcc} version @value{version-GCC}
@end ifclear
@ifset DEVELOPMENT
@subtitle For @sc{gcc} version @value{version-GCC} (pre-release)
@end ifset
@ifset VERSION_PACKAGE
@sp 1
@subtitle @value{VERSION_PACKAGE}
@end ifset
@c Even if there are no authors, the second titlepage line should be
@c forced to the bottom of the page.
@vskip 0pt plus 1filll
@end macro

@c Convenience macro for defining builtins, in similar spirit
@c to @deftypefun for functions.  These macros provide syntax similar
@c to @deftypefun, except all arguments are passed as a single
@c argument, by being wrapped in curly braces.
@macro defbuiltin {rest}
@deftypefn {Built-in Function} \rest\
@end macro

@macro defbuiltinx {rest}
@deftypefnx {Built-in Function} \rest\
@end macro

@macro enddefbuiltin
@end deftypefn
@end macro
