add private GBuffer type
[glib.git] / glib / update-pcre / update.sh
blob960b4d21d65b698d416b63c0dc87f2088b1aed5a
1 #! /bin/sh
3 IN="../update-pcre"
4 PCRE=$1
6 if [ "x$PCRE" = x -o "x$PCRE" = x--help -o "x$PCRE" = x-h ]; then
7 cat >&2 << EOF
9 $0 PCRE-DIR
11 Updates the local PCRE copy with a different version of the library,
12 contained in the directory PCRE-DIR.
14 This will delete the content of the local pcre directory, copy the
15 necessary files from PCRE-DIR, and generate other needed files, such
16 as Makefile.am
17 EOF
18 exit
21 if [ ! -f gregex.h ]; then
22 echo "This script should be executed from the directory containing gregex.c." 2> /dev/null
23 exit 1
26 if [ ! -f $PCRE/Makefile.in -o ! -f $PCRE/pcre_compile.c ]; then
27 echo "'$PCRE' does not contain a valid PCRE version." 2> /dev/null
28 exit 1
32 echo "Deleting old PCRE library"
33 mv pcre/.svn tmp-pcre-svn
34 rm -R pcre 2> /dev/null
35 mkdir pcre
36 cd pcre
38 # pcre_chartables.c is generated by dfatables.
39 # We do not want to compile and execute dfatables.c every time, because
40 # this could be a problem (e.g. when cross-compiling), so now generate
41 # the file and then distribuite it with GRegex.
42 echo "Generating pcre_chartables.c"
43 cp -R $PCRE tmp-build
44 cd tmp-build
45 ./configure --enable-utf8 --enable-unicode-properties --disable-cpp > /dev/null
46 make pcre_chartables.c > /dev/null
47 cat > ../pcre_chartables.c << \EOF
48 /* This file is autogenerated by ../update-pcre/update.sh during
49 * the update of the local copy of PCRE.
51 EOF
52 cat pcre_chartables.c >> ../pcre_chartables.c
53 cd ..
54 rm -R tmp-build
56 # Compiled C files.
57 echo "Generating makefiles"
58 all_files=`awk '/^OBJ = /, /^\\s*$/ \
59 { \
60 sub("^OBJ = ", ""); \
61 sub(".@OBJEXT@[[:blank:]]*\\\\\\\\", ""); \
62 sub("\\\\$\\\\(POSIX_OBJ\\\\)", ""); \
63 print; \
64 }' \
65 $PCRE/Makefile.in`
67 # Headers.
68 included_files="pcre.h pcre_internal.h ucp.h ucpinternal.h"
70 # Generate Makefile.am.
71 cat $IN/Makefile.am-1 > Makefile.am
72 for name in $all_files; do
73 echo " $name.c \\" >> Makefile.am
74 if [ $name != pcre_chartables ]; then
75 # pcre_chartables.c is a generated file.
76 cp $PCRE/$name.c .
78 done
79 for f in $included_files; do
80 echo " $f \\" >> Makefile.am
81 cp $PCRE/$f .
82 done
83 cat $IN/Makefile.am-2 >> Makefile.am
85 # Generate makefile.msc
86 cat > makefile.msc << EOF
87 TOP = ..\..\..
88 !INCLUDE ..\..\build\win32\make.msc
90 INCLUDES = \\
91 -I ..\.. \\
92 -I ..
94 DEFINES = \\
95 -DPCRE_STATIC \\
96 -DHAVE_CONFIG_H \\
97 -DHAVE_LONG_LONG_FORMAT \\
98 -DSUPPORT_UCP \\
99 -DSUPPORT_UTF8 \\
100 -DNEWLINE=-1 \\
101 -DMATCH_LIMIT=10000000 \\
102 -DMATCH_LIMIT_RECURSION=10000000 \\
103 -DMAX_NAME_SIZE=32 \\
104 -DMAX_NAME_COUNT=10000 \\
105 -DMAX_DUPLENGTH=30000 \\
106 -DLINK_SIZE=2 \\
107 -DEBCDIC=0 \\
108 -DPOSIX_MALLOC_THRESHOLD=10
110 OBJECTS = \\
112 for f in $all_files; do
113 echo " $f.obj \\\\"
114 done
117 all : pcre.lib
119 pcre.lib : \$(OBJECTS)
120 lib -out:pcre.lib \$(OBJECTS)
123 echo "Patching PCRE"
125 # Copy the license.
126 cp $PCRE/COPYING .
128 # Use glib for memory allocation.
129 patch > /dev/null < $IN/memory.patch
131 # Copy the modified version of pcre_valid_utf8.c.
132 cp $IN/pcre_valid_utf8.c .
134 # Copy the modified version of pcre_ucp_searchfuncs.c that uses glib
135 # for Unicode properties.
136 cp $IN/pcre_ucp_searchfuncs.c .
137 patch > /dev/null < $IN/ucp.patch
139 # Remove the digitab array in pcre_compile.c.
140 patch > /dev/null < $IN/digitab.patch
141 sed -i -e 's/(digitab\[\(.*\)\] & ctype_digit)/g_ascii_isdigit(\1)/' pcre_compile.c
142 sed -i -e 's/(digitab\[\(.*\)\] & ctype_xdigit)/g_ascii_isxdigit(\1)/' pcre_compile.c
144 # Reduce the number of relocations.
145 python $IN/make_utt.py
146 patch > /dev/null < $IN/utt.patch
147 patch > /dev/null < $IN/table-reduction.patch
149 # Copy back the old SVN directory.
150 mv ../tmp-pcre-svn .svn
153 cat << EOF
155 Update completed. You now should check that everything is working.
156 Remember to update the regex syntax doc with the new features
157 (docs/reference/glib/regex-syntax.sgml) and to run the tests.