@@ -5,10 +5,11 @@ set -eo pipefail
55CROSS_ROOT=" ${CROSS_ROOT:-/ opt/ cross} "
66STAGE_ROOT=" ${STAGE_ROOT:-/ opt/ stage} "
77BUILD_ROOT=" ${BUILD_ROOT:-/ opt/ build} "
8+ BUILD_TARGET=" $1 "
89
910ZLIB_VERSION=" ${ZLIB_VERSION:- 1.2.11} "
1011JSON_C_VERSION=" ${JSON_C_VERSION:- 0.14} "
11- OPENSSL_VERSION=" ${OPENSSL_VERSION:- 1.0.2u } "
12+ OPENSSL_VERSION=" ${OPENSSL_VERSION:- 1.1.1g } "
1213LIBUV_VERSION=" ${LIBUV_VERSION:- 1.38.0} "
1314LIBWEBSOCKETS_VERSION=" ${LIBWEBSOCKETS_VERSION:- 4.0.20} "
1415
@@ -35,14 +36,26 @@ build_json-c() {
3536 popd
3637}
3738
39+ map_openssl_target () {
40+ case $1 in
41+ i686) echo linux-generic32 ;;
42+ x86_64) echo linux-x86_64 ;;
43+ arm|armhf) echo linux-armv4 ;;
44+ aarch64) echo linux-aarch64 ;;
45+ mips|mipsel) echo linux-mips32 ;;
46+ mips64|mips64el) echo linux64-mips64 ;;
47+ * ) echo " unsupported target: $1 " && exit 1
48+ esac
49+ }
50+
3851build_openssl () {
39- echo " === Building openssl-${OPENSSL_VERSION} (${TARGET} )..."
52+ local openssl_target=$( map_openssl_target " ${BUILD_TARGET} " )
53+ echo " === Building openssl-${OPENSSL_VERSION} (${openssl_target} )..."
4054 curl -sLo- " https://www.openssl.org/source/openssl-${OPENSSL_VERSION} .tar.gz" | tar xz -C " ${BUILD_DIR} "
4155 pushd " ${BUILD_DIR} /openssl-${OPENSSL_VERSION} "
42- env CC=" ${TARGET} -gcc" AR=" ${TARGET} -ar" RANLIB=" ${TARGET} -ranlib" C_INCLUDE_PATH=" ${STAGE_DIR} /include" \
43- ./Configure dist -fPIC --prefix=/ --install_prefix=" ${STAGE_DIR} "
44- make -j" $( nproc) " > /dev/null
45- make install_sw
56+ env CC=gcc CROSS_COMPILE=" ${TARGET} -" CFLAGS=" -fPIC -latomic" \
57+ ./Configure " ${openssl_target} " no-ssl3 no-err -DOPENSSL_SMALL_FOOTPRINT --prefix=" ${STAGE_DIR} " \
58+ && make -j" $( nproc) " all > /dev/null && make install_sw
4659 popd
4760}
4861
7487
7588build_libwebsockets () {
7689 echo " === Building libwebsockets-${LIBWEBSOCKETS_VERSION} (${TARGET} )..."
77- curl -sLo- " https://github.com/warmcat/libwebsockets/archive/v${LIBWEBSOCKETS_VERSION} .tar.gz" | tar xz -C ${BUILD_DIR}
90+ curl -sLo- " https://github.com/warmcat/libwebsockets/archive/v${LIBWEBSOCKETS_VERSION} .tar.gz" | tar xz -C " ${BUILD_DIR} "
7891 pushd " ${BUILD_DIR} /libwebsockets-${LIBWEBSOCKETS_VERSION} "
7992 sed -i ' s/ websockets_shared//g' cmake/LibwebsocketsConfig.cmake.in
8093 sed -i ' /PC_OPENSSL/d' CMakeLists.txt
@@ -100,7 +113,8 @@ build_ttyd() {
100113 cmake -DCMAKE_TOOLCHAIN_FILE=" ${BUILD_DIR} /cross-${TARGET} .cmake" \
101114 -DCMAKE_INSTALL_PREFIX=" ${STAGE_DIR} " \
102115 -DCMAKE_FIND_LIBRARY_SUFFIXES=" .a" \
103- -DCMAKE_EXE_LINKER_FLAGS=" -static -no-pie -s" \
116+ -DCMAKE_C_FLAGS=" -Os -ffunction-sections -fdata-sections -fno-unwind-tables -fno-asynchronous-unwind-tables -flto" \
117+ -DCMAKE_EXE_LINKER_FLAGS=" -static -no-pie -Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections" \
104118 -DCMAKE_BUILD_TYPE=RELEASE \
105119 ..
106120 make install
0 commit comments