glib/glib/update-pcre/update.sh
Philip Withnall a131134918 build: Drop nmake/MSC build system for GLib
It hasn’t been seriously maintained for the best part of 10 years and is
very outdated. The recommended way to build GLib on Windows is now
Visual Studio:

https://wiki.gnome.org/Projects/GTK%2B/Win32/MSVCCompilationOfGTKStack#GLib

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=722047
2017-07-10 11:22:40 +01:00

122 lines
3.2 KiB
Bash

#! /bin/sh
IN="../update-pcre"
PCRE=$1
if [ "x$PCRE" = x -o "x$PCRE" = x--help -o "x$PCRE" = x-h ]; then
cat >&2 << EOF
$0 PCRE-DIR
Updates the local PCRE copy with a different version of the library,
contained in the directory PCRE-DIR.
This will delete the content of the local pcre directory, copy the
necessary files from PCRE-DIR, and generate other needed files, such
as Makefile.am
EOF
exit
fi
if [ ! -f gregex.h ]; then
echo "This script should be executed from the directory containing gregex.c." 2> /dev/null
exit 1
fi
if [ ! -f $PCRE/Makefile.in -o ! -f $PCRE/pcre_compile.c ]; then
echo "'$PCRE' does not contain a valid PCRE version." 2> /dev/null
exit 1
fi
echo "Deleting old PCRE library"
mv pcre/.svn tmp-pcre-svn
rm -R pcre 2> /dev/null
mkdir pcre
cd pcre
# pcre_chartables.c is generated by dfatables.
# We do not want to compile and execute dfatables.c every time, because
# this could be a problem (e.g. when cross-compiling), so now generate
# the file and then distribuite it with GRegex.
echo "Generating pcre_chartables.c"
cp -R $PCRE tmp-build
cd tmp-build
./configure --enable-utf8 --enable-unicode-properties --disable-cpp > /dev/null
make pcre_chartables.c > /dev/null
cat > ../pcre_chartables.c << \EOF
/* This file is autogenerated by ../update-pcre/update.sh during
* the update of the local copy of PCRE.
*/
EOF
cat pcre_chartables.c >> ../pcre_chartables.c
cd ..
rm -R tmp-build
# Compiled C files.
echo "Generating makefiles"
all_files=`awk '/^OBJ = /, /^\\s*$/ \
{ \
sub("^OBJ = ", ""); \
sub(".@OBJEXT@[[:blank:]]*\\\\\\\\", ""); \
sub("\\\\$\\\\(POSIX_OBJ\\\\)", ""); \
print; \
}' \
$PCRE/Makefile.in`
# Headers.
included_files="pcre.h pcre_internal.h ucp.h ucpinternal.h"
# Generate Makefile.am.
cat $IN/Makefile.am-1 > Makefile.am
for name in $all_files; do
echo " $name.c \\" >> Makefile.am
if [ $name != pcre_chartables ]; then
# pcre_chartables.c is a generated file.
cp $PCRE/$name.c .
fi
done
for f in $included_files; do
echo " $f \\" >> Makefile.am
cp $PCRE/$f .
done
cat $IN/Makefile.am-2 >> Makefile.am
echo "Patching PCRE"
# Copy the license.
cp $PCRE/COPYING .
# Use glib for memory allocation.
patch > /dev/null < $IN/memory.patch
# Copy the modified version of pcre_valid_utf8.c.
cp $IN/pcre_valid_utf8.c .
# Copy the modified version of pcre_ucp_searchfuncs.c that uses glib
# for Unicode properties.
cp $IN/pcre_ucp_searchfuncs.c .
patch > /dev/null < $IN/ucp.patch
# Remove the digitab array in pcre_compile.c.
patch > /dev/null < $IN/digitab.patch
sed -i -e 's/(digitab\[\(.*\)\] & ctype_digit)/g_ascii_isdigit(\1)/' pcre_compile.c
sed -i -e 's/(digitab\[\(.*\)\] & ctype_xdigit)/g_ascii_isxdigit(\1)/' pcre_compile.c
# Reduce the number of relocations.
python $IN/make_utt.py
patch > /dev/null < $IN/utt.patch
patch > /dev/null < $IN/table-reduction.patch
# Copy back the old SVN directory.
mv ../tmp-pcre-svn .svn
cat << EOF
Update completed. You now should check that everything is working.
Remember to update the regex syntax doc with the new features
(docs/reference/glib/regex-syntax.sgml) and to run the tests.
EOF