2012年8月11日土曜日

Android NDK で COLLADA dom ライブラリをビルド - boost ビルド用設定



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)