boost ビルド用設定
ソースの配置
「ColladaDom」プロジェクトの[jni/external-libs」ディレクトリに「boost」ディレクトリを作成する。「boost_1_50_0.tar.bz2」ファイルを、任意のディレクトリに解凍する。
解凍したファイルの「boost」および「libs」ディレクトリを、「ColladaDom」プロジェクトの「jni/external-libs/boost」ディレクトリの下にコピー
ソースのパッチ
【libs/filesystem/src/operations.cpp】ファイル
76~83行目および88行目をコメントアウト85行目に「# include <sys/vfs.h>」を追加
# ifdef BOOST_POSIX_API
const fs::path dot_path(".");
const fs::path dot_dot_path("..");
# include <sys/types.h>
# include <sys/stat.h>
//# if !defined(__APPLE__) && !defined(__OpenBSD__)
//# include <sys/statvfs.h>
//# define BOOST_STATVFS statvfs
//# define BOOST_STATVFS_F_FRSIZE vfs.f_frsize
//# else
//# ifdef __OpenBSD__
//# include <sys/param.h>
//# endif
# include <sys/mount.h>
# include <sys/vfs.h>
# define BOOST_STATVFS statfs
# define BOOST_STATVFS_F_FRSIZE static_cast<boost::uintmax_t>(vfs.f_bsize)
//# endif
# include <dirent.h>
# include <unistd.h>
# include <fcntl.h>
# include <utime.h>
# include "limits.h"
Makefile の作成
「jni/external-libs/boost」ディレクトリに「Application.mk」および「Android.mk」ファイルを作成する。LF改行にしておくこと。「Application.mk」ファイル
APP_MODULES := boost_filesystem boost_system APP_ABI := armeabi-v7a APP_PLATFORM := android-9
「Android.mk」ファイル
LOCAL_PATH := $(call my-dir)
#
# build boost_filesystem.a
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_filesystem
LOCAL_ARM_MODE := arm
LOCAL_EXPORT_INCLUDES := $(LOCAL_PATH)/boost
LOCAL_CPPFLAGS += -fexceptions
LOCAL_SRC_FILES := \
libs/filesystem/src/codecvt_error_category.cpp \
libs/filesystem/src/operations.cpp \
libs/filesystem/src/path_traits.cpp \
libs/filesystem/src/path.cpp \
libs/filesystem/src/portability.cpp \
libs/filesystem/src/unique_path.cpp \
libs/filesystem/src/utf8_codecvt_facet.cpp \
libs/filesystem/src/windows_file_codecvt.cpp
include $(BUILD_STATIC_LIBRARY)
#
# build boost_system.a
#
include $(CLEAR_VARS)
LOCAL_MODULE := boost_system
LOCAL_ARM_MODE := arm
LOCAL_EXPORT_INCLUDES := $(LOCAL_PATH)/boost
LOCAL_SRC_FILES := \
libs/system/src/error_code.cpp
include $(BUILD_STATIC_LIBRARY)
