initial commit
This commit is contained in:
162
third_party/libhv/BUILD.md
vendored
Executable file
162
third_party/libhv/BUILD.md
vendored
Executable file
@@ -0,0 +1,162 @@
|
||||
## Prequired
|
||||
|
||||
- c99
|
||||
- c++11
|
||||
|
||||
gcc4.8+, msvc2015 or later
|
||||
|
||||
## Makefile
|
||||
options see [config.ini](config.ini)
|
||||
```
|
||||
./configure --with-openssl
|
||||
make
|
||||
sudo make install
|
||||
```
|
||||
|
||||
## cmake
|
||||
options see [CMakeLists.txt](CMakeLists.txt)
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DWITH_OPENSSL=ON
|
||||
cmake --build .
|
||||
```
|
||||
|
||||
## bazel
|
||||
options see [.bazelrc](.bazelrc)
|
||||
```
|
||||
bazel build libhv
|
||||
```
|
||||
|
||||
## Unix
|
||||
use Makefile or cmake or bazel
|
||||
|
||||
## Windows
|
||||
use cmake
|
||||
```
|
||||
mkdir win64
|
||||
cd win64
|
||||
cmake .. -G "Visual Studio 15 2017 Win64"
|
||||
#cmake .. -G "Visual Studio 16 2019" -A x64
|
||||
#cmake .. -G "Visual Studio 17 2022" -A x64
|
||||
cmake --build .
|
||||
```
|
||||
|
||||
## CROSS_COMPILE
|
||||
use Makefile
|
||||
```
|
||||
sudo apt install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi # ubuntu
|
||||
export CROSS_COMPILE=arm-linux-gnueabi-
|
||||
./configure
|
||||
make clean
|
||||
make libhv
|
||||
```
|
||||
or use cmake
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_C_COMPILER=arm-linux-gnueabi-gcc -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++
|
||||
cmake --build . --target libhv libhv_static
|
||||
```
|
||||
|
||||
### mingw
|
||||
see CROSS_COMPILE
|
||||
```
|
||||
sudo apt install mingw-w64 # ubuntu
|
||||
#export CROSS_COMPILE=i686-w64-mingw32-
|
||||
export CROSS_COMPILE=x86_64-w64-mingw32-
|
||||
./configure
|
||||
make clean
|
||||
make libhv
|
||||
```
|
||||
|
||||
### Android
|
||||
```
|
||||
#https://developer.android.com/ndk/downloads
|
||||
#export ANDROID_NDK_ROOT=~/Downloads/android-ndk-r21b
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake" -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-21
|
||||
cmake --build . --target hv --config Release
|
||||
```
|
||||
|
||||
### iOS
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake -DPLATFORM=OS64 -DARCHS="arm64" -DDEPLOYMENT_TARGET=9.0
|
||||
cmake --build . --target hv_static --config Release
|
||||
```
|
||||
|
||||
## targets
|
||||
|
||||
### lib
|
||||
- make libhv
|
||||
|
||||
### examples
|
||||
- make examples
|
||||
|
||||
### unittest
|
||||
- make unittest
|
||||
|
||||
## options
|
||||
|
||||
### compile without c++
|
||||
```
|
||||
./configure --without-evpp
|
||||
make clean && make libhv
|
||||
```
|
||||
|
||||
### compile WITH_OPENSSL
|
||||
Enable SSL/TLS in libhv is so easy :)
|
||||
```
|
||||
// see ssl/hssl.h
|
||||
hssl_ctx_t hssl_ctx_new(hssl_ctx_opt_t* opt);
|
||||
|
||||
// see event/hloop.h
|
||||
int hio_new_ssl_ctx(hio_t* io, hssl_ctx_opt_t* opt);
|
||||
```
|
||||
|
||||
https is the best example.
|
||||
```
|
||||
sudo apt install openssl libssl-dev # ubuntu
|
||||
./configure --with-openssl
|
||||
make clean && make
|
||||
bin/httpd -s restart -d
|
||||
bin/curl -v http://localhost:8080
|
||||
bin/curl -v https://localhost:8443
|
||||
```
|
||||
|
||||
### compile WITH_CURL
|
||||
```
|
||||
./configure --with-curl
|
||||
make clean && make
|
||||
bin/httpd -s restart -d
|
||||
bin/curl -v http://localhost:8080
|
||||
```
|
||||
|
||||
### compile WITH_NGHTTP2
|
||||
```
|
||||
sudo apt install libnghttp2-dev # ubuntu
|
||||
./configure --with-nghttp2
|
||||
make clean && make
|
||||
bin/httpd -s restart -d
|
||||
bin/curl -v http://localhost:8080 --http2
|
||||
```
|
||||
|
||||
### compile WITH_KCP
|
||||
```
|
||||
./configure --with-kcp
|
||||
make clean && make
|
||||
```
|
||||
|
||||
### compile WITH_MQTT
|
||||
```
|
||||
./configure --with-mqtt
|
||||
make clean && make
|
||||
```
|
||||
|
||||
### More
|
||||
```
|
||||
./configure --help
|
||||
```
|
||||
Reference in New Issue
Block a user