Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 1 | Building PCRE2 without using autotools |
| 2 | -------------------------------------- |
| 3 | |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 4 | This document contains the following sections: |
| 5 | |
| 6 | General |
| 7 | Generic instructions for the PCRE2 C library |
| 8 | Stack size in Windows environments |
| 9 | Linking programs in Windows environments |
| 10 | Calling conventions in Windows environments |
| 11 | Comments about Win32 builds |
| 12 | Building PCRE2 on Windows with CMake |
Elliott Hughes | 653c210 | 2019-01-09 15:41:36 -0800 | [diff] [blame] | 13 | Building PCRE2 on Windows with Visual Studio |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 14 | Testing with RunTest.bat |
| 15 | Building PCRE2 on native z/OS and z/VM |
| 16 | |
| 17 | |
| 18 | GENERAL |
| 19 | |
| 20 | The basic PCRE2 library consists entirely of code written in Standard C, and so |
| 21 | should compile successfully on any system that has a Standard C compiler and |
| 22 | library. |
| 23 | |
| 24 | The PCRE2 distribution includes a "configure" file for use by the |
| 25 | configure/make (autotools) build system, as found in many Unix-like |
| 26 | environments. The README file contains information about the options for |
| 27 | "configure". |
| 28 | |
| 29 | There is also support for CMake, which some users prefer, especially in Windows |
| 30 | environments, though it can also be run in Unix-like environments. See the |
| 31 | section entitled "Building PCRE2 on Windows with CMake" below. |
| 32 | |
| 33 | Versions of src/config.h and src/pcre2.h are distributed in the PCRE2 tarballs |
| 34 | under the names src/config.h.generic and src/pcre2.h.generic. These are |
| 35 | provided for those who build PCRE2 without using "configure" or CMake. If you |
| 36 | use "configure" or CMake, the .generic versions are not used. |
| 37 | |
| 38 | |
| 39 | GENERIC INSTRUCTIONS FOR THE PCRE2 C LIBRARY |
| 40 | |
| 41 | The following are generic instructions for building the PCRE2 C library "by |
| 42 | hand". If you are going to use CMake, this section does not apply to you; you |
Elliott Hughes | 378b175 | 2021-06-08 13:42:40 -0700 | [diff] [blame] | 43 | can skip ahead to the CMake section. Note that the settings concerned with |
| 44 | 8-bit, 16-bit, and 32-bit code units relate to the type of data string that |
| 45 | PCRE2 processes. They are NOT referring to the underlying operating system bit |
| 46 | width. You do not have to do anything special to compile in a 64-bit |
| 47 | environment, for example. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 48 | |
| 49 | (1) Copy or rename the file src/config.h.generic as src/config.h, and edit the |
| 50 | macro settings that it contains to whatever is appropriate for your |
| 51 | environment. In particular, you can alter the definition of the NEWLINE |
| 52 | macro to specify what character(s) you want to be interpreted as line |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 53 | terminators by default. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 54 | |
Elliott Hughes | 0c26e19 | 2019-08-07 12:24:46 -0700 | [diff] [blame] | 55 | When you subsequently compile any of the PCRE2 modules, you must specify |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 56 | -DHAVE_CONFIG_H to your compiler so that src/config.h is included in the |
| 57 | sources. |
| 58 | |
| 59 | An alternative approach is not to edit src/config.h, but to use -D on the |
| 60 | compiler command line to make any changes that you need to the |
| 61 | configuration options. In this case -DHAVE_CONFIG_H must not be set. |
| 62 | |
| 63 | NOTE: There have been occasions when the way in which certain parameters |
| 64 | in src/config.h are used has changed between releases. (In the |
| 65 | configure/make world, this is handled automatically.) When upgrading to a |
| 66 | new release, you are strongly advised to review src/config.h.generic |
| 67 | before re-using what you had previously. |
| 68 | |
Elliott Hughes | 0c26e19 | 2019-08-07 12:24:46 -0700 | [diff] [blame] | 69 | Note also that the src/config.h.generic file is created from a config.h |
| 70 | that was generated by Autotools, which automatically includes settings of |
| 71 | a number of macros that are not actually used by PCRE2 (for example, |
| 72 | HAVE_MEMORY_H). |
| 73 | |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 74 | (2) Copy or rename the file src/pcre2.h.generic as src/pcre2.h. |
| 75 | |
| 76 | (3) EITHER: |
| 77 | Copy or rename file src/pcre2_chartables.c.dist as |
| 78 | src/pcre2_chartables.c. |
| 79 | |
| 80 | OR: |
Elliott Hughes | 2dbd7d2 | 2020-06-03 14:32:37 -0700 | [diff] [blame] | 81 | Compile src/pcre2_dftables.c as a stand-alone program (using |
| 82 | -DHAVE_CONFIG_H if you have set up src/config.h), and then run it with |
| 83 | the single argument "src/pcre2_chartables.c". This generates a set of |
| 84 | standard character tables and writes them to that file. The tables are |
| 85 | generated using the default C locale for your system. If you want to use |
| 86 | a locale that is specified by LC_xxx environment variables, add the -L |
| 87 | option to the pcre2_dftables command. You must use this method if you |
| 88 | are building on a system that uses EBCDIC code. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 89 | |
| 90 | The tables in src/pcre2_chartables.c are defaults. The caller of PCRE2 can |
| 91 | specify alternative tables at run time. |
| 92 | |
Elliott Hughes | 378b175 | 2021-06-08 13:42:40 -0700 | [diff] [blame] | 93 | (4) For a library that supports 8-bit code units in the character strings that |
| 94 | it processes, compile the following source files from the src directory, |
| 95 | setting -DPCRE2_CODE_UNIT_WIDTH=8 as a compiler option. Also set |
| 96 | -DHAVE_CONFIG_H if you have set up src/config.h with your configuration, |
| 97 | or else use other -D settings to change the configuration as required. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 98 | |
| 99 | pcre2_auto_possess.c |
| 100 | pcre2_chartables.c |
| 101 | pcre2_compile.c |
| 102 | pcre2_config.c |
| 103 | pcre2_context.c |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 104 | pcre2_convert.c |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 105 | pcre2_dfa_match.c |
| 106 | pcre2_error.c |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 107 | pcre2_extuni.c |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 108 | pcre2_find_bracket.c |
| 109 | pcre2_jit_compile.c |
| 110 | pcre2_maketables.c |
| 111 | pcre2_match.c |
| 112 | pcre2_match_data.c |
| 113 | pcre2_newline.c |
| 114 | pcre2_ord2utf.c |
| 115 | pcre2_pattern_info.c |
Elliott Hughes | 0c26e19 | 2019-08-07 12:24:46 -0700 | [diff] [blame] | 116 | pcre2_script_run.c |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 117 | pcre2_serialize.c |
| 118 | pcre2_string_utils.c |
| 119 | pcre2_study.c |
| 120 | pcre2_substitute.c |
| 121 | pcre2_substring.c |
| 122 | pcre2_tables.c |
| 123 | pcre2_ucd.c |
| 124 | pcre2_valid_utf.c |
| 125 | pcre2_xclass.c |
| 126 | |
| 127 | Make sure that you include -I. in the compiler command (or equivalent for |
| 128 | an unusual compiler) so that all included PCRE2 header files are first |
| 129 | sought in the src directory under the current directory. Otherwise you run |
| 130 | the risk of picking up a previously-installed file from somewhere else. |
| 131 | |
| 132 | Note that you must compile pcre2_jit_compile.c, even if you have not |
| 133 | defined SUPPORT_JIT in src/config.h, because when JIT support is not |
| 134 | configured, dummy functions are compiled. When JIT support IS configured, |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 135 | pcre2_jit_compile.c #includes other files from the sljit subdirectory, |
| 136 | all of whose names begin with "sljit". It also #includes |
| 137 | src/pcre2_jit_match.c and src/pcre2_jit_misc.c, so you should not compile |
| 138 | these yourself. |
| 139 | |
Elliott Hughes | 653c210 | 2019-01-09 15:41:36 -0800 | [diff] [blame] | 140 | Note also that the pcre2_fuzzsupport.c file contains special code that is |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 141 | useful to those who want to run fuzzing tests on the PCRE2 library. Unless |
| 142 | you are doing that, you can ignore it. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 143 | |
| 144 | (5) Now link all the compiled code into an object library in whichever form |
| 145 | your system keeps such libraries. This is the basic PCRE2 C 8-bit library. |
| 146 | If your system has static and shared libraries, you may have to do this |
| 147 | once for each type. |
| 148 | |
Elliott Hughes | 378b175 | 2021-06-08 13:42:40 -0700 | [diff] [blame] | 149 | (6) If you want to build a library that supports 16-bit or 32-bit code units, |
| 150 | (as well as, or instead of the 8-bit library) just supply 16 or 32 as the |
| 151 | value of -DPCRE2_CODE_UNIT_WIDTH when you are compiling. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 152 | |
| 153 | (7) If you want to build the POSIX wrapper functions (which apply only to the |
| 154 | 8-bit library), ensure that you have the src/pcre2posix.h file and then |
| 155 | compile src/pcre2posix.c. Link the result (on its own) as the pcre2posix |
| 156 | library. |
| 157 | |
| 158 | (8) The pcre2test program can be linked with any combination of the 8-bit, |
| 159 | 16-bit and 32-bit libraries (depending on what you selected in |
| 160 | src/config.h). Compile src/pcre2test.c; don't forget -DHAVE_CONFIG_H if |
| 161 | necessary, but do NOT define PCRE2_CODE_UNIT_WIDTH. Then link with the |
| 162 | appropriate library/ies. If you compiled an 8-bit library, pcre2test also |
| 163 | needs the pcre2posix wrapper library. |
| 164 | |
| 165 | (9) Run pcre2test on the testinput files in the testdata directory, and check |
| 166 | that the output matches the corresponding testoutput files. There are |
| 167 | comments about what each test does in the section entitled "Testing PCRE2" |
| 168 | in the README file. If you compiled more than one of the 8-bit, 16-bit and |
| 169 | 32-bit libraries, you need to run pcre2test with the -16 option to do |
| 170 | 16-bit tests and with the -32 option to do 32-bit tests. |
| 171 | |
| 172 | Some tests are relevant only when certain build-time options are selected. |
| 173 | For example, test 4 is for Unicode support, and will not run if you have |
| 174 | built PCRE2 without it. See the comments at the start of each testinput |
| 175 | file. If you have a suitable Unix-like shell, the RunTest script will run |
| 176 | the appropriate tests for you. The command "RunTest list" will output a |
| 177 | list of all the tests. |
| 178 | |
| 179 | Note that the supplied files are in Unix format, with just LF characters |
| 180 | as line terminators. You may need to edit them to change this if your |
| 181 | system uses a different convention. |
| 182 | |
| 183 | (10) If you have built PCRE2 with SUPPORT_JIT, the JIT features can be tested |
| 184 | by running pcre2test with the -jit option. This is done automatically by |
| 185 | the RunTest script. You might also like to build and run the freestanding |
| 186 | JIT test program, src/pcre2_jit_test.c. |
| 187 | |
| 188 | (11) If you want to use the pcre2grep command, compile and link |
| 189 | src/pcre2grep.c; it uses only the basic 8-bit PCRE2 library (it does not |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 190 | need the pcre2posix library). If you have built the PCRE2 library with JIT |
| 191 | support by defining SUPPORT_JIT in src/config.h, you can also define |
| 192 | SUPPORT_PCRE2GREP_JIT, which causes pcre2grep to make use of JIT (unless |
| 193 | it is run with --no-jit). If you define SUPPORT_PCRE2GREP_JIT without |
| 194 | defining SUPPORT_JIT, pcre2grep does not try to make use of JIT. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 195 | |
| 196 | |
| 197 | STACK SIZE IN WINDOWS ENVIRONMENTS |
| 198 | |
Elliott Hughes | 653c210 | 2019-01-09 15:41:36 -0800 | [diff] [blame] | 199 | Prior to release 10.30 the default system stack size of 1MiB in some Windows |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 200 | environments caused issues with some tests. This should no longer be the case |
| 201 | for 10.30 and later releases. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 202 | |
| 203 | |
| 204 | LINKING PROGRAMS IN WINDOWS ENVIRONMENTS |
| 205 | |
| 206 | If you want to statically link a program against a PCRE2 library in the form of |
| 207 | a non-dll .a file, you must define PCRE2_STATIC before including src/pcre2.h. |
| 208 | |
| 209 | |
| 210 | CALLING CONVENTIONS IN WINDOWS ENVIRONMENTS |
| 211 | |
| 212 | It is possible to compile programs to use different calling conventions using |
| 213 | MSVC. Search the web for "calling conventions" for more information. To make it |
| 214 | easier to change the calling convention for the exported functions in the |
| 215 | PCRE2 library, the macro PCRE2_CALL_CONVENTION is present in all the external |
| 216 | definitions. It can be set externally when compiling (e.g. in CFLAGS). If it is |
| 217 | not set, it defaults to empty; the default calling convention is then used |
| 218 | (which is what is wanted most of the time). |
| 219 | |
| 220 | |
| 221 | COMMENTS ABOUT WIN32 BUILDS (see also "BUILDING PCRE2 ON WINDOWS WITH CMAKE") |
| 222 | |
| 223 | There are two ways of building PCRE2 using the "configure, make, make install" |
| 224 | paradigm on Windows systems: using MinGW or using Cygwin. These are not at all |
| 225 | the same thing; they are completely different from each other. There is also |
| 226 | support for building using CMake, which some users find a more straightforward |
| 227 | way of building PCRE2 under Windows. |
| 228 | |
| 229 | The MinGW home page (http://www.mingw.org/) says this: |
| 230 | |
| 231 | MinGW: A collection of freely available and freely distributable Windows |
| 232 | specific header files and import libraries combined with GNU toolsets that |
| 233 | allow one to produce native Windows programs that do not rely on any |
| 234 | 3rd-party C runtime DLLs. |
| 235 | |
| 236 | The Cygwin home page (http://www.cygwin.com/) says this: |
| 237 | |
| 238 | Cygwin is a Linux-like environment for Windows. It consists of two parts: |
| 239 | |
| 240 | . A DLL (cygwin1.dll) which acts as a Linux API emulation layer providing |
| 241 | substantial Linux API functionality |
| 242 | |
| 243 | . A collection of tools which provide Linux look and feel. |
| 244 | |
| 245 | On both MinGW and Cygwin, PCRE2 should build correctly using: |
| 246 | |
| 247 | ./configure && make && make install |
| 248 | |
| 249 | This should create two libraries called libpcre2-8 and libpcre2-posix. These |
| 250 | are independent libraries: when you link with libpcre2-posix you must also link |
| 251 | with libpcre2-8, which contains the basic functions. |
| 252 | |
| 253 | Using Cygwin's compiler generates libraries and executables that depend on |
| 254 | cygwin1.dll. If a library that is generated this way is distributed, |
| 255 | cygwin1.dll has to be distributed as well. Since cygwin1.dll is under the GPL |
| 256 | licence, this forces not only PCRE2 to be under the GPL, but also the entire |
| 257 | application. A distributor who wants to keep their own code proprietary must |
| 258 | purchase an appropriate Cygwin licence. |
| 259 | |
| 260 | MinGW has no such restrictions. The MinGW compiler generates a library or |
| 261 | executable that can run standalone on Windows without any third party dll or |
| 262 | licensing issues. |
| 263 | |
| 264 | But there is more complication: |
| 265 | |
| 266 | If a Cygwin user uses the -mno-cygwin Cygwin gcc flag, what that really does is |
| 267 | to tell Cygwin's gcc to use the MinGW gcc. Cygwin's gcc is only acting as a |
| 268 | front end to MinGW's gcc (if you install Cygwin's gcc, you get both Cygwin's |
| 269 | gcc and MinGW's gcc). So, a user can: |
| 270 | |
| 271 | . Build native binaries by using MinGW or by getting Cygwin and using |
| 272 | -mno-cygwin. |
| 273 | |
| 274 | . Build binaries that depend on cygwin1.dll by using Cygwin with the normal |
| 275 | compiler flags. |
| 276 | |
| 277 | The test files that are supplied with PCRE2 are in UNIX format, with LF |
| 278 | characters as line terminators. Unless your PCRE2 library uses a default |
| 279 | newline option that includes LF as a valid newline, it may be necessary to |
| 280 | change the line terminators in the test files to get some of the tests to work. |
| 281 | |
| 282 | |
| 283 | BUILDING PCRE2 ON WINDOWS WITH CMAKE |
| 284 | |
| 285 | CMake is an alternative configuration facility that can be used instead of |
| 286 | "configure". CMake creates project files (make files, solution files, etc.) |
| 287 | tailored to numerous development environments, including Visual Studio, |
| 288 | Borland, Msys, MinGW, NMake, and Unix. If possible, use short paths with no |
| 289 | spaces in the names for your CMake installation and your PCRE2 source and build |
| 290 | directories. |
| 291 | |
| 292 | The following instructions were contributed by a PCRE1 user, but they should |
| 293 | also work for PCRE2. If they are not followed exactly, errors may occur. In the |
| 294 | event that errors do occur, it is recommended that you delete the CMake cache |
| 295 | before attempting to repeat the CMake build process. In the CMake GUI, the |
| 296 | cache can be deleted by selecting "File > Delete Cache". |
| 297 | |
| 298 | 1. Install the latest CMake version available from http://www.cmake.org/, and |
| 299 | ensure that cmake\bin is on your path. |
| 300 | |
| 301 | 2. Unzip (retaining folder structure) the PCRE2 source tree into a source |
| 302 | directory such as C:\pcre2. You should ensure your local date and time |
| 303 | is not earlier than the file dates in your source dir if the release is |
| 304 | very new. |
| 305 | |
| 306 | 3. Create a new, empty build directory, preferably a subdirectory of the |
| 307 | source dir. For example, C:\pcre2\pcre2-xx\build. |
| 308 | |
| 309 | 4. Run cmake-gui from the Shell envirornment of your build tool, for example, |
| 310 | Msys for Msys/MinGW or Visual Studio Command Prompt for VC/VC++. Do not try |
| 311 | to start Cmake from the Windows Start menu, as this can lead to errors. |
| 312 | |
| 313 | 5. Enter C:\pcre2\pcre2-xx and C:\pcre2\pcre2-xx\build for the source and |
| 314 | build directories, respectively. |
| 315 | |
| 316 | 6. Hit the "Configure" button. |
| 317 | |
| 318 | 7. Select the particular IDE / build tool that you are using (Visual |
| 319 | Studio, MSYS makefiles, MinGW makefiles, etc.) |
| 320 | |
| 321 | 8. The GUI will then list several configuration options. This is where |
| 322 | you can disable Unicode support or select other PCRE2 optional features. |
| 323 | |
| 324 | 9. Hit "Configure" again. The adjacent "Generate" button should now be |
| 325 | active. |
| 326 | |
| 327 | 10. Hit "Generate". |
| 328 | |
| 329 | 11. The build directory should now contain a usable build system, be it a |
| 330 | solution file for Visual Studio, makefiles for MinGW, etc. Exit from |
| 331 | cmake-gui and use the generated build system with your compiler or IDE. |
| 332 | E.g., for MinGW you can run "make", or for Visual Studio, open the PCRE2 |
| 333 | solution, select the desired configuration (Debug, or Release, etc.) and |
| 334 | build the ALL_BUILD project. |
| 335 | |
| 336 | 12. If during configuration with cmake-gui you've elected to build the test |
| 337 | programs, you can execute them by building the test project. E.g., for |
| 338 | MinGW: "make test"; for Visual Studio build the RUN_TESTS project. The |
| 339 | most recent build configuration is targeted by the tests. A summary of |
| 340 | test results is presented. Complete test output is subsequently |
| 341 | available for review in Testing\Temporary under your build dir. |
| 342 | |
| 343 | |
Elliott Hughes | 653c210 | 2019-01-09 15:41:36 -0800 | [diff] [blame] | 344 | BUILDING PCRE2 ON WINDOWS WITH VISUAL STUDIO |
| 345 | |
Elliott Hughes | 16619d6 | 2021-10-29 12:10:38 -0700 | [diff] [blame^] | 346 | The code currently cannot be compiled without an inttypes.h header, which is |
| 347 | available only with Visual Studio 2013 or newer. However, this portable and |
| 348 | permissively-licensed implementation of the stdint.h header could be used as an |
| 349 | alternative: |
Elliott Hughes | 653c210 | 2019-01-09 15:41:36 -0800 | [diff] [blame] | 350 | |
| 351 | http://www.azillionmonkeys.com/qed/pstdint.h |
| 352 | |
| 353 | Just rename it and drop it into the top level of the build tree. |
| 354 | |
| 355 | |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 356 | TESTING WITH RUNTEST.BAT |
| 357 | |
| 358 | If configured with CMake, building the test project ("make test" or building |
| 359 | ALL_TESTS in Visual Studio) creates (and runs) pcre2_test.bat (and depending |
| 360 | on your configuration options, possibly other test programs) in the build |
| 361 | directory. The pcre2_test.bat script runs RunTest.bat with correct source and |
| 362 | exe paths. |
| 363 | |
| 364 | For manual testing with RunTest.bat, provided the build dir is a subdirectory |
| 365 | of the source directory: Open command shell window. Chdir to the location |
| 366 | of your pcre2test.exe and pcre2grep.exe programs. Call RunTest.bat with |
| 367 | "..\RunTest.Bat" or "..\..\RunTest.bat" as appropriate. |
| 368 | |
| 369 | To run only a particular test with RunTest.Bat provide a test number argument. |
| 370 | |
| 371 | Otherwise: |
| 372 | |
| 373 | 1. Copy RunTest.bat into the directory where pcre2test.exe and pcre2grep.exe |
| 374 | have been created. |
| 375 | |
| 376 | 2. Edit RunTest.bat to indentify the full or relative location of |
| 377 | the pcre2 source (wherein which the testdata folder resides), e.g.: |
| 378 | |
| 379 | set srcdir=C:\pcre2\pcre2-10.00 |
| 380 | |
| 381 | 3. In a Windows command environment, chdir to the location of your bat and |
| 382 | exe programs. |
| 383 | |
| 384 | 4. Run RunTest.bat. Test outputs will automatically be compared to expected |
| 385 | results, and discrepancies will be identified in the console output. |
| 386 | |
| 387 | To independently test the just-in-time compiler, run pcre2_jit_test.exe. |
| 388 | |
| 389 | |
| 390 | BUILDING PCRE2 ON NATIVE Z/OS AND Z/VM |
| 391 | |
| 392 | z/OS and z/VM are operating systems for mainframe computers, produced by IBM. |
| 393 | The character code used is EBCDIC, not ASCII or Unicode. In z/OS, UNIX APIs and |
| 394 | applications can be supported through UNIX System Services, and in such an |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 395 | environment it should be possible to build PCRE2 in the same way as in other |
| 396 | systems, with the EBCDIC related configuration settings, but it is not known if |
| 397 | anybody has tried this. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 398 | |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 399 | In native z/OS (without UNIX System Services) and in z/VM, special ports are |
| 400 | required. For details, please see file 939 on this web site: |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 401 | |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 402 | http://www.cbttape.org |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 403 | |
Elliott Hughes | 9bc971b | 2018-07-27 13:23:14 -0700 | [diff] [blame] | 404 | Everything in that location, source and executable, is in EBCDIC and native |
| 405 | z/OS file formats. The port provides an API for LE languages such as COBOL and |
| 406 | for the z/OS and z/VM versions of the Rexx languages. |
Janis Danisevskis | 112c9cc | 2016-03-31 13:35:25 +0100 | [diff] [blame] | 407 | |
Elliott Hughes | 378b175 | 2021-06-08 13:42:40 -0700 | [diff] [blame] | 408 | =========================== |
| 409 | Last Updated: 28 April 2021 |
| 410 | =========================== |