mirror of
https://github.com/mii443/libdatachannel.git
synced 2025-08-22 15:15:28 +00:00
Enhaned Readme and moved building instructions to BUILDING.md
This commit is contained in:
71
BUILDING.md
Normal file
71
BUILDING.md
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
# libdatachannel - Building instructions
|
||||||
|
|
||||||
|
## Clone repository and submodules
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ git clone https://github.com/paullouisageneau/libdatachannel.git
|
||||||
|
$ cd libdatachannel
|
||||||
|
$ git submodule update --init --recursive
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build with CMake
|
||||||
|
|
||||||
|
The CMake library targets `libdatachannel` and `libdatachannel-static` respectively correspond to the shared and static libraries. The default target will build tests and examples. The option `USE_GNUTLS` allows to switch between OpenSSL (default) and GnuTLS, and the option `USE_NICE` allows to switch between libjuice as submodule (default) and libnice.
|
||||||
|
|
||||||
|
If you only need Data Channels, the option `NO_MEDIA` allows to make the library lighter by removing media support. Similarly, `NO_WEBSOCKET` removes WebSocket support.
|
||||||
|
|
||||||
|
### POSIX-compliant operating systems (including Linux and Apple macOS)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cmake -B build -DUSE_GNUTLS=1 -DUSE_NICE=0
|
||||||
|
$ cd build
|
||||||
|
$ make -j2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Apple macOS with XCode project
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ cmake -B "$BUILD_DIR" -DUSE_GNUTLS=0 -DUSE_NICE=0 -G Xcode
|
||||||
|
```
|
||||||
|
|
||||||
|
Xcode project is generated in *build/* directory.
|
||||||
|
|
||||||
|
#### Solving **Could NOT find OpenSSL** error
|
||||||
|
|
||||||
|
You need to add OpenSSL root directory if your build fails with the following message:
|
||||||
|
|
||||||
|
```
|
||||||
|
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
|
||||||
|
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
|
||||||
|
OPENSSL_INCLUDE_DIR)
|
||||||
|
```
|
||||||
|
|
||||||
|
for example:
|
||||||
|
```bash
|
||||||
|
$ cmake -B build -DUSE_GNUTLS=0 -DUSE_NICE=0 -G Xcode -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl\@1.1/1.1.1h/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Microsoft Windows with MinGW cross-compilation
|
||||||
|
```bash
|
||||||
|
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake # replace with your toolchain file
|
||||||
|
$ cd build
|
||||||
|
$ make -j2
|
||||||
|
```
|
||||||
|
|
||||||
|
### Microsoft Windows with Microsoft Visual C++
|
||||||
|
```bash
|
||||||
|
$ cmake -B build -G "NMake Makefiles"
|
||||||
|
$ cd build
|
||||||
|
$ nmake
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build directly with Make (Linux only)
|
||||||
|
|
||||||
|
The option `USE_GNUTLS` allows to switch between OpenSSL (default) and GnuTLS, and the option `USE_NICE` allows to switch between libjuice as submodule (default) and libnice.
|
||||||
|
|
||||||
|
If you only need Data Channels, the option `NO_MEDIA` removes media support. Similarly, `NO_WEBSOCKET` removes WebSocket support.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make USE_GNUTLS=1 USE_NICE=0
|
||||||
|
```
|
||||||
|
|
83
README.md
83
README.md
@ -5,13 +5,11 @@ It can be compiled with multiple backends:
|
|||||||
- The security layer can be provided through [OpenSSL](https://www.openssl.org/) or [GnuTLS](https://www.gnutls.org/).
|
- The security layer can be provided through [OpenSSL](https://www.openssl.org/) or [GnuTLS](https://www.gnutls.org/).
|
||||||
- The connectivity for WebRTC can be provided through my ad-hoc ICE library [libjuice](https://github.com/paullouisageneau/libjuice) as submodule or through [libnice](https://github.com/libnice/libnice).
|
- The connectivity for WebRTC can be provided through my ad-hoc ICE library [libjuice](https://github.com/paullouisageneau/libjuice) as submodule or through [libnice](https://github.com/libnice/libnice).
|
||||||
|
|
||||||
This projet is originally inspired by [librtcdcpp](https://github.com/chadnickbok/librtcdcpp), however it is a complete rewrite from scratch, because the messy architecture of librtcdcpp made solving its implementation issues difficult.
|
|
||||||
|
|
||||||
Licensed under LGPLv2, see [LICENSE](https://github.com/paullouisageneau/libdatachannel/blob/master/LICENSE).
|
Licensed under LGPLv2, see [LICENSE](https://github.com/paullouisageneau/libdatachannel/blob/master/LICENSE).
|
||||||
|
|
||||||
## Compatibility
|
## Compatibility
|
||||||
|
|
||||||
The library aims at implementing the following communication protocols:
|
The library implements the following communication protocols:
|
||||||
|
|
||||||
### WebRTC Data Channels and Media Transport
|
### WebRTC Data Channels and Media Transport
|
||||||
|
|
||||||
@ -47,91 +45,22 @@ Features:
|
|||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
Dependencies:
|
Only [GnuTLS](https://www.gnutls.org/) or [OpenSSL](https://www.openssl.org/) are necessary.
|
||||||
- GnuTLS: https://www.gnutls.org/ or OpenSSL: https://www.openssl.org/
|
|
||||||
|
Optionally, [libnice](https://nice.freedesktop.org/) can be selected as an alternative ICE backend instead of libjuice.
|
||||||
|
|
||||||
Submodules:
|
Submodules:
|
||||||
- libjuice: https://github.com/paullouisageneau/libjuice
|
- libjuice: https://github.com/paullouisageneau/libjuice
|
||||||
- usrsctp: https://github.com/sctplab/usrsctp
|
- usrsctp: https://github.com/sctplab/usrsctp
|
||||||
- libsrtp: https://github.com/cisco/libsrtp
|
- libsrtp: https://github.com/cisco/libsrtp
|
||||||
|
|
||||||
Optional dependencies:
|
|
||||||
- libnice: https://nice.freedesktop.org/ (if selected as ICE backend instead of libjuice)
|
|
||||||
- libsrtp: https://github.com/cisco/libsrtp (if selected instead of the submodule)
|
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
### Clone repository and submodules
|
See [BUILDING.md](https://github.com/paullouisageneau/libdatachannel/blob/master/BUILDING.md) for building instructions.
|
||||||
|
|
||||||
```bash
|
|
||||||
$ git clone https://github.com/paullouisageneau/libdatachannel.git
|
|
||||||
$ cd libdatachannel
|
|
||||||
$ git submodule update --init --recursive
|
|
||||||
```
|
|
||||||
|
|
||||||
### Building with CMake
|
|
||||||
|
|
||||||
The CMake library targets `libdatachannel` and `libdatachannel-static` respectively correspond to the shared and static libraries. The default target will build tests and examples. The option `USE_GNUTLS` allows to switch between OpenSSL (default) and GnuTLS, and the option `USE_NICE` allows to switch between libjuice as submodule (default) and libnice.
|
|
||||||
|
|
||||||
If you only need Data Channels, the option `NO_MEDIA` allows to make the library lighter by removing media support. Similarly, `NO_WEBSOCKET` removes WebSocket support.
|
|
||||||
|
|
||||||
#### POSIX-compliant operating systems (including Linux and Apple macOS)
|
|
||||||
```bash
|
|
||||||
$ cmake -B build -DUSE_GNUTLS=1 -DUSE_NICE=0
|
|
||||||
$ cd build
|
|
||||||
$ make -j2
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Apple macOS with XCode project
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ cmake -B "$BUILD_DIR" -DUSE_GNUTLS=0 -DUSE_NICE=0 -G Xcode
|
|
||||||
```
|
|
||||||
|
|
||||||
Xcode project is generated in *build/* directory.
|
|
||||||
|
|
||||||
##### Solving **Could NOT find OpenSSL** error
|
|
||||||
|
|
||||||
You need to add OpenSSL root directory if your build fails with the following message:
|
|
||||||
|
|
||||||
```
|
|
||||||
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
|
|
||||||
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
|
|
||||||
OPENSSL_INCLUDE_DIR)
|
|
||||||
```
|
|
||||||
|
|
||||||
for example:
|
|
||||||
```bash
|
|
||||||
$ cmake -B build -DUSE_GNUTLS=0 -DUSE_NICE=0 -G Xcode -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl\@1.1/1.1.1h/
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Microsoft Windows with MinGW cross-compilation
|
|
||||||
```bash
|
|
||||||
$ cmake -B build -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-x86_64-w64-mingw32.cmake # replace with your toolchain file
|
|
||||||
$ cd build
|
|
||||||
$ make -j2
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Microsoft Windows with Microsoft Visual C++
|
|
||||||
```bash
|
|
||||||
$ cmake -B build -G "NMake Makefiles"
|
|
||||||
$ cd build
|
|
||||||
$ nmake
|
|
||||||
```
|
|
||||||
|
|
||||||
### Building directly with Make (Linux only)
|
|
||||||
|
|
||||||
The option `USE_GNUTLS` allows to switch between OpenSSL (default) and GnuTLS, and the option `USE_NICE` allows to switch between libjuice as submodule (default) and libnice.
|
|
||||||
|
|
||||||
If you only need Data Channels, the option `NO_MEDIA` removes media support. Similarly, `NO_WEBSOCKET` removes WebSocket support.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ make USE_GNUTLS=1 USE_NICE=0
|
|
||||||
```
|
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
See [examples](https://github.com/paullouisageneau/libdatachannel/blob/master/examples/) for a complete usage example with signaling server (under GPLv2).
|
See [examples](https://github.com/paullouisageneau/libdatachannel/blob/master/examples/) for complete usage examples with signaling server (under GPLv2).
|
||||||
|
|
||||||
Additionnaly, you might want to have a look at the [C API](https://github.com/paullouisageneau/libdatachannel/blob/master/include/rtc/rtc.h).
|
Additionnaly, you might want to have a look at the [C API](https://github.com/paullouisageneau/libdatachannel/blob/master/include/rtc/rtc.h).
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user