Git Product home page Git Product logo

cmoss's Introduction

The CMOSS scripts can be used to build the following C/C++ Open Source Software libraries for native development on iOS and Android.

* minizip : http://www.winimage.com/zLibDll/minizip.html
* icu : http://site.icu-project.org/
* c-ares : http://c-ares.haxx.se
* bzip2 : http://bzip.org/
* libidn : http://www.gnu.org/software/libidn/
* GnuPG 1.4.x, Libgcrypt, Libgpg-error : http://www.gnupg.org/
* OpenSSL - http://http://www.openssl.org/
* libSSH2 - http://www.libssh2.org/
* cURL - http://curl.haxx.se/ - C HTTP API
* expat - http://expat.sourceforge.net/ - XML event parser
* tinyxml - http://www.grinninglizard.com/tinyxml/ - XML DOM based parser
* yajl - http://lloyd.github.com/yajl/ - JSON parser
* sqlcipher - http://sqlcipher.net/ - SQLite with encryption
* boost - http://www.boost.org/ - C++ utilities
* soci - http://soci.sourceforge.net/ - generic C++ database API
* pion : http://pion.org/ - C++ HTTP API

The android kernel already provides some of these shared libraries so check if they are available before including them in your NDK project. For example both openssl and icu are part of the Android distribution. 

To build armv6 binaries for iOS you need to use the 5.1 SDK or lower. The blog at http://blog.chpwn.com/post/31824877081 provides instructions on how to add the 5.1 SDK alongside the 6.0 SDK if you are using XCode 4.5. The scripts will automatically pick up the older SDK for armv6 builds. If the 5.1 SDK is not available then armv6 binaries will not be built.

The scripts will download the source code from the internet and build them locally. So your build machine needs to be connected to the internet when building. Once the source code archives have been downloaded they will be saved in the [cmoss root path]/tmp folder and will not be downloaded again unless you delete them or change the version. The builds have been tested with the versions hard-coded in the script files. If you change these versions it is possible the build for that library may break. If you do find a new version that breaks a build please let me know so it can be fixed.

There is an issue with the icu builds with the SDK that ship with versions before XCode 4.5. This results in the Android builds having to be rerun when the icu host build fails, but it fails the entire icu build for iOS. If you are on an older version of XCode please comment out the icu build step.

To run iOS build:

cd [cmoss root path]/build-ios
./build-all.sh [installed sdk version #] [proxy_host:proxy_port]

(scripts were tested with SDK 6.0)

To run Android build:

cd [cmoss root path]/build-droid
./build-all.sh [path to Android NDK] [proxy_host:proxy_port]

(scripts were tested with Android NDK r8d)

These build scripts were tested on a Mac OS X 10 with the following Mac ports:

  cmake @2.8.4_0 (active)
  cppunit @1.12.1_0 (active)
  dos2unix @5.1.1_0 (active)
  expat @2.0.1_1 (active)
  gettext @0.18.1.1_2 (active)
  gperf @3.0.4_0 (active)
  libiconv @1.13.1_0 (active)
  libidn @1.20_0 (active)
  ncurses @5.8_0
  ncurses @5.8_1 (active)
  ncursesw @5.8_0 (active)
  openssl @1.0.0d_0 (active)
  wget @1.12_3+ssl (active)
  libtool @2.4.2 (active)
  zlib @1.2.5_0 (active)

The Android scripts should work in a Linux environment but have not been tested.

The builds do not run the unit tests that come with the libraries on each platform. If you run into linker issues with the libraries you will need to tweak the builds. Please let me know of any issues when using the libraries and fixes that need to be addressed.

cmoss's People

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.