lib | ||
error.go | ||
go.mod | ||
go.sum | ||
LICENSE | ||
LICENSE-PCRE2 | ||
pcre_test.go | ||
pcre.go | ||
README.md | ||
types.go |
pcre
This package provides a CGo-free port of the PCRE2 regular expression library. The lib directory contains source code automatically translated from PCRE2's C source. This package wraps that code and provides an interface as close as possible to Go's stdlib regexp package
Supported GOOS/GOARCH:
- linux/amd64
- linux/386
- linux/arm64
- linux/arm
- linux/riscv64
More OS support is planned.
How to transpile pcre2
In order to transpile pcre2, a Go and C compiler (preferably GCC) will be needed.
-
First, install ccgo
-
Then, download the pcre source code. It can be found here: https://github.com/PCRE2Project/pcre2.
-
Once downloaded,
cd
into the source directory -
Run
./configure
. If cross-compiling, provide the path to the cross-compiler in theCC
variable, and set--target
to the target architecture. -
When it completes, there should be a
Makefile
in the directory. -
Run
ccgo -compiledb pcre.json make
. Do not add-j
arguments to the make command. -
Run the following command (replace items in triangle brackets):
CC=/usr/bin/gcc ccgo -o pcre2_<os>_<arch>.go -pkgname lib -trace-translation-units -export-externs X -export-defines D -export-fields F -export-structs S -export-typedefs T pcre.json .libs/libpcre2-8.a
-
If cross-compiling, set the
CCGO_CC
variable to to path of the cross-compiler, and theCCGO_AR
variable to the path of the cross-compiler'sar
binary. Also, setTARGET_GOARCH
to the GOARCH you're targeting andTARGET_GOOS
to the OS you're targeting. -
Once the command completes, two go files will be created. One will start with
pcre2
, the other withcapi
. Copy both of these to thelib
directory in this repo.