diff --git a/coreapi/CMakeLists.txt b/coreapi/CMakeLists.txt index 3926f4e7b..ea1c499c3 100644 --- a/coreapi/CMakeLists.txt +++ b/coreapi/CMakeLists.txt @@ -219,8 +219,8 @@ if(ENABLE_STATIC) ) endif() if(ENABLE_SHARED) - add_library(linphone SHARED ${LINPHONE_HEADER_FILES} ${LINPHONE_PRIVATE_HEADER_FILES} - ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC} + add_library(linphone SHARED "../share/cpim_grammar" ${LINPHONE_HEADER_FILES} ${LINPHONE_PRIVATE_HEADER_FILES} + ${LINPHONE_SOURCE_FILES_C} ${LINPHONE_SOURCE_FILES_CXX} ${LINPHONE_SOURCE_FILES_OBJC} $ ) if(IOS) @@ -235,6 +235,7 @@ if(ENABLE_SHARED) MACOSX_FRAMEWORK_IDENTIFIER org.linphone.linphone MACOSX_FRAMEWORK_INFO_PLIST Info.plist.in PUBLIC_HEADER "${LINPHONE_HEADER_FILES}" + RESOURCE "../share/cpim_grammar" ) endif() if(BELCARD_FOUND) diff --git a/src/chat/cpim/parser/cpim-parser.cpp b/src/chat/cpim/parser/cpim-parser.cpp index 1ae77a679..7acdac5bd 100644 --- a/src/chat/cpim/parser/cpim-parser.cpp +++ b/src/chat/cpim/parser/cpim-parser.cpp @@ -29,6 +29,10 @@ #include "object/object-p.h" #include "cpim-parser.h" +#ifdef __APPLE__ +#include +#include +#endif #define CPIM_GRAMMAR "cpim_grammar" @@ -223,8 +227,18 @@ public: Cpim::Parser::Parser () : Singleton(*new ParserPrivate) { L_D(); - - d->grammar = belr::GrammarLoader::get().load(CPIM_GRAMMAR); +#if TARGET_OS_IPHONE + CFBundleRef bundle = CFBundleGetBundleWithIdentifier( CFSTR("org.linphone.linphone") ); + CFURLRef grammar_url = CFBundleCopyResourceURL(bundle, CFSTR(CPIM_GRAMMAR), NULL, NULL); + CFStringRef grammar_path = CFURLCopyFileSystemPath(grammar_url, kCFURLPOSIXPathStyle); + CFStringEncoding encoding_method = CFStringGetSystemEncoding(); + const char *path = CFStringGetCStringPtr(grammar_path, encoding_method); + CFRelease(grammar_url); + CFRelease(grammar_path); +#else + const char *path = CPIM_GRAMMAR; +#endif + d->grammar = belr::GrammarLoader::get().load(path); if (!d->grammar) lFatal() << "Unable to load CPIM grammar."; }