@@ -11,10 +11,10 @@ BUILD_ROOT="${BUILD_ROOT:-/opt/build}"
1111BUILD_TARGET=" ${BUILD_TARGET:- x86_64} "
1212
1313ZLIB_VERSION=" ${ZLIB_VERSION:- 1.3.2} "
14- JSON_C_VERSION=" ${JSON_C_VERSION:- 0.17 } "
15- MBEDTLS_VERSION =" ${MBEDTLS_VERSION :- 2.28.5 } "
16- LIBUV_VERSION=" ${LIBUV_VERSION:- 1.44.2 } "
17- LIBWEBSOCKETS_VERSION=" ${LIBWEBSOCKETS_VERSION:- 4.3.6 } "
14+ JSON_C_VERSION=" ${JSON_C_VERSION:- 0.18 } "
15+ OPENSSL_VERSION =" ${OPENSSL_VERSION :- 3.6.1 } "
16+ LIBUV_VERSION=" ${LIBUV_VERSION:- 1.52.1 } "
17+ LIBWEBSOCKETS_VERSION=" ${LIBWEBSOCKETS_VERSION:- 4.5.7 } "
1818
1919build_zlib () {
2020 echo " === Building zlib-${ZLIB_VERSION} (${TARGET} )..."
@@ -41,17 +41,37 @@ build_json-c() {
4141 popd
4242}
4343
44- build_mbedtls () {
45- echo " === Building mbedtls-${MBEDTLS_VERSION} (${TARGET} )..."
46- curl -fSsLo- " https://github.com/ARMmbed/mbedtls/archive/v${MBEDTLS_VERSION} .tar.gz" | tar xz -C " ${BUILD_DIR} "
47- pushd " ${BUILD_DIR} /mbedtls-${MBEDTLS_VERSION} "
48- rm -rf build && mkdir -p build && cd build
49- cmake -DCMAKE_TOOLCHAIN_FILE=" ${BUILD_DIR} /cross-${TARGET} .cmake" \
50- -DCMAKE_BUILD_TYPE=RELEASE \
51- -DCMAKE_INSTALL_PREFIX=" ${STAGE_DIR} " \
52- -DENABLE_TESTING=OFF \
53- ..
54- make -j" $( nproc) " install
44+ map_openssl_target () {
45+ case $1 in
46+ i686) echo linux-generic32 ;;
47+ x86_64) echo linux-x86_64 ;;
48+ arm|armhf|armv7l) echo linux-armv4 ;;
49+ aarch64) echo linux-aarch64 ;;
50+ mips|mipsel) echo linux-mips32 ;;
51+ mips64|mips64el) echo linux64-mips64 ;;
52+ powerpc64) echo linux-ppc64 ;;
53+ powerpc64le) echo linux-ppc64le ;;
54+ s390x) echo linux64-s390x ;;
55+ win32) echo mingw64 ;;
56+ * ) echo " unknown openssl target: $1 " && exit 1
57+ esac
58+ }
59+
60+ build_openssl () {
61+ openssl_target=$( map_openssl_target " ${BUILD_TARGET} " )
62+ echo " === Building openssl-${OPENSSL_VERSION} (${openssl_target} )..."
63+ curl -sLo- " https://www.openssl.org/source/openssl-${OPENSSL_VERSION} .tar.gz" | tar xz -C " ${BUILD_DIR} "
64+ pushd " ${BUILD_DIR} /openssl-${OPENSSL_VERSION} "
65+ openssl_cflags=" -fPIC -latomic"
66+ case ${BUILD_TARGET} in
67+ s390x) openssl_cflags=" ${openssl_cflags} -march=z10" ;;
68+ win32)
69+ curl -sLo- https://github.com/openssl/openssl/pull/29826.patch | patch -p1
70+ ;;
71+ esac
72+ env CC=gcc CROSS_COMPILE=" ${TARGET} -" CFLAGS=" ${openssl_cflags} " \
73+ ./Configure " ${openssl_target} " no-ssl3 no-err -DOPENSSL_SMALL_FOOTPRINT --prefix=" ${STAGE_DIR} " \
74+ && make -j" $( nproc) " all > /dev/null && make install_sw
5575 popd
5676}
5777
@@ -86,16 +106,14 @@ build_libwebsockets() {
86106 curl -fSsLo- " https://github.com/warmcat/libwebsockets/archive/v${LIBWEBSOCKETS_VERSION} .tar.gz" | tar xz -C " ${BUILD_DIR} "
87107 pushd " ${BUILD_DIR} /libwebsockets-${LIBWEBSOCKETS_VERSION} "
88108 sed -i ' s/ websockets_shared//g' cmake/libwebsockets-config.cmake.in
89- sed -i ' s/ OR PC_OPENSSL_FOUND//g' lib/tls/CMakeLists.txt
90- sed -i ' /PC_OPENSSL/d' lib/tls/CMakeLists.txt
91109 rm -rf build && mkdir -p build && cd build
92110 cmake -DCMAKE_TOOLCHAIN_FILE=" ${BUILD_DIR} /cross-${TARGET} .cmake" \
93111 -DCMAKE_BUILD_TYPE=RELEASE \
94112 -DCMAKE_INSTALL_PREFIX=" ${STAGE_DIR} " \
95113 -DCMAKE_FIND_LIBRARY_SUFFIXES=" .a" \
96114 -DCMAKE_EXE_LINKER_FLAGS=" -static" \
97115 -DLWS_WITHOUT_TESTAPPS=ON \
98- -DLWS_WITH_MBEDTLS =ON \
116+ -DLWS_WITH_SSL =ON \
99117 -DLWS_WITH_LIBUV=ON \
100118 -DLWS_STATIC_PIC=ON \
101119 -DLWS_WITH_SHARED=OFF \
@@ -104,13 +122,21 @@ build_libwebsockets() {
104122 -DLWS_ROLE_RAW_FILE=OFF \
105123 -DLWS_WITH_HTTP2=ON \
106124 -DLWS_WITH_HTTP_BASIC_AUTH=OFF \
125+ -DLWS_WITH_HTTP_STREAM_COMPRESSION=ON \
107126 -DLWS_WITH_UDP=OFF \
108127 -DLWS_WITHOUT_CLIENT=ON \
109128 -DLWS_WITHOUT_EXTENSIONS=OFF \
110129 -DLWS_WITH_LEJP=OFF \
111130 -DLWS_WITH_LEJP_CONF=OFF \
112131 -DLWS_WITH_LWSAC=OFF \
113132 -DLWS_WITH_SEQUENCER=OFF \
133+ -DLWS_WITH_UPNG=OFF \
134+ -DLWS_WITH_JPEG=OFF \
135+ -DLWS_WITH_DLO=OFF \
136+ -DLWS_WITH_SYS_STATE=OFF \
137+ -DLWS_WITH_SYS_SMD=OFF \
138+ -DLWS_WITH_SECURE_STREAMS=OFF \
139+ -DLWS_CTEST_INTERNET_AVAILABLE=OFF \
114140 ..
115141 make -j" $( nproc) " install
116142 popd
@@ -159,7 +185,7 @@ build() {
159185 build_zlib
160186 build_json-c
161187 build_libuv
162- build_mbedtls
188+ build_openssl
163189 build_libwebsockets
164190 build_ttyd
165191}
@@ -168,10 +194,12 @@ case ${BUILD_TARGET} in
168194 amd64) BUILD_TARGET=" x86_64" ;;
169195 arm64) BUILD_TARGET=" aarch64" ;;
170196 armv7) BUILD_TARGET=" armv7l" ;;
197+ ppc64) BUILD_TARGET=" powerpc64" ;;
198+ ppc64le) BUILD_TARGET=" powerpc64le" ;;
171199esac
172200
173201case ${BUILD_TARGET} in
174- i686|x86_64|aarch64|mips|mipsel|mips64|mips64el|s390x)
202+ i686|x86_64|aarch64|mips|mipsel|mips64|mips64el|powerpc64|powerpc64le| s390x)
175203 build " ${BUILD_TARGET} -linux-musl" " ${BUILD_TARGET} "
176204 ;;
177205 arm)
0 commit comments