pcre ビルド用設定
ソースの配置
「ColladaDom」プロジェクトの[jni/external-libs」ディレクトリに「pcre」ディレクトリを作成する。「pcre-8.31.tar.bz2」ファイルを、任意のディレクトリに解凍する。
解凍したディレクトリの中の全ファイルを、「ColladaDom」プロジェクトの「jni/external-libs/pcre」ディレクトリの下にコピー。
ソースのパッチ
「config.h」ファイル
「config.h.generic」ファイルをコピーして、「config.h」ファイルを作成。作成した「config.h」ファイルを以下のように修正。
47行目から49行目をコメントアウト
/* Define to 1 if you have the <bzlib.h> header file. */ //#ifndef HAVE_BZLIB_H //#define HAVE_BZLIB_H 1 //#endif
135行目から137行目をコメントアウト
/* Define to 1 if you have `strtoq'. */ //#ifndef HAVE_STRTOQ //#define HAVE_STRTOQ 1 //#endif
最後尾に以下を追加
#define HAVE_STRTOLL 1 #define SUPPORT_LIBZ #define SUPPORT_UCP #define SUPPORT_UTF
「pcre.h」ファイル
「pcre.h.generic」ファイルをコピーして、「pcre.h」ファイルを作成。内容の変更は、無し。
「pcre_chartables.c」ファイル
「pcre_chartables.c.dist」ファイルをコピーして、「pcre_chartables.c」ファイルを作成。内容の変更は、無し。
「pcre_stringpiece.h」ファイル
「pcre_stringpiece.h.in」ファイルをコピーして、「pcre_stringpiece.h」ファイルを作成。作成した「pcre_stringpiece.h」ファイルを以下のように修正。
45行目および48行目を修正
#if 0 #define HAVE_TYPE_TRAITS #include#elif 0 #define HAVE_TYPE_TRAITS #include #endif
「pcrecpparg.h」ファイル
「pcrecpparg.h.in」ファイルをコピーして、「pcrecpparg.h」ファイルを作成。作成した「pcrecpparg.h」ファイルを以下のように修正。
81行目および84行目を修正
PCRE_MAKE_PARSER(char, parse_char); PCRE_MAKE_PARSER(unsigned char, parse_uchar); PCRE_MAKE_PARSER(short, parse_short); PCRE_MAKE_PARSER(unsigned short, parse_ushort); PCRE_MAKE_PARSER(int, parse_int); PCRE_MAKE_PARSER(unsigned int, parse_uint); PCRE_MAKE_PARSER(long, parse_long); PCRE_MAKE_PARSER(unsigned long, parse_ulong); #if 1 PCRE_MAKE_PARSER(long long, parse_longlong); #endif #if 1 PCRE_MAKE_PARSER(unsigned long long, parse_ulonglong); #endif PCRE_MAKE_PARSER(float, parse_float); PCRE_MAKE_PARSER(double, parse_double); PCRE_MAKE_PARSER(std::string, parse_string); PCRE_MAKE_PARSER(StringPiece, parse_stringpiece);
160行目および163行目を修正
MAKE_INTEGER_PARSER(short, short) /* */ MAKE_INTEGER_PARSER(unsigned short, ushort) /* */ MAKE_INTEGER_PARSER(int, int) /* Don't use semicolons */ MAKE_INTEGER_PARSER(unsigned int, uint) /* after these statement */ MAKE_INTEGER_PARSER(long, long) /* because they can cause */ MAKE_INTEGER_PARSER(unsigned long, ulong) /* compiler warnings if */ #if 1 /* the checking level is */ MAKE_INTEGER_PARSER(long long, longlong) /* turned up high enough. */ #endif /* */ #if 1 /* */ MAKE_INTEGER_PARSER(unsigned long long, ulonglong) /* */ #endif
Makefile の作成
「jni/external-libs/pcre」ディレクトリに「Application.mk」および「Android.mk」ファイルを作成する。LF改行にしておくこと。「Application.mk」ファイル
APP_MODULES := pcre pcrecpp APP_ABI := armeabi-v7a APP_PLATFORM := android-9
「Android.mk」ファイル
LOCAL_PATH := $(call my-dir) LOCAL_EXPORT_INCLUDES := $(LOCAL_PATH) # # build pcre.a # include $(CLEAR_VARS) LOCAL_MODULE := pcre LOCAL_SRC_FILES := \ pcre_byte_order.c \ pcre_chartables.c \ pcre_compile.c \ pcre_config.c \ pcre_dfa_exec.c \ pcre_exec.c \ pcre_fullinfo.c \ pcre_get.c \ pcre_globals.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 \ pcreposix.c LOCAL_ARM_MODE := arm LOCAL_CFLAGS := -DHAVE_CONFIG_H include $(BUILD_STATIC_LIBRARY) # # build pcrecpp.a # include $(CLEAR_VARS) LOCAL_MODULE := pcrecpp LOCAL_CPP_EXTENSION := .cc LOCAL_SRC_FILES := \ pcre_scanner.cc \ pcre_stringpiece.cc \ pcrecpp.cc LOCAL_ARM_MODE := arm LOCAL_CFLAGS := -DHAVE_CONFIG_H LOCAL_CPPFLAGS := -fexceptions include $(BUILD_STATIC_LIBRARY)