aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 95bc28a1c7ada97578f7ff46638340384bf78c1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128

Jau C++ Support Library inclusive Java JNI Binding

Git Repository

This project's canonical repositories is hosted on Gothel Software.

Goals

This project aims to provide general C++ collections, algorithms and utilizies inclusive utilizities for a Java JNI binding.

This project was extracted from Direct-BT to enable general use and enforce better encapsulation.

API Documentation

Up to date API documentation can be found:

Examples

See Direct-BT C++ API Doc.

Supported Platforms

C++17 and better.

Building Binaries

It is advised to include this library into your main project, e.g. as a git-submodule.

Then add jaucpp/include/ to your include-path and also add the source files under jaucpp/src/ into your build recipe.

This library's build recipe are functional though, but currently only intended to support unit testing and to produce a Doxygen API doc.

The project requires CMake 3.13+ for building and a Java JDK >= 11.

Installing build dependencies on Debian (10 or 11):

apt install git
apt install build-essential g++ gcc libc-dev libpthread-stubs0-dev 
apt install libunwind8 libunwind-dev
apt install openjdk-11-jdk openjdk-11-jre
apt install cmake cmake-extras extra-cmake-modules
apt install doxygen graphviz

For a generic build use:

CPU_COUNT=`getconf _NPROCESSORS_ONLN`
git clone https://jausoft.com/cgit/jaucpp.git
cd jaucpp
mkdir build
cd build
cmake -DBUILDJAVA=ON -DBUILDEXAMPLES=ON -DBUILD_TESTING=ON ..
make -j $CPU_COUNT install test doc

The install target of the last command will create the include/ and lib/ directories with a copy of the headers and library objects respectively in your build location. Note that doing an out-of-source build may cause issues when rebuilding later on.

Our cmake configure has a number of options, cmake-gui or ccmake can show you all the options. The interesting ones are detailed below:

Changing install path from /usr/local to /usr

-DCMAKE_INSTALL_PREFIX=/usr

Building debug build:

-DDEBUG=ON

Building debug and instrumentation (sanitizer) build:

-DDEBUG=ON -DINSTRUMENTATION=ON

Using clang instead of gcc:

-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++

Cross-compiling on a different system:

-DCMAKE_CXX_FLAGS:STRING=-m32 -march=i586
-DCMAKE_C_FLAGS:STRING=-m32 -march=i586

To build Java bindings:

-DBUILDJAVA=ON

To build documentation run:

make doc

Changes

1.0.0

  • First stable release (TODO)

0.3.0

  • TODO
  • Use nsize_t and snsize_t where appropriate for smaller footprint
  • Have ringbuffer's Size_type parameterized
  • Bugfixes and added cow_array

0.2.1

  • Added cow_vector and sc_atomic_critical
  • Passed GCC all warnings, compile clean
  • Passed GCC sanitizer runtime checks
  • Passed valgrind's memcheck, helgrind and drd validating no memory leak nor data race or deadlock using dbt_scanner10
  • Added native de-mangled backtrace support using libunwind and and abi::__cxa_demangle

0.1.0

  • Extraction from Direct-BT