Building gawk extension

May 2013: gawk.exe version 4.1 built for Windows. The xml extension built against this version of gawk.


To obtain binaries that run under native Windows, gawkextlib needs to be built in a MinGW/Msys environment. The page Creating a MinGW/MSYS environment describes how to create such environment.
Note that all command lines given on this page, starting with ./configure and make are issued in MSYS.

Futher, gawkextlib depends on gawk version 4.1 or later. We start building gawk.

Build gawk

I used gawk-4.1.0.tar.gz downloaded from I unpacked the archive in a suitable location. The archive contains a very useful readme file: gawk-4.1.0\README_d\README.pc to help building. Following this, I copied the files in the `pc’ directory (EXCEPT for `ChangeLog’) to the directory with the rest of the gawk sources. (The subdirectories of `pc’ need not be copied.)
The “prefix” line in the Makefile is used during the install of gawk. I set this to


Since the libraries for gawk will be installed under $(prefix)/lib/awk, it is convenient to have this directory in DEFPATH of config.h or define defpath in gawkmisc.pc. I did the first and replaced  # define DEFPATH  ".;c:/lib/awk;c:/gnu/lib/awk" to

# define DEFPATH  ".;c:/MinGW32/lib/awk;c:/Programs/MinGW32/lib/awk"

Issuing ./configure runs smoothly and generates, amongst others the Makefile.
To reduce the size of the executable, I changed the link flag in Makefile from LF="-gdwarf-2 -g3" to

LF="-gdwarf-2 -g3 -s"

make mingw32 runs without errors and
make install installs in c:/Programs/MinGW32 (as specified by the prefix).

Build gawkextlib

I used gawkextlib-0.4.6.tar.gz, also downloaded from
I made two small modifications to extension/xml_interface.c since I could not find a nl_langinfo implementation for Windows platforms. I commented out #include <langinfo.h> and changed the line  char *charset = nl_langinfo(CODESET); to

char *charset = "";

Then issued:
./configure --with-gawk=/c/Programs/MinGW32/ --prefix=/c/Programs/MinGW32/
which runs fine.

Running make runs fine too.

Problem with MinGW dynamic library libintl, solved

Running the command gawk -f Parse-VectorDb.awk VectorDb.xml gives

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information

and a window with the text “gawk.exe werkt niet meer”.

The culprit appears to be the MinGW library libintl-8.dll. The file comes from the archive libintl-
Using intl.dll and renaming it to libintl-8.dll cures things. The file is contained in, obtained from

Further testing

We carried out some further testing of the created xml and mfpr extensions using ‘make check’. ‘make check’ is supplied with the gawextension package. Since a properly working sh.exe is needed for the tests, the only possibility is using MSYS.
Further, to carry out the tests, the *.ok files in the dir test need to be converted to DOS format (CR/LF). To accomplish this, we issue:

for %f in (*.ok) do unix2dos %f

The created xml and mfpr extensions pass the tests: running ‘make check’ gives