7 |
Generic instructions for the PCRE C library |
Generic instructions for the PCRE C library |
8 |
The C++ wrapper functions |
The C++ wrapper functions |
9 |
Building for virtual Pascal |
Building for virtual Pascal |
10 |
|
Stack size in Windows environments |
11 |
Comments about Win32 builds |
Comments about Win32 builds |
12 |
|
Building PCRE with CMake |
13 |
Building under Windows with BCC5.5 |
Building under Windows with BCC5.5 |
14 |
Building PCRE on OpenVMS |
Building PCRE on OpenVMS |
15 |
|
|
16 |
|
|
17 |
GENERAL |
GENERAL |
18 |
|
|
19 |
I (Philip Hazel) have no knowledge of Windows or VMS sytems and how their |
I (Philip Hazel) have no experience of Windows or VMS sytems and how their |
20 |
libraries work. The items in the PCRE distribution and Makefile that relate to |
libraries work. The items in the PCRE distribution and Makefile that relate to |
21 |
anything other than Unix-like systems are untested by me. |
anything other than Unix-like systems are untested by me. |
22 |
|
|
31 |
successfully on any system that has a Standard C compiler and library. The C++ |
successfully on any system that has a Standard C compiler and library. The C++ |
32 |
wrapper functions are a separate issue (see below). |
wrapper functions are a separate issue (see below). |
33 |
|
|
34 |
The PCRE distribution contains some experimental support for "cmake", but this |
The PCRE distribution includes support for CMake. This support is relatively |
35 |
is incomplete and not documented. However if you are a "cmake" user you might |
new, but has already been used successfully to build PCRE in multiple build |
36 |
like to try building with "cmake". |
environments on Windows. There are some instructions in the section entitled |
37 |
|
"Building PCRE with CMake" below. |
38 |
|
|
39 |
|
|
40 |
GENERIC INSTRUCTIONS FOR THE PCRE C LIBRARY |
GENERIC INSTRUCTIONS FOR THE PCRE C LIBRARY |
44 |
(1) Copy or rename the file config.h.generic as config.h, and edit the macro |
(1) Copy or rename the file config.h.generic as config.h, and edit the macro |
45 |
settings that it contains to whatever is appropriate for your environment. |
settings that it contains to whatever is appropriate for your environment. |
46 |
In particular, if you want to force a specific value for newline, you can |
In particular, if you want to force a specific value for newline, you can |
47 |
define the NEWLINE macro. |
define the NEWLINE macro. When you compile any of the PCRE modules, you |
48 |
|
must specify -DHAVE_CONFIG_H to your compiler so that config.h is included |
49 |
|
in the sources. |
50 |
|
|
51 |
An alternative approach is not to edit config.h, but to use -D on the |
An alternative approach is not to edit config.h, but to use -D on the |
52 |
compiler command line to make any changes that you need. |
compiler command line to make any changes that you need to the |
53 |
|
configuration options. In this case -DHAVE_CONFIG_H must not be set. |
54 |
|
|
55 |
NOTE: There have been occasions when the way in which certain parameters |
NOTE: There have been occasions when the way in which certain parameters |
56 |
in config.h are used has changed between releases. (In the configure/make |
in config.h are used has changed between releases. (In the configure/make |
57 |
world, this is handled automatically.) When upgrading to a new release, |
world, this is handled automatically.) When upgrading to a new release, |
58 |
you are strongly advised to review config.h.generic before re-using what |
you are strongly advised to review config.h.generic before re-using what |
59 |
you had previously. |
you had previously. |
60 |
|
|
61 |
(2) Copy or rename the file pcre.h.generic as pcre.h. |
(2) Copy or rename the file pcre.h.generic as pcre.h. |
62 |
|
|
63 |
(3) EITHER: |
(3) EITHER: |
64 |
Copy or rename file pcre_chartables.c.dist as pcre_chartables.c. |
Copy or rename file pcre_chartables.c.dist as pcre_chartables.c. |
65 |
|
|
66 |
OR: |
OR: |
67 |
Compile dftables.c as a stand-alone program, and then run it with the |
Compile dftables.c as a stand-alone program (using -DHAVE_CONFIG_H if |
68 |
single argument "pcre_chartables.c". This generates a set of standard |
you have set up config.h), and then run it with the single argument |
69 |
character tables and writes them to that file. The tables are generated |
"pcre_chartables.c". This generates a set of standard character tables |
70 |
using the default C locale for your system. If you want to use a locale |
and writes them to that file. The tables are generated using the default |
71 |
that is specified by LC_xxx environment variables, add the -L option to |
C locale for your system. If you want to use a locale that is specified |
72 |
the dftables command. You must use this method if you are building on |
by LC_xxx environment variables, add the -L option to the dftables |
73 |
a system that uses EBCDIC code. |
command. You must use this method if you are building on a system that |
74 |
|
uses EBCDIC code. |
75 |
|
|
76 |
The tables in pcre_chartables.c are defaults. The caller of PCRE can |
The tables in pcre_chartables.c are defaults. The caller of PCRE can |
77 |
specify alternative tables at run time. |
specify alternative tables at run time. |
78 |
|
|
79 |
(4) Ensure that you have the following header files: |
(4) Ensure that you have the following header files: |
80 |
|
|
81 |
pcre_internal.h |
pcre_internal.h |
82 |
ucp.h |
ucp.h |
83 |
ucpinternal.h |
ucpinternal.h |
84 |
ucptable.h |
ucptable.h |
85 |
|
|
86 |
(5) Also ensure that you have the following file, which is #included as source |
(5) Also ensure that you have the following file, which is #included as source |
87 |
when building a debugging version of PCRE and is also used by pcretest. |
when building a debugging version of PCRE and is also used by pcretest. |
88 |
|
|
89 |
pcre_printint.src |
pcre_printint.src |
90 |
|
|
91 |
(6) Compile the following source files: |
(6) Compile the following source files, setting -DHAVE_CONFIG_H as a compiler |
92 |
|
option if you have set up config.h with your configuration, or else use |
93 |
|
other -D settings to change the configuration as required. |
94 |
|
|
95 |
pcre_chartables.c |
pcre_chartables.c |
96 |
pcre_compile.c |
pcre_compile.c |
97 |
pcre_config.c |
pcre_config.c |
112 |
pcre_valid_utf8.c |
pcre_valid_utf8.c |
113 |
pcre_version.c |
pcre_version.c |
114 |
pcre_xclass.c |
pcre_xclass.c |
115 |
|
|
116 |
|
Make sure that you include -I. in the compiler command (or equivalent for |
117 |
|
an unusual compiler) so that all included PCRE header files are first |
118 |
|
sought in the current directory. Otherwise you run the risk of picking up |
119 |
|
a previously-installed file from somewhere else. |
120 |
|
|
121 |
(7) Now link all the compiled code into an object library in whichever form |
(7) Now link all the compiled code into an object library in whichever form |
122 |
your system keeps such libraries. This is the basic PCRE C library. If |
your system keeps such libraries. This is the basic PCRE C library. If |
123 |
your system has static and shared libraries, you may have to do this once |
your system has static and shared libraries, you may have to do this once |
124 |
for each type. |
for each type. |
125 |
|
|
126 |
(8) Similarly, compile pcreposix.c and link the result (on its own) as the |
(8) Similarly, compile pcreposix.c (remembering -DHAVE_CONFIG_H if necessary) |
127 |
pcreposix library. |
and link the result (on its own) as the pcreposix library. |
128 |
|
|
129 |
(9) Compile the test program pcretest.c. This needs the functions in the |
(9) Compile the test program pcretest.c (again, don't forget -DHAVE_CONFIG_H). |
130 |
pcre and pcreposix libraries when linking. It also needs the |
This needs the functions in the pcre and pcreposix libraries when linking. |
131 |
pcre_printint.src source file, which it #includes. |
It also needs the pcre_printint.src source file, which it #includes. |
132 |
|
|
133 |
(10) Run pcretest on the testinput files in the testdata directory, and check |
(10) Run pcretest on the testinput files in the testdata directory, and check |
134 |
that the output matches the corresponding testoutput files. Note that the |
that the output matches the corresponding testoutput files. Note that the |
135 |
supplied files are in Unix format, with just LF characters as line |
supplied files are in Unix format, with just LF characters as line |
136 |
terminators. You may need to edit them to change this if your system uses |
terminators. You may need to edit them to change this if your system uses |
137 |
a different convention. |
a different convention. If you are using Windows, you probably should use |
138 |
|
the wintestinput3 file instead of testinput3 (and the corresponding output |
139 |
|
file). This is a locale test; wintestinput3 sets the locale to "french" |
140 |
|
rather than "fr_FR", and there some minor output differences. |
141 |
|
|
142 |
(11) If you want to use the pcregrep command, compile and link pcregrep.c; it |
(11) If you want to use the pcregrep command, compile and link pcregrep.c; it |
143 |
uses only the basic PCRE library (it does not need the pcreposix library). |
uses only the basic PCRE library (it does not need the pcreposix library). |
161 |
for use with VP/Borland: makevp_c.txt, makevp_l.txt, makevp.bat, pcregexp.pas. |
for use with VP/Borland: makevp_c.txt, makevp_l.txt, makevp.bat, pcregexp.pas. |
162 |
|
|
163 |
|
|
164 |
COMMENTS ABOUT WIN32 BUILDS |
STACK SIZE IN WINDOWS ENVIRONMENTS |
165 |
|
|
166 |
|
The default processor stack size of 1Mb in some Windows environments is too |
167 |
|
small for matching patterns that need much recursion. In particular, test 2 may |
168 |
|
fail because of this. Normally, running out of stack causes a crash, but there |
169 |
|
have been cases where the test program has just died silently. See your linker |
170 |
|
documentation for how to increase stack size if you experience problems. The |
171 |
|
Linux default of 8Mb is a reasonable choice for the stack, though even that can |
172 |
|
be too small for some pattern/subject combinations. |
173 |
|
|
174 |
|
PCRE has a compile configuration option to disable the use of stack for |
175 |
|
recursion so that heap is used instead. However, pattern matching is |
176 |
|
significantly slower when this is done. There is more about stack usage in the |
177 |
|
"pcrestack" documentation. |
178 |
|
|
179 |
|
|
180 |
|
COMMENTS ABOUT WIN32 BUILDS (see also "BUILDING PCRE WITH CMAKE" below) |
181 |
|
|
182 |
There are two ways of building PCRE using the "configure, make, make install" |
There are two ways of building PCRE using the "configure, make, make install" |
183 |
paradigm on Windows systems: using MinGW or using Cygwin. These are not at all |
paradigm on Windows systems: using MinGW or using Cygwin. These are not at all |
252 |
things in this area in future. |
things in this area in future. |
253 |
|
|
254 |
|
|
255 |
|
BUILDING PCRE WITH CMAKE |
256 |
|
|
257 |
|
CMake is an alternative build facility that can be used instead of the |
258 |
|
traditional Unix "configure". CMake version 2.4.7 supports Borland makefiles, |
259 |
|
MinGW makefiles, MSYS makefiles, NMake makefiles, UNIX makefiles, Visual Studio |
260 |
|
6, Visual Studio 7, Visual Studio 8, and Watcom W8. The following instructions |
261 |
|
were contributed by a PCRE user. |
262 |
|
|
263 |
|
1. Download CMake 2.4.7 or above from http://www.cmake.org/, install and ensure |
264 |
|
that cmake\bin is on your path. |
265 |
|
|
266 |
|
2. Unzip (retaining folder structure) the PCRE source tree into a source |
267 |
|
directory such as C:\pcre. |
268 |
|
|
269 |
|
3. Create a new, empty build directory: C:\pcre\build\ |
270 |
|
|
271 |
|
4. Run CMakeSetup from the Shell envirornment of your build tool, e.g., Msys |
272 |
|
for Msys/MinGW or Visual Studio Command Prompt for VC/VC++ |
273 |
|
|
274 |
|
5. Enter C:\pcre\pcre-xx and C:\pcre\build for the source and build |
275 |
|
directories, respectively |
276 |
|
|
277 |
|
6. Hit the "Configure" button. |
278 |
|
|
279 |
|
7. Select the particular IDE / build tool that you are using (Visual Studio, |
280 |
|
MSYS makefiles, MinGW makefiles, etc.) |
281 |
|
|
282 |
|
8. The GUI will then list several configuration options. This is where you can |
283 |
|
enable UTF-8 support, etc. |
284 |
|
|
285 |
|
9. Hit "Configure" again. The adjacent "OK" button should now be active. |
286 |
|
|
287 |
|
10. Hit "OK". |
288 |
|
|
289 |
|
11. The build directory should now contain a usable build system, be it a |
290 |
|
solution file for Visual Studio, makefiles for MinGW, etc. |
291 |
|
|
292 |
|
Testing with RunTest.bat |
293 |
|
|
294 |
|
1. Copy RunTest.bat into the directory where pcretest.exe has been created. |
295 |
|
|
296 |
|
2. Edit RunTest.bat and insert a line that indentifies the relative location of |
297 |
|
the pcre source, e.g.: |
298 |
|
|
299 |
|
set srcdir=..\pcre-7.4-RC3 |
300 |
|
|
301 |
|
3. Run RunTest.bat from a command shell environment. Test outputs will |
302 |
|
automatically be compared to expected results, and discrepancies will |
303 |
|
identified in the console output. |
304 |
|
|
305 |
|
4. To test pcrecpp, run pcrecpp_unittest.exe, pcre_stringpiece_unittest.exe and |
306 |
|
pcre_scanner_unittest.exe. |
307 |
|
|
308 |
|
|
309 |
BUILDING UNDER WINDOWS WITH BCC5.5 |
BUILDING UNDER WINDOWS WITH BCC5.5 |
310 |
|
|
311 |
Michael Roy sent these comments about building PCRE under Windows with BCC5.5: |
Michael Roy sent these comments about building PCRE under Windows with BCC5.5: |
384 |
$! |
$! |
385 |
========================= |
========================= |
386 |
|
|
387 |
Last Updated: 05 July 2007 |
Last Updated: 21 September 2007 |
388 |
**** |
**** |