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