Skip to content

Commit

Permalink
20190522
Browse files Browse the repository at this point in the history
  • Loading branch information
ldcsaa committed May 21, 2019
1 parent f2bef85 commit 2b25e25
Show file tree
Hide file tree
Showing 413 changed files with 119,585 additions and 33 deletions.
Binary file modified Doc/HP-Socket Development Guide.pdf
Binary file not shown.
16 changes: 16 additions & 0 deletions Linux/ChangeLog.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
==========================================================================================
v5.5.2 Update:
==========================================================================================

> UDP Upadate
-----------------
1. Relax the maximum message length limit of UDP component, the maximum value of SetMaxDatagramSize() method can be set to 64KB.
2. Relax the maximum transmission unit length limit of ARQ UDP component. The maximum value of SetMaxTransUnit() method can be set to 64KB.

> Android NDK Update
-----------------
1. provided shell script 'build-android-ndk.sh' to build Android NDK libs.
2. provided shell script 'demo/build-android-ndk-demo.sh' to build Android NDK demo executable files.
3. provided Android NDK binary library files in the distribution package.
4. Android NDK libs are full support SSL and ICONV features now.

==========================================================================================
v5.5.1 Update:
==========================================================================================

Expand Down
41 changes: 38 additions & 3 deletions Linux/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,41 @@ Usage: install.sh [...O.P.T.I.O.N.S...]

*    Note: The **complle.sh** build script depends on the **script/**, **src/**, **include/**, and **dependent/** directories of the distribution; the **install.sh** install script depends on the **script/**, **include/**, and **lib/** directories of the distribution, if you want to install the sample executable files, it also need to depends on the **demo/Release/** directory.*
## Android NDK
    HP-Socket provides Android NDK compilation script (script directory: *project/android-ndk/*). After installing and configuring the NDK, enter the compilation script directory and execute the *ndk-build* command to compile. By default, the compilation script will compile all of ABI's dynamic library and static library libs supported by the current NDK. If you have special needs, please modify the *jni/Application.mk* file.

*    Note: The Android NDK compilation script provided by HP-Socket disables **SSL** and **ICONV** support, so the user applications need to define the **_SSL_DISABLED** and **_ICONV_DISABLED** macros.*
    HP-Socket provides Android NDK build script __*build-android-ndk.sh*__ (__*build-android-ndk.bat*__ on Windows). After installing and configuring the NDK, execute *build-android-ndk.sh* to build it. By default, the build script will build all of ABI's dynamic libraries and static libraries supported by the current NDK, and output the library files to *lib/android-ndk/* directory. If you have special needs, please set the corresponding command line parameters for *build-android-ndk.sh*.

    Build HP-Socket libraries use default settings:
```
$ cd HP-Socket/Linux
$ ./build-android-ndk.sh
```
### ABIs
    By default, the build script generates libraries for all non-deprecated ABIs. You can modify the **APP_ABI** parameter for *build-android-ndk.sh* to generate libraries for specific ABIs.

    (for example: only generate *armeabi-v7a* and *x86* libraries):
```
$ ./build-android-ndk.sh APP_ABI=armeabi-v7a,x86
```
### Features
    By default, all optional features (*UDP, SSL, HTTP, ZLIB, ICONV*) were enabled. You can set one or more ***_XXX_DISABLED=true*** parameters for *build-android-ndk.sh* to disable corresponding features.
- *_UDP_DISABLED=true*   (disable UDP)
- *_SSL_DISABLED=true*   (disable SSL)
- *_HTTP_DISABLED=true*  (disable HTTP)
- *_ZLIB_DISABLED=true*  (disable ZLIB)
- *_ICONV_DISABLED=true* (disable ICONV)

    (for example: disable *SSL* and *ICONV* features):
```
$ ./build-android-ndk.sh _SSL_DISABLED=true _ICONV_DISABLED=true
```
*    Note: If you disable one or more features, you need to define corresponding macros while compiling your application. for example: If you disable the **SSL** and **ICONV** features of HP-Socket library, when you compile the application that uses this library, need to define macro like: __-D_SSL_DISABLED -D_ICONV_DISABLED__.*
### Other Options
    For more details of *build-android-ndk.sh* command, please refer to the [*ndk-build official documentation*](https://developer.android.com/ndk/guides/ndk-build).
    The following example demonstrates: building *armeabi-v7a* and *x86_64* ABI targets; disabling *UDP*, *ZLIB*, and *ICONV* features; library files output to *lib/android-ndk/* directory; obj files output to *lib/Android-ndk/obj/* directory:
```
$ ./build-android-ndk.sh APP_ABI=armeabi-v7a,x86_64 \
_UDP_DISABLED=true \
_ZLIB_DISABLED=true \
_ICONV_DISABLED=true \
NDK_LIBS_OUT=./lib/android-ndk \
NDK_OUT=./lib/android-ndk/obj
```
8 changes: 8 additions & 0 deletions Linux/build-android-ndk.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@echo off

set CURPATH=%cd%
cd %~dp0

call ndk-build NDK_PROJECT_PATH=./project/android-ndk NDK_LIBS_OUT=./lib/android-ndk NDK_OUT=./lib/android-ndk/obj %*

cd %CURPATH%
5 changes: 5 additions & 0 deletions Linux/build-android-ndk.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

cd $(cd "$(dirname "$0")"; pwd)

ndk-build NDK_PROJECT_PATH=./project/android-ndk NDK_LIBS_OUT=./lib/android-ndk NDK_OUT=./lib/android-ndk/obj $@
108 changes: 108 additions & 0 deletions Linux/demo/Android.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
LOCAL_PATH := $(call my-dir)
ROOT_PATH := $(LOCAL_PATH)
DEPT_PATH := $(LOCAL_PATH)/../dependent/android-ndk/$(TARGET_ARCH_ABI)
DEPT_INC_PATH := $(DEPT_PATH)/include
DEPT_LIB_PATH := $(DEPT_PATH)/lib
HP_LIB_PATH := $(LOCAL_PATH)/../lib/android-ndk/$(TARGET_ARCH_ABI)

MY_C_INCLUDES := $(LOCAL_PATH)/../include
MY_CFLAGS := -w -fpic -fvisibility=hidden -fno-strict-aliasing -Wall -Wextra -Wswitch -Wno-deprecated-declarations -Wno-empty-body -Wno-conversion -Wno-sign-conversion -Wno-sign-compare -Wreturn-type -Wparentheses -Wno-pointer-sign -Wno-format -Wno-missing-braces -Wuninitialized -Wunreachable-code -Wunused-function -Wunused-value -Wunused-variable -Wno-unused-parameter -Wno-missing-field-initializers
MY_CPPFLAGS := -fexceptions -frtti -fthreadsafe-statics -Wno-reorder -Wno-inconsistent-missing-override
MY_LDFLAGS := -Wl,--no-undefined -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wl,-Bsymbolic
MY_WHOLE_STATIC_LIBRARIES := ssl crypto iconv
MY_LDLIBS := -lz -lm

# local lib : iconv
include $(CLEAR_VARS)
LOCAL_MODULE := iconv
LOCAL_SRC_FILES := $(DEPT_LIB_PATH)/libiconv.a
LOCAL_EXPORT_C_INCLUDES := $(DEPT_INC_PATH)
include $(PREBUILT_STATIC_LIBRARY)

# local lib : crypto
include $(CLEAR_VARS)
LOCAL_MODULE := crypto
LOCAL_SRC_FILES := $(DEPT_LIB_PATH)/libcrypto.a
LOCAL_EXPORT_C_INCLUDES := $(DEPT_INC_PATH)
include $(PREBUILT_STATIC_LIBRARY)

# local lib : ssl
include $(CLEAR_VARS)
LOCAL_MODULE := ssl
LOCAL_SRC_FILES := $(DEPT_LIB_PATH)/libssl.a
LOCAL_EXPORT_C_INCLUDES := $(DEPT_INC_PATH)
include $(PREBUILT_STATIC_LIBRARY)

# local lib : hpsocket
include $(CLEAR_VARS)
LOCAL_MODULE := hpsocket
LOCAL_SRC_FILES := $(HP_LIB_PATH)/libhpsocket.a
include $(PREBUILT_STATIC_LIBRARY)

# local lib : hpsocket4c
include $(CLEAR_VARS)
LOCAL_MODULE := hpsocket4c
LOCAL_SRC_FILES := $(HP_LIB_PATH)/libhpsocket4c.a
include $(PREBUILT_STATIC_LIBRARY)

# local lib : hpsocket_so
include $(CLEAR_VARS)
LOCAL_MODULE := hpsocket_so
LOCAL_SRC_FILES := $(HP_LIB_PATH)/libhpsocket.so
include $(PREBUILT_SHARED_LIBRARY)

# local lib : hpsocket4c_so
include $(CLEAR_VARS)
LOCAL_MODULE := hpsocket4c_so
LOCAL_SRC_FILES := $(HP_LIB_PATH)/libhpsocket4c.so
include $(PREBUILT_SHARED_LIBRARY)

### build all demos ###
include $(call all-makefiles-under,$(ROOT_PATH))

### build single demo ###

# #testecho
# include $(ROOT_PATH)/testecho/Android.mk

# #testecho-arq
# include $(ROOT_PATH)/testecho-arq/Android.mk

# #testecho-arq-pfm
# include $(ROOT_PATH)/testecho-arq-pfm/Android.mk

##testecho-http
#include $(ROOT_PATH)/testecho-http/Android.mk

# #testecho-http-4c(4c so)
#include $(ROOT_PATH)/testecho-http-4c/Android.mk

##testecho-lib(so & 4c so)
#include $(ROOT_PATH)/testecho-lib/Android.mk

##testecho-pack
#include $(ROOT_PATH)/testecho-pack/Android.mk

##testecho-pfm
#include $(ROOT_PATH)/testecho-pfm/Android.mk

##testecho-pull
#include $(ROOT_PATH)/testecho-pull/Android.mk

##testecho-ssl
# include $(ROOT_PATH)/testecho-ssl/Android.mk

##testecho-ssl-pack(4c so)
#include $(ROOT_PATH)/testecho-ssl-pack/Android.mk

##testecho-ssl-pfm(so)
#include $(ROOT_PATH)/testecho-ssl-pfm/Android.mk

##testecho-ssl-pull(so)
#include $(ROOT_PATH)/testecho-ssl-pull/Android.mk

##testecho-udp
#include $(ROOT_PATH)/testecho-udp/Android.mk

##testecho-udp-pfm
#include $(ROOT_PATH)/testecho-udp-pfm/Android.mk
6 changes: 6 additions & 0 deletions Linux/demo/Application.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
APP_ABI := all # armeabi-v7a arm64-v8a x86 x86_64
APP_PLATFORM := android-21
APP_CFLAGS := -std=c11 -DNDEBUG -g0 -O3 -fomit-frame-pointer
APP_CPPFLAGS := -std=c++14
APP_STL := c++_static
APP_BUILD_SCRIPT := Android.mk
8 changes: 8 additions & 0 deletions Linux/demo/build-android-ndk-demo.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
@echo off

set CURPATH=%cd%
cd %~dp0

call ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=./Application.mk NDK_LIBS_OUT=./Release/android-ndk NDK_OUT=./Release/android-ndk/obj %*

cd %CURPATH%
6 changes: 6 additions & 0 deletions Linux/demo/build-android-ndk-demo.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

cd $(cd "$(dirname "$0")"; pwd)

ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=./Application.mk NDK_LIBS_OUT=./Release/android-ndk NDK_OUT=./Release/android-ndk/obj $@

26 changes: 26 additions & 0 deletions Linux/demo/testecho-arq-pfm/Android.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
LOCAL_PATH := $(call my-dir)

# target lib : hp-testecho-arq-pfm-server
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-arq-pfm-server
LOCAL_SRC_FILES := server/server.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_USE_HP_LIB -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-arq-pfm-client
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-arq-pfm-client
LOCAL_SRC_FILES := client/client.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_USE_HP_LIB -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

26 changes: 26 additions & 0 deletions Linux/demo/testecho-arq/Android.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
LOCAL_PATH := $(call my-dir)

# target lib : hp-testecho-arq-server
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-arq-server
LOCAL_SRC_FILES := server/server.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-arq-client
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-arq-client
LOCAL_SRC_FILES := client/client.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

69 changes: 69 additions & 0 deletions Linux/demo/testecho-http-4c/Android.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
LOCAL_PATH := $(call my-dir)

# target lib : hp-testecho-http-4c-server
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-4c-server
LOCAL_SRC_FILES := server/server.cpp \
../global/helper.cpp \
../../src/common/crypto/Crypto.cpp \
../../src/common/FileHelper.cpp \
../../src/common/FuncHelper.cpp \
../../src/common/SysHelper.cpp \
../../src/common/Thread.cpp
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_USE_HP_LIB -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
LOCAL_SHARED_LIBRARIES:=hpsocket4c_so
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-http-4c-client
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-4c-client
LOCAL_SRC_FILES := client/client.cpp \
../global/helper.cpp \
../../src/common/crypto/Crypto.cpp \
../../src/common/FileHelper.cpp \
../../src/common/FuncHelper.cpp \
../../src/common/SysHelper.cpp \
../../src/common/Thread.cpp
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_USE_HP_LIB -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
LOCAL_SHARED_LIBRARIES:=hpsocket4c_so
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-http-4c-agent
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-4c-agent
LOCAL_SRC_FILES := agent/agent.cpp \
../global/helper.cpp \
../../src/common/crypto/Crypto.cpp \
../../src/common/FileHelper.cpp \
../../src/common/FuncHelper.cpp \
../../src/common/SysHelper.cpp \
../../src/common/Thread.cpp
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_USE_HP_LIB -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
LOCAL_SHARED_LIBRARIES:=hpsocket4c_so
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-http-4c-syncclient
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-4c-syncclient
LOCAL_SRC_FILES := syncclient/syncclient.cpp \
../global/helper.cpp \
../../src/common/crypto/Crypto.cpp \
../../src/common/FileHelper.cpp \
../../src/common/FuncHelper.cpp \
../../src/common/SysHelper.cpp \
../../src/common/Thread.cpp
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_USE_HP_LIB -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
LOCAL_SHARED_LIBRARIES:=hpsocket4c_so
include $(BUILD_EXECUTABLE)
49 changes: 49 additions & 0 deletions Linux/demo/testecho-http/Android.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
LOCAL_PATH := $(call my-dir)

# target lib : hp-testecho-http-server
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-server
LOCAL_SRC_FILES := server/server.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-http-client
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-client
LOCAL_SRC_FILES := client/client.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-http-agent
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-agent
LOCAL_SRC_FILES := agent/agent.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)

# target lib : hp-testecho-http-syncclient
include $(CLEAR_VARS)
LOCAL_MODULE := hp-testecho-http-syncclient
LOCAL_SRC_FILES := syncclient/syncclient.cpp \
../global/helper.cpp
LOCAL_WHOLE_STATIC_LIBRARIES := $(MY_WHOLE_STATIC_LIBRARIES) hpsocket
LOCAL_C_INCLUDES := $(MY_C_INCLUDES)
LOCAL_CFLAGS := $(MY_CFLAGS) -D_NEED_SSL -D_NEED_HTTP
LOCAL_CPPFLAGS := $(MY_CPPFLAGS)
LOCAL_LDLIBS := $(MY_LDLIBS)
include $(BUILD_EXECUTABLE)
Loading

0 comments on commit 2b25e25

Please sign in to comment.