/[pcre]/code/trunk/NON-UNIX-USE
ViewVC logotype

Diff of /code/trunk/NON-UNIX-USE

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 135 by ph10, Thu Mar 29 09:09:33 2007 UTC revision 200 by ph10, Wed Aug 1 09:10:40 2007 UTC
# Line 7  This document contains the following sec Line 7  This document contains the following sec
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 under Windows with BCC5.5    Building under Windows with BCC5.5
13    Building PCRE on OpenVMS    Building PCRE on OpenVMS
# Line 14  This document contains the following sec Line 15  This document contains the following sec
15    
16  GENERAL  GENERAL
17    
18  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
19  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
20  anything other than Unix-like systems are untested by me.  anything other than Unix-like systems are untested by me.
21    
# Line 23  site that you may find useful. See Line 24  site that you may find useful. See
24    
25    ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/Contrib    ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/Contrib
26    
27  If you want to compile PCRE for a non-Unix system (or perhaps, more strictly,  If you want to compile PCRE for a non-Unix system (especially for a system that
28  for a system that does not support "configure" and "make" files), note that  does not support "configure" and "make" files), note that the basic PCRE
29  the basic PCRE library consists entirely of code written in Standard C, and so  library consists entirely of code written in Standard C, and so should compile
30  should compile successfully on any system that has a Standard C compiler and  successfully on any system that has a Standard C compiler and library. The C++
31  library. The C++ wrapper functions are a separate issue (see below).  wrapper functions are a separate issue (see below).
32    
33    The PCRE distribution contains some experimental support for "cmake", but this
34    is incomplete and not documented. However if you are a "cmake" user you might
35    like to try building with "cmake".
36    
37    
38  GENERIC INSTRUCTIONS FOR THE PCRE C LIBRARY  GENERIC INSTRUCTIONS FOR THE PCRE C LIBRARY
39    
40  The following are generic comments about building the PCRE C library "by hand".  The following are generic comments about building the PCRE C library "by hand".
41    
42  (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
43      settings that it contains to whatever is appropriate for your environment.       settings that it contains to whatever is appropriate for your environment.
44      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
45      define the NEWLINE macro.       define the NEWLINE macro.
46    
47      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
48      compiler command line to make any changes that you need.       compiler command line to make any changes that you need.
49    
50  (2) Copy or rename the file pcre.h.generic as pcre.h.       NOTE: There have been occasions when the way in which certain parameters
51         in config.h are used has changed between releases. (In the configure/make
52  (3) EITHER:       world, this is handled automatically.) When upgrading to a new release,
53        Copy or rename file pcre_chartables.c.dist as pcre_chartables.c.       you are strongly advised to review config.h.generic before re-using what
54         you had previously.
55      OR:  
56        Compile dftables.c as a stand-alone program, and then run it with the   (2) Copy or rename the file pcre.h.generic as pcre.h.
57        single argument "pcre_chartables.c". This generates a set of standard  
58        character tables and writes them to that file. The tables are generated   (3) EITHER:
59        using the default C locale for your system. If you want to use a locale         Copy or rename file pcre_chartables.c.dist as pcre_chartables.c.
60        that is specified by LC_xxx environment variables, add the -L option to  
61        the dftables command. You must use this method if you are building on       OR:
62        a system that uses EBCDIC code.         Compile dftables.c as a stand-alone program, and then run it with the
63           single argument "pcre_chartables.c". This generates a set of standard
64      The tables in pcre_chartables.c are defaults. The caller of PCRE can         character tables and writes them to that file. The tables are generated
65      specify alternative tables at run time.         using the default C locale for your system. If you want to use a locale
66           that is specified by LC_xxx environment variables, add the -L option to
67  (4) Compile the following source files:         the dftables command. You must use this method if you are building on
68           a system that uses EBCDIC code.
69        pcre_chartables.c  
70        pcre_compile.c       The tables in pcre_chartables.c are defaults. The caller of PCRE can
71        pcre_config.c       specify alternative tables at run time.
72        pcre_dfa_exec.c  
73        pcre_exec.c   (4) Ensure that you have the following header files:
74        pcre_fullinfo.c  
75        pcre_get.c         pcre_internal.h
76        pcre_globals.c         ucp.h
77        pcre_info.c         ucpinternal.h
78        pcre_maketables.c         ucptable.h
79        pcre_newline.c  
80        pcre_ord2utf8.c   (5) Also ensure that you have the following file, which is #included as source
81        pcre_refcount.c       when building a debugging version of PCRE and is also used by pcretest.
82        pcre_study.c  
83        pcre_tables.c         pcre_printint.src
84        pcre_try_flipped.c  
85        pcre_ucp_searchfuncs.c   (6) Compile the following source files:
86        pcre_valid_utf8.c  
87        pcre_version.c         pcre_chartables.c
88        pcre_xclass.c         pcre_compile.c
89           pcre_config.c
90      Now link them all together into an object library in whichever form your         pcre_dfa_exec.c
91      system keeps such libraries. This is the basic PCRE C library. If your         pcre_exec.c
92      system has static and shared libraries, you may have to do this once for         pcre_fullinfo.c
93      each type.         pcre_get.c
94           pcre_globals.c
95  (5) Similarly, compile pcreposix.c and link it (on its own) as the pcreposix         pcre_info.c
96      library.         pcre_maketables.c
97           pcre_newline.c
98  (6) Compile the test program pcretest.c. This needs the functions in the         pcre_ord2utf8.c
99      pcre and pcreposix libraries when linking.         pcre_refcount.c
100           pcre_study.c
101  (7) Run pcretest on the testinput files in the testdata directory, and check         pcre_tables.c
102      that the output matches the corresponding testoutput files. Note that the         pcre_try_flipped.c
103      supplied files are in Unix format, with just LF characters as line         pcre_ucp_searchfuncs.c
104      terminators. You may need to edit them to change this if your system uses a         pcre_valid_utf8.c
105      different convention.         pcre_version.c
106           pcre_xclass.c
107    
108         Make sure that you include -I. in the compiler command (or equivalent for
109         an unusual compiler) so that all included PCRE header files are first
110         sought in the current directory. Otherwise you run the risk of picking up
111         a previously-installed file from somewhere else.
112    
113     (7) Now link all the compiled code into an object library in whichever form
114         your system keeps such libraries. This is the basic PCRE C library. If
115         your system has static and shared libraries, you may have to do this once
116         for each type.
117    
118     (8) Similarly, compile pcreposix.c and link the result (on its own) as the
119         pcreposix library.
120    
121     (9) Compile the test program pcretest.c. This needs the functions in the
122         pcre and pcreposix libraries when linking. It also needs the
123         pcre_printint.src source file, which it #includes.
124    
125    (10) Run pcretest on the testinput files in the testdata directory, and check
126         that the output matches the corresponding testoutput files. Note that the
127         supplied files are in Unix format, with just LF characters as line
128         terminators. You may need to edit them to change this if your system uses
129         a different convention.
130    
131  (8) 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
132      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).
133    
134    
135  THE C++ WRAPPER FUNCTIONS  THE C++ WRAPPER FUNCTIONS
# Line 121  additional files. The following files in Line 150  additional files. The following files in
150  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.
151    
152    
153    STACK SIZE IN WINDOWS ENVIRONMENTS
154    
155    The default processor stack size of 1Mb in some Windows environments is too
156    small for matching patterns that need much recursion. In particular, test 2 may
157    fail because of this. Normally, running out of stack causes a crash, but there
158    have been cases where the test program has just died silently. See your linker
159    documentation for how to increase stack size if you experience problems. The
160    Linux default of 8Mb is a reasonable choice for the stack, though even that can
161    be too small for some pattern/subject combinations. There is more about stack
162    usage in the "pcrestack" documentation.
163    
164    
165  COMMENTS ABOUT WIN32 BUILDS  COMMENTS ABOUT WIN32 BUILDS
166    
167  There are two ways of building PCRE on Windows systems: using MinGW or using  There are two ways of building PCRE using the "configure, make, make install"
168  Cygwin. These are not at all the same thing, and are completely different from  paradigm on Windows systems: using MinGW or using Cygwin. These are not at all
169  each other.  the same thing; they are completely different from each other. There is also
170    some experimental, undocumented support for building using "cmake", which you
171    might like to try if you are familiar with "cmake". However, at the present
172    time, the "cmake" process builds only a static library (not a dll), and the
173    tests are not automatically run.
174    
175  The MinGW home page (http://www.mingw.org/) says this:  The MinGW home page (http://www.mingw.org/) says this:
176    
# Line 150  On both MinGW and Cygwin, PCRE should bu Line 195  On both MinGW and Cygwin, PCRE should bu
195    
196    ./configure && make && make install    ./configure && make && make install
197    
198  However, if you want to statically link your program against the .a file, you  This should create two libraries called libpcre and libpcreposix, and, if you
199  must define PCRE_STATIC before including pcre.h, otherwise the pcre_malloc()  have enabled building the C++ wrapper, a third one called libpcrecpp. These are
200  and pcre_free() exported functions will be declared __declspec(dllimport), with  independent libraries: when you like with libpcreposix or libpcrecpp you must
201    also link with libpcre, which contains the basic functions. (Some earlier
202    releases of PCRE included the basic libpcre functions in libpcreposix. This no
203    longer happens.)
204    
205    If you want to statically link your program against a non-dll .a file, you must
206    define PCRE_STATIC before including pcre.h, otherwise the pcre_malloc() and
207    pcre_free() exported functions will be declared __declspec(dllimport), with
208  unwanted results.  unwanted results.
209    
210  Using Cygwin's compiler generates libraries and executables that depend on  Using Cygwin's compiler generates libraries and executables that depend on
# Line 181  gcc and MinGW's gcc). So, a user can: Line 233  gcc and MinGW's gcc). So, a user can:
233    
234  The test files that are supplied with PCRE are in Unix format, with LF  The test files that are supplied with PCRE are in Unix format, with LF
235  characters as line terminators. It may be necessary to change the line  characters as line terminators. It may be necessary to change the line
236  terminators in order to get some of the tests to work. We hope to improves  terminators in order to get some of the tests to work. We hope to improve
237  things in this area in future.  things in this area in future.
238    
239    
# Line 263  $! Locale could not be set to fr Line 315  $! Locale could not be set to fr
315  $!  $!
316  =========================  =========================
317    
318  Last Updated: 26 March 2007  Last Updated: 01 August 2007
319  ****  ****

Legend:
Removed from v.135  
changed lines
  Added in v.200

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12