139 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
# Do not build as root. Ever.
 | 
						|
if [[ "${EUID}" -eq 0 ]]; then
 | 
						|
  echo "Building as the root user is NOT supported. Use a regular user account for the build." 1>&2
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# Spaces in paths are verboten
 | 
						|
if [[ ${PWD} =~ [[:space:]] ]]; then
 | 
						|
  echo "Current PWD: \"${PWD}\"" 1>&2
 | 
						|
  echo 1>&2
 | 
						|
  echo "Building in a folder that includes spaces is NOT supported. Use a folder without spaces." 1>&2
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# set default language for buildsystem
 | 
						|
export LC_ALL=C
 | 
						|
 | 
						|
# set default independent variables
 | 
						|
ROOT="${PWD}"
 | 
						|
DISTRO_DIR="${ROOT}/distributions"
 | 
						|
PROJECT_DIR="${ROOT}/projects"
 | 
						|
 | 
						|
# determines DISTRO, if not forced by user
 | 
						|
DISTRO="${DISTRO:-Lakka}"
 | 
						|
 | 
						|
# determines PROJECT, if not forced by user
 | 
						|
export PROJECT="${PROJECT:-Generic}"
 | 
						|
 | 
						|
# determines TARGET_ARCH, if not forced by user
 | 
						|
export ARCH="${ARCH:-x86_64}"
 | 
						|
TARGET_ARCH="${ARCH}"
 | 
						|
 | 
						|
# include arm-mem package on arm
 | 
						|
if [ "${TARGET_ARCH}" = "arm" ]; then
 | 
						|
  ARM_MEM_SUPPORT="yes"
 | 
						|
else
 | 
						|
  ARM_MEM_SUPPORT="no"
 | 
						|
fi
 | 
						|
 | 
						|
# include helper functions
 | 
						|
. config/functions
 | 
						|
 | 
						|
# read DISTRO version information
 | 
						|
. "${DISTRO_DIR}/${DISTRO}/version" || die "\nERROR: No distro version present\n"
 | 
						|
 | 
						|
# read DISTRO options if available
 | 
						|
if [ -f "${DISTRO_DIR}/${DISTRO}/options" ]; then
 | 
						|
  . "${DISTRO_DIR}/${DISTRO}/options"
 | 
						|
fi
 | 
						|
 | 
						|
# read PROJECT options if available
 | 
						|
if [ -f "${PROJECT_DIR}/${PROJECT}/options" ]; then
 | 
						|
  . "${PROJECT_DIR}/${PROJECT}/options"
 | 
						|
fi
 | 
						|
 | 
						|
# read DEVICE options if available
 | 
						|
if [ -f "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options" ]; then
 | 
						|
  . "${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/options"
 | 
						|
fi
 | 
						|
 | 
						|
# projects can set KERNEL_NAME (kernel.img)
 | 
						|
KERNEL_NAME="${KERNEL_NAME:-KERNEL}"
 | 
						|
 | 
						|
LINUX_DEPENDS="${PROJECT_DIR}/${PROJECT}/linux ${PROJECT_DIR}/${PROJECT}/patches/linux ${PROJECT_DIR}/${PROJECT}/packages/linux ${ROOT}/packages/linux"
 | 
						|
[ -n "${DEVICE}" ] && LINUX_DEPENDS+=" ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/linux ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/patches/linux ${PROJECT_DIR}/${PROJECT}/devices/${DEVICE}/packages/linux"
 | 
						|
 | 
						|
# Need to point to your actual cc
 | 
						|
# If you have ccache installed, take care that LOCAL_CC does not point to it
 | 
						|
[ -z "${LOCAL_CC}" ] && export LOCAL_CC="$(command -v gcc)"
 | 
						|
 | 
						|
if [ -z "${LOCAL_CC}" ]; then
 | 
						|
  die "***** Please install gcc - run scripts/checkdeps *****" "127"
 | 
						|
fi
 | 
						|
 | 
						|
# Need to point to your actual g++
 | 
						|
# If you have ccache installed, take care that LOCAL_CXX does not point to it
 | 
						|
[ -z "${LOCAL_CXX}" ] && export LOCAL_CXX="$(command -v g++)"
 | 
						|
 | 
						|
# verbose compilation mode (yes/no)
 | 
						|
VERBOSE="${VERBOSE:-yes}"
 | 
						|
 | 
						|
# Concurrency make level (-j option)
 | 
						|
#  Try values between 1 and number of processor cores present.
 | 
						|
#  default: use all cores
 | 
						|
[ -z "${CONCURRENCY_MAKE_LEVEL}" ] && export CONCURRENCY_MAKE_LEVEL=$(nproc)
 | 
						|
[ -z "${CONCURRENCY_LOAD}" ] && export CONCURRENCY_LOAD=$(python3 -c "import os; print(f'{os.cpu_count() * 1.5:.2f}')")
 | 
						|
 | 
						|
# cache size for ccache
 | 
						|
# Set the maximum size of the files stored in the cache. You can specify a
 | 
						|
# value in gigabytes, megabytes or kilobytes by appending a G, M or K to the
 | 
						|
# value. The default is gigabytes. The actual value stored is rounded down to
 | 
						|
# the nearest multiple of 16 kilobytes.  Keep in mind this per project .ccache
 | 
						|
# directory.
 | 
						|
CCACHE_CACHE_SIZE="10G"
 | 
						|
 | 
						|
# set addon paths
 | 
						|
if [ -z "$ADDON_PATH" ]; then
 | 
						|
  if [ -n "$ADDON_PROJECT" ]; then
 | 
						|
    ADDON_PATH="$ADDON_VERSION/$ADDON_PROJECT/$TARGET_ARCH"
 | 
						|
  else
 | 
						|
    ADDON_PATH="$ADDON_VERSION/$TARGET_ARCH"
 | 
						|
  fi
 | 
						|
fi
 | 
						|
if [ -z "$ADDON_URL" ]; then
 | 
						|
  ADDON_URL="$ADDON_SERVER_URL/$ADDON_PATH"
 | 
						|
fi
 | 
						|
 | 
						|
# read local persistent options from $ROOT if available
 | 
						|
if [ -f "${ROOT}/.libreelec/options" ]; then
 | 
						|
  . "${ROOT}/.libreelec/options"
 | 
						|
fi
 | 
						|
 | 
						|
# read global persistent options from $HOME if available
 | 
						|
if [ -f "${HOME}/.libreelec/options" ]; then
 | 
						|
  . "${HOME}/.libreelec/options"
 | 
						|
fi
 | 
						|
 | 
						|
# overwrite OEM_SUPPORT via commandline
 | 
						|
if [ "${OEM}" = "yes" -o "${OEM}" = "no" ]; then
 | 
						|
  OEM_SUPPORT="${OEM}"
 | 
						|
fi
 | 
						|
 | 
						|
check_config
 | 
						|
 | 
						|
. config/graphic
 | 
						|
. config/path $1
 | 
						|
 | 
						|
## package processing
 | 
						|
 | 
						|
# If the package caches are unset, then populate them
 | 
						|
init_package_cache
 | 
						|
 | 
						|
if [ -z "${DEFAULT_PYTHON_VERSION+set}" ]; then
 | 
						|
  export DEFAULT_PYTHON_VERSION="$(get_pkg_variable Python3 PKG_PYTHON_VERSION)"
 | 
						|
fi
 | 
						|
 | 
						|
# set package metadata
 | 
						|
source_package "${1}"
 |