|
| 1 | +#!/bin/sh |
| 2 | +# Usage: |
| 3 | +# TOOLCHAIN_DIR=<path_to_webos_buildroot_toolchain> ./build_hyperion_ng.sh |
| 4 | + |
| 5 | +HYPERION_NG_REPO="${HYPERION_NG_REPO:-https://github.com/tuxuser/hyperion.ng}" |
| 6 | +HYPERION_NG_BRANCH="${HYPERION_NG_BRANCH:-tmp/webos/lil_patches}" |
| 7 | + |
| 8 | +# Toolchain params - No changes needed below this line |
| 9 | +TOOLCHAIN_DIR=${TOOLCHAIN_DIR:-$HOME/arm-webos-linux-gnueabi_sdk-buildroot} |
| 10 | +TOOLCHAIN_ENV_FILE="${TOOLCHAIN_DIR}/environment-setup" |
| 11 | +TOOLCHAIN_CMAKE_FILE="${TOOLCHAIN_DIR}/share/buildroot/toolchainfile.cmake" |
| 12 | + |
| 13 | +EXEC_FILE=`readlink -f $0` |
| 14 | +EXEC_DIR=`dirname ${EXEC_FILE}` |
| 15 | +# Dir to copy hyperion.ng build artifacts to |
| 16 | +TARGET_DIR="${EXEC_DIR}/hyperion" |
| 17 | + |
| 18 | +HYPERION_NG_DIR="${EXEC_DIR}/hyperion.ng" |
| 19 | +BUILD_DIR_NATIVE="${HYPERION_NG_DIR}/build-x86x64" |
| 20 | +BUILD_DIR_CROSS="${HYPERION_NG_DIR}/build-cross" |
| 21 | + |
| 22 | +DEPENDENCIES="libpng16.so.16 libjpeg.so.8 libcrypto.so.1.1 libz.so.1 libssl.so.1.1 libQt5Sql.so.5.15.2 libpcre2-16.so.0 libQt5Gui.so.5 libQt5Network.so.5 libQt5Widgets.so.5 libk5crypto.so.3 libatomic.so.1 libQt5Core.so.5 libkrb5support.so.0 libcom_err.so.3 libstdc++.so.6 libkrb5.so.3 libQt5Sql.so.5 libgssapi_krb5.so.2 libQt5SerialPort.so.5 libQt5Sql.so.5.15 libusb-1.0.so.0" |
| 23 | + |
| 24 | +if [ ! -d $HYPERION_NG_DIR ] |
| 25 | +then |
| 26 | + echo ":: Cloning hyperion.ng from repo '$HYPERION_NG_REPO', branch: '$HYPERION_NG_BRANCH'" |
| 27 | + git clone --recursive --branch $HYPERION_NG_BRANCH $HYPERION_NG_REPO $HYPERION_NG_DIR || { echo "[-] Cloning git repo failed"; exit 1; } |
| 28 | +fi |
| 29 | + |
| 30 | +# Native build to have flatc compiler |
| 31 | +if [ ! -d ${BUILD_DIR_NATIVE} ] |
| 32 | +then |
| 33 | + mkdir ${BUILD_DIR_NATIVE} |
| 34 | +fi |
| 35 | + |
| 36 | +pushd ${BUILD_DIR_NATIVE} |
| 37 | +cmake .. \ |
| 38 | + -DCMAKE_BUILD_TYPE=Release \ |
| 39 | + -DENABLE_FLATBUF_SERVER=OFF \ |
| 40 | + -DENABLE_DISPMANX=OFF \ |
| 41 | + -DENABLE_FB=OFF \ |
| 42 | + -DENABLE_V4L2=OFF \ |
| 43 | + -DENABLE_X11=OFF \ |
| 44 | + -DENABLE_XCB=OFF \ |
| 45 | + -DENABLE_BOBLIGHT_SERVER=OFF \ |
| 46 | + -DENABLE_CEC=OFF \ |
| 47 | + -DENABLE_DEV_NETWORK=OFF \ |
| 48 | + -DENABLE_DEV_SERIAL=OFF \ |
| 49 | + -DENABLE_DEV_TINKERFORGE=OFF \ |
| 50 | + -DENABLE_DEV_USB_HID=OFF \ |
| 51 | + -DENABLE_AVAHI=OFF \ |
| 52 | + -DENABLE_EFFECTENGINE=OFF \ |
| 53 | + -DENABLE_REMOTE_CTL=OFF \ |
| 54 | + -Wno-dev || { echo "[-] Native build -CONFIG- failed"; exit 1; } |
| 55 | + |
| 56 | +make -j9 || { echo "[-] Native build -MAKE- failed"; exit 1; } |
| 57 | +popd |
| 58 | + |
| 59 | +# Target cross build |
| 60 | +# source $WEBOS_ENV_FILE |
| 61 | + |
| 62 | +if [ ! -d ${BUILD_DIR_CROSS} ] |
| 63 | +then |
| 64 | + mkdir ${BUILD_DIR_CROSS} |
| 65 | +fi |
| 66 | + |
| 67 | +pushd ${BUILD_DIR_CROSS} |
| 68 | +cmake .. \ |
| 69 | + -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_CMAKE_FILE} \ |
| 70 | + -DCMAKE_BUILD_TYPE=Debug \ |
| 71 | + -DPLATFORM=rpi \ |
| 72 | + -DHYPERION_LIGHT=ON \ |
| 73 | + -DENABLE_QT=OFF \ |
| 74 | + -DENABLE_EFFECTENGINE=OFF \ |
| 75 | + -DENABLE_JSONCHECKS=OFF \ |
| 76 | + -DENABLE_DEV_SERIAL=ON \ |
| 77 | + -DENABLE_DEV_USB_HID=ON \ |
| 78 | + -DENABLE_DEV_WS281XPWM=OFF \ |
| 79 | + -DENABLE_DEV_TINKERFORGE=ON \ |
| 80 | + -DENABLE_AVAHI=OFF \ |
| 81 | + -DENABLE_DEPLOY_DEPENDENCIES=OFF \ |
| 82 | + -DENABLE_BOBLIGHT_SERVER=ON \ |
| 83 | + -DENABLE_FLATBUF_SERVER=ON \ |
| 84 | + -DENABLE_PROTOBUF_SERVER=OFF \ |
| 85 | + -DENABLE_FORWARDER=ON \ |
| 86 | + -DENABLE_FLATBUF_CONNECT=ON \ |
| 87 | + -DIMPORT_FLATC=${BUILD_DIR_NATIVE}/flatc_export.cmake || { echo "[-] Cross build -CONFIG- failed"; exit 1; } |
| 88 | + |
| 89 | +make -j9 || { echo "[-] Native build -MAKE- failed"; exit 1; } |
| 90 | +popd |
| 91 | + |
| 92 | +if [ -d $TARGET_DIR ] |
| 93 | +then |
| 94 | + echo ":: Empyting target build artifacts dir" |
| 95 | + rm -rf $TARGET_DIR/* |
| 96 | +else |
| 97 | + echo ":: Creating build artifacts dir" |
| 98 | + mkdir $TARGET_DIR |
| 99 | +fi |
| 100 | + |
| 101 | +echo ":: Copying build artifacts" |
| 102 | +cp -ra ${BUILD_DIR_CROSS}/bin/* ${TARGET_DIR}/ |
| 103 | + |
| 104 | +echo ":: Copying dependencies from toolchain sysroot" |
| 105 | +for fname in ${DEPENDENCIES} |
| 106 | +do |
| 107 | + find ${TOOLCHAIN_DIR}/arm-webos-linux-gnueabi/sysroot/ -name $fname -exec cp {} ${TARGET_DIR}/ \; |
| 108 | +done |
| 109 | + |
| 110 | +mkdir -p ${TARGET_DIR}/sqldrivers |
| 111 | +mkdir -p ${TARGET_DIR}/imageformats |
| 112 | +cp ${TOOLCHAIN_DIR}/arm-webos-linux-gnueabi/sysroot/usr/lib/qt/plugins/sqldrivers/libqsqlite.so ${TARGET_DIR}/sqldrivers/ |
| 113 | +cp ${TOOLCHAIN_DIR}/arm-webos-linux-gnueabi/sysroot/usr/lib/qt/plugins/imageformats/libqico.so ${TARGET_DIR}/imageformats/ |
| 114 | +cp ${TOOLCHAIN_DIR}/arm-webos-linux-gnueabi/sysroot/usr/lib/qt/plugins/imageformats/libqjpeg.so ${TARGET_DIR}/imageformats/ |
| 115 | + |
| 116 | +echo "[+] Success" |
0 commit comments