Home | History | Annotate | only in /system/bt
Up to higher level directory
NameDateSize
.gitignore06-Dec-201627
.gn06-Dec-2016888
Android.mk06-Dec-20161.5K
audio_a2dp_hw/06-Dec-2016
bta/06-Dec-2016
btcore/06-Dec-2016
btif/06-Dec-2016
build/06-Dec-2016
BUILD.gn06-Dec-20161.3K
CleanSpec.mk06-Dec-20162.4K
conf/06-Dec-2016
device/06-Dec-2016
doc/06-Dec-2016
embdrv/06-Dec-2016
EventLogTags.logtags06-Dec-20161.3K
hci/06-Dec-2016
include/06-Dec-2016
main/06-Dec-2016
MODULE_LICENSE_APACHE206-Dec-20160
NOTICE06-Dec-201611.1K
osi/06-Dec-2016
profile/06-Dec-2016
README.md06-Dec-20163.5K
service/06-Dec-2016
stack/06-Dec-2016
test/06-Dec-2016
tools/06-Dec-2016
udrv/06-Dec-2016
utils/06-Dec-2016
vendor_libs/06-Dec-2016
vnd/06-Dec-2016

README.md

      1 # Fluoride Bluetooth stack
      2 
      3 ## Building and running on AOSP
      4 Just build AOSP - Fluoride is there by default.
      5 
      6 ## Building and running on Linux
      7 
      8 Instructions for Ubuntu, tested on 15.10 with GCC 5.2.1.
      9 
     10 ### Install required libraries
     11 
     12 ```sh
     13 sudo apt-get install libevent-dev
     14 ```
     15 
     16 ### Install build tools
     17 
     18   - Install [ninja](https://ninja-build.org/) build system
     19 
     20 ```sh
     21 sudo apt-get install ninja-build
     22 ```
     23 
     24 or download binary from https://github.com/ninja-build/ninja/releases
     25 
     26   - Install [gn](https://chromium.googlesource.com/chromium/src/tools/gn/) -  meta-build system that generates NinjaBuild files.
     27 
     28 Get sha1 of current version from [here](
     29 https://chromium.googlesource.com/chromium/buildtools/+/master/linux64/gn.sha1) and then download corresponding executable:
     30 
     31 ```sh
     32 wget -O gn http://storage.googleapis.com/chromium-gn/<gn.sha1>
     33 ```
     34 
     35 i.e. if sha1 is "3491f6687bd9f19946035700eb84ce3eed18c5fa" (value from 24 Feb 2016) do
     36 
     37 ```sh
     38 wget -O gn http://storage.googleapis.com/chromium-gn/3491f6687bd9f19946035700eb84ce3eed18c5fa
     39 ```
     40 
     41 Then make binary executable and put it on your PATH, i.e.:
     42 
     43 ```sh
     44 chmod a+x ./gn
     45 sudo mv ./gn /usr/bin
     46 ```
     47 
     48 ### Download source
     49 
     50 ```sh
     51 mkdir ~/fluoride
     52 cd ~/fluoride
     53 git clone https://android.googlesource.com/platform/system/bt
     54 ```
     55 
     56 Then fetch third party dependencies:
     57 
     58 ```sh
     59 cd ~/fluoride/bt
     60 mkdir third_party
     61 git clone https://github.com/google/googletest.git
     62 git clone https://android.googlesource.com/platform/external/libchrome
     63 git clone https://android.googlesource.com/platform/external/modp_b64
     64 git clone https://android.googlesource.com/platform/external/tinyxml2
     65 ```
     66 
     67 And third party dependencies of third party dependencies:
     68 
     69 ```sh
     70 cd fluoride/bt/third_party/libchrome/base/third_party
     71 mkdir valgrind
     72 cd valgrind
     73 curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/valgrind.h?format=TEXT | base64 -d > valgrind.h
     74 curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/memcheck.h?format=TEXT | base64 -d > memcheck.h
     75 ```
     76 
     77 Fluoride currently has dependency on some internal Android projects, which also need to be downloaded. This will be removed in future:
     78 
     79 ```sh
     80 cd ~/fluoride
     81 git clone https://android.googlesource.com/platform/system/core
     82 git clone https://android.googlesource.com/platform/hardware/libhardware
     83 git clone https://android.googlesource.com/platform/system/media
     84 ```
     85 
     86 ### Configure your build
     87 We need to configure some paths to make the build successful. Run:
     88 
     89 ```sh
     90 cd ~/fluoride/bt
     91 gn args out/Default
     92 ```
     93 
     94 This will prompt you to fill the contents of your "out/Default/args.gn" file. Make it look like below. Replace "/home/job" with path to your home directory, and don't use "~" in build arguments:
     95 
     96 ```sh
     97 # Build arguments go here. Examples:
     98 #   is_component_build = true
     99 #   is_debug = false
    100 # See "gn args <out_dir> --list" for available build arguments.
    101 
    102 libhw_include_path = "/home/job/fluoride/libhardware/include"
    103 core_include_path = "/home/job/fluoride/core/include"
    104 audio_include_path = "/home/job/fluoride/media/audio/include"
    105 ```
    106 
    107 Then generate your build files by calling
    108 
    109 ```sh
    110 cd ~/fluoride/bt
    111 gn gen out/Default
    112 ```
    113 
    114 ### Build
    115 
    116 ```sh
    117 cd ~/fluoride/bt
    118 ninja -C out/Default all
    119 ```
    120 
    121 This will build all targets (the shared library, executables, tests, etc) and put them in out/Default. To build an individual target, replace "all" with the target of your choice, e.g. ```ninja -C out/Default net_test_osi```.
    122 
    123 ### Run
    124 
    125 ```sh
    126 cd ~/fluoride/bt/out/Default
    127 LD_LIBRARY_PATH=./ ./bluetoothtbd -create-ipc-socket=fluoride
    128 ```
    129