hal/modules/libgpiod/build.sh
@@ -6,10 +6,10 @@ PACK_SUFIX=tar.gz # LingYun source code FTP server LY_FTP=http://master.weike-iot.com:2211/src/ LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LY_FTP LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- @@ -40,144 +40,144 @@ #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then pr_error "$1" exit fi if [ $? != 0 ] ; then pr_error "$1" exit fi } # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function do_fetch() { if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi do_unpack ${LIB_NAME}.${PACK_SUFIX} do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME cd $LIB_NAME ./autogen.sh ./autogen.sh do_export do_export echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --cache-file=arm-linux.cache --enable-tools check_result "ERROR: configure ${LIB_NAME} failure" echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --cache-file=arm-linux.cache --enable-tools check_result "ERROR: configure ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch openlibs/busybox/build.sh
@@ -1,75 +1,184 @@ #!/bin/bash set -e # library name and version # Official: https://busybox.net/downloads/ LIB_NAME=busybox-1.36.0 PACK_SUFIX=tar.bz2 ROOTFS_PATH=`pwd`/../../linux-bsp/rootfs/ # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) JOBS=`cat /proc/cpuinfo | grep processor | wc -l` # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/busybox # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function compile_busybox() # decompress a packet to destination path function do_unpack() { SRC_NAME=busybox-1.31.0 PACK_SUFIX=tar.bz2 tarball=$1 dstpath=`pwd` if [ -f $SRC_NAME/busybox ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; fi msg_banner "start download and compile $SRC_NAME " if [ ! -d $SRC_NAME ] ; then if [ ! -f $SRC_NAME.${PACK_SUFIX} ] ; then wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi tar -xjf $SRC_NAME.${PACK_SUFIX} if [[ $# == 2 ]] ; then dstpath=$2 fi cp config/${SRC_NAME}.config $SRC_NAME/.config pr_info "decompress $tarball => $dstpath" cd $SRC_NAME mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; sed -i "s|^CONFIG_CROSS_COMPILER_PREFIX.*|CONFIG_CROSS_COMPILER_PREFIX=\"${CROSS_COMPILE}\"|g" .config sed -i "s|^CONFIG_PREFIX.*|CONFIG_PREFIX=\"$ROOTFS_PATH\"|g" .config *.tar.bz2) tar -xjf $tarball -C $dstpath ;; make #make uninstall && sudo make install *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi compile_busybox pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function do_fetch() { if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME cp $PRJ_PATH/config/${LIB_NAME}.config .config do_export make -j ${JOBS} CROSS_COMPILE=$CROSS_COMPILE check_result "ERROR: compile ${LIB_NAME} failure" pr_info "${LIB_NAME} installed to '${BIN_PATH}'" mkdir -p ${BIN_PATH} install -m 755 busybox ${BIN_PATH}/ } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/busybox/config/busybox-1.36.0.config
File was renamed from openlibs/busybox/config/busybox-1.31.0.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.31.0 # Mon Aug 12 14:27:57 2019 # Busybox version: 1.36.0 # Tue Aug 15 16:28:32 2023 # CONFIG_HAVE_DOT_CONFIG=y @@ -36,7 +36,6 @@ # CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_SYSLOG_INFO=y CONFIG_FEATURE_SYSLOG=y CONFIG_PLATFORM_LINUX=y # # Build Options @@ -48,13 +47,14 @@ # CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_CROSS_COMPILER_PREFIX="/opt/buildroot/cortex-a5/bin/arm-linux-" CONFIG_CROSS_COMPILER_PREFIX="" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_EXTRA_LDFLAGS="" CONFIG_EXTRA_LDLIBS="" # CONFIG_USE_PORTABLE_CODE is not set CONFIG_STACK_OPTIMIZATION_386=y CONFIG_STATIC_LIBGCC=y # # Installation Options ("make install" behavior) @@ -76,6 +76,7 @@ # CONFIG_DEBUG_SANITIZE is not set # CONFIG_UNIT_TEST is not set # CONFIG_WERROR is not set # CONFIG_WARN_SIMPLE_MSG is not set CONFIG_NO_DEBUG_LIB=y # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set @@ -92,10 +93,16 @@ # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set CONFIG_PASSWORD_MINLEN=6 CONFIG_MD5_SMALL=1 CONFIG_SHA1_SMALL=3 CONFIG_SHA1_HWACCEL=y CONFIG_SHA256_HWACCEL=y CONFIG_SHA3_SMALL=1 # CONFIG_FEATURE_FAST_TOP is not set # CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_SERVICES is not set CONFIG_FEATURE_NON_POSIX_CP=y # CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set CONFIG_FEATURE_USE_SENDFILE=y CONFIG_FEATURE_COPYBUF_KB=4 CONFIG_MONOTONIC_SYSCALL=y CONFIG_IOCTL_HEX2STR_ERROR=y CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 # CONFIG_FEATURE_EDITING_VI is not set @@ -119,14 +126,9 @@ # CONFIG_UNICODE_BIDI_SUPPORT is not set # CONFIG_UNICODE_NEUTRAL_TABLE is not set # CONFIG_UNICODE_PRESERVE_BROKEN is not set CONFIG_FEATURE_NON_POSIX_CP=y # CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set CONFIG_FEATURE_USE_SENDFILE=y CONFIG_FEATURE_COPYBUF_KB=4 CONFIG_FEATURE_SKIP_ROOTFS=y CONFIG_MONOTONIC_SYSCALL=y CONFIG_IOCTL_HEX2STR_ERROR=y CONFIG_FEATURE_HWIB=y # CONFIG_LOOP_CONFIGURE is not set # CONFIG_NO_LOOP_CONFIGURE is not set CONFIG_TRY_LOOP_CONFIGURE=y # # Applets @@ -161,6 +163,8 @@ # CONFIG_CPIO is not set # CONFIG_FEATURE_CPIO_O is not set # CONFIG_FEATURE_CPIO_P is not set # CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set # CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set CONFIG_DPKG=y # CONFIG_DPKG_DEB is not set CONFIG_GZIP=y @@ -196,6 +200,22 @@ # # Coreutils # CONFIG_FEATURE_VERBOSE=y # # Common options for date and touch # CONFIG_FEATURE_TIMEZONE=y # # Common options for cp and mv # CONFIG_FEATURE_PRESERVE_HARDLINKS=y # # Common options for df, du, ls # CONFIG_FEATURE_HUMAN_READABLE=y CONFIG_BASENAME=y CONFIG_CAT=y CONFIG_FEATURE_CATN=y @@ -206,11 +226,13 @@ CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y CONFIG_CHROOT=y CONFIG_CKSUM=y CONFIG_CRC32=y CONFIG_COMM=y CONFIG_CP=y CONFIG_FEATURE_CP_LONG_OPTIONS=y CONFIG_FEATURE_CP_REFLINK=y CONFIG_CUT=y CONFIG_FEATURE_CUT_REGEX=y CONFIG_DATE=y CONFIG_FEATURE_DATE_ISOFMT=y # CONFIG_FEATURE_DATE_NANO is not set @@ -222,6 +244,7 @@ CONFIG_FEATURE_DD_STATUS=y CONFIG_DF=y CONFIG_FEATURE_DF_FANCY=y CONFIG_FEATURE_SKIP_ROOTFS=y CONFIG_DIRNAME=y CONFIG_DOS2UNIX=y CONFIG_UNIX2DOS=y @@ -315,13 +338,13 @@ CONFIG_FEATURE_TEST_64=y CONFIG_TIMEOUT=y CONFIG_TOUCH=y CONFIG_FEATURE_TOUCH_NODEREF=y CONFIG_FEATURE_TOUCH_SUSV3=y CONFIG_TR=y CONFIG_FEATURE_TR_CLASSES=y CONFIG_FEATURE_TR_EQUIV=y CONFIG_TRUE=y CONFIG_TRUNCATE=y CONFIG_TSORT=y CONFIG_TTY=y CONFIG_UNAME=y CONFIG_UNAME_OSNAME="GNU/Linux" @@ -330,6 +353,7 @@ CONFIG_UNLINK=y CONFIG_USLEEP=y CONFIG_UUDECODE=y CONFIG_BASE32=y CONFIG_BASE64=y CONFIG_UUENCODE=y CONFIG_WC=y @@ -339,21 +363,6 @@ CONFIG_USERS=y CONFIG_WHOAMI=y CONFIG_YES=y # # Common options # CONFIG_FEATURE_VERBOSE=y # # Common options for cp and mv # CONFIG_FEATURE_PRESERVE_HARDLINKS=y # # Common options for df, du, ls # CONFIG_FEATURE_HUMAN_READABLE=y # # Console Utilities @@ -422,6 +431,7 @@ CONFIG_FEATURE_VI_MAX_LEN=4096 # CONFIG_FEATURE_VI_8BIT is not set CONFIG_FEATURE_VI_COLON=y CONFIG_FEATURE_VI_COLON_EXPAND=y CONFIG_FEATURE_VI_YANKMARK=y CONFIG_FEATURE_VI_SEARCH=y # CONFIG_FEATURE_VI_REGEX_SEARCH is not set @@ -435,6 +445,7 @@ CONFIG_FEATURE_VI_UNDO=y CONFIG_FEATURE_VI_UNDO_QUEUE=y CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 CONFIG_FEATURE_VI_VERBOSE_STATUS=y CONFIG_FEATURE_ALLOW_EXEC=y # @@ -443,7 +454,11 @@ CONFIG_FIND=y CONFIG_FEATURE_FIND_PRINT0=y CONFIG_FEATURE_FIND_MTIME=y CONFIG_FEATURE_FIND_ATIME=y CONFIG_FEATURE_FIND_CTIME=y CONFIG_FEATURE_FIND_MMIN=y CONFIG_FEATURE_FIND_AMIN=y CONFIG_FEATURE_FIND_CMIN=y CONFIG_FEATURE_FIND_PERM=y CONFIG_FEATURE_FIND_TYPE=y CONFIG_FEATURE_FIND_EXECUTABLE=y @@ -451,6 +466,7 @@ CONFIG_FEATURE_FIND_MAXDEPTH=y CONFIG_FEATURE_FIND_NEWER=y CONFIG_FEATURE_FIND_INUM=y CONFIG_FEATURE_FIND_SAMEFILE=y CONFIG_FEATURE_FIND_EXEC=y CONFIG_FEATURE_FIND_EXEC_PLUS=y CONFIG_FEATURE_FIND_USER=y @@ -462,6 +478,7 @@ CONFIG_FEATURE_FIND_PRUNE=y CONFIG_FEATURE_FIND_QUIT=y CONFIG_FEATURE_FIND_DELETE=y CONFIG_FEATURE_FIND_EMPTY=y CONFIG_FEATURE_FIND_PATH=y CONFIG_FEATURE_FIND_REGEX=y # CONFIG_FEATURE_FIND_CONTEXT is not set @@ -621,7 +638,6 @@ CONFIG_GETOPT=y CONFIG_FEATURE_GETOPT_LONG=y CONFIG_HEXDUMP=y CONFIG_FEATURE_HEXDUMP_REVERSE=y # CONFIG_HD is not set CONFIG_XXD=y CONFIG_HWCLOCK=y @@ -692,6 +708,7 @@ CONFIG_SWITCH_ROOT=y CONFIG_TASKSET=y CONFIG_FEATURE_TASKSET_FANCY=y CONFIG_FEATURE_TASKSET_CPULIST=y CONFIG_UEVENT=y CONFIG_UMOUNT=y CONFIG_FEATURE_UMOUNT_ALL=y @@ -712,6 +729,7 @@ CONFIG_FEATURE_VOLUMEID_BCACHE=y CONFIG_FEATURE_VOLUMEID_BTRFS=y CONFIG_FEATURE_VOLUMEID_CRAMFS=y CONFIG_FEATURE_VOLUMEID_EROFS=y CONFIG_FEATURE_VOLUMEID_EXFAT=y CONFIG_FEATURE_VOLUMEID_EXT=y CONFIG_FEATURE_VOLUMEID_F2FS=y @@ -739,6 +757,7 @@ # Miscellaneous Utilities # CONFIG_ADJTIMEX=y CONFIG_ASCII=y # CONFIG_BBCONFIG is not set # CONFIG_FEATURE_COMPRESS_BBCONFIG is not set CONFIG_BC=y @@ -809,6 +828,7 @@ CONFIG_FEATURE_MAKEDEVS_TABLE=y # CONFIG_MAN is not set CONFIG_MICROCOM=y CONFIG_MIM=y # CONFIG_MT is not set CONFIG_NANDWRITE=y CONFIG_NANDDUMP=y @@ -818,10 +838,12 @@ # CONFIG_RFKILL is not set CONFIG_RUNLEVEL=y CONFIG_RX=y CONFIG_SEEDRNG=y CONFIG_SETFATTR=y CONFIG_SETSERIAL=y CONFIG_STRINGS=y CONFIG_TIME=y CONFIG_TREE=y CONFIG_TS=y CONFIG_TTYSIZE=y CONFIG_UBIATTACH=y @@ -833,6 +855,7 @@ CONFIG_UBIRENAME=y CONFIG_VOLNAME=y CONFIG_WATCHDOG=y # CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set # # Networking Utilities @@ -841,6 +864,9 @@ # CONFIG_FEATURE_UNIX_LOCAL is not set # CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set # CONFIG_VERBOSE_RESOLUTION_ERRORS is not set # CONFIG_FEATURE_ETC_NETWORKS is not set # CONFIG_FEATURE_ETC_SERVICES is not set CONFIG_FEATURE_HWIB=y # CONFIG_FEATURE_TLS_SHA1 is not set CONFIG_ARP=y CONFIG_ARPING=y @@ -859,6 +885,7 @@ CONFIG_HOSTNAME=y CONFIG_DNSDOMAINNAME=y # CONFIG_HTTPD is not set CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0 # CONFIG_FEATURE_HTTPD_RANGES is not set # CONFIG_FEATURE_HTTPD_SETUID is not set # CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set @@ -870,6 +897,10 @@ # CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set # CONFIG_FEATURE_HTTPD_PROXY is not set # CONFIG_FEATURE_HTTPD_GZIP is not set # CONFIG_FEATURE_HTTPD_ETAG is not set # CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set # CONFIG_FEATURE_HTTPD_DATE is not set # CONFIG_FEATURE_HTTPD_ACL_IP is not set CONFIG_IFCONFIG=y CONFIG_FEATURE_IFCONFIG_STATUS=y CONFIG_FEATURE_IFCONFIG_SLIP=y @@ -947,6 +978,7 @@ CONFIG_FEATURE_TELNET_WIDTH=y # CONFIG_TELNETD is not set # CONFIG_FEATURE_TELNETD_STANDALONE is not set CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set CONFIG_TFTP=y CONFIG_FEATURE_TFTP_PROGRESS_BAR=y @@ -967,6 +999,7 @@ CONFIG_WGET=y CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_STATUSBAR=y CONFIG_FEATURE_WGET_FTP=y CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_FEATURE_WGET_TIMEOUT=y CONFIG_FEATURE_WGET_HTTPS=y @@ -983,6 +1016,7 @@ CONFIG_FEATURE_UDHCPC_ARPING=y CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" CONFIG_UDHCPC6_DEFAULT_SCRIPT="" # CONFIG_UDHCPC6 is not set # CONFIG_FEATURE_UDHCPC6_RFC3646 is not set # CONFIG_FEATURE_UDHCPC6_RFC4704 is not set @@ -992,6 +1026,7 @@ # # Common options for DHCP applets # CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" # CONFIG_FEATURE_UDHCP_PORT is not set CONFIG_UDHCP_DEBUG=2 CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 @@ -1009,17 +1044,19 @@ # # Mail Utilities # CONFIG_FEATURE_MIME_CHARSET="" # CONFIG_MAKEMIME is not set # CONFIG_POPMAILDIR is not set # CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set # CONFIG_REFORMIME is not set # CONFIG_FEATURE_REFORMIME_COMPAT is not set # CONFIG_SENDMAIL is not set CONFIG_FEATURE_MIME_CHARSET="" # # Process Utilities # # CONFIG_FEATURE_FAST_TOP is not set CONFIG_FEATURE_SHOW_THREADS=y CONFIG_FREE=y CONFIG_FUSER=y CONFIG_IOSTAT=y @@ -1058,7 +1095,6 @@ CONFIG_UPTIME=y CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y CONFIG_WATCH=y CONFIG_FEATURE_SHOW_THREADS=y # # Runit Utilities @@ -1099,6 +1135,7 @@ CONFIG_BASH_IS_ASH=y # CONFIG_BASH_IS_HUSH is not set # CONFIG_BASH_IS_NONE is not set CONFIG_SHELL_ASH=y CONFIG_ASH=y CONFIG_ASH_OPTIMIZE_FOR_SIZE=y CONFIG_ASH_INTERNAL_GLOB=y @@ -1114,15 +1151,17 @@ CONFIG_ASH_ECHO=y CONFIG_ASH_PRINTF=y CONFIG_ASH_TEST=y CONFIG_ASH_SLEEP=y CONFIG_ASH_HELP=y CONFIG_ASH_GETOPTS=y CONFIG_ASH_CMDCMD=y CONFIG_CTTYHACK=y # CONFIG_HUSH is not set # CONFIG_SHELL_HUSH is not set # CONFIG_HUSH_BASH_COMPAT is not set # CONFIG_HUSH_BRACE_EXPANSION is not set # CONFIG_HUSH_LINENO_VAR is not set # CONFIG_HUSH_BASH_SOURCE_CURDIR is not set # CONFIG_HUSH_LINENO_VAR is not set # CONFIG_HUSH_INTERACTIVE is not set # CONFIG_HUSH_SAVEHISTORY is not set # CONFIG_HUSH_JOB is not set @@ -1185,6 +1224,7 @@ CONFIG_FEATURE_REMOTE_LOG=y CONFIG_FEATURE_SYSLOGD_DUP=y CONFIG_FEATURE_SYSLOGD_CFG=y # CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 CONFIG_FEATURE_IPC_SYSLOG=y CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 openlibs/cJSON/build.sh
File was deleted openlibs/cjson/build.sh
New file @@ -0,0 +1,182 @@ #!/bin/bash # library name and version # Official: https://github.com/DaveGamble/cJSON LIB_NAME=cJSON-1.7.15 PACK_SUFIX=tar.gz # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/lib/libcjson.so # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then pr_error "$1" fi } # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function do_fetch() { if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME do_export sed -i "s|^CC =.*|CC = ${CROSS_COMPILE}gcc -std=c89|" Makefile make && make PREFIX=$PREFIX_PATH install check_result "ERROR: compile ${LIB_NAME} failure" cp libcjson.a $PREFIX_PATH/lib } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/libevent/build.sh
@@ -1,41 +1,117 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile libevent for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://github.com/libevent/libevent/releases/download/ LIB_NAME=libevent-2.1.11-stable PACK_SUFIX=tar.gz PREFIX_PATH=`pwd`/../install # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/lib/libevent.so # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,40 +131,52 @@ export CFLAGS= } function compile_libevent() function do_fetch() { SRC_NAME=libevent-2.1.11-stable PACK_SUFIX=tar.gz if [ -f ${PREFIX_PATH}/lib/libevent.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xzf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-thread-support --enable-openssl --enable-function-sections check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME export_cross do_export compile_libevent ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --enable-thread-support --enable-openssl --enable-function-sections check_result "ERROR: configure ${LIB_NAME} failure" make && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/libgpiod/build.sh
@@ -6,10 +6,10 @@ PACK_SUFIX=tar.gz # LingYun source code FTP server LY_FTP=http://master.weike-iot.com:2211/src/ LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LY_FTP LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- @@ -40,144 +40,144 @@ #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then pr_error "$1" exit fi if [ $? != 0 ] ; then pr_error "$1" exit fi } # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function do_fetch() { if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi do_unpack ${LIB_NAME}.${PACK_SUFIX} do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME cd $LIB_NAME ./autogen.sh ./autogen.sh do_export do_export echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --cache-file=arm-linux.cache --enable-tools check_result "ERROR: configure ${LIB_NAME} failure" echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --cache-file=arm-linux.cache --enable-tools check_result "ERROR: configure ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch openlibs/libxml2/build.sh
@@ -2,7 +2,7 @@ # library name and version # Official: https://download.gnome.org/sources/libxml2/ LIB_NAME=libxml2-2.13.3 LIB_NAME=libxml2-2.11.5 PACK_SUFIX=tar.xz # LingYun source code FTP server @@ -40,140 +40,140 @@ #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then pr_error $1 fi if [ $? != 0 ] ; then pr_error "$1" fi } # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function do_fetch() { if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi do_unpack ${LIB_NAME}.${PACK_SUFIX} do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME cd $LIB_NAME do_export do_export ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --without-python --without-zlib --without-lzma check_result "ERROR: configure ${LIB_NAME} failure" ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --without-python --without-zlib --without-lzma check_result "ERROR: configure ${LIB_NAME} failure" make && make install check_result "ERROR: compile ${LIB_NAME} failure" make && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch openlibs/lrzsz/build.sh
@@ -1,44 +1,120 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile lzrz for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- # library name and version # Official: http://www.ohse.de/uwe/releases/ LIB_NAME=lrzsz-0.12.20 PACK_SUFIX=tar.gz PRJ_PATH=`pwd` PREFIX_PATH=`pwd`/../install # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/sz # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,46 +131,56 @@ export CFLAGS= } function compile_lrzsz() function do_fetch() { SRC_NAME=lrzsz-0.12.20 PACK_SUFIX=tar.gz IMG_NAME=sz if [ -f ${PRJ_PATH}/${IMG_NAME} ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget http://www.ohse.de/uwe/releases/${SRC_NAME}.${PACK_SUFIX} wget $LYFTP_SRC/$SRC_NAME.$PACK_SUFIX check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xzf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-thread-support --enable-openssl --enable-function-sections check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" ${STRIP} ${PREFIX_PATH}/bin/lrz ${STRIP} ${PREFIX_PATH}/bin/lsz cp ${PREFIX_PATH}/bin/lrz ${PRJ_PATH}/rz cp ${PREFIX_PATH}/bin/lsz ${PRJ_PATH}/sz cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME export_cross do_export compile_lrzsz ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} check_result "ERROR: configure ${LIB_NAME} failure" make check_result "ERROR: compile ${LIB_NAME} failure" pr_info "${LIB_NAME} installed to '${BIN_PATH}'" mkdir -p ${BIN_PATH} install -m 755 src/lsz ${BIN_PATH}/sz install -m 755 src/lrz ${BIN_PATH}/rz } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/mosquitto/build.sh
@@ -1,41 +1,117 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile MQTT C library mosquitto for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://mosquitto.org/ LIB_NAME=mosquitto-2.0.15 PACK_SUFIX=tar.gz PREFIX_PATH=`pwd`/../install # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/mosquitto # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,51 +131,61 @@ export CFLAGS= } function compile_mosquitto() function do_fetch() { SRC_NAME=mosquitto-1.6.4 PACK_SUFIX=tar.gz if [ -f ${PREFIX_PATH}/bin/mosquitto ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://mosquitto.org/files/source/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xzf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi export CFLAGS=-I${PREFIX_PATH}/include export LDFLAGS="-L${PREFIX_PATH}/lib -lcrypto -lssl -ldl -lpthread" export DESTDIR=${PREFIX_PATH} make WITH_SRV=no WITH_UUID=no check_result "ERROR: compile ${SRC_NAME} failure" make DESTDIR=${PREFIX_PATH} prefix=/ install cp src/mosquitto ${PREFIX_PATH}/bin ${STRIP} ${PREFIX_PATH}/bin/mosquitto* cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } if [ ! -f ${PREFIX_PATH}//lib/libcrypto.a ] ; then cd ../openssl ./build.sh cd - function do_build() { cd $LIB_NAME do_export export CFLAGS=-I${INC_PATH} export LDFLAGS="-L${LIB_PATH} -lcrypto -lssl -ldl -lpthread" export DESTDIR=${PREFIX_PATH} make WITH_UUID=no WITH_STATIC_LIBRARIES=yes check_result "ERROR: compile ${LIB_NAME} failure" make DESTDIR=${PREFIX_PATH} prefix=/ install check_result "ERROR: compile ${LIB_NAME} failure" install -m 755 src/mosquitto $BIN_PATH install -m 644 lib/libmosquitto.a $LIB_PATH } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi export_cross cd ../openssl && ./build.sh && cd - cd ../cjson && ./build.sh && cd - compile_mosquitto do_fetch do_build openlibs/opencv/build.sh
@@ -1,84 +1,197 @@ #!/bin/bash set -e # library name and version # Official: https://opencv.org/ LIB_NAME=opencv-4.8.0 PACK_SUFIX=zip PREFIX_PATH=`pwd`/../install/ # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- TOOLCHAIN=cortexa7.toolchain.cmake # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` JOBS=`cat /proc/cpuinfo | grep processor | wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/lib/opencv # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function compile_opencv() # decompress a packet to destination path function do_unpack() { SRC_NAME=opencv-3.4.6 PACK_SUFIX=zip tarball=$1 dstpath=`pwd` if [ -f ${PREFIX_PATH}/lib/libopencv_core.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [[ $# == 2 ]] ; then dstpath=$2 fi msg_banner "Start cross compile $SRC_NAME " pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; if [ ! -d $SRC_NAME ] ; then if [ ! -f $SRC_NAME.zip ] ; then wget $LYFTP_SRC/$SRC_NAME.${PACK_SUFIX} fi *.tar.bz2) tar -xjf $tarball -C $dstpath ;; unzip $SRC_NAME.${PACK_SUFIX} *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_error "ERROR: local($BUILD_ARCH) compile $LIB_NAME not support for it's too slow" exit 0; fi cd $SRC_NAME pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" rm -f platforms/linux/${TOOLCHAIN} # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function do_fetch() { if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME do_export TOOLCHAIN=armlinux.toolchain.cmake rm -f platforms/linux/${TOOLCHAIN} cat >platforms/linux/${TOOLCHAIN} <<EOF set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version") set(GNU_MACHINE "${CROSS_COMPILE%*-}" CACHE STRING "GNU compiler triple") include("\${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake") EOF mkdir -p release cd release mkdir -p build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/../../../install \ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX_PATH \ -DCMAKE_TOOLCHAIN_FILE="../platforms/linux/${TOOLCHAIN}" -DSOFTFP=ON -DENABLE_PROFILING=OFF \ -DWITH_OPENCL=OFF -DWITH_TBB=ONÂ -DWITH_V4L=ON -DHAVE_CAMV4L2=ON -DBUILD_TESTS=OFF \ -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=ON -DHAVE_FFMPEG=ON \ -DBUILD_opencv_js=OFF -DENABLE_NEON=OFF -DENABLE_VFPV3=OFF ../ -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=OFF -DHAVE_FFMPEG=OFF \ -DBUILD_opencv_js=OFF ../ make && make install cd - make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" } compile_opencv function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/openssl/build.sh
@@ -1,44 +1,120 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile openssl for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://www.openssl.org/ LIB_NAME=openssl-1.1.1v PACK_SUFIX=tar.gz PROJ_PATH=`pwd` PREFIX_PATH=`pwd`/../install # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/openssl # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,35 +131,52 @@ export CFLAGS= } function compile_openssl() function do_fetch() { SRC_NAME=openssl-1.1.1v PACK_SUFIX=tar.gz if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi if [ -f ${PREFIX_PATH}/lib/libcrypto.a ] ; then return 0; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://www.openssl.org/source/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xzf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} CROSS_COMPILE=${CROSS_COMPILE} CFLAGS=-I${PROJ_PATH}/cryptodev-linux ./Configure \ threads -shared -no-zlib --prefix=$PREFIX_PATH --openssldir=$PREFIX_PATH \ enable-devcryptoeng linux-armv4 if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi make && make install check_result "ERROR: compile ${SRC_NAME} failure" do_unpack ${LIB_NAME}.${PACK_SUFIX} } cd - } function do_build() { cd $LIB_NAME compile_openssl do_export ./Configure linux-armv4 \ threads -shared -no-zlib --prefix=$PREFIX_PATH --openssldir=$PREFIX_PATH check_result "ERROR: configure ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/pppd/build.sh
@@ -1,45 +1,120 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile pppd for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://github.com/ppp-project/ppp/tags LIB_NAME=ppp-2.5.0 PACK_SUFIX=tar.gz PREFIX_PATH=`pwd`/../install/bin # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- SYSROOT=`${CROSS_COMPILE}gcc -print-sysroot` # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/pppd # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -48,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -56,58 +131,63 @@ export CFLAGS= } function compile_pppd() function do_fetch() { SRC_NAME=ppp-2.4.7 PACK_SUFIX=tar.gz if [ -f ${PREFIX_PATH}/pppd ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://download.samba.org/pub/ppp/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi rm -rf ${SRC_NAME} tar -xzf ${SRC_NAME}.${PACK_SUFIX} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi cd ${SRC_NAME} patch -p1 < ../patch/${SRC_NAME}.patch sed -i -e "s|.*CC = .*|CC=${CROSS_COMPILE}gcc|g" pppd/Makefile.linux sed -i -e "s|^OPENSSL_INCLUDE_DIR=.*|OPENSSL_INCLUDE_DIR=${SYSROOT}/usr/include/openssl|g" pppd/Makefile.linux sed -i -e "s|.*CC = .*|CC=${CROSS_COMPILE}gcc|g" chat/Makefile.linux cd pppd make CC="${CROSS_COMPILE}gcc -static" -f Makefile.linux && ${CROSS_COMPILE}strip pppd check_result "ERROR: compile ${SRC_NAME} pppd failure" cp pppd ../../ cd - cd chat make CC="${CROSS_COMPILE}gcc -static" -f Makefile.linux && ${CROSS_COMPILE}strip chat check_result "ERROR: compile ${SRC_NAME} chat failure" cp chat ../.. cd - check_result "ERROR: compile ${SRC_NAME} failure" cd .. cp pppd chat ${PREFIX_PATH} cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME export_cross if [ ! -e configure ] ; then ./autogen.sh fi compile_pppd do_export ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} \ --disable-plugins --disable-eaptls --disable-peap \ --with-openssl=${PREFIX_PATH} check_result "ERROR: configure ${LIB_NAME} failure" sed -i -e "/HAVE_CRYPT_H/d" pppd/config.h make -j ${JOBS} CFLAGS="-I ${INC_PATH}" && make install check_result "ERROR: compile ${LIB_NAME} failure" pr_info "${LIB_NAME} installed to '${BIN_PATH}'" install -m 755 pppd/pppd ${BIN_PATH} install -m 755 chat/chat ${BIN_PATH} } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/sqlite/build.sh
@@ -1,43 +1,120 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile sqlite for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://www.sqlite.org/download.html LIB_NAME=sqlite-autoconf-3420000 PACK_SUFIX=tar.gz PREFIX_PATH=`pwd`/../install/ # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/sqlite3 # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,44 +131,51 @@ export CFLAGS= } function compile_sqlite() function do_fetch() { SRC_NAME=sqlite-autoconf-3290000 PACK_SUFIX=tar.gz if [ -f ${PREFIX_PATH}/bin/sqlite3 ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start donwload $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://www.sqlite.org/2019/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xzf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi msg_banner "Start cross compile $SRC_NAME " ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" ${STRIP} ${PREFIX_PATH}/bin/sqlite3 cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } export_cross function do_build() { cd $LIB_NAME compile_sqlite do_export ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static check_result "ERROR: configure ${LIB_NAME} failure" make && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_fetch do_build openlibs/stunnel/build.sh
@@ -1,41 +1,117 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile stunnel for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2018.08.16 #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://www.stunnel.org/downloads.html LIB_NAME=stunnel-5.70 PACK_SUFIX=tar.gz PREFIX_PATH=`pwd`/../install/ # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/stunnel # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,57 +131,55 @@ export CFLAGS= } function compile_stunnel() function do_fetch() { SRC_NAME=stunnel-5.55 PACK_SUFIX=tar.gz if [ -f ${PREFIX_PATH}/bin/stunnel ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget http://www.usenix.org.uk/mirrors/stunnel/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xzf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi # fix can't load library 'libssp.so.0' bug sed -i -e "s/fstack-protector/pthread/g" configure ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --disable-shared --disable-largefile --disable-ipv6 \ --disable-systemd --disable-libwrap --with-ssl=${PREFIX_PATH} CFLAGS="-DHAVE_GETNAMEINFO -UHAVE_DAEMON " check_result "ERROR: configure ${SRC_NAME} failure" sed -i -e "s|^LDFLAGS =.*|LDFLAGS =-static|g" src/Makefile sed -i -e "s|^#define HAVE_DAEMON.*|#undef HAVE_DAEMON|g" src/config.h make check_result "ERROR: compile ${SRC_NAME} failure" ${STRIP} src/stunnel cp src/stunnel ${PREFIX_PATH}/bin cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { cd $LIB_NAME if [ ! -f ${PREFIX_PATH}/lib/libcrypto.so ] ; then cd ../openssl ./build.sh cd - do_export ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --disable-shared --disable-largefile --disable-ipv6 \ --disable-systemd --disable-libwrap --with-ssl=${PREFIX_PATH} check_result "ERROR: configure ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi cd ../openssl && ./build.sh && cd - export_cross do_fetch compile_stunnel do_build openlibs/valgrind/build.sh
@@ -1,51 +1,117 @@ #!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile valgrind for ARM #| Author: GuoWenxue <guowenxue@gmail.com> #| ChangeLog: #| 1, Initialize 1.0.0 on 2018.08.16 #| #| Running bugfix: #| root@JelliesV2:/tmp# tar -xJf valgrind_a5.tar.xz -C /apps/ #| root@JelliesV2:/tmp# export PATH=$PATH:/apps/valgrind/ #| root@JelliesV2:/tmp# valgrind #| valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory #| root@JelliesV2:/tmp# export VALGRIND_LIB=/apps/valgrind/ #| root@JelliesV2:/tmp# valgrind --tool=memcheck --leak-check=full --track-fds=yes ./memcheck #| #+-------------------------------------------------------------------------------------------- # library name and version # Official: https://valgrind.org/downloads/ LIB_NAME=valgrind-3.21.0 PACK_SUFIX=tar.bz2 # valgrind install path be same as board PREFIX_PATH=`pwd`/../install/ # LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address LIB_URL=$LYFTP_SRC # Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" # compile jobs JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` # this project absolute path PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) # top project absolute path TOP_PATH=$(realpath $PRJ_PATH/..) # binaries install path PREFIX_PATH=$TOP_PATH/install BIN_PATH=$PREFIX_PATH/bin LIB_PATH=$PREFIX_PATH/lib INC_PATH=$PREFIX_PATH/include # check installed or not file INST_FILE=$PREFIX_PATH/bin/valgrind # shell script will exit once get command error set -e #+-------------------------+ #| Shell script functions | #+-------------------------+ function pr_error() { echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { echo -e "\033[40;33m $1 \033[0m" } function pr_info() { echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; pr_error "$1" fi } function export_cross() # decompress a packet to destination path function do_unpack() { tarball=$1 dstpath=`pwd` if [[ $# == 2 ]] ; then dstpath=$2 fi pr_info "decompress $tarball => $dstpath" mkdir -p $dstpath case $tarball in *.tar.gz) tar -xzf $tarball -C $dstpath ;; *.tar.bz2) tar -xjf $tarball -C $dstpath ;; *.tar.xz) tar -xJf $tarball -C $dstpath ;; *.tar.zst) tar -I zstd -xf $tarball -C $dstpath ;; *.tar) tar -xf $tarball -C $dstpath ;; *.zip) unzip -qo $tarball -d $dstpath ;; *) pr_error "decompress Unsupport packet: $tarball" return 1; ;; esac } function do_export() { BUILD_ARCH=$(uname -m) if [[ $BUILD_ARCH =~ "arm" ]] ; then pr_warn "local($BUILD_ARCH) compile $LIB_NAME" return ; fi pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -57,70 +123,60 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=armv7-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function compile_valgrind() function do_fetch() { SRC_NAME=valgrind-3.16.1 PACK_SUFIX=tar.bz2 if [ -f ${PREFIX_PATH}/bin/valgrind ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; if [ -e ${INST_FILE} ] ; then pr_warn "$LIB_NAME compile and installed alredy" exit ; fi msg_banner "Start cross compile $SRC_NAME " if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget https://sourceware.org/pub/valgrind/valgrind-3.16.1.tar.bz2 wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" if [ -d $LIB_NAME ] ; then pr_warn "$LIB_NAME fetch already" return ; fi tar -xjf ${SRC_NAME}.${PACK_SUFIX} cd ${SRC_NAME} if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} check_result "ERROR: download ${LIB_NAME} failure" fi sed -i -e "s|armv7|arm|g" configure ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-only32bit check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_pack() function do_build() { cp -af ${PREFIX_PATH}/lib/valgrind . -af cp -af ${PREFIX_PATH}/bin/valgrind valgrind cd $LIB_NAME rm -f valgrind/64bit* rm -f valgrind/amd64* rm -f valgrind/mips64* rm -f valgrind/i386* rm -f valgrind/mips* rm -f valgrind/power* rm -f valgrind/s390* rm -f valgrind/*.a do_export tar -cJf valgrind_a5.tar.xz valgrind rm -rf valgrind ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} \ --enable-only32bit --disable-tls check_result "ERROR: configure ${LIB_NAME} failure" make -j ${JOBS} && make install check_result "ERROR: compile ${LIB_NAME} failure" } export_cross function do_clean() { rm -rf *${LIB_NAME}* } compile_valgrind if [[ $# == 1 && $1 == -c ]] ;then pr_warn "start clean ${LIB_NAME}" do_clean exit; fi do_pack do_fetch do_build