Building liboni#
Build in Linux#
For build options, look at the top level Makefile. The Makefile is
self-documenting. You can examine options using:
$ make help
To build and install liboni use
$ make <options>
$ make install PREFIX=/path/to/install
to place build artifacts in whatever path is specified by PREFIX.
PREFIX defaults to /usr/lib/include. You can uninstall (delete headers
and libraries) via
$ make uninstall PREFIX=/path/to/uninstall
To make a particular driver, navigate to its location within the drivers
subdirectory and:
$ make <options>
$ make install PREFIX=/path/to/install
Then update the dynamic library cache via:
$ ldconfig
Performance Testing#
Install google perftools:
$ apt-get install google-perftools
Check what library is installed:
$ ldconfig -p | grep profiler
If libprofiler.so is not there, but libprofiler.so.x exists, create a
softlink:
$ sudo ln -rs /path/to/libprofiler.so.x /path/to/libprofiler.so
Link the profiler into test the programs during compilation using:
$ cd liboni-test
$ make profile
Run the firmware program to serve fake data. Provide a numerical argument
specifying the number of fake frames to produce. It will tell you how long it
takes host to sink all these frames. This is host processing time + UNIX
pipe read/write.
$ cd bin
$ ./firmware 10e6
Run the host program while dumping profile info:
$ env CPUPROFILE=/tmp/host.prof ./host
Examine output
$ pprof ./host /tmp/host.prof
Memory Testing#
Run the firmware and host programs as described above with valgrind using
full leak check on host:
$ valgrind --leak-check=full ./host
Build in Windows#
Open the included Visual Studio Community solution and press play.
For whatever reason, it seems that the selected startup project is not
consistently saved with the solution. So make sure that it is set to
oni-repl in the solution properties.