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