Realm is a mobile database: an alternative to SQLite & key-value stores https://realm.io
Go to file
Mark Rowe 332813f7f3 Avoid dumping all environment variables when building core without ASan enabled. 2016-06-01 12:20:17 -07:00
CMake Avoid dumping all environment variables when building core without ASan enabled. 2016-06-01 12:20:17 -07:00
external submodule fixes 2016-03-03 14:48:41 -08:00
src Implement commit helper and realm notifier for Android (#69) 2016-05-31 17:15:32 +02:00
tests Move the notifications fuzzer to the tests directory 2016-05-11 16:08:30 -07:00
.gitignore Build both dynamic and static libraries. 2016-05-26 13:41:52 -07:00
.gitmodules Hook the parser tests into the CMake build system. 2016-01-19 10:41:25 -08:00
CMakeLists.txt Build both dynamic and static libraries. 2016-05-26 13:41:52 -07:00
README.md Merge pull request #57 from realm/nh/update_doc 2016-05-26 16:09:30 -07:00

README.md

Realm Object Store

Cross-platform code used accross bindings. Binding developers can choose to use some or all the included functionality:

  • object_store/schema/object_schema/property - contains the structures and logic used to setup and modify realm files and their schema.
  • shared_realm - wraps the object_store apis to provide transactions, notifications, realm caching, migrations, and other higher level functionality.
  • object_accessor/results/list - accessor classes, object creation/update pipeline, and helpers for creating platform specific property getters and setters.
  • parser/query_builder - cross platform query parser and query builder - requires and object_accessor specialization for argument support. Depends on https://github.com/ColinH/PEGTL

Building

The object store's build system currently only suports building for OS X. The object store itself can build for all Apple platforms when integrated into a binding.

  1. Download PEGTL dependency

    git submodule update --init
    
  2. Install CMake. You can download an installer for OS X from the CMake download page, or install via Homebrew:

    brew install cmake
    
  3. Generate build files:

    cmake .
    
  4. Build:

    make
    

If you wish to build against a local version of core you can invoke cmake like so:

cmake -DREALM_CORE_VERSION=/path/to/realm-core

The given core tree will be built as part of the object store build.

Building with Sanitizers

The object store can be built using ASan, TSan and/or UBSan by specifying -DSANITIZE_ADDRESS=1, -DSANITIZE_THREAD=1, or -DSANITIZE_UNDEFINED=1 when inoking CMake. Building with ASan requires specifying a path to core with -DREAM_CORE_VERSION as core needs to also be built with ASan enabled.

On OS X, the Xcode-provided copy of Clang only comes with ASan, and using TSan or UBSan requires a custom build of Clang. If you have installed Clang as an external Xcode toolchain (using the install-xcode-toolchain when building LLVM), note that you'll have to specify -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ when running cmake to stop cmake from being too clever.

Testing

make run-tests