tools/pcre/doc/pcrebuild.3
author Nicholas Hastings <skamonkey@gmail.com>
Sun Jul 15 12:31:06 2012 -0400 (2012-07-15)
changeset 3579 6d730190a3e4
parent 2762 d2d467bf1b5a
child 3831 babd0eee3c5e
permissions -rw-r--r--
Added missing files to each core and logic makefiles (NPOTB).
     1 .TH PCREBUILD 3
     2 .SH NAME
     3 PCRE - Perl-compatible regular expressions
     4 .SH "PCRE BUILD-TIME OPTIONS"
     5 .rs
     6 .sp
     7 This document describes the optional features of PCRE that can be selected when
     8 the library is compiled. It assumes use of the \fBconfigure\fP script, where
     9 the optional features are selected or deselected by providing options to
    10 \fBconfigure\fP before running the \fBmake\fP command. However, the same
    11 options can be selected in both Unix-like and non-Unix-like environments using
    12 the GUI facility of \fBCMakeSetup\fP if you are using \fBCMake\fP instead of
    13 \fBconfigure\fP to build PCRE.
    14 .P
    15 The complete list of options for \fBconfigure\fP (which includes the standard
    16 ones such as the selection of the installation directory) can be obtained by
    17 running
    18 .sp
    19   ./configure --help
    20 .sp
    21 The following sections include descriptions of options whose names begin with
    22 --enable or --disable. These settings specify changes to the defaults for the
    23 \fBconfigure\fP command. Because of the way that \fBconfigure\fP works,
    24 --enable and --disable always come in pairs, so the complementary option always
    25 exists as well, but as it specifies the default, it is not described.
    26 .
    27 .SH "C++ SUPPORT"
    28 .rs
    29 .sp
    30 By default, the \fBconfigure\fP script will search for a C++ compiler and C++
    31 header files. If it finds them, it automatically builds the C++ wrapper library
    32 for PCRE. You can disable this by adding
    33 .sp
    34   --disable-cpp
    35 .sp
    36 to the \fBconfigure\fP command.
    37 .
    38 .SH "UTF-8 SUPPORT"
    39 .rs
    40 .sp
    41 To build PCRE with support for UTF-8 Unicode character strings, add
    42 .sp
    43   --enable-utf8
    44 .sp
    45 to the \fBconfigure\fP command. Of itself, this does not make PCRE treat
    46 strings as UTF-8. As well as compiling PCRE with this option, you also have
    47 have to set the PCRE_UTF8 option when you call the \fBpcre_compile()\fP
    48 function.
    49 .P
    50 If you set --enable-utf8 when compiling in an EBCDIC environment, PCRE expects
    51 its input to be either ASCII or UTF-8 (depending on the runtime option). It is
    52 not possible to support both EBCDIC and UTF-8 codes in the same version of the
    53 library. Consequently, --enable-utf8 and --enable-ebcdic are mutually
    54 exclusive.
    55 .
    56 .SH "UNICODE CHARACTER PROPERTY SUPPORT"
    57 .rs
    58 .sp
    59 UTF-8 support allows PCRE to process character values greater than 255 in the
    60 strings that it handles. On its own, however, it does not provide any
    61 facilities for accessing the properties of such characters. If you want to be
    62 able to use the pattern escapes \eP, \ep, and \eX, which refer to Unicode
    63 character properties, you must add
    64 .sp
    65   --enable-unicode-properties
    66 .sp
    67 to the \fBconfigure\fP command. This implies UTF-8 support, even if you have
    68 not explicitly requested it.
    69 .P
    70 Including Unicode property support adds around 30K of tables to the PCRE
    71 library. Only the general category properties such as \fILu\fP and \fINd\fP are
    72 supported. Details are given in the
    73 .\" HREF
    74 \fBpcrepattern\fP
    75 .\"
    76 documentation.
    77 .
    78 .SH "CODE VALUE OF NEWLINE"
    79 .rs
    80 .sp
    81 By default, PCRE interprets the linefeed (LF) character as indicating the end
    82 of a line. This is the normal newline character on Unix-like systems. You can
    83 compile PCRE to use carriage return (CR) instead, by adding
    84 .sp
    85   --enable-newline-is-cr
    86 .sp
    87 to the \fBconfigure\fP command. There is also a --enable-newline-is-lf option,
    88 which explicitly specifies linefeed as the newline character.
    89 .sp
    90 Alternatively, you can specify that line endings are to be indicated by the two
    91 character sequence CRLF. If you want this, add
    92 .sp
    93   --enable-newline-is-crlf
    94 .sp
    95 to the \fBconfigure\fP command. There is a fourth option, specified by
    96 .sp
    97   --enable-newline-is-anycrlf
    98 .sp
    99 which causes PCRE to recognize any of the three sequences CR, LF, or CRLF as
   100 indicating a line ending. Finally, a fifth option, specified by
   101 .sp
   102   --enable-newline-is-any
   103 .sp
   104 causes PCRE to recognize any Unicode newline sequence.
   105 .P
   106 Whatever line ending convention is selected when PCRE is built can be
   107 overridden when the library functions are called. At build time it is
   108 conventional to use the standard for your operating system.
   109 .
   110 .SH "WHAT \eR MATCHES"
   111 .rs
   112 .sp
   113 By default, the sequence \eR in a pattern matches any Unicode newline sequence,
   114 whatever has been selected as the line ending sequence. If you specify
   115 .sp
   116   --enable-bsr-anycrlf
   117 .sp
   118 the default is changed so that \eR matches only CR, LF, or CRLF. Whatever is
   119 selected when PCRE is built can be overridden when the library functions are
   120 called.
   121 .
   122 .SH "BUILDING SHARED AND STATIC LIBRARIES"
   123 .rs
   124 .sp
   125 The PCRE building process uses \fBlibtool\fP to build both shared and static
   126 Unix libraries by default. You can suppress one of these by adding one of
   127 .sp
   128   --disable-shared
   129   --disable-static
   130 .sp
   131 to the \fBconfigure\fP command, as required.
   132 .
   133 .SH "POSIX MALLOC USAGE"
   134 .rs
   135 .sp
   136 When PCRE is called through the POSIX interface (see the
   137 .\" HREF
   138 \fBpcreposix\fP
   139 .\"
   140 documentation), additional working storage is required for holding the pointers
   141 to capturing substrings, because PCRE requires three integers per substring,
   142 whereas the POSIX interface provides only two. If the number of expected
   143 substrings is small, the wrapper function uses space on the stack, because this
   144 is faster than using \fBmalloc()\fP for each call. The default threshold above
   145 which the stack is no longer used is 10; it can be changed by adding a setting
   146 such as
   147 .sp
   148   --with-posix-malloc-threshold=20
   149 .sp
   150 to the \fBconfigure\fP command.
   151 .
   152 .SH "HANDLING VERY LARGE PATTERNS"
   153 .rs
   154 .sp
   155 Within a compiled pattern, offset values are used to point from one part to
   156 another (for example, from an opening parenthesis to an alternation
   157 metacharacter). By default, two-byte values are used for these offsets, leading
   158 to a maximum size for a compiled pattern of around 64K. This is sufficient to
   159 handle all but the most gigantic patterns. Nevertheless, some people do want to
   160 process enormous patterns, so it is possible to compile PCRE to use three-byte
   161 or four-byte offsets by adding a setting such as
   162 .sp
   163   --with-link-size=3
   164 .sp
   165 to the \fBconfigure\fP command. The value given must be 2, 3, or 4. Using
   166 longer offsets slows down the operation of PCRE because it has to load
   167 additional bytes when handling them.
   168 .
   169 .SH "AVOIDING EXCESSIVE STACK USAGE"
   170 .rs
   171 .sp
   172 When matching with the \fBpcre_exec()\fP function, PCRE implements backtracking
   173 by making recursive calls to an internal function called \fBmatch()\fP. In
   174 environments where the size of the stack is limited, this can severely limit
   175 PCRE's operation. (The Unix environment does not usually suffer from this
   176 problem, but it may sometimes be necessary to increase the maximum stack size.
   177 There is a discussion in the
   178 .\" HREF
   179 \fBpcrestack\fP
   180 .\"
   181 documentation.) An alternative approach to recursion that uses memory from the
   182 heap to remember data, instead of using recursive function calls, has been
   183 implemented to work round the problem of limited stack size. If you want to
   184 build a version of PCRE that works this way, add
   185 .sp
   186   --disable-stack-for-recursion
   187 .sp
   188 to the \fBconfigure\fP command. With this configuration, PCRE will use the
   189 \fBpcre_stack_malloc\fP and \fBpcre_stack_free\fP variables to call memory
   190 management functions. By default these point to \fBmalloc()\fP and
   191 \fBfree()\fP, but you can replace the pointers so that your own functions are
   192 used.
   193 .P
   194 Separate functions are provided rather than using \fBpcre_malloc\fP and
   195 \fBpcre_free\fP because the usage is very predictable: the block sizes
   196 requested are always the same, and the blocks are always freed in reverse
   197 order. A calling program might be able to implement optimized functions that
   198 perform better than \fBmalloc()\fP and \fBfree()\fP. PCRE runs noticeably more
   199 slowly when built in this way. This option affects only the \fBpcre_exec()\fP
   200 function; it is not relevant for the the \fBpcre_dfa_exec()\fP function.
   201 .
   202 .SH "LIMITING PCRE RESOURCE USAGE"
   203 .rs
   204 .sp
   205 Internally, PCRE has a function called \fBmatch()\fP, which it calls repeatedly
   206 (sometimes recursively) when matching a pattern with the \fBpcre_exec()\fP
   207 function. By controlling the maximum number of times this function may be
   208 called during a single matching operation, a limit can be placed on the
   209 resources used by a single call to \fBpcre_exec()\fP. The limit can be changed
   210 at run time, as described in the
   211 .\" HREF
   212 \fBpcreapi\fP
   213 .\"
   214 documentation. The default is 10 million, but this can be changed by adding a
   215 setting such as
   216 .sp
   217   --with-match-limit=500000
   218 .sp
   219 to the \fBconfigure\fP command. This setting has no effect on the
   220 \fBpcre_dfa_exec()\fP matching function.
   221 .P
   222 In some environments it is desirable to limit the depth of recursive calls of
   223 \fBmatch()\fP more strictly than the total number of calls, in order to
   224 restrict the maximum amount of stack (or heap, if --disable-stack-for-recursion
   225 is specified) that is used. A second limit controls this; it defaults to the
   226 value that is set for --with-match-limit, which imposes no additional
   227 constraints. However, you can set a lower limit by adding, for example,
   228 .sp
   229   --with-match-limit-recursion=10000
   230 .sp
   231 to the \fBconfigure\fP command. This value can also be overridden at run time.
   232 .
   233 .SH "CREATING CHARACTER TABLES AT BUILD TIME"
   234 .rs
   235 .sp
   236 PCRE uses fixed tables for processing characters whose code values are less
   237 than 256. By default, PCRE is built with a set of tables that are distributed
   238 in the file \fIpcre_chartables.c.dist\fP. These tables are for ASCII codes
   239 only. If you add
   240 .sp
   241   --enable-rebuild-chartables
   242 .sp
   243 to the \fBconfigure\fP command, the distributed tables are no longer used.
   244 Instead, a program called \fBdftables\fP is compiled and run. This outputs the
   245 source for new set of tables, created in the default locale of your C runtime
   246 system. (This method of replacing the tables does not work if you are cross
   247 compiling, because \fBdftables\fP is run on the local host. If you need to
   248 create alternative tables when cross compiling, you will have to do so "by
   249 hand".)
   250 .
   251 .SH "USING EBCDIC CODE"
   252 .rs
   253 .sp
   254 PCRE assumes by default that it will run in an environment where the character
   255 code is ASCII (or Unicode, which is a superset of ASCII). This is the case for
   256 most computer operating systems. PCRE can, however, be compiled to run in an
   257 EBCDIC environment by adding
   258 .sp
   259   --enable-ebcdic
   260 .sp
   261 to the \fBconfigure\fP command. This setting implies
   262 --enable-rebuild-chartables. You should only use it if you know that you are in
   263 an EBCDIC environment (for example, an IBM mainframe operating system). The
   264 --enable-ebcdic option is incompatible with --enable-utf8.
   265 .
   266 .SH "PCREGREP OPTIONS FOR COMPRESSED FILE SUPPORT"
   267 .rs
   268 .sp
   269 By default, \fBpcregrep\fP reads all files as plain text. You can build it so
   270 that it recognizes files whose names end in \fB.gz\fP or \fB.bz2\fP, and reads
   271 them with \fBlibz\fP or \fBlibbz2\fP, respectively, by adding one or both of
   272 .sp
   273   --enable-pcregrep-libz
   274   --enable-pcregrep-libbz2
   275 .sp
   276 to the \fBconfigure\fP command. These options naturally require that the
   277 relevant libraries are installed on your system. Configuration will fail if
   278 they are not.
   279 .
   280 .SH "PCRETEST OPTION FOR LIBREADLINE SUPPORT"
   281 .rs
   282 .sp
   283 If you add
   284 .sp
   285   --enable-pcretest-libreadline
   286 .sp
   287 to the \fBconfigure\fP command, \fBpcretest\fP is linked with the
   288 \fBlibreadline\fP library, and when its input is from a terminal, it reads it
   289 using the \fBreadline()\fP function. This provides line-editing and history
   290 facilities. Note that \fBlibreadline\fP is GPL-licenced, so if you distribute a
   291 binary of \fBpcretest\fP linked in this way, there may be licensing issues.
   292 .P
   293 Setting this option causes the \fB-lreadline\fP option to be added to the
   294 \fBpcretest\fP build. In many operating environments with a sytem-installed
   295 \fBlibreadline\fP this is sufficient. However, in some environments (e.g.
   296 if an unmodified distribution version of readline is in use), some extra
   297 configuration may be necessary. The INSTALL file for \fBlibreadline\fP says
   298 this:
   299 .sp
   300   "Readline uses the termcap functions, but does not link with the
   301   termcap or curses library itself, allowing applications which link
   302   with readline the to choose an appropriate library."
   303 .sp
   304 If your environment has not been set up so that an appropriate library is
   305 automatically included, you may need to add something like
   306 .sp
   307   LIBS="-ncurses"
   308 .sp
   309 immediately before the \fBconfigure\fP command.
   310 .
   311 .
   312 .SH "SEE ALSO"
   313 .rs
   314 .sp
   315 \fBpcreapi\fP(3), \fBpcre_config\fP(3).
   316 .
   317 .
   318 .SH AUTHOR
   319 .rs
   320 .sp
   321 .nf
   322 Philip Hazel
   323 University Computing Service
   324 Cambridge CB2 3QH, England.
   325 .fi
   326 .
   327 .
   328 .SH REVISION
   329 .rs
   330 .sp
   331 .nf
   332 Last updated: 17 March 2009
   333 Copyright (c) 1997-2009 University of Cambridge.
   334 .fi