From f3f8ecfe3b3cfa2269138f792f959646896b9063 Mon Sep 17 00:00:00 2001 From: Paul-Louis Ageneau Date: Fri, 12 Mar 2021 10:25:59 +0100 Subject: [PATCH] Enhaned Readme and moved building instructions to BUILDING.md --- BUILDING.md | 71 +++++++++++++++++++++++++++++++++++++++++++++ README.md | 83 ++++------------------------------------------------- 2 files changed, 77 insertions(+), 77 deletions(-) create mode 100644 BUILDING.md diff --git a/BUILDING.md b/BUILDING.md new file mode 100644 index 0000000..cf3965e --- /dev/null +++ b/BUILDING.md @@ -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 +``` + diff --git a/README.md b/README.md index 1b6ad04..06bd235 100644 --- a/README.md +++ b/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 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). ## Compatibility -The library aims at implementing the following communication protocols: +The library implements the following communication protocols: ### WebRTC Data Channels and Media Transport @@ -47,91 +45,22 @@ Features: ## Dependencies -Dependencies: -- GnuTLS: https://www.gnutls.org/ or OpenSSL: https://www.openssl.org/ +Only [GnuTLS](https://www.gnutls.org/) or [OpenSSL](https://www.openssl.org/) are necessary. + +Optionally, [libnice](https://nice.freedesktop.org/) can be selected as an alternative ICE backend instead of libjuice. Submodules: - libjuice: https://github.com/paullouisageneau/libjuice - usrsctp: https://github.com/sctplab/usrsctp - 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 -### Clone repository and submodules - -```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 -``` +See [BUILDING.md](https://github.com/paullouisageneau/libdatachannel/blob/master/BUILDING.md) for building instructions. ## 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).