Subversion Repositories tpanel

Rev

Rev 374 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/bin/bash
QT_VERSION="6.6.0"
QT_VERSION_MAJOR=6
QT_PATH="$HOME/Qt"
QT_ARCHITECTURE="arm64"

QTBASE="${QT_PATH}/$QT_VERSION"
QTDIR="${QTBASE}/ios"

BUILDPATH="tpanel_ios"
OSX_SYSROOT="iphoneos"
#OSX_SYSROOT="iphonesimulator"
#TEAM_ID="<YOUR_TEAM_ID>"
TEAM_ID="J32E5798SJ"

LOGFILE="`pwd`/build.log"

###########################################################################
# DO NOT EDIT ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU'RE DOING! #
###########################################################################

GENERATOR="Xcode"
PROJECT_INCLUDE_BEFORE="`pwd`/${BUILDPATH}/.qtc/package-manager/auto-setup.cmake"
QMAKE="${QTDIR}/bin/qmake"
PREFIX="${QTDIR}"
CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
CXX="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
TOOLCHAIN="${QTDIR}/lib/cmake/Qt6/qt.toolchain.cmake"

function usage() {
     echo "build_ios.sh [clean] [debug] [sign] [help|--help|-h]"
     echo "   clean     Delete old build, if there is one, and start a new clean build."
     echo "   debug     Create a binary with debugging enabled."
     echo "   sign      Sign the resulting app."
     echo
     echo "   help | --help | -h   Displays this help screen and exit."
     echo
     echo "Without parameters the source is compiled, if there were changes, and then"
     echo "an iOS package is created." 
}

function log() {
     echo "$@"
     echo "$@" >> ${LOGFILE} 
}

> ${LOGFILE}

if [ "$OSX_SYSROOT" != "iphoneos" -a "$OSX_SYSROOT" != "iphonesimulator" ]
then
    log "Invalid target: $OSX_SYSROOT!"
    log "OSX_SYSROOT must be \"iphoneos\" or \"iphonesimulator\"."
    exit 1
fi

# 
# The following statement determines the number of CPUs. This is used for the 
# cmake command to let run the compiler in parallel. 
# 
CPUS=2 
type nproc > /dev/null 2>&1  

if [ $? -eq 0 ]
then
     CPUS=`nproc` 
fi

OPT_CLEAN=0
OPT_DEBUG=0
OPT_SIGN=0
OPT_VERBOSE=0

for par in "$@"
do
    if [ "$par" == "clean" ]
    then
        OPT_CLEAN=1
    elif [ "$par" == "debug" ]
    then
        OPT_DEBUG=1
    elif [ "$par" == "sign" ]
    then
        OPT_SIGN=1
    elif [ "$par" == "--verbose" ] || [ "$par" == "-v" ] || [ "$par" == "verbose" ]
    then
        OPT_VERBOSE=1
    elif [ "$par" == "help" ] || [ "$par" == "--help" ] || [ "$par" == "-h" ]
    then
        usage
        exit 0
    fi
done

if [ $OPT_CLEAN -eq 1 ]
then
    if [ -d "${BUILDPATH}" ]
    then
        log "Deleting the build path at $BUILDPATH ..."
        rm -rf "${BUILDPATH}"
    fi
fi

if [ ! -d "${BUILDPATH}" ]
then
    log "Creating directory $BUILDPATH ..."
    mkdir -p "${BUILDPATH}"
    cp -r ios/.qtc "${BUILDPATH}"
fi

_extra=""

if [ $OPT_SIGN -eq 1 -a "$OSX_SYSROOT" == "iphoneos" ]
then
    _extra="-DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM:STRING=${TEAM_ID}"
elif [ "${OSX_SYSROOT}" == "iphonesimulator" ]
then
    log "The build for iPhone simulator is not signable!"
fi

if [ $OPT_DEBUG -eq 1 ]
then
    _extra="$_extra -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_VERBOSE_MAKEFILE:STRING=1"
else
    _extra="$_extra -DCMAKE_BUILD_TYPE:STRING=Release"
fi

log "Creating build files in $BUILDPATH ..."

if [ $OPT_DEBUG -eq 1 ]
then
    log "cmake -B \"${BUILDPATH}\" -DAPPLE:STRING=1 -DIOS:STRING=1 -DCMAKE_GENERATOR:STRING=\"$GENERATOR\" -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=\"${PROJECT_INCLUDE_BEFORE}\" -DQT_QMAKE_EXECUTABLE:FILEPATH=\"${QMAKE}\" -DCMAKE_PREFIX_PATH:PATH=\"${PREFIX}\" -DCMAKE_C_COMPILER:FILEPATH=\"${CC}\" -DCMAKE_CXX_COMPILER:FILEPATH=\"${CXX}\" -DCMAKE_TOOLCHAIN_FILE:FILEPATH=\"${TOOLCHAIN}\" -DCMAKE_OSX_ARCHITECTURES:STRING=\"$QT_ARCHITECTURE\" -DCMAKE_OSX_SYSROOT:STRING=\"${OSX_SYSROOT}\" ${_extra}"
fi

cmake -B "${BUILDPATH}" -DAPPLE:STRING=1 -DIOS:STRING=1 -DCMAKE_GENERATOR:STRING="$GENERATOR" -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH="${PROJECT_INCLUDE_BEFORE}" -DQT_QMAKE_EXECUTABLE:FILEPATH="${QMAKE}" -DCMAKE_PREFIX_PATH:PATH="${PREFIX}" -DCMAKE_C_COMPILER:FILEPATH="${CC}" -DCMAKE_CXX_COMPILER:FILEPATH="${CXX}" -DCMAKE_TOOLCHAIN_FILE:FILEPATH="${TOOLCHAIN}" -DCMAKE_OSX_ARCHITECTURES:STRING="$QT_ARCHITECTURE" -DCMAKE_OSX_SYSROOT:STRING="${OSX_SYSROOT}" ${_extra} >> ${LOGFILE} 2>&1

if [ $? -ne 0 ]
then
    echo "Error configuring the build pipeline!"
    exit 1
fi

log "Compiling the code ..."

if [ $OPT_DEBUG -eq 1 ]
then
    log "cmake --build \"${BUILDPATH}\" --target tpanel -j$CPUS"
fi

cmake --build "${BUILDPATH}" --target tpanel -j$CPUS >> ${LOGFILE} 2>&1

if [ $? -ne 0 ]
then
    tail -100 ${LOGFILE}
    echo "Error compiling!"
    exit 1
fi

exit 0