0. ENVIRONMENT SETUP (Common ANDROID and NON-ANDROID builds)

# Create Android lunch shell and add external toolchain

bash
. build/envsetup.sh
. device/google/contexthub/firmware/toolchain-setup.sh
lunch <your lunch option>

# First time you run toolchain-setup.sh it will download and install
# the external toolchain from linaro launchpad.
# Next time it will simply define environment variables for it.


1. NON-ANDROID BUILD (unsupported)

1.1. to build any OS variant, run

make -C <variant_path>

# where <variant_path> is relative path to OS variant dir;
# or simply "cd  <variant_path>" and run "make".
# for local variants, variant_path is variant/<variant_name>

1.2. to build nanoapp, run

make -C <nanapp_path>

# where <nanoapp_path> is relative path to nanoapp;
# or simply "cd  <nanoapp_path>" and run "make".
# for local nanoapps, nanoapp_path is app/<app_name>


2. ANDROID BUILD

2.1 to build nanohub OS and all apps

# execute
make auxiliary -j24

2.2 Build Artifacts Location

# Artifacts will be found in
# $OUT/aux/$(AUX_OS_VARIANT)/$(AUX_OS)-$(AUX_ARCH)-$(AUX_CPU)/bin
# e.g. for nanohub OS on STM32 series MCU (ARM cortex m4 core) for Angler this will be in
# $OUT/aux/angler/nanohub-stm32-cortexm4/bin
# where $OUT is lunch shell environment variable

2.3 partial build or build without dependencies

# Any app or static library could be built in isolation with
mmm <path-to-module>

# or, for current path
mm

# Nanohub OS system image is only built with
m auxiliary
