/[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 441 by ph10, Wed Sep 9 10:37:29 2009 UTC revision 727 by ph10, Mon Oct 10 10:35:50 2011 UTC
# Line 12  This document contains the following sec Line 12  This document contains the following sec
12    Comments about Win32 builds    Comments about Win32 builds
13    Building PCRE on Windows with CMake    Building PCRE on Windows with CMake
14    Use of relative paths with CMake on Windows    Use of relative paths with CMake on Windows
15    Testing with runtest.bat    Testing with RunTest.bat
16    Building under Windows with BCC5.5    Building under Windows with BCC5.5
17    Building PCRE on OpenVMS    Building PCRE on OpenVMS
18    Building PCRE on Stratus OpenVOS    Building PCRE on Stratus OpenVOS
19    
20    
21  GENERAL  GENERAL
# Line 37  wrapper functions are a separate issue ( Line 37  wrapper functions are a separate issue (
37    
38  The PCRE distribution includes a "configure" file for use by the Configure/Make  The PCRE distribution includes a "configure" file for use by the Configure/Make
39  build system, as found in many Unix-like environments. There is also support  build system, as found in many Unix-like environments. There is also support
40  support for CMake, which some users prefer, in particular in Windows  for CMake, which some users prefer, especially in Windows environments. See
41  environments. There are some instructions for CMake under Windows in the  the instructions for CMake under Windows in the section entitled "Building
42  section entitled "Building PCRE with CMake" below. CMake can also be used to  PCRE with CMake" below. CMake can also be used to build PCRE in Unix-like
43  build PCRE in Unix-like systems.  systems.
44    
45    
46  GENERIC INSTRUCTIONS FOR THE PCRE C LIBRARY  GENERIC INSTRUCTIONS FOR THE PCRE C LIBRARY
47    
48  The following are generic comments about building the PCRE C library "by hand".  The following are generic instructions for building the PCRE C library "by
49    hand":
50    
51   (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
52       settings that it contains to whatever is appropriate for your environment.       settings that it contains to whatever is appropriate for your environment.
# Line 122  The following are generic comments about Line 123  The following are generic comments about
123       sought in the current directory. Otherwise you run the risk of picking up       sought in the current directory. Otherwise you run the risk of picking up
124       a previously-installed file from somewhere else.       a previously-installed file from somewhere else.
125    
126   (7) Now link all the compiled code into an object library in whichever form   (7) If you have defined SUPPORT_JIT in config.h, you must also compile
127    
128           pcre_jit_compile.c
129    
130         This file #includes sources from the sljit subdirectory, where there
131         should be 16 files, all of whose names begin with "sljit".
132    
133     (8) Now link all the compiled code into an object library in whichever form
134       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
135       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
136       for each type.       for each type.
137    
138   (8) Similarly, compile pcreposix.c (remembering -DHAVE_CONFIG_H if necessary)   (9) Similarly, if you want to build the POSIX wrapper functions, ensure that
139       and link the result (on its own) as the pcreposix library.       you have the pcreposix.h file and then compile pcreposix.c (remembering
140         -DHAVE_CONFIG_H if necessary). Link the result (on its own) as the
141         pcreposix library.
142    
143    (10) Compile the test program pcretest.c (again, don't forget -DHAVE_CONFIG_H).
144         This needs the functions in the PCRE library when linking. It also needs
145         the pcreposix wrapper functions unless you compile it with -DNOPOSIX. The
146         pcretest.c program also needs the pcre_printint.src source file, which it
147         #includes.
148    
149    (11) Run pcretest on the testinput files in the testdata directory, and check
150         that the output matches the corresponding testoutput files. Some tests are
151         relevant only when certain build-time options are selected. For example,
152         test 4 is for UTF-8 support, and will not run if you have build PCRE
153         without it. See the comments at the start of each testinput file. If you
154         have a suitable Unix-like shell, the RunTest script will run the
155         appropriate tests for you.
156    
157         Note that the supplied files are in Unix format, with just LF characters
158         as line terminators. You may need to edit them to change this if your
159         system uses a different convention. If you are using Windows, you probably
160         should use the wintestinput3 file instead of testinput3 (and the
161         corresponding output file). This is a locale test; wintestinput3 sets the
162         locale to "french" rather than "fr_FR", and there some minor output
163         differences.
164    
165    (12) If you have built PCRE with SUPPORT_JIT, the JIT features will be tested
166         by the testdata files. However, you might also like to build and run
167         the JIT test program, pcre_jit_test.c.
168    
169   (9) Compile the test program pcretest.c (again, don't forget -DHAVE_CONFIG_H).  (13) If you want to use the pcregrep command, compile and link pcregrep.c; it
      This needs the functions in the pcre and pcreposix libraries when linking.  
      It also needs the pcre_printint.src source file, which it #includes.  
   
 (10) Run pcretest on the testinput files in the testdata directory, and check  
      that the output matches the corresponding testoutput files. Note that the  
      supplied files are in Unix format, with just LF characters as line  
      terminators. You may need to edit them to change this if your system uses  
      a different convention. If you are using Windows, you probably should use  
      the wintestinput3 file instead of testinput3 (and the corresponding output  
      file). This is a locale test; wintestinput3 sets the locale to "french"  
      rather than "fr_FR", and there some minor output differences.  
   
 (11) If you want to use the pcregrep command, compile and link pcregrep.c; it  
170       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).
171    
172    
# Line 184  significantly slower when this is done. Line 207  significantly slower when this is done.
207  LINKING PROGRAMS IN WINDOWS ENVIRONMENTS  LINKING PROGRAMS IN WINDOWS ENVIRONMENTS
208    
209  If you want to statically link a program against a PCRE library in the form of  If you want to statically link a program against a PCRE library in the form of
210  a non-dll .a file, you must define PCRE_STATIC before including pcre.h,  a non-dll .a file, you must define PCRE_STATIC before including pcre.h or
211  otherwise the pcre_malloc() and pcre_free() exported functions will be declared  pcrecpp.h, otherwise the pcre_malloc() and pcre_free() exported functions will
212  __declspec(dllimport), with unwanted results.  be declared __declspec(dllimport), with unwanted results.
213    
214    
215  CALLING CONVENTIONS IN WINDOWS ENVIRONMENTS  CALLING CONVENTIONS IN WINDOWS ENVIRONMENTS
# Line 206  There are two ways of building PCRE usin Line 229  There are two ways of building PCRE usin
229  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
230  the same thing; they are completely different from each other. There is also  the same thing; they are completely different from each other. There is also
231  support for building using CMake, which some users find a more straightforward  support for building using CMake, which some users find a more straightforward
232  way of building PCRE under Windows. However, the tests are not run  way of building PCRE under Windows.
 automatically when CMake is used.  
233    
234  The MinGW home page (http://www.mingw.org/) says this:  The MinGW home page (http://www.mingw.org/) says this:
235    
# Line 234  On both MinGW and Cygwin, PCRE should bu Line 256  On both MinGW and Cygwin, PCRE should bu
256    
257  This should create two libraries called libpcre and libpcreposix, and, if you  This should create two libraries called libpcre and libpcreposix, and, if you
258  have enabled building the C++ wrapper, a third one called libpcrecpp. These are  have enabled building the C++ wrapper, a third one called libpcrecpp. These are
259  independent libraries: when you like with libpcreposix or libpcrecpp you must  independent libraries: when you link with libpcreposix or libpcrecpp you must
260  also link with libpcre, which contains the basic functions. (Some earlier  also link with libpcre, which contains the basic functions. (Some earlier
261  releases of PCRE included the basic libpcre functions in libpcreposix. This no  releases of PCRE included the basic libpcre functions in libpcreposix. This no
262  longer happens.)  longer happens.)
# Line 271  gcc and MinGW's gcc). So, a user can: Line 293  gcc and MinGW's gcc). So, a user can:
293  . Build binaries that depend on cygwin1.dll by using Cygwin with the normal  . Build binaries that depend on cygwin1.dll by using Cygwin with the normal
294    compiler flags.    compiler flags.
295    
296  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
297  characters as line terminators. It may be necessary to change the line  characters as line terminators. Unless your PCRE library uses a default newline
298  terminators in order to get some of the tests to work. We hope to improve  option that includes LF as a valid newline, it may be necessary to change the
299  things in this area in future.  line terminators in the test files to get some of the tests to work.
   
300    
301  BUILDING PCRE ON WINDOWS WITH CMAKE  BUILDING PCRE ON WINDOWS WITH CMAKE
302    
303  CMake is an alternative configuration facility that can be used instead of the  CMake is an alternative configuration facility that can be used instead of the
304  traditional Unix "configure". CMake creates project files (make files, solution  traditional Unix "configure". CMake creates project files (make files, solution
305  files, etc.) tailored to numerous development environments, including Visual  files, etc.) tailored to numerous development environments, including Visual
306  Studio, Borland, Msys, MinGW, NMake, and Unix. The following instructions  Studio, Borland, Msys, MinGW, NMake, and Unix.  If possible, use short paths
307  were contributed by a PCRE user.  with no spaces in the names for your CMake installation and your pcre
308    source and build directories.
309    
310    The following instructions were contributed by a PCRE user.
311    
312  1.  Install the latest CMake version available from http://www.cmake.org/, and  1.  Install the latest CMake version available from http://www.cmake.org/, and
313      ensure that cmake\bin is on your path.      ensure that cmake\bin is on your path.
314    
315  2.  Unzip (retaining folder structure) the PCRE source tree into a source  2.  Unzip (retaining folder structure) the PCRE source tree into a source
316      directory such as C:\pcre.      directory such as C:\pcre. You should ensure your local date and time
317        is not earlier than the file dates in your source dir if the release is
318        very new.
319    
320  3.  Create a new, empty build directory, for example C:\pcre\build\  3.  Create a new, empty build directory, preferably a subdirectory of the
321        source dir. For example, C:\pcre\pcre-xx\build.
322    
323  4.  Run cmake-gui from the Shell envirornment of your build tool, for example,  4.  Run cmake-gui from the Shell envirornment of your build tool, for example,
324      Msys for Msys/MinGW or Visual Studio Command Prompt for VC/VC++.      Msys for Msys/MinGW or Visual Studio Command Prompt for VC/VC++.
325    
326  5.  Enter C:\pcre\pcre-xx and C:\pcre\build for the source and build  5.  Enter C:\pcre\pcre-xx and C:\pcre\pcre-xx\build for the source and build
327      directories, respectively.      directories, respectively.
328    
329  6.  Hit the "Configure" button.  6.  Hit the "Configure" button.
# Line 304  were contributed by a PCRE user. Line 331  were contributed by a PCRE user.
331  7.  Select the particular IDE / build tool that you are using (Visual  7.  Select the particular IDE / build tool that you are using (Visual
332      Studio, MSYS makefiles, MinGW makefiles, etc.)      Studio, MSYS makefiles, MinGW makefiles, etc.)
333    
334  8.  The GUI will then list several configuration options. This is where  8.  The GUI will then list several configuration options. This is where
335      you can enable UTF-8 support or other PCRE optional features.      you can enable UTF-8 support or other PCRE optional features.
336    
337  9.  Hit "Configure" again. The adjacent "Generate" button should now be  9.  Hit "Configure" again. The adjacent "Generate" button should now be
338      active.      active.
339    
340  10. Hit "Generate".  10. Hit "Generate".
# Line 315  were contributed by a PCRE user. Line 342  were contributed by a PCRE user.
342  11. The build directory should now contain a usable build system, be it a  11. The build directory should now contain a usable build system, be it a
343      solution file for Visual Studio, makefiles for MinGW, etc. Exit from      solution file for Visual Studio, makefiles for MinGW, etc. Exit from
344      cmake-gui and use the generated build system with your compiler or IDE.      cmake-gui and use the generated build system with your compiler or IDE.
345        E.g., for MinGW you can run "make", or for Visual Studio, open the PCRE
346        solution, select the desired configuration (Debug, or Release, etc.) and
347        build the ALL_BUILD project.
348    
349    12. If during configuration with cmake-gui you've elected to build the test
350        programs, you can execute them by building the test project. E.g., for
351        MinGW: "make test"; for Visual Studio build the RUN_TESTS project. The
352        most recent build configuration is targeted by the tests. A summary of
353        test results is presented. Complete test output is subsequently
354        available for review in Testing\Temporary under your build dir.
355    
356  USE OF RELATIVE PATHS WITH CMAKE ON WINDOWS  USE OF RELATIVE PATHS WITH CMAKE ON WINDOWS
357    
# Line 347  RelativePath="pcre_chartables.c.rule"> Line 383  RelativePath="pcre_chartables.c.rule">
383    
384  TESTING WITH RUNTEST.BAT  TESTING WITH RUNTEST.BAT
385    
386  1. Copy RunTest.bat into the directory where pcretest.exe has been created.  If configured with CMake, building the test project ("make test" or building
387    ALL_TESTS in Visual Studio) creates (and runs) pcre_test.bat (and depending
388    on your configuration options, possibly other test programs) in the build
389    directory. Pcre_test.bat runs RunTest.Bat with correct source and exe paths.
390    
391    For manual testing with RunTest.bat, provided the build dir is a subdirectory
392    of the source directory: Open command shell window. Chdir to the location
393    of your pcretest.exe and pcregrep.exe programs. Call RunTest.bat with
394    "..\RunTest.Bat" or "..\..\RunTest.bat" as appropriate.
395    
396    To run only a particular test with RunTest.Bat provide a test number argument.
397    
398  2. Edit RunTest.bat and insert a line that indentifies the relative location of  Otherwise:
    the pcre source, e.g.:  
399    
400     set srcdir=..\pcre-7.4-RC3  1. Copy RunTest.bat into the directory where pcretest.exe and pcregrep.exe
401       have been created.
402    
403  3. Run RunTest.bat from a command shell environment. Test outputs will  2. Edit RunTest.bat to indentify the full or relative location of
404     automatically be compared to expected results, and discrepancies will     the pcre source (wherein which the testdata folder resides), e.g.:
    identified in the console output.  
405    
406  4. To test pcrecpp, run pcrecpp_unittest.exe, pcre_stringpiece_unittest.exe and     set srcdir=C:\pcre\pcre-8.20
    pcre_scanner_unittest.exe.  
407    
408    3. In a Windows command environment, chdir to the location of your bat and
409    exe programs.
410    
411    4. Run RunTest.bat. Test outputs will automatically be compared to expected
412    results, and discrepancies will be identified in the console output.
413    
414    To independently test the just-in-time compiler, run pcre_jit_test.exe.
415    To test pcrecpp, run pcrecpp_unittest.exe, pcre_stringpiece_unittest.exe and
416    pcre_scanner_unittest.exe.
417    
418  BUILDING UNDER WINDOWS WITH BCC5.5  BUILDING UNDER WINDOWS WITH BCC5.5
419    
# Line 460  I built pcre on OpenVOS Release 17.0.1at Line 513  I built pcre on OpenVOS Release 17.0.1at
513  problems. I used the following packages to build PCRE:  problems. I used the following packages to build PCRE:
514    
515    ftp://ftp.stratus.com/pub/vos/posix/ga/posix.save.evf.gz    ftp://ftp.stratus.com/pub/vos/posix/ga/posix.save.evf.gz
516    
517  Please read and follow the instructions that come with these packages. To start  Please read and follow the instructions that come with these packages. To start
518  the build of pcre, from the root of the package type:  the build of pcre, from the root of the package type:
519    
# Line 487  optional component I chose to disable it Line 540  optional component I chose to disable it
540    
541  5. Known Problems  5. Known Problems
542    
543  I ran a the test suite, but you will have to be your own judge of whether this  I ran the test suite, but you will have to be your own judge of whether this
544  command, and this port, suits your purposes. If you find any problems that  command, and this port, suits your purposes. If you find any problems that
545  appear to be related to the port itself, please let me know. Please see the  appear to be related to the port itself, please let me know. Please see the
546  build.log file in the root of the package also.  build.log file in the root of the package also.
547    
548    
549  =========================  =========================
550  Last Updated: 09 September 2009  Last Updated: 9 October 2011
551  ****  ****

Legend:
Removed from v.441  
changed lines
  Added in v.727

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12