From e7d0d54084aa04387ebfb8cee292248df5355021 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Mon, 23 Jan 2012 23:04:02 +0000 Subject: [PATCH] QRegularExpression: infrastructure for importing PCRE in 3rdparty/ Added the necessary files for importing and compiling PCRE under 3rdparty/, including a small shell script to ease the import and the update of PCRE from its dist tarball. PCRE's config.h is used, but it is assumed that a global s/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g was run on PCRE source files to avoid polluting QtCore compilation with -DHAVE_CONFIG_H (the aforementioned shell script performs this substitution; therefore, -DPCRE_HAVE_CONFIG_H is added instead to the compiler's command line). Change-Id: Ic0f23526ebf5f770aefdffc8f688e5816c28fd8c Reviewed-by: Thiago Macieira Reviewed-by: Oswald Buddenhagen --- src/3rdparty/pcre.pri | 38 +++++++ src/3rdparty/pcre/config.h | 15 +++ src/3rdparty/pcre/import_from_pcre_tarball.sh | 153 ++++++++++++++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 src/3rdparty/pcre.pri create mode 100644 src/3rdparty/pcre/config.h create mode 100755 src/3rdparty/pcre/import_from_pcre_tarball.sh diff --git a/src/3rdparty/pcre.pri b/src/3rdparty/pcre.pri new file mode 100644 index 0000000..92066e1 --- /dev/null +++ b/src/3rdparty/pcre.pri @@ -0,0 +1,38 @@ +DEFINES += PCRE_HAVE_CONFIG_H + +# man 3 pcrejit for a list of supported platforms; +# as PCRE 8.30, stable JIT support is available for: +# - ARM v5, v7, and Thumb2 +# - x86/x86-64 +# - MIPS 32bit +equals(QT_ARCH, "i386")|equals(QT_ARCH, "x86_64")|equals(QT_ARCH, "arm")|if(equals(QT_ARCH, "mips"):!*-64) { + DEFINES += SUPPORT_JIT +} + +win32:DEFINES += PCRE_STATIC + +INCLUDEPATH += $$PWD/pcre +SOURCES += \ + $$PWD/pcre/pcre16_byte_order.c \ + $$PWD/pcre/pcre16_chartables.c \ + $$PWD/pcre/pcre16_compile.c \ + $$PWD/pcre/pcre16_config.c \ + $$PWD/pcre/pcre16_dfa_exec.c \ + $$PWD/pcre/pcre16_exec.c \ + $$PWD/pcre/pcre16_fullinfo.c \ + $$PWD/pcre/pcre16_get.c \ + $$PWD/pcre/pcre16_globals.c \ + $$PWD/pcre/pcre16_jit_compile.c \ + $$PWD/pcre/pcre16_maketables.c \ + $$PWD/pcre/pcre16_newline.c \ + $$PWD/pcre/pcre16_ord2utf16.c \ + $$PWD/pcre/pcre16_refcount.c \ + $$PWD/pcre/pcre16_string_utils.c \ + $$PWD/pcre/pcre16_study.c \ + $$PWD/pcre/pcre16_tables.c \ + $$PWD/pcre/pcre16_ucd.c \ + $$PWD/pcre/pcre16_utf16_utils.c \ + $$PWD/pcre/pcre16_valid_utf16.c \ + $$PWD/pcre/pcre16_version.c \ + $$PWD/pcre/pcre16_xclass.c + diff --git a/src/3rdparty/pcre/config.h b/src/3rdparty/pcre/config.h new file mode 100644 index 0000000..4fe10f4 --- /dev/null +++ b/src/3rdparty/pcre/config.h @@ -0,0 +1,15 @@ +#define HAVE_MEMMOVE 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 + +#define LINK_SIZE 2 +#define MATCH_LIMIT 10000000 +#define MATCH_LIMIT_RECURSION MATCH_LIMIT +#define MAX_NAME_COUNT 10000 +#define MAX_NAME_SIZE 32 +#define NEWLINE 10 + +#define POSIX_MALLOC_THRESHOLD 10 +#define SUPPORT_UCP +#define SUPPORT_UTF16 + diff --git a/src/3rdparty/pcre/import_from_pcre_tarball.sh b/src/3rdparty/pcre/import_from_pcre_tarball.sh new file mode 100755 index 0000000..a2c7b1a --- /dev/null +++ b/src/3rdparty/pcre/import_from_pcre_tarball.sh @@ -0,0 +1,153 @@ +#! /bin/sh +############################################################################# +## +## Copyright (C) 2012 Giuseppe D'Angelo . +## Contact: http://www.qt-project.org/ +## +## This file is the build configuration utility of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## GNU Lesser General Public License Usage +## This file may be used under the terms of the GNU Lesser General Public +## License version 2.1 as published by the Free Software Foundation and +## appearing in the file LICENSE.LGPL included in the packaging of this +## file. Please review the following information to ensure the GNU Lesser +## General Public License version 2.1 requirements will be met: +## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## In addition, as a special exception, Nokia gives you certain additional +## rights. These rights are described in the Nokia Qt LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU General +## Public License version 3.0 as published by the Free Software Foundation +## and appearing in the file LICENSE.GPL included in the packaging of this +## file. Please review the following information to ensure the GNU General +## Public License version 3.0 requirements will be met: +## http://www.gnu.org/copyleft/gpl.html. +## +## Other Usage +## Alternatively, this file may be used in accordance with the terms and +## conditions contained in a signed written agreement between you and Nokia. +## +## +## +## +## +## $QT_END_LICENSE$ +## +############################################################################# + +# This is a small script to copy the required files from a PCRE tarball +# into 3rdparty/pcre/ , following the instructions found in the NON-UNIX-USE +# file. Documentation, tests, demos etc. are not imported. +# Also, a global s/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g is performed, to avoid +# tampering QtCore compilation with a -DHAVE_CONFIG_H. + +if [ $# -ne 2 ]; then + echo "Usage: $0 pcre_tarball_dir/ \$QTDIR/src/3rdparty/pcre/" + exit 1 +fi + +PCRE_DIR=$1 +TARGET_DIR=$2 + +if [ ! -d "$PCRE_DIR" -o ! -r "$PCRE_DIR" -o ! -d "$TARGET_DIR" -o ! -w "$TARGET_DIR" ]; then + echo "Either the PCRE source dir or the target dir do not exist," + echo "are not directories or have the wrong permissions." + exit 2 +fi + +# with 1 argument, copies PCRE_DIR/$1 to TARGET_DIR/$1 +# with 2 arguments, copies PCRE_DIR/$1 to TARGET_DIR/$2 +# every file copied gets a s/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g +copy_and_convert_file() { + if [ $# -lt 1 -o $# -gt 2 ]; then + echo "Wrong number of arguments to copy_and_convert_file" + exit 3 + fi + + SOURCE_FILE=$1 + if [ -n "$2" ]; then + DEST_FILE=$2 + else + DEST_FILE=$1 + fi + + mkdir -p "$TARGET_DIR/$(dirname "$SOURCE_FILE")" + sed 's/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g' < "$PCRE_DIR/$SOURCE_FILE" > "$TARGET_DIR/$DEST_FILE" +} + +copy_and_convert_file "pcre.h.generic" "pcre.h" +copy_and_convert_file "pcre_chartables.c.dist" "pcre_chartables.c" + +FILES=" + AUTHORS + COPYING + LICENCE + pcre_internal.h + ucp.h + pcre_byte_order.c + pcre_compile.c + pcre_config.c + pcre_dfa_exec.c + pcre_exec.c + pcre_fullinfo.c + pcre_get.c + pcre_globals.c + pcre_jit_compile.c + pcre_maketables.c + pcre_newline.c + pcre_ord2utf8.c + pcre_refcount.c + pcre_string_utils.c + pcre_study.c + pcre_tables.c + pcre_ucd.c + pcre_valid_utf8.c + pcre_version.c + pcre_xclass.c + pcre16_byte_order.c + pcre16_chartables.c + pcre16_compile.c + pcre16_config.c + pcre16_dfa_exec.c + pcre16_exec.c + pcre16_fullinfo.c + pcre16_get.c + pcre16_globals.c + pcre16_jit_compile.c + pcre16_maketables.c + pcre16_newline.c + pcre16_ord2utf16.c + pcre16_refcount.c + pcre16_string_utils.c + pcre16_study.c + pcre16_tables.c + pcre16_ucd.c + pcre16_utf16_utils.c + pcre16_valid_utf16.c + pcre16_version.c + pcre16_xclass.c + sljit/sljitLir.c + sljit/sljitLir.h + sljit/sljitNativePPC_common.c + sljit/sljitNativeX86_common.c + sljit/sljitNativeARM_v5.c + sljit/sljitNativeX86_32.c + sljit/sljitNativeX86_64.c + sljit/sljitNativePPC_32.c + sljit/sljitNativePPC_64.c + sljit/sljitConfig.h + sljit/sljitNativeMIPS_32.c + sljit/sljitUtils.c + sljit/sljitNativeMIPS_common.c + sljit/sljitExecAllocator.c + sljit/sljitConfigInternal.h + sljit/sljitNativeARM_Thumb2.c +" + +for i in $FILES; do + copy_and_convert_file "$i" +done -- 2.7.4